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

 找回密码
 立即注册
查看: 1349|回复: 6

[脚本求助] 一生一叹一痕沙 求改一下脚本(限制NPC对华)怎么改都错

[复制链接]

升级   100%

群组: JRO日本客户端

发表于 2012-4-21 20:59:17 | 显示全部楼层 |阅读模式
本帖最后由 boboli 于 2012-4-21 21:06 编辑

我只会用goto 的脚本格式 抱歉  帮我看下我脚本那里出错

变量我全部用粉色标注  
先说下我希望的流程:当玩家身上无道具号6049或道具号6039时,执行A段对白,该对话所有玩家均可启动,无对话限制,当A玩家身上有道具6049或6039时,执行B段或C段对白,然后召唤出砸蛋的3个”蛋“NPC后,此时,其他玩家B在A玩家未与蛋NPC对话抽取道具,蛋消失之前,均会得到提示D段对白。A玩家在蛋NPC召唤出后,未与蛋对话,继续与捣蛋的狸猫对话,产生E段对白,与蛋NPC对话抽取道具,蛋消失后,任务流程完成。玩家A及其他所有玩家可重新持道具6049或6039启动任务流程。

但下面写的脚本,问题是,当A玩家结束流程后,包括其他玩家在内,重新与捣蛋的狸猫对话,对话都停留在D段对白上,请问是怎么搞的,我改了好多遍改不对,已经有点混乱了。



itemmall,185,65,3        script        捣蛋的狸猫        543,{
if (.DaoDan == 1 && ZaDan == 0 ) goto DaoDan;
if (ZaDan == 1 && .DaoDan == 1) goto ZaDan_1;
if (countitem(6049) >0 && ZaDan < 1 && .DaoDan == 0 ) goto LanQiangYu;
if (countitem(6039) > 9  && ZaDan <1 && .DaoDan == 0 goto YuWei;
========A段对白==========
mes "[捣蛋的狸猫]";
mes "鱼,蓝枪鱼,看的到吃不到呀";
mes "帮我钓一条蓝枪鱼上来给我";
mes "吃的话,我就跟你玩一个游戏";
mes "如果钓不到,那么给我10条鱼尾也是可以的哇";
close;
========A段对白结束============
LanQiangYu:
menu "给它一条蓝枪鱼",LanQiangYu_1,"不给它",-;
emotion 32;
close;
========B段对白================
LanQiangYu_1:
set .DaoDan,1;
emotion 18;
mes "[捣蛋的狸猫]";
mes "啊,蓝枪鱼,真的给我吗?。";
mes "那我不客气咯";
mes "恩恩  真好吃啊";
next;
mes "[捣蛋的狸猫]";
mes "好吧";
mes "就跟你玩个游戏吧";
next;
enablenpc "蛋#1";
enablenpc "蛋#2";
enablenpc "蛋#3";
mes "[捣蛋的狸猫]";
mes "在面前有3个蛋,其中一个藏有宝贝";
mes "当然你只有1次选择机会";
mes "好好想想打碎那一个吧";
mes "祝你好运咯";
set ZaDan,1;
delitem 6049,1;
close;
===========B段对白结束=============
YuWei:
menu "给它10条鱼尾",YuWei_1,"不给它",-;
emotion 28;
close;
==============C段对白=============
YuWei_1:
set .DaoDan,1;
emotion 15;
mes "[捣蛋的狸猫]";
mes "那么多鱼尾全部给我吃吗?";
mes "虽然没有蓝枪鱼,但那么多鱼尾也不错的哟";
mes "蓝枪鱼真的非常稀少啊";
next;
mes "[捣蛋的狸猫]";
mes "好吧";
mes "就跟你玩个游戏吧";
next;
enablenpc "蛋#1";
enablenpc "蛋#2";
enablenpc "蛋#3";
mes "[捣蛋的狸猫]";
mes "在面前有3个蛋,其中一个藏有宝贝";
mes "当然你只有1次选择机会";
mes "好好想想打碎那一个吧";
mes "祝你好运咯";
set ZaDan,1;
delitem 6039,10;
close;
============C段对白结束==============

===============E段对白=================
ZaDan_1:
mes "[捣蛋的狸猫]";
set @ZaDan,rand (1,3);
mes "怎么?";
mes "不知道砸开那一个吗?";
mes "那么,试着砸开第"+@ZaDan+"个蛋试试呢?";
mes "不过,我不保证里面有宝物哦";
mes "嘿嘿";
close;
==================E段对白结束===========
OnTimer20000:
        set .i,rand(3);
        switch(.i) {
        case 0:        npctalk "美味的蓝枪鱼呀!"; break;
        case 1:        npctalk "怎么鱼还不上钩呀!!"; break;
        case 2:        npctalk "好想吃,好想吃鱼啊啊?!"; break;
        }
        initnpctimer;
        end;

OnInit:
        initnpctimer;
        end;

================D段对白================
DaoDan:
mes "[捣蛋的狸猫]";
mes "好想吃鱼啊 为什么鱼儿老不上钩?";
mes "帮我一起钓鱼吧?";
mes "给我吃蓝枪鱼 我就很你玩游戏";
mes " ";
mes " ^F06EAA捣蛋狸猫在玩游戏,请稍后!^000000";
close;
=============D段对白结束===============
}


==============砸蛋部分===============
itemmall,182,63,3        script        蛋#1        463,{
if (ZaDan > 0) goto ZaDan_2;        //NPC出现后,判断,未执行喂鱼的玩家无法与蛋对话
end;
ZaDan_2:
set .DaoDan,0;
set @dan,rand(100);
if (@dan >=0 && @dan <= 50 ) getitem 605,1;
if (@dan >=51 && @dan <= 100 )  {npctalk"真遗憾,什么都没有!";}
disablenpc "蛋#1";
disablenpc "蛋#2";
disablenpc "蛋#3";
set ZaDan,0;
end;

OnInit:
        disablenpc "蛋#1";
        end;
}

