-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
function LotteryType6576SelectNumber(list, max_count) --- Lottery Used@20070618 (神木宝盒) 请注意这里的数字 6576 这个是el物品id 脚本就是通过这个id控制
local NumList={1,2,3,4} --- 这里设置的是列表,相信反映快点马上就知道是干什么的了
local NumChance={360,360,360,180} --- 这行本人比较愚钝 不知道干吗的 也期望别的大大知道的给我补上
return NumList[ZLottery_Get_RanPoint(NumChance)]
end
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
各位看清上面这段必加 加的位置 相信只要稍微用点脑的人都马上就能看出来的
下面我们找该文件的另外一处 这一处也是必须添加的
---------------------------------------------------- 完美的分割线 -----------------------------------------
-------------------------------------------------------------------------------------------------------------
function LotteryType6576Cashing(cur_list) ---(神木宝盒) 修改这里的id数值 改为el自己的
---fmax_count为该cp的有效位数
local cp
local nowcurlist={}
local fmax_count=table.getn(cur_list)
nowcurlist[0]=""
for cp=1,fmax_count do
nowcurlist[cp]=nowcurlist[cp-1]..cur_list[cp]
end
local lot_prize={}
local lot_prizechance={}
local prizeout
local Out_Prize={}
Out_Prize[1]={}
Out_Prize[2]={}
Out_Prize[3]={}
Out_Prize[4]={}
-----------------------------------------------------------------------------------------------------------这下面一段是控制抽奖物品id的 修改
Out_Prize[1][4713]=100 --神木骰
for k=1,4 do
lot_prize[k]={}
lot_prizechance[k]={}
end
for k=1,4 do
for i,v in pairs(Out_Prize[k]) do
table.insert(lot_prize[k],i)
table.insert(lot_prizechance[k],v)
end
end
if nowcurlist[fmax_count]=="444" then
prizeout=lot_prize[1][ZLottery_Get_RanPoint(lot_prizechance[1])]
return 1,0,prizeout,1,0,0
elseif ZLottery_FindSameNum(cur_list,4)==2 or nowcurlist[fmax_count]=="333" or nowcurlist[fmax_count]=="222" or nowcurlist[fmax_count]=="111" then
prizeout=lot_prize[2][ZLottery_Get_RanPoint(lot_prizechance[2])]
return 2,0,prizeout,1,0,0
elseif ZLottery_FindSameNum(cur_list,4)==1 then
prizeout=lot_prize[3][ZLottery_Get_RanPoint(lot_prizechance[3])]
return 3,0,prizeout,2,0,0
else
return 4,0,1807,1,0,0
end
return 4,0,1807,1,0,0
end
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
而另外一种是原诛仙的 在程序最开头处
目前我就发现这两种调整抽奖几率的代码
我认为这两种模式 一个是总控 一个是单控 而单控灵活是诛仙2的 更加灵活(也更加黑)
我把总控的这个发出来下面的就是
说实话下面代码没看太懂 就不做啥品论了 有人能看懂的补贴或者发我这里论坛的邮箱都成
----出现几率正态化-------------------------------------------------------------------------------------------
function ZLottery_Chance_Norm(n1)
local n1_size=table.getn(n1)
local Total_Chance=0
local i,k,m
---先求和
for i=1,n1_size do
Total_Chance=n1+Total_Chance
end
---生成概率组序列
local nx={}
for k=1,n1_size do
if k==1 then
nx[1]=n1[k]
else
nx[k]=n1[k]+nx[k-1]
end
end
---再生产标准化的概率组序列
local n2={}
for m=1,n1_size do
if Total_Chance==0 then ---对于全0序列的处理,返回{1,0,0...}
n2[m]=0
n2[1]=1
else
n2[m]=nx[m]/ Total_Chance
end
end
---返回一个概率序列
---ZLuaTal_Special_Print(n2) ---$$$$测试用$$$$-----
return n2
end
-------------------------------------------------------------------------------------------------------------
----按照出现概率随机应该选取的位置---------------------------------------------------------------------------
function ZLottery_Get_RanPoint(s1)
local js,ron1
ron1= math.random()
---print("---------------------------") ---$$$$测试用$$$$-----
---print("Now the random Num is:",ron1) ---$$$$测试用$$$$-----
local p1=ZLottery_Chance_Norm(s1)
for js=1,table.getn(p1) do
if ron1<=p1[js] then
---print("So We Choose:",js) ---$$$$测试用$$$$-----
return js
end
end
return 1
end
-------------------------------------------------------------------------------------------------------------
---找到S1中a数字的个数---------------------------------------------------------------------------------------
function ZLottery_FindSameNum(s1,a)
local i,j
j=0
for i=1,table.getn(s1) do
if s1==a then
j=j+1
end
end
return j
end