mud_sanc 板


LINE

这个 norr 及各位 wizs 们可参考。 最直觉的设法如下.. mapping schd = ([ "时间标记":({要做什麽事}), . . ]); 比方使用者A下了某指令後,该物件会替它做三件事,这三件事 的间隔时间为 1 秒,模拟如下... 00:00 下了指令 00:01 该物件替A做了第一件事 00:02 该物件替A做了第二件事 00:03 该物件替A做了第三件事 简易的设定如下.. t=time(); t=t+1; schd[""+t]=({"good morning!\n"}); t=t+1; schd[""+t]=({"good evening!\n"}); t=t+1; schd[""+t]=({"good night!\n"}); 但是如果该物件『可同时接收其它玩家下指令时』,判断就要改 成如下.. t=time(); t=t+1; if(delay_calls=(mixed)schd[""+t]) delay_calls+=({"good morning!\n"}); else delay_calls=({"good morning!\n"}); schd[""+t]=delay_calls; 也就是说,比方使用者A先下了指令,1 秒後使用者B也下了指 令,那 schd 的资料就会如下... schd = ([ "100000001":({"good morning!\n"}), "100000002":({"good evening!\n","good morning!\n"}), "100000003":({"good night!\n","good evening!\n"}), "100000004":({"good night!\n"}), ]); 使用者A更动了 100000001~100000003 的部份,而使用者B则 更动了 100000002~100000004 的部份。 接下来就是重点,在该物件的 heart_beat 中可以这样写.. keys_schd = keys(schd); // 对时间标记做排序, 由小到大 keys_schd = sort_array(keys_schd,"sort_by_time",this_object()); t=time(); // 读取现在的时间, 假设是 100000002 foreach(tmp in keys_schd) { if(t>=atoi(tmp)) // 某些排程已经到了该执行的时间了 { // 在同一个时间处理该时间的所有排程工作 foreach(tmp2 in schd[tmp]) tell_room(env,tmp2); // 假设排程的工作是做 tell_room map_delete(schd,tmp); // 做完排程就把该时间标记资料自 schd 移除 } } 这样每隔一个心跳时间,heart_beat 就会去做上述的判断, 看哪些排程的执行时间已经到了,就执行它,而且把该排程 (因为已执行完了)移除。 而且遇到不明原因的 delay,使得应执行的排程没被执行时 ,该排程的资料还是会在,於下一个心跳时间时,透过 if(t>=atoi(tmp)) 的判断就会被执行(而且优先执行,因为有 sort_by_time) 以上的直觉式写法供各位参考,实际上应该有更佳的写法, 不过我懒得想了:p Laechan --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 117.19.98.233







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灯, 水草

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

TOP