1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-25 06:07:46 +00:00

Figured out and implemented the Retainer scripts.

This commit is contained in:
Filip Maj 2017-09-09 10:56:11 -04:00
parent f437b36f5a
commit 40ad1d8a29
3 changed files with 105 additions and 15 deletions

View file

@ -10,23 +10,47 @@ eventPushRetainerCallCaution() - Shows warning that a open bazaar will be closed
eventTalkRetainerMenu(hasPossessions, showDispatchChoice) - Opens retainer menu. eventTalkRetainerMenu(hasPossessions, showDispatchChoice) - Opens retainer menu.
eventTalkRetainerDismissal(hasPossessions) - Show dismiss confirmation. eventTalkRetainerDismissal(hasPossessions) - Show dismiss confirmation.
eventTalkRetainerMannequin(0:Enable/1:Disable) - Shows dialog to enable/disable modeling. eventTalkRetainerMannequin(0:Enable/1:Disable) - Shows dialog to enable/disable modeling.
eventTalkRetainerItemTrade(?) - ??Opens retainer storage?? eventTalkRetainerItemTrade(operationCode) - Operate RetainerTradeWidget. Codes: 1 - Open, 2 - Select Mode, 3 - Close.
eventTalkRetainerItemList(?) - ??Opens bazaar?? eventTalkRetainerItemList(operationCode) - Operate Bazaar Widget. Codes: 1 - Open, 2 - Select Mode, 3 - Close.
eventReturnResult(?, ?) - ??Trade related?? eventReturnResult(resultCode, ?) - Redraws the RetainerTrade UI.
eventTalkSelectBazaarStreet(limitsWardChoices) - Shows the dialog to send a retainer to a street. Set to 20. eventTalkSelectBazaarStreet(limitsWardChoices) - Shows the dialog to send a retainer to a street. Set to 20.
eventTalkFinish() - Finishs the talk with retainer eventTalkFinish() - Finishs the talk with retainer
eventPlayerTurn(rotation) - Turns the player eventPlayerTurn(rotation) - Turns the player
--]] --]]
require ("global") require ("global")
require ("retainer")
function init(npc) function init(npc)
return false, false, 0, 0; return false, false, 0, 0;
end end
function onEventStarted(player, npc, triggerName) function onEventStarted(player, npc, triggerName)
retainerNumber = callClientFunction(player, "eventPushRetainerCallCaution", true, false); retainerNumber = callClientFunction(player, "eventPushStepOpenRetainerMenu");
--player:SpawnMyRetainer(npc, retainerNumber);
--callClientFunction(player, "eventRingBell"); if (retainerNumber == nil or retainerNumber == 0) then
player:EndEvent();
return;
end
callClientFunction(player, "eventRingBell");
retainer = player:SpawnMyRetainer(npc, retainerNumber);
while (true) do
choice = callClientFunction(player, "eventTalkRetainerMenu", false, true);
if (choice == 1) then
doItemTrade(player, npc);
elseif (choice == 2) then
doBazaar(player, npc);
elseif (choice == 7) then
callClientFunction(player, "eventTalkRetainerMannequin", 0);
elseif (choice == 8) then
callClientFunction(player, "eventTalkSelectBazaarStreet", 20);
else
break;
end
end
player:DespawnMyRetainer();
player:EndEvent(); player:EndEvent();
end end

View file

@ -8,9 +8,9 @@ eventTalkRetainerOther() -
eventTalkRetainerMenu(mode, hasPossessions) - Opens the main menu. If mode == 2, hide dismiss option. eventTalkRetainerMenu(mode, hasPossessions) - Opens the main menu. If mode == 2, hide dismiss option.
eventTalkRetainerDismissal(hasPossessions) - Show dismiss confirmation. eventTalkRetainerDismissal(hasPossessions) - Show dismiss confirmation.
eventTalkRetainerMannequin(0:enable/1:disable confirm) - Show bazaar modeling confirmation. eventTalkRetainerMannequin(0:enable/1:disable confirm) - Show bazaar modeling confirmation.
eventTalkRetainerItemTrade(?) - ??Opens retainer storage?? eventTalkRetainerItemTrade(operationCode) - Operate RetainerTradeWidget. Codes: 1 - Open, 2 - Select Mode, 3 - Close.
eventTalkRetainerItemList(?) - ??Opens bazaar?? eventTalkRetainerItemList(operationCode) - Operate Bazaar Widget. Codes: 1 - Open, 2 - Select Mode, 3 - Close.
eventReturnResult(?, ?) - ??Trade related?? eventReturnResult(resultCode, ?) - Redraws the RetainerTrade UI.
sayToPlayer(actorClassId, messageType, argument) - Makes the retainer say a phrase to the player. sayToPlayer(actorClassId, messageType, argument) - Makes the retainer say a phrase to the player.
eventTalkFinish() - Stops npc from looking at player. eventTalkFinish() - Stops npc from looking at player.
eventPlayerTurn(angle) - Turns player to angle. eventPlayerTurn(angle) - Turns player to angle.
@ -18,14 +18,29 @@ eventPlayerTurn(angle) - Turns player to angle.
--]] --]]
require ("global") require ("global")
require ("retainer")
function init(npc) function init(npc)
return false, false, 0, 0; return false, false, 0, 0;
end end
function onEventStarted(player, npc, triggerName) function onEventStarted(player, retainer, triggerName)
while (true) do
choice = callClientFunction(player, "eventTalkRetainerMenu", 1);
if (choice == 1) then
doItemTrade(player, retainer);
elseif (choice == 2) then
doBazaar(player, retainer);
elseif (choice == 7) then
callClientFunction(player, "eventTalkRetainerMannequin", 0);
elseif (choice == 5) then
player:DespawnMyRetainer();
else
break;
end
end
player:EndEvent();
callClientFunction(player, "eventTalkRetainerItemList", 1);
--callClientFunction(player, "eventTalkRetainerDismissal", 0, false);
player:EndEvent();
end end

51
data/scripts/retainer.lua Normal file
View file

@ -0,0 +1,51 @@
--[[
Common Retainer Stuff
Retainer Say Codes:
1: Hired
2: When called
3: Error when cannot call retainer
4: Dismissed
5: ??
6: Sold X items report.
7: Nothing got sold.
8: Retainer payed???
9: Retainer dismissed due to not paid.
10: Retainer dismissed by player.
--]]
function doItemTrade(player, retainer)
callClientFunction(player, "eventTalkRetainerItemTrade", 1);
while (true) do
resultCode, type7Param, un1, quantity, itemId, unk2 = callClientFunction(player, "eventTalkRetainerItemTrade", 2);
--Retreieve
if (resultCode == 31) then
--UpdatePlayer
--UpdateRetainer
--Entrust
elseif (resultCode == 32) then
--UpdatePlayer
--UpdateRetainer
end
callClientFunction(player, "eventReturnResult", resultCode, false);
if (resultCode == 100) then
break
end
end
callClientFunction(player, "eventTalkRetainerItemTrade", 3);
end
function doBazaar(player, retainer)
callClientFunction(player, "eventTalkRetainerItemList", 1);
callClientFunction(player, "eventTalkRetainerItemList", 2);
callClientFunction(player, "eventTalkRetainerItemList", 3);
end