mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-24 21:57:45 +00:00
Figured out and implemented the Retainer scripts.
This commit is contained in:
parent
f437b36f5a
commit
40ad1d8a29
3 changed files with 105 additions and 15 deletions
|
@ -10,23 +10,47 @@ eventPushRetainerCallCaution() - Shows warning that a open bazaar will be closed
|
|||
eventTalkRetainerMenu(hasPossessions, showDispatchChoice) - Opens retainer menu.
|
||||
eventTalkRetainerDismissal(hasPossessions) - Show dismiss confirmation.
|
||||
eventTalkRetainerMannequin(0:Enable/1:Disable) - Shows dialog to enable/disable modeling.
|
||||
eventTalkRetainerItemTrade(?) - ??Opens retainer storage??
|
||||
eventTalkRetainerItemList(?) - ??Opens bazaar??
|
||||
eventReturnResult(?, ?) - ??Trade related??
|
||||
eventTalkRetainerItemTrade(operationCode) - Operate RetainerTradeWidget. Codes: 1 - Open, 2 - Select Mode, 3 - Close.
|
||||
eventTalkRetainerItemList(operationCode) - Operate Bazaar Widget. Codes: 1 - Open, 2 - Select Mode, 3 - Close.
|
||||
eventReturnResult(resultCode, ?) - Redraws the RetainerTrade UI.
|
||||
eventTalkSelectBazaarStreet(limitsWardChoices) - Shows the dialog to send a retainer to a street. Set to 20.
|
||||
eventTalkFinish() - Finishs the talk with retainer
|
||||
eventPlayerTurn(rotation) - Turns the player
|
||||
--]]
|
||||
|
||||
require ("global")
|
||||
require ("retainer")
|
||||
|
||||
function init(npc)
|
||||
return false, false, 0, 0;
|
||||
end
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
retainerNumber = callClientFunction(player, "eventPushRetainerCallCaution", true, false);
|
||||
--player:SpawnMyRetainer(npc, retainerNumber);
|
||||
--callClientFunction(player, "eventRingBell");
|
||||
retainerNumber = callClientFunction(player, "eventPushStepOpenRetainerMenu");
|
||||
|
||||
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();
|
||||
end
|
|
@ -8,9 +8,9 @@ eventTalkRetainerOther() -
|
|||
eventTalkRetainerMenu(mode, hasPossessions) - Opens the main menu. If mode == 2, hide dismiss option.
|
||||
eventTalkRetainerDismissal(hasPossessions) - Show dismiss confirmation.
|
||||
eventTalkRetainerMannequin(0:enable/1:disable confirm) - Show bazaar modeling confirmation.
|
||||
eventTalkRetainerItemTrade(?) - ??Opens retainer storage??
|
||||
eventTalkRetainerItemList(?) - ??Opens bazaar??
|
||||
eventReturnResult(?, ?) - ??Trade related??
|
||||
eventTalkRetainerItemTrade(operationCode) - Operate RetainerTradeWidget. Codes: 1 - Open, 2 - Select Mode, 3 - Close.
|
||||
eventTalkRetainerItemList(operationCode) - Operate Bazaar Widget. Codes: 1 - Open, 2 - Select Mode, 3 - Close.
|
||||
eventReturnResult(resultCode, ?) - Redraws the RetainerTrade UI.
|
||||
sayToPlayer(actorClassId, messageType, argument) - Makes the retainer say a phrase to the player.
|
||||
eventTalkFinish() - Stops npc from looking at player.
|
||||
eventPlayerTurn(angle) - Turns player to angle.
|
||||
|
@ -18,14 +18,29 @@ eventPlayerTurn(angle) - Turns player to angle.
|
|||
--]]
|
||||
|
||||
require ("global")
|
||||
require ("retainer")
|
||||
|
||||
function init(npc)
|
||||
return false, false, 0, 0;
|
||||
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
|
51
data/scripts/retainer.lua
Normal file
51
data/scripts/retainer.lua
Normal 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
|
Loading…
Add table
Reference in a new issue