作者amosdeus (幽素)
看板mud_sanc
标题[wizs] 问题请教(二十三)
时间Sun Jun 12 00:57:47 2011
//剑阵的型态:
//春之迷蒙 - 二十四节气普通招式为读取temp的ats,次数2~3攻击力减弱,延迟时间略长。
//夏之骄蹇 - 二十四节气普通招式为单体,次数1攻击力增强,延迟时间不变。
//秋之累绶 - 二十四节气普通招式为单体,次数2~3攻击力略强,延迟时间略长。
//冬之离葬 - 二十四节气普通招式为读取temp的ats,次数1攻击力不变,延迟时间略短。
//剑阵的加成:
//增加剑法类的攻击威力。
//从slash的指令或是剑法的技能档增加读取到剑阵便增加攻击力
inherit OBJECT;
static int i = 0,val = 0;
void create()
{
seteuid(getuid(this_object()));
set("id",({"season range","房间法术"}));
set("short",HIW"四时剑阵"NOR"(Season Range)");
set("name","四时剑阵");
set("long",@LONG
一座剑阵
LONG
);
set("mass",17850404);
set("unit","座");
set("no_break",99);
set("prevent_get",1);
set("prevent_sac",1);
}
int room_check_poison(); // 事先宣告
void init()
{
object ppl = this_player();
int num,num1,num2;
string PPL_NAME,PPL_CHI_NAME;
if(val==0)
{
PPL_NAME = ppl -> query("name");
PPL_CHI_NAME = ppl -> query("chi_name");
set("id",({PPL_NAME+"'s season range"
,"season range","房间法术"}));
set("short",PPL_CHI_NAME+HIW"所排设的四时剑阵"NOR
"("+PPL_NAME+"'s Season Range)");
num1 = (int)ppl->query("skill/slasher heart"); //剑士之心作为时间
num1 = num1 / 500;
num2 = (int)ppl->query("skill/season range"); //剑阵作为时间
num2 = num2 / 100;
num = num1 * num2;
set("S_R/time",num); //持续时间设定
set("name",PPL_NAME); //MOB掉落物品认主
set("target_name",PPL_NAME); //解除确定
val = 1;
}
add_action("disband","disband"); //解除指令
add_action("range_gift","gift"); //招式指令
if(query("callouting")) return ;
set("callouting",1);
room_check_poison();
return ;
}
int room_check_poison()
{
int i,r,j,l,time;
object ppl,ob=this_object(),room;
mixed usr;
ppl = this_player();
room = environment(ob);
usr = all_inventory(room);
//usr = ppl->query_temp("ats");
r = random(3);
time = query("S_R/time"); //移除计时
if(!ob) time = time / 2; //使用者不在时间减少
if( time < 1)
{
write(CYN"运转四时剑阵的已经能源消耗完毕,剑阵一并崩然溃散。\n"NOR);
remove();
}
else
set("S_R/time",time-1);
foreach(ob in usr)
{
if(userp(ob))
{
if(!ob) continue;
if(ob->query("no_attack")) continue;
if(!ob->query("ats")) continue;
switch(r)
{
case 0:
ppl->shut(HIM"\n\n$N【春之迷蒙】->$O"NOR,11111,11111,({"dam","physics",2}),ob);
break;
case 1:
ppl->shut(HIM"\n\n$N【夏之骄蹇】->$O"NOR,11111,11111,({"dam","physics",2}),ob);
break;
case 2:
ppl->shut(HIM"\n\n$N【秋之累绶】->$O"NOR,11111,11111,({"dam","physics",2}),ob);
break;
case 3:
ppl->shut(HIM"\n\n$N【冬之离葬】->$O"NOR,11111,11111,({"dam","physics",2}),ob);
break;
}
}
else
i++;
}
if(i==sizeof(usr))
{
delete("callouting");
remove_call_out("room_check_poison");
return 1;
}
call_out("room_check_poison",2); //两回合攻击一次
return 1;
}
int disband(string str)
{
object ppl = this_player();
if(!str || str == "" ) return notify_fail("什麽?\n"NOR);
if(str!="range") return notify_fail("你是要解除剑阵吗?(disband range)\n"NOR);
if((string)ppl->query("name")!=query("name"))
return notify_fail("你并不能控制这座剑阵。\n"NOR);
command("drop all"); //drop没反应 要改别的方式
write("你解除四时剑阵了.\n");
remove();
return 1;
}
问题一:
请问要怎样让
剑阵 在每一次 call_out("room_check_poison",2);
都能读取到
使用者 正在攻击的敌人 ppl->query_temp("ats");
让 ppl->shut(HIM"\n\n$N【春之迷蒙】->$O"................
能够使用;
或者是 让
剑阵 读取到
使用者 的
攻击敌人参数
然後再用直接扣血的方式(但是要做抗性判断,跟属性闪避的判断)
还要考虑玩家先布下剑阵时在进行战斗。
问题二:
//增加剑法类的攻击威力。
//从slash的指令或是剑法的技能档增加读取到剑阵便增加攻击力
slash的档案可以在哪里看到,另一个构思中的技能:飞剑 也用得到
飞剑的攻击与数量:
一:
只招换出一只 飞剑 增加攻击次数一
比如 "四时剑法" 攻击次数为四,在读取到飞剑参数後攻击加一,变
成攻击次数为五。
二:
可由 "剑士之心" 或是 "气劲(air)" 除於三千最多能,同时有三把飞
剑(这部分由撰写者决定)。
这里的原则是一的情况下可以达到原攻击的八九成,二的情况下飞剑只
数多攻击力就要下降。
直接从指令作修改比较快,修改剑类技能就比较麻烦也占记忆体。
以上 谢谢
Plain@Sanc
--
咽咽学楚吟 病骨伤幽素 秋姿白发生 木叶啼风雨
灯青兰膏歇 落照飞蛾舞 古壁生凝尘 羇魂梦中语
【 伤心行 李贺 】
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.162.109.181
※ 编辑: amosdeus 来自: 218.162.109.181 (06/12 01:32)
1F:→ hlead :query_attackers() , query_current_attacker() 06/12 06:38
2F:→ justinj :好像要ppl->command(XXX)才对...反正很难用.... 06/13 20:27