# Conflicts:
#	FFXIVClassic Map Server/Database.cs
#	FFXIVClassic Map Server/WorldManager.cs
#	FFXIVClassic Map Server/actors/area/Area.cs
#	FFXIVClassic Map Server/actors/chara/player/Player.cs
This commit is contained in:
Tahir Akhlaq 2017-08-26 20:17:16 +01:00
commit 6f5a480cbd
68 changed files with 907 additions and 281 deletions

View file

@ -10,6 +10,6 @@ The param "itemDBIds" has the vars: item1 and item2.
--]]
function onEventStarted(player, actor, triggerName, invActionInfo, param1, param2, param3, param4, param5, param6, param7, param8, itemDBIds)
player:GetInventory(0x00):RemoveItem(invActionInfo.slot);
player:GetInventory(0x00):RemoveItemAtSlot(invActionInfo.slot);
player:EndEvent();
end

View file

@ -2,11 +2,16 @@ require("global");
properties = {
permissions = 0,
parameters = "sssss",
description = "removes <currency> <qty> from <target>, currency is removed from user if <target> is nil",
parameters = "ssss",
description =
[[
Removes currency <qty> from player or <targetname>
!delcurrency <item> <qty> |
!delcurrency <item> <qty> <targetname> |
]],
}
function onTrigger(player, argc, currency, qty, location, name, lastName)
function onTrigger(player, argc, currency, qty, name, lastName)
local sender = "[delcurrency] ";
if name then
@ -19,12 +24,11 @@ function onTrigger(player, argc, currency, qty, location, name, lastName)
if player then
currency = tonumber(currency) or nil;
qty = 1;
location = INVENTORY_CURRENCY;
qty = tonumber(qty) or 1;
local removed = player:GetInventory(location):removecurrency(currency, qty);
local removed = player:GetInventory(INVENTORY_CURRENCY):RemoveItem(currency, qty);
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = "unable to remove currency";
local message = "Attempting to remove currency" -- "unable to remove currency";
if currency and removed then
message = string.format("removed currency %u from %s", currency, player:GetName());

View file

@ -3,11 +3,18 @@ require("global");
properties = {
permissions = 0,
parameters = "sssss",
description = "removes <item> <qty> from <location> for <target>. <qty> and <location> are optional, item is removed from user if <target> is nil",
description =
[[
Removes <item> <qty> from <location> for player or <targetname>.
!delitem <item> <qty> |
!delitem <item> <qty> <location> |
!delitem <item> <qty> <location> <targetname> |
]],
}
function onTrigger(player, argc, item, qty, location, name, lastName)
local sender = "[delitem] ";
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
if name then
if lastName then
@ -20,18 +27,29 @@ function onTrigger(player, argc, item, qty, location, name, lastName)
if player then
item = tonumber(item) or nil;
qty = tonumber(qty) or 1;
location = tonumber(itemtype) or INVENTORY_NORMAL;
local removed = player:GetInventory(location):removeItem(item, qty);
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = "unable to remove item";
if location then
location = tonumber(location) or _G[string.upper(location)];
if location == nil then
player:SendMessage(messageID, sender, "Unknown item location.");
return;
end;
else
location = INVENTORY_NORMAL;
end;
if item and removed then
message = string.format("removed item %u from %s", item, player:GetName());
end
player:SendMessage(messageID, sender, message);
print(message);
local removed = player:GetInventory(location):RemoveItem(item, qty);
if removed then -- RemoveItem() currently returns nothing for verification, this statement can't work
message = string.format("Removed item %u of kind %u to %s", item, location, player:GetName());
end;
else
print(sender.."unable to remove item, ensure player name is valid.");
print(sender.."[giveitem] Unable to remove item, ensure player name is valid.");
return;
end;
local message = string.format("Attempting to remove item %u of kind %u from %s", item, location, player:GetName());
player:SendMessage(messageID, sender, message);
print(message);
end;

View file

