mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-09 14:04:41 +02:00
Merge branch 'develop' of https://bitbucket.org/Ioncannon/ffxiv-classic-server into ai
# 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:
commit
6f5a480cbd
68 changed files with 907 additions and 281 deletions
|
@ -15,17 +15,100 @@ eventTalkStepBreak(player) - Finishes talkTurn and says a goodbye
|
|||
|
||||
require ("global")
|
||||
|
||||
local gcIssuances = {
|
||||
[1500006] = 2001004,
|
||||
[1500061] = 2001005,
|
||||
[1000840] = 2001006
|
||||
};
|
||||
|
||||
local startAppearances = {
|
||||
[1500006] = CHOCOBO_LIMSA1,
|
||||
[1500061] = CHOCOBO_GRIDANIA1,
|
||||
[1000840] = CHOCOBO_ULDAH1
|
||||
};
|
||||
|
||||
local cityExits = {
|
||||
[1500006] = 15,
|
||||
[1500061] = 14,
|
||||
[1000840] = 16
|
||||
};
|
||||
|
||||
function init(npc)
|
||||
return false, false, 0, 0;
|
||||
end
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
|
||||
callClientFunction(player, "eventTalkWelcome", player);
|
||||
callClientFunction(player, "eventAskMainMenu", player, 20, true, true, true, true, 4);
|
||||
--callClientFunction(player, "eventTalkWelcome", player);
|
||||
--callClientFunction(player, "eventAskMainMenu", player, 20, true, true, true, true, 4);
|
||||
--callClientFunction(player, "eventTalkMyChocobo", player);
|
||||
--callClientFunction(player, "eventSetChocoboName", false);
|
||||
--callClientFunction(player, "eventAfterChocoboName", player);
|
||||
|
||||
local curLevel = 20; -- TODO: pull from character
|
||||
local hasIssuance = player:GetInventory(INVENTORY_KEYITEMS):HasItem(gcIssuances[npc:GetActorClassId()]);
|
||||
local hasChocobo = player.hasChocobo;
|
||||
|
||||
if (player.isGM and hasChocobo == false) then -- Let GMs auto have the issuance for debugging
|
||||
hasIssuance = true;
|
||||
end
|
||||
|
||||
local rentPrice = 800;
|
||||
local hasFunds = (player:GetCurrentGil() >= rentPrice);
|
||||
|
||||
callClientFunction(player, "eventTalkWelcome", player);
|
||||
|
||||
local menuChoice = callClientFunction(player, "eventAskMainMenu", player, curLevel, hasFunds, hasIssuance, true, true, player.chocoboAppearance);
|
||||
|
||||
if (menuChoice == 1) then -- Issuance option
|
||||
callClientFunction(player, "eventTalkMyChocobo", player);
|
||||
local nameResponse = callClientFunction(player, "eventSetChocoboName", true);
|
||||
|
||||
if (nameResponse == "") then -- Cancel Chocobo naming
|
||||
callClientFunction(player, "eventCancelChocoboName", player);
|
||||
callClientFunction(player, "eventTalkStepBreak", player);
|
||||
player:EndEvent();
|
||||
return;
|
||||
else
|
||||
local appearance = startAppearances[npc:GetActorClassId()];
|
||||
player:IssueChocobo(appearance, nameResponse);
|
||||
callClientFunction(player, "eventAfterChocoboName", player);
|
||||
mountChocobo(player);
|
||||
GetWorldManager():DoZoneChange(player, cityExits[npc:GetActorClassId()]);
|
||||
player:SendGameMessage(player, GetWorldMaster(), 25248, 0x20, 2001007);
|
||||
player:SendDataPacket("attention", GetWorldMaster(), "", 25248, 2001007);
|
||||
|
||||
if (player:GetInventory(INVENTORY_KEYITEMS):HasItem(2001007) == false) then
|
||||
player:GetInventory(INVENTORY_KEYITEMS):AddItem(2001007);
|
||||
end
|
||||
|
||||
player:GetInventory(INVENTORY_KEYITEMS):RemoveItem(gcIssuances[npc:GetActorClassId()], 1);
|
||||
|
||||
player:EndEvent();
|
||||
return;
|
||||
end
|
||||
|
||||
elseif(menuChoice == 2) then -- Summon Bird
|
||||
mountChocobo(player);
|
||||
GetWorldManager():DoZoneChange(player, cityExits[npc:GetActorClassId()]);
|
||||
elseif(menuChoice == 3) then -- Change Barding
|
||||
callClientFunction(player, "eventTalkStepBreak", player);
|
||||
elseif(menuChoice == 5) then -- Rent Bird
|
||||
issueRentalChocobo(player);
|
||||
else
|
||||
callClientFunction(player, "eventTalkStepBreak", player);
|
||||
end
|
||||
|
||||
player:EndEvent();
|
||||
end
|
||||
end
|
||||
|
||||
function mountChocobo(player)
|
||||
player:SendChocoboAppearance();
|
||||
player:SetMountState(1);
|
||||
player:ChangeSpeed(0.0, 5.0, 10.0);
|
||||
player:ChangeState(15);
|
||||
end
|
||||
|
||||
function issueRentalChocobo(player)
|
||||
--TODO: Write issue rental chocobo code
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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;
|
|
@ -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
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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;
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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;
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
|
@ -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;
|
|
@ -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);
|
||||
|
|
|
@ -51,6 +51,24 @@ INVENTORY_KEYITEMS = 0x0064; --Max 0x500
|
|||
INVENTORY_EQUIPMENT = 0x00FE; --Max 0x23
|
||||
INVENTORY_EQUIPMENT_OTHERPLAYER = 0x00F9; --Max 0x23
|
||||
|
||||
-- CHOCOBO APPEARANCE
|
||||
CHOCOBO_NORMAL = 0;
|
||||
|
||||
CHOCOBO_LIMSA1 = 0x1;
|
||||
CHOCOBO_LIMSA2 = 0x2;
|
||||
CHOCOBO_LIMSA3 = 0x3;
|
||||
CHOCOBO_LIMSA4 = 0x4;
|
||||
|
||||
CHOCOBO_GRIDANIA1 = 0x1F;
|
||||
CHOCOBO_GRIDANIA2 = 0x20;
|
||||
CHOCOBO_GRIDANIA3 = 0x21;
|
||||
CHOCOBO_GRIDANIA4 = 0x22;
|
||||
|
||||
CHOCOBO_ULDAH1 = 0x3D;
|
||||
CHOCOBO_ULDAH2 = 0x3E;
|
||||
CHOCOBO_ULDAH3 = 0x3F;
|
||||
CHOCOBO_ULDAH4 = 0x40;
|
||||
|
||||
-- NPC LS
|
||||
NPCLS_GONE = 0;
|
||||
NPCLS_INACTIVE = 1;
|
||||
|
|
|
@ -19,7 +19,7 @@ function onBeginLogin(player)
|
|||
end
|
||||
|
||||
--For Opening. Set Director and reset position incase d/c
|
||||
if (player:HasQuest(110001) == true) then
|
||||
if (player:HasQuest(110001) == true and player:GetZoneID() == 193) then
|
||||
director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(true);
|
||||
|
@ -32,7 +32,7 @@ function onBeginLogin(player)
|
|||
player.rotation = 0.025;
|
||||
player:GetQuest(110001):ClearQuestData();
|
||||
player:GetQuest(110001):ClearQuestFlags();
|
||||
elseif (player:HasQuest(110005) == true) then
|
||||
elseif (player:HasQuest(110005) == true and player:GetZoneID() == 166) then
|
||||
director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(false);
|
||||
|
@ -45,13 +45,13 @@ function onBeginLogin(player)
|
|||
player.rotation = -1.26721;
|
||||
player:GetQuest(110005):ClearQuestData();
|
||||
player:GetQuest(110005):ClearQuestFlags();
|
||||
elseif (player:HasQuest(110009) == true) then
|
||||
elseif (player:HasQuest(110009) == true and player:GetZoneID() == 184) then
|
||||
--director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
--player:AddDirector(director);
|
||||
--director:StartDirector(false);
|
||||
--player:SetLoginDirector(director);
|
||||
--player:KickEvent(director, "noticeEvent", true);
|
||||
|
||||
--
|
||||
player.positionX = 5.364327;
|
||||
player.positionY = 196.0;
|
||||
player.positionZ = 133.6561;
|
||||
|
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithL'tandhaa_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithLtandhaa_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithNonco_menanco_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithNoncomananco_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_hill_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithTask_board_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithAubrenard (check cnstctr)_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithAUBRENARD_100", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithDrystbrod_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithDyrstbrod_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithEldid_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "downTownTalk", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithEnie_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkEnie_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithGagaroon_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -45,9 +45,9 @@ function onEventStarted(player, npc)
|
|||
else
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithKhumamoshroca_001", nil, nil, nil);
|
||||
end
|
||||
|
||||
|
||||
|
||||
player:endEvent();
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithLouisoix_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithMaisenta_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithGuildleveClientG_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithProsperlain_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "tribeTalk", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithPukiki_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithGuildleveClientG_002", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_lieutenant_marette_001", nil, nil, nil);
|
||||
defaultFst = GetStaticActor("Spl000");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "processEventELNAURE", 1,1,1);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_carver_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_holmes_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_kirk_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_stone_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_tristelle_001", nil, nil, nil);
|
||||
defaultFst = GetStaticActor("Spl000");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "processEventMERLIE", 1,1,1);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_white_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultFst = GetStaticActor("DftFst");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_sergeant_frilaix_001", nil, nil, nil);
|
||||
defaultFst = GetStaticActor("Spl000");
|
||||
callClientFunction(player, "delegateEvent", player, defaultFst, "processEventARISMONT", 1, 1, 1);
|
||||
player:endEvent();
|
||||
end
|
|
@ -10,8 +10,8 @@ function onSpawn(player, npc)
|
|||
player:SetEventStatus(npc, "pushDefault", true, 0x2);
|
||||
npc:SetQuestGraphic(player, 0x3);
|
||||
else
|
||||
player:SetEventStatus(npc, "pushDefault", true, 0x2);
|
||||
npc:SetQuestGraphic(player, 0x3);
|
||||
player:SetEventStatus(npc, "pushDefault", true, 0x0);
|
||||
npc:SetQuestGraphic(player, 0x0);
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultSea = GetStaticActor("DftSea");
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithMuscle-bounddeckhand_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithSailor031_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultSea = GetStaticActor("DftSea");
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithPasty-facedadventurer_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithAdventurer030_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultSea = GetStaticActor("DftSea");
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithPearly-toothedporter_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithPorter001_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultSea = GetStaticActor("DftSea");
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithSkarnwaen_001", nil, nil, nil);
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithP_tahjha_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
require ("global")
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
defaultSea = GetStaticActor("DftSea");
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithRubh_hob_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -2,6 +2,6 @@ require ("global")
|
|||
|
||||
function onEventStarted(player, npc)
|
||||
defaultSea = GetStaticActor("DftSea");
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithSkarnwaen_001");
|
||||
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithThosinbaen_001", nil, nil, nil);
|
||||
player:endEvent();
|
||||
end
|
|
@ -23,29 +23,24 @@ function onEventStarted(player, npc, triggerName)
|
|||
print "AAAA"
|
||||
end
|
||||
|
||||
--if (man0u0Quest ~= nil and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1) == true and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE2) == true and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE3) == true) then
|
||||
|
||||
player:EndEvent();
|
||||
|
||||
contentArea = player:GetZone():CreateContentArea(player, "/Area/PrivateArea/Content/PrivateAreaMasterSimpleContent", "man0u01", "SimpleContent30079", "Quest/QuestDirectorMan0u001");
|
||||
|
||||
if (contentArea == nil) then
|
||||
if (man0u0Quest ~= nil and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1) == true and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE2) == true and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE3) == true) then
|
||||
player:EndEvent();
|
||||
return;
|
||||
|
||||
contentArea = player:GetZone():CreateContentArea(player, "/Area/PrivateArea/Content/PrivateAreaMasterSimpleContent", "man0u01", "SimpleContent30079", "Quest/QuestDirectorMan0u001");
|
||||
|
||||
if (contentArea == nil) then
|
||||
player:EndEvent();
|
||||
return;
|
||||
end
|
||||
|
||||
director = contentArea:GetContentDirector();
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(false);
|
||||
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
player:SetLoginDirector(director);
|
||||
|
||||
GetWorldManager():DoZoneChangeContent(player, contentArea, -24.34, 192, 34.22, 0.78, 16);
|
||||
end
|
||||
|
||||
director = contentArea:GetContentDirector();
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(false);
|
||||
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
player:SetLoginDirector(director);
|
||||
|
||||
GetWorldManager():DoZoneChangeContent(player, contentArea, -24.34, 192, 34.22, 0.78, 16);
|
||||
|
||||
end
|
||||
|
||||
--[[AFTER GOOBBUE
|
||||
22.81, 196, 87.82
|
||||
]]
|
||||
--0x45c00005
|
||||
end
|
|
@ -0,0 +1,13 @@
|
|||
require ("global")
|
||||
require ("quests/man/man0u0")
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
man0u0Quest = GetStaticActor("Man0u0");
|
||||
|
||||
if (man0u0Quest ~= nil) then
|
||||
callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrBlkNml002", nil, nil, nil);
|
||||
GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 3, 15, -22.81, 196, 87.82, 2.98);
|
||||
end
|
||||
|
||||
player:EndEvent();
|
||||
end
|
|
@ -0,0 +1,14 @@
|
|||
require ("global")
|
||||
require ("quests/man/man0u0")
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
man0u0Quest = GetStaticActor("Man0u0");
|
||||
|
||||
if (man0u0Quest ~= nil) then
|
||||
callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrBlkNml003", nil, nil, nil);
|
||||
GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 3, 15, -22.81, 196, 87.82, 2.98);
|
||||
end
|
||||
|
||||
player:EndEvent();
|
||||
|
||||
end
|
|
@ -0,0 +1,16 @@
|
|||
require ("global")
|
||||
require ("quests/man/man0u0")
|
||||
|
||||
function onSpawn(player, npc)
|
||||
npc:SetQuestGraphic(player, 0x3);
|
||||
end
|
||||
|
||||
function onEventStarted(player, npc)
|
||||
man0u1Quest = GetStaticActor("Man0u1");
|
||||
callClientFunction(player, "delegateEvent", player, man0u1Quest, "processEventMomodiStart");
|
||||
player:ReplaceQuest(110009, 110010);
|
||||
player:SendGameMessage(GetStaticActor("Man0u1"), 329, 0x20);
|
||||
player:SendGameMessage(GetStaticActor("Man0u1"), 330, 0x20);
|
||||
GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 4, 15, -75.242, 195.009, 74.572, -0.046);
|
||||
player:endEvent();
|
||||
end
|
|
@ -0,0 +1,26 @@
|
|||
require ("global")
|
||||
|
||||
function onSpawn(player, npc)
|
||||
npc:SetQuestGraphic(player, 0x2);
|
||||
end
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
local man0u1Quest = player:GetQuest("Man0u1");
|
||||
local pos = player:GetPos();
|
||||
|
||||
if (man0u1Quest ~= nil) then
|
||||
callClientFunction(player, "delegateEvent", player, man0u1Quest, "processEvent010");
|
||||
player:EndEvent();
|
||||
|
||||
--[[director = player:GetZone():CreateDirector("AfterQuestWarpDirector");
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
player:AddDirector(director);
|
||||
player:SetLoginDirector(director);
|
||||
--]]
|
||||
GetWorldManager():DoZoneChange(player, 175, nil, 0, 15, pos[0], pos[1], pos[2], pos[3]);
|
||||
return;
|
||||
end
|
||||
|
||||
player:EndEvent();
|
||||
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue