看板 mud_sanc 關於我們 聯絡資訊
#include "../ei.h"; inherit OBJECT; void create(){ seteuid(getuid(this_object())); set("short",RED"生銹的"HIW"小李飛刀"NOR"(flying knife)"); set("long",@LONG   李尋歡遺落的飛刀,只不過多年未使用,已經生鏽了。   因為李尋歡總是飛刀擲不完,因此小李飛刀並沒有用完的一天。   可以投擲傷敵(toss)。 LONG); set("id",({"knife","flying knife"}) ); set("mass",100); set("save",100); set("unit","把"); } void init(){ if(this_player()->query("pp") < 10000){ write("你並沒有足夠的內力駕馭這項武器。\n"); return; } add_action("cmd_toss","toss"); } int cmd_toss(){ int damage,pp_using,pp_of_player,i; string str_damage,*attr,*str_attr; object target,env,player; player = this_player(); env = environment(player); if (player->query_temp(HIP"肢體末梢麻痺"NOR)){ write(HIM"不行!你的食指和中指還是毫無知覺!\n"NOR); } else if (player->query_current_attacker()){ attr = ({"fire","wind","ice","thunder"}); str_attr = ({HIW+"刀尖上忽然冒出了火燄!"+NOR,HIC+"你感受到飛刀的刀刃有 著螺旋的氣流纏繞"+NOR,HIW+"刀刃上結了一層薄薄的寒霜"+NOR,HIB+"飛刀劈啪作響,並 且閃著雷光"+NOR}); i = random(4); target = player->query_current_attacker(); pp_of_player = player->query("pp"); damage = 10000 + random(39)*10000 + random(10)*1000 +random(11)*100; pp_using = (damage/400000)*(pp_of_player/5);//依照威力,最多將使用玩家 20%的pp。 player->add("pp",-pp_using); str_damage = "$N"+HIW+"大喝一聲:"+HIW+"小李飛刀,例不虛發!\n"; str_damage = str_damage + HIC+" $N右手食指與中指夾住"+NOR+RED+"生鏽的 "+HIW+"小李飛刀"+HIC+"全身內力不由自主的湧進飛刀之中\n"; str_damage = str_damage + " "+str_attr[i]+"\n"; str_damage = str_damage+ HIR+"\n 飛刀擲出!正中$O!! !\n"NOR; player->shut(str_damage,damage,9999,({"attr[i]","stick",3}),target,1); > 主要在這邊!shut函數似乎只會將訊息傳給target,而不會傳給player > 不知是否因為我的寫法有錯 > 好累...今天為這東西寫了好久,查了一堆efuns tell_object(player,"你的手指因為用力過度,無力再夾住飛刀了。\n"); player->temp_several_same_mod(({"stat/dex","stat/str"}),0,HIP"肢體末梢麻 痺"NOR,2); } else{ tell_object(player,"你不在戰鬥中,因此無法使用小李飛刀喔\n"); } return 1; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.173.109 ※ 編輯: doall 來自: 124.8.173.109 (12/14 00:29)
doall:我懂了....shut是設計給mob用的= =難怪不會傳給player= = 12/14 00:35
doall:是否可請小寶修改這個函數使敘述內容也會傳給player 12/14 00:38
doall:或者另作函數,但敘述內容只會傳給player 12/14 00:38