首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

彪悍的代码不需要解释_巨魔神大人率领大家走向胜利_P

2012-09-25 
彪悍的代码不需要解释_巨魔神大人带领大家走向胜利_:P--[[ file name : story_server.lua author:Clark/陈

彪悍的代码不需要解释_巨魔神大人带领大家走向胜利_:P

--[[ file name : story_server.lua author  :  Clark/陈泽丹 created :  2012-9-20 purpose :  消息 --]]--事件转消息function new_story_msg( _EVENT )local public = { EVENT = _EVENT, ret = {} }return publicend--否决消息监听function new_story_vote_msg_listener()local public = {}function public.on_vote( _t_msg )myPrint("未实现 new_story_vote_msg_listener", 1)return falseendreturn publicend--执行消息监听function new_story_action_msg_listener()local public = {}function public.on_action( _t_msg )myPrint("未实现 new_story_action_msg_listener", 1)endreturn publicend--完毕消息监听function new_story_response_msg_listener()local public = {}function public.on_response( _t_msg )myPrint("未实现 new_story_response_msg_listener", 1)endreturn publicend--消息处理机function new_story_server()local function new_event_map()local this_public = {}this_public.map = {}function this_public.add_listener(_p_moudle, _event)if nil == this_public.map[_event] thenthis_public.map[_event] = {}endlocal t = this_public.map[_event]local len = table.getn(t)for i=1, len doif t[i] == _p_moudle thenreturnendendt[ table.getn(t) + 1 ] = _p_moudleendfunction this_public.remove_listener(_p_moudle, _event)if nil ~= this_public.map[_event] thenlocal t = this_public.map[_event]local len = table.getn(t)for i=1, len doif t[i] == _p_moudle thent[i] = t[len]t[len] = nilif table.getn(t) <= 0 thenthis_public.map[_event] = nilendreturnendendendendreturn this_publicendlocal public = {}public.vote_map = new_event_map()public.action_map = new_event_map()public.response_map = new_event_map()function public.dispatch_msg( _t_msg )--否决if nil ~= public.vote_map.map[ _t_msg.EVENT ] thenlocal t = public.vote_map.map[ _t_msg.EVENT ]local len = table.getn( t )for i=1, len doif t[i].on_vote( _t_msg ) thenreturnendendend--触发if nil ~= public.action_map.map[ _t_msg.EVENT ] thenlocal t = public.action_map.map[ _t_msg.EVENT ]local len = table.getn( t )for i=1, len dot[i].on_action( _t_msg )endend--完毕if nil ~= public.response_map.map[ _t_msg.EVENT ] thenlocal t = public.response_map.map[ _t_msg.EVENT ]local len = table.getn( t )for i=1, len dot[i].on_response( _t_msg )endendendreturn publicend --发送消息function send_msg_to_server(_server, _t_msg)_server.dispatch_msg(_t_msg)end


 

--[[ file name : user_story.lua author  :  Clark/陈泽丹 created :  2012-9-20 purpose :  消息处理者 --]]--否决自定义者function new_user_story_vote_listen()local private = {}local public = new_story_vote_msg_listener()function public.init(_svr, _tEvt)private.tEvt = _tEvtprivate.svr = _svrlocal len = table.getn(private.tEvt)for i=1, len doprivate.svr.vote_map.add_listener(public, private.tEvt[i])endendfunction public.uninit()local len = table.getn(private.tEvt)for i=1, len doprivate.svr.vote_map.remove_listener(public, private.tEvt[i])endprivate.tEvt = nilprivate.svr = nilendreturn publicend--执行自定义者function new_user_story_action_listen()local private = {}local public = new_story_vote_msg_listener()function public.init(_svr, _tEvt)private.tEvt = _tEvtprivate.svr = _svrlocal len = table.getn(private.tEvt)for i=1, len doprivate.svr.action_map.add_listener(public, private.tEvt[i])endendfunction public.uninit()local len = table.getn(private.tEvt)for i=1, len doprivate.svr.action_map.remove_listener(public, private.tEvt[i])endprivate.tEvt = nilprivate.svr = nilendreturn publicend--响应自定义者function new_user_story_response_listen()local private = {}local public = new_story_vote_msg_listener()function public.init(_svr, _tEvt)private.tEvt = _tEvtprivate.svr = _svrlocal len = table.getn(private.tEvt)for i=1, len doprivate.svr.response_map.add_listener(public, private.tEvt[i])endendfunction public.uninit()local len = table.getn(private.tEvt)for i=1, len doprivate.svr.response_map.remove_listener(public, private.tEvt[i])endprivate.tEvt = nilprivate.svr = nilendreturn publicend--执行函数消息处理自定义者function new_clk_fun_on_action(_svr, _local_evt, _t_action_evt, _callback)local t_msg = {}t_msg.in_msg = nilt_msg.out_msg = nil--回调函数要求if nil == _callback then_callback = function( _t_msg ) return true endend--实现local lst = new_user_story_action_listen()lst.init(_svr, _t_action_evt)function lst.on_action( _t_msg )t_msg.in_msg = _t_msgt_msg.out_msg = new_story_msg(_local_evt)if _callback( t_msg ) thensend_msg_to_server(_svr, t_msg.out_msg )endendfunction lst.get_local_evt(  )return _local_evtendreturn lstend--定时函数消息处理自定义者G_STORY_TIMER_ACTION_FUN = {}API_AddLUAReqFunc("onStoryTimeCallBack")function onStoryTimeCallBack(_par1, _par2)local tgrID = API_GetCurTriggerID()local lst = G_STORY_TIMER_ACTION_FUN[tgrID]if nil ~= lst thenlocal ret = lst.timer_callback(_par1, _par2)if nil ~= ret thenAPI_DestroyTriggerG(tgrID)endelseAPI_DestroyTriggerG(tgrID)endendfunction new_clk_timer_on_action(_svr, _local_evt, _t_action_evt, _get_time_step_fun, _callback)local t_msg = {}t_msg.in_msg = nilt_msg.out_msg = nil--回调函数要求if nil == _get_time_step_fun then_get_time_step_fun = function( _t_msg ) return true endendif nil == _callback then_callback = function( _par1, _par2, _t_msg) return true endend--实现local lst = new_user_story_action_listen()lst.init(_svr, _t_action_evt)function lst.timer_callback( _par1, _par2 )local ret = _callback( _par1, _par2, t_msg )if ret thensend_msg_to_server(_svr, t_msg.out_msg )endreturn retendfunction lst.on_action( _t_msg )--尝试生成触发器t_msg.in_msg = _t_msgt_msg.out_msg = new_story_msg(_local_evt)lst.tgrID = API_CreateTimerTriggerG(0, 0, _get_time_step_fun( t_msg ), -1, "onStoryTimeCallBack")if nil ~= lst.tgrID thenG_STORY_TIMER_ACTION_FUN[ lst.tgrID ] = lstelseAPI_TraceError("new_clk_timer_on_action.on_action is failed!")endendlocal old_uninit = lst.uninitfunction lst.uninit()if nil ~= lst.tgrID thenG_STORY_TIMER_ACTION_FUN[ lst.tgrID ] = nilendold_uninit()endfunction lst.get_local_evt(  )return _local_evtendreturn lstend--死亡函数消息处理自定义者G_STORY_DIE_ACTION_FUN = {}API_AddLUAReqFunc("onStoryDieCallBack")function onStoryDieCallBack(_par1, _par2, Type, FastID, KillerType, KillerID, MonsterID, MapID, PosX, PosY)local tgrID = API_GetCurTriggerID()local lst = G_STORY_DIE_ACTION_FUN[tgrID]if nil ~= lst thenlocal ret = lst.die_callback(_par1, _par2, Type, FastID, KillerType, KillerID, MonsterID, MapID, PosX, PosY)if nil ~= ret thenAPI_DestroyTriggerG(tgrID)endelseAPI_DestroyTriggerG(tgrID)endendfunction new_clk_die_on_action(_svr, _local_evt, _t_action_evt, _get_obj_uid_fun, _callback)local t_msg = {}t_msg.in_msg = nilt_msg.out_msg = nil--回调函数要求if nil == _get_obj_uid_fun then_get_obj_uid_fun = function( _t_msg ) return true endendif nil == _callback then_callback = function( _par1, _par2, Type, FastID, KillerType, KillerID, MonsterID, MapID, PosX, PosY, _t_msg) return true endendlocal lst = new_user_story_action_listen()lst.init(_svr, _t_action_evt)function lst.die_callback( _par1, _par2, Type, FastID, KillerType, KillerID, MonsterID, MapID, PosX, PosY )local ret = _callback( _par1, _par2, Type, FastID, KillerType, KillerID, MonsterID, MapID, PosX, PosY, t_msg )if ret thensend_msg_to_server(_svr, t_msg.out_msg )endreturn retendfunction lst.on_action( _t_msg )--尝试生成触发器t_msg.in_msg = _t_msgt_msg.out_msg = new_story_msg(_local_evt)lst.tgrID = API_CreateDieTriggerG(0, 0, 0, _get_obj_uid_fun( t_msg ), "onStoryDieCallBack")if nil ~= lst.tgrID thenG_STORY_DIE_ACTION_FUN[ lst.tgrID ] = lstelseAPI_TraceError("new_clk_die_on_action.on_action is failed!")endendlocal old_uninit = lst.uninitfunction lst.uninit()if nil ~= lst.tgrID thenG_STORY_DIE_ACTION_FUN[ lst.tgrID ] = nilendold_uninit()endfunction lst.get_local_evt(  )return _local_evtendreturn lstend-----------------------------------------------------提供转换函数function clk_data_to_fun( _data )local function do_clk_bind1()return _dataendreturn do_clk_bind1end--提供绑定函数function clk_bind_fun_data( _fun, t_par )local function do_clk_bind_fun_data()if nil == _fun thenreturn trueendif nil == t_par thenreturn _fun()endlocal len = table.getn( t_par )if 0 == len thenreturn _fun()elseif 1 == len thenreturn _fun(t_par[1])elseif 2 == len thenreturn _fun(t_par[1], t_par[2])elseif 3 == len thenreturn _fun(t_par[1], t_par[2], t_par[3])elseif 4 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4])elseif 5 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5])elseif 6 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5], t_par[6])elseif 7 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5], t_par[6], t_par[7])elseif 8 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5], t_par[6], t_par[7], t_par[8])elseif 9 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5], t_par[6], t_par[7], t_par[8], t_par[9])elseif 10 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5], t_par[6], t_par[7], t_par[8], t_par[9], t_par[10])elseif 11 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5], t_par[6], t_par[7], t_par[8], t_par[9], t_par[10], t_par[11])elseif 12 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5], t_par[6], t_par[7], t_par[8], t_par[9], t_par[10], t_par[11], t_par[12])elseif 13 == len thenreturn _fun(t_par[1], t_par[2], t_par[3], t_par[4], t_par[5], t_par[6], t_par[7], t_par[8], t_par[9], t_par[10], t_par[11], t_par[12], t_par[13])elsemyPrint("clk_bind_fun_data实现",1)--------------------return trueendendreturn do_clk_bind_fun_dataend--提供绑定消息类型的函数function clk_story_fun_on_action_bind_in_msg( _msg_sign, _fun )local function do_clk_story_fun_on_action_bind_in_msg( _t_msg )if nil == _fun thenreturn trueendlocal t_par = _t_msg.in_msg[_msg_sign]local ret = nilif nil == t_par thenret =  _fun()elselocal fun = clk_bind_fun_data(_fun, t_par)ret = fun()endreturn retendreturn do_clk_story_fun_on_action_bind_in_msgend--将函数返回结果作为消息输出function clk_story_bind_ret_to_out_msg(_fun)local function do_clk_story_bind_ret_to_out_msg( _t_msg )local r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15 = _fun(_t_msg)_t_msg.out_msg.pre_msg_ret = {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15}return r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15endreturn do_clk_story_bind_ret_to_out_msgend--显示上条消息的结果function show_pre_msg_ret(_t_msg)--把用户消息转发出去if nil ~= _t_msg.in_msg thenif nil ~= _t_msg.in_msg.pre_msg_ret thenmyPrint("show_pre_msg_ret " .. _t_msg.in_msg.EVENT, 1)GameAPI_Print(_t_msg.in_msg.pre_msg_ret)local _evt = _t_msg.out_msg.EVENT_t_msg.out_msg = _t_msg.in_msg_t_msg.in_msg = nil_t_msg.out_msg.EVENT = _evtendendend--将上条消息的结果转为本消息处理函数的参数function clk_pre_msg_ret_to_par( _fun )local function do_clk_pre_msg_ret_to_par( _t_msg )if nil ~= _t_msg.in_msg.pre_msg_ret thenlocal fun = clk_bind_fun_data(_fun, _t_msg.in_msg.pre_msg_ret)return fun()elsereturn falseendendreturn do_clk_pre_msg_ret_to_parend--必返回truefunction clk_return_true_for_0_par(_fun)local function do_clk_return_true()if nil ~= _fun then_fun()endreturn trueendreturn do_clk_return_trueendfunction clk_return_true_for_1_par(_fun)local function do_clk_return_true(_par1)if nil ~= _fun then_fun(_par1)endreturn trueendreturn do_clk_return_trueend--结果取反function clk_turn_bool_ret_for_1_par(_fun)local function do_clk_turn_bool_ret_for_1_par(_par1)if nil == _fun thenreturn trueendlocal ret = _fun(_par1)if ret thenreturn falseelsereturn trueendendreturn do_clk_turn_bool_ret_for_1_parend--测试函数function test_fun(_text)myPrint(_text, 1)end--or指令function story_or_msg()local public = {}local had_pass = falsefunction public.init(_t_msg)--把用户消息转发出去if nil ~= _t_msg.in_msg thenlocal _evt = _t_msg.out_msg.EVENT_t_msg.out_msg = _t_msg.in_msg_t_msg.in_msg = nil_t_msg.out_msg.EVENT = _evtend--设置标志had_pass = falsereturn trueendfunction public.or_logic(_t_msg)if had_pass thenreturn falseend--把用户消息转发出去if nil ~= _t_msg.in_msg thenlocal _evt = _t_msg.out_msg.EVENT_t_msg.out_msg = _t_msg.in_msg_t_msg.in_msg = nil_t_msg.out_msg.EVENT = _evtend--设置标志had_pass = truereturn trueendreturn publicend--and指令function story_and_msg()local public = {}local had_pass = falselocal pass_case = {}function public.init( _t_evt )local function do_init(_t_msg)--把用户消息转发出去if nil ~= _t_msg.in_msg thenlocal _evt = _t_msg.out_msg.EVENT_t_msg.out_msg = _t_msg.in_msg_t_msg.in_msg = nil_t_msg.out_msg.EVENT = _evtend--设置标志pass_case = {}local len = table.getn(_t_evt)for i=1, len dopass_case[ _t_evt[i] ] = falseendhad_pass = falsereturn trueendreturn do_initendfunction public.and_logic(_t_msg)if had_pass thenreturn falseendpass_case[ _t_msg.in_msg.EVENT ] = truelocal no_pass = falsefor i,v in pairs( pass_case ) doif false == v thenno_pass = truebreakendendif no_pass thenreturn falseend--把用户消息转发出去if nil ~= _t_msg.in_msg thenlocal _evt = _t_msg.out_msg.EVENT_t_msg.out_msg = _t_msg.in_msg_t_msg.in_msg = nil_t_msg.out_msg.EVENT = _evtend--设置标志had_pass = truereturn trueendreturn publicend--[[--必返回truefunction clk_return_true_for_par1(_fun)local function do_clk_return_true(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9, _par10, _par1, _par11, _par12, _par13, _par14, _par15)--如果是C++,则这里应该按_fun类型进行模板配对的,但执行期语言Lua不用管这些 :)if nil ~= _par15 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9, _par10, _par1, _par11, _par12, _par13, _par14, _par15)elseif nil ~= _par14 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9, _par10, _par1, _par11, _par12, _par13, _par14)elseif nil ~= _par13 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9, _par10, _par1, _par11, _par12, _par13)elseif nil ~= _par12 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9, _par10, _par1, _par11, _par12)elseif nil ~= _par11 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9, _par10, _par1, _par11)elseif nil ~= _par10 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9, _par10)elseif nil ~= _par9 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9)elseif nil ~= _par8 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8)elseif nil ~= _par7 then_fun(_par1, _par2, _par3, _par4, _par5, _par6, _par7)elseif nil ~= _par6 then_fun(_par1, _par2, _par3, _par4, _par5, _par6)elseif nil ~= _par5 then_fun(_par1, _par2, _par3, _par4, _par5)elseif nil ~= _par4 then_fun(_par1, _par2, _par3, _par4)elseif nil ~= _par3 then_fun(_par1, _par2, _par3)elseif nil ~= _par2 then_fun(_par1, _par2)elseif nil ~= _par1 then_fun(_par1)else_fun()endreturn trueendreturn do_clk_return_trueend--]]


 

