铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 957|回复: 6

關於DIY的源碼幾個問題

[复制链接]
发表于 2012-11-20 18:45 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x

請問在 LDCR.lua 這個文件裡

看到有好幾個地方的機率亂數是以
JLSD(30,60,eid) 這樣的方式設定 30%
可是又有些地方是以
math.random(100) <= 15 這樣的方式設定 15%
都是亂數機率的用法,請問是差在哪呢 ??

另外請問  JLSD(30,60,eid) 裡的 JLSD 是指什麼呢 ?
30,60,eid 又是什麼意思呢 ?
照整個LDCR文件的用法來看似乎是指 敵人ID 的意思 ?
那 30,60 的部分分別又是什麼呢 ?

另外請問
看了基本教程裡關於選單的製作
只有簡單提到直式跟橫式選單的語法說明
那如果想做成類似 前傳 裡的環狀選單要怎樣調用函數呢 ?
想把戰鬥選單及平常選單調整一下

不好意思~~因為平常都是玩各位大神做的金群MOD
現在想來自己做看看 XDD
因此問題比較多~~

另外請問,因為我是台灣玩家
我使用 Upedit 的時候叫出來的物品名稱人物名字等都是亂碼
設定裡調成 前傳GBK 或 原版BIG5 都一樣亂碼
我用了 applocale 開 UPedit 成簡體中文版也是一樣
請問這有解決的方式嗎 ?



【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-11-20 19:40 | 显示全部楼层
看繁体字累啊

JLSD=几率设定
和random相比更严谨,一般多用在功体触发的判定上。

JLSD(30,60,eid) 的意思是
被攻击的人(eid)触发的几率是(60-30)%
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-11-21 02:54 | 显示全部楼层
本帖最后由 fina 于 2012-11-21 02:57 编辑


感谢慕容兄及nino兄的解答
那另外请教
同样是随机数,为何JLSD 会比math.random 严谨 ?
不都是随机数吗 ?
且机率为什么会有像30,90 40-60 这样的数字取舍 ?
又差在哪 ?
为何不直接统一以 0,60 0,20 来设定 60% 20% ??


再请教,环状选单需要重写函数
那请问有相关关于选单的设定函数可以参考研究吗 ?
因为板上教程只介绍了关于直式及横式选单的参数意义
但没找到有关如何设定选单大小、位置等的设定教程~~
最后,我用UPedit 时已去抓了苍炎的ini 但不确定是否能用在山寨江湖上因为用了苍炎的ini 檔后开还是乱码~~还是能请问哪里有山寨江湖的ini 檔可以使用吗 ?

不好意思,第一次尝试自己写,问题比较多

这次有用 word 繁转简,造成困扰不好意思

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-11-20 22:32 | 显示全部楼层
强烈推荐用JLSD...我现在无比后悔当初贪快用了n多的math.random...

乱码说不定是upedit.ini文件不相配导致读取错误?

环状菜单需要自己重写菜单函数了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-11-21 09:31 | 显示全部楼层
JLSD中,我方根据资质高低会有6(正负3)的几率加成,敌方则有10(正负5)的几率加成,
所以JLSD(x,y,id)中的X不能为0
各种内功会同时触发,所以设定几率时最好能用不同区间的JLSD。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-11-21 20:54 | 显示全部楼层
本帖最后由 慕容老恭 于 2012-11-21 21:22 编辑

手头没有源码,只能省略的答一下了。
JLSD不必纠结,区间的差值设为概率值就OK了。
addeffect(WAR.LB, pid, 3) --WAR.LB=凌波,pid=使用的人,3 代表此特效次数。
至于lib.Delay(100),你把100换成1000 就知道是那部分的延迟了。

点评

感謝解答~~我先試做看看~~  发表于 2012-11-21 22:53
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-11-21 16:36 | 显示全部楼层
本帖最后由 fina 于 2012-11-21 18:06 编辑

回复 慕容老恭 的帖子


