mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04: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:
		| @@ -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 | ||||
		Reference in New Issue
	
	Block a user