mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-26 14:47:45 +00:00
Fixed multiparams not being returned on CallClientFunction(). Was due to bad merge. Added Jorge's scripts.
This commit is contained in:
parent
a309e651da
commit
77203bca4c
6 changed files with 905 additions and 24 deletions
|
@ -4,34 +4,190 @@ PopulaceBlackMarketeer Script
|
|||
|
||||
Functions:
|
||||
|
||||
eventTalkWelcome(player) - Start Text
|
||||
eventSellItemAsk(player, ?, ?)
|
||||
eventAskMainMenu(player, index) - Shows
|
||||
eventTalkBye(player) - Says bye text
|
||||
eventTalkStepBreak() - Ends talk
|
||||
eventTalkWelcome(player) - Start Text
|
||||
eventSellItemAsk(player, itemName, tradePrice) - Requires GC Affiliation. Trade menu for Commemorative Coin
|
||||
eventAskMainMenu(player, index) - Shows menu prompt to purchase with gil or with GC seals
|
||||
eventTalkBye(player) - Says bye text
|
||||
eventTalkStepBreak() - Ends talk, NPC turns to face original position
|
||||
|
||||
eventSealShopMenuOpen() -
|
||||
eventSealShopMenuAsk() -
|
||||
eventSealShopMenuClose() -
|
||||
eventGilShopMenuOpen() -
|
||||
eventGilShopMenuAsk() -
|
||||
eventGilShopMenuClose() -
|
||||
eventSealShopMenuOpen() - Opens menu for purchasing with grand company seals
|
||||
eventSealShopMenuAsk() - Returns two values, one that seems to always be true, and an index of purchased item
|
||||
eventSealShopMenuClose() - Closes seal menu
|
||||
eventGilShopMenuOpen() - Opens menu for purchasing with gil
|
||||
eventGilShopMenuAsk() - Returns two values, one that seems to always be true, and an index of purchased item
|
||||
eventGilShopMenuClose() - Closes gil menu
|
||||
|
||||
Class applies to only three NPCs
|
||||
Actorclass Id - 1500293 : Momoroon, Limsa Lominsa
|
||||
Actorclass Id - 1500294 : Gagaroon, Gridania
|
||||
Actorclass Id - 1500295 : Lalaroon, Ul'dah
|
||||
|
||||
--]]
|
||||
|
||||
require ("global")
|
||||
|
||||
shopInfo = { -- [ index ] = { itemId, gilPrice, sealPrice, city, itemCategory }
|
||||
[1001] = {3020202, 100, 10000, 1, 1},
|
||||
[1002] = {3020509, 400, 40000, 1, 1},
|
||||
[1003] = {3020510, 400, 40000, 1, 1},
|
||||
[1004] = {3020504, 1000, 100000, 1, 1},
|
||||
[1005] = {3020505, 1000, 100000, 1, 1},
|
||||
[1101] = {9040018, 1500, 150000, 1, 2},
|
||||
[1102] = {9010025, 2000, 200000, 1, 2},
|
||||
[1301] = {2001014, 4000, 400000, 1, 4},
|
||||
[2001] = {3020203, 100, 10000, 2, 1},
|
||||
[2002] = {3020509, 400, 40000, 2, 1},
|
||||
[2003] = {3020510, 400, 40000, 2, 1},
|
||||
[2004] = {3020504, 1000, 100000, 2, 1},
|
||||
[2005] = {3020505, 1000, 100000, 2, 1},
|
||||
[2101] = {9040018, 1500, 150000, 2, 2},
|
||||
[2102] = {9010025, 2000, 200000, 2, 2},
|
||||
[2301] = {2001015, 4000, 400000, 2, 4},
|
||||
[3001] = {3020204, 100, 10000, 3, 1},
|
||||
[3002] = {3020509, 400, 40000, 3, 1},
|
||||
[3003] = {3020510, 400, 40000, 3, 1},
|
||||
[3004] = {3020504, 1000, 100000, 3, 1},
|
||||
[3005] = {3020505, 1000, 100000, 3, 1},
|
||||
[3101] = {9040018, 1500, 150000, 3, 2},
|
||||
[3102] = {9010025, 2000, 200000, 3, 2},
|
||||
[3301] = {2001016, 4000, 400000, 3, 4},
|
||||
}
|
||||
|
||||
function init(npc)
|
||||
return false, false, 0, 0;
|
||||
end
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
|
||||
|
||||
commemorativeCoin = 10011251;
|
||||
commemorativeCoinValue = 25000;
|
||||
gilCurrency = 1000001;
|
||||
playerGC = player.gcCurrent
|
||||
playerGCSeal = 1000200 + playerGC;
|
||||
|
||||
callClientFunction(player, "eventTalkWelcome", player);
|
||||
|
||||
currancyType = callClientFunction(player, "eventAskMainMenu", player);
|
||||
callClientFunction(player, "eventSealShopMenuAsk", player);
|
||||
|
||||
|
||||
if player:GetInventory(INVENTORY_NORMAL):HasItem(commemorativeCoin) and playerGC > 0 then
|
||||
-- Checks for player having a commemorative coin, show window trade option if so.
|
||||
coinChoice = callClientFunction(player, "eventSellItemAsk", player, commemorativeCoin, commemorativeCoinValue);
|
||||
if coinChoice == 1 then
|
||||
currencyType = callClientFunction(player, "eventAskMainMenu", player);
|
||||
elseif coinChoice == 2 then
|
||||
-- You trade <itemQuantity1> <itemName1> <itemQuality1> for <itemQuantity2> <itemName2> <itemQuality2>.
|
||||
player:SendGameMessage(player, GetWorldMaster(), 25071, MESSAGE_TYPE_SYSTEM, commemorativeCoin, 1, playerGCSeal, 1, 1, commemorativeCoinValue);
|
||||
player:GetInventory(INVENTORY_NORMAL):RemoveItem(commemorativeCoin, 1);
|
||||
player:getInventory(INVENTORY_CURRENCY):addItem(playerGCSeal, 25000, 1)
|
||||
-- TODO: Add handling for checking GC seals limit and not going over it
|
||||
end
|
||||
else
|
||||
-- If no grand company alignment, go straight to the shop that uses gil, otherwise show gc seal option.
|
||||
if playerGC == 0 then
|
||||
processGilShop(player);
|
||||
else
|
||||
currencyType = callClientFunction(player, "eventAskMainMenu", player);
|
||||
if currencyType == 1 then
|
||||
processGilShop(player);
|
||||
elseif currencyType == 2 then
|
||||
processSealShop(player);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
callClientFunction(player, "eventTalkBye", player);
|
||||
callClientFunction(player, "eventTalkStepBreak", player);
|
||||
player:EndEvent();
|
||||
end
|
||||
|
||||
|
||||
function processGilShop(player)
|
||||
|
||||
callClientFunction(player, "eventGilShopMenuOpen", player);
|
||||
|
||||
while (true) do
|
||||
unk1, buyResult = callClientFunction(player, "eventGilShopMenuAsk", player);
|
||||
printf(unk1);
|
||||
if (buyResult == 0 or buyResult == -1) then
|
||||
callClientFunction(player, "eventGilShopMenuClose", player);
|
||||
break;
|
||||
else
|
||||
if shopInfo[buyResult] == nil then
|
||||
-- Prevent server crash from someone trying to buy a non-existent item via packet injection.
|
||||
break;
|
||||
else
|
||||
-- TODO: Add handling to check you're on the right NPC to prevent packet injecting a purchase from anything in the list
|
||||
if shopInfo[buyResult][5] == 4 then
|
||||
location = INVENTORY_KEYITEMS;
|
||||
else
|
||||
location = INVENTORY_NORMAL;
|
||||
end
|
||||
|
||||
purchaseItem(player, shopInfo[buyResult][1], 1, 1, shopInfo[buyResult][3], gilCurrency, location);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function processSealShop(player)
|
||||
|
||||
callClientFunction(player, "eventSealShopMenuOpen", player);
|
||||
|
||||
while (true) do
|
||||
unk1, buyResult = callClientFunction(player, "eventSealShopMenuAsk", player);
|
||||
|
||||
if (buyResult == 0 or buyResult == -1) then
|
||||
callClientFunction(player, "eventSealShopMenuClose", player);
|
||||
break;
|
||||
else
|
||||
if shopInfo[buyResult] == nil then
|
||||
-- Prevent server crash from someone trying to buy a non-existent item via packet injection.
|
||||
break;
|
||||
else
|
||||
-- TODO: Add handling to check you're on the right NPC to prevent packet injecting a purchase from anything in the list
|
||||
if shopInfo[buyResult][5] == 4 then
|
||||
location = INVENTORY_KEYITEMS;
|
||||
else
|
||||
location = INVENTORY_NORMAL;
|
||||
end
|
||||
|
||||
purchaseItem(player, shopInfo[buyResult][1], 1, 1, shopInfo[buyResult][2], playerGCSeal, location);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function purchaseItem(player, itemId, quantity, quality, price, currency, location)
|
||||
|
||||
local worldMaster = GetWorldMaster();
|
||||
local cost = quantity * price;
|
||||
local gItemData = GetItemGamedata(itemId);
|
||||
local isUnique = gItemData.isRare;
|
||||
|
||||
if player:GetInventory(location):HasItem(itemId) and isUnique 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);
|
||||
return;
|
||||
end
|
||||
|
||||
if (not player:GetInventory(location):IsFull() or player:GetInventory(location):IsSpaceForAdd(itemId, quantity)) then
|
||||
if player:GetInventory(INVENTORY_CURRENCY):HasItem(currency, cost) then
|
||||
player:GetInventory(INVENTORY_CURRENCY):removeItem(currency, cost)
|
||||
player:GetInventory(location):AddItem(itemId, quantity, quality);
|
||||
if currency == 1000001 then
|
||||
-- You purchase <quantity> <itemId> <quality> for <cost> gil.
|
||||
player:SendGameMessage(player, worldMaster, 25061, MESSAGE_TYPE_SYSTEM, itemId, quality, quantity, cost);
|
||||
elseif currency == 1000201 or currency == 1000202 or currency == 1000203 then
|
||||
-- You exchange <quantity> <GC seals> for <quantity> <itemId> <quality>.
|
||||
player:SendGameMessage(player, GetWorldMaster(), 25275, MESSAGE_TYPE_SYSTEM, itemId, quality, quantity, price, player.gcCurrent);
|
||||
|
||||
end
|
||||
else
|
||||
-- You do not have enough gil. (Should never see this aside from packet injection, since client prevents buying if not enough currency)
|
||||
player:SendGameMessage(player, worldMaster, 25065, MESSAGE_TYPE_SYSTEM);
|
||||
end
|
||||
else
|
||||
-- Your inventory is full.
|
||||
player:SendGameMessage(player, worldMaster, 60022, MESSAGE_TYPE_SYSTEM);
|
||||
end
|
||||
return
|
||||
end
|
|
@ -0,0 +1,77 @@
|
|||
--[[
|
||||
|
||||
PopulaceCompanyOfficer Script
|
||||
|
||||
xtx_gcRank for GC Rank values
|
||||
|
||||
Functions:
|
||||
|
||||
eventTalkWelcome() - Welcome dialog
|
||||
eventTalkWelcomeQuest() - Same as Welcome dialog?
|
||||
eventTalkPreJoin() - Dialog for starting GC rank?
|
||||
eventTalkExclusive() - Dialog to play when you're not of that GC?
|
||||
eventTalkJoinedOnly() - Reads like chat-end dialog for your GC.
|
||||
eventTalkJoined(gcRank, gcRank, isCanAfford, isShowPromotion) - Menu to ask about/for promotion
|
||||
|
||||
eventDoRankUp(gcRank, gcRank) - Plays rank-up animation and opens GC window.
|
||||
eventRankUpDone(???, ???) - Has your character do the GC salute? Values seem to do nothing?
|
||||
eventRankCategoryUpBefore(gcRank) - 11/21/31 - Mentions which GC quest you need to clear to continue promotion
|
||||
eventRankCategoryUpAfter() - Follow-up dialog after ranking up
|
||||
eventTalkQuestUncomplete() - Quest prerequisite dialog for ranking up to Second Lieutenant (1.23b rank cap)
|
||||
eventTalkFestival() - Foundation Day 2011 event dialog. Server needs to reward 1000 GC seals after.
|
||||
eventTalkFestival2() - Foundation Day 2011 event dialog. Seems to reward more seals, unsure how many.
|
||||
eventTalkFestival2012(value) - Foundation Day 2012 event dialog. Rewards amount of seals dictated by value, retail used 5000.
|
||||
|
||||
eventTalkStepBreak() - Resets NPC target/facing
|
||||
--]]
|
||||
|
||||
require ("global")
|
||||
|
||||
function init(npc)
|
||||
return false, false, 0, 0;
|
||||
end
|
||||
|
||||
gcOfficer = {
|
||||
[1500199] = 1, -- Limsa Officer
|
||||
[1500200] = 2, -- Grid Officer
|
||||
[1500198] = 3, -- Flame Officer
|
||||
}
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
|
||||
playerGC = player.gcCurrent;
|
||||
playerGCSeal = 1000200 + playerGC;
|
||||
playerCurrentRank = 13;
|
||||
playerRankUpCost = 1500;
|
||||
playerNextRank = 15;
|
||||
currentRankCap = 31; -- Second Lieutenant
|
||||
npcId = npc:GetActorClassId();
|
||||
|
||||
if playerGC == gcOfficer[npcId] then
|
||||
callClientFunction(player, "eventTalkWelcome");
|
||||
if playerCurrentRank < currentRankCap then
|
||||
if player:GetInventory(INVENTORY_CURRENCY):HasItem(playerGCSeal, playerRankUpCost) then
|
||||
-- Show Promotion window, allow paying
|
||||
local choice = callClientFunction(player, "eventTalkJoined", playerCurrentRank, playerNextRank, true, true);
|
||||
|
||||
-- If promotion accepted
|
||||
if choice == 1 then
|
||||
callClientFunction(player, "eventDoRankUp", playerNextRank, playerNextRank);
|
||||
-- TODO: Table GC info or get it in source/sql. Handle actual upgrade of GC rank/seal cap/cost/etc.
|
||||
end
|
||||
|
||||
else
|
||||
-- Show Promotion window, show dialog you can't afford promotion
|
||||
callClientFunction(player, "eventTalkJoined", playerCurrentRank, playerNextRank, false, true);
|
||||
end
|
||||
else
|
||||
callClientFunction(player, "eventTalkJoined", playerCurrentRank, playerNextRank);
|
||||
end
|
||||
|
||||
callClientFunction(player, "eventTalkJoinedOnly");
|
||||
else
|
||||
callClientFunction(player, "eventTalkExclusive");
|
||||
end
|
||||
callClientFunction(player, "eventTalkStepBreak");
|
||||
player:endEvent();
|
||||
end
|
546
data/scripts/base/chara/npc/populace/PopulaceCompanyShop.lua
Normal file
546
data/scripts/base/chara/npc/populace/PopulaceCompanyShop.lua
Normal file
|
@ -0,0 +1,546 @@
|
|||
--[[
|
||||
|
||||
PopulaceCompanyShop Script
|
||||
|
||||
|
||||
Functions:
|
||||
|
||||
eventTalkStepCantUse() -- When player tries to buy from another GC's shop
|
||||
eventTalkPreJoin() -- Dialog for the shop
|
||||
eventTalkPreJoinQuest() -- Tutorial dialog for the shop?
|
||||
eventTalkJoined(???) -- Dialog for the shop, they salute. Orphaned parameter?
|
||||
|
||||
eventTalkFestival() -- Festival Day Event Dialog
|
||||
eventTalkFestival2() -- Festival Day Event Follow-up Dialog
|
||||
|
||||
eventTalkMainMenu(???, ???) -- Shop menu for picking GC items
|
||||
eventShopMenuOpen() -- Sets up shop menu. Calls getSpecialEventWork, value 8 shows GC firework & 11 a Patriot's Choker
|
||||
eventShopMenuAsk() -- Opens up the shop menu.
|
||||
eventShopMenuClose()
|
||||
|
||||
eventGuideChocoboWhistle(???) -- Tutorial dialog after purchasing Chocobo issuance slip. Orphaned parameter?
|
||||
eventGuideTownTransport(index) -- Tutorial dialog after purchasing an aetherpass. Index is item ID.
|
||||
eventAskChocoboCustomize(index, price) -- Chocobo Barding purchase dialog. Index is item ID.
|
||||
eventChocoboCustomize() -- Follow-up dialog if you purchase Chocobo Barding.
|
||||
|
||||
getGrandCompanyNumber() -- Returns GC value of the NPC
|
||||
getShopItemStartIndex(index) -- Gets starting index value based on GC shop
|
||||
getShopItemEndIndex(index) -- Gets ending index value based on GC shop
|
||||
getShopSellingItemMax(???) --
|
||||
getShopSellingItemDetail(player, ???, ???)
|
||||
|
||||
eventTalkStepBreak() -- Returns NPC to their starting direction
|
||||
--]]
|
||||
|
||||
require ("global")
|
||||
|
||||
function init(npc)
|
||||
return false, false, 0, 0;
|
||||
end
|
||||
|
||||
gcOfficer = {
|
||||
[1500202] = 1, -- Limsa Shop
|
||||
[1500203] = 2, -- Grid Shop
|
||||
[1500201] = 3, -- Flame Shop
|
||||
}
|
||||
|
||||
shopInfo = { -- [index] = { itemID, itemQuality, itemQuantity, itemCost gcRank, city, special, itemCategory }
|
||||
[100001] = {3010403, 1, 10, 20, 0, 1, 0, 1},
|
||||
[100002] = {3010402, 1, 10, 30, 0, 1, 0, 1},
|
||||
[100003] = {3020202, 1, 1, 50, 0, 1, 0, 1},
|
||||
[100004] = {3020406, 1, 20, 10, 0, 1, 0, 1},
|
||||
[100005] = {3020403, 1, 10, 15, 0, 1, 0, 1},
|
||||
[100006] = {3020402, 1, 5, 60, 0, 1, 0, 1},
|
||||
[100007] = {3020404, 1, 5, 100, 0, 1, 0, 1},
|
||||
[100008] = {3020528, 1, 5, 50, 0, 1, 0, 1},
|
||||
[100009] = {3020516, 1, 5, 50, 0, 1, 0, 1},
|
||||
[100010] = {3020411, 1, 1, 15, 0, 1, 0, 1},
|
||||
[100011] = {3020412, 1, 1, 200, 0, 1, 0, 1},
|
||||
[100012] = {3020509, 1, 1, 200, 0, 1, 0, 1},
|
||||
[100013] = {3020510, 1, 1, 200, 0, 1, 0, 1},
|
||||
[100014] = {10013001, 1, 20, 5, 0, 1, 0, 1},
|
||||
[100015] = {10013002, 1, 20, 25, 0, 1, 0, 1},
|
||||
[100016] = {10013003, 1, 20, 45, 0, 1, 0, 1},
|
||||
[100017] = {10013004, 1, 20, 100, 0, 1, 0, 1},
|
||||
[100018] = {10013005, 1, 20, 150, 0, 1, 0, 1},
|
||||
[100019] = {3910402, 1, 99, 85, 0, 1, 0, 1},
|
||||
[100020] = {3910103, 1, 99, 120, 0, 1, 0, 1},
|
||||
[100021] = {3910203, 1, 99, 120, 0, 1, 0, 1},
|
||||
[100022] = {3910305, 1, 99, 85, 0, 1, 0, 1},
|
||||
[100023] = {3920004, 1, 999, 50, 0, 1, 0, 1},
|
||||
[100024] = {3920006, 1, 999, 70, 0, 1, 0, 1},
|
||||
[100025] = {3920003, 1, 999, 115, 0, 1, 0, 1},
|
||||
[100026] = {3910005, 1, 99, 75, 0, 1, 0, 1},
|
||||
[100027] = {3910006, 1, 99, 90, 0, 1, 0, 1},
|
||||
[100028] = {3940011, 1, 20, 20, 0, 1, 0, 1},
|
||||
[100029] = {3940010, 1, 20, 30, 0, 1, 0, 1},
|
||||
[100030] = {3020504, 1, 1, 400, 15, 1, 0, 1},
|
||||
[100031] = {3020505, 1, 1, 400, 15, 1, 0, 1},
|
||||
[100032] = {3020506, 1, 1, 300, 31, 1, 0, 1},
|
||||
[101001] = {4040010, 1, 1, 500, 0, 1, 0, 2},
|
||||
[101002] = {4040110, 1, 1, 1000, 0, 1, 0, 2},
|
||||
[101003] = {4040205, 1, 1, 1400, 0, 1, 0, 2},
|
||||
[101004] = {4040305, 1, 1, 3000, 0, 1, 0, 2},
|
||||
[101005] = {4040204, 1, 1, 4000, 0, 1, 0, 2},
|
||||
[101006] = {4080304, 1, 1, 950, 0, 1, 0, 2},
|
||||
[101007] = {4080211, 1, 1, 1000, 0, 1, 0, 2},
|
||||
[101008] = {4080106, 1, 1, 2000, 0, 1, 0, 2},
|
||||
[101009] = {4080303, 1, 1, 4000, 0, 1, 0, 2},
|
||||
[101010] = {5020010, 1, 1, 900, 0, 1, 0, 2},
|
||||
[101011] = {5020209, 1, 1, 1000, 0, 1, 0, 2},
|
||||
[101012] = {5020213, 1, 1, 1600, 0, 1, 0, 2},
|
||||
[101013] = {5020305, 1, 1, 4000, 0, 1, 0, 2},
|
||||
[101014] = {8030350, 1, 1, 750, 0, 1, 0, 2},
|
||||
[101015] = {8030447, 1, 1, 750, 0, 1, 0, 2},
|
||||
[101016] = {8031223, 1, 1, 750, 0, 1, 0, 2},
|
||||
[101017] = {8032008, 1, 1, 750, 0, 1, 0, 2},
|
||||
[101018] = {9050029, 1, 1, 900, 0, 1, 0, 2},
|
||||
[101019] = {9050044, 1, 1, 1900, 0, 1, 0, 2},
|
||||
[101020] = {9040032, 1, 1, 950, 0, 1, 0, 2},
|
||||
[101021] = {9040025, 1, 1, 1500, 0, 1, 0, 2},
|
||||
[101022] = {8013201, 1, 1, 1000, 11, 1, 0, 2},
|
||||
[101023] = {8032601, 1, 1, 1000, 11, 1, 0, 2},
|
||||
[101024] = {8071301, 1, 1, 1000, 11, 1, 0, 2},
|
||||
[101025] = {8081701, 1, 1, 1000, 11, 1, 0, 2},
|
||||
[101026] = {8050620, 1, 1, 1200, 11, 1, 0, 2},
|
||||
[101027] = {8050243, 1, 1, 1200, 11, 1, 0, 2},
|
||||
[101028] = {8050344, 1, 1, 1200, 11, 1, 0, 2},
|
||||
[101029] = {8050028, 1, 1, 1200, 11, 1, 0, 2},
|
||||
[101030] = {8090706, 1, 1, 1200, 11, 1, 0, 2},
|
||||
[101031] = {4030205, 1, 1, 2500, 13, 1, 0, 2},
|
||||
[101032] = {4020306, 1, 1, 2500, 13, 1, 0, 2},
|
||||
[101033] = {4040014, 1, 1, 2500, 13, 1, 0, 2},
|
||||
[101034] = {4080408, 1, 1, 2500, 13, 1, 0, 2},
|
||||
[101035] = {4070310, 1, 1, 2500, 13, 1, 0, 2},
|
||||
[101036] = {5030307, 1, 1, 2500, 13, 1, 0, 2},
|
||||
[101037] = {5020112, 1, 1, 2500, 13, 1, 0, 2},
|
||||
[101038] = {4100205, 1, 1, 2000, 13, 1, 0, 2},
|
||||
[101039] = {8011609, 1, 1, 3000, 15, 1, 0, 2},
|
||||
[101040] = {8032311, 1, 1, 3000, 15, 1, 0, 2},
|
||||
[101041] = {8071017, 1, 1, 3000, 15, 1, 0, 2},
|
||||
[101042] = {8050132, 1, 1, 3000, 15, 1, 0, 2},
|
||||
[101043] = {8081123, 1, 1, 3000, 15, 1, 0, 2},
|
||||
[101044] = {4030117, 1, 1, 4500, 17, 1, 0, 2},
|
||||
[101045] = {4020210, 1, 1, 4500, 17, 1, 0, 2},
|
||||
[101046] = {4040406, 1, 1, 4500, 17, 1, 0, 2},
|
||||
[101047] = {4080107, 1, 1, 4500, 17, 1, 0, 2},
|
||||
[101048] = {4070108, 1, 1, 4500, 17, 1, 0, 2},
|
||||
[101049] = {5030111, 1, 1, 4500, 17, 1, 0, 2},
|
||||
[101050] = {5020013, 1, 1, 4500, 17, 1, 0, 2},
|
||||
[101051] = {4100405, 1, 1, 4000, 17, 1, 0, 2},
|
||||
[101052] = {8011610, 1, 1, 5000, 21, 1, 0, 2},
|
||||
[101053] = {8032312, 1, 1, 5000, 21, 1, 0, 2},
|
||||
[101054] = {8071018, 1, 1, 5000, 21, 1, 0, 2},
|
||||
[101055] = {8050133, 1, 1, 5000, 21, 1, 0, 2},
|
||||
[101056] = {8050769, 1, 1, 5000, 21, 1, 0, 2},
|
||||
[101057] = {8081124, 1, 1, 5000, 21, 1, 0, 2},
|
||||
[101058] = {8080565, 1, 1, 5000, 21, 1, 0, 2},
|
||||
[101059] = {8090609, 1, 1, 5000, 21, 1, 0, 2},
|
||||
[101060] = {9050021, 1, 1, 1000, 21, 1, 0, 2},
|
||||
[101061] = {9050022, 1, 1, 1000, 21, 1, 0, 2},
|
||||
[101062] = {9010025, 1, 1, 1000, 21, 1, 0, 2},
|
||||
[101063] = {4100804, 1, 1, 5500, 23, 1, 0, 2},
|
||||
[101064] = {8013614, 1, 1, 5500, 23, 1, 0, 2},
|
||||
[101065] = {8032820, 1, 1, 5500, 23, 1, 0, 2},
|
||||
[101066] = {8051516, 1, 1, 5500, 23, 1, 0, 2},
|
||||
[101067] = {8071520, 1, 1, 5500, 23, 1, 0, 2},
|
||||
[101068] = {9030060, 1, 1, 5500, 23, 1, 0, 2},
|
||||
[101069] = {9050067, 1, 1, 5500, 23, 1, 0, 2},
|
||||
[101070] = {8013615, 1, 1, 6000, 25, 1, 0, 2},
|
||||
[101071] = {8013616, 1, 1, 6000, 25, 1, 0, 2},
|
||||
[101072] = {8032821, 1, 1, 6000, 25, 1, 0, 2},
|
||||
[101073] = {8071521, 1, 1, 6000, 25, 1, 0, 2},
|
||||
[101074] = {8081914, 1, 1, 6000, 25, 1, 0, 2},
|
||||
[101075] = {9040065, 1, 1, 6000, 25, 1, 0, 2},
|
||||
[101076] = {9010061, 1, 1, 6000, 25, 1, 0, 2},
|
||||
[101077] = {4100805, 1, 1, 6500, 27, 1, 0, 2},
|
||||
[101078] = {4020408, 1, 1, 6500, 27, 1, 0, 2},
|
||||
[101079] = {4040508, 1, 1, 6500, 27, 1, 0, 2},
|
||||
[101080] = {4080508, 1, 1, 6500, 27, 1, 0, 2},
|
||||
[101081] = {4070408, 1, 1, 6500, 27, 1, 0, 2},
|
||||
[101082] = {5030408, 1, 1, 6500, 27, 1, 0, 2},
|
||||
[101083] = {5020408, 1, 1, 6500, 27, 1, 0, 2},
|
||||
[101084] = {4030604, 1, 1, 25000, 31, 1, 0, 2},
|
||||
[101085] = {4020404, 1, 1, 25000, 31, 1, 0, 2},
|
||||
[101086] = {4040504, 1, 1, 25000, 31, 1, 0, 2},
|
||||
[101087] = {4080504, 1, 1, 25000, 31, 1, 0, 2},
|
||||
[101088] = {4070404, 1, 1, 25000, 31, 1, 0, 2},
|
||||
[101089] = {5030404, 1, 1, 25000, 31, 1, 0, 2},
|
||||
[101090] = {5020404, 1, 1, 25000, 31, 1, 0, 2},
|
||||
[101091] = {8013204, 1, 1, 6000, 31, 1, 0, 2},
|
||||
[101092] = {8032604, 1, 1, 6000, 31, 1, 0, 2},
|
||||
[101093] = {8071304, 1, 1, 6000, 31, 1, 0, 2},
|
||||
[101094] = {8081704, 1, 1, 6000, 31, 1, 0, 2},
|
||||
[102001] = {3020601, 1, 20, 5, 0, 1, 8, 3},
|
||||
[102002] = {9040018, 1, 1, 1000, 11, 1, 11, 3},
|
||||
[103001] = {2001004, 1, 1, 3000, 11, 1, 0, 4},
|
||||
[103002] = {2001014, 1, 1, 3000, 15, 1, 0, 4},
|
||||
[103003] = {2001017, 1, 1, 2000, 21, 1, 0, 4},
|
||||
[103004] = {2001018, 1, 1, 3000, 21, 1, 0, 4},
|
||||
[103005] = {2001019, 1, 1, 4000, 21, 1, 0, 4},
|
||||
[103006] = {2001026, 1, 1, 25000, 27, 1, 0, 4},
|
||||
[200001] = {3010403, 1, 10, 20, 0, 2, 0, 1},
|
||||
[200002] = {3010402, 1, 10, 30, 0, 2, 0, 1},
|
||||
[200003] = {3020203, 1, 1, 50, 0, 2, 0, 1},
|
||||
[200004] = {3020406, 1, 20, 10, 0, 2, 0, 1},
|
||||
[200005] = {3020403, 1, 10, 15, 0, 2, 0, 1},
|
||||
[200006] = {3020402, 1, 5, 60, 0, 2, 0, 1},
|
||||
[200007] = {3020404, 1, 5, 100, 0, 2, 0, 1},
|
||||
[200008] = {3020528, 1, 5, 50, 0, 2, 0, 1},
|
||||
[200009] = {3020516, 1, 5, 50, 0, 2, 0, 1},
|
||||
[200010] = {3020411, 1, 1, 15, 0, 2, 0, 1},
|
||||
[200011] = {3020412, 1, 1, 200, 0, 2, 0, 1},
|
||||
[200012] = {3020509, 1, 1, 200, 0, 2, 0, 1},
|
||||
[200013] = {3020510, 1, 1, 200, 0, 2, 0, 1},
|
||||
[200014] = {10013001, 1, 20, 5, 0, 2, 0, 1},
|
||||
[200015] = {10013002, 1, 20, 25, 0, 2, 0, 1},
|
||||
[200016] = {10013003, 1, 20, 45, 0, 2, 0, 1},
|
||||
[200017] = {10013004, 1, 20, 100, 0, 2, 0, 1},
|
||||
[200018] = {10013005, 1, 20, 150, 0, 2, 0, 1},
|
||||
[200019] = {3910402, 1, 99, 85, 0, 2, 0, 1},
|
||||
[200020] = {3910103, 1, 99, 120, 0, 2, 0, 1},
|
||||
[200021] = {3910203, 1, 99, 120, 0, 2, 0, 1},
|
||||
[200022] = {3910305, 1, 99, 85, 0, 2, 0, 1},
|
||||
[200023] = {3920004, 1, 999, 50, 0, 2, 0, 1},
|
||||
[200024] = {3920006, 1, 999, 70, 0, 2, 0, 1},
|
||||
[200025] = {3920003, 1, 999, 115, 0, 2, 0, 1},
|
||||
[200026] = {3910005, 1, 99, 75, 0, 2, 0, 1},
|
||||
[200027] = {3910006, 1, 99, 90, 0, 2, 0, 1},
|
||||
[200028] = {3940011, 1, 20, 20, 0, 2, 0, 1},
|
||||
[200029] = {3940010, 1, 20, 30, 0, 2, 0, 1},
|
||||
[200030] = {3020504, 1, 1, 400, 15, 2, 0, 1},
|
||||
[200031] = {3020505, 1, 1, 400, 15, 2, 0, 1},
|
||||
[200032] = {3020506, 1, 1, 300, 31, 2, 0, 1},
|
||||
[201001] = {5030107, 1, 1, 350, 0, 2, 0, 2},
|
||||
[201002] = {5030207, 1, 1, 750, 0, 2, 0, 2},
|
||||
[201003] = {5030206, 1, 1, 1000, 0, 2, 0, 2},
|
||||
[201004] = {5030029, 1, 1, 1500, 0, 2, 0, 2},
|
||||
[201005] = {5030031, 1, 1, 2400, 0, 2, 0, 2},
|
||||
[201006] = {5030209, 1, 1, 3000, 0, 2, 0, 2},
|
||||
[201007] = {5030028, 1, 1, 4000, 0, 2, 0, 2},
|
||||
[201008] = {4020109, 1, 1, 800, 0, 2, 0, 2},
|
||||
[201009] = {4020106, 1, 1, 1000, 0, 2, 0, 2},
|
||||
[201010] = {4020008, 1, 1, 2200, 0, 2, 0, 2},
|
||||
[201011] = {4020305, 1, 1, 4000, 0, 2, 0, 2},
|
||||
[201012] = {4100005, 1, 1, 1000, 0, 2, 0, 2},
|
||||
[201013] = {4100109, 1, 1, 4000, 0, 2, 0, 2},
|
||||
[201014] = {8030035, 1, 1, 750, 0, 2, 0, 2},
|
||||
[201015] = {8030919, 1, 1, 750, 0, 2, 0, 2},
|
||||
[201016] = {8031821, 1, 1, 750, 0, 2, 0, 2},
|
||||
[201017] = {8032220, 1, 1, 750, 0, 2, 0, 2},
|
||||
[201018] = {9050029, 1, 1, 900, 0, 2, 0, 2},
|
||||
[201019] = {9050044, 1, 1, 1900, 0, 2, 0, 2},
|
||||
[201020] = {9040035, 1, 1, 950, 0, 2, 0, 2},
|
||||
[201021] = {9040025, 1, 1, 1500, 0, 2, 0, 2},
|
||||
[201022] = {8013202, 1, 1, 1000, 11, 2, 0, 2},
|
||||
[201023] = {8032602, 1, 1, 1000, 11, 2, 0, 2},
|
||||
[201024] = {8071302, 1, 1, 1000, 11, 2, 0, 2},
|
||||
[201025] = {8081702, 1, 1, 1000, 11, 2, 0, 2},
|
||||
[201026] = {8050148, 1, 1, 1200, 11, 2, 0, 2},
|
||||
[201027] = {8050244, 1, 1, 1200, 11, 2, 0, 2},
|
||||
[201028] = {8051222, 1, 1, 1200, 11, 2, 0, 2},
|
||||
[201029] = {8050029, 1, 1, 1200, 11, 2, 0, 2},
|
||||
[201030] = {8090707, 1, 1, 1200, 11, 2, 0, 2},
|
||||
[201031] = {4030710, 1, 1, 2500, 13, 2, 0, 2},
|
||||
[201032] = {4020211, 1, 1, 2500, 13, 2, 0, 2},
|
||||
[201033] = {4040407, 1, 1, 2500, 13, 2, 0, 2},
|
||||
[201034] = {4080213, 1, 1, 2500, 13, 2, 0, 2},
|
||||
[201035] = {4070215, 1, 1, 2500, 13, 2, 0, 2},
|
||||
[201036] = {5030113, 1, 1, 2500, 13, 2, 0, 2},
|
||||
[201037] = {5020014, 1, 1, 2500, 13, 2, 0, 2},
|
||||
[201038] = {4100608, 1, 1, 2000, 13, 2, 0, 2},
|
||||
[201039] = {8010566, 1, 1, 3000, 15, 2, 0, 2},
|
||||
[201040] = {8030625, 1, 1, 3000, 15, 2, 0, 2},
|
||||
[201041] = {8070724, 1, 1, 3000, 15, 2, 0, 2},
|
||||
[201042] = {8050618, 1, 1, 3000, 15, 2, 0, 2},
|
||||
[201043] = {8080715, 1, 1, 3000, 15, 2, 0, 2},
|
||||
[201044] = {4030016, 1, 1, 4500, 17, 2, 0, 2},
|
||||
[201045] = {4020012, 1, 1, 4500, 17, 2, 0, 2},
|
||||
[201046] = {4040111, 1, 1, 4500, 17, 2, 0, 2},
|
||||
[201047] = {4080010, 1, 1, 4500, 17, 2, 0, 2},
|
||||
[201048] = {4070013, 1, 1, 4500, 17, 2, 0, 2},
|
||||
[201049] = {5030308, 1, 1, 4500, 17, 2, 0, 2},
|
||||
[201050] = {5020113, 1, 1, 4500, 17, 2, 0, 2},
|
||||
[201051] = {4100507, 1, 1, 4000, 17, 2, 0, 2},
|
||||
[201052] = {8010567, 1, 1, 5000, 21, 2, 0, 2},
|
||||
[201053] = {8030626, 1, 1, 5000, 21, 2, 0, 2},
|
||||
[201054] = {8070725, 1, 1, 5000, 21, 2, 0, 2},
|
||||
[201055] = {8050619, 1, 1, 5000, 21, 2, 0, 2},
|
||||
[201056] = {8050768, 1, 1, 5000, 21, 2, 0, 2},
|
||||
[201057] = {8080716, 1, 1, 5000, 21, 2, 0, 2},
|
||||
[201058] = {8080564, 1, 1, 5000, 21, 2, 0, 2},
|
||||
[201059] = {8090506, 1, 1, 5000, 21, 2, 0, 2},
|
||||
[201060] = {9050025, 1, 1, 1000, 21, 2, 0, 2},
|
||||
[201061] = {9050026, 1, 1, 1000, 21, 2, 0, 2},
|
||||
[201062] = {9010025, 1, 1, 1000, 21, 2, 0, 2},
|
||||
[201063] = {4100806, 1, 1, 5500, 23, 2, 0, 2},
|
||||
[201064] = {8013617, 1, 1, 5500, 23, 2, 0, 2},
|
||||
[201065] = {8032822, 1, 1, 5500, 23, 2, 0, 2},
|
||||
[201066] = {8051517, 1, 1, 5500, 23, 2, 0, 2},
|
||||
[201067] = {8071522, 1, 1, 5500, 23, 2, 0, 2},
|
||||
[201068] = {9030061, 1, 1, 5500, 23, 2, 0, 2},
|
||||
[201069] = {9050068, 1, 1, 5500, 23, 2, 0, 2},
|
||||
[201070] = {8013618, 1, 1, 6000, 25, 2, 0, 2},
|
||||
[201071] = {8013619, 1, 1, 6000, 25, 2, 0, 2},
|
||||
[201072] = {8032823, 1, 1, 6000, 25, 2, 0, 2},
|
||||
[201073] = {8071523, 1, 1, 6000, 25, 2, 0, 2},
|
||||
[201074] = {8081915, 1, 1, 6000, 25, 2, 0, 2},
|
||||
[201075] = {9040066, 1, 1, 6000, 25, 2, 0, 2},
|
||||
[201076] = {9010062, 1, 1, 6000, 25, 2, 0, 2},
|
||||
[201077] = {4100807, 1, 1, 6500, 27, 2, 0, 2},
|
||||
[201078] = {4020409, 1, 1, 6500, 27, 2, 0, 2},
|
||||
[201079] = {4040509, 1, 1, 6500, 27, 2, 0, 2},
|
||||
[201080] = {4080509, 1, 1, 6500, 27, 2, 0, 2},
|
||||
[201081] = {4070409, 1, 1, 6500, 27, 2, 0, 2},
|
||||
[201082] = {5030409, 1, 1, 6500, 27, 2, 0, 2},
|
||||
[201083] = {5020409, 1, 1, 6500, 27, 2, 0, 2},
|
||||
[201084] = {4030605, 1, 1, 25000, 31, 2, 0, 2},
|
||||
[201085] = {4020405, 1, 1, 25000, 31, 2, 0, 2},
|
||||
[201086] = {4040505, 1, 1, 25000, 31, 2, 0, 2},
|
||||
[201087] = {4080505, 1, 1, 25000, 31, 2, 0, 2},
|
||||
[201088] = {4070405, 1, 1, 25000, 31, 2, 0, 2},
|
||||
[201089] = {5030405, 1, 1, 25000, 31, 2, 0, 2},
|
||||
[201090] = {5020405, 1, 1, 25000, 31, 2, 0, 2},
|
||||
[201091] = {8013205, 1, 1, 6000, 31, 2, 0, 2},
|
||||
[201092] = {8032605, 1, 1, 6000, 31, 2, 0, 2},
|
||||
[201093] = {8071305, 1, 1, 6000, 31, 2, 0, 2},
|
||||
[201094] = {8081705, 1, 1, 6000, 31, 2, 0, 2},
|
||||
[202001] = {3020603, 1, 20, 5, 0, 2, 8, 3},
|
||||
[202002] = {9040018, 1, 1, 1000, 11, 2, 11, 3},
|
||||
[203001] = {2001005, 1, 1, 3000, 11, 2, 0, 4},
|
||||
[203002] = {2001015, 1, 1, 3000, 15, 2, 0, 4},
|
||||
[203003] = {2001020, 1, 1, 2000, 21, 2, 0, 4},
|
||||
[203004] = {2001021, 1, 1, 3000, 21, 2, 0, 4},
|
||||
[203005] = {2001022, 1, 1, 4000, 21, 2, 0, 4},
|
||||
[203006] = {2001026, 1, 1, 25000, 27, 2, 0, 4},
|
||||
[300001] = {3010403, 1, 10, 20, 0, 3, 0, 1},
|
||||
[300002] = {3010402, 1, 10, 30, 0, 3, 0, 1},
|
||||
[300003] = {3020204, 1, 1, 50, 0, 3, 0, 1},
|
||||
[300004] = {3020406, 1, 20, 10, 0, 3, 0, 1},
|
||||
[300005] = {3020403, 1, 10, 15, 0, 3, 0, 1},
|
||||
[300006] = {3020402, 1, 5, 60, 0, 3, 0, 1},
|
||||
[300007] = {3020404, 1, 5, 100, 0, 3, 0, 1},
|
||||
[300008] = {3020528, 1, 5, 50, 0, 3, 0, 1},
|
||||
[300009] = {3020516, 1, 5, 50, 0, 3, 0, 1},
|
||||
[300010] = {3020411, 1, 1, 15, 0, 3, 0, 1},
|
||||
[300011] = {3020412, 1, 1, 200, 0, 3, 0, 1},
|
||||
[300012] = {3020509, 1, 1, 200, 0, 3, 0, 1},
|
||||
[300013] = {3020510, 1, 1, 200, 0, 3, 0, 1},
|
||||
[300014] = {10013001, 1, 20, 5, 0, 3, 0, 1},
|
||||
[300015] = {10013002, 1, 20, 25, 0, 3, 0, 1},
|
||||
[300016] = {10013003, 1, 20, 45, 0, 3, 0, 1},
|
||||
[300017] = {10013004, 1, 20, 100, 0, 3, 0, 1},
|
||||
[300018] = {10013005, 1, 20, 150, 0, 3, 0, 1},
|
||||
[300019] = {3910402, 1, 99, 85, 0, 3, 0, 1},
|
||||
[300020] = {3910103, 1, 99, 120, 0, 3, 0, 1},
|
||||
[300021] = {3910203, 1, 99, 120, 0, 3, 0, 1},
|
||||
[300022] = {3910305, 1, 99, 85, 0, 3, 0, 1},
|
||||
[300023] = {3920004, 1, 999, 50, 0, 3, 0, 1},
|
||||
[300024] = {3920006, 1, 999, 70, 0, 3, 0, 1},
|
||||
[300025] = {3920003, 1, 999, 115, 0, 3, 0, 1},
|
||||
[300026] = {3910005, 1, 99, 75, 0, 3, 0, 1},
|
||||
[300027] = {3910006, 1, 99, 90, 0, 3, 0, 1},
|
||||
[300028] = {3940011, 1, 20, 20, 0, 3, 0, 1},
|
||||
[300029] = {3940010, 1, 20, 30, 0, 3, 0, 1},
|
||||
[300030] = {3020504, 1, 1, 400, 15, 3, 0, 1},
|
||||
[300031] = {3020505, 1, 1, 400, 15, 3, 0, 1},
|
||||
[300032] = {3020506, 1, 1, 300, 31, 3, 0, 1},
|
||||
[301001] = {4030006, 1, 1, 400, 0, 3, 0, 2},
|
||||
[301002] = {4030015, 1, 1, 1000, 0, 3, 0, 2},
|
||||
[301003] = {4030405, 1, 1, 1600, 0, 3, 0, 2},
|
||||
[301004] = {4030506, 1, 1, 3200, 0, 3, 0, 2},
|
||||
[301005] = {4030505, 1, 1, 4000, 0, 3, 0, 2},
|
||||
[301006] = {4070011, 1, 1, 550, 0, 3, 0, 2},
|
||||
[301007] = {4070105, 1, 1, 1000, 0, 3, 0, 2},
|
||||
[301008] = {4070212, 1, 1, 1500, 0, 3, 0, 2},
|
||||
[301009] = {4070211, 1, 1, 4000, 0, 3, 0, 2},
|
||||
[301010] = {4100710, 1, 1, 450, 0, 3, 0, 2},
|
||||
[301011] = {4100403, 1, 1, 1000, 0, 3, 0, 2},
|
||||
[301012] = {4100404, 1, 1, 1900, 0, 3, 0, 2},
|
||||
[301013] = {4100306, 1, 1, 4000, 0, 3, 0, 2},
|
||||
[301014] = {8030248, 1, 1, 750, 0, 3, 0, 2},
|
||||
[301015] = {8030548, 1, 1, 750, 0, 3, 0, 2},
|
||||
[301016] = {8031021, 1, 1, 750, 0, 3, 0, 2},
|
||||
[301017] = {8031513, 1, 1, 750, 0, 3, 0, 2},
|
||||
[301018] = {9050029, 1, 1, 900, 0, 3, 0, 2},
|
||||
[301019] = {9050044, 1, 1, 1900, 0, 3, 0, 2},
|
||||
[301020] = {9040036, 1, 1, 950, 0, 3, 0, 2},
|
||||
[301021] = {9040025, 1, 1, 1500, 0, 3, 0, 2},
|
||||
[301022] = {8013203, 1, 1, 1000, 11, 3, 0, 2},
|
||||
[301023] = {8032603, 1, 1, 1000, 11, 3, 0, 2},
|
||||
[301024] = {8071303, 1, 1, 1000, 11, 3, 0, 2},
|
||||
[301025] = {8081703, 1, 1, 1000, 11, 3, 0, 2},
|
||||
[301026] = {8050520, 1, 1, 1200, 11, 3, 0, 2},
|
||||
[301027] = {8051024, 1, 1, 1200, 11, 3, 0, 2},
|
||||
[301028] = {8050345, 1, 1, 1200, 11, 3, 0, 2},
|
||||
[301029] = {8050449, 1, 1, 1200, 11, 3, 0, 2},
|
||||
[301030] = {8090708, 1, 1, 1200, 11, 3, 0, 2},
|
||||
[301031] = {4030305, 1, 1, 2500, 13, 3, 0, 2},
|
||||
[301032] = {4020011, 1, 1, 2500, 13, 3, 0, 2},
|
||||
[301033] = {4040208, 1, 1, 2500, 13, 3, 0, 2},
|
||||
[301034] = {4080306, 1, 1, 2500, 13, 3, 0, 2},
|
||||
[301035] = {4070012, 1, 1, 2500, 13, 3, 0, 2},
|
||||
[301036] = {5030037, 1, 1, 2500, 13, 3, 0, 2},
|
||||
[301037] = {5020217, 1, 1, 2500, 13, 3, 0, 2},
|
||||
[301038] = {4100112, 1, 1, 2000, 13, 3, 0, 2},
|
||||
[301039] = {8011522, 1, 1, 3000, 15, 3, 0, 2},
|
||||
[301040] = {8030744, 1, 1, 3000, 15, 3, 0, 2},
|
||||
[301041] = {8070361, 1, 1, 3000, 15, 3, 0, 2},
|
||||
[301042] = {8050766, 1, 1, 3000, 15, 3, 0, 2},
|
||||
[301043] = {8080562, 1, 1, 3000, 15, 3, 0, 2},
|
||||
[301044] = {4030408, 1, 1, 4500, 17, 3, 0, 2},
|
||||
[301045] = {4020113, 1, 1, 4500, 17, 3, 0, 2},
|
||||
[301046] = {4040306, 1, 1, 4500, 17, 3, 0, 2},
|
||||
[301047] = {4080409, 1, 1, 4500, 17, 3, 0, 2},
|
||||
[301048] = {4070311, 1, 1, 4500, 17, 3, 0, 2},
|
||||
[301049] = {5030210, 1, 1, 4500, 17, 3, 0, 2},
|
||||
[301050] = {5020307, 1, 1, 4500, 17, 3, 0, 2},
|
||||
[301051] = {4100712, 1, 1, 4000, 17, 3, 0, 2},
|
||||
[301052] = {8011523, 1, 1, 5000, 21, 3, 0, 2},
|
||||
[301053] = {8030745, 1, 1, 5000, 21, 3, 0, 2},
|
||||
[301054] = {8070362, 1, 1, 5000, 21, 3, 0, 2},
|
||||
[301055] = {8050811, 1, 1, 5000, 21, 3, 0, 2},
|
||||
[301056] = {8050767, 1, 1, 5000, 21, 3, 0, 2},
|
||||
[301057] = {8080015, 1, 1, 5000, 21, 3, 0, 2},
|
||||
[301058] = {8080563, 1, 1, 5000, 21, 3, 0, 2},
|
||||
[301059] = {8090709, 1, 1, 5000, 21, 3, 0, 2},
|
||||
[301060] = {9050023, 1, 1, 1000, 21, 3, 0, 2},
|
||||
[301061] = {9050024, 1, 1, 1000, 21, 3, 0, 2},
|
||||
[301062] = {9010025, 1, 1, 1000, 21, 3, 0, 2},
|
||||
[301063] = {4100808, 1, 1, 5500, 23, 3, 0, 2},
|
||||
[301064] = {8013620, 1, 1, 5500, 23, 3, 0, 2},
|
||||
[301065] = {8032824, 1, 1, 5500, 23, 3, 0, 2},
|
||||
[301066] = {8051518, 1, 1, 5500, 23, 3, 0, 2},
|
||||
[301067] = {8071524, 1, 1, 5500, 23, 3, 0, 2},
|
||||
[301068] = {9030062, 1, 1, 5500, 23, 3, 0, 2},
|
||||
[301069] = {9050069, 1, 1, 5500, 23, 3, 0, 2},
|
||||
[301070] = {8013621, 1, 1, 6000, 25, 3, 0, 2},
|
||||
[301071] = {8013622, 1, 1, 6000, 25, 3, 0, 2},
|
||||
[301072] = {8032825, 1, 1, 6000, 25, 3, 0, 2},
|
||||
[301073] = {8071525, 1, 1, 6000, 25, 3, 0, 2},
|
||||
[301074] = {8081916, 1, 1, 6000, 25, 3, 0, 2},
|
||||
[301075] = {9040067, 1, 1, 6000, 25, 3, 0, 2},
|
||||
[301076] = {9010063, 1, 1, 6000, 25, 3, 0, 2},
|
||||
[301077] = {4100809, 1, 1, 6500, 27, 3, 0, 2},
|
||||
[301078] = {4020410, 1, 1, 6500, 27, 3, 0, 2},
|
||||
[301079] = {4040510, 1, 1, 6500, 27, 3, 0, 2},
|
||||
[301080] = {4080510, 1, 1, 6500, 27, 3, 0, 2},
|
||||
[301081] = {4070410, 1, 1, 6500, 27, 3, 0, 2},
|
||||
[301082] = {5030410, 1, 1, 6500, 27, 3, 0, 2},
|
||||
[301083] = {5020410, 1, 1, 6500, 27, 3, 0, 2},
|
||||
[301084] = {4030606, 1, 1, 25000, 31, 3, 0, 2},
|
||||
[301085] = {4020406, 1, 1, 25000, 31, 3, 0, 2},
|
||||
[301086] = {4040506, 1, 1, 25000, 31, 3, 0, 2},
|
||||
[301087] = {4080506, 1, 1, 25000, 31, 3, 0, 2},
|
||||
[301088] = {4070406, 1, 1, 25000, 31, 3, 0, 2},
|
||||
[301089] = {5030406, 1, 1, 25000, 31, 3, 0, 2},
|
||||
[301090] = {5020406, 1, 1, 25000, 31, 3, 0, 2},
|
||||
[301091] = {8013206, 1, 1, 6000, 31, 3, 0, 2},
|
||||
[301092] = {8032606, 1, 1, 6000, 31, 3, 0, 2},
|
||||
[301093] = {8071306, 1, 1, 6000, 31, 3, 0, 2},
|
||||
[301094] = {8081706, 1, 1, 6000, 31, 3, 0, 2},
|
||||
[302001] = {3020602, 1, 20, 5, 0, 3, 8, 3},
|
||||
[302002] = {9040018, 1, 1, 1000, 11, 3, 11, 3},
|
||||
[303001] = {2001006, 1, 1, 3000, 11, 3, 0, 4},
|
||||
[303002] = {2001016, 1, 1, 3000, 15, 3, 0, 4},
|
||||
[303003] = {2001023, 1, 1, 2000, 21, 3, 0, 4},
|
||||
[303004] = {2001024, 1, 1, 3000, 21, 3, 0, 4},
|
||||
[303005] = {2001025, 1, 1, 4000, 21, 3, 0, 4},
|
||||
[303006] = {2001026, 1, 1, 25000, 27, 3, 0, 4},
|
||||
}
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
skipGCcheck = 1; -- 0 No, 1 Yes
|
||||
playerGC = player.gcCurrent;
|
||||
playerGCSeal = 1000200 + playerGC;
|
||||
playerCurrentRank = 13;
|
||||
npcId = npc:GetActorClassId();
|
||||
|
||||
if (playerGC == gcOfficer[npcId] or skipGCcheck == 1) then
|
||||
callClientFunction(player, "eventTalkPreJoin");
|
||||
--player:SendMessage(0x20, "", "[Info]: Client takes awhile to load GC shops");
|
||||
while (true) do
|
||||
|
||||
eventTalkChoice = callClientFunction(player, "eventTalkMainMenu", 8, 11);
|
||||
--player:SendMessage(0x20, "", "eventTalkMainMenu: " .. tostring(eventTalkChoice));
|
||||
|
||||
if (eventTalkChoice == 1) then
|
||||
t1, t2, t3 = callClientFunction(player, "eventShopMenuOpen");
|
||||
|
||||
--player:SendMessage(0x20, "", "eventShopMenuOpen: " .. tostring(t1) .. ", ".. tostring(t2) .. ", ".. tostring(t3));
|
||||
|
||||
while (true) do
|
||||
-- TODO: ADD RANK CHECK, CITY CHECK, AND RANGE CHECK
|
||||
|
||||
buyResult, buyIndex = callClientFunction(player, "eventShopMenuAsk");
|
||||
|
||||
if (buyIndex == -1) then
|
||||
callClientFunction(player, "eventShopMenuClose");
|
||||
break;
|
||||
else
|
||||
-- [index] = { itemID, itemQuality, itemQuantity, itemCost gcRank, city, special, itemCategory }
|
||||
if (shopInfo[buyIndex][8] == 4) then
|
||||
location = INVENTORY_KEYITEMS;
|
||||
else
|
||||
location = INVENTORY_NORMAL;
|
||||
end
|
||||
end
|
||||
|
||||
purchaseItem(player, shopInfo[buyIndex][1], shopInfo[buyIndex][3], shopInfo[buyIndex][2], shopInfo[buyIndex][4], playerGCSeal, location);
|
||||
end
|
||||
|
||||
--player:SendMessage(0x20, "", "Player picked an item at gcSealShopIndex " .. tostring(buyResult) .. ", ".. tostring(buyIndex));
|
||||
|
||||
elseif (eventTalkChoice == -1) then
|
||||
break;
|
||||
end
|
||||
end
|
||||
else
|
||||
callClientFunction(player, "eventTalkStepCantUse");
|
||||
end
|
||||
callClientFunction(player, "eventTalkStepBreak");
|
||||
player:endEvent();
|
||||
end
|
||||
|
||||
|
||||
function purchaseItem(player, itemId, quantity, quality, price, currency, location)
|
||||
|
||||
local worldMaster = GetWorldMaster();
|
||||
local cost = quantity * price;
|
||||
local gItemData = GetItemGamedata(itemId);
|
||||
local isUnique = gItemData.isRare;
|
||||
|
||||
if player:GetInventory(location):HasItem(itemId) and isUnique 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);
|
||||
return;
|
||||
end
|
||||
|
||||
if (not player:GetInventory(location):IsFull() or player:GetInventory(location):IsSpaceForAdd(itemId, quantity)) then
|
||||
if player:GetInventory(INVENTORY_CURRENCY):HasItem(currency, cost) then
|
||||
player:GetInventory(INVENTORY_CURRENCY):removeItem(currency, cost)
|
||||
player:GetInventory(location):AddItem(itemId, quantity, quality);
|
||||
if currency == 1000001 then
|
||||
-- You purchase <quantity> <itemId> <quality> for <cost> gil.
|
||||
player:SendGameMessage(player, worldMaster, 25061, MESSAGE_TYPE_SYSTEM, itemId, quality, quantity, cost);
|
||||
elseif currency == 1000201 or currency == 1000202 or currency == 1000203 then
|
||||
-- You exchange <quantity> <GC seals> for <quantity> <itemId> <quality>.
|
||||
player:SendGameMessage(player, GetWorldMaster(), 25275, MESSAGE_TYPE_SYSTEM, itemId, quality, quantity, price, player.gcCurrent);
|
||||
|
||||
end
|
||||
else
|
||||
-- You do not have enough gil. (Should never see this aside from packet injection, since client prevents buying if not enough currency)
|
||||
player:SendGameMessage(player, worldMaster, 25065, MESSAGE_TYPE_SYSTEM);
|
||||
end
|
||||
else
|
||||
-- Your inventory is full.
|
||||
player:SendGameMessage(player, worldMaster, 60022, MESSAGE_TYPE_SYSTEM);
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -5,20 +5,118 @@ PopulaceCompanyWarp Script
|
|||
Functions:
|
||||
|
||||
eventTalkWelcome(player) - Start Text
|
||||
eventAskMainMenu(player, index) - Shows teleport menu
|
||||
eventAskMainMenu(player, index) - Shows teleport menu, hides the teleport location at index value to prevent warping to the spot you're at
|
||||
eventAfterWarpOtherZone(player) - Fades out for warp
|
||||
eventTalkStepBreak() - Ends talk
|
||||
--]]
|
||||
|
||||
require ("global")
|
||||
|
||||
warpNpc =
|
||||
{ --[actorId] = {warpIndex, cityId} -- ()s around name indicate missing NPC + Aethernet
|
||||
[1500321] = {1, 1}, -- (Storm Private Gardner)
|
||||
[1500331] = {2, 1}, -- (Storm Private Rich)
|
||||
[1500323] = {3, 1}, -- (Storm Private Potter)
|
||||
[1500330] = {4, 1}, -- (Storm Private Hunt)
|
||||
[1500322] = {5, 1}, -- (Storm Private Abel)
|
||||
[1500332] = {6, 1}, -- (Storm Private Stone)
|
||||
[1500339] = {7, 1}, -- (Storm Private Holt)
|
||||
[1500324] = {1, 2}, -- serpent_private_white
|
||||
[1500334] = {2, 2}, -- serpent_private_hill
|
||||
[1500326] = {3, 2}, -- serpent_private_carver
|
||||
[1500333] = {4, 2}, -- serpent_private_stone
|
||||
[1500325] = {5, 2}, -- serpent_private_holmes
|
||||
[1500335] = {6, 2}, -- serpent_private_kirk
|
||||
[1500327] = {1, 3}, -- flame_private_newton
|
||||
[1500337] = {2, 3}, -- (Flame Private Tanner)
|
||||
[1500329] = {3, 3}, -- (Flame Private Morning)
|
||||
[1500336] = {4, 3}, -- (Flame Private Covey)
|
||||
[1500328] = {5, 3}, -- flame_private_allen
|
||||
[1500338] = {6, 3}, -- (Flame Private Yar)
|
||||
}
|
||||
|
||||
aethernet =
|
||||
{
|
||||
{ -- 1: Limsa
|
||||
{zone = 230, x = -424.140, y = 42.000, z = 371.988, r = -2.472}, -- 1 - Aetheryte Plaza
|
||||
{zone = 133, x = -439.744, y = 40.000, z = 234.376, r = 0.287}, -- 2 - Drowning Wench
|
||||
{zone = 230, x = -498.131, y = 43.622, z = 60.818, r = 0.254}, -- 3 - The Bismarck
|
||||
{zone = 230, x = -759.331, y = 12.000, z = 239.413, r = -0.869}, -- 4 - Ferry Docks
|
||||
{zone = 230, x = -623.582, y = 4.000, z = 369.318, r = 1.736}, -- 5 - Fisherman's Bottom
|
||||
{zone = 230, x = -525.536, y = 18.000, z = 173.735, r = 3.082}, -- 6 - The Octant
|
||||
{zone = 133, x = -231.711, y = 12.000, z = 193.573, r = -0.786}, -- 7 - Procession of Terns
|
||||
{zone = 128, x = -20.783, y = 42.214, z = 146.946, r = 2.046}, -- 8 - Zephyr Gate
|
||||
},
|
||||
{ -- 2: Gridania
|
||||
{zone = 206, x = -107.878, y = 17.524, z = -1343.871, r = 0.657}, -- 1 - Aetheryte Plaza
|
||||
{zone = 155, x = 96.868, y = 3.480, z = -1211.040, r = 2.582}, -- 2 - Carline Canopy
|
||||
{zone = 206, x = 86.942, y = 19.789, z = -1420.891, r = 2.965}, -- 3 - Atelier Fen-Yil
|
||||
{zone = 206, x = -84.621, y = 19.061, z = -1502.665, r = 0.756}, -- 4 - Whistling Miller
|
||||
{zone = 206, x = 205.101, y = 9.526, z = -1245.405, r = -1.749}, -- 5 - Quiver's Hold
|
||||
{zone = 206, x = 160.578, y = 25.061, z = -1556.662, r = 1.896}, -- 6 - Wailing Barracks
|
||||
{zone = 150, x = 318.838, y = 4.036, z = -992.071, r = -0.307}, -- 7 - Mistalle Bridges
|
||||
{zone = 206, x = -192.167, y = 4.466, z = -1061.777, r = -0.026}, -- 8 - Berlends Bridges
|
||||
},
|
||||
{ -- 3: Ul'dah
|
||||
{zone = 175, x = -190.574, y = 190.000, z = 18.086, r = 2.190}, -- 1 - Aetheryte Plaza
|
||||
{zone = 175, x = -36.513, y = 192.000, z = 37.130, r = -0.490}, -- 2 - Quicksand
|
||||
{zone = 209, x = -192.971, y = 230.000, z = 209.348, r = 2.860}, -- 3 - Frondale's Phrontistery
|
||||
{zone = 209, x = -60.243, y = 200.000, z = 257.718, r = -1.276}, -- 4 - Onyx Lane
|
||||
{zone = 209, x = -147.633, y = 198.000, z = 160.064, r = -1.600}, -- 5 - Gold Court
|
||||
{zone = 209, x = -263.776, y = 202.000, z = 206.699, r = -3.135}, -- 6 - Arrzaneth Ossuary
|
||||
{zone = 170, x = -29.721, y = 182.635, z = -76.313, r = 2.625}, -- 7 - Gate of Nald
|
||||
{zone = 170, x = 129.957, y = 183.862, z = 220.719, r = 1.515}, -- 8 - Gate of Thal
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function init(npc)
|
||||
return false, false, 0, 0;
|
||||
end
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
|
||||
callClientFunction(player, "eventAskMainMenu", player, 1);
|
||||
|
||||
player:EndEvent();
|
||||
end
|
||||
local passLimsa = 2001014;
|
||||
local passGrid = 2001015;
|
||||
local passUldah = 2001016;
|
||||
passCheck = 1; -- 0 = Check player for Aetherpass keyitem. 1 = Ignore it.
|
||||
|
||||
npcId = npc:GetActorClassId();
|
||||
city = warpNpc[npcId][2];
|
||||
|
||||
|
||||
if city == 1 then
|
||||
if player:GetInventory(INVENTORY_KEYITEMS):HasItem(passLimsa) then
|
||||
passCheck = 1;
|
||||
else
|
||||
if passCheck == 0 then callClientFunction(player, "eventTalkWelcome", player); end
|
||||
end;
|
||||
elseif city == 2 then
|
||||
if player:GetInventory(INVENTORY_KEYITEMS):HasItem(passGrid) then
|
||||
passCheck = 1;
|
||||
else
|
||||
if passCheck == 0 then callClientFunction(player, "eventTalkWelcome", player); end
|
||||
end;
|
||||
elseif city == 3 then
|
||||
if player:GetInventory(INVENTORY_KEYITEMS):HasItem(passUldah) then
|
||||
passCheck = 1;
|
||||
else
|
||||
if passCheck == 0 then callClientFunction(player, "eventTalkWelcome", player); end
|
||||
end
|
||||
end
|
||||
|
||||
if passCheck == 1 then
|
||||
choice = callClientFunction(player, "eventAskMainMenu", player, warpNpc[npcId][1]);
|
||||
|
||||
if choice == 0 then
|
||||
--callClientFunction(player, "playereventTalkStepBreak");
|
||||
player:EndEvent();
|
||||
else
|
||||
-- callClientFunction(player, "eventAfterWarpOtherZone", player); -- Commented out for now to prevent double fade-to-black for warp
|
||||
player:EndEvent();
|
||||
GetWorldManager():DoZoneChange(player, aethernet[city][choice].zone, nil, 0, 15, aethernet[city][choice].x, aethernet[city][choice].y, aethernet[city][choice].z, aethernet[city][choice].r);
|
||||
end
|
||||
end
|
||||
|
||||
player:EndEvent();
|
||||
end
|
||||
|
|
|
@ -39,6 +39,11 @@ function onEventStarted(player, npc, triggerName)
|
|||
|
||||
--Create
|
||||
if (result == 3) then
|
||||
|
||||
player:SendMessage(0x20, "", "" .. tostring(lsName));
|
||||
player:SendMessage(0x20, "", "" .. tostring(crestId));
|
||||
player:SendMessage(0x20, "", "" .. tostring(command));
|
||||
|
||||
createLinkshell(lsName, crestId);
|
||||
callClientFunction(player, "eventTalkStepMakeupDone");
|
||||
--Modify
|
||||
|
|
|
@ -78,8 +78,7 @@ end
|
|||
|
||||
function callClientFunction(player, functionName, ...)
|
||||
player:RunEventFunction(functionName, ...);
|
||||
result = coroutine.yield("_WAIT_EVENT", player);
|
||||
return result;
|
||||
return coroutine.yield("_WAIT_EVENT", player);
|
||||
end
|
||||
|
||||
function wait(seconds)
|
||||
|
|
Loading…
Add table
Reference in a new issue