itemmall,184,63,3        script        蛋#2        463,{
if (ZaDan > 0) goto ZaDan_3;      //NPC出现后,判断,未执行喂鱼的玩家无法与蛋对话
end;
ZaDan_3:
set .DaoDan,0;
set @dan,rand(100);
if (@dan >=0 && @dan <= 50 ) getitem 605,1;
if (@dan >=51 && @dan <= 100 ) {npctalk"真遗憾,什么都没有!";}
disablenpc "蛋#1";
disablenpc "蛋#2";
disablenpc "蛋#3";
set ZaDan,0;
end;
OnInit:
        disablenpc "蛋#2";
        end;
}

itemmall,186,63,3        script        蛋#3        463,{
if (ZaDan > 0) goto ZaDan_4;      //NPC出现后,判断,未执行喂鱼的玩家无法与蛋对话
end;
ZaDan_4:
set .DaoDan,0;
set @dan,rand(100);
if (@dan >=0 && @dan <= 50 ) getitem 605,1;
if (@dan >=51 && @dan <= 100 ) {npctalk"真遗憾,什么都没有!";}
disablenpc "蛋#1";
disablenpc "蛋#2";
disablenpc "蛋#3";
set ZaDan,0;
end;
OnInit:
        disablenpc "蛋#3";
        end;
}
===========================================
温馨提示:
1. 本站模拟器源于网络,经 99Max.mE 二次开发,仅供个人学习娱乐使用,切勿用于商业用途,否则后果自负!
2. 如需更好体验游戏内容,请前往官方游戏!不具备合法的运营模式,都是强盗,请勿擅自搭建私服!
3. 如本站内容有侵犯您的权益,请发送信息至QQ:372607220 或 EMAIL:372607220@qq.com ,我们会及时删除。

升级   0%

发表于 2012-4-21 23:14:51 | 显示全部楼层
本帖最后由 一生一叹一痕沙 于 2012-4-21 23:22 编辑