@ -3,7 +3,12 @@ require("global");
properties = {
permissions = 0,
parameters = "ssss",
description = "removes <keyitem> <qty> from <target>, keyitem is removed from user if <target> is nil",
description =
[[
Removes <keyitem> from player or <targetname>.
!delkeyitem <keyitem> |
!delkeyitem <keyitem> <target name> |
]],
}
function onTrigger(player, argc, keyitem, qty, name, lastName)
@ -19,16 +24,16 @@ function onTrigger(player, argc, keyitem, qty, name, lastName)
if player then
keyitem = tonumber(keyitem) or nil;
qty = 1;
location = INVENTORY_KEYITEMS;
local removed = player:GetInventory(location):removeItem(item, qty);
qty = tonumber(qty) or 1;
local location = INVENTORY_KEYITEMS;
local removed = player:GetInventory(location):RemoveItem(keyitem, qty);
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = "unable to remove keyitem";
local message = "Attempting to remove keyitem" -- "unable to remove keyitem";
if keyitem and removed then
if removed then
message = string.format("removed keyitem %u from %s", keyitem, player:GetName());
end
end;
player:SendMessage(messageID, sender, message);
print(message);
else

View file

@ -2,11 +2,16 @@ require("global");
properties = {
permissions = 0,
parameters = "sss",
description = "adds <currency> to self or <target>.",
parameters = "ssss",
description =
[[
Adds currency <qty> to player or <targetname>
!addcurrency <item> <qty> |
!addcurrency <item> <qty> <targetname> |
]],
}
function onTrigger(player, argc, currency, name, lastName)
function onTrigger(player, argc, currency, qty, name, lastName)
local sender = "[givecurrency] ";
if name then
@ -19,10 +24,10 @@ function onTrigger(player, argc, currency, name, lastName)
if player then
currency = tonumber(currency) or nil;
qty = 1;
qty = tonumber(qty) or 1;
location = INVENTORY_CURRENCY;
local added = player:GetInventory(location):AddItem(currency, qty);
local added = player:GetInventory(location):AddItem(currency, qty, 1);
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = "unable to add currency";

View file

@ -3,12 +3,20 @@ require("global");
properties = {
permissions = 0,
parameters = "sssss",
description = "adds <item> <qty> to <location> for <target>. <qty> and <location> are optional, item is added to user if <target> is nil",
description =
[[
Adds <item> <qty> to <location> for player or <targetname>.
!giveitem <item> <qty> |
!giveitem <item> <qty> <location> |
!giveitem <item> <qty> <location> <targetname> |
]],
}
function onTrigger(player, argc, item, qty, location, name, lastName)
local sender = "[giveitem] ";
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = string.format("Unable to add item %u", item);
if name then
if lastName then
player = GetWorldManager():GetPCInWorld(name.." "..lastName) or nil;
@ -20,17 +28,28 @@ function onTrigger(player, argc, item, qty, location, name, lastName)
if player then
item = tonumber(item) or nil;
qty = tonumber(qty) or 1;
location = tonumber(itemtype) or INVENTORY_NORMAL;
local added = player:GetInventory(location):AddItem(item, qty);
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = "unable to add item";
if item and added then
message = string.format("added item %u to %s", item, player:GetName());
end
player:SendMessage(messageID, sender, message);
print(message);
if location then
location = tonumber(location) or _G[string.upper(location)];
if not location then
player:SendMessage(messageID, sender, "Unknown item location.");
return;
end;
else
location = INVENTORY_NORMAL;
end;
local added = player:getInventory(location):addItem(item, qty, 1);
if added then
message = string.format("Added item %u of kind %u to %s", item, location, player:GetName());
end;
else
print(sender.."unable to add item, ensure player name is valid.");
print(sender.."[giveitem] Unable to add item, ensure player name is valid.");
return;
end;
player:SendMessage(messageID, sender, message);
print(message);
end;

View file

@ -3,7 +3,12 @@ require("global");
properties = {
permissions = 0,
parameters = "sss",
description = "adds <keyitem> to self or <target>.",
description =
[[
Adds <keyitem> to player or <targetname>.
!giveitem <keyitem> |
!giveitem <keyitem> <target name> |
]],
}
function onTrigger(player, argc, keyitem, name, lastName)
@ -22,7 +27,7 @@ function onTrigger(player, argc, keyitem, name, lastName)
qty = 1;
location = INVENTORY_KEYITEMS;
local added = player:GetInventory(location):AddItem(keyitem, qty);
local added = player:GetInventory(location):AddItem(keyitem, qty, 1);
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = "unable to add keyitem";

View file

