mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-21 04:07:48 +00:00
Added bazaar scripts and missing class file.
This commit is contained in:
parent
c0312079ef
commit
0cb2fe1a68
7 changed files with 169 additions and 5 deletions
65
FFXIVClassic Map Server/dataobjects/GameEvent.cs
Normal file
65
FFXIVClassic Map Server/dataobjects/GameEvent.cs
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
using FFXIVClassic_Map_Server.Actors;
|
||||||
|
using MoonSharp.Interpreter;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace FFXIVClassic_Map_Server.dataobjects
|
||||||
|
{
|
||||||
|
class GameEvent
|
||||||
|
{
|
||||||
|
private string eventName;
|
||||||
|
private uint ownerActorId;
|
||||||
|
private Player playerActor;
|
||||||
|
private Actor ownerActor;
|
||||||
|
private Coroutine coroutine;
|
||||||
|
private uint hashCode;
|
||||||
|
|
||||||
|
public GameEvent(String eventName, Player player, Actor owner)
|
||||||
|
{
|
||||||
|
this.eventName = eventName;
|
||||||
|
this.playerActor = player;
|
||||||
|
this.ownerActor = owner;
|
||||||
|
this.ownerActorId = owner.actorId;
|
||||||
|
hashCode = (uint)new Tuple<uint, uint, string>(player.actorId, owner.actorId, eventName).GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetEventName()
|
||||||
|
{
|
||||||
|
return eventName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint GetOwnerActorId()
|
||||||
|
{
|
||||||
|
return ownerActorId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player GetPlayerActor()
|
||||||
|
{
|
||||||
|
return playerActor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Actor GetOwnerActor()
|
||||||
|
{
|
||||||
|
return ownerActor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Coroutine GetCoroutine()
|
||||||
|
{
|
||||||
|
return coroutine;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetCoroutine(Coroutine coroutine)
|
||||||
|
{
|
||||||
|
this.coroutine = coroutine;
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint GetUniqueEventId()
|
||||||
|
{
|
||||||
|
return hashCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
29
data/scripts/commands/BazaarCheckCommand.lua
Normal file
29
data/scripts/commands/BazaarCheckCommand.lua
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
--[[
|
||||||
|
|
||||||
|
BazaarCheckCommand Script
|
||||||
|
|
||||||
|
Handles what happens when you examine a player's bazaar
|
||||||
|
|
||||||
|
--]]
|
||||||
|
|
||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, actor, triggerName, name, arg1, arg2, arg3, bazaarActorId)
|
||||||
|
|
||||||
|
local bazaarActor = nil;
|
||||||
|
|
||||||
|
if (name ~= nil) then
|
||||||
|
bazaarActor = player:GetZone():FindPCInZone(name);
|
||||||
|
elseif (bazaarActorId ~= nil) then
|
||||||
|
bazaarActor = player:GetZone():FindActorInArea(bazaarActorId);
|
||||||
|
end
|
||||||
|
|
||||||
|
if (bazaarActor ~= nil) then
|
||||||
|
callClientFunction(player, "delegateCommand", GetStaticActor("BazaarCheckCommand"), "processChackBazaar");
|
||||||
|
else
|
||||||
|
--Show error
|
||||||
|
end
|
||||||
|
|
||||||
|
player:EndEvent();
|
||||||
|
|
||||||
|
end
|
|
@ -13,25 +13,42 @@ function onEventStarted(player, actor, triggerName, rewardItem, seekItem, bazaar
|
||||||
local originalReward = nil;
|
local originalReward = nil;
|
||||||
local originalSeek = nil;
|
local originalSeek = nil;
|
||||||
|
|
||||||
|
--Handle special case for offers
|
||||||
|
if (seekItem == nil) then
|
||||||
|
originalSeek = player:GetItemPackage(0):GetItemAtSlot(rewardItem.seekSlot);
|
||||||
|
originalReward = player:GetItemPackage(0):GetItemAtSlot(rewardItem.offerSlot);
|
||||||
|
end
|
||||||
|
|
||||||
--Handle Reward
|
--Handle Reward
|
||||||
if (type(rewardItem) == "number") then
|
if (type(rewardItem) == "number") then
|
||||||
rewardItem = GetWorldManager():CreateItem(rewardItem, rewardAmount);
|
rewardItem = GetWorldManager():CreateItem(rewardItem, rewardAmount);
|
||||||
|
player:RemoveItem(1000001, rewardAmount);
|
||||||
|
elseif (seekItem == nil) then
|
||||||
|
rewardItem = originalReward;
|
||||||
|
if (bazaarMode ~= 11) then
|
||||||
|
rewardItem = GetWorldManager():CreateItem(rewardItem.itemId, rewardAmount, rewardItem.quality, rewardItem.modifiers);
|
||||||
|
end
|
||||||
else
|
else
|
||||||
rewardItem = player:GetItem(rewardItem);
|
rewardItem = player:GetItem(rewardItem);
|
||||||
originalReward = rewardItem;
|
originalReward = rewardItem;
|
||||||
if (bazaarMode ~= 11) then
|
if (bazaarMode ~= 11) then
|
||||||
rewardItem = GetWorldManager():CreateItem(rewardItem.itemId, rewardAmount, rewardItem.quality);
|
rewardItem = GetWorldManager():CreateItem(rewardItem.itemId, rewardAmount, rewardItem.quality, rewardItem.modifiers);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--Handle Seek
|
--Handle Seek
|
||||||
if (type(seekItem) == "number") then
|
if (type(seekItem) == "number") then
|
||||||
seekItem = GetWorldManager():CreateItem(seekItem, rewardAmount);
|
seekItem = GetWorldManager():CreateItem(seekItem, seekAmount);
|
||||||
|
elseif (seekItem == nil) then
|
||||||
|
seekItem = originalSeek;
|
||||||
|
if (bazaarMode ~= 11) then
|
||||||
|
seekItem = GetWorldManager():CreateItem(seekItem.itemId, seekAmount, seekItem.quality, seekItem.modifiers);
|
||||||
|
end
|
||||||
else
|
else
|
||||||
seekItem = player:GetItem(seekItem);
|
seekItem = player:GetItem(seekItem);
|
||||||
originalSeek = seekItem;
|
originalSeek = seekItem;
|
||||||
if (bazaarMode ~= 11) then
|
if (bazaarMode ~= 11) then
|
||||||
seekItem = GetWorldManager():CreateItem(seekItem.itemId, seekAmount, seekItem.quality);
|
seekItem = GetWorldManager():CreateItem(seekItem.itemId, seekAmount, seekItem.quality, seekItem.modifiers);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
51
data/scripts/commands/BazaarTradeCommand.lua
Normal file
51
data/scripts/commands/BazaarTradeCommand.lua
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
--[[
|
||||||
|
|
||||||
|
BazaarTradeCommand Script
|
||||||
|
|
||||||
|
Handles bazaar trade
|
||||||
|
|
||||||
|
All bazaar args have a Reward (The item the person who fufills the request gets) and a Seek (The item the player wants, either gil or an item).
|
||||||
|
|
||||||
|
--]]
|
||||||
|
|
||||||
|
function onEventStarted(player, actor, triggerName, rewardItem, seekItemOrCost, seekAmount, arg1, bazaarActorId, rewardAmount, rewardItemId, nameIndex, arg2, type9ItemIds)
|
||||||
|
|
||||||
|
local originalReward = nil;
|
||||||
|
local originalSeek = nil;
|
||||||
|
local bazaarActor = nil;
|
||||||
|
|
||||||
|
--Get the bazaar actor
|
||||||
|
if (bazaarActorId ~= nil) then
|
||||||
|
bazaarActor = player:GetZone():FindActorInArea(bazaarActorId);
|
||||||
|
end
|
||||||
|
|
||||||
|
--Abort if no actor
|
||||||
|
if (bazaarActor == nil) then
|
||||||
|
player:EndEvent();
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
--If seekItem is a number, we are buying an item (ExecuteBazaarBuy)
|
||||||
|
if (type(seekItemOrCost) == "number") then
|
||||||
|
if (player:GetCurrentGil() >= seekItemOrCost) then
|
||||||
|
if (GetWorldManager():BazaarBuyOperation(bazaarActor, player, bazaarActor:GetItem(rewardItem), rewardAmount, seekItemOrCost)) then
|
||||||
|
else
|
||||||
|
end
|
||||||
|
else
|
||||||
|
--Show no gil error
|
||||||
|
end
|
||||||
|
else --Else we are fufilling a sought out item (ExecuteBazaarSell)
|
||||||
|
local rewardItem = player:GetItem(rewardItem);
|
||||||
|
local seekItem = player:GetItem(seekItemOrCost);
|
||||||
|
|
||||||
|
if (rewardItem ~= nil and seekItem ~= nil) then
|
||||||
|
if (GetWorldManager():BazaarSellOperation(bazaarActor, player, rewardItem, rewardAmount, seekItem, seekAmount)) then
|
||||||
|
else
|
||||||
|
end
|
||||||
|
else
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
player:EndEvent();
|
||||||
|
|
||||||
|
end
|
|
@ -8,6 +8,8 @@ Handles canceling bazaar items
|
||||||
|
|
||||||
function onEventStarted(player, actor, triggerName, rewardItem, arg1, bazaarType, arg2, bazaarActor, rewardAmount, seekAmount, arg3, arg4, type9ItemIds)
|
function onEventStarted(player, actor, triggerName, rewardItem, arg1, bazaarType, arg2, bazaarActor, rewardAmount, seekAmount, arg3, arg4, type9ItemIds)
|
||||||
|
|
||||||
|
GetWorldManager():RemoveFromBazaar(player, player:GetItem(rewardItem));
|
||||||
|
|
||||||
player:EndEvent();
|
player:EndEvent();
|
||||||
|
|
||||||
end
|
end
|
|
@ -58,7 +58,7 @@ function onEventStarted(player, actor, triggerName, invActionInfo, param1, param
|
||||||
|
|
||||||
--Equip Item
|
--Equip Item
|
||||||
if (invActionInfo ~= nil) then
|
if (invActionInfo ~= nil) then
|
||||||
item = player:GetInventory(0):GetItemAtSlot(invActionInfo.slot);
|
item = player:GetItemPackage(0):GetItemAtSlot(invActionInfo.slot);
|
||||||
equipItem(player, equipSlot, item);
|
equipItem(player, equipSlot, item);
|
||||||
player:SendAppearance();
|
player:SendAppearance();
|
||||||
--Unequip Item
|
--Unequip Item
|
||||||
|
|
|
@ -10,6 +10,6 @@ The param "itemDBIds" has the vars: item1 and item2.
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
function onEventStarted(player, actor, triggerName, itemReference, targetPackage, sourcePackage, arg1, arg2, unknown, arg3, arg4, arg5, type9ItemIds)
|
function onEventStarted(player, actor, triggerName, itemReference, targetPackage, sourcePackage, arg1, arg2, unknown, arg3, arg4, arg5, type9ItemIds)
|
||||||
player:GetInventory(targetPackage):RemoveItemAtSlot(itemReference.slot);
|
player:GetItemPackage(itemReference.itemPackage):RemoveItemAtSlot(itemReference.slot);
|
||||||
player:EndEvent();
|
player:EndEvent();
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue