99Max综合娱乐网站(旧版)

 找回密码
 立即注册
查看: 8298|回复: 20

[教程] RO脚本制作教程之随机获得道具物品写法【转】

[复制链接]

升级   0%

发表于 2010-7-21 22:37:20 | 显示全部楼层 |阅读模式
这个是制作一个物品,使用之后可随机获得一个道具, 就是像神秘箱子这样,而且也能自己设定机率、获得的道具。

﹝DB部份﹞
前略,{ callfunc "random_item","db/xxx.txt"; },{}

callfunc "random_item" 使用呼叫方式呼叫random_item(自定义)。
"db/xxx.txt"; 读取自己设定的文件。

﹝脚本部份﹞
function   script   random_item   {
  do
    {
    csvreadarray getarg(0),rand(csvgetrows(getarg(0))),@a[0];
    if(rand(10000)<@a[1])
        {
          getitem @a[0],1;
          set @c,1;
        }
    }while(
!@c);
}


﹝DB部份2﹞
在 db 资料夹内新增一个 xxx.txt 档案(档名自定),其内部格式为:
物品编号,万分率
例如:501,5000
也就是红色药水有50%的机率可得到。

由以上方式可写出自己所定义的箱子,其实原本档案里面也有很多可以使用(1~15种),
但是如果为了维护方便、不想去修改原本的档案,就可以以这种方式来使用,
也可以修改成将数量采用随机的方式获得。
这种方式也能衍生出另一种写法:脚本NPC获得物品。
若是物品想要随机获得,也能使用此方式来写,
当脚本很庞大、不易维护的时候,以这种方式可以很方便的修改物品的获得与机率。
温馨提示:
1. 本站模拟器源于网络,经 99Max.mE 二次开发,仅供个人学习娱乐使用,切勿用于商业用途,否则后果自负!
2. 如需更好体验游戏内容,请前往官方游戏!不具备合法的运营模式,都是强盗,请勿擅自搭建私服!
3. 如本站内容有侵犯您的权益,请发送信息至QQ:372607220 或 EMAIL:372607220@qq.com ,我们会及时删除。

升级   0%

 楼主| 发表于 2010-7-21 22:40:02 | 显示全部楼层
[教程] RO脚本教程之以机率方式让物品使用成功或失败【转】
以机率方式让物品使用成功或失败在自己制作物品时,如果想要让物品有变化、有成功失败的机率,可以使用以下方式,范例是有机率重置角色所有素质:

前略,{ set @st,rand(1,100); if(@st<=7) { misceffect 492; misceffect 514; resetstatus;} },{}
set @st,rand(1,100); 设定变数 st,并且导入1~100之间的其中一个数字。
if(@st<=7) { misceffect 492; misceffect 514; resetstatus;} 如果 st 变数内的数字小于等于7,则执行后面的程式码,包括misceffect 效果、resetstatus 重置素质指令。

以上范例是在使用物品后,有7%的机率能成功将角色素直重置,其他代表失败不发生任何事情。

也可以加入失败之后的效果、惩罚等等....
例如:if(@st>=8) { misceffect 018; set Zeny,Zeny+rand( -10000,-100000);}
代表若是 st 变数内的数字大于等于8时,则会有misceffect 效果以及扣除角色1万至10万不等的金钱。

甚至也可以使用机率方式来让物品有不同的效果,
例如 在0~20%时会回复500HP、21~50%时会回复300SP、51~80%会增加金钱10万、81~100%会在30分钟内经验值增加2倍;
或是 在0~20%可使用5级加速术、21~50%可使用10级加速术、51~80%可使用5级天使之赐福、81~100%可使用10级天使之赐福等等....
在不同的机率时拥有不同的功能效果,让物品可以有更多元的变化,而不是都固定只有同样的效果。

升级   0%

发表于 2010-7-21 22:43:49 | 显示全部楼层
好东西我要顶

升级   0%

 楼主| 发表于 2010-7-21 22:56:00 | 显示全部楼层
本帖最后由 kaji 于 2010-7-21 23:01 编辑

RO脚本教学之announce 用法【转】

announce 可以在脚本、物品内使用,用法:

