start of work moving commands to lua

This commit is contained in:
Tahir Akhlaq 2016-06-16 01:50:13 +01:00
parent 1159c75ab8
commit 57b9d5ab99
20 changed files with 703 additions and 67 deletions

View file

@ -0,0 +1,9 @@
properties = {
permissions = 0,
parameters = "",
description = "",
}
function onTrigger(player)
end;

View file

@ -0,0 +1,9 @@
properties = {
permissions = 0,
parameters = "",
description = "",
}
function onTrigger(player)
end;

View file

@ -0,0 +1,9 @@
properties = {
permissions = 0,
parameters = "",
description = "",
}
function onTrigger(player)
end;

View file

@ -0,0 +1,9 @@
properties = {
permissions = 0,
parameters = "",
description = "",
}
function onTrigger(player)
end;

View file

@ -0,0 +1,9 @@
properties = {
permissions = 0,
parameters = "",
description = "",
}
function onTrigger(player)
end;

View file

@ -0,0 +1,9 @@
properties = {
permissions = 0,
parameters = "",
description = "",
}
function onTrigger(player)
end;

View file

@ -0,0 +1,22 @@
require("global");
properties = {
permissions = 0,
parameters = "ssss",
description = "adds <item> <qty> to <location> for <target>. <qty> and <location> are optional, item is added to user if <target> is nil",
}
function onTrigger(player, argc, item, qty, location, target)
local sender = "[giveitem] ";
player = GetWorldManager():GetPCInWorld(target) or player;
if player then
item = tonumber(item) or nil;
qty = tonumber(qty) or 1;
location = tonumber(itemtype) or INVENTORY_NORMAL;
if item then
player:GetInventory(location):AddItem(item, qty);
player:SendMessage(MSG_TYPE_SYSTEM_ERROR, "[giveitem] ", string.format("Added item %u to %s", item, player:GetName());
end
end;
end;

View file

@ -0,0 +1,19 @@
properties = {
permissions = 0,
parameters = "sssss",
description = [[changes appearance for equipment in <slot>. Parameters: <slot> <wId> <eId> <vId> <cId>,
idk what any of those mean either]],
}
function onTrigger(player, argc, slot, wId, eId, vId, cId)
slot = tonumber(slot) or 0;
wId = tonumber(wId) or 0;
eId = tonumber(eId) or 0;
vId = tonumber(vId) or 0;
cId = tonumber(cId) or 0;
if player then
player:GraphicChange(slot, wId, eId, vId, cId);
player:SendAppearance();
end;
end;

View file

@ -0,0 +1,10 @@
properties = {
permissions = 0,
parameters = "s",
description = "plays music <id> to player",
}
function onTrigger(player, argc, music)
music = tonumber(music) or 0;
player:ChangeMusic(music);
end;

View file

@ -0,0 +1,22 @@
require("global");
properties = {
permissions = 0,
parameters = "",
description = "prints your current in-game position (different to map coords)",
}
function onTrigger(player)
local pos = player:GetPos();
local x = pos[0];
local y = pos[1];
local z = pos[2];
local rot = pos[3];
local zone = pos[4];
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[mypos] ";
local message = string.format("current position X:%d Y:%d Z:%d (Rotation: %d) Zone:%d", x, y, z, rot, zone);
player:SendMessage(messageID, sender, message);
end;

View file

@ -0,0 +1,23 @@
require("global");
properties = {
permissions = 0,
parameters = "s",
description = "reloads <zone>",
}
function onTrigger(player, argc, zone)
if not zone or tonumber(zone) == 0 then
printf("%s is not a valid zone!", zone);
return;
end;
zone = tonumber(zone);
if player then
local messageID = MSG_TYPE_SYSTEM_ERROR;
player:SendMessage(messageID, "[reloadzones] ", string.format("Reloading zone: %u", zone));
end;
GetWorldManager():ReloadZone(zone);
end;

View file

@ -0,0 +1,9 @@
properties = {
permissions = 0,
parameters = "sss",
description = "",
}
function onTrigger(player, argc)
-- todo: change weather
end;

View file

@ -0,0 +1,78 @@
require("global");
properties = {
permissions = 0,
parameters = "sssssss",
description = [[
<zone> |
<zone> <x> <y> <z> |
<x> <y> <z> <zone> <privateArea> <target name>.
]],
}
function onTrigger(player, argc, p1, p2, p3, p4, privateArea, firstName, lastName)
if firstName then
if lastName then
player = GetWorldManager():GetPCInWorld(firstName.." "..lastName) or nil;
else
player = GetWorldManager():GetPCInWorld(firstName) or nil;
end;
end;
if not player then
printf("[Command] [warp] error! No target or player specified!");
return;
end;
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[warp] ";
-- we're getting a list/array from c# so 0 index
local pos = player:GetPos();
local player_x = pos[0];
local player_y = pos[1];
local player_z = pos[2];
local player_rot = pos[3];
local player_zone = pos[4];
local worldManager = GetWorldManager();
-- treat this as a predefined warp list
if argc == 1 then
zone = tonumber(p1) or player_zone;
player:SendMessage(messageID, sender, string.format("warping to zone:%u", zone));
worldManager:DoZoneChange(player, zone);
elseif argc >= 3 then
if argc == 3 then
local x = tonumber(applyPositionOffset(p1, player_x)) or player_x;
local y = tonumber(applyPositionOffset(p2, player_y)) or player_y;
local z = tonumber(applyPositionOffset(p3, player_z)) or player_z;
player:SendMessage(messageID, sender, string.format("setting coordinates X:%d Y:%d Z:%d within current zone (%d)", x, y, z, player_zone));
worldManager:DoPlayerMoveInZone(player, x, y, z, 0x0F);
else
local zone = tonumber(applyPositionOffset(p1, player_zone)) or player_zone;
local x = tonumber(applyPositionOffset(p2, player_x)) or player_x;
local y = tonumber(applyPositionOffset(p3, player_y)) or player_y;
local z = tonumber(applyPositionOffset(p4, player_z)) or player_z;
if privateArea == "" then privateArea = nil end;
player:SendMessage(messageID, sender, string.format("setting coordinates X:%d Y:%d Z:%d to new zone (%d) private area:%s", x, y, z, zone, privateArea or "unspecified"));
worldManager:DoZoneChange(player, zone, privateArea, 0x0F, x, y, z, 0.00);
end
else
player:SendMessage(messageID, sender, "Unknown parameters! Usage: "..properties.description);
end;
end;
function applyPositionOffset(str, offset)
local s = str;
print(s);
if s:find("@") then
s = tonumber(s:sub(s:find("@") + 1, s:len())) + offset;
end
return s;
end;

View file

@ -4,7 +4,7 @@ Globals referenced in all of the lua scripts
--]]
--ACTOR STATES
-- ACTOR STATES
ACTORSTATE_PASSIVE = 0;
ACTORSTATE_DEAD1 = 1;
@ -12,4 +12,50 @@ ACTORSTATE_ACTIVE = 2;
ACTORSTATE_DEAD2 = 3;
ACTORSTATE_SITTING_ONOBJ = 11;
ACTORSTATE_SITTING_ONFLOOR = 13;
ACTORSTATE_MOUNTED = 15;
ACTORSTATE_MOUNTED = 15;
-- MESSAGE
MESSAGE_TYPE_NONE = 0;
MESSAGE_TYPE_SAY = 1;
MESSAGE_TYPE_SHOUT = 2;
MESSAGE_TYPE_TELL = 3;
MESSAGE_TYPE_PARTY = 4;
MESSAGE_TYPE_LINKSHELL1 = 5;
MESSAGE_TYPE_LINKSHELL2 = 6;
MESSAGE_TYPE_LINKSHELL3 = 7;
MESSAGE_TYPE_LINKSHELL4 = 8;
MESSAGE_TYPE_LINKSHELL5 = 9;
MESSAGE_TYPE_LINKSHELL6 = 10;
MESSAGE_TYPE_LINKSHELL7 = 11;
MESSAGE_TYPE_LINKSHELL8 = 12;
MESSAGE_TYPE_SAY_SPAM = 22;
MESSAGE_TYPE_SHOUT_SPAM = 23;
MESSAGE_TYPE_TELL_SPAM = 24;
MESSAGE_TYPE_CUSTOM_EMOTE = 25;
MESSAGE_TYPE_EMOTE_SPAM = 26;
MESSAGE_TYPE_STANDARD_EMOTE = 27;
MESSAGE_TYPE_URGENT_MESSAGE = 28;
MESSAGE_TYPE_GENERAL_INFO = 29;
MESSAGE_TYPE_SYSTEM = 32;
MESSAGE_TYPE_SYSTEM_ERROR = 33;
-- INVENTORY
INVENTORY_NORMAL = 0x0000; --Max 0xC8
INVENTORY_LOOT = 0x0004; --Max 0xA
INVENTORY_MELDREQUEST = 0x0005; --Max 0x04
INVENTORY_BAZAAR = 0x0007; --Max 0x0A
INVENTORY_CURRENCY = 0x0063; --Max 0x140
INVENTORY_KEYITEMS = 0x0064; --Max 0x500
INVENTORY_EQUIPMENT = 0x00FE; --Max 0x23
INVENTORY_EQUIPMENT_OTHERPLAYER = 0x00F9; --Max 0x23
function printf(s, ...)
print(s:format(...));
end;