mud_sanc 板


LINE

// spell_practice1.c // Laechan@Sanc add in 2009/10/24 // 基本原则是以练习室的心跳函数来控制所有在这个房间的人 // 它们的练习, 这样可一次处理多人的练习 inherit ROOM; mapping practice=([]); // practice = ([ // "gravity":数值, // 重力数值 // // "on_2" :代表启动上面 // // 以上为练习飘浮术之用(它会抓身上有无飘浮术) // // "lv" : 数值, // 攻击级数 // "hit" : 数值, // 攻击连击数 // "time" : 数值, // 几秒後启动攻击 // // "on_1" : 代表启动上面 // // 以上为练习护盾法术之用(它会抓身上的护盾) // // "on_3" : 代表启动的防壁护罩 // // 以上为自行练习攻击法术之用 // // ]), void create() { ::create(); seteuid(getuid(this_object())); set("light",1); set("short","法术练习室"); set("long",@LONG      四周是一望无际的巨大空间。在这里你可以使用      两个指令:tune 及 spells。 LONG ); // 禁止不正常脱离 set("no_recall",1); set("no_return",30); set("exits/out",__DIR__+"spell_practice"); set("pre_exit_func/out","hi"); set_heart_beat(1); } int hi() { // 特殊情况下无法 out // 也可能以出口开启状态无法启动任何东西为设定 return 1; } // spell_practice = 练习室申请处 int env_remove(mixed obs) { if(obs) obs->move(__DIR__+"spell_practice"); this_object()->remove(); return 1; } int heart_beat(int i) { string names=(string)query("names"); // 练习室的'登记'者 object ppl,env=this_object(); mixed obs; // 房间的所有物件 // 房间没有这个人时就把练习室干掉 if(!ppl=present(names,env)) return env_remove(obs); obs=all_inventory(env); if(!userp(ppl)) return env_remove(obs); // 将 ppl 跟 obs 分开 // obs 会受到的影响是房间的重力等因素 obs-=({ppl}); // ppl 的部份 // obs 的部份 foreach(ppl in obs) if(ppl && userp(ppl)) gravity_effect(ppl); // 重力影响; return 1; } void init() { object ppl=this_player(); if((string)query("names") == (string)ppl->query("name") || wizardp(ppl)) { if((int)practice["gravity"]<1) practice["gravity"]=1; add_action("tune_xxx","tune"); add_action("on_xxx","on"); add_action("off_xxx","off"); add_action("spells_xxx","spells"); } } int tune_xxx(string str) { string a,b; int a1,a2,n; if(!str || str=="") return notify_fail(@LONG tune 指令说明: ================================================================= tune 1-1 to [n] 将魔法攻击等级设定为 n, 最小 1 最大 5 tune 1-2 to [n] 将魔法连击次数设定为 n, 最小 10 最大 99 tune 1-3 to [n] 设定魔法攻击的时间在 on 1 之後 n 秒 n 最小 5,最大 20。 tune 2 to n 设定练习室的重力倍数为 n 倍, 最小 1 最大 99 on [n] 启动第 n 项设定 off [n] 关闭第 n 项设定 restart [n] 重覆第 n 项设定 (注:restart 2 无意义) ================================================================= Laechan@Sanc in 2009/10/24 LONG ); if((int)practice["cant_tune"]>0) return notify_fail("tune: 练习室正在执行程式,你现在不能 tune 喔。\n"); if(sscanf(str,"%s to %s",a,b)!=2) return notify_fail("tune: 你的指令语法不对喔.\n"); if(atoi(a)==2) a1=2; else if(sscanf(a,"%d-%d",a1,a2)==2); else return notify_fail("tune: 你的指令语法不对喔.\n"); if(a1<1 || a1>2) return notify_fail("tune: 你的指令语法不对喔.\n"); n=atoi(b); if(n<1 || n>99) return notify_fail("tune: 你不能给 "+b+" 这样的值喔.\n"); switch(a1) { case 1: switch(a2) { case 1: if(n<1 || n>5) return notify_fail("tune: 魔法攻击等级只能设定在 1~5 之间喔.\n"); practice["lv"]=n; return notify_fail("tune: 你将魔法攻击的等级设定为 ["+n+"] 级了。\n"); break; case 2: if(n<10 || n>99) return notify_fail("tune: 魔法连击次数只能设定在 10~99 之间喔.\n"); practice["hit"]=n; return notify_fail("tune: 你将魔法连击的次数设定为 ["+n+"] 连击了。\n"); break; case 3: if(n<5 || n>20) return notify_fail("tune: 魔法连击时间只能设定在 5~20 秒後喔.\n"); practice["time"]=n; return notify_fail("tune: 你将魔法攻击的时间设定在 ["+n+"] 秒後了。\n"); break; default: return notify_fail("tune: 没有 "+a1+"-"+a2+" 这个设定项喔。\n"); break; } break; case 2: a2=(int)practice["gravity"]; if(n==a2) return notify_fail("tune: 练习室现在的重力倍数已经是 "+n+" 了喔.\n"); practice["gravity"]=n; return notify_fail("tune: 你将练习室的重力倍数调整为 "+n+" 了。\n"); break; default: return notify_fail("tune: 没有第 "+a1+" 设定项喔。\n"); break; } } int on_xxx(string str) { int n; object ppl=this_player(); if((string)query("names")!=(string)ppl->query("name")) return 0; if(!str || str=="") return notify_fail("语法:on [n],如 on 1、on 2 等。\n"); n=atoi(str); if(n<1 || n>2) return notify_fail("目前你只能下 on 1 跟 on 2 喔。\n"); if(practice["on_"+n]) return notify_fail("on: 第 "+n+" 项已经启动了喔。\n"+ " 关闭的指令是 off,重启动的指令是 restart。\n"); if(n==1) { if(!practice["lv"]) return notify_fail("在 on 1 之前你要先 tune 1-1 to [级数] 喔.\n"); if(!practice["hit"]) return notify_fail("在 on 1 之前你要先 tune 1-2 to [连击数] 喔.\n"); if(!practice["time"]) return notify_fail("在 on 1 之前你要先 tune 1-3 to [时间] 喔.\n"); practice["on_"+n]=1; n=practice["time"]; practice["when_start"]=n+time(); set_heart_beat(1); return notify_fail("on: 你启动了[能量盾]的练习设定.\n"+ "┌──────────────┐\n"+ sprintf("│魔法攻击级数  :%d │\n", practice["lv"])+ sprintf("│魔法攻击连击数 :%2d │\n", practice["hit"])+ sprintf("│魔法攻击执行时间:%2d 秒後 │\n", practice["time"])+ "└──────────────┘\n"+ (ppl->query_temp("shield2") ? "你已做好冲击准备。\n" : HIR"你尚未施展护盾,请尽快施展!"NOR"\n"); } int spells_xxx(string str) { if(!str || str=="") return notify_fail(@LONG spells(法术练习室专用指令)说明: ================================================== spells [数量] [法术名称] 1.数量的多寡与 mag 属性有关 2.剩余的 sp 值也会影响可击发的数量 3.不需加级数(会自动施展最大级数) 4.部份技能作用在自己身上的效果,可提高击发数量 // 底下是相关的设定备忘录 比方你按 2,它会显示它已经在天空张设了结界,请你对天空发 出「任意数量的攻击法术」,指令以底下为例... spells 99 fire 就是对天空发出 99 发的火系法术,它会根据你的「能力」来决 定你发完後「是否没力了」,只要处於没力状态,就必须等回复 了才能再练习。 所以选择的诀窍,就是摸索出依自己目前的「能力」能击出的最 多数量,使自己不会没力、「休息一会儿」即可再练习。 1. 数量越大,熟练度平方影响 2. 数量超越极限的话只能发出最大的 n 发, 然後需休息的时 间较久 (不管 sp 有没有回满) --