itemmall,185,65,3        script        捣蛋的狸猫        543,{
        if ((countitem(6049) > 0 || countitem(6039) > 9) && ZaDan < 1 && .DaoDan == 0 ) goto weiyu;
        if (ZaDan == 1 && .DaoDan == 1) goto ZaDan_1;
        if (.DaoDan == 1 && ZaDan == 0 ) goto DaoDan;
        mes "[捣蛋的狸猫]";
        mes "鱼,蓝枪鱼,看的到吃不到呀";
        mes "帮我钓一条蓝枪鱼上来给我";
        mes "吃的话,我就跟你玩一个游戏";
        mes "如果钓不到,那么给我10条鱼尾也是可以的哇";
        close;

weiyu:
        menu "不给它",-,"给它一条蓝枪鱼",LanQiangYu,"给它10条鱼尾",YuWei;
                emotion 32;
                close;
        LanQiangYu:
                emotion 18;
                mes "[捣蛋的狸猫]";
                mes "啊,蓝枪鱼,真的给我吗?。";
                mes "那我不客气咯";
                mes "恩恩  真好吃啊";
                next;
                mes "[捣蛋的狸猫]";
                mes "好吧";
                mes "就跟你玩个游戏吧";
                next;
                mes "[捣蛋的狸猫]";
                mes "在面前有3个蛋,其中一个藏有宝贝";
                mes "当然你只有1次选择机会";
                mes "好好想想打碎那一个吧";
                mes "祝你好运咯";
                close2;
                set ZaDan,1;
                delitem 6049,1;
                enablenpc "蛋#1";
                enablenpc "蛋#2";
                enablenpc "蛋#3";
                end;
        YuWei:
                emotion 15;
                mes "[捣蛋的狸猫]";
                mes "那么多鱼尾全部给我吃吗?";
                mes "虽然没有蓝枪鱼,但那么多鱼尾也不错的哟";
                mes "蓝枪鱼真的非常稀少啊";
                next;
                mes "[捣蛋的狸猫]";
                mes "好吧";
                mes "就跟你玩个游戏吧";
                next;
                mes "[捣蛋的狸猫]";
                mes "在面前有3个蛋,其中一个藏有宝贝";
                mes "当然你只有1次选择机会";
                mes "好好想想打碎那一个吧";
                mes "祝你好运咯";
                close2;
                set ZaDan,1;
                delitem 6049,1;
                enablenpc "蛋#1";
                enablenpc "蛋#2";
                enablenpc "蛋#3";
                end;


ZaDan_1:
        mes "[捣蛋的狸猫]";
        set .@Za,rand (1,3);
        mes "怎么?";
        mes "不知道砸开那一个吗?";
        mes "那么,试着砸开第"+.@Za+"个蛋试试呢?";
        mes "不过,我不保证里面有宝物哦";
        mes "嘿嘿";
        close;

DaoDan:
        mes "[捣蛋的狸猫]";
        mes "好想吃鱼啊 为什么鱼儿老不上钩?";
        mes "帮我一起钓鱼吧?";
        mes "给我吃蓝枪鱼 我就和你玩游戏";
        mes " ";
        mes " ^F06EAA捣蛋狸猫在玩游戏,请稍后!^000000";
        close;

OnReset:
        set .Daodan,0;
        end;


OnTimer20000:
        set .i,rand(3);
        switch(.i) {
        case 0:        npctalk "美味的蓝枪鱼呀!"; break;
        case 1:        npctalk "怎么鱼还不上钩呀!!"; break;
        case 2:        npctalk "好想吃,好想吃鱼啊啊?!"; break;
        }
        initnpctimer;
        end;

OnInit:
        initnpctimer;
        end;

}


itemmall,182,63,3        script        蛋#1        463,{
        callfunc "Dan";
}

itemmall,184,63,3        script        蛋#2        463,{
        callfunc "Dan";
}

itemmall,186,63,3        script        蛋#3        463,{
        callfunc "Dan";
}


