[wizs] 關於玩家斷線後重新回復連線

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間16年前 (2010/04/06 14:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
// /std/user.c int restart_heart() { object env; say( query("cap_name")+" 重新連線.¥n"); write("重新連上聖殿英雄傳說.¥n"); ANNOUNCE->announce_user(me,2); USERID_D->query_userid(); set_heart_beat(1); delete_temp("kick_time"); #ifdef RECONNECT_LOG log_file(RECONNECT_LOG,data["cap_name"]+" "+query_ip_name(me)+ " "+Ctime(5) + "¥n"); #endif if(env=environment(me)) me->move_player(base_name(env),"SNEAK"); return 1; } 亮藍色部份為最近 norr 所需求的功能,如上所示,原先就有 回復連線後 me 做 move_player 到所在地點的動作,該動作原 先的起始用意是,若玩家在有主動怪的地方斷線後重連,就會 重新對主動怪做 init_attack。 現在這部份可以應用到 void init 函數中,因 me 會 move 房 間一次,這時就會呼叫到房間的 init,則此時就可由 init 函 數判斷玩家已回復心跳。 至於斷線瞬間的判斷.. void net_dead() { object env; say( query("cap_name") + " 不小心踢到了網路線了.¥n"); map_delete(temp_data,"ats"); // 移除所有戰鬥對象 map_delete(temp_data,"msg_buf"); // 移除所有 msg_buf map_delete(temp_data,"special_attack"); // 移除所有 special_attack ANNOUNCE->announce_user(me,3); CMWHO_D->remove_user(me); if(query("record_data/netdead_time")<1) set_heart_beat(0); link->remove(); if(env=environment(me)) if(function_exists("check_net_dead",env)) env->check_net_dead(me); } 亮藍色部份是 norr 目前有需求、但程式碼尚未寫,而可以 考慮加進去的。 這部份有空我會跟 nobu 討論一下,或者用較簡單的如下.. if(env=environment(me)) if(env->query("netdead_move_room")) me->move_player((string)env->query("netdead_move_room"),"SNEAK"); Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.161.52
文章代碼(AID): #1Bkj5APQ (mud_sanc)
文章代碼(AID): #1Bkj5APQ (mud_sanc)