Files
chuanqi-server/server/s1/LogicServer/data/functions/ItemEvent/ProabilityItem.txt
aixianling 06658f112f init
2024-12-13 13:41:02 +08:00

195 lines
6.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--<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><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)