announce "讯息",标记,颜色编号;
范例:announce "欢迎光临",15,0xDDA0DD;

"欢迎光临", 在此处输入要显示的讯息
15, 代表显示的方式效果,数值范围从0~31都可,以下列出常用数值:


效果

[td=1,1,21%]

编号



黄色字,当前地图可见

[td=1,1,21%]

1



黄色字,人物周围可见

[td]

2



黄色字,本人可见

[td]

3



黄色字,全伺服器可见

[td]

0、15



蓝色字,当前地图可见

[td]

17



蓝色字,人物周围可见

[td]

18



蓝色字,本人可见

[td]

19



蓝色字,全伺服器可见

[td]

16、31




本帖隐藏的内容需要回复才可以浏览其中0xDDA0DD;代表的是颜色码DDA0DD,对应HTML的色码,可以自己定义喜欢的颜色显示,大小写不限制。

可以在脚本的某一段、达成任务、显示重要讯息等等的....地方使用此指令,
也可在讯息内加入一些指令,例如:
announce "很抱歉,("+strcharinfo(0)+")你的装备爆炸了!",15,0xFFFFFF;
代表的是在全伺服器以白色字(FFFFFF)显示该角色名字的讯息 "很抱歉,某某某你的装备爆炸了!"
也可以加进变数来做出更有变化的讯息。



而也能使用另一种方式,将讯息显示在对话栏里,而不一定要像announce显示在画面以及对话栏内:
dispbottom "讯息";
范例:dispbottom "获得 红色药水1瓶。";
讯息内的方式和announce相同,不同的是这方式无法自定颜色,且只会显示在个人的对话栏内,
对于想要画面较整洁的话,使用此方式会比较好看一点。
而以奶油的观点来说,此种指令蛮适合用在物品上、announce较适合脚本使用。










RO脚本教程之装备在到达条件后,增加额外的效果【转】 较简单

若要写当某装备到达指定的限制条件时,会有额外的效果,可以参考以下范例: 前略,{},{ bonus bStr,1; if(readparam(bVit)>50) bonus bAgi,3; }
bonus bStr,1; 装备原本的效果(STR+1)。
if(readparam(bVit)>50) bonus bAgi,3;  若角色VIT大于50,则额外增加AGI+3效果。
※readparam()里面的参数可以参考 const.txt 档案。 条件有很多种,可以参考以下ㄧ些范例: if(getequipid(4)==1101 当右手(4)部位有装备上短剑(1101)时。if(getequiprefinerycnt(2)>=9) 当身体(2)装备精炼值大于等于9的时候 if(Class==N) 限定职业N(职业编号),或是反过来不是某些职业时 if(Class!=N)。 if(equippeditem(4001)==0) 侦测物品编号4001的波利卡片(装备也可以)是否有安装。 if(getskilllv(28)>8) 当治愈术(28)等级大于8级时。 checkweight(501,20) 当角色身上携带红色药水(501)数量20个时。getequipisequiped(6) 当角色有装备鞋子(6)时。 getequipweaponlv((3)>2) 当左手(3)武器等级大于2时。
由以上范例可以做出在某些条件下,所会变化的效果,而效果也不ㄧ定都是要好的,
也可以变成不好(例如当VIT超过30之后,HP会减少10%...),甚至是可以同一个装备
依照不同素质、职业等等的条件,而有不同的效果或是加成。



升级   41.1%

发表于 2010-7-22 20:57:40 | 显示全部楼层
好东西,值得一学。

升级   65.25%

发表于 2010-7-23 12:38:20 | 显示全部楼层
好东西..顶顶

升级   48.15%

发表于 2010-11-14 15:43:10 | 显示全部楼层
学习了~~正需要呢~!

升级   44.8%

发表于 2010-11-15 11:04:09 | 显示全部楼层
吸收中~~1!!

升级   100%

群组: JRO日本客户端

发表于 2010-11-15 16:20:23 | 显示全部楼层
顶了!!!

升级   69.33%

发表于 2011-1-23 19:49:55 | 显示全部楼层
头疼的脚本语言~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|99Max综合娱乐网站(旧版) ( 沪ICP备11024206号-1 )

GMT+8, 2024-11-24 10:25 , Processed in 0.429602 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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