--[[ file name : story_base.lua author  :  Clark/陈泽丹 created :  2011-10-10 purpose :  地图基类 --]]-- 地图类型function story_new_map_data( _szName, _UID )local public = {}public.TYPE = "story_new_map_data"public.m_world_name = _szNamepublic.m_world_obj = _UIDreturn publicend--是否地图类型(出于效率考虑,类库的API内部将不做此判断(即默认API传进的参数是正确的), 此函数仅提供应用层去为保证参数正确使用)function story_is_map_data( _map_data )if "story_new_map_data" == _map_data.TYPE thenreturn trueendreturn falseend--删除地图function story_delete_map( _map_data )API_DestroyEctype(_map_data.m_world_obj)_map_data.m_world_obj = 0end--是否功能类型function story_is_fun( _par)if type(is_map_data) == type(_par) thenreturn trueendreturn falseend--是否存在function story_is_here(_map_uid, _role_uid)if -1 == _map_uid thenreturn falseendlocal temp = LuaPack_API_GetActorMapID(_role_uid)if -1 == temp thenreturn falseendif _map_uid == temp thenreturn trueelsereturn falseendend--组操作function story_for_each(_t, _s, _e, _fun)if nil == _t or nil == _s or nil == _e or nil == _fun thenreturn {}endfor i=_s, _e do_fun( _t[i] )endend--广播信息function story_broadcast(_t_role_id, _text, _dType)local function do_story_broadcast( _role_uid )API_ActorSendMsg(_role_uid, 2, _text)endstory_for_each(_t_role_id, 1, table.getn(_t_role_id), do_story_broadcast)end--接收玩家function story_recv_roles( _map_data, _x, _y, _t_role_id )local function do_story_here_recv_roles(_role_uid)--API_IsBlockTile(map,mapx,mapy,0)API_ActorGoToMap(_role_uid, _map_data.m_world_obj,  _x, _y)endstory_for_each(_t_role_id, 1, table.getn(_t_role_id), do_story_here_recv_roles)end--广播状态function story_add_state(_t_role_id, _state, _time)local function do_story_here_set_state( _role_uid )API_ActorAddStatus( _role_uid, _state, _time )endstory_for_each(_t_role_id, 1, table.getn(_t_role_id), do_story_here_set_state)end--消除状态function story_remove_state(_t_role_id, _state)local function do_story_here_remove_state( _role_uid )API_ActorRemoveStatus( _role_uid, _state )endstory_for_each(_t_role_id, 1, table.getn(_t_role_id), do_story_here_remove_state)end--查询有无某状态function story_has_state(_role_uid, _state, _is_main_id)if nil == _is_main_id then _is_main_id = 0 endlocal ret = API_ActorFindStatus(_role_uid, _state, _is_main_id)return retend--从集合里取出属于指定地图的玩家function story_get_roles_in_here( _t_map_data, _t_role_id )local t = {}local function do_story_get_roles_in_here( _role_uid )local len = table.getn(_t_map_data)for i=1, len doif story_is_here(_t_map_data[i].m_world_obj, _role_uid ) thent[ table.getn(t) + 1 ] = _role_uidreturnendendendstory_for_each(_t_role_id, 1, table.getn(_t_role_id), do_story_get_roles_in_here)return tend--所有英雄到达function story_all_roles_to( _map_data, _x, _y, _r, _t_role_id )local len = table.getn(_t_role_id)for i=1, len doif false == story_is_here(_map_data.m_world_obj, _t_role_id[i] ) thenreturn falseendlocal x = API_GetActorPosX(_t_role_id[i])local y = API_GetActorPosY(_t_role_id[i])if math.abs(x - _x) > _r thenreturn falseendif math.abs(y - _y) > _r thenreturn falseendendreturn trueend--有若干英雄到达function story_some_roles_to( _map_data, _x, _y, _r, _t_role_id )local len = table.getn(_t_role_id)for i=1, len doif story_is_here(_map_data.m_world_obj, _t_role_id[i] ) thenlocal x = API_GetActorPosX(_t_role_id[i])local y = API_GetActorPosY(_t_role_id[i])if math.abs(x - _x) <= _r thenif math.abs(y - _y) <= _r thenreturn trueendendendendreturn falseend--所有指区域都有人到达function story_all_area_has_role(_t_area, _t_role_id)local len = table.getn(_t_area)for i=1, len doif false == story_some_roles_to(_t_area[i][1], _t_area[i][2],  _t_area[i][3], _t_area[i][4], _t_role_id) thenreturn falseendendreturn trueend--地雷广播function story_area_broadcast(_map_data, _x, _y, _r, _text, _type, _t_role_id)if story_some_roles_to( _map_data, _x, _y, _r, _t_role_id ) thenmyPrint("story_area_broadcast true", 1)story_broadcast(_t_role_id, _text, _type)return trueendmyPrint("story_area_broadcast false", 1)return falseend


 