@ -1,18 +1,31 @@
require("global");
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)",
description =
[[
Changes appearance for equipment with given parameters.
!graphic <slot> <wID> <eID> <vID> <vID>
]],
}
function onTrigger(player, argc, slot, wId, eId, vId, cId)
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[graphic] ";
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
if player and argc > 0 then
player:GraphicChange(slot, wId, eId, vId, cId);
player:SendAppearance();
player:SendMessage(messageID, sender, string.format("Changing appearance on slot %u", slot));
else
player:SendMessage(messageID, sender, "No parameters sent! Usage: "..properties.description);
end;
end;

View file

@ -1,7 +1,11 @@
properties = {
permissions = 0,
parameters = "s",
description = "plays music <id> to player",
description =
[[
Plays music <id> to player.
!music <id>
]],
}
function onTrigger(player, argc, music)

View file

@ -1,7 +1,12 @@
properties = {
permissions = 0,
parameters = "ssss",
description = "<name> <target name>",
description =
[[
Sends a custom <packet> to player or <targetname>
!sendpacket <packet> |
!sendpacket <packet> <targetname> |
]],
}
function onTrigger(player, argc, path, name, lastName)

View file

@ -1,18 +1,36 @@
require("global");
properties = {
permissions = 0,
parameters = "sss",
description = "<stop> <walk> <run> speed",
description =
[[
Set movement speed for player. Enter no value to reset to default.
!speed <run> |
!speed <stop> <walk> <run> |
]]
}
function onTrigger(player, argc, stop, walk, run)
stop = tonumber(stop) or 0;
walk = tonumber(walk) or 2;
run = tonumber(run) or 5;
if argc == 3 then
player:ChangeSpeed(stop, walk, run, run);
elseif argc == 1 then
player:ChangeSpeed(0, stop/2, stop, stop);
else
player:ChangeSpeed(0,2,5,5);
if argc == 1 then
s = 0;
w = (tonumber(stop) / 2);
r = tonumber(stop);
player:ChangeSpeed(s, w, r);
player:SendMessage(MESSAGE_TYPE_SYSTEM_ERROR, "[speed]", string.format("Speed set to 0/%u/%u", w,r));
elseif argc == 3 then
stop = tonumber(stop) or 0;
walk = tonumber(walk) or 2;
run = tonumber(run) or 5;
if argc == 3 then
player:ChangeSpeed(stop, walk, run, run);
elseif argc == 1 then
player:ChangeSpeed(0, stop/2, stop, stop);
else
player:ChangeSpeed(0,2,5,5);
end
end
end

View file

@ -5,9 +5,10 @@ properties = {
parameters = "sssssss",
description =
[[
<zone> |
<zone> <x> <y> <z> |
<zone> <x> <y> <z> <privateArea> <target name>.
Warp player or <targetname> to a location from a list, or enter a zoneID with coordinates.
!warp <spawn list> |
!warp <zone> <x> <y> <z> |
!warp <zone> <x> <y> <z> <privateArea> <targetname> |
]],
}
@ -47,6 +48,7 @@ function onTrigger(player, argc, p1, p2, p3, p4, privateArea, name, lastName)
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, player_rot, 0x00);
else
local zone = tonumber(applyPositionOffset(p1, player_zone)) or player_zone;
@ -65,9 +67,10 @@ end;
function applyPositionOffset(str, offset)
local s = str;
print(s);
if s:find("@") then
s = tonumber(s:sub(s:find("@") + 1, s:len())) + offset;
s = tonumber(s:sub(s:find("@") + 1, s:len()));
if s then s = s + offset end;
end
print(s);
return s;
end;

View file

@ -3,7 +3,12 @@ require("global");
properties = {
permissions = 0,
parameters = "ssss",
description = "usage: <id> <updateTime> <zonewide>.",
description =
[[
Change the weather visual to <id> and optional <transition> for player.
!weather <id> |
!weather <id> <transition> |
]],
}
function onTrigger(player, argc, weather, updateTime, zonewide)
@ -16,12 +21,14 @@ function onTrigger(player, argc, weather, updateTime, zonewide)
weather = tonumber(weather) or 0;
updateTime = tonumber(updateTime) or 0;
zonewide = tonumber(zonewide) or 0;
message = "changed weather to %u ";
message = string.format("changed weather to %u ", weather);
if zonewide ~= 0 then
message = string.format(message.."for zone %u", player:GetZoneID());
else
message = message..player:GetName();
end;
-- weatherid, updateTime
player:GetZone():ChangeWeather(weather, updateTime, player, zonewide ~= 0);
player:SendMessage(messageID, sender, message);