mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-21 20:27:47 +00:00

PopulaceCompanyWarp made to look more retail authentic. Can't figure out how to make it not play the 'npc untargeted' sound though like retail. Music command has second argument for transition type. Added an overloaded function in Player.cs to support this. Setappearance adjusted to work again on player targets. DftWil updated to cover near everything. Re-added shop-related luas that were removed for some reason.
55 lines
No EOL
2.7 KiB
Lua
55 lines
No EOL
2.7 KiB
Lua
--[[
|
|
|
|
Shop Buy/Sell Functions
|
|
|
|
--]]
|
|
|
|
function purchaseItem(player, location, itemId, quantity, quality, price, currency)
|
|
|
|
local worldMaster = GetWorldMaster();
|
|
local invCheck = -1;
|
|
|
|
if (player:GetItemPackage(INVENTORY_CURRENCY):HasItem(currency, price)) then
|
|
invCheck = player:GetItemPackage(location):AddItem(itemId, quantity, quality);
|
|
|
|
if (invCheck == INV_ERROR_FULL) then
|
|
-- Your inventory is full.
|
|
player:SendGameMessage(player, worldMaster, 60022, MESSAGE_TYPE_SYSTEM);
|
|
elseif (invCheck == INV_ERROR_ALREADY_HAS_UNIQUE) then
|
|
-- You cannot have more than one <itemId> <quality> in your possession at any given time.
|
|
player:SendGameMessage(player, worldMaster, 40279, MESSAGE_TYPE_SYSTEM, itemId, quality);
|
|
elseif (invCheck == INV_ERROR_SYSTEM_ERROR) then
|
|
player:SendMessage(0x20, "", "[DEBUG] Server Error on adding item.");
|
|
elseif (invCheck == INV_ERROR_SUCCESS) then
|
|
player:GetItemPackage(INVENTORY_CURRENCY):removeItem(currency, price);
|
|
|
|
if (currency == 1000001) then -- If Gil
|
|
-- You purchase <quantity> <itemId> <quality> for <price> gil.
|
|
player:SendGameMessage(player, worldMaster, 25061, MESSAGE_TYPE_SYSTEM, itemId, quality, quantity, price);
|
|
|
|
elseif (currency == 1000201 or currency == 1000202 or currency == 1000203) then -- If Grand Company seal
|
|
-- You exchange <quantity> <GC seals> for <quantity> <itemId> <quality>.
|
|
player:SendGameMessage(player, worldMaster, 25275, MESSAGE_TYPE_SYSTEM, itemId, quality, quantity, price, player.gcCurrent);
|
|
|
|
elseif (currency >= 1000101 and currency <= 1000123) then -- If Guild mark
|
|
-- You trade <quantity> <itemId> <quality> for <quantity> <itemId> <quality>.
|
|
player:SendGameMessage(player, GetWorldMaster(), 25071, MESSAGE_TYPE_SYSTEM, currency, 1, itemId, 1, price, quantity);
|
|
end
|
|
end
|
|
else
|
|
-- You do not have enough gil. (Should never see this)
|
|
player:SendGameMessage(player, worldMaster, 25065, MESSAGE_TYPE_SYSTEM);
|
|
end
|
|
return
|
|
end
|
|
|
|
|
|
function sellItem(player, itemId, quantity, quality, itemPrice, slot, currency)
|
|
local worldMaster = GetWorldMaster();
|
|
local cost = quantity * itemPrice;
|
|
|
|
player:GetItemPackage(INVENTORY_CURRENCY):AddItem(currency, cost);
|
|
player:GetItemPackage(INVENTORY_NORMAL):RemoveItemAtSlot(slot, quantity);
|
|
-- You sell <quantity> <itemId> <quality> for <cost> gil.
|
|
player:SendGameMessage(player, worldMaster, 25075, MESSAGE_TYPE_SYSTEM, itemId, quality, quantity, cost);
|
|
end |