--[[ file name : story_base.lua author  :  Clark/陈泽丹 created :  2012-9-10 purpose :  地图基类 --]]-- NPC类型function story_new_npc_data(_szNpcID, _szNpcName, _tNpcState, _CurStateID, _MapUID, _BormX, _BormY, _BormDir )local public = {}public.TYPE = "story_new_npc_data"public.m_id = _szNpcIDpublic.m_name = _szNpcNamepublic.m_t_state = _tNpcStatepublic.m_cur_state_index = _CurStateID or 1public.m_pos = {_MapUID, _BormX, _BormY}public.dir = _BormDir or 4public.uid = nilreturn publicend--是否NPC类型(出于效率考虑,类库的API内部将不做此判断(即默认API传进的参数是正确的), 此函数仅提供应用层去为保证参数正确使用)function story_is_npc_data( _npc_data )if "story_new_npc_data" == _npc_data.TYPE thenreturn trueendreturn falseend--创建NPCfunction story_create_npc(_npc_data)if nil == _npc_data.uid then_npc_data.uid = API_CreateMonster(_npc_data.m_pos[1], _npc_data.m_t_state[_npc_data.m_cur_state_index],_npc_data.m_pos[2], _npc_data.m_pos[3], _npc_data.dir, 0, -1)endend--删除NPCfunction story_kill_npc(_npc_data)if nil ~= _npc_data.uid thenAPI_DestroyMonster(_npc_data.uid)_npc_data.uid = nilendend--获得位置function story_get_npc_pos(_npc_data)if nil == _npc_data.uid thenreturn _npc_data.m_pos[1], _npc_data.m_pos[2],_npc_data.m_pos[3]endlocal x = API_GetMonsterPosX(_npc_data.uid )local y = API_GetMonsterPosY(_npc_data.uid )return _npc_data.m_pos[1], x, yend--获得名字function story_get_npc_name(_npc_data)if nil == _npc_data.uid  thenreturn _npc_data.m_nameendreturn API_GetMonsterNameByID( _npc_data.m_t_state[_npc_data.m_cur_state_index] )end--获取怪物属性值function story_l_get_npc_effect(_npc_data, _effect_id)--myPrint("执行x_y_GetPos!", 1)if nil == _npc_data.uid thenreturnendreturn API_MonsterGetPropNum(_npc_data.uid, _effect_id)end--设置怪物属性function story_set_npc_effect(_effect_id, _time)if nil == _npc_data.uid thenreturnendreturn API_MonsterAddStatus(_npc_data.uid, _effect_id, _time)end


 

