WIRED Trigger: User Says Keyword & WIRED Effect: Show Message
This is my own code an I am sorry if it is too laggy!
Hey, Here is a fix for "WIRED Trigger: User Says Keyword" and "WIRED Effect: Show Message" using the database to store information.
Step 1:
Create a new class in HabboHotel\Rooms
Name it RoomWired.cs
Place this inside of it:
Step 2:Code:using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Uber.Storage;
using Uber.Messages;
using Uber.HabboHotel.GameClients;
using Uber.HabboHotel.Pathfinding;
using Uber.HabboHotel.RoomBots;
using Uber.HabboHotel.Misc;
using Uber.HabboHotel.Pets;
using Uber.HabboHotel.Items;
using Uber.HabboHotel.Rooms;
namespace Uber.HabboHotel.Rooms
{
class RoomWired
{
public static List<uint> Filter;
public static void ActivateTrigger(RoomItem Item, string Trigger, GameClient Session, string ExtraData)
{
if (Trigger == "gate_start")
{
using (TimedLock.Lock(Session.GetHabbo().CurrentRoom.Items))
{
foreach (RoomItem Gate in Session.GetHabbo().CurrentRoom.Items)
{
if (Gate.GetBaseItem().InteractionType.ToLower() == "wf_glas")
{
Gate.ExtraData = "2";
Gate.UpdateState(false, true);
//GateState = true;
}
else if (Gate.GetBaseItem().InteractionType.ToLower() == "wf_glas" && Gate.ExtraData == "2")
{
Gate.ExtraData = "1";
Gate.UpdateState(false, true);
//GateState = false;
}
}
}
}
}
public static void InFilter(RoomItem Item, GameClient Session)
{
Filter = new List<uint>();
int Xx = Item.X - 1;
int xX = Item.X + 1;
int Yy = Item.Y - 1;
int yY = Item.Y + 1;
using (TimedLock.Lock(Session.GetHabbo().CurrentRoom.Items))
{
foreach (RoomItem Gate in Session.GetHabbo().CurrentRoom.Items)
{
if (Gate.GetBaseItem().InteractionType.ToLower() == "wf_gate" && Gate.Y == Item.Y && Gate.X == xX || Gate.Y == Item.Y && Gate.X == Xx || Gate.Y == Yy && Gate.X == Item.X || Gate.Y == yY && Gate.X == Item.X)
{
if (Gate.ExtraData == "2" || Gate.ExtraData == "0")
{
Gate.ExtraData = "1";
Gate.UpdateState(false, true);
Gate.UpdateNeeded = true;
}
else
{
Gate.ExtraData = "0";
Gate.UpdateState(false, true);
Gate.UpdateNeeded = true;
}
}
if (Gate.GetBaseItem().InteractionType.ToLower() == "wave" && Gate.Y == Item.Y && Gate.X == xX || Gate.Y == Item.Y && Gate.X == Xx || Gate.Y == Yy && Gate.X == Item.X || Gate.Y == yY && Gate.X == Item.X)
{
using (TimedLock.Lock(Session.GetHabbo().CurrentRoom.UserList))
{
foreach (RoomUser Userd in Session.GetHabbo().CurrentRoom.UserList)
{
if (Userd.X == Gate.X && Userd.Y == Gate.Y)
{
Userd.Unidle();
Userd.DanceId = 0;
ServerMessage Message = new ServerMessage(481);
Message.AppendInt32(Userd.VirtualId);
Userd.GetClient().GetHabbo().CurrentRoom.SendMessage(Message);
}
}
}
}
if (Gate.GetBaseItem().InteractionType.ToLower() == "shower" && Gate.Y == Item.Y && Gate.X == xX || Gate.Y == Item.Y && Gate.X == Xx || Gate.Y == Yy && Gate.X == Item.X || Gate.Y == yY && Gate.X == Item.X)
{
using (TimedLock.Lock(Session.GetHabbo().CurrentRoom.UserList))
{
foreach (RoomUser Userd in Session.GetHabbo().CurrentRoom.UserList)
{
if (Userd.X == Gate.X && Userd.Y == Gate.Y)
{
Userd.X = Gate.SquareInFront.x;
Userd.Y = Gate.SquareInFront.y;
Gate.UpdateNeeded = true;
}
}
}
using (TimedLock.Lock(Session.GetHabbo().CurrentRoom.Items))
{
foreach (RoomItem Itemd in Session.GetHabbo().CurrentRoom.Items)
{
if (Itemd.X == Gate.X && Itemd.Y == Gate.Y && Gate.GetBaseItem().InteractionType.ToLower() == "default")
{
// Itemd.X = Gate.SquareInFront.x;
// Itemd.Y = Gate.SquareInFront.y;
Session.GetHabbo().CurrentRoom.SetFloorItem(Session, Itemd, Gate.SquareInFront.x, Gate.SquareInFront.y, Gate.Rot, false, false);
}
}
}
}
}
}
}
}
}
Go to HabboHotel\Items\FurniInteractor.cs
Look for:
Minimise this class, Underneath it add:Code:class InteractorTeleport : FurniInteractor
Step 3:Code:class InteractorWiredShowMessage : FurniInteractor
{
public override void OnPlace(GameClient Session, RoomItem Item)
{
}
public override void OnRemove(GameClient Session, RoomItem Item)
{
}
public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights)
{
if (!UserHasRights)
{
return;
}
Item.ExtraData = "1";
Item.UpdateState(false, true);
string SayMessage;
using (Uber.Storage.DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
if (dbClient.ReadDataRow("SELECT message FROM wired_show_message WHERE item_id = '" + Item.Id + "' LIMIT 1") != null)
{
SayMessage = dbClient.ReadString("SELECT message FROM wired_show_message WHERE item_id = '" + Item.Id + "' LIMIT 1");
}
else
{
SayMessage = "";
}
}
Uber.Messages.ServerMessage Message = new ServerMessage(651);
Message.AppendInt32(0);
Message.AppendInt32(0);
Message.AppendInt32(Item.GetBaseItem().SpriteId);
Message.AppendInt32((int)Item.Id);
Message.AppendStringWithBreak(SayMessage);
Message.AppendString("HSAHH");
Session.SendMessage(Message);
}
}
class InteractorWiredSay : FurniInteractor
{
public override void OnPlace(GameClient Session, RoomItem Item)
{
}
public override void OnRemove(GameClient Session, RoomItem Item)
{
}
public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights)
{
if (!UserHasRights)
{
return;
}
Item.ExtraData = "1";
Item.UpdateState(false, true);
string SayMessage;
using (Uber.Storage.DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
if (dbClient.ReadDataRow("SELECT keyword FROM wired_keywords WHERE item_id = '" + Item.Id + "' LIMIT 1") != null)
{
SayMessage = dbClient.ReadString("SELECT keyword FROM wired_keywords WHERE item_id = '" + Item.Id + "' LIMIT 1");
}
else
{
SayMessage = "";
}
}
ServerMessage Message = new ServerMessage(650);
Message.AppendInt32(5);
Message.AppendInt32(0);
Message.AppendInt32(Item.GetBaseItem().SpriteId);
Message.AppendInt32((int)Item.Id);
Message.AppendStringWithBreak(SayMessage);
Message.AppendInt32(1);
Message.AppendInt32(0);
Message.AppendInt32(0);
Message.AppendInt32(0);
Session.SendMessage(Message);
}
}
Go to HabboHotel\Items\RoomItem.cs
Look for:
Underneath this add:Code:case "scoreboard":
return new InteractorScoreboard();
Step 4:Code:case "wf_trg_onsay":
return new InteractorWiredSay();
case "wf_act_saymsg":
return new InteractorWiredShowMessage();
Set the Interaction type in the database:
Step 5:Code:UPDATE `furniture` SET `interaction_type` = 'wf_trg_onsay' WHERE `item_name` = 'wf_trg_says_something';
UPDATE `furniture` SET `interaction_type` = 'wf_act_saymsg' WHERE `item_name` = 'wf_act_show_message';
Run this in PhpMyAdmin:
Screenie:Code:CREATE TABLE IF NOT EXISTS `wired_keywords` (
`item_id` int(255) NOT NULL,
`keyword` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `wired_show_message` (
`item_id` int(255) NOT NULL,
`message` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
http://i52.tinypic.com/4sk5g2.jpg
Credits:
Beny. - Coding this.
Sulake - Having the idea.

