作者laechan (打死不投马冏,李系咩安抓)
看板mud_sanc
标题Re: [wizs]申请QC区域 善见主城部分
时间Tue Jul 24 09:41:32 2007
※ 引述《amosdeus (幽素)》之铭言:
: 【闲聊】小太保(laechan)道:
: if(!ob=present(str,tar)) return 0;
: if(ob!=this_object()) return 0;
: 【闲聊】小太保(laechan)道: drink xxx 的部份你可以这样判定
: 【闲聊】小太保(laechan)道: 假设你身上有安柏希雅跟 hp 药水
: 【闲聊】小太保(laechan)道: drink hp 时, 因为你身上没有叫 hp 的东西, 它就会喝 hp 药水
: 【闲聊】小太保(laechan)道: 而你身上有 ambrosia 时, ob = 那瓶酒
当玩家身上有 xxx 这个东西,而它有自订 action,例如 drink 时
,因为 drink 同时也是共通指令,因此在判定上采取「若 drink 後
面所接的字串,不是指该物品、或不是该物品指定的用法时」,就让
drink 执行原先的「drink 指令」(也就是 return 0)。
if(!ob=present(str,tar)) return 0;
if(ob!=this_object()) return 0;
采用这种写法的原因,是因为一个人身上可能同时带了数瓶可 drink
的东西,例如你要 drink ambrosia 2 时,以原先的写法就无法支援
这样的喝法,而以上面的写法就可以。
: 【闲聊】小太保(laechan)道:
: tar->delete_temp("block_command");
: tar->delete_temp("ready_attack");
: 【闲聊】小太保(laechan)道: block_command 跟 ready_attack 不是放在 temp 区
: 【闲聊】小太保(laechan)道: 另外, 最好不要动 ready_attack.
: 【闲聊】小太保(laechan)道: delete("block_command") 时要顺便 delete("block_command_msg");
ready_attack 不要动的原因是,有时你把 ready_attack 删掉时玩
家会瞬间再发动一次 en/普攻 攻击,正常来说最好是...
tar->set("ready_attack",240);
也就是让玩家的 ready_attack 回复为正常,而不要删掉。
: 【闲聊】小太保(laechan)道:
: tar->temp_several_same_mod(({"stat/air","stat/dex","stat/fel","stat/mag"}),1+random(50),HIM"微醺"NOR,3);
: // tar->temp_mod("stat/air",random(50),HIM"微醺"NOR,3);
: // tar->temp_mod("stat/dex",random(50),HIM"微醺"NOR,3);
: // tar->temp_mod("stat/fel",random(50),HIM"微醺"NOR,3);
: // tar->temp_mod("stat/mag",random(50),HIM"微醺"NOR,3);
: 【闲聊】小太保(laechan)道: 尽量不要在同一时间 temp_mod 太多次, 比较妥的做法
: 【闲聊】小太保(laechan)道: 是 temp_several_same_mod({"集中起来",....}),
: 【闲聊】小太保(laechan)道: 後面的值让它 random 一次就好
tar->temp_mod("要作用的参数",数值,"作用的名称",时间);
例如 egingin, tar->temp_mod("stat/str",99,"egingin",1);
若希望 egingin 同时让 str dex air con 都 99, 用底下写法
tar->temp_several_same_mod(({"stat/str","stat/dex","stat/air","stat/con"}),
99,"egingin",1);
: 【闲聊】小太保(laechan)道: forest.c 是 mob
: 【闲聊】你道:【爱情】 嗯 这个是抄 i 的写法 【唯物】
: > 【闲聊】小太保(laechan)道: mob 要放在 mob 目录..以後再改就好
我发现有些继承 MONSTER 的物件放在 /obj 目录下,以後最好
尽量避免,因为要 qc 不方便,例如我 qc 到最後几件了,发现
其中一个有问题时,而前面几个继承 MONSTER 的物件也有相同的
问题时,因为你们物件的档名取得很长,判读不易,我就得重头
再找出哪些档案是继承 MONSTER 的。
: 【闲聊】小太保(laechan)道:
: tar->set("block_command",10);
: tar->add("block_command_msg",HIP"你昏沉沉的睁不开眼睛,又睡着噜 zzzzzzzzz\n\n"NOR);
: 【闲聊】小太保(laechan)道: 秒数要用 add or set
: 【闲聊】小太保(laechan)道: 讯息要用 set
: > 【闲聊】小太保(laechan)道: 因为秒数是整数, 可以 set 也可以 add
: 【闲聊】小太保(laechan)道: 字串不能用 add 的
tar->set("block_command",10);
tar->set("block_command_msg","你现在动弹不得...\n");
这是一组的. 同样的
tar->delete("block_command");
tar->delete("block_command_msg");
这也是一组的。
: 【闲聊】小太保(laechan)道: 你一些怪物的写法要改
: 【闲聊】小太保(laechan)道:
: 设定怪物的顺序是
: set("level",xxx);
: set("race","xxx");
: ::create(); // <= 一定要放在 level 跟 race 下面
: 【闲聊】小太保(laechan)道: ::create 就是去读取 MONSTER 里面所写的 create
: 【闲聊】小太保(laechan)道: 那个函数是用来初始化怪物的资料的, 过程中
: 【闲聊】小太保(laechan)道: 它会用到怪物的 level 跟 race
上面要注意。(qc 时基本上没有错误)
: 【闲聊】小太保(laechan)道: /obj 就刚刚说的那些
: 【闲聊】小太保(laechan)道:
: write(ORIGIN_EQ_NAME+HIW"带给你异样的轻快飘逸,整个世界似乎都变得缓慢了些!\n"NOR);
: tell_room(environment(ppl),ppl->query("chi_name")+HIW"身影迷离有如残影片段一格一格的跳跃者,飘邈不定更是诡奇万分!\n"NOR);
: 【闲聊】小太保(laechan)道: 你这样写时, 装备者会看到 write 与 tell_room 的讯息
: > 【闲聊】小太保(laechan)道:
: tell_room(environment(ppl),ppl->query("chi_name")+HIW"身影迷离有如残影片段一格一格的跳跃者,飘邈不定更是诡奇万分!\n"NOR,ppl);
: 【闲聊】小太保(laechan)道: 在最後加上 , ppl
: > 【闲聊】小太保(laechan)道: ppl 就不会看到 tell_room 的讯息, 只会看到 write 的
: 【闲聊】小太保(laechan)道: 它相当於
: i闲聊】小太保(laechan)道: say(,ppl->query("chi_name")+HIW"身影迷离有如残影片段一格一格的跳跃者,飘邈不定更是诡奇万分!\n"NOR);
: 【闲聊】小太保(laechan)道: 也就是说自己是用 write, 给同房间的其它人用 say
: 【闲聊】小太保(laechan)道:
: write(ORIGIN_EQ_NAME+HIW"带给你异样的轻快飘逸,整个世界似乎都变得缓慢了些!\n"NOR);
: say(ppl->query("chi_name")+HIW"身影迷离有如残影片段一格一格的跳跃者,飘邈不定更是诡奇万分!\n"NOR);
: 大致就是降写就行了.
上面的意思就是...
// 给自己看的
write("你触摸了雕像.\n");
// 给房间的其它人看的
say("你看到"+this_player()->query("chi_name")+"伸手触摸了雕像.\n");
// 房间的所有人都看得到
tell_room(environment(this_player()),"突然雕像发出了耀眼的光芒!\n");
: 【闲聊】小太保(laechan)道:
: if((string)ppl->query("pri_guild")!="clerical")
: if (query("effect"))
: delete("effect");
: 【闲聊】小太保(laechan)道: 这三个视为一段喔
上面其实是..
if((string)ppl->query("pri_guild")!="clerical")
{
if(query("effect"))
{
delete("effect");
}
}
省略之下就变成
if((string)ppl->query("pri_guild")!="clerical")
if(query("effect"))
delete("effect");
跟某些情况下的 foreach 一样
foreach(ob in usr)
write(ob->query("short"));
意思是,当只有一个执行绪时(以 ; 分隔),就可省略 { }
: 【闲聊】小太保(laechan)道: /eq 就刚刚说的那些
: 【闲聊】小太保(laechan)道: wp/剑有限制装备条件, or 取得条件, or 认主?
: 【闲聊】你道:【爱情】 wp的写来给mob使用 【唯物】
: 【闲聊】小太保(laechan)道: 那最好加上装备者限定为 mob
: 【闲聊】小太保(laechan)道: 我加上去了
: 【闲聊】小太保(laechan)道:
: int wear_func(string str)
: {
: if(userp(this_player()))
: {
: write("你不能装备它喔.\n");
: return 0;
: }
限定怪物装备时,最好要加上限定用的判断。不过,未来也可在
wear 指令中新增 only_for_mob 的判断。
: dest tide
: Destructing: 怪物(tide /u/p/plain/wide/virtue/mob/tide)
: > 【闲聊】小太保(laechan)道: 这样就行了
: chat* nod
: 【闲聊】幽素(Plain:剑尊)同意地点点头。
: > 【闲聊】小太保(laechan)道: wp/ 就刚刚说的那些.
: 以上 今晚qc的部份
: 谢谢
: Plain@Sanc
预定今天 qc mob 与 npc 目录,请先暂时不要动到这两个目录。
另外,有几件事要注意..
一、当实体物品并有自订动作,如一些可 drink 类的或可 eat 类的
,要注意「可 clone 出的数量」以及「最好设定 no_save」,以
及价格不要设定的太贵。
当然,最好是不要有这类的实体物品存在。
二、某些情况下 move_to 不能用,我举例,例如 ambrosia 有自订
drink 指令,当 ambrosia->move_to(this_player()) 时,该玩
家会无法使用 drink 指令(因为 move_to = 无条件移过去, 过
程中它不会做其它判定)。
三、错别字。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.231.122.65
1F:推 hlead:恩...了解。...cheer.. 07/24 10:08