function        script        Dan        {
        if (ZaDan > 0) goto ZaDan_2;        //NPC出现后,判断,未执行喂鱼的玩家无法与蛋对话
                end;
ZaDan_2:
        set .@dan,rand(100);
        if (.@dan >=0 && .@dan <= 50 ) getitem 605,1;
        if (.@dan >=51 && .@dan <= 100 )  { npctalk"真遗憾,什么都没有!";}
        disablenpc "蛋#1";
        disablenpc "蛋#2";
        disablenpc "蛋#3";
        donpcevent "捣蛋的狸猫::OnReset";
        set ZaDan,0;
        end;

OnInit:
        disablenpc "蛋#1";
        disablenpc "蛋#2";
        disablenpc "蛋#3";
        end;
}




问题出在蛋脚本上
.Daodan这个变量只有在捣蛋的狸猫身上有效果,放到蛋上去执行就和捣蛋的狸猫没关系了,那是蛋的变量,不是狸猫的变量,所以就再和狸猫说话是就无法判断在狸猫脚本里.Daodan的变化
红色是添加的  蓝色的是修改的 有些地方帮你整合起来了

还有以后问问题,不要指名,这样怪怪的,看到了懂得话会帮忙解决的

评分

2

查看全部评分

升级   100%

群组: JRO日本客户端

 楼主| 发表于 2012-4-22 09:00:31 | 显示全部楼层
还有以后问问题,不要指名,这样怪怪的,看到了懂得话会帮忙解决的

好的好的

非常感谢

升级   100%

群组: JRO日本客户端

 楼主| 发表于 2012-4-22 09:36:03 | 显示全部楼层
本帖最后由 boboli 于 2012-4-22 09:45 编辑

为什么在第一次启动游戏时  蛋NPC是出现的?但任务流程完成后 蛋会消失  再启动时再出现,然后再消失。

另外脚本对玩家携带道具的种类 数量判断有点混乱如身上有1个6049 1个6039  也可以选择喂需要数量10个的鱼尾。诸如此类的,之后就有点乱了试着在LanQiangYu和YuWei后加上判断道具数量和对白后,还是有问题,我已经无法表达清楚了


而且在玩家喂过鱼,蛋出现后,不和蛋说话,再和猫说话,提示的原脚本A段对白,而不是E段对白,然后再点完蛋后,无论身上有或没有(有但数量不够之类的),都提示原脚本A段对白呀

升级   100%

群组: JRO日本客户端

 楼主| 发表于 2012-4-22 10:09:07 | 显示全部楼层
经过修改 道具判断没问题了  但是,启动服务端,刚上线后,蛋NPC是出现的,只不过 所有玩家未在喂鱼前都无法点击而已  改怎么改?

