Should work! Just add a toll field to the end of the rooms table.
Only one toll per room atm, ill fix to work via itemid soon.
Code:
case "Ch": // Ch + ONE-WAY-DOOR-FURNI-ID (answer: Dx + WIRE(FURNI-ID) + I + WIRE(ROOM-UID-OF-CLICKER)) (sprite: 'one_way_door*#)
{
if (Room == null || roomUser == null || _inPublicroom)
return;
int itemID = Encoding.decodeVL64(currentPacket.Substring(2));
Rooms.Items.floorItem Item = Room.floorItemManager.getItem(itemID); // Find the item.
try
{
if (Room.floorItemManager.containsItem(itemID) && stringManager.getStringPart(Item.Sprite, 0, 12) == "one_way_door")
{
string toll;
toll = DB.runRead("SELECT toll FROM rooms WHERE id = '" + _roomID + "'");
string owner;
owner = DB.runRead("SELECT owner FROM rooms WHERE id = '" + _roomID + "'");
Room.sendData("Dx" + Encoding.encodeVL64(itemID) + "I" + Encoding.encodeVL64(Room.roomID)); // Opens the gate, with green light
Room.setSquareState(Item.X, Item.Y, 1, 1, virtualRoom.squareState.Open);
roomUser.walkLock = true;
switch (Item.Z) // Walk into the item
{
case 0: roomUser.goalY = Room.sqSTATE[Item.X, Item.Y + 1] == virtualRoom.squareState.Blocked ? Item.Y : Item.Y + 1; roomUser.goalX = Item.X; break;
case 2: roomUser.goalX = Room.sqSTATE[Item.X - 1, Item.Y] == virtualRoom.squareState.Blocked ? Item.X : Item.X - 1; roomUser.goalY = Item.Y; break;
case 4: roomUser.goalY = Room.sqSTATE[Item.X, Item.Y - 1] == virtualRoom.squareState.Blocked ? Item.Y : Item.Y - 1; roomUser.goalX = Item.X; break;
case 6: roomUser.goalX = Room.sqSTATE[Item.X + 1, Item.Y] == virtualRoom.squareState.Blocked ? Item.X : Item.X + 1; roomUser.goalY = Item.Y; break;
}
roomUser.walkLock = false;
while (true)
if (roomUser.statusManager.containsStatus("mv"))
break;
Room.sendData("Dx" + Encoding.encodeVL64(itemID) + "H" + Encoding.encodeVL64(Room.roomID), 1000);
Room.setSquareState(Item.X, Item.Y, 1, 1, virtualRoom.squareState.Blocked);
DB.runQuery("UPDATE users SET credits = credits - '" + toll + "' WHERE id = '" + userID + "'");
DB.runQuery("UPDATE users SET credits = credits + '" + toll + "' WHERE name = '" + owner + "'");
_User.refreshValueables;
break;
}
}
catch { }
break;
}
COMMAND:
case "toll":
{
string rowner;
rowner = DB.runRead("SELECT owner FROM rooms WHERE id = '" + _roomID + "'");
if (rowner == _Username)
{
string amount = Text.Substring(args[0].Length + 1);
DB.runQuery("UPDATE rooms SET toll = '" + amount + "' WHERE id = '" + _roomID + "'");
}
break;
}