mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-09 22:14:39 +02:00
Teleport command touch-ups.
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.
This commit is contained in:
parent
bad51717c2
commit
4fc5762d41
12 changed files with 1543 additions and 78 deletions
55
Data/scripts/shop.lua
Normal file
55
Data/scripts/shop.lua
Normal file
|
@ -0,0 +1,55 @@
|
|||
--[[
|
||||
|
||||
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
|
Loading…
Add table
Add a link
Reference in a new issue