195 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
--<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) |