英雄遠征Erlang原始碼分析(10) 隊伍相關

2021-09-12 20:06:15 字數 1256 閱讀 3351

組隊相關模組有mod_team.erl和lib_team.erl

通過24000協議請求,呼叫mod_team:start(uid,pid,nick,teamname)開啟組隊程序,建立隊伍

組隊state為

%%隊伍資料

-record(team, 

).%%隊員資料

-record(mb, 

).

隊伍程序初始化**:

init([uid, pid, nick, teamname]) ->

]}}.

隊伍建立後有幾種操作:

1.玩家申**入隊伍 - 隊長處理玩家申請

2.玩家主動退出隊伍 - 隊長將玩家踢出隊伍

3.隊長邀請玩家加入隊伍 - 玩家回應邀請

4.獲取隊伍資訊

5.隊長解散隊伍

6.隊伍成員聊天

1.玩家申**入隊伍:

handle_call('join_team_req', _from, state) 向隊伍程序傳送請求

返回:     ->    隊伍成員數達上線

->        隊伍在副本中

->            向隊長傳送請求

2.隊長回應請求:

handle_call(, , state)

檢查隊長身份,隊伍是否在副本中...,檢查通過,則

gen_server:cast(r#ets_online.pid, ),    %%更新玩家狀態

newmemberlist = state#team.member ++ [#mb],        %%更新隊伍程序玩家列表

newstate = state#team,        %%更新活動狀態

gen_server:cast(self(), ),    %%重新整理隊伍資訊

= pt_11:write(11004, lists:concat([r#ets_online.nickname, "加入了隊伍"])),

send_team(state, bindata),    %%告知隊伍成員有人加入

3.玩家主動離開隊伍

handle_call(, , state)

檢查是否能退出隊伍(是否隊伍成員,是否在副本中)

檢查該玩家退出隊伍後成員人數:

成員為0,解散隊伍

成員大於0,檢查是否隊長退隊

隊長退隊:重新任命隊長,重設隊伍名稱,通知成員,通知場景

非隊長退隊:通知成員,通知場景

erlang遊戲原始碼 英雄遠征分析

erl p 1024000 k true smp disable name sd2 127.0.0.1 setcookie sd2 mnesia extra db nodes sd1 127.0.0.1 boot start sasl config log s sd gateway start ex...

英雄遠征Erlang原始碼分析(8) 怪物相關

與怪物相關的模組有三個 mod mon create.erl,mod mon active.erl,lib mon.erl mod mon create 建立負責建立怪物的程序,通過mod mon create create mon monid,scene,x,y,type 建立怪物程序 怪物建立程...

英雄遠征Erlang原始碼分析(4) TCP連線處理

在start tcp 0中啟動了sd tcp listener sup監控樹,並掛到sd sup下。其後啟動的程序樹形關係如下 這是遊戲伺服器啟動後使用observer觀察到的遊戲內程序關係圖,0.68.0 為start tcp 0啟動的sd tcp listener sup監控樹,0.70.0 為...