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