mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Figured out and implemented the Retainer scripts.
This commit is contained in:
		| @@ -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");	 | ||||
| 	player:EndEvent();	 | ||||
| end | ||||
| 	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 | ||||
| 	 | ||||
| 	callClientFunction(player, "eventTalkRetainerItemList", 1); | ||||
| 	--callClientFunction(player, "eventTalkRetainerDismissal", 0, false); | ||||
| 	player:EndEvent(); | ||||
| end | ||||
| 	 | ||||
| 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 | ||||
		Reference in New Issue
	
	Block a user