不好意思再请教,那各种机率触发的数字区间取舍是如何决定的 ?
比如什么情况要设20,40 这样,又什么情况要设成30,80 这样
数字区间错开是代表无法同时触发吗 ?
所以假如两个内功一个A设为 20,40 一个B设为 20,50
就代表同时触发两个内功的机率为20%
B30%机率里有 10% 的机率是不会与 A 同时触发的意思吗 ?

假设我想调整内功的作用及触发机率要从何去设定数字区间呢 ?
另外,我想修改某些特效触发状况以山寨江湖的逍遥派指令里有个凌波的作法为主
希望做出可以在敌人攻击文字出现后,攻击特效动画未出现前
可以让被攻击的人物做出某种特定对应的动作
因此从LDCR文件里找出一段关于门派指令的设定


elseif mptype == 7 then --逍遥派指令

if JY.Person[pid]["体力"] < 15 or JY.Person[pid]["内力"] < 300 then
menu[1][3] =0
end
if JY.Person[pid]["体力"] < 20 or WAR.LB[pid] ~= nil then
menu[2][3] =0
end
r =ShowMenu(menu,#menu,0,CC.MainSubMenuX,CC.MainSubMenuY+CC.SingleLineHeight,0,0,1,1,CC.DefaultFont,C_ORANGE,C_WHITE);
if r == 1then
Cls()

for e = 0,WAR.PersonNum - 1 do
localtmppid = WAR.Person[e]["人物编号
ifWAR.Person[e]["死亡"]== false then
addeffect(WAR.BZ,tmppid, 1)
iftmppid == pid then
addeffect(WAR.BZ,tmppid, 2)
end
end
end

DHdisplay(1694,1705, "唯不争,故天下莫能与之争")
AddPersonAttrib(pid,"体力",-15)
AddPersonAttrib(pid,"内力",-300)
elseif r == 2then

addeffect(WAR.LB,pid, 3)
DHdisplay(1345,1364, CC.EVB174)
AddPersonAttrib(pid,"体力",-20)
end
if r > 0then
return 1
end
这里的r==2 代表选择凌波的指令后会执行的特效
但其中调用了函式库addeffect(WAR.LB, pid, 3) , 这里的 pid,3 是指攻击方的ID ?, 3又是指什么呢 ?
在经过搜寻后找到应该为此效果作用的源码


if WAR.ACT == 1 then --dodge

for i = 0, CC.WarWidth- 1 do
for j = 0,CC.WarHeight - 1 do

local effect = GetWarMap(i, j, 4)

ifeffect > 0 then
localtmpem = GetWarMap(i, j, 2)


iftmpem > -1 and WAR.Person[tmpem]["人物编号"] ~= nil


and MPPD(WAR.Person[tmpem]["
人物编号"]) == 7

and WAR.LB[WAR.Person[tmpem]["
人物编号"]] ~= nil

and WAR.LBPD[WAR.Person[tmpem]["
人物编号"]] == nil


then

reseteffect(WAR.LB,WAR.Person[tmpem]["人物编号"])
WAR.LBPD[WAR.Person[tmpem]["人物编号"]] = 1

lib.Delay(50)
localtmppid = WAR.CurID

WAR.CurID= tmpem
localtmpmove = WAR.Person[WAR.CurID]["移动步数

WAR.Person[WAR.CurID]["移动步数"] = 5

DIYdisplay(CC.NTalk3)
lib.Delay(100)
DIYdisplay(CC.NTalk4)
War_MoveMenu()
WAR.Person[WAR.CurID]["移动步数"] = tmpmove
WAR.CurID= tmppid
lib.Delay(200)


end

end

end

end


end


此部分由于找不到批注,
因此想请问关于这段指令的细节部分WAR.CurID很多地方能看到,
似乎是指目前行动的人物ID?
lib.Delay(100) 这部分就看不懂
是指某种情况下延迟执行指令吗 ??
effect里的 WAR.LB 似乎也是某个调用函式库的名称但我找不到关于WAR.LB 的细节设定


不好意思~~诸多问题还请指教~~


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-11-27 07:28

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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