※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 61.225.162.212 (06/09 15:47)
1F:推 justinj :.....要不要多设一个no_quit......avert 06/09 17:15
无论任何地方都可 quit,这是目前会确保的。
2F:推 justinj :....return可以将团员从里面call出来..进去时强制 06/09 17:55
3F:→ justinj :p leave.... 06/09 17:55
4F:推 justinj :还是说这是单人的...那就没此问题..beat_heart有判断 06/09 17:57
5F:推 justinj :漂浮术---->重力试链,解毒术-->各种状态毒素试链 06/09 18:14
6F:→ justinj :远见法术--->比较像巫师之眼(定期观察)...... 06/09 18:16
7F:→ justinj :这个是要控制及持续....那维持魔力输出的试链了.. 06/09 18:18
限制 return 不能进去,是因为那是一个特别的空间, 因此也无法 recall。 在规划上允许申请人可让玩家进入该空间看该玩家练习 ,并且还能帮申请人 cast。(采允许制) 而且你要在里面组队、聊天、或干嘛也随你。 因为我有看到有人在牧师练习室 pr 时「不安於室」, 我不太想做机车的限制,但限制是一定要的,所以这个 练习室会跟牧师的不同,只要法师一离开,练习室就会 重置,而且短时间内该玩家无法再申请练习室。 (未来也倾向让申请练习室需要付出代价,钱是一种) 目前辅助技能的部份也只规划漂浮术跟护盾。我有考虑 让主法副牧也能在里面练圣光盾。 ※ 编辑: laechan 来自: 122.117.3.82 (06/09 19:43)
8F:推 justinj :牧师不安於室是因为学点不足..而且pr到满要很久,所以 06/09 20:10
9F:→ justinj :写成跑机状态.... 06/09 20:11
10F:推 justinj :...也就是主人一定要在..其它人可以走进走出..... 06/09 20:14
11F:→ laechan :那个我不会做什麽限制,不要太离谱我都当没看到 06/09 20:19
12F:推 justinj :...pr圣光盾..2种盾的性质太过接近了..... 06/09 20:29
13F:推 hmml :牧师bless到後面间隔150以上,没办法像法师一样在里 06/09 20:58
14F:→ hmml :面发呆.... 06/09 20:59
※ 编辑: laechan 来自: 122.117.3.82 (06/14 20:16) ※ 编辑: laechan 来自: 61.225.162.241 (06/17 10:36) ※ 编辑: laechan 来自: 61.225.162.241 (06/17 14:20) ※ 编辑: laechan 来自: 61.225.160.229 (06/18 09:24)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP