195 lines
6.6 KiB
Plaintext
195 lines
6.6 KiB
Plaintext
--<2D><><EFBFBD>ܸ<EFBFBD><DCB8>ʵķ<CAB5>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
|
||
|
||
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
--#include "data/config/item/scriptItemConfig/ProabilityItem.txt" once
|
||
|
||
|
||
--[[
|
||
--<2D><><EFBFBD><EFBFBD><EFBFBD>ܸ<EFBFBD><DCB8><EFBFBD>Roll<6C><6C>Ʒ
|
||
--sysarg:ʵ<><CAB5><EFBFBD>ָ<EFBFBD><D6B8>
|
||
--itemidx: <20><>Ʒ<EFBFBD><C6B7>ID
|
||
--itemPtr: <20><>Ʒ<EFBFBD><C6B7>ָ<EFBFBD><D6B8>
|
||
--ItemTable: <20><><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĻ<C3B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
||
--]]
|
||
function ProbablityItemFunc(sysarg,count,itemidx,itemPtr,ItemTable) --<2D><>ʱδ<CAB1>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>count<6E>ֶμ<D6B6><CEBC>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
if(itemidx == nil) then
|
||
System.trace ("ProbablityItemFunc itemidx ==nil")
|
||
return
|
||
end
|
||
--print ("ProbablityItemFunc"..itemidx)
|
||
--<2D><>ȡ<EFBFBD><C8A1><EFBFBD>Ŀǰ<C4BF>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8>ո<EFBFBD><D5B8>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
|
||
local config =ItemTable
|
||
if(config == nil) then
|
||
System.trace("ProbablityItemFunc config is nill")
|
||
return
|
||
end
|
||
-- <20><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>D<EFBFBD><EFBCA4>ſ<EFBFBD>ʹ<EFBFBD><CAB9>
|
||
if config.needRideActivited and not IsRideActivited(sysarg) then
|
||
return
|
||
end
|
||
|
||
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵı<CFB5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
local count = Item.getAllBagMinEmptyGridCount(sysarg)
|
||
--local count = Item.getBagEmptyGridCount(sysarg)
|
||
local needGridCount=1 --<2D><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
||
if( config.needMinBagGrid ~= nil) then
|
||
needGridCount = config.needMinBagGrid
|
||
end
|
||
|
||
if needGridCount and count < needGridCount then
|
||
local tipMsg = string.format(OldLang.ScriptTips.x00074,needGridCount)
|
||
Actor.sendTipmsg( sysarg,tipMsg,ttFlyTip )
|
||
return false
|
||
end
|
||
|
||
-- <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
local nYb = Actor.getIntProperty(sysarg,PROP_ACTOR_YUANBAO)
|
||
local needYb = 0
|
||
if config.needYuanBao and config.needYuanBao > 0 then
|
||
needYb = config.needYuanBao
|
||
if nYb < needYb then
|
||
Actor.sendTipmsg( sysarg,OldLang.Script.comm005, ttFlyTip )
|
||
return false
|
||
end
|
||
local itemName = Item.getItemName(config.item_id);
|
||
if not Actor.changeMoney(sysarg, 3, -needYb, 842, itemName) then
|
||
local msg = string.format(OldLang.Script.comm004, needYb, itemName);
|
||
Actor.sendTipmsg( sysarg, msg, ttFlyTip );
|
||
return false;
|
||
end
|
||
end
|
||
|
||
|
||
--<2D>ж<EFBFBD><D0B6><EFBFBD>Ʒ<EFBFBD><C6B7>Ҫ<EFBFBD><D2AA><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>Ŀ
|
||
local nNeedItemCount = ItemTable.itemCount
|
||
if(nNeedItemCount == nil) then
|
||
nNeedItemCount =1
|
||
end
|
||
if( Actor.getItemCount(sysarg,itemidx,-1,-1) < nNeedItemCount) then
|
||
local tipMsg = string.format(OldLang.ScriptTips.x00140,nNeedItemCount)
|
||
Actor.sendTipmsg( sysarg,tipMsg,ttFlyTip )
|
||
return false
|
||
end
|
||
|
||
local consumes = {}
|
||
|
||
if config.consumes and table.getn(config.consumes) > 0 then
|
||
for k, v in ipairs(config.consumes) do
|
||
table.insert(consumes, v)
|
||
end
|
||
end
|
||
|
||
local consume = {type = 0, id = itemidx, count = nNeedItemCount}
|
||
table.insert(consumes, consume)
|
||
|
||
--[[
|
||
if CommonFunc.Consumes.SuccessCheck(sysarg, consumes) ~= successCheckResult.ok then
|
||
return false
|
||
end
|
||
]]
|
||
|
||
--<2D><>Ҫrollһ<6C><D2BB><EFBFBD><EFBFBD>Ʒ
|
||
local dropName = "proability"..tostring(itemidx) --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
local drop = System.getObjectVar(dropName)
|
||
if (not drop) then
|
||
System.trace("getObjectVar is nil"..itemidx)
|
||
return
|
||
end
|
||
|
||
local items = drop:proabilityDrop(sysarg)
|
||
if ( items.itemCount > 0) then
|
||
for i = items.itemCount - 1, 0, -1 do
|
||
local result = Actor.canGiveAward(sysarg,
|
||
items.itemList[i].btAwardType,
|
||
items.itemList[i].wItemId,
|
||
items.itemList[i].btCount,
|
||
items.itemList[i].btQuality,
|
||
items.itemList[i].btStrong,
|
||
items.itemList[i].btBind,
|
||
true)
|
||
if not result then
|
||
return false
|
||
end
|
||
end
|
||
end
|
||
|
||
--<2D><><EFBFBD><EFBFBD><EFBFBD>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD>Ʒ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>ɾ<EFBFBD><C9BE>
|
||
--if (config.needDelete and (Actor.removeItem(sysarg,itemidx,nNeedItemCount,-1,-1,-1,"Roll",2) ~=nNeedItemCount) ) then --ɾ<><C9BE><EFBFBD><EFBFBD>Ʒʧ<C6B7><CAA7>
|
||
--[[
|
||
local bBind = 1
|
||
local result = successCheckResult.otherLack
|
||
if (config.needDelete) then
|
||
result, bBind = Consumes.OnConsumes(sysarg, consumes, 0, 0, 2, "ProabilityItem Roll")
|
||
if result ~= successCheckResult.ok then
|
||
return false
|
||
end
|
||
end
|
||
]]
|
||
|
||
--[[
|
||
<09><>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tips<70>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD><E2A3AC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||
Item.addItem(sysarg,itemPtr,"roll",1,items.itemList[i].btCount)
|
||
if(items.itemList[i].btAuxParam ==1) then
|
||
local itemDes = Item.getItemLinkMsg(items.itemList[i].wItemId,itemPtr)
|
||
local tipMsg = string.format(OldLang.ScriptTips.x00085,Actor.getName(sysarg),Item.getItemName(itemidx), itemDes ) --Ҫȫ<D2AA><C8AB><EFBFBD>㲥
|
||
System.broadcastTipmsg(tipMsg,ttScreenCenter )
|
||
end
|
||
--]]
|
||
|
||
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>Ʒ
|
||
|
||
if ( items.itemCount > 0) then
|
||
for i=0, items.itemCount -1 do
|
||
if config.infectBind == nil or config.infectBind ~= true then
|
||
bBind = items.itemList[i].btBind
|
||
end
|
||
|
||
Actor.giveAward(sysarg,
|
||
items.itemList[i].btAwardType,
|
||
items.itemList[i].wItemId,
|
||
items.itemList[i].btCount,
|
||
items.itemList[i].btQuality,
|
||
items.itemList[i].btStrong,
|
||
bBind,
|
||
items.itemList[i].nTime,
|
||
1,"roll")
|
||
if(items.itemList[i].btAuxParam ==1) then
|
||
local count = items.itemList[i].btCount
|
||
local name = Item.getAwardDesc(items.itemList[i].btAwardType,items.itemList[i].wItemId,true,items.itemList[i])
|
||
if(name ~= nil and name ~= "") then
|
||
|
||
if(items.itemList[i].btAwardType == 20) then --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD>
|
||
count = Actor.getActivityExp(sysarg,items.itemList[i].wItemId,items.itemList[i].btCount,items.itemList[i].btQuality)
|
||
end
|
||
local tipMsg = string.format(OldLang.ScriptTips.x00085,Actor.getName(sysarg),Item.getItemName(itemidx), name,count ) --Ҫȫ<D2AA><C8AB><EFBFBD>㲥
|
||
System.broadcastTipmsg(tipMsg,ttScreenCenter + ttChatWindow)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return true
|
||
end
|
||
|
||
--<2D><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۺϱ<DBBA><CFB1><EFBFBD>Ʒ
|
||
function InitProabilityDropItem(sysarg)
|
||
-- <20><>ȡ"data/config/item/scriptItemConfig/ProabilityItem.txt"<22>ı<EFBFBD>ProabolityItemConfig
|
||
for i = 1,table.getn(ProabolityItemConfig) do
|
||
local x = ProabolityItemConfig[i]
|
||
|
||
GlobalItemFn[x.item_id] = { func = ProbablityItemFunc,params =x }
|
||
|
||
--<2D>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ȫ<EFBFBD><C8AB>װ<EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD> ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱȥ<CAB1><C8A5><EFBFBD><EFBFBD>
|
||
local dropName = "proability"..tostring(x.item_id)
|
||
local boxdrop = System.getObjectVar(dropName)
|
||
if (not boxdrop) then
|
||
boxdrop = CBoxDropMgr:getSingleton():createBoxDrop(dropName) -- <20><><EFBFBD><EFBFBD>᷵<EFBFBD><E1B7B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(CBoxDrop)
|
||
end
|
||
if(boxdrop) then
|
||
boxdrop:load(x.dropName) -- <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
table.insert(InitFnTable,InitProabilityDropItem) |