--[[ file name : GM_Test.lua author  :  Clark/陈泽丹 created :  2011-10-10 purpose :  地图基类 --]]GM_msg_svr = new_story_server()new_clk_fun_on_action(GM_msg_svr, 0, {1}, clk_return_true_for_1_par( clk_story_fun_on_action_bind_in_msg("GM", story_broadcast) ) )new_clk_fun_on_action(GM_msg_svr, 0, {2}, clk_return_true_for_1_par( clk_story_fun_on_action_bind_in_msg("GM", story_recv_roles) ) )new_clk_fun_on_action(GM_msg_svr, 0, {3}, clk_return_true_for_1_par( clk_story_fun_on_action_bind_in_msg("GM1", story_add_state) ) )new_clk_fun_on_action(GM_msg_svr, 0, {3}, clk_return_true_for_1_par( clk_story_fun_on_action_bind_in_msg("GM2", story_add_state) ) )new_clk_fun_on_action(GM_msg_svr, 0, {4}, clk_return_true_for_1_par( clk_story_fun_on_action_bind_in_msg("GM1", story_remove_state) ) )new_clk_fun_on_action(GM_msg_svr, 0, {4}, clk_return_true_for_1_par( clk_story_fun_on_action_bind_in_msg("GM2", story_remove_state) ) )new_clk_fun_on_action(GM_msg_svr, 0, {5}, clk_return_true_for_1_par( clk_story_fun_on_action_bind_in_msg("GM", story_get_roles_in_here) ) )new_clk_fun_on_action(GM_msg_svr, 0, {6}, clk_story_fun_on_action_bind_in_msg("GM", story_has_state) )new_clk_fun_on_action(GM_msg_svr, 0, {7}, clk_story_fun_on_action_bind_in_msg("GM", story_all_roles_to) )new_clk_fun_on_action(GM_msg_svr, 0, {8}, clk_story_fun_on_action_bind_in_msg("GM", story_some_roles_to) )new_clk_fun_on_action(GM_msg_svr, 0, {9}, clk_story_fun_on_action_bind_in_msg("GM", story_all_area_has_role) )or_msg = story_or_msg()t_a = new_clk_fun_on_action(GM_msg_svr, 11, {10}, or_msg.init )t_b = new_clk_fun_on_action(GM_msg_svr, 12, {t_a.get_local_evt()}, clk_return_true_for_0_par( clk_bind_fun_data(test_fun, {"or case 1"}) ) )t_c = new_clk_fun_on_action(GM_msg_svr, 13, {t_a.get_local_evt()}, clk_return_true_for_0_par( clk_bind_fun_data(test_fun, {"or case 2"}) ) )t_d = new_clk_fun_on_action(GM_msg_svr, 14, {t_b.get_local_evt(), t_c.get_local_evt()}, or_msg.or_logic)t_e = new_clk_fun_on_action(GM_msg_svr, 0,  {t_d.get_local_evt()}, clk_return_true_for_0_par( clk_bind_fun_data(test_fun, {"Pass or"}) ) )and_msg = story_and_msg()t_a1 = new_clk_fun_on_action(GM_msg_svr, 16, {15}, and_msg.init({17, 18}) )t_b1 = new_clk_fun_on_action(GM_msg_svr, 17, {t_a1.get_local_evt()}, clk_return_true_for_0_par( clk_bind_fun_data(test_fun, {"and case 1"}) ) )t_c1 = new_clk_fun_on_action(GM_msg_svr, 18, {t_a1.get_local_evt()}, clk_return_true_for_0_par( clk_bind_fun_data(test_fun, {"and case 2"}) ) )t_d1 = new_clk_fun_on_action(GM_msg_svr, 19, {t_b1.get_local_evt(), t_c1.get_local_evt()}, and_msg.and_logic)t_e1 = new_clk_fun_on_action(GM_msg_svr, 0,  {t_d1.get_local_evt()}, clk_return_true_for_0_par( clk_bind_fun_data(test_fun, {"Pass and"}) ) )t_a2 = new_clk_timer_on_action(GM_msg_svr, 21, {20}, clk_data_to_fun(1), clk_return_true_for_0_par() )t_b2 = new_clk_fun_on_action(GM_msg_svr, 20, {t_a2.get_local_evt()}, clk_turn_bool_ret_for_1_par( clk_bind_fun_data(story_area_broadcast, {story_new_map_data("1", 1357), 307,153, 4, "地雷广播引爆", 2, {133196029}}) ) )function test_x_y(_world, _x, _y)story_recv_roles(story_new_map_data("1", _world), _x+1, _y, {133196029})endgm_npc = story_new_npc_data("GM_NPC", "GM_NPC", {105}, 1, 1357, 307, 153, 4 )new_clk_fun_on_action(GM_msg_svr, 101,  {100}, clk_return_true_for_0_par( clk_bind_fun_data(story_create_npc, {gm_npc}) ) )new_clk_fun_on_action(GM_msg_svr, 102,  {101}, clk_return_true_for_1_par( clk_story_bind_ret_to_out_msg( clk_bind_fun_data(story_get_npc_pos, {gm_npc}) ) ) )new_clk_fun_on_action(GM_msg_svr, 103,  {101}, clk_return_true_for_1_par( clk_story_bind_ret_to_out_msg( clk_bind_fun_data(story_get_npc_name, {gm_npc}) ) ) )new_clk_fun_on_action(GM_msg_svr, 104,  {102}, clk_return_true_for_1_par( show_pre_msg_ret) )new_clk_fun_on_action(GM_msg_svr, 105,  {104}, clk_return_true_for_1_par( clk_pre_msg_ret_to_par(test_x_y) ) )new_clk_fun_on_action(GM_msg_svr, 106,  {103}, clk_return_true_for_1_par( show_pre_msg_ret) )new_clk_fun_on_action(GM_msg_svr, 0,  {110}, clk_return_true_for_0_par( clk_bind_fun_data(story_kill_npc, {gm_npc}) ) )function GM_CLK_test_story_base(Type)-- test_id = 133196029local function new_story_broadcast_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(1)msg.GM = {}msg.GM[1] = {133196029}msg.GM[2] = "测试成功"msg.GM[3] = 2return msgendlocal function new_story_recv_roles_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(2)msg.GM = {}msg.GM[1] = story_new_map_data("1", _Par2)msg.GM[2] = _Par3msg.GM[3] = _Par4msg.GM[4] = {133196029}return msgendlocal function new_story_add_state_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(3)msg.GM1 = {}msg.GM1[1] = {133196029}msg.GM1[2] = 1501001msg.GM1[3] = 99999999msg.GM2 = {}msg.GM2[1] = {133196029}msg.GM2[2] = 776001msg.GM2[3] = 99999999return msgendlocal function new_story_remove_state_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(4)msg.GM1 = {}msg.GM1[1] = {133196029}msg.GM1[2] = 1501001msg.GM2 = {}msg.GM2[1] = {133196029}msg.GM2[2] = 776001return msgendlocal function new_story_get_roles_in_here_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(5)msg.GM = {}msg.GM[1] = {story_new_map_data("1", _Par2)}msg.GM[2] = {133196029}return msgendlocal function new_story_has_state_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(6)msg.GM = {}msg.GM[1] = 133196029msg.GM[2] = 1501001msg.GM[3] = 0return msgendlocal function new_story_all_roles_to_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(7)msg.GM = {}msg.GM[1] = story_new_map_data("1", _Par2)msg.GM[2] = _Par3msg.GM[3] = _Par4msg.GM[4] = 4msg.GM[5] = {133196029}return msgendlocal function new_story_some_roles_to_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(8)msg.GM = {}msg.GM[1] = story_new_map_data("1", _Par2)msg.GM[2] = _Par3msg.GM[3] = _Par4msg.GM[4] = 4msg.GM[5] = {133196029}return msgendlocal function new_story_all_area_has_role_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(9)msg.GM = {}msg.GM[1] = {{story_new_map_data("1", _Par2), _Par3, _Par4, 4}}msg.GM[2] = {133196029}return msgendlocal function new_story_or_msg_init_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(10)return msgendlocal function new_story_and_msg_init_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(15)return msgendlocal function new_clk_timer_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(20)return msgendlocal function new_create_npc_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(100)return msgendlocal function new_kill_npc_msg(_Par1, _Par2, _Par3, _Par4)local msg = new_story_msg(110)return msgendif Type == "CLK_调试指令" thenlocal Par1 = API_RequestGetNumber(2)local Par2 = API_RequestGetNumber(3)local Par3 = API_RequestGetNumber(4)local Par4 = API_RequestGetNumber(5)if 1 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_broadcast_msg(Par1, Par2, Par3, Par4) )elseif 2 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_recv_roles_msg(Par1, Par2, Par3, Par4) )elseif 3 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_add_state_msg(Par1, Par2, Par3, Par4) )elseif 4 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_remove_state_msg(Par1, Par2, Par3, Par4) )elseif 5 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_get_roles_in_here_msg(Par1, Par2, Par3, Par4) )elseif 6 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_has_state_msg(Par1, Par2, Par3, Par4) )elseif 7 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_all_roles_to_msg(Par1, Par2, Par3, Par4) )elseif 8 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_some_roles_to_msg(Par1, Par2, Par3, Par4) )elseif 9 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_all_area_has_role_msg(Par1, Par2, Par3, Par4) )elseif 10 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_or_msg_init_msg(Par1, Par2, Par3, Par4) )elseif 15 == Par1 thensend_msg_to_server( GM_msg_svr, new_story_and_msg_init_msg(Par1, Par2, Par3, Par4) )elseif 20 == Par1 thensend_msg_to_server( GM_msg_svr, new_clk_timer_msg(Par1, Par2, Par3, Par4) )elseif 100 == Par1 thensend_msg_to_server( GM_msg_svr, new_create_npc_msg(Par1, Par2, Par3, Par4) )elseif 110 == Par1 thensend_msg_to_server( GM_msg_svr, new_kill_npc_msg(Par1, Par2, Par3, Par4) )endendend


 

热点排行