itemmall,185,65,3        script        捣蛋的狸猫        543,{
if ((countitem(6049) > 0 || countitem(6039) > 0) && ZaDan < 1 && .DaoDan == 0 ) goto weiyu;
if (ZaDan == 1 && .DaoDan == 1) goto ZaDan_1;
if (.DaoDan == 1 && ZaDan == 0 ) goto DaoDan;
mes "[捣蛋的狸猫]";
mes "鱼,蓝枪鱼,看的到吃不到呀";
mes "帮我钓一条蓝枪鱼上来给我";
mes "吃的话,我就跟你玩一个游戏";
mes "如果钓不到,那么给我10条鱼尾也是可以的哇";
close;
weiyu:
menu "不给它",-,"给它一条蓝枪鱼",LanQiangYu,"给它10条鱼尾",YuWei;
emotion 32;
close;
LanQiangYu:
if (countitem(6049) < 1) goto LQY;
emotion 18;
mes "[捣蛋的狸猫]";
mes "啊,蓝枪鱼,真的给我吗?。";
mes "那我不客气咯";
mes "恩恩  真好吃啊";
next;
mes "[捣蛋的狸猫]";
mes "好吧";
mes "就跟你玩个游戏吧";
next;
mes "[捣蛋的狸猫]";
mes "在面前有3个蛋,其中一个藏有宝贝";
mes "当然你只有1次选择机会";
mes "好好想想打碎那一个吧";
mes "祝你好运咯";
close2;
set ZaDan,1;
set .DaoDan,1;
delitem 6049,1;
enablenpc "蛋#1";
enablenpc "蛋#2";
enablenpc "蛋#3";
end;
LQY:
mes "[捣蛋的狸猫]";
mes "你那里有鱼喂我?";
mes "藏起来了吗?";
mes "哼哼~~";
close;
YuWei:
if (countitem(6039) < 10) goto YW;
emotion 15;
mes "[捣蛋的狸猫]";
mes "那么多鱼尾全部给我吃吗?";
mes "虽然没有蓝枪鱼,但那么多鱼尾也不错的哟";
mes "蓝枪鱼真的非常稀少啊";
next;
mes "[捣蛋的狸猫]";
mes "好吧";
mes "就跟你玩个游戏吧";
next;
mes "[捣蛋的狸猫]";
mes "在面前有3个蛋,其中一个藏有宝贝";
mes "当然你只有1次选择机会";
mes "好好想想打碎那一个吧";
mes "祝你好运咯";
close2;
set .DaoDan,1;
set ZaDan,1;
delitem 6039,10;
enablenpc "蛋#1";
enablenpc "蛋#2";
enablenpc "蛋#3";
end;
YW:
mes "[捣蛋的狸猫]";
mes "你那里有鱼喂我?";
mes "藏起来了吗?";
mes "哼哼~~";
close;
ZaDan_1:
mes "[捣蛋的狸猫]";
set .@Za,rand (1,3);
mes "怎么?";
mes "不知道砸开那一个吗?";
mes "那么,试着砸开第"+.@Za+"个蛋试试呢?";
mes "不过,我不保证里面有宝物哦";
mes "嘿嘿";
close;
DaoDan:
mes "[捣蛋的狸猫]";
mes "好想吃鱼啊 为什么鱼儿老不上钩?";
mes "帮我一起钓鱼吧?";
mes "给我吃蓝枪鱼 我就和你玩游戏";
mes " ";
mes " ^F06EAA捣蛋狸猫在玩游戏,请稍后!^000000";
close;

OnReset:
set .Daodan,0;
end;

OnTimer20000:
set .i,rand(3);
switch(.i) {
case 0:        npctalk "美味的蓝枪鱼呀!"; break;
case 1:        npctalk "怎么鱼还不上钩呀!!"; break;
case 2:        npctalk "好想吃,好想吃鱼啊啊?!"; break;
}
initnpctimer;
end;

OnInit:
initnpctimer;
end;

}


itemmall,182,63,3        script        蛋#1        463,{
callfunc "Dan";
}

itemmall,184,63,3        script        蛋#2        463,{
callfunc "Dan";
}

itemmall,186,63,3        script        蛋#3        463,{
callfunc "Dan";
}


function        script        Dan        {
if (ZaDan > 0) goto ZaDan_2;
end;
ZaDan_2:
set .@dan,rand(100);
if (.@dan >=0 && .@dan <= 50 ) getitem 605,1;
if (.@dan >=51 && .@dan <= 100 ) { npctalk"真遗憾,什么都没有!";}
disablenpc "蛋#1";
disablenpc "蛋#2";
disablenpc "蛋#3";
donpcevent "捣蛋的狸猫::OnReset";
set ZaDan,0;
end;
OnInit:
disablenpc "蛋#1";
disablenpc "蛋#2";
disablenpc "蛋#3";
end;
}

升级   100%

群组: JRO日本客户端

 楼主| 发表于 2012-4-22 12:20:03 | 显示全部楼层
已全部解决 蛋NPC添加如下就OK了

itemmall,182,63,3        script        蛋#1        463,{
callfunc "Dan";
OnInit:
disablenpc "蛋#1";
disablenpc "蛋#2";
disablenpc "蛋#3";
end;
}

升级   0%

发表于 2012-4-22 17:30:17 | 显示全部楼层
恩,有些加下条件限制下就好了,没想那么周全
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-21 12:15 , Processed in 0.296573 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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