找回密码
 立即注册

[其他] 诛仙抽奖脚本编辑

[复制链接]
lxb1101 发表于 2022-11-5 05:05:31 | 显示全部楼层 |阅读模式
1首先想添加抽奖箱子,必须加的两段代码 以神木宝箱为例,就是那个抽神木法宝的

-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
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为该彩票的有效位数
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 --神木骰

Out_Prize[2][6473]=100 --月华之灵

Out_Prize[3][3988]=100 --回城符
Out_Prize[3][3991]=100
Out_Prize[3][6430]=100
Out_Prize[3][3989]=100
Out_Prize[3][3990]=100
Out_Prize[3][3992]=100

Out_Prize[4][1807]=100 --太一轮

local i,v,k

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


以上两端内容缺一不可 分别复制在lottery.lua的不同位置中。修改好后上传 然后再el里面添加物品 将这些文件传入服务器 就开服自己试试吧


有关轮盘抽奖几率的猜想

在lottery.lua文件中有两次方式调整几率 不过这些只是我的个人猜想 毕竟我不精通java

-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
function LotteryType24343SelectNumber(list, max_count)   --- Lottery Used@20090211(天衮靛石:獬豸)
local PriceChance = {25,450,4000}                      -- 一二三等奖概率(单位:万分之)

☆☆☆☆☆☆从这里往下倒end 都可以调整几率我认为完美真黑

PriceChance[4] = 10000 - PriceChance[1] - PriceChance[2] - PriceChance[3]  --     四等奖概率(单位:万分之)   ☆☆☆☆☆☆这一行是中奖总几率
subChance = {}
local subSum = {}
☆☆☆☆☆☆从这里往下4行  大括号内数值我认为也是  只不过分属作用不同

subChance[1] = {100}        -- 一等奖内部相对概率(1号)
subChance[2] = {2,1,1,1,1,1,2}   -- 二等奖内部相对概率(3号,5号,7号,9号,11号,13号,15号)
subChance[3] = {25,25,25,25}    -- 三等奖内部相对概率(4号,6号,12号,14号)
subChance[4] = {2,5,5,8}      -- 四等奖内部相对概率(2号,8号,10号,16号)

for j=1,4 do
  subSum[j] = 0
  for i,_ in pairs(subChance[j]) do
   subSum[j] = subSum[j] + subChance[j]
  end
end

local NumList = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
local NumChance =
{
  PriceChance[1],              PriceChance[4]*subChance[4][1]/subSum[4],
  PriceChance[2]*subChance[2][1]/subSum[2], PriceChance[3]*subChance[3][1]/subSum[3],
  PriceChance[2]*subChance[2][2]/subSum[2], PriceChance[3]*subChance[3][2]/subSum[3],
  PriceChance[2]*subChance[2][3]/subSum[2], PriceChance[4]*subChance[4][2]/subSum[4],
  PriceChance[2]*subChance[2][4]/subSum[2], PriceChance[4]*subChance[4][3]/subSum[4],
  PriceChance[2]*subChance[2][5]/subSum[2], PriceChance[3]*subChance[3][3]/subSum[3],
  PriceChance[2]*subChance[2][6]/subSum[2], PriceChance[3]*subChance[3][4]/subSum[3],
  PriceChance[2]*subChance[2][7]/subSum[2], PriceChance[4]*subChance[4][4]/subSum[4],
}
return NumList[ZLottery_Get_RanPoint(NumChance)]
end
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------

以上这种抽奖模式诛仙2的  因为422以后的很多抽奖盒我都没见过 ☆☆☆☆☆☆[size=5五角星的位置都是可能需要修改点

而另外一种是原诛仙的   在程序最开头处
目前我就发现这两种调整抽奖几率的代码
我认为这两种模式 一个是总控 一个是单控 而单控灵活是诛仙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

tuoeroo 发表于 2022-11-5 07:51:50 | 显示全部楼层
淡定,淡定,淡定……
回复

使用道具 举报

58421604 发表于 2022-11-6 01:32:04 | 显示全部楼层
我只是路过打酱油的。
回复

使用道具 举报

myselfjo 发表于 2022-11-7 18:04:54 | 显示全部楼层
真是被感动的痛哭流涕……
回复

使用道具 举报

cbkfun 发表于 2022-11-8 00:35:10 | 显示全部楼层
强烈支持楼主ing……
回复

使用道具 举报

124875772 发表于 2022-11-8 15:41:41 | 显示全部楼层
楼主加油,我们都看好你哦。
回复

使用道具 举报

qusi1nide4t 发表于 2022-11-8 17:35:30 | 显示全部楼层
真是难得给力的帖子啊。
回复

使用道具 举报

jhc 发表于 2022-11-8 22:07:53 | 显示全部楼层
感恩无私的分享与奉献
回复

使用道具 举报

mikeshinoda 发表于 2022-11-9 17:08:06 | 显示全部楼层
太生气了,无法HOLD啦 >_<......
回复

使用道具 举报

kuake2002 发表于 2022-11-10 12:56:46 | 显示全部楼层
看到这帖子真是高兴!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|游戏淘宝湾

GMT+8, 2024-11-21 19:50 , Processed in 0.054954 second(s), 53 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024, Oddpp Cloud.

快速回复 返回顶部 返回列表