Files
mir_server/server/LogicServer/entitysystem/GmCommandHandle.cpp
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

5178 lines
157 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "StdAfx.h"
#include "ChatSystem.h"
#include "ctype.h"
#include "../base/Container.hpp"
// 方便组批量修改的宏定义
#define GM_LEVEL0 0
#define GM_LEVEL1 1
#define GM_LEVEL2 2
#define GM_LEVEL3 3
#define GM_LEVEL4 4
#define GM_LEVEL5 5
#define GM_LEVEL6 6
#define GM_LEVEL7 7
#define GM_LEVEL8 8
#ifndef _DEBUG
#define GM_LEVEL9 9
#else
#define GM_LEVEL9 0
#endif
#define GM_LEVEL10 10
//GM指令是以@开头的命令,使用空格分隔,比如@additem 102 1 用[]括起的参数不输入则使用默认
const CChatSystem::GMHANDLE CChatSystem::GmCommandHandlers[]=
{
{"Go", GM_LEVEL9, &CChatSystem::GmGo}, // 移动到指定地图坐标 @Go 地图名(或场景id) X(default) Y(default)
{"enter", GM_LEVEL9, &CChatSystem::GMEnterFuben}, // 移动到指定地图坐标 @Go 地图名
{"Monster", GM_LEVEL9, &CChatSystem::GmMonster}, // 生成怪物 @Monster 怪物名(或id) 数量(1) 存活时间(0) 等级(0) 血量比(100)
{"Skill", GM_LEVEL9, &CChatSystem::GmLearnSkill}, // 学习技能 @Skill 技能ID 技能等级
{"DelSkill", GM_LEVEL9, &CChatSystem::GmDeleteSkill}, // 删除技能 @DelSkill 技能ID
{"PR", GM_LEVEL9, &CChatSystem::GmPR}, // 测试坐标旋转 @PR 相对位置x 相对位置y
{"AR", GM_LEVEL9, &CChatSystem::GmAR}, // 测试坐标旋转 @AR 鼠标位置x 鼠标位置y 相对位置x 相对位置y
{"AddBuff", GM_LEVEL9, &CChatSystem::GmAddBuff}, // 添加BUFF @AddBuff buffId
{"DelBuff", GM_LEVEL9, &CChatSystem::GmDelBuff}, // 删除BUFF @DelBuff buffId
{"CatchMonster", GM_LEVEL9, &CChatSystem::GmCatchMonster}, // 抓取怪物 @CatchMonster 怪物名
{"Item", GM_LEVEL9, &CChatSystem::GmAddItem}, // 添加物品 @AddItem 物品id 物品num(默认为1)
{"DelItem", GM_LEVEL9, &CChatSystem::GmDelItem}, // 删除物品 @DelItem 物品id 物品num(默认为1)
{"WorldMessage", GM_LEVEL9, &CChatSystem::WorldMessage}, // 系统公告消息 @WorldMessage 消息内容 公告提示类型
{"Level", GM_LEVEL9, &CChatSystem::GmSetSelfLevel}, // 设置自己的等级 @Level 等级
{"AddValue", GM_LEVEL9, &CChatSystem::AddValue}, // 增加数值 @AddValue type num
{"SetValue", GM_LEVEL9, &CChatSystem::SetValue}, // 设定数值 @SetValue type num
{"DropItem", GM_LEVEL9, &CChatSystem::GmDropItem}, // 掉落物品 @DropItem type num
{"Info", GM_LEVEL9, &CChatSystem::Info}, // 查询信息 @info xxx arg
{"drop", GM_LEVEL9, &CChatSystem::Drop}, // 掉落表 @drop id
{"AddMoney", GM_LEVEL9, &CChatSystem::GmAddMoney}, // 添加金钱 @AddMoney 金钱类型 金钱数量 (类型:0绑定金币 1金币 2绑定元宝 3元宝
{"addCircleNum", GM_LEVEL9, &CChatSystem::GMAddCircleNum}, // 添加没转人数 @addCircleNum 转数 人数
{"deathdrop", GM_LEVEL9, &CChatSystem::GMDeathDropItem}, // 添加没转人数 @deathdrop
{"addservermail", GM_LEVEL9, &CChatSystem::GmAddServerMail}, // 添加全服邮件 @addservermail [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
{"setJm", GM_LEVEL9, &CChatSystem::GMSetJMLv}, // 设置经脉等级 @setJm lv
{"setJyEd", GM_LEVEL9, &CChatSystem::GMSetTradingQuota}, // 设置交易额度 @setJyEd value
{"setBless", GM_LEVEL9, &CChatSystem::GMSetBlessValue}, // 设置祝福值 @setBless value
{"setQuestState", GM_LEVEL9, &CChatSystem::GMSetQuestState}, // 设置任务状态 @setQuestState id state
{"clearQuestlog", GM_LEVEL9, &CChatSystem::GMClearQuestlog}, // 清空任务记录 @clearQuestlog
{"Attr", GM_LEVEL9, &CChatSystem::GmAttr}, // 设置 @Attr attrId value
{"MonthCard", GM_LEVEL9, &CChatSystem::GmMonthCard}, // 设置 @Attr attrId value
{"DamageInfo", GM_LEVEL0, &CChatSystem::GmDamageInfo}, // 设置输出伤害 @damageinfo 1/0
{"make", GM_LEVEL9, &CChatSystem::GmMakeRealItem}, // 造物品 @Make [物品id] [数量] 场景id 怪物id
{"ChgJob", GM_LEVEL9, &CChatSystem::GMChgJob}, // 改变职业 @ChgJob 职业id 性别id
{"addPet", GM_LEVEL9, &CChatSystem::GMADDLootPet}, // 改变职业 @ChgJob 职业id 性别id
//5级权限以上才能使用
{"Move", GM_LEVEL9, &CChatSystem::GmMove}, // 移动到指定地图 @Move 地图名称
{"Monster2", GM_LEVEL9, &CChatSystem::GmMonster2 }, // 生成怪物 @monster2 怪物名字 外形id
{"AddItem", GM_LEVEL9, &CChatSystem::GmAddItem}, //添加物品 @AddItem 物品ID [数量] [品质] [强化等级]
{"AddPet2", GM_LEVEL9, &CChatSystem::GmAddPet }, //添加宠物 @addpet 宠物的名字 [强化] [品质]
{"AddHero", GM_LEVEL9, &CChatSystem::GmAddHero }, //添加英雄 @AddHero 英雄ID英雄阶英雄等级
{"DoMapActor", GM_LEVEL9, &CChatSystem::GmDoMapActor }, //
{"Shutup", GM_LEVEL9, &CChatSystem::GmShutup}, //禁言 @Shutup 角色名称 时间(分钟)
{"AddExp", GM_LEVEL9, &CChatSystem::GmAddSelfExp}, //添加自己的经验 @AddExp 经验值
{"superman", GM_LEVEL9, &CChatSystem::GmSetSuperMan}, //添加任务dQuest 任务id
{"ReGoto", GM_LEVEL9, &CChatSystem::GmReGoto}, //传送至指定角色身边 @ReGoto 角色名称
{"Who", GM_LEVEL9, &CChatSystem::GmWho}, //获取服务器在线人数 @Who
{"AdjustExp", GM_LEVEL9, &CChatSystem::GmAdjustExp}, //设置别人的经验 @AdjustExp 玩家的名字 数量
{"ReleaseShutup", GM_LEVEL9, &CChatSystem::ReleaseShutup}, //将指定角色禁言状态解除 @ReleaseShutup 角色名称
{"ShutupList", GM_LEVEL9, &CChatSystem::ShutupList}, //查看禁言列表 @ShutupList
{"NotifyMsg", GM_LEVEL9, &CChatSystem::NotifyMsg}, //给指定玩家发消息 @NotifyMsg 角色名称 消息内容
{"AdjustLevel", GM_LEVEL9, &CChatSystem::GmAdjustLevel}, //调整目标玩家的等级 @adjustlevel 玩家的名字 玩家的等级
{"MoveToNPC", GM_LEVEL9, &CChatSystem::GmMoveToNPC}, //移动到指定地图指定NPC位置 @MoveToNPC 地图名称 NPC名称
{"kick", GM_LEVEL9, &CChatSystem::GmKick}, //踢人 @kick 玩家名字
{"sethide", GM_LEVEL9, &CChatSystem::GmSetActorHide}, //设置玩家隐身 @sethide 玩家名称 是否隐身0 显示 1 隐身)
{"setgm", GM_LEVEL9, &CChatSystem::GmSetGm}, //设置Gm的头衔 @setgm 添加头衔0 取消 1 添加)
{"Recall", GM_LEVEL9, &CChatSystem::GmRecall}, //将指定角色传送到身边 @Recall 角色名称
{"targetIntPro", GM_LEVEL9, &CChatSystem::GmSetTargetIntPro}, //设置目标属性 @targetIntPro 属性ID 属性的值
{"TraceSystem", GM_LEVEL9, &CChatSystem::GmTraceSystem}, //开启或者关闭系统的网络消息输出 @TraceSystem
{"ReloadNPC", GM_LEVEL9, &CChatSystem::GmRefresh}, //刷新挂在NPC身上的脚本([SYS FUNCTION:全局功能NPC, SYS MONSTER:全局怪物脚本]) @ReloadNPC NPC的名字
{"RSF", GM_LEVEL9, &CChatSystem::GmReloadGlobalNpc},//重新载入全局npc的脚本 @RSF
{"RS", GM_LEVEL9, &CChatSystem::GmReloadScriptNpc},//重新载入角色所在的场景的所有npc的脚本 @RS
{"ReloadLang", GM_LEVEL9, &CChatSystem::ReloadLang}, //刷新语言包 @ReloadLang
{"ReloadItem", GM_LEVEL9, &CChatSystem::ReloadItem}, //刷新道具配置 @ReloadItem
{"ReloadMonster", GM_LEVEL9, &CChatSystem::ReloadMonster}, //刷新怪物配置 @ReloadMonster
{"call", GM_LEVEL9, &CChatSystem::CallScriptFunc}, //调用脚本函数 @call 新手老人 getNpc,1,2 :注意是执行本人所在的场景的npc的脚本
{"callf", GM_LEVEL9, &CChatSystem::CallScriptFuncNoEntity}, //调用脚本函数 @callf 新手老人 getNpc,1,2 :注意是执行本人所在的场景的npc的脚本不传入实体参数
{"AddTargetHero", GM_LEVEL9, &CChatSystem::GmAddTargetHero}, //给目标玩家的添加英雄 @AddTargetHero 玩家的名字 英雄的职业 性别 等级 转数
{"SkillCD", GM_LEVEL9, &CChatSystem::GmSkillCDSwitch}, //设置技能CD启用与否 @SkillCD 0/1关闭/开启)
{"Acceptrole", GM_LEVEL9, &CChatSystem::Acceptrole}, //增加一个任务 @AddQuest 任务id
{"SetZBPMtime", GM_LEVEL9, &CChatSystem::GMSetZBPMtime}, //@setZBPMtime 10 2014-3-10-12:00:00
{"SetZBPMdata", GM_LEVEL9, &CChatSystem::GMSetZBPMdata}, //@setZBPMdata 30,31,32 100,200,300 10,20,30
{"FinishQuest", GM_LEVEL9, &CChatSystem::FinishQuest}, //设置任务完成状态 @FinishQuest 任务id 设置完成还是未完成1是完成0是未完成
{"IntPro", GM_LEVEL9, &CChatSystem::GmSetIntProperty}, //设置玩家属性 @IntPro 属性ID 属性的值(整数型的)
{"showintpro", GM_LEVEL9, &CChatSystem::GmShowIntProperty}, //查看玩家属性 #showIntPro 属性ID
{"AddKeyword", GM_LEVEL9, &CChatSystem::GmAddKeyword}, //添加关键字到词库 @AddKeyword 关键词 分类(1:敏感词库, 2禁言词库)
{"WorldMessage", GM_LEVEL9, &CChatSystem::WorldMessage}, //系统公告消息 @WorldMessage 消息内容 公告提示类型
{"AddGold", GM_LEVEL9, &CChatSystem::GmAddGold}, //GM增加指定角色金钱 @AddGold [角色名称] [金钱类型] [金钱数量],,支持对不在线的用户发放金钱,除了元宝
{"Present", GM_LEVEL9, &CChatSystem::GmAddPresent}, //发派物品 @Present 人物名称 物品名称 [数量=1] [品质=0] [强化=0] 是否绑定[yes=1,no=0] 文本信息(参考addgold的说明)
{"AddFbCount", GM_LEVEL9, &CChatSystem::AddFubenCount}, //增加(或减少)副本的次数 @AddFubenCount [人物名称] [副本名称] [数量,负数是减少]
{"TraceActor", GM_LEVEL9, &CChatSystem::GmTraceActor}, //追踪一个玩家的网络数据 @TraceActor
{"DumpFb", GM_LEVEL9, &CChatSystem::GmDumpFuben}, //
{"checkset", GM_LEVEL9, &CChatSystem::GmCheckGameSet},
///// 暂时没有明确归类的
{"Icon", GM_LEVEL9, &CChatSystem::GmChangeIcon}, //更改头像 @Icon 头像ID
{"Property", GM_LEVEL9, &CChatSystem::GmPrintProperty}, //打印隐藏的属性 @Property
{"Invite", GM_LEVEL9, &CChatSystem::GmInviteTeam}, //要求玩家组队 @Invite 玩家名字
{"LeaveTeam", GM_LEVEL9, &CChatSystem::GmLeaveTeam}, //离开队伍 @LeaveTeam
{"SetMonsterMove", GM_LEVEL9, &CChatSystem::GmSetMonsterMove}, //GM设置怪物的运动状态 @SetMonsterMove
{"targetIntPro", GM_LEVEL9, &CChatSystem::GmSetTargetIntPro}, //@targetIntPro 属性ID 属性的值
{"viewPro", GM_LEVEL9, &CChatSystem::GmViewTargetProperty}, //@viewIntPro
{"ClearBag", GM_LEVEL9, &CChatSystem::GmClearBag}, //清空背包 @ClearBag
{"reloadfw", GM_LEVEL9, &CChatSystem::GmRefreshfw}, //刷新过滤字 @reloadfw
{"ShowFriendList", GM_LEVEL9, &CChatSystem::GmShowFriendList},
{"skill", GM_LEVEL9, &CChatSystem::GmLearnSkillByName}, //@LearnSkill 技能ID 技能等级
{"useskill", GM_LEVEL9, &CChatSystem::GmUseSkill}, //@useskill 技能ID 技能等级
{"forgetskill", GM_LEVEL9, &CChatSystem::GmForgetSkillByName}, //@forgetskill 技能名字
{"SetEquipItemProp", GM_LEVEL9, &CChatSystem::SetEquipItemProp}, //@SetEquipItemProp 装备槽位号 propid proval
{"SetExpGetToday", GM_LEVEL9, &CChatSystem::SetExpGetToday}, // @SetExpGetToday 数量
{"SetTraceOpt", GM_LEVEL9, &CChatSystem::SetTraceOpt}, // @SetTraceOpt 类型 开启标志
{"RefreshMonster", GM_LEVEL9, &CChatSystem::RefreshMonster}, // @RefreshMonster
// {"AddBtTime", GM_LEVEL9, &CChatSystem::AddBanneretTime }, // @AddBanneretTime type time(秒为单位)
{"SetHeadTitle", GM_LEVEL9, &CChatSystem::GmSetHeadTitle }, //@SetTopTitle 头衔ID 0 清空头衔
{"RefreshRank", GM_LEVEL9, &CChatSystem::GmRefreshRank }, //@RefreshTopTitle 刷新排行榜
{"RefreshHeadTitle", GM_LEVEL9, &CChatSystem::GmRefreshHeadTitle}, //@RefreshTopTitle 刷新在线玩家头衔
{"vtp", GM_LEVEL9, &CChatSystem::ViewTargetProp }, //@vtp propid
{"fcmopen", GM_LEVEL9, &CChatSystem::GmSetFcmOpen }, //@fcmopen
{"fcmclose", GM_LEVEL9, &CChatSystem::GmSetFcmClose }, //@fcmopen
{"nreload", GM_LEVEL9, &CChatSystem::GmReloadConfigByName }, //@nreload 配置的名字
{"ireload", GM_LEVEL9, &CChatSystem::GmReloadConfigById }, //@ireload 通过ID装载配置
{"dmopen", GM_LEVEL9, &CChatSystem::GmSetGambleOpen }, //@dmopen 打开赌博系统
{"dmclose", GM_LEVEL9, &CChatSystem::GmSetGambleClose }, //@dmclose 关闭赌博系统
{"setchatlevel", GM_LEVEL9, &CChatSystem::GmSetChatLevel }, //@setchatlevel near 或 World 或 Secret 或 Guild 或 Team 1
{"setchatrecharge", GM_LEVEL9, &CChatSystem::GmSetChatRecharge }, //@setchatrecharge near 或 World 或 Secret 或 Guild 或 Team 1
{"setchatforbitlevel", GM_LEVEL9, &CChatSystem::GmSetChatForbitLevel }, //@setchatforbitlevel 最大等级
{"dbspc", GM_LEVEL9, &CChatSystem::GmGetDBSendPacketCount}, //@dbspc
{"asi", GM_LEVEL9, &CChatSystem::GmSetActorSaveInterval}, //@asi time
{"kill", GM_LEVEL9, &CChatSystem::GMKill }, //@kill 玩家名字
{"tracePacket", GM_LEVEL9, &CChatSystem::TracePacket }, //@tracepacket 玩家名称
{"addguildys", GM_LEVEL9, &CChatSystem::GuildAddYs }, //@tracepacket 帮派玥石
{"ReqTran", GM_LEVEL9, &CChatSystem::ReqTransmit }, // @ReqTransmit destServerId
{"si", GM_LEVEL9, &CChatSystem::TraceServerInfo }, // @si 打印服务器信息
{"smf", GM_LEVEL9, &CChatSystem::SetActorMsgFilter }, // @sf 设置角色消息过滤器
{"testssb", GM_LEVEL9, &CChatSystem::TestSessionBroad }, // @testssb
{"startCs", GM_LEVEL9, &CChatSystem::GmStartCommonServer }, // @stopCs 关闭连接到跨服
{"setGuildLeader", GM_LEVEL9, &CChatSystem::GmSetGguildLeader }, //@setGuildLeader 帮派名称 帮主名称 设置帮派帮主
{"Circle", GM_LEVEL9, &CChatSystem::GmSetActorCircle}, //@circle [人名]转数
{"CirclePoint", GM_LEVEL9, &CChatSystem::GmResetActorCirclePoint}, //@CirclePoint [人名] 重置潜力点
{"ClearCsRank", GM_LEVEL9, &CChatSystem::GmClearCsRank }, //@ClearCsRank destServerId 删除跨服榜单 带destServerId参数指定删除某个服务器的榜单
{"SaveCsRank", GM_LEVEL9, &CChatSystem::GmSaveCsRank }, //@SaveCsRank 广播所有逻辑服将雕像榜单数据发到session
{"LoadCsRank", GM_LEVEL9, &CChatSystem::GmLoadCsRank }, //@LoadCsRank 广播所有逻辑服重新取下榜单
{"ClearAllMsg", GM_LEVEL9, &CChatSystem::GmClearAllMsg }, //@清屏
{"ForbidUser", GM_LEVEL9, &CChatSystem::GmForbidUserById }, //@禁止玩家
{"UnForbidUser", GM_LEVEL9, &CChatSystem::GmUnForbidUserById }, //@取消禁止玩家
{"SetWulinMaster", GM_LEVEL9, &CChatSystem::GMSetWulinMaster }, //设置武林盟主 @SetWulinMaster 玩家名称
{"addactivity", GM_LEVEL9, &CChatSystem::GmAddActivity }, //Gm增加活跃度
{"createnpc", GM_LEVEL9, &CChatSystem::GmCreateNpc }, //Gm创建npc 场景名 npc名
{"addnpc", GM_LEVEL9, &CChatSystem::GmCreateNpcById}, //GM添加npc @addnpc npcID
{"ontracepacket", GM_LEVEL9, &CChatSystem::GmTracePacket }, //统计数据包 @ontracepacket 0 开启统计 1 关闭统计
{"setopenservertime", GM_LEVEL9, &CChatSystem::GmSetOpenServerTime }, //gm设置开服时间 格式如:@setopenservertime 2012-10-03-01:00:00
{"setmergeservertime", GM_LEVEL9, &CChatSystem::GmSetMergeServerTime }, //gm设置开服时间 格式如:@setmergeservertime 2012-10-03-01:00:00
{"setChatLog", GM_LEVEL9, &CChatSystem::GmSetChatLog}, //@setChatLog 1 默认关闭(0),1表示开启, 设置聊天log是否存盘
{"setquicktime", GM_LEVEL9, &CChatSystem::GmSetQuickTimes }, //设置次数
{"setEquipDropRate", GM_LEVEL9, &CChatSystem::GmSetActorDropRate}, //@setEquipDropRate 暴率值
{"setquickrate", GM_LEVEL9, &CChatSystem::GMSetQuickRate }, //设置加速的倍率
{"setspid", GM_LEVEL9, &CChatSystem::GmSetSpGuidId}, //@setspid 1 设置spID
{"setServerId", GM_LEVEL9, &CChatSystem::GmSetServerId}, //@setServerId 24 设置服务器id
{"loadguilddata", GM_LEVEL9, &CChatSystem::GmLoadGuildDataFromDb}, //从数据服加载行会信息 @loadguilddata
{"setactorguild", GM_LEVEL9, &CChatSystem::GmSetActorGuild}, //设置玩家的行会 @setactorguild 行会名称 玩家名称
{"delactorguild", GM_LEVEL9, &CChatSystem::GmDeleteActorGuild}, //设置玩家的行会id为0 @delactorguil 玩家名称
{"setluck", GM_LEVEL9, &CChatSystem::GmSetEquipLuck}, //设置玩家武器幸运值 @setluck 玩家名 10
{"SetSbkGuild", GM_LEVEL9, &CChatSystem::GMSetSbkGuild }, //设置sbk行会 @SetSbkGuild 行会名称
{"bmsbk", GM_LEVEL9, &CChatSystem::GmGuildSignUpSbk}, //设置某行会报名今天的沙巴克战 @bmsbk 行会名称 是否报名(0,取消报名 1 报名)
{"setsbkpos", GM_LEVEL9, &CChatSystem::GmSetSbkPos}, //设置沙巴克职位 @setsbkpos 行会名称 玩家名称 职位id(2-5 护法) 1认命 0 取消
{"createpos", GM_LEVEL9, &CChatSystem::GmSetActorCreatePos}, //设置出生点 @createpos 出生点个数
{"addpos", GM_LEVEL9, &CChatSystem::GmAddActorCreatePos}, //gm添加出生点 @addpos 出生点x 出生点y
{"setidlerole", GM_LEVEL9, &CChatSystem::GmSetIdlePlayer}, //设置空闲玩家 @setidlerole 1 1
{"openquickkick", GM_LEVEL9, &CChatSystem::GmOpenQuickKick}, //设置检测使用外挂的人就踢下
{"openquickseal", GM_LEVEL9, &CChatSystem::GmOpenQuickSeal}, //开启使用外挂被踢时封号
{"setcreateindex", GM_LEVEL9, &CChatSystem::GmSetEnterId}, //设置创建角色进入的新手村的索引 @setcreateindex 入口id
{"setlhzsgm", GM_LEVEL9, &CChatSystem::GmSetLhzsTitle}, //设置头衔 @setlhzsgm 玩家名称 头衔id 是否添加0 取消 1 添加)
{"SetTempCombineTime", GM_LEVEL9, &CChatSystem::GmSetServerTempCombineTime}, //设置服务器的合区时间(用于后台设置开启某些系统用) @SetTempCombineTime 倒数分钟
{"killmonster", GM_LEVEL9, &CChatSystem::GmKillMonster}, //@killmonster 场景名字 怪名字 是否爆装备(1爆0不爆)
{"killallmonster", GM_LEVEL9, &CChatSystem::GmKillAllMonster}, //@killallmonster
{"rkf", GM_LEVEL9, &CChatSystem::GmSetCrossConfig}, //@reloadcross 加载跨服配置
{"kfid", GM_LEVEL9, &CChatSystem::GmSetCommonServerId}, //@crossserverid 10000 设置公共服的ID
{"setrank", GM_LEVEL9, &CChatSystem::GmSetRanking}, //设置排行 @setrank 排行名字 Id Value
{"saveallrank", GM_LEVEL9, &CChatSystem::GmSaveAllRank}, //强制所有的存盘
{"changename", GM_LEVEL9, &CChatSystem::GmChangeNameFlag}, //开启修改名字 @changename 状态0 关闭 1 开启)
{"opentrace", GM_LEVEL9, &CChatSystem::GmOpenTrace}, // @opentrace 状态0 关闭 1 开启)
{"setsavelog", GM_LEVEL9, &CChatSystem::GmSetSaveQuestLogFlag}, //设置是否保存任务到日志服务器 @setsavelog 状态(0 关闭 1 开启)
{"setcoinlog", GM_LEVEL9, &CChatSystem::GmSetSaveCoinLogFlag}, //设置是否保存任务到日志服务器 @setcoinlog 状态(0 关闭 1 开启)
{"setzjlevel", GM_LEVEL9, &CChatSystem::GmSetBuildLevel}, //gm改变行会建筑的等级 @setzjlevel 行会名称 建筑编号(1 主殿 2 行会商店 3 月光宝盒 4 封印兽碑 9震天龙弹) 改变建筑等级(正 为加 负 为减)
{"clearbuilddata", GM_LEVEL9, &CChatSystem::GmclearActorBuildData}, //gm清除玩家行会建筑操作数据 @clearbuilddata 玩家名字
{"clearguildbuild", GM_LEVEL9, &CChatSystem::GmClearGuildBuildData}, //清除行会的建筑的数据 @clearguildbuild 行会名称
{"clearguildtime", GM_LEVEL9, &CChatSystem::GmClearGuildBuildTime}, //清除行会的建筑的冷却时间 @clearguildtime 行会名称
{"changegx", GM_LEVEL9, &CChatSystem::GmChangeActorGx}, //改变玩家的贡献 @changegx 玩家名字 改变的值
{"testfilter", GM_LEVEL9, &CChatSystem::GmTestFilter}, // 测试屏蔽字性能
{"clearBossHard", GM_LEVEL9, &CChatSystem::GmClearBossHard }, //清除boss难度
{"setguildcoin", GM_LEVEL9, &CChatSystem::GmSetGuildCoin }, //设置行会资金 @setguildcoin 资金
{"addmail", GM_LEVEL9, &CChatSystem::GmAddMail}, //添加邮件
{"addonemail", GM_LEVEL9, &CChatSystem::GmAddOneMail}, //添加邮件
{"openckquick", GM_LEVEL9, &CChatSystem::GmSetOpenCkSpeedFalg}, //开启检测加速外挂 @openckquick 状态(0 关闭 1 开启)
{"setwctime", GM_LEVEL9, &CChatSystem::GmSetDeviationTimes}, //设置检测加速外挂的误差时间(单位毫秒) @setwctime 误差时间
{"setchecktime", GM_LEVEL9, &CChatSystem::GmSetCkIntevalTime}, //设置校验的间隔时间(单位秒) @setchecktime 间隔时间
{"setspeedcheck", GM_LEVEL9, &CChatSystem::GmSetSpeedCheck}, //设置检测加速相关值@setspeedcheck 加速检查值(整型,一般为58) 时间比率检测值(整型,一般100) 开始检测发包的次数整型一般为4, s_nNormalTime
{"setspeedvalue", GM_LEVEL9, &CChatSystem::GmSetSpeedValue}, //设置新检测加速外挂的参数 @setspeedvalue 参数类型(1:是否为肯定在加速百分比上限参数 2:是否为肯定在加速百分比下限参数 3:可能在加速百分比上限参数 4:误判百分比下限) 参数值(1到100的数值)
{"dofile", GM_LEVEL9, &CChatSystem::GmLoadNpcFile}, //加载NPC文件
{"doquest", GM_LEVEL9, &CChatSystem::GmLoadQuestFile}, //加载任务npc文件
{"totalMonsterCount", GM_LEVEL9, &CChatSystem::GmTotalAllSceneMonsterCount}, //统计所有地图刷怪总量
{"mapInfo", GM_LEVEL9, &CChatSystem::GmGetCurrSceneInfo}, //获取当前场景信息
{"setTaxing", GM_LEVEL9, &CChatSystem::GmSetTaxing}, //设置税收信息
{"setrundomkey", GM_LEVEL9, &CChatSystem::GmSetRundomKey}, //设置玩家的随机数 @setrundomkey 玩家名称 值
{"delGuild", GM_LEVEL9, &CChatSystem::GmDeleteGuild}, //无条件从数据库中删除
{"addNewTitle", GM_LEVEL9, &CChatSystem::GmAddNewTitle}, //添加新头衔 @addnewtitle 人物名 头衔id
{"delnewtitle", GM_LEVEL9, &CChatSystem::GmDelNewTitle}, //删除新头衔 @delnewtitle 人物名 头衔id
{"addCustomTitle", GM_LEVEL9, &CChatSystem::GmAddCustomTitle}, //添加自定义新头衔 @addcustomtitle 人物名 头衔id
{"delCustomTitle", GM_LEVEL9, &CChatSystem::GmDelCustomTitle}, //删除自定义新头衔 @delcustomtitle 人物名 头衔id
{"delvar", GM_LEVEL9, &CChatSystem::GmDelVar}, //删除静态变量
{"resetWorldLevel", GM_LEVEL9, &CChatSystem::GmResetWorldLevel},//重置世界等级(变0级)
{"callScript", GM_LEVEL9, &CChatSystem::GmSetActorCallScript},//执行脚本函数 @callscript 人物名字 脚本函数名
{"reLoadWorldLevel", GM_LEVEL9, &CChatSystem::GmReLoadWorldLevel},//从数据库读世界等级
{"setFootPrintPay", GM_LEVEL9, &CChatSystem::GmSetFootPrintPay},//设置足迹派送 @setFootPrintPay 开启时间(%d-%d-%d-%d:%d:%d)(开启时间为0表示清数据) 持续分钟数 方案id
{"setAuction", GM_LEVEL9, &CChatSystem::GmSetAuction}, //设置竞拍 物品id/数量/金钱类型/底价/加价
{"TestBackStage", GM_LEVEL9, &CChatSystem::GmTestBackStage}, //测试后台指令
{"KickSetStatus", GM_LEVEL9, &CChatSystem::GmKickAndSetActorStatus}, // 踢人与设置人物状态 @KickSetStatus 禁用标志(非0则为禁用) 转数 等级
{"OpenBFS", GM_LEVEL9, &CChatSystem::GmOpenBallFanStore}, // 开启球迷积分兑换 @OpenBFS 开启或关闭 开启时间 持续天数
{"OpenBlackHouse", GM_LEVEL9, &CChatSystem::GmOpenBlackHouse}, //开启小黑屋 0关闭 1 开启
{"QuitBlackHouse", GM_LEVEL9, &CChatSystem::GmQuitBlackHouse}, //退出小黑屋 参数:人名(不填表示自己)
{"CleanBlackHouse", GM_LEVEL9, &CChatSystem::GmCleanBlackHouse}, //清理小黑屋数据 参数:人名(不填表示自己)
{"SetSoulLevel", GM_LEVEL9, &CChatSystem::GMSetSoulLevel}, //设置武魂等级
{"AddRankPoint", GM_LEVEL9, &CChatSystem::GMAddRankPoint}, //设置排行榜积分 @AddRankPoint 排行榜名字 增加多少积分
{"SetAchieve", GM_LEVEL9, &CChatSystem::SetAchieve}, //设置成就状态
{"FuBen", GM_LEVEL9, &CChatSystem::GmFuBen}, //副本测试GM指令
{"RingLevel", GM_LEVEL9, &CChatSystem::GMSetRingLevel}, //设置特戒培养的等级 @RingLevel 人名 物品id 等级(-1变非激活0激活了是0级
{"DebugLua", GM_LEVEL9, &CChatSystem::GmDebugLua}, //调试脚本用
{"Shop", GM_LEVEL9, &CChatSystem::GmShop}, //商店GM指令
{"QuestMove", GM_LEVEL9, &CChatSystem::QuestMove}, //测试速传, 参数@QuestMove 场景idx,y
{"PkValue", GM_LEVEL9, &CChatSystem::GmPkValue}, //增加PK值
{"Exploit", GM_LEVEL9, &CChatSystem::GmExploit}, //增加功勋值
{"EquipPosLevel", GM_LEVEL9, &CChatSystem::GmSetEquipPosStrongLevel},//设置部位强化的等级 @EquipPosLevel 玩家名 位置 等级(位置=-1即设全部位置)
{"SetGuildTree", GM_LEVEL9, &CChatSystem::GmSetGuildTree}, //设置行会神树 @SetGuildTree 行会名称 神树等级 神树进度
{"SetGuildFruit", GM_LEVEL9, &CChatSystem::GmSetGuildFruit}, //设置行会神树果实 @SetGuildFruit 行会名称 果实等级 果实进度 果实数量
{"SetMyGuildTree", GM_LEVEL9, &CChatSystem::GmSetMyGuildTree}, //设置本人行会神树
{"SetMyGuildFruit", GM_LEVEL9, &CChatSystem::GmSetMyGuildFruit}, //设置本人行会神树果实
{"SetGuildTask", GM_LEVEL9, &CChatSystem::GmSetGuildTask}, //设置行会任务,@SetGuildTask 行会名称 任务ID任务当前进度
{"RefreshGuildTask", GM_LEVEL9, &CChatSystem::GmRefreshGuildTask}, //@RefreshGuildTask 行会名称 任务进度 --强行刷新行会任务和任务进度
{"AddConsignItem", GM_LEVEL9, &CChatSystem::GmAddConsignItem}, //随机增加寄卖物品 @AddConsignItem [数量] *主要是测试用*
{"ClearConsignItem", GM_LEVEL9, &CChatSystem::GmClearConsignItem}, //删除寄卖物品 @ClearConsignItem [1:清全部0只清Add出来的]
{"DoWorship", GM_LEVEL9, &CChatSystem::GmDoWorship}, //设置行会神树果实 @DoWorship flag param TO DELETE
{"DoProtecteTuCity", GM_LEVEL9, &CChatSystem::GmDoProtecteTuCity}, //土城保卫战 @DoProtecteTuCity flag param
{"DoRewardQuest", GM_LEVEL9, &CChatSystem::GmDoRewardQuest}, //赏金任务 @DoRewardQuest flag param
{"DoCom", GM_LEVEL9, &CChatSystem::GmDoCompensate}, //游戏补偿 1|2|60|2016-3-2-12:00:00|300|补偿 TO DELETE
{"DoSupplyBattle", GM_LEVEL9, &CChatSystem::GmDoSupplyBattle}, //补给争夺
{"DoSevenGoodGift", GM_LEVEL9, &CChatSystem::GmDoSevenGoodGift}, //七日豪礼 TO DELETE
{"DoChallengeFB", GM_LEVEL9, &CChatSystem::GmDoChallengeFB}, //挑战副本
{"DoAllCharge", GM_LEVEL9, &CChatSystem::GmDoAllCharge}, //累积充值(不可重置)
{"DoGuildSiege", GM_LEVEL9, &CChatSystem::GmDoGuildSiege}, //攻城战
{"DoGameStore", GM_LEVEL9, &CChatSystem::GmDoGameStore}, //游戏商城
{"GuildDepotItemReject",GM_LEVEL9, &CChatSystem::GmGuildDepotItemReject}, //行会功能
{"MaterialFB", GM_LEVEL9, &CChatSystem::GmDoMaterialFB}, //材料副本
{"GuildAuth", GM_LEVEL9, &CChatSystem::GmSetGuildAuth}, //官方认证
{"OpenSevTheme", GM_LEVEL9, &CChatSystem::GmDoOpenSevTheme}, //开服主题活动
{"DailyCharge", GM_LEVEL9, &CChatSystem::GmDoDailyCharge}, //开服主题活动
{"GiveAward", GM_LEVEL9, &CChatSystem::GmDoGiveAward}, //角色类型奖励 @GiveAward type id value
{"GenAttrInSmith", GM_LEVEL9, &CChatSystem::GmGenAttrInSmith}, //从极品库中随机抽取N调属性
{"ReloadVSPDef", GM_LEVEL9, &CChatSystem::GmReloadVSPDef},
{"setfcmstatus", GM_LEVEL9, &CChatSystem::GmSetFcmStatus}, //设置防沉迷玩家状态 @setfcmstatus statusFlag(0未注册1成年2未成年)
};
bool CChatSystem::GmMonthCard(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
int nOpera= atoi(args[0]);
int nValue= atoi(args[1]);
if (nOpera == 0)
{
((CActor*)m_pEntity)->GetMiscSystem().OnBuyMonthCard(nValue);
}
else if(nOpera == 1)
{
((CActor*)m_pEntity)->GetMiscSystem().OnGetMonthCardAward(nValue);
}
return true;
}
bool CChatSystem::GmDamageInfo(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nOpera= atoi(args[0]);
if (nOpera == 0)
{
GetGlobalLogicEngine()->SetPrintDamageInfo(false);
}
else
{
GetGlobalLogicEngine()->SetPrintDamageInfo(true);
}
return true;
}
bool CChatSystem::GmAttr(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
int nAttrId= atoi(args[0]);
int nValue= atoi(args[1]);
GAMEATTR attr;
attr.type = nAttrId;
switch(AttrDataTypes[nAttrId])
{
case adInt://有符号4字节类型
attr.value.nValue = nValue;
break;
case adUInt://无符号4字节类型
attr.value.uValue = nValue;
break;
case adFloat://单精度浮点类型值
attr.value.fValue = nValue;
break;
}
#ifdef _DEBUG
((CAnimal*)m_pEntity)->GetPropertySystem().m_Debug << attr;
#endif
((CAnimal*)m_pEntity)->GetPropertySystem().ResertProperty();
return true;
}
//@Go 地图名(或场景id) X(default) Y(default)
bool CChatSystem::GmGo(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CFuBenManager *pFBMgr = GetGlobalLogicEngine()->GetFuBenMgr();
CFuBen* pFb = GetGlobalLogicEngine()->GetFuBenMgr()->GetFbStaticDataPtr(0);
INT_PTR nSceneId = atoi(args[0]);
INT_PTR nPosX = 0;
INT_PTR nPosY = 0;
CScene* pScene = NULL;
if ( nSceneId <= 0)
{
pScene = pFb->GetSceneByName(args[0]);
}
else
{
pScene = pFb->GetScene(nSceneId);
}
if (!pScene)
{
return false;
}
nSceneId = pScene->GetSceneId();
if (nArgsCount >= 3)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,3) ==false) return false;
nPosX = atoi(args[1]); //x
nPosY = atoi(args[2]);//y
}
else
{
if(pScene) {
if(pScene->GetSceneAreaCenter(nPosX,nPosY,0) == false)
{
SCENECONFIG* sceneConf = pScene->GetSceneData();
nPosX = sceneConf->nDefaultX;
nPosY = sceneConf->nDefaultY;
}
}else return false;
}
int nEffId = GetLogicServer()->GetDataProvider()->GetGlobalConfig().nBlinkEnterEffect;
return pFBMgr->EnterFuBen(m_pEntity, pFb, nSceneId, nPosX, nPosY,enDefaultTelePort,nEffId);
/*
if (nSceneId <= 0)
{
return m_pEntity->TelportSceneByName(args[0],nPosX,nPosY);
}
else
{
return m_pEntity->Teleport(pFb,nSceneId,nPosX,nPosY);
}
*/
}
//@Go 地图名(或场景id) X(default) Y(default)
bool CChatSystem::GMEnterFuben(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
INT_PTR nFubenId = atoi(args[0]);
return ((CActor*)m_pEntity)->GetFubenSystem().ReqEnterFuben(nFubenId);
}
//@Monster 怪物名(或id) 数量(1) 存活时间(0) 等级(0) 血量比(100)
bool CChatSystem::GmMonster( char **args, INT_PTR nArgsCount,char * sRetMsg )
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CScene* pScene = m_pEntity->GetScene();
if (!pScene)
{
return false;
}
INT_PTR nID = atoi(args[0]);
INT_PTR nCount = 0;
if ( !args[1] )
{
nCount = 1;
}
else
{
nCount = atoi( args[1] );
}
unsigned int nLive = 0;
if ( args[2] )
{
nLive = atoi(args[2]);
}
int nBornLevel = 0;
if ( args[3] )
{
nBornLevel = atoi(args[3]);
}
int nPercent = 100;
if (args[4])
{
nPercent = atoi(args[4]);
}
PMONSTERCONFIG pConfig = NULL;
if ( nID <= 0)
{
pConfig = GetLogicServer()->GetDataProvider()->GetMonsterConfig().GetMonsterDataByName(args[0]);
}
else
{
pConfig = GetLogicServer()->GetDataProvider()->GetMonsterConfig().GetMonsterData(nID);
}
if (!pConfig)
{
return false;
}
int posX,posY;
m_pEntity->GetPosition(posX,posY);
//在人物周围找一个可以刷怪的地方
INT_PTR j, nDir, nDX, nDY;
nDir = m_pEntity->GetProperty<int>(PROP_ENTITY_DIR);
for (j=0; j<8; ++j)
{
CSkillSubSystem::GetPosition(posX, posY, nDir, 1, nDX, nDY);
if (pScene->CanMove(nDX, nDY))
{
goto lb_mob;
}
nDir = (nDir + 1) & 7;
}
//在周围没有可刷怪的地方,则在人物当前位置刷新
nDX = posX;
nDY = posY;
lb_mob:
for (int i = 0; i < nCount; i++)
{
CEntity* pEntity = pScene->CreateEntityAndEnterScene(pConfig->nEntityId, pConfig->btEntityType, nDX, nDY,-1,NULL,nLive,
nBornLevel,NULL, 0, nPercent);
if (pEntity != NULL && pEntity->GetType() == enGatherMonster)
{
//pScene->SetMonsterConfig(pEntity,-1,pConfig->nEntityId);
//((CMonster*)pEntity)->SetLiveTIme(nLive);
}
}
return true;
}
//@PR 相对位置x 相对位置y
bool CChatSystem::GmPR(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
INT_PTR nx = atoi(args[0]);
INT_PTR ny = atoi(args[1]);
INT_PTR nNewPosX = 0;
INT_PTR nNewPosY = 0;
INT_PTR nCerterPosX = m_pEntity->GetProperty<int>(PROP_ENTITY_POSX);
INT_PTR nCerterPosY = m_pEntity->GetProperty<int>(PROP_ENTITY_POSY);
INT_PTR nDir = m_pEntity->GetProperty<int>(PROP_ENTITY_DIR);
CSkillSubSystem::PositionRotation(0,0,nx,ny,nDir,nNewPosX,nNewPosY);
nNewPosX += nCerterPosX;
nNewPosY += nCerterPosY;
CActorPacket pack;
CDataPacket &data =m_pEntity->AllocPacket(pack);
data <<(BYTE)enDefaultEntitySystemID <<(BYTE)sPrintDebugText;
char sString[128];
sprintf_s(sString,sizeof(sString),"目标点为:%d,%d",nNewPosX,nNewPosY);
data.writeString(sString);
pack.flush();
}
//@PR 鼠标位置x 鼠标位置y 相对位置x 相对位置y
bool CChatSystem::GmAR(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
INT_PTR nMousesPosX = atoi(args[0]);
INT_PTR nMousesPosY = atoi(args[1]);
INT_PTR nRelPosX = atoi(args[2]);
INT_PTR nRelPosY = atoi(args[3]);
INT_PTR nCerterPosX = m_pEntity->GetProperty<int>(PROP_ENTITY_POSX);
INT_PTR nCerterPosY = m_pEntity->GetProperty<int>(PROP_ENTITY_POSY);
INT_PTR nDir = m_pEntity->GetProperty<int>(PROP_ENTITY_DIR);
INT_PTR nMPosRelX = nMousesPosX- nCerterPosX;
INT_PTR nMPosRelY = nMousesPosY- nCerterPosY;
INT_PTR nNewPosX = 0;
INT_PTR nNewPosY = 0;
CSkillSubSystem::AccurateRotation(nMPosRelX,nMPosRelY,nRelPosX,nRelPosY,nNewPosX,nNewPosY);
nNewPosX += nCerterPosX;
nNewPosY += nCerterPosY;
CActorPacket pack;
CDataPacket &data =m_pEntity->AllocPacket(pack);
data <<(BYTE)enDefaultEntitySystemID <<(BYTE)sPrintDebugText;
char sString[128];
sprintf_s(sString,sizeof(sString),"目标点为:%d,%d",nNewPosX,nNewPosY);
data.writeString(sString);
pack.flush();
}
//@LearnSkill 技能ID 技能等级
bool CChatSystem::GmLearnSkill(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nSkillID= atoi(args[0]);
if (args[1] == NULL)
{
int nLevel = nSkillID;
m_pEntity->GetSkillSystem().AutoLearnVocSkill(nLevel);
}
else
{
int nSkillLevel = atoi(args[1]);
return m_pEntity->GetSkillSystem().LearnSkill(nSkillID,nSkillLevel,false,true) == tpNoError;
}
}
//@AddValue type num
bool CChatSystem::AddValue(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nCount = 100;
int nId= atoi(args[0]);
if (args[1] != NULL)
{
nCount = atoi(args[1]);
}
return m_pEntity->GiveAward(nId, 0, nCount,0,0,0,0,GameLog::Log_BackStage);
}
//@SetValue type num
bool CChatSystem::SetValue(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nCount = 100;
int nId= atoi(args[0]);
if (args[1] != NULL)
{
nCount = atoi(args[1]);
}
return m_pEntity->SetValueAward(nId, nCount);
}
//@DelSkill 技能ID
bool CChatSystem::GmDeleteSkill(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nSkillId = atoi( args[0] );
if (nSkillId <= 0)
{
nSkillId = GetLogicServer()->GetDataProvider()->GetSkillProvider()->GetSkillIdByName(args[0]);
if(nSkillId <= 0)
{
strcpy(sRetMsg,"invalid skill");
return false;
}
}
return ((CActor*)m_pEntity)->GetSkillSystem().ForgetSkill(nSkillId);
}
bool CChatSystem::Drop(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int dropid = atoi( args[0] );
std::vector<DROPGOODS> info;
GetLogicServer()->GetDataProvider()->GetDropCfg().GetGiftDropInfoByDropGroupId(dropid, info);
int nNum = info.size();
for(int i = 0; i < nNum; i++)
{
DROPGOODS& award = info[i];
((CActor*)m_pEntity)->GiveAward(award.info.nType, award.info.nId, award.info.nCount);
}
}
bool CChatSystem::GmDropItem(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
int nId = atoi( args[0] );
int nCount = atoi( args[1] );
CScene* pScene = m_pEntity->GetScene();
int nLoopCount = 64;
INT_PTR nPosX,nPosY;
m_pEntity->GetPosition(nPosX,nPosY);
int nNowtime = GetGlobalLogicEngine()->getMiniDateTime();
for (size_t i = 0; i < nCount && nLoopCount-- > 0;)
{
CDropItemEntity *pDropItem = CDropItemEntity::CreateDropItem(pScene,nPosX,nPosY,GameLog::clLootDropBox,"gm",60);
if (pDropItem)
{
CUserItem *pUserItem = GetGlobalLogicEngine()->AllocUserItem(true); //申请一个道具
if(pUserItem ==NULL) return false;
if(const CStdItem* pStdItem = GetLogicServer()->GetDataProvider()->GetStdItemProvider().GetStdItem(nId))
{
pUserItem->wItemId =pStdItem->m_nIndex ;
pUserItem->wCount = 1;
pUserItem->btQuality = pStdItem->b_showQuality;
pUserItem->wPackageType = pStdItem->m_nPackageType;
pUserItem->setSource(CStdItem::iqOther,nNowtime);
pDropItem->SetItem(pUserItem);
}
else
{
pDropItem->SetMoneyCount(10, nId == 65535? mtYuanbao :mtCoin);
}
pDropItem->SetCanPickUpTime(0);
pDropItem->SetMaster(((CActor*)m_pEntity)); //这个是他的主人了
if (--nCount <= 0) return true;
}
}
return false;
}
bool CChatSystem::Info(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
// if (IsArgsValid(args,nArgsCount,sRetMsg,1) == false) return false;
// CEntityManager* pEntityMgr = GetGlobalLogicEngine()->GetEntityMgr();
// CScene* pScene = m_pEntity->GetScene();
// // 辅助容器
// std::map< int,std::pair<std::string,int> > mapMonster;
// typedef typename std::map< int,std::pair<std::string,int> >::iterator iterator;
// typedef std::pair<std::string,int> map_value_type;
// // 用以输出
// CActorPacket pack;
// CDataPacket &data =m_pEntity->AllocPacket(pack);
// data << (BYTE)enChatSystemID << (BYTE)sSendChat << (BYTE)1;
// char sString[128];
// // 查询本地图所有怪物信息
// if(_stricmp( args[0], "AllMonster") == 0)
// {
// data.writeString("AllMonster");
// CEntityList& monsterList = pScene->GetMonsterList();
// CLinkedNode<EntityHandle> *pNode;
// CLinkedListIterator<EntityHandle> it(monsterList);
// for (pNode = it.first(); pNode; pNode = it.next())
// {
// CEntity* pEntity = pEntityMgr->GetEntity(pNode->m_Data);
// if (pEntity)
// {
// unsigned int nId = pEntity->GetId();
// if (mapMonster.find(nId) == mapMonster.end())
// {
// map_value_type& info = mapMonster[nId];
// info.first = pEntity->GetEntityName();
// info.second = 1;
// }
// else
// {
// map_value_type& info = mapMonster[nId];
// info.second++;
// }
// }
// }
// std::string buff("\n");
// iterator mapIter = mapMonster.begin();
// for (; mapIter != mapMonster.end(); mapIter++)
// {
// int id = (*mapIter).first;
// map_value_type& info = (*mapIter).second;
// sprintf_s(sString,sizeof(sString),"[%s]id:%d,数量:%d; \n",info.first.c_str(),id,info.second);
// buff += sString;
// }
// data.writeString(buff.c_str());
// }
// else if (_stricmp( args[0], "AllNpc") == 0)
// {
// }
// else if (_stricmp( args[0], "AllActors") == 0)
// {
// }
// //输出
// data << m_pEntity->GetLevel();
// data << Uint64(m_pEntity->GetHandle());
// data << (BYTE)0;
// pack.flush();
return true;
}
//add buff
bool CChatSystem::GmAddBuff(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nId = atoi( args[0] );
m_pEntity->GetBuffSystem()->Append(nId);
return true;
}
//del buff
bool CChatSystem::GmDelBuff(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
// if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
// int nType = atoi( args[0] );
// int nGroup = atoi( args[1] );
// m_pEntity->GetBuffSystem()->Remove((GAMEATTRTYPE) nType,nGroup);
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nId = atoi( args[0] );
m_pEntity->GetBuffSystem()->RemoveById(nId);
return true;
}
///抓捕怪物
///@CatchMonster 怪物名
bool CChatSystem::GmCatchMonster(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CObserverSystem *pObserver = ((CAnimal *)m_pEntity)->GetObserverSystem();
EntityHandle targetHdl = pObserver->FindEntityByName(args[0]);
if (targetHdl.IsNull())
{
strcpy(sRetMsg, "no target");
return false;
}
INT_PTR nEntityId = 0, nLevel = 0, nAiId = 0;
int nPosX = 0, nPosY = 0;
if(CEntity *pEntity = GetEntityFromHandle(targetHdl))
{
nEntityId = pEntity->GetProperty<unsigned int>(PROP_ENTITY_ID);
nLevel = pEntity->GetProperty<unsigned int>(PROP_CREATURE_LEVEL);
nPosX = pEntity->GetProperty<int>(PROP_ENTITY_POSX);
nPosY = pEntity->GetProperty<int>(PROP_ENTITY_POSY);
PMONSTERCONFIG pConfig = GetLogicServer()->GetDataProvider()->GetMonsterConfig().GetMonsterData(nEntityId);
if(pConfig == NULL) return false;
nAiId = pConfig->wAiConfigId;
CEntityManager* em = GetGlobalLogicEngine()->GetEntityMgr();
em->DestroyEntity(pEntity->GetHandle());
}
CActor *pActor = ((CActor *)m_pEntity);
return pActor->GetPetSystem().AddPet(nEntityId, nLevel, 4,0,0,0,nPosX,nPosY);
//CMovementSystem * pMoveSystem = ((CAnimal*)(pEntity))->GetMoveSystem();
//pMoveSystem->ClearMovement();
//((CMonster *)pEntity)->SetOwner(m_pEntity->GetHandle());
//pMoveSystem->MoveFollow(m_pEntity);
//return true;
}
///抛弃怪物
///@ThrowMonster 怪物名
bool CChatSystem::GmThrowMonster(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
return true;
}
//@Move 地图名称
bool CChatSystem::GmMove(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CFuBen *pFb = GetGlobalLogicEngine()->GetFuBenMgr()->GetFbStaticDataPtr(0);
if (pFb)
{
CScene* pScene = pFb->GetSceneByName(args[0]);
if (pScene)
sprintf(sRetMsg,"sceneid = %d",pScene->GetSceneId());
}
int nSenceID = atoi( args[0] );
if (nSenceID > 0)
{
CFuBen * pRetFb =NULL;
CScene * pRetScene =NULL;
GetGlobalLogicEngine()->GetFuBenMgr()->GetFbPtrBySceneId(nSenceID,pRetFb,pRetScene);
if ( pRetScene )
{
return m_pEntity->TelportSceneDefaultPoint(pRetScene->GetSceneName(), 0);
}
else
{
return false;
}
}
return m_pEntity->TelportSceneDefaultPoint(args[0],0);
}
bool CChatSystem::GmMonster2( char **args, INT_PTR nArgsCount,char * sRetMsg )
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
CScene* pScene = m_pEntity->GetScene();
if (!pScene)
{
return false;
}
int nModelId = atoi(args[1]);
PMONSTERCONFIG pConfig = GetLogicServer()->GetDataProvider()->GetMonsterConfig().GetMonsterDataByName(args[0]);
if (!pConfig)
{
return false;
}
int posX,posY;
m_pEntity->GetPosition(posX,posY);
//在人物周围找一个可以刷怪的地方
INT_PTR j, nDir, nDX, nDY;
nDir = m_pEntity->GetProperty<int>(PROP_ENTITY_DIR);
for (j=0; j<8; ++j)
{
CSkillSubSystem::GetPosition(posX, posY, nDir, 1, nDX, nDY);
if (pScene->CanMove(nDX, nDY))
{
goto lb_mob;
}
nDir = (nDir + 1) & 7;
}
//在周围没有可刷怪的地方,则在人物当前位置刷新
nDX = posX;
nDY = posY;
lb_mob:
CEntity* pEntity = pScene->CreateEntityAndEnterScene(pConfig->nEntityId, pConfig->btEntityType, nDX, nDY);
if (pEntity != NULL)
{
//pScene->SetMonsterConfig(pEntity,-1,pConfig->nEntityId);
//((CMonster*)pEntity)->SetLiveTIme(0);
((CMonster*)pEntity)->SetProperty<int>(PROP_ENTITY_MODELID,nModelId); //设置模型id
}
return true;
}
bool CChatSystem::GmTestFilter(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
// if(IsArgsValid(args, nArgsCount, sRetMsg,1) == false) return false;
// int nRunCount = atoi(args[0]);
// if(nRunCount <0) return false;
// CVector<char *>& data = GetLogicServer()->GetDataProvider()->GetOldTipmsgConfig().data;
// TICKCOUNT nCurrentTick = _getTickCount();
// CChatManager &mgr= GetGlobalLogicEngine()->GetChatMgr();
// INT_PTR nMsgCount = data.count();
// int nTocalCount = nRunCount * (int)nMsgCount;
// for(int i=0; i< nRunCount; i++)
// {
// for(int j=0;j < nMsgCount; j++)
// {
// mgr.IsStrInvalid(data[j]);
// }
// }
// TICKCOUNT nEnd = _getTickCount();
// TICKCOUNT nTick = nEnd - nCurrentTick;
// _stprintf(sRetMsg, _T("msgcont: %d,time=%d"), nTocalCount, (int)nTick);
return true;
}
bool CChatSystem::GmGetDBSendPacketCount(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
size_t count = GetLogicServer()->GetDbClient()->getPacketCount();
_stprintf(sRetMsg, _T("wait sending packet count:%d"), count);
return true;
}
bool CChatSystem::GmSetActorSaveInterval(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args, nArgsCount, sRetMsg,1) == false) return false;
int nInterval = atoi(args[0]);
nInterval = __max(nInterval, 20000);
CActor::m_sSaveDBInterval = nInterval;
_stprintf(sRetMsg, _T("current actor save interval is: %d ms"), nInterval);
return true;
}
bool CChatSystem::GMKill(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
const char* szBeKillerName = args[0];
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName((char*)szBeKillerName);
if (!pActor)
{
sprintf(sRetMsg, "beKiller invalid ");
return false;
}
pActor->ChangeHP(-(pActor->GetProperty<int>(PROP_CREATURE_MAXHP)), (CActor*)m_pEntity);
return true;
}
//设置聊天的等级
bool CChatSystem::GmSetChatLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
if( IsDigit(args[1]) == false ) return false;
int nLevel = atoi(args[1]); //设置的等级
int nChannelId = -1;
if(_stricmp( args[0], "near") ==0)
{
nChannelId= ciChannelNear;
}
// else if(_stricmp( args[0], "map")==0)
// {
// nChannelId= ciChannelMap;
// }
// else if(_stricmp( args[0], "camp") ==0)
// {
// nChannelId= ciChannelZhenying;
// }
// else if(_stricmp( args[0], "Horn") ==0)
// {
// nChannelId= ciChannelHorn;
// }
else if (_stricmp( args[0],"World") == 0) // 新加世界频道
{
nChannelId = ciChannelWorld;
}
else if(_stricmp( args[0], "Secret") == 0)
{
nChannelId = ciChannelSecret;
}
// else if(_stricmp( args[0], "Friend") == 0)
// {
// GetLogicServer()->GetDataProvider()->GetGlobalConfig().nFriendChatLimit = nLevel;
// sprintf(sRetMsg, "setchatlevel channel=%s ,level=%d succeed",args[0],nLevel);
// return true;
// }
else if(_stricmp(args[0], "Guild") == 0)
{
nChannelId = ciChannelGuild;
}
else if(_stricmp(args[0], "Team") == 0)
{
nChannelId = ciChannelTeam;
}
if(nChannelId == -1)
{
sprintf(sRetMsg, "setchatlevel near|map|camp|Horn|World|Secret|Friend|Guild|Team level");
return false;
}
//GLOBALCONFIG &gc = GetLogicServer()->GetDataProvider()->GetGlobalConfig();
CHATSYSTEMCONFIG &gc = GetLogicServer()->GetDataProvider()->GetChatSystemConfig();
gc.ChatLimit[nChannelId].wLevel = nLevel;
sprintf(sRetMsg, "setchatlevel channel=%s ,level=%d succeed",args[0],nLevel);
return true;
}
//设置聊天的等级
bool CChatSystem::GmSetChatRecharge(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
if( IsDigit(args[1]) == false ) return false;
int nRecharge = atoi(args[1]); //设置的等级
int nChannelId = -1;
if(_stricmp( args[0], "near") ==0)
{
nChannelId= ciChannelNear;
}
// else if(_stricmp( args[0], "map")==0)
// {
// nChannelId= ciChannelMap;
// }
// else if(_stricmp( args[0], "camp") ==0)
// {
// nChannelId= ciChannelZhenying;
// }
// else if(_stricmp( args[0], "Horn") ==0)
// {
// nChannelId= ciChannelHorn;
// }
else if (_stricmp( args[0],"World") == 0) // 新加世界频道
{
nChannelId = ciChannelWorld;
}
else if(_stricmp( args[0], "Secret") == 0)
{
nChannelId = ciChannelSecret;
}
// else if(_stricmp( args[0], "Friend") == 0)
// {
// GetLogicServer()->GetDataProvider()->GetGlobalConfig().nFriendChatLimit = nLevel;
// sprintf(sRetMsg, "setchatlevel channel=%s ,level=%d succeed",args[0],nLevel);
// return true;
// }
else if(_stricmp(args[0], "Guild") == 0)
{
nChannelId = ciChannelGuild;
}
else if(_stricmp(args[0], "Team") == 0)
{
nChannelId = ciChannelTeam;
}
if(nChannelId == -1)
{
sprintf(sRetMsg, "setchatlevel near|map|camp|Horn|World|Secret|Friend|Guild|Team level");
return false;
}
//GLOBALCONFIG &gc = GetLogicServer()->GetDataProvider()->GetGlobalConfig();
CHATSYSTEMCONFIG &gc = GetLogicServer()->GetDataProvider()->GetChatSystemConfig();
gc.ChatLimit[nChannelId].nRechargeAmount = nRecharge;
sprintf(sRetMsg, "setchatlevel channel=%s ,recharge=%d succeed",args[0],nRecharge);
return true;
}
//设置聊天禁言的最大等级
bool CChatSystem::GmSetChatForbitLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
if( IsDigit(args[0]) == false ) return false;
int nLevel = atoi(args[0]); //设置的等级
CHATSYSTEMCONFIG &gc = GetLogicServer()->GetDataProvider()->GetChatSystemConfig();
gc.nAutoSilenceLevel = nLevel;
sprintf(sRetMsg, "GmSetChatForbitLevel ,level=%d succeed",nLevel);
return true;
}
//打开赌博系统
bool CChatSystem::GmSetGambleOpen(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
SetGambleFlag(false);
return true;
}
//关闭赌博系统
bool CChatSystem::GmSetGambleClose(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
SetGambleFlag(true);
return true;
}
//通过名字重载数据
bool CChatSystem::GmReloadConfigByName(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
return GetLogicServer()->GetDataProvider()->ReloadConfig(args[0]);
}
//通过ID重载数据
bool CChatSystem::GmReloadConfigById(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
if( IsDigit(args[0]) == false ) return false;
int nPropId = atoi(args[0]);
return GetLogicServer()->GetDataProvider()->ReloadConfig(nPropId);
}
bool CChatSystem::GmRefreshRank(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (!GetLogicServer()->IsCrossServer())
{
//不是跨服
GetGlobalLogicEngine()->GetRankingMgr().UpdateBaseRankData();
}
else
{
GetGlobalLogicEngine()->GetRankingMgr().UpdateBaseRankCSData();
}
GetGlobalLogicEngine()->GetRankingMgr().LoadBaseRankData();
return true;
}
bool CChatSystem::GmRefreshHeadTitle(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
return false;
//GetGlobalLogicEngine()->GetTopTitleMgr().Load();
return true;
}
bool CChatSystem::GmSetHeadTitle(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
/*
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CAchieveProvider &provider = GetLogicServer()->GetDataProvider()->GetAchieveConfig();
CVector<TOPTITLECONFIG> &topTitleList = provider.GetTopTitleList();
INT_PTR nCount = topTitleList.count();
if (nCount <= 0)
{
sprintf(sRetMsg, "no HeadTitle can set");
return false;
}
INT_PTR nVal = atoi(args[0]);
if (nVal == -1)
{
m_pEntity->SetProperty<unsigned int>(PROP_ACTOR_HEAD_TITLE, 0);
sprintf(sRetMsg, "clear HeadTitle success");
return true;
}
INT_PTR nTitleCount = 0;
for (INT_PTR i = 0; i < nCount; i ++)
{
TOPTITLECONFIG &TopTitle = topTitleList[i];
if (TopTitle.nTitleId == nVal) nTitleCount ++;
}
if (nTitleCount <= 0)
{
sprintf(sRetMsg, "no such HeadTitle id");
return false;
}
return ((CActor*)m_pEntity)->SetHeadTitle(nVal);
*/
return false;
}
bool CChatSystem::GmAddPet(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 1)
{
sprintf(sRetMsg, "need Param of pet");
return false;
}
int max_op_param_count = 3;
wylib::container::CBaseList<wylib::string::CAnsiString*> op_param_list;
InitParamList(args, args_count, op_param_list, 3);
int nId = __max( atoi(op_param_list.get(0)->rawStr()),1);
int nLevel= __max( atoi(op_param_list.get(1)->rawStr()), 1) ;
int nAiId = atoi(op_param_list.get(2)->rawStr());
if(! m_pEntity->GetPetSystem().AddPet(nId, nLevel, nAiId, 1000) )
{
sprintf(sRetMsg, "add pet fail");
}
else
{
sprintf(sRetMsg, "add pet succeed");
}
SafeReleaseParamList(op_param_list);
return true;
}
bool CChatSystem::GmAddHero(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 1)
{
sprintf(sRetMsg, "need Param of pet");
return false;
}
int max_op_param_count = 4;
wylib::container::CBaseList<wylib::string::CAnsiString*> op_param_list;
InitParamList(args, args_count, op_param_list, 4);
int nHeroId = __max( atoi(op_param_list.get(0)->rawStr()),1);
int nStage = __max( atoi(op_param_list.get(1)->rawStr()),1);
int nLevel = __max( atoi(op_param_list.get(2)->rawStr()), 1) ;
int nId = m_pEntity->GetHeroSystem().AddHero(nHeroId, nStage, nLevel);
if(! nId )
{
sprintf(sRetMsg, "add hero fail");
}
else
{
m_pEntity->GetHeroSystem().SetHeroBattle(nId,true);
sprintf(sRetMsg, "add hero succeed");
}
SafeReleaseParamList(op_param_list);
return true;
}
bool CChatSystem::GmAddTargetHero(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 1)
{
sprintf(sRetMsg, "need Param of pet");
return false;
}
int max_op_param_count = 5;
wylib::container::CBaseList<wylib::string::CAnsiString*> op_param_list;
InitParamList(args, args_count, op_param_list, 5);
CActor * pActor= GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]) ;
if(pActor ==NULL)
{
strcpy(sRetMsg,"No such user online ");
return false;
}
int nHeroId = __max( atoi(op_param_list.get(1)->rawStr()),1);
int nStage = __max( atoi(op_param_list.get(2)->rawStr()), 0) ;
int nLevel = __max( atoi(op_param_list.get(3)->rawStr()), 0) ;
CHeroSystem &sys = pActor->GetHeroSystem();
if (!sys.CanAddHero(true))
{
strcpy(sRetMsg,"target hero too more, can't add hero!");
return false;
}
int nId = sys.AddHero(nHeroId, nStage, nLevel);
if(! nId )
{
sprintf(sRetMsg, "add hero fail");
}
else
{
sys.SetHeroBattle(nId,true);
sprintf(sRetMsg, "add hero succeed");
}
SafeReleaseParamList(op_param_list);
return true;
}
bool CChatSystem::SetEquipItemProp(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 3) == false) return false;
INT_PTR nSlotId = atoi(args[0]);
INT_PTR nPropId = atoi(args[1]);
INT_PTR nVal = atoi(args[2]);
((CActor *)m_pEntity)->GetEquipmentSystem().SetEquipItemProp(nSlotId, nPropId, nVal);
return true;
}
bool CChatSystem::SetExpGetToday(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nVal = atoi(args[0]);
((CActor *)m_pEntity)->SetExpGetTodayForDebug(nVal);
return true;
}
bool CChatSystem::SetTraceOpt(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
static CEntity::EntityTraceType flags[] = {
CEntity::ettActorSkillDamage,
CEntity::ettActorBeSkillDamage,
};
int nVal = atoi(args[0]);
if (nVal < 0 || nVal >= ArrayCount(flags))
{
sprintf(sRetMsg, "trace type is invalid");
return false;
}
bool bEnable = false;
if (atoi(args[1]) != 0)
bEnable = true;
m_pEntity->SeEntityTraceFlag(flags[nVal], bEnable);
return true;
}
//重刷语言包的时候需要刷新tipmsg里的配置
bool CChatSystem::ReloadLang(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
bool result= GetLogicServer()->GetTextProvider().LoadFromFile(_T("data/language/LangCode.txt"));
//result = GetLogicServer()->GetDataProvider()->LoadTipmsgConfig("");
//if(result ==false) return false;
//result = GetLogicServer()->GetDataProvider()->LoadMonsterShoutConfig("");
return result;
}
bool CChatSystem::GmLearnSkillByName(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
INT_PTR nSkillId = GetLogicServer()->GetDataProvider()->GetSkillProvider()->GetSkillIdByName(args[0]);
if(nSkillId <= 0)
{
strcpy(sRetMsg,"invalid skill");
return false;
}
INT_PTR nLevel = ((CActor*)m_pEntity)->GetSkillSystem().GetSkillLevel(nSkillId);
((CActor*)m_pEntity)->GetSkillSystem().StartRealLearnSkill(nSkillId,nLevel+1);
return true;
}
bool CChatSystem::GmUseSkill(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
INT_PTR nSkillId = atoi(args[0]);
INT_PTR nLevel = atoi(args[1]);
if (nSkillId <= 0)
{
strcpy(sRetMsg,"invalid skill");
return false;
}
if (nLevel <= 0)
{
strcpy(sRetMsg,"invalid level");
return false;
}
EntityHandle handle = m_pEntity->GetTarget();
CEntity *pEntity = GetEntityFromHandle(handle);
if(pEntity ==NULL || pEntity->IsDeath())
{
pEntity = m_pEntity;
}
int x=0,y=0;
pEntity->GetPosition(x,y);
INT_PTR nErrorCode = m_pEntity->GetSkillSystem().LaunchSkill(nSkillId,x,y,true);
if(nErrorCode)
{
((CActor *)m_pEntity)->SendOperateResult(false,0,0,false);
}
return true;
}
bool CChatSystem::GmForgetSkillByName(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
INT_PTR nSkillId = GetLogicServer()->GetDataProvider()->GetSkillProvider()->GetSkillIdByName(args[0]);
if(nSkillId <= 0)
{
strcpy(sRetMsg,"invalid skill");
return false;
}
INT_PTR nLevel = ((CActor*)m_pEntity)->GetSkillSystem().GetSkillLevel(nSkillId);
((CActor*)m_pEntity)->GetSkillSystem().ForgetSkill(nSkillId);
return true;
}
//重刷屏蔽字符库
bool CChatSystem::GmRefreshfw(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
int nHashFun =4, nMemoryBytes= 2500000;
if( nArgsCount >= 1)
{
nHashFun = atoi(args[0]);
}
if( nArgsCount >= 2)
{
nMemoryBytes = atoi(args[1]);
}
return GetGlobalLogicEngine()->GetChatMgr().ReloadFilterDb(nHashFun,nMemoryBytes);
}
bool CChatSystem::GmViewProperty(char * sRetMsg,int nPropID, CEntity * pEntity)
{
int nPropValue = 0;
if(pEntity->GetType() == enActor)
{
if(nPropID >= PROP_MAX_ACTOR )
{
strcpy(sRetMsg,"prop id too large");
return false;
}
}
else if(pEntity->GetType() == enMonster )
{
if(nPropID > PROP_MONSTER_BORNPOINT )
{
strcpy(sRetMsg,"prop id too large");
return false;
}
}
else
{
strcpy(sRetMsg," entity can not view");
return false;
}
sprintf(sRetMsg,"prop,id=%d,int value=%d, float value=%f",nPropID,
pEntity->GetProperty<int> (nPropID),
pEntity->GetProperty<float> (nPropID));
return true;
}
bool CChatSystem::GmViewTargetProperty(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CEntity * pEntity = GetEntityFromHandle(m_pEntity->GetTarget());
if(pEntity ==NULL)
{
strcpy(sRetMsg,"no target");
return false ;
}
int nPropID= atoi(args[0]);
return GmViewProperty(sRetMsg,nPropID,pEntity);
}
bool CChatSystem::GmSkillCDSwitch(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
if (args[0][0] == '1')
{
m_pEntity->GetSkillSystem().SetEnableCD(true);
strcpy(sRetMsg,"<(c0xFF00FF00)Skill CD ON>");
}
else
{
m_pEntity->GetSkillSystem().SetEnableCD(false);
strcpy(sRetMsg,"<(c0xFF00FF00)Skill CD OFF>");
}
return true;
}
//超人
bool CChatSystem::GmKick(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CActor * pActor= GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]) ;
if(pActor ==m_pEntity)
{
strcpy(sRetMsg,"can not kick self ");
return false;
}
if(pActor ==NULL)
{
strcpy(sRetMsg,"No such user online ");
return false;
}
pActor->CloseActor(lwiGmTickActor,false); //关闭玩家的连接
return true;
}
//超人
bool CChatSystem::GmSetSuperMan(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
m_pEntity->m_isSuperman =!m_pEntity->m_isSuperman;
return true;
}
bool CChatSystem::GmSetTargetIntPro(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,3) ==false) return false;
CActor * pActor= GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]) ;
if(pActor ==m_pEntity)
{
strcpy(sRetMsg,"can not modify self ");
return false;
}
if(pActor ==NULL)
{
strcpy(sRetMsg,"no such user online");
return false;
}
if( IsDigit(args[1]) == false || IsDigit(args[2]) ==false ) return false;
int nPropID= atoi(args[1]);
int nPropValue =atoi(args[2]);
if(nPropID >= PROP_MAX_ACTOR || nPropID<=0 )
{
strcpy(sRetMsg,"prop id too large");
return false;
}
if(CanChangeProp(nPropID) ==false) return false;
pActor->SetProperty<int>(nPropID,(int)nPropValue);
return true;
}
bool CChatSystem::GmForbidUserById(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
int UserId = atoi(args[0]);
int sTime = atoi(args[1]);
// std::string strId = strCom;
// int acterId = atoi(strId.c_str());
if (GetGlobalLogicEngine()->GetMiscMgr().OnBackForbidUserMis(UserId, sTime * 60))
{
return false;
}
return true;
}
bool CChatSystem::GmUnForbidUserById(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
int UserId = atoi(args[0]);
if (GetGlobalLogicEngine()->GetMiscMgr().OnBackUnForbidUserMis(UserId))
{
return false;
}
return true;
}
//测试用GM设置怪物的运动状态@setmonstermove monsterName 1/2/3/
bool CChatSystem::GmSetMonsterMove(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
//if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
// 随便获取一个视野范围内匹配指定名称的怪做目标
CObserverSystem *pOB = ((CAnimal *)m_pEntity)->GetObserverSystem();
EntityHandle targetHdl = pOB->FindEntityByName(args[0]);
if (targetHdl.IsNull())
{
strcpy(sRetMsg, "no target");
return false;
}
CEntity *pEntity = GetEntityFromHandle(targetHdl);
/*CEntity * pEntity = GetEntityFromHandle(m_pEntity->GetTarget());
if(pEntity ==NULL)
{
strcpy(sRetMsg,"no target");
return false ;
}*/
if(pEntity->IsMonster() ==false)
{
strcpy(sRetMsg,"not monster or npc");
return false;
}
CMovementSystem * pMoveSystem = ((CAnimal*)(pEntity))->GetMoveSystem();
int nPosX,nPosY;
int nType =atoi(args[1]);
switch(nType)
{
case 0:
pMoveSystem->MoveIdle();
strcpy(sRetMsg,"stand");
break;
case 1:
pMoveSystem->MoveTargetedHome();
strcpy(sRetMsg,"move home");
break;
case 2:
pMoveSystem->ClearMovement();
((CMonster *)pEntity)->SetOwner(m_pEntity->GetHandle());
pMoveSystem->MoveFollow(m_pEntity);
strcpy(sRetMsg,"follow me");
break;
case 3:
pMoveSystem->MoveChase(m_pEntity);
strcpy(sRetMsg,"chase me");
break;
case 4:
pMoveSystem->MoveConfused();
strcpy(sRetMsg,"move confused");
break;
case 5:
pMoveSystem->MoveFleeing(m_pEntity);
strcpy(sRetMsg,"move flee");
break;
case 6:
nPosX = m_pEntity->GetProperty<unsigned int>(PROP_ENTITY_POSX);
nPosY = m_pEntity->GetProperty<unsigned int>(PROP_ENTITY_POSY);
pMoveSystem->MovePoint(nPosX,nPosY);
break;
case 7:
pMoveSystem->MovePatrol(10);
strcpy(sRetMsg,"move patrol");
break;
case 9: // random flee
{
CMonster *pTarget = (CMonster *)pEntity;
if (pTarget)
{
int nMaxDist = args[2] ? atoi(args[2]) : 10;
CMovementSystem *ms = pTarget->GetMoveSystem();
if (ms)
ms->MoveRandomFlee(nMaxDist, 3, 5);
}
}
default:
strcpy(sRetMsg,"param 1-7 is valid");
break;
}
return true;
}
//@ReloadNPC NPC的名字 刷新挂在NPC身上的脚本
bool CChatSystem::GmRefresh(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
//刷新系统NPC
if (!_stricmp(args[0], "SYS"))
{
CNpc *pNpc;
//刷新全局功能NPC
if (!_stricmp(args[1], "FUNCTION"))
{
pNpc = GetGlobalLogicEngine()->GetGlobalNpc();
pNpc->LoadScript(CLogicEngine::szGlobalFuncScriptFile,true);
}
else if (!_stricmp(args[1], "MONSTER"))
{
pNpc = GetGlobalLogicEngine()->GetMonFuncNpc();
pNpc->LoadScript(CLogicEngine::szMonsterFuncScriptFile,true);
}
else if(!_stricmp(args[1], "ITEM"))
{
pNpc = GetGlobalLogicEngine()->GetItemNpc();
pNpc->LoadScript(CLogicEngine::szItemNpcFile, true);
}
else
{
strcpy(sRetMsg, "invalid sys npc name, try [FUNCITON,ANYWHERE]");
return false;
}
}
char* sceneName = NULL;
char* npcName = NULL;
if (strcmp(args[0],_T("all")) != 0) sceneName = args[0];
if (strcmp(args[1],_T("all")) != 0) npcName = args[1];
GetGlobalLogicEngine()->GetFuBenMgr()->ReloadNpcScript(sceneName,npcName);
return true;
}
bool CChatSystem::GmReloadGlobalNpc( char **args, INT_PTR nArgsCount,char * sRetMsg )
{
CNpc* pNpc = GetGlobalLogicEngine()->GetGlobalNpc();
return pNpc->LoadScript(CLogicEngine::szGlobalFuncScriptFile,true);
}
bool CChatSystem::GmReloadScriptNpc( char **args, INT_PTR nArgsCount,char * sRetMsg )
{
return GetGlobalLogicEngine()->GetGlobalNpc()->LoadScript(CLogicEngine::szQuestNpcFile, true);
}
//@call 新手老人 getNpc,1,2
bool CChatSystem::CallScriptFunc( char **args, INT_PTR nArgsCount, char *sRetMsg )
{
// if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
// if (!m_pEntity) return false;
// int nNpcId = atoi(args[0]);
// if (nNpcId > 0)
// {
// CScene * pScene = m_pEntity->GetScene();
// if (pScene != NULL)
// {
// CNpc * pNpc = pScene->GetNpc(nNpcId);
// if (pNpc != NULL)
// {
// pNpc->CallScript(m_pEntity, args[1]);
// return true;
// }
// }
// return false;
// }
// else
// {
// GetGlobalLogicEngine()->GetGlobalNpc()->Talk(m_pEntity, args[1]);
// }
return true;
}
//@call 新手老人 getNpc,1,2
bool CChatSystem::CallScriptFuncNoEntity( char **args, INT_PTR nArgsCount, char *sRetMsg )
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
if (!m_pEntity) return false;
GetGlobalLogicEngine()->GetGlobalNpc()->Call(args[1]);
return true;
}
//追踪系统的数据
bool CChatSystem::GmTraceSystem(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
if( IsDigit(args[0]) ==false) return false;
int nFlag = atoi(args[0]);
CActor::s_nTraceAccountId = nFlag;
return true;
}
//只追踪特定的一个玩家
bool CChatSystem::GmTraceActor(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CActor * pActor= GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]) ;
if(pActor ==NULL) return false;
if( CActor::s_nTraceAccountId )
{
CActor::s_nTraceAccountId =0;
}
else
{
CActor::s_nTraceAccountId = pActor->GetAccountID();
}
return true;
}
bool CChatSystem::GmDumpFuben(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetGlobalLogicEngine()->GetFuBenMgr()->Dump();
return true;
}
//查看物品设置
bool CChatSystem::GmCheckGameSet(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nPos = atoi(args[0]);
GAMESETSDATA2& gameset = ((CActor*)m_pEntity)->GetGameSetsSystem().GetGameSet();
int nIntOffs = nPos / 32;
int nBitOffs = nPos % 32;
int* pStart = gameset.m_nItems + nIntOffs;
int result = (*pStart) & (1 << nBitOffs);
if (result)
{
return true;
}
return false;
}
//调整目标的等级
bool CChatSystem::GmAdjustLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
CActor * pActor= GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]) ;
if(pActor ==NULL)
{
strcpy(sRetMsg,"No such user online ");
return false;
}
if( IsDigit(args[1]) ==false) return false;
int nLevel = atoi(args[1]);
if(nLevel <= 0 ) return false;
//if(nLevel > MAX_ACTOR_LEVEL) return false;
pActor->SetProperty<int>(PROP_CREATURE_LEVEL,nLevel); //关闭玩家的连接
return true;
}
bool CChatSystem::RefreshMonster(char **args, INT_PTR nArgsCount, char* sRetMsg)
{
GetGlobalLogicEngine()->GetFuBenMgr()->RefreshMonster();
return true;
}
bool CChatSystem::FinishQuest(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
int qid = atoi(args[0]);
int flag = atoi(args[1]);
// m_pEntity->GetQuestSystem()->SetFinish(qid,flag != 0);
return true;
}
bool CChatSystem::Acceptrole(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int qid = atoi(args[0]);
int ret = 0;//m_pEntity->GetQuestSystem()->AddQuestToList(qid,NULL);
return (ret == CQuestData::qecSucc) ;
}
//修改属性
bool CChatSystem::GmSetFloatProperty(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
int nPropID = atoi(args[0]);
if(CanChangeProp(nPropID) ==false) return false; //不能修改属性
if(nPropID > PROP_ENTITY_ID && nPropID <PROP_MAX_ACTOR )
{
m_pEntity->SetProperty<float>(nPropID,(float)(atof(args[1])));
return true;
}
else
{
return false;
}
}
bool CChatSystem::CanChangeProp(INT_PTR nPropId)
{
char * spid=(char*) GetLogicServer()->GetVSPDefine().GetDefinition("SPID"); //获取
if(spid ==NULL )return false;
//内网的话能够修改属性
if(_stricmp(spid,"wyi2") !=0 )
{
//外网不能修改元宝和银两的属性
if(PROP_ACTOR_YUANBAO == nPropId || PROP_ACTOR_COIN == nPropId || PROP_ACTOR_DEPOT_COIN == nPropId)
{
return false;
}
else
{
return true;
}
}
else //内网元宝可以改
{
return true;
}
}
bool CChatSystem::GmShowIntProperty(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (!IsArgsValid(args, nArgsCount, sRetMsg, 1))
{
return false;
}
int nPropId = atoi(args[0]);
char buff[100];
if (nPropId >= PROP_ENTITY_ID && nPropId < PROP_MAX_ACTOR)
{
int nResult = m_pEntity->GetProperty<int>(nPropId);
sprintf(buff, "propId[%d] value is:%d", nPropId, nResult);
strcat(sRetMsg, buff);
return true;
}
sprintf(buff, "propId[%d] can not get prop value", nPropId);
strcat(sRetMsg, buff);
return false;
}
//修改属性
bool CChatSystem::GmSetIntProperty(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
int nPropID = atoi(args[0]);
int nValue = atoi(args[1]);
if(CanChangeProp(nPropID) ==false) return false; //不能修改属性
if(nPropID > PROP_ENTITY_ID && nPropID <PROP_MAX_ACTOR )
{
m_pEntity->SetProperty<unsigned int>(nPropID,(unsigned int)atoi(args[1]) );
return true;
}
else
{
return false;
}
}
//@Property 打印玩家隐藏的属性
bool CChatSystem::GmPrintProperty(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
char buff[256];
sprintf(buff,"hpRenew:%4f",m_pEntity->GetProperty<float>(PROP_CREATURE_HP_RATE_RENEW) );
strcat(sRetMsg,buff);
sprintf(buff,"mpRenew:%4f",m_pEntity->GetProperty<float>(PROP_CREATURE_MP_RATE_RENEW) );
strcat(sRetMsg,buff);
sprintf(buff,"socialMask:%d",m_pEntity->GetProperty<unsigned int>(PROP_ACTOR_SOCIALMASK) );
strcat(sRetMsg,buff);
sprintf(buff,"attackSpeed:%d",m_pEntity->GetProperty<unsigned int>(PROP_CREATURE_ATTACK_SPEED) );
strcat(sRetMsg,buff);
return true;
}
bool CChatSystem::GmLeaveTeam(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
CTeam * pTeam = m_pEntity->GetTeam() ;
if(pTeam==NULL) return false; //已经在队伍里了
pTeam->DelMember(m_pEntity->GetProperty<unsigned int>(PROP_ENTITY_ID),true,true);
return true;
}
//@Invite 要求玩家组队
bool CChatSystem::GmInviteTeam(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CActor * pMember= GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pMember ==NULL) return false;
if(pMember->GetTeam()) return false; //已经在队伍里了
if(pMember ==m_pEntity) return false; //不能要求自己
unsigned int nTeamID;
CTeam *pTeam = m_pEntity->GetTeam();
if(NULL ==pTeam)
{
pTeam= GetGlobalLogicEngine()->GetTeamMgr().CreateTeam(nTeamID);
if(pTeam ==NULL) return false; //创建队伍失败
pTeam->SetTeamID(nTeamID);
pTeam->AddMember(m_pEntity); //邀请自己的人是队长
pTeam->AddMember(pMember);//自己是个队员而已
}
else
{
if(pTeam->GetMemberCount() >= MAX_TEAM_MEMBER_COUNT)
{
return false;
}
return pTeam->AddMember(pMember);//自己是个队员而已
}
return true;
}
//@Icon 头像ID 修改头像
bool CChatSystem::GmChangeIcon(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nIcon= atoi(args[0]); //
if(nIcon <0) return false;
m_pEntity->SetProperty<unsigned int>(PROP_ENTITY_ICON,(unsigned int)nIcon);
return true;
}
//@AddMoney 金钱类型ID 数量
bool CChatSystem::GmAddMoney(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
int nMoneyType= atoi(args[0]); // 金钱类型
INT_PTR nCount= (INT_PTR)atof(args[1]); //金钱数量
if( !CanChangeProp(PROP_ACTOR_YUANBAO) ) //如果不能加钱的话,判断一下
{
if(mtCoin == nMoneyType || mtYuanbao == nMoneyType ) return false; //外网不能GM改钱的
}
if(nMoneyType >= mtMoneyTypeStart && nMoneyType < mtMoneyTypeCount )
{
INT_PTR nWay = GameLog::Log_BackStage;
// if ( nMoneyType == mtYuanbao )
// {
// nWay = GameLog::clWithdrawYuanBao;
// }
((CActor*)m_pEntity)->ChangeMoney(nMoneyType,nCount,nWay,0,_T("GM_ADD_MONEY"));
return true;
}
return false;
}
bool CChatSystem::GMAddCircleNum(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
int nCircle= atoi(args[0]); // 金钱类型
INT_PTR nCount= (INT_PTR)atof(args[1]); //金钱数量
GetGlobalLogicEngine()->GetGlobalVarMgr().AddCountByCircleLevel(nCircle,nCount);
return true;
}
bool CChatSystem::GMDeathDropItem(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(!m_pEntity) return false;
m_pEntity->OnDeathDropItem();
return true;
}
bool CChatSystem::GMSetZBPMtime(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args, nArgsCount, sRetMsg, 1) ==false)
return false;
int nPMIdx = atoi(args[0]);
//GetGlobalLogicEngine()->GetNewHundredManager().DoTreasureAttic((CActor*)m_pEntity, nFlag);
return true;
}
bool CChatSystem::GMSetZBPMdata(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
return true;
}
bool CChatSystem::GmSetAuction(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
return true;
}
//测试后台指令
bool CChatSystem::GmTestBackStage(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args, nArgsCount, sRetMsg, 1) ==false)
return false;
return true;
}
//GM添加金币
bool CChatSystem::GmAddGold(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,3) ==false && IsArgsValid(args,nArgsCount,sRetMsg,4) ==false) return false;
int nMoneyType = atoi(args[1]);
if( CanChangeProp(PROP_ACTOR_YUANBAO) ==false ) //如果不能加钱的话,判断一下
{
if(mtCoin == nMoneyType || mtYuanbao == nMoneyType ) return false; //外网不能GM改钱的
}
int nCount= atoi(args[2]); //数量
LPCSTR sMsg = "System Msg!";
if (IsArgsValid(args,nArgsCount,sRetMsg,4))//有文本信息
{
sMsg = args[3];
}
return CActor::AddChangeMoneyMsgByName(
args[0],m_pEntity->GetProperty<unsigned int>(PROP_ENTITY_ID),sMsg,"",nMoneyType,nCount,GameLog::Log_BackStage,m_pEntity->GetEntityName(),true);//记下GM的名字
}
//设置自己的等级
bool CChatSystem::GmSetSelfLevel(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
int nLevel= atoi(args[0]);
if( nLevel >=0)// && nLevel <= MAX_ACTOR_LEVEL )
{
m_pEntity->SetLevel(nLevel);
//m_pEntity->GetFriendSystem().SetSocialNeedFresh(m_pEntity->GetProperty<unsigned int>(PROP_ENTITY_ID));
GetGlobalLogicEngine()->GetWorldLevelMgr().CheckWorldLevel((CActor*)m_pEntity, true);
return true;
}
else
{
return false;
}
}
//设置别人的经验
bool CChatSystem::GmAdjustExp(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,2) ==false) return false;
char * name = args[0]; //玩家的名字
unsigned int nCount= atoi(args[1]); //数量
if( nCount >=0 )
{
CActor * pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(name);
if(pActor ==NULL)
{
strcpy(sRetMsg,"User Not Online");
return false;
}
pActor->SetProperty<Uint64>(PROP_ACTOR_EXP,nCount);
return true;
}
else
{
return false;
}
}
//添加自己的经验
bool CChatSystem::GmAddSelfExp(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
INT64 nCount= (INT64)atof(args[0]); //数量
if( nCount >=0 )
{
m_pEntity->AddExp(nCount, GameLog::clGmAddExp);
return true;
}
else
{
return false;
}
}
//GM测试添加物品
bool CChatSystem::GmAddItem(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
return GmMakeItem(args,nArgsCount,sRetMsg);
}
//GM删除物品
bool CChatSystem::GmDelItem(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count == 0)
{
sprintf(sRetMsg,"Need 3 param at least");
return false;
}
if( _stricmp(args[0],"all") ==0)
{
CUserBag & bagSys = m_pEntity->GetBagSystem();
bagSys.DeleteAllItem();
}else
{
if (args_count < 2)
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
int itemId = atoi(args[1]);
//int itemNum = atoi(args[2]);
CUserBag & bagSys = m_pEntity->GetBagSystem();
CUserItem* itemInfo = bagSys.FindItem(itemId);
if (!itemInfo)
{
return false;
}
bagSys.DeleteItem(itemInfo,itemInfo->wCount,"self_GM_del_item",GameLog::Log_BackStage,true);
}
return true;
}
bool CChatSystem::GmAddPresent( char **args, INT_PTR nArgsCount,char * sRetMsg )
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2)
{
sprintf(sRetMsg, "need one more Param");
return false;
}
int max_op_param_count = 7;
wylib::container::CBaseList<wylib::string::CAnsiString*> op_param_list;
InitParamList(args, args_count, op_param_list, max_op_param_count);
//bool result = AddItem(atoi(op_param_list.get(0)->rawStr()), atoi(op_param_list.get(1)->rawStr()),
// atoi(op_param_list.get(2)->rawStr()), atoi(op_param_list.get(3)->rawStr()), sRetMsg);
//生成个物品
char *sItemName = op_param_list.get(1)->rawStr();
const CStdItem* pItem = GetLogicServer()->GetDataProvider()->GetStdItemProvider().GetStdItemByName(sItemName);
if (!pItem)
{
SafeReleaseParamList(op_param_list);
sprintf(sRetMsg, "No such Item");
return false ;
}
CUserItemContainer::ItemOPParam param;
param.wItemId = (WORD)pItem->m_nIndex;
BYTE bCount = (BYTE)(atoi(op_param_list.get(2)->rawStr()));
param.wCount = bCount == 0?1:bCount;//默认送1个
param.btQuality = (BYTE)(atoi(op_param_list.get(3)->rawStr()));//默认0
param.btStrong = (BYTE)(atoi(op_param_list.get(4)->rawStr()));//默认0
param.btBindFlag = (BYTE)(atoi(op_param_list.get(5)->rawStr()));//默认0
bool result = CActor::AddItemMsgByName(op_param_list.get(0)->rawStr(),m_pEntity->GetProperty<unsigned int>(PROP_ENTITY_ID),
param,op_param_list.get(6)->rawStr(),"",GameLog::clGMAddItem,m_pEntity->GetEntityName(),true);
SafeReleaseParamList(op_param_list);
return true;
}
bool CChatSystem::GmMakeItem(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
//if(IsArgsValid(args,nArgsCount,sRetMsg,4) ==false) return false;
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 1)
{
sprintf(sRetMsg, "need one more Param");
return false;
}
int max_op_param_count = 11;
wylib::container::CBaseList<wylib::string::CAnsiString*> op_param_list;
InitParamList(args, args_count, op_param_list, max_op_param_count);
LPCTSTR sInPut = op_param_list.get(0)->rawStr();
bool boChar = false;
for (int i=0;i<strlen(sInPut);i++ )
{
if( sInPut[i] < 0 || sInPut[i] > 127 )
{
boChar = true;
break;
}
}
const CStdItem* pItem = NULL;
if ( boChar )
{
pItem = GetLogicServer()->GetDataProvider()->GetStdItemProvider().GetStdItemByName(sInPut);
}
else
{
int nInput = atoi(sInPut);
pItem = GetLogicServer()->GetDataProvider()->GetStdItemProvider().GetStdItem(nInput);
}
/*
char* sStrong = op_param_list.get(4)->rawStr();
int nValue = 0;
for (int i =0;i<strlen(sStrong);i++)
{
char s = sStrong[i];
if (s == '1')
{
nValue |= (0x1 << (i));
}
}
*/
if (!pItem)
{
SafeReleaseParamList(op_param_list);
sprintf(sRetMsg, "No such Item");
return false ;
}
int nID = pItem->m_nIndex;
bool result = AddItem(nID, __max(1, atoi(op_param_list.get(1)->rawStr())), atoi(op_param_list.get(2)->rawStr()), atoi(op_param_list.get(3)->rawStr()), atoi(op_param_list.get(4)->rawStr()),atoi(op_param_list.get(5)->rawStr()),atoi(op_param_list.get(6)->rawStr()),0,sRetMsg);
SafeReleaseParamList(op_param_list);
return result;
}
bool CChatSystem::AddItem(INT_PTR nItemID, INT_PTR nCount, INT_PTR nStar, INT_PTR nLostStar,INT_PTR nBind, INT_PTR bInSourceType, INT_PTR nAreaId,WORD wMonsterId, char * sRetMsg)
{
const CStdItem *pStdItem = GetLogicServer()->GetDataProvider()->GetStdItemProvider().GetStdItem(nItemID);
if (pStdItem == NULL)
{
strcpy(sRetMsg,"No such Item");
return false ;//参数错误
}
if (nCount <=0 )
{
strcpy(sRetMsg,"Param error");
return false;
}
CUserItemContainer::ItemOPParam itemData;
itemData.wItemId = (WORD)nItemID;
itemData.btQuality = (BYTE)0;
itemData.wCount = (WORD)nCount;
itemData.wStar = (WORD)nStar;
itemData.bLostStar = (BYTE)nLostStar;
itemData.bInSourceType = (BYTE)bInSourceType;
itemData.nDropMonsterId = (WORD)wMonsterId;
itemData.nAreaId = (int)nAreaId;
itemData.btBindFlag = (BYTE)nBind;
itemData.nCreatetime = GetGlobalLogicEngine()->getMiniDateTime();
INT_PTR nAddItemCount = 0;
memcpy(itemData.cSourceName, m_pEntity->GetEntityName(),sizeof(itemData.cSourceName));
CUserBag & bagSys = m_pEntity->GetBagSystem();
nAddItemCount = bagSys.AddItem(itemData,m_pEntity->GetEntityName(),GameLog::Log_BackStage);
if( nAddItemCount >0)
{
sprintf(sRetMsg,"bag add %d items OK, \n itemid = %d",nAddItemCount,nItemID);
//OutputMsg(rmTip,_T("GM add iTem id=%d,count=%d,Strong=%d,Quality=%d"),nItemID,nAddItemCount,nStrong,nQuality);
return true;
}
else
{
strcpy(sRetMsg,"bag add items fail");
return false;
}
return true;
}
//@Recall 角色名称 将指定角色传送到身边
bool CChatSystem::GmRecall(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CActor * pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor == NULL)
{
strcpy(sRetMsg,"No such online actorName");
return false;
}
pActor->MoveToEntity(m_pEntity);
return true;
}
//@ReGoto 角色名称 传送至指定角色身边
bool CChatSystem::GmReGoto(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) ==false) return false;
CActor * pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor == NULL)
{
strcpy(sRetMsg,"No such online actorName");
return false;
}
return m_pEntity->MoveToEntity(pActor);
}
//@MoveToNPC 地图名称 NPC名称
bool CChatSystem::GmMoveToNPC(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
char *pMapName = args[0];
char *pNpcName = args[1];
SIZE_T nMapNameLen = strlen(pMapName);
if (nMapNameLen <= 0 || strlen(pNpcName) <= 0)
{
sprintf(sRetMsg, "invalid scene name or npc name");
return false;
}
// 遍历所有的普通副本
FUBENVECTOR *pFuBenList = GetGlobalLogicEngine()->GetFuBenMgr()->GetFbList();
if (pFuBenList)
{
for (INT_PTR i = 0; i < pFuBenList->count(); i++)
{
CFuBen *pFB = (*pFuBenList)[i];
if (pFB && pFB->GetFbId() == 0) // 普通场景
{
CFuBen::SceneList &sceneLst = pFB->GetSceneList();
for (INT_PTR scene_idx = 0; scene_idx < sceneLst.count(); scene_idx++)
{
CScene *pScene = sceneLst[scene_idx];
if (pScene)
{
LPCTSTR pSceneName = pScene->GetSceneName();
if (strlen(pSceneName) == nMapNameLen && !strcmp(pSceneName, pMapName))
{
// 找到匹配名称的场景继续找Monster
CNpc *pNpc = pScene->GetNpc(pNpcName);
if (pNpc)
{
m_pEntity->MoveToEntity(pNpc);
return true;
}
}
}
}
}
}
}
sprintf(sRetMsg, "can't find npc!");
return false;
}
//@MapMove 源地图名称 目标地图名称
bool CChatSystem::GmMapMove(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
return false;
}
bool CChatSystem::GmWho(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
INT_PTR nTotalCount = 0;
//INT_PTR nCount = GetGlobalLogicEngine()->GetEntityMgr()->GetOnlineActorCount(nTotalCount);
INT_PTR nSimulatorPlayerCount = GetGlobalLogicEngine()->GetEntityMgr()->GetOnlineSimulatorActorCount(nTotalCount);
INT_PTR nNonGMPlayerCount = GetGlobalLogicEngine()->GetEntityMgr()->GetOnlineActorCount(nTotalCount);
int nCount1 = GetGlobalLogicEngine()->GetEntityMgr()->GetOnLineActorCountNoSame();
sprintf(sRetMsg, "Total Actor Count=%d, NonGM Count=%d,count = %d", (int)nTotalCount, (int)(nNonGMPlayerCount - nSimulatorPlayerCount), nCount1);
return true;
}
bool CChatSystem::GmClearBag(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
m_pEntity->GetBagSystem().Clear(m_pEntity->GetEntityName(), GameLog::clUserDestroyItem);
return true;
}
bool CChatSystem::GmShutup(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
CActor * pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (!pActor)
{
strcpy(sRetMsg, "No such online actorName");
return false;
}
INT_PTR nDuration = INT_PTR(atof(args[1]) * 60);
pActor->GetChatSystem()->SetShutup(true, nDuration);
return true;
}
bool CChatSystem::GmAddKeyword(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
char* pKeyword(args[0]);
int mode(atoi(args[1]));
return GetGlobalLogicEngine()->GetChatMgr().AddKeyword(pKeyword, mode);
}
bool CChatSystem::ReleaseShutup(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CActor * pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (!pActor)
{
strcpy(sRetMsg, "No such online actorName");
return false;
}
pActor->GetChatSystem()->SetShutup(false, 0);
return true;
}
bool CChatSystem::ShutupList(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
// 获取所有在线被禁言玩家列表
CVector<EntityHandle> actorList;
GetGlobalLogicEngine()->GetEntityMgr()->GetOnlineAcotrHandleList(actorList);
INT_PTR nCount = 0;
char szForbidMsg[100] = {0};
for (INT_PTR i = 0; i < actorList.count(); i++)
{
CActor *pActor = (CActor *)GetEntityFromHandle(actorList.get(i));
if (pActor && pActor->GetChatSystem()->IsShutup())
{
nCount++;
sprintf(szForbidMsg, "Forbid Actor_%2d:%s", nCount, pActor->GetEntityName());
m_pEntity->SendTipmsg(szForbidMsg, ttTipmsgWindow);
}
}
sprintf(sRetMsg,"Online shutup actor count=%d",nCount);
return true;
}
bool CChatSystem::GmShowFriendList(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
char szMsg[40] ={0};
CVector<int> &friendList = m_pEntity->GetFriendList();
for (int i = 0; i < friendList.count(); i++)
{
sprintf(szMsg, "friend_%d: %d", (i+1), friendList[i]);
m_pEntity->SendTipmsg(szMsg);
}
return true;
}
bool CChatSystem::WorldMessage(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
char *pMsg = args[0]; // 公告内容
int nMsgType = atoi(args[1]); // 公告提示类型(弹对话框、屏幕中央等)
///nMsgType值都修改了改成按位操作
//if (nMsgType >= ttMaxTmType || nMsgType <= ttInvalidTmType)
//{
// sprintf(sRetMsg, "Invalid tipmsg type");
// return false;
//}
GetGlobalLogicEngine()->GetEntityMgr()->BroadcastTipmsg(pMsg, nMsgType);
return true;
}
bool CChatSystem::NotifyMsg(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
char *pActorName = args[0];
CActor *pTarget = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(pActorName);
if (!pTarget)
{
// 发离线消息
CActor::AddGmTxtMsgByActorName(pActorName, args[1],m_pEntity->GetProperty<int>(PROP_ENTITY_ID));
return false;
}
else
{
// 发TipMsg消息增加一个GmTip类型即可
pTarget->SendTipmsg(args[1], ttGmTip);
}
return true;
}
//处理GM命令
void CChatSystem::ProcessGmCommand(char * msg)
{
if(msg ==NULL )return;
char sLogCmd[64];
sprintf(sLogCmd,"%s",msg);
char * args[10]; //命令列表
char *sCmd = msg + 1; //命令的字符指针
char *msgptr = msg + 1; //去掉@,指向下一个
int nArgCount = 0; //参数的个数
int nBlankCount =0; //空格的数量
memset(args, 0, sizeof(args));
while(*msgptr && nArgCount < ArrayCount(args))
{
//取第一个空格的位置
char *ptr = strchr(msgptr, ' '); //
//如果没有空格的话
if ( !ptr )
{
//如果前面出现过空格,那么说明后面是一个参数
if( nBlankCount >0 )
{
args[nArgCount] = msgptr;
nArgCount ++;
}
break;
}
//命令的话就不要处理
if( nBlankCount >0 )
{
args[nArgCount] = msgptr;
nArgCount++;
}
nBlankCount ++; //空格的数量++
*ptr = 0;
ptr++;
//跳过连续的空格
while (*ptr && (unsigned char)*ptr <= 0x20 )
ptr++;
msgptr = ptr;
}
if(sCmd ==NULL) return;
INT_PTR nCount =0;
char retMsg[2048]; //返回参数
retMsg[0]=0;
bool flag= false; //是否有命令
for(INT_PTR i=0;i<ArrayCount( CChatSystem::GmCommandHandlers); i++)
{
if( _stricmp(sCmd,CChatSystem::GmCommandHandlers[i].sCommand) ==0)
{
flag =true;
// Check GM Right
if (GmCommandHandlers[i].nReqMinGmLvl > m_pEntity->GetGmLevel())
{
strcat(retMsg, "Permission denied");
}
else
{
if( (this->*GmCommandHandlers[i].func)(args,nArgCount,retMsg) )//执行
{
LPCSTR sName = m_pEntity->GetEntityName();
strcat(retMsg,":GM Succeed");
OutputMsg(rmNormal, _T("%s:gm[%s] exec gm order[%s] succeed"), __FUNCTION__, sName, sCmd);
}
else
{
strcat(retMsg,":GM Fail");
}
}
break;
}
}
if(flag ==false)
{
strcat(retMsg,"No such command");
}
((CActor *)m_pEntity)->SendTipmsg(retMsg,ttTipmsgWindow);
}
bool CChatSystem::AddFubenCount( char **args, INT_PTR nArgsCount, char *sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 3) == false) return false;
CActor * pActor= GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]) ;
if (!pActor)
{
return true;
}
//获取副本的groupid
// COMMONFUBENCONFIG* pConfig = NULL;//GetGlobalLogicEngine()->GetFuBenMgr()->GetConfigByName(args[1]);
// if (pConfig)
// {
// int nCount = atoi(args[2]);
// CCLVariant &var =pActor->GetActorVar();
// CCLVariant* pVar = var.get("fb");
// if (pVar)
// {
// char buf[10];
// #ifdef WIN32
// _itoa_s(pConfig->nGroupId,buf,sizeof(buf)-1,10);
// #else
// snprintf(buf, sizeof(buf)-1, "%d", pConfig->nGroupId );
// #endif
// CCLVariant* pVarCount = pVar->get(buf);
// if (pVarCount)
// {
// int nOld = (int)((double)(*pVarCount));
// *pVarCount = nOld + nCount;
// }
// }
// }
return true;
}
bool CChatSystem::ReloadMonster(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetGlobalLogicEngine()->GetBackResLoadModule().LoadMonsterConfig();
return true;
}
bool CChatSystem::ReloadItem(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetGlobalLogicEngine()->reloadItemConfig();
return true;
}
bool CChatSystem::TracePacket(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
const char* szActorName = args[0];
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(szActorName);
if (pActor)
{
pActor->SetTracePacket(true);
return true;
}
return false;
}
bool CChatSystem::ViewTargetProp(char **args, INT_PTR nArgsCount, char* sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
const char* szActorName = args[0];
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(szActorName);
if (!pActor) return false;
int nPropId = atoi(args[1]);
int nVal = pActor->GetProperty<int>(nPropId);
_stprintf(sRetMsg, _T("prop id=%d value=%d"), nPropId, nVal);
return true;
}
//设置防沉迷开启
bool CChatSystem::GmSetFcmOpen(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetLogicServer()->GetDataProvider()->GetGlobalConfig().bIsFcmOpen = true;
return true;
}
//设置防沉迷关闭
bool CChatSystem::GmSetFcmClose(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetLogicServer()->GetDataProvider()->GetGlobalConfig().bIsFcmOpen = false;
return true;
}
bool CChatSystem::GuildAddYs(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (!m_pEntity) return false;
int nValue = atoi(args[0]);
CActor* pActor = (CActor *)m_pEntity;
if(pActor->GetGuildSystem()->IsFree()) return false;
pActor->GetGuildSystem()->GetGuildPtr()->SetGuildYs(nValue);
pActor->GetGuildSystem()->GetGuildPtr()->m_boUpdateTime = true;
return true;
}
bool CChatSystem::GmSetGguildLeader(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
char* sGuildName = args[0];
char* sAcotrName = args[1];
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(sAcotrName);
if (!pActor) return false;
GetGlobalLogicEngine()->GetGuildMgr().SetGuildLeaderByname(sGuildName,sAcotrName);
return true;
}
bool CChatSystem::GmSetGuildAuth(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
char* sGuildName = args[0];
int nAuthFlag = atoi(args[1]);
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(sGuildName);
if (!pGuild) return false;
if (nAuthFlag == 0 || nAuthFlag ==1)
{
pGuild->SetCertification(nAuthFlag);
}
return true;
}
bool CChatSystem::ReqTransmit(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
CLogicServer *lpLogicServer = GetLogicServer();
int nId = lpLogicServer->GetCommonServerId();
if(((CActor *)m_pEntity)->CanTransMit(nId))
{
((CActor *)m_pEntity)->RequestTransmitTo(nId);
return true;
}
else
{
return false;
}
}
bool CChatSystem::TraceServerInfo(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
int nCurrServerId = GetLogicServer()->GetServerIndex();
CActor *pActor = (CActor *)m_pEntity;
int nRawServerId = pActor->GetRawServerIndex();
sprintf(sRetMsg, _T("login_server_id=%d, raw_server_id=%d"), nCurrServerId, nRawServerId);
return true;
}
bool CChatSystem::SetActorMsgFilter(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (nArgsCount < 1)
{
strcpy(sRetMsg, "invalid param");
return false;
}
int nSystemId = atoi(args[0]);
int nMsgId = -1, nFlag = 1;
if (nArgsCount > 2)
{
nFlag = atoi(args[2]);
}
if (nArgsCount > 1)
{
nMsgId = atoi(args[1]);
}
GetGlobalLogicEngine()->GetActorMsgFilter().SetFilter(nSystemId, nMsgId, nFlag != 0 ? true : false);
return true;
}
bool CChatSystem::TestSessionBroad(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
char szData[1024] = {0};
CDataPacket packet(szData, sizeof(szData));
packet << (WORD)jxInterSrvComm::SessionServerProto::fcDefault;
const char *data = "abcdefg";
size_t nLen = strlen(data);
packet.writeString(data, nLen);
CLogicSSClient *pSSClient = GetLogicServer()->GetSessionClient();
pSSClient->BroadMsgToCommonLogicClient(packet.getMemoryPtr(), packet.getLength());
return true;
}
bool CChatSystem::GmStartCommonServer(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
bool bStart = true;
bStart = atoi(args[0]) != 0 ? true : false;
GetLogicServer()->SetStartCommonServer(bStart);
if (GetLogicServer()->IsStartCommonServer())
strcpy(sRetMsg, "CommonServer Start!");
else
strcpy(sRetMsg, "CommonServer Stop!");
return true;
}
bool CChatSystem::GmResetActorCirclePoint(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
int nCircle= 0;
CActor* pActor = (CActor*)m_pEntity;
if (nArgsCount ==1)
{
pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (!pActor)
{
sprintf(sRetMsg, "player %s offline", args[0]);
return false;
}
}
else if (nArgsCount != 0)
{
return false;
}
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction(pActor,"OnCircleReset",1);
return true;
}
bool CChatSystem::GmSetActorCircle(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
int nCircle= 0;
CActor* pActor = (CActor*)m_pEntity;
if (nArgsCount ==2)
{
pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (!pActor)
{
sprintf(sRetMsg, "player %s offline", args[0]);
return false;
}
nCircle = atoi(args[1]);
}
else if(nArgsCount == 1)
{
nCircle = atoi(args[0]);
}
else
{
return false;
}
if(nCircle >= 0)
{
int oldCircle = pActor->GetProperty<unsigned int>(PROP_ACTOR_CIRCLE);
pActor->SetActorCircle(nCircle);
if (nCircle >= oldCircle)
{
//GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction(pActor,"CircleSetPotentialPoint",nCircle);
}
else
{
//转数变低了,重置下潜力点
//GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction(pActor,"OnCircleReset",1);
}
return true;
}
else
{
return false;
}
}
bool CChatSystem::GmClearCsRank(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR nServerId = 0;
if (nArgsCount >= 1)
{
nServerId = atoi(args[0]);
}
GetGlobalLogicEngine()->GetTopTitleMgr().ClearCsRank(nServerId);
return true;
}
bool CChatSystem::GmSaveCsRank(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetGlobalLogicEngine()->GetTopTitleMgr().BroadLogicToSaveCsRank();
return true;
}
bool CChatSystem::GmLoadCsRank(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetGlobalLogicEngine()->GetTopTitleMgr().BroadLogicToLoadCsRank();
return true;
}
bool CChatSystem::GmClearAllMsg(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetGlobalLogicEngine()->GetMiscMgr().OnBackClearAllMsg();
return true;
}
bool CChatSystem::GMSetSbkGuild(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
char* sGuildName = args[0];
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(sGuildName);
if(pGuild)
{
GetGlobalLogicEngine()->GetGuildMgr().SetCityOwnGuildId(pGuild->m_nGid);
}
else
{
return false;
}
return true;
}
bool CChatSystem::GMSetWulinMaster(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
char* sName = args[0];
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(sName);
if (!pActor) return false;
CNpc* pNpc = GetGlobalLogicEngine()->GetGlobalNpc();
if (pNpc == NULL) return false;
CScriptValueList paramList, retList;
unsigned int nActorId=pActor->GetProperty<unsigned int>(PROP_ENTITY_ID);
paramList << (unsigned int)nActorId;
if (!pNpc->GetScript().Call("OnGmSetWulinMaster", paramList, retList))
{
OutputMsg(rmError, _T("call script fun: OnGmSetWulinMaster failed"));
}
return true;
}
bool CChatSystem::GmAddActivity(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nValue = atoi(args[0]);
((CActor *)m_pEntity)->GetAcitivityAward(nValue);
return true;
}
bool CChatSystem::GmCreateNpcById(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CScene* pScene = m_pEntity->GetScene();
if (pScene)
{
int nX = 0, nY = 0;
m_pEntity->GetPosition(nX, nY);
int nNpcId = atoi(args[0]);
return pScene->GmCreateNpcById(nNpcId, nX, nY);
}
return false;
}
bool CChatSystem::GmCreateNpc(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
CFuBen *pFb = GetGlobalLogicEngine()->GetFuBenMgr()->GetFbStaticDataPtr(0);
if (pFb)
{
CScene* pScene = pFb->GetSceneByName(args[0]);
if (pScene)
{
CNpc* npcEntity = pScene->GetNpc(args[1]);
if(npcEntity)
{
int posX,posY;
npcEntity->GetPosition(posX,posY);
if( ((CNpc*)npcEntity)->GetAttriFlag().DenySee == true)
{
((CNpc*)npcEntity)->GetAttriFlag().DenySee = false;
sprintf(sRetMsg, "scene[%s] Npc[%s] is DenySee,x=%d,y=%d", pScene->GetSceneName(), npcEntity->GetEntityName(),posX,posY );
OutputMsg(rmNormal, sRetMsg);
return true;
}
else
{
sprintf(sRetMsg, "scene[%s] Npc[%s] is exist,x=%d,y=%d", pScene->GetSceneName(),npcEntity->GetEntityName(),posX,posY );
OutputMsg(rmNormal, sRetMsg);
}
}
return pScene->GmCreateNpcByName(args[1]);
}
}
return false;
}
bool CChatSystem::GmTracePacket(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nValue = atoi(args[0]);
if(nValue == 0)
{
GetGlobalLogicEngine()->SetPacketRecordState(true);
}
else
{
GetGlobalLogicEngine()->SetPacketRecordState(false);
}
return true;
}
bool CChatSystem::GmSetOpenServerTime(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CMiniDateTime nStart;
//nStart.encode(args[0]);//服务器的开启时间
CBackStageSender::StdTimeStr2MiniTime(args[0], nStart);
if(GetLogicServer())
{
GetLogicServer()->SetServerOpenTime(nStart);
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmSetMergeServerTime(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CMiniDateTime nStart;
//nStart.encode(args[0]);
CBackStageSender::StdTimeStr2MiniTime(args[0], nStart);
if(GetLogicServer())
{
GetLogicServer()->SetServerCombineTime(nStart);
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmSetQuickTimes(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
return true;
}
bool CChatSystem::GmSetChatLog( char **args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nFlag = atoi(args[0]);
if (nFlag < 0)
{
return false;
}
//GetLogicServer()->GetDataProvider()->GetGlobalConfig().nChatLogFlag = nFlag;
GetLogicServer()->GetDataProvider()->GetChatSystemConfig().nChatLogFlag = nFlag;
return true;
}
bool CChatSystem::GmSetActorDropRate( char ** args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
GetLogicServer()->GetDataProvider()->GetGlobalConfig().fWriteNameEquipDropRate = (float)atof(args[0]);
return true;
}
//
bool CChatSystem::GMSetQuickRate( char **args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
float fRate =0.1f;
if (nArgsCount >= 1)
{
fRate = (float)atof(args[0]);
}
if(fRate <0.0 || fRate >0.5)
{
sprintf(sRetMsg, " invalide param" );
return false;
}
CActor::s_fKickQuickRate = fRate;
sprintf(sRetMsg, "quick rate=%f",fRate );
return true;
}
bool CChatSystem::GmSetSpGuidId(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false)
{
return false;
}
int nId = atoi(args[0]);
GetLogicServer()->SetSpid(nId);
//GetLogicServer()->GetMgrClient()->SetSpId(nId);
GetGlobalLogicEngine()->SetUserItemSpId(nId);
return true;
}
bool CChatSystem::GmSetServerId(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false)
{
return false;
}
int nServerId = atoi(args[0]);
GetLogicServer()->SetServerIndex(nServerId);
GetLogicServer()->GetLogClient()->SetServerIndex(nServerId);
GetLogicServer()->GetLocalClient()->SetServerIndex(nServerId);
GetGlobalLogicEngine()->SetUserItemServerId(nServerId);
return true;
}
bool CChatSystem::GmLoadGuildDataFromDb(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
GetGlobalLogicEngine()->GetGuildMgr().Load();
return true;
}
bool CChatSystem::GmSetActorGuild(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
char* sGuildName = args[0];
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(sGuildName);
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[1]);
if(pGuild && pActor)
{
if(pActor->GetGuildSystem() && pActor->GetGuildSystem()->GetGuildPtr())
{
m_pEntity->SendTipmsg("actor in guild");
return false;
}
if (pGuild->GetMemberCount() >= pGuild->GetMaxMemberCount())
{
//达到了人数上限
m_pEntity->SendOldTipmsgFormatWithId(tpMaxMemberCount,ttTipmsgWindow,pGuild->m_sGuildname);
return false;
}
//加入gid帮派
pGuild->AddMemberToList((CActor*)pActor);
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmDeleteActorGuild(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor)
{
if(pActor->GetGuildSystem() && pActor->GetGuildSystem()->GetGuildPtr())
{
pActor->GetGuildSystem()->GetGuildPtr()->DeleteMember(pActor->GetProperty<unsigned int>(PROP_ENTITY_ID),(CActor*)pActor,NULL,FALSE);
pActor->GetGuildSystem()->SetGuild(NULL);
}
pActor->SetProperty<unsigned int>(PROP_ACTOR_GUILD_ID,0);
pActor->SetProperty<unsigned int>(PROP_ACTOR_GUILD_LEVEL,0);
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmSetEquipLuck(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
CActor * pPlayer = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (pPlayer == NULL)
{
sprintf(sRetMsg, "player %s offline", args[0]);
return false;
}
CUserItem * pEquipItem = pPlayer->GetEquipmentSystem().GetItemByType(Item::itWeapon);
if (pEquipItem == NULL)
{
sprintf(sRetMsg, "%s not weapon in body", args[0]);
return false;
}
char nLuck = atoi(args[1]);
if (nLuck < 0 || nLuck > 20)
{
sprintf(sRetMsg, "the valid value is [0,20]");
return false;
}
return pPlayer->GetBagSystem().SetItemProperty(pEquipItem, Item::ipItemLuck, nLuck);
}
bool CChatSystem::GmGuildSignUpSbk(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(args[0]);
if(pGuild)
{
int nId = atoi(args[1]);
pGuild->m_SignUpFlag = nId;
}
return true;
}
bool CChatSystem::GmSetActorHide(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor)
{
int nType = atoi(args[1]);
if(nType == 0)
{
//pActor->GetAttriFlag().DenySee = false;
pActor->RemoveState(esStateHide);
}
else
{
pActor->AddState(esStateHide);
//pActor->GetAttriFlag().DenySee = true;
}
}
return true;
}
bool CChatSystem::GmSetSbkPos(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 4) == false) return false;
int nType = atoi(args[2]);
int nState = atoi(args[3]);
m_pEntity->GetGuildSystem()->GMSetGuildCityPostion(args[0],nType, nState,args[1]);
return false;
}
bool CChatSystem::GmSetActorCreatePos(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nCount = atoi(args[0]);
//GetLogicServer()->GetDataProvider()->GetVocationConfig()->nDefaultCreatePosCount = nCount;
return true;
}
bool CChatSystem::GmAddActorCreatePos(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
int nPosX = atoi(args[0]);
int nPosY = atoi(args[1]);
// for(int i=1;i<=3;i++)
// {
// PVOCATIONINITCONFIG pConfig =&( GetLogicServer()->GetDataProvider()->GetVocationConfig()->vocationTable[i]);
// if(pConfig->nPosCount < MAX_CREATE_POSNUM-1)
// {
// pConfig->nCreatePos[pConfig->nPosCount].nScenceID = 1;
// pConfig->nCreatePos[pConfig->nPosCount].nPosX = nPosX;
// pConfig->nCreatePos[pConfig->nPosCount].nPosY = nPosY;
// pConfig->nPosCount++;
// }
// }
return true;
}
bool CChatSystem::GmSetIdlePlayer(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
byte nType = atoi(args[0]);
byte nVal = atoi(args[1]);
if (nType == 1)
{
bool boResult = nVal > 0 ? true:false;
CMovementSystem::s_boCheckIdleLowPly = boResult;
}
else if(nType == 2)
{
CMovementSystem::s_btMinIdlePlyLevel = nVal;
}
return true;
}
bool CChatSystem::GmOpenQuickKick(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nType = atoi(args[0]);
if (nType >= 0 && nType <= 100)
{
CActor::s_nCheckQuickCountKick = nType;
return true;
}
return false;
}
bool CChatSystem::GmOpenQuickSeal(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if(IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nType = atoi(args[0]);
CActor::s_boCheckQuickSealActor = nType > 0 ? true : false;
return true;
}
bool CChatSystem::GmSetEnterId(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if(IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nType = atoi(args[0]);
GetLogicServer()->SetGmCreateIndex(nType);
return true;
}
bool CChatSystem::GmSetLhzsTitle(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
return false;
if(IsArgsValid(args, nArgsCount, sRetMsg, 3) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor)
{
int nType = atoi(args[2]);
int nTitleid = atoi(args[1]);
bool bFlag = true;
if(nType == 0) //取消
bFlag = false;
pActor->SetHeadTitle(nTitleid,bFlag);
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmSetGm(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
// if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
// int nType = atoi(args[0]);
// int nTitleid = GetLogicServer()->GetDataProvider()->GetGlobalConfig().nGmTitleId;
// if(nType == 0) //取消
// {
// //((CActor*)m_pEntity)->SetHeadTitle(nTitleid,false);
// ((CActor*)m_pEntity)->GetNewTitleSystem().SetCurNewTitle(0);
// }
// else
// {
// //((CActor*)m_pEntity)->SetHeadTitle(nTitleid,true);
// ((CActor*)m_pEntity)->GetNewTitleSystem().SetCurNewTitle(nTitleid);
// }
return true;
}
//设置服务器的合区时间(用于后台设置开启某些系统用)
bool CChatSystem::GmSetServerTempCombineTime(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nMinutes = atoi(args[0]);
unsigned int nCurrTime = GetGlobalLogicEngine()->getMiniDateTime();
unsigned int nCombineTime = (nCurrTime + (nMinutes*60));
GetGlobalLogicEngine()->GetMiscMgr().SetServerTempCombineTime(nCombineTime, nCurrTime);
return true;
}
bool CChatSystem::GmKillAllMonster(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
CScene* pScene = m_pEntity->GetScene();
if (pScene)
{
pScene->KillAllMonster(m_pEntity);
}
return true;
}
bool CChatSystem::GmKillMonster(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 3) == false) return false;
int nRetCount = 0;
const char * sSceneName = args[0];
const char * sName = args[1];
byte nDropItem = atoi(args[2]);
CFuBen * pFb = m_pEntity->GetFuBen();
if (pFb == NULL)
{
pFb = GetGlobalLogicEngine()->GetFuBenMgr()->GetFbStaticDataPtr(0);
}
CScene * pScene = pFb->GetSceneByName(sSceneName);
if (pScene != NULL)
{
nRetCount = pScene->KillMonsterByName(sName, m_pEntity, nDropItem);
}
char buff[100];
sprintf_s(buff, ArrayCount(buff), " kill monster count:%d", nRetCount);
strcat(sRetMsg, buff);
return true;
}
bool CChatSystem::GmSetCrossConfig(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
GetLogicServer()->ReloadCrossConfig(); //重新加载跨服的配置
return true;
}
bool CChatSystem::GmSetCrossCommonId(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nServerId = atoi(args[0]);
GetLogicServer()->SetCommonServerId(nServerId);
return true;
}
bool CChatSystem::GmSetCommonServerId(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if(GetLogicServer()->IsCommonServer() ) return false;
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nId = atoi(args[0]);
GetLogicServer()->SetCommonServerId(nId); //设置跨服的ID
GetLogicServer()->ReloadCrossConfig(false); //重新加载跨服的配置
return true;
}
bool CChatSystem::GmSetRanking(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
// if (IsArgsValid(args, nArgsCount, sRetMsg, 3) == false)
// {
// return false;
// }
// int nId = atoi(args[1]);
// int nVal = atoi(args[2]);
// if (nVal < 0)
// {
// return false;
// }
// CRanking * pRanking = GetGlobalLogicEngine()->GetRankingMgr().GetRanking(args[0]);
// if (pRanking != NULL)
// {
// if (nVal == 0)
// {
// pRanking->RemoveId(nId);
// }
// else
// {
// CRankingItem * pItem = pRanking->GetPtrFromId(nId);
// if (pItem != NULL)
// {
// int nOldPoint = pItem->GetPoint();
// pRanking->Update(nId, nVal - nOldPoint);
// }
// else
// {
// pRanking->AddItem(nId, nVal);
// }
// }
// return true;
// }
return false;
}
bool CChatSystem::GmSaveAllRank(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
GetGlobalLogicEngine()->GetRankingMgr().Save();
return true;
}
bool CChatSystem::GmChangeNameFlag(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int bState = atoi(args[0]);
if(bState == 0)
{
GetLogicServer()->SetChangeNameFlag(false);
}
else
{
GetLogicServer()->SetChangeNameFlag(true);
}
return true;
}
bool CChatSystem::GmOpenTrace(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int bState = atoi(args[0]);
if(bState == 0)
{
GetGlobalLogicEngine()->SetOpenPerfLog(false);
}
else
{
GetGlobalLogicEngine()->SetOpenPerfLog(true);
}
return true;
}
bool CChatSystem::GmSetSaveQuestLogFlag(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nState = atoi(args[0]);
if(nState == 0)
{
GetLogicServer()->SetQuestSaveLog(false);
}
else
{
GetLogicServer()->SetQuestSaveLog(true);
}
return true;
}
bool CChatSystem::GmSetSaveCoinLogFlag(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nState = atoi(args[0]);
if(nState == 0)
{
GetLogicServer()->SetCoinSaveLog(false);
}
else
{
GetLogicServer()->SetCoinSaveLog(true);
}
return true;
}
bool CChatSystem::GmSetBuildLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 3) == false) return false;
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(args[0]);
if(pGuild)
{
int nIndex = atoi(args[1]);
int nValue = atoi(args[2]);
pGuild->ChangeGuildBuildingLev(nIndex,nValue);
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmClearGuildBuildData(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(args[0]);
if(pGuild)
{
pGuild->SetGuildChallengeTimes(0);
pGuild->SetBossChanllengeHandle(0);
pGuild->m_nThunderPower;
pGuild->m_nFillThunderTimes;
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmClearGuildBuildTime(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(args[0]);
if(pGuild)
{
pGuild->SetGuildBuildingCdTime(0);
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmclearActorBuildData(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor)
{
pActor->GetGuildSystem()->OnNewDayArriveOP();
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmChangeActorGx(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor)
{
pActor->GetGuildSystem()->ChangeGuildGx(atoi(args[1]), GameLog::Log_BackStage);
pActor->GetGuildSystem()->ChangeTodayGx(atoi(args[1]));
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmClearBossHard(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetLogicServer()->GetDataProvider()->GetMonsterConfig().ClearBossGrow();
return true;
}
bool CChatSystem::GMSetTradingQuota( char **args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nValue = atoi(args[0]);
if(!m_pEntity || nValue < 0) return false;
m_pEntity->SetProperty<unsigned int>(PROP_ACTOR_TRADINGQUOTA,nValue );
return true;
}
bool CChatSystem::GMSetBlessValue( char **args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nValue = atoi(args[0]);
if(!m_pEntity || nValue < 0) return false;
m_pEntity->SetProperty<unsigned int>(PROP_ACTOR_Bless,nValue );
return true;
}
bool CChatSystem::GMSetQuestState( char **args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nId = atoi(args[0]);
int nState = atoi(args[1]);
if(!m_pEntity) return false;
((CActor*)m_pEntity)->GetQuestSystem()->GMSetQuestState(nId, nState);
return true;
}
bool CChatSystem::GMClearQuestlog( char **args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
if(!m_pEntity) return false;
((CActor*)m_pEntity)->GetQuestSystem()->ClearAllQuest();
return true;
}
bool CChatSystem::GMSetJMLv( char **args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nValue = atoi(args[0]);
if(!m_pEntity || nValue < 0) return false;
m_pEntity->SetProperty<unsigned int>(PROP_ACTOR_MERIDIALv,nValue );
return true;
}
bool CChatSystem::GmSetGuildCoin( char **args, INT_PTR nArgsCount, char * sRetMsg )
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nCoin = atoi(args[0]);
if (((CActor *)m_pEntity)->GetGuildSystem()->GetGuildPtr())
{
((CActor *)m_pEntity)->GetGuildSystem()->GetGuildPtr()->ChangeGuildCoin(nCoin,0,"gm");
return true;
}
return false;
}
bool CChatSystem::GmAddMail(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if ( args_count < 3)
{
m_pEntity->GetMailSystem().SendAllMail();
return true;
}
unsigned int nActorId = atoi(args[0]);
if (nActorId == 0)
{
nActorId = m_pEntity->GetId();
}
int max_op_param_count = 9;
wylib::container::CBaseList<wylib::string::CAnsiString*> op_param_list;
InitParamList(args, args_count, op_param_list, max_op_param_count);
CMailSystem::MAILATTACH mailAttr[MAILATTACHCOUNT];
mailAttr[0].nType = atoi(op_param_list.get(3)->rawStr());
mailAttr[0].item.wItemId = atoi(op_param_list.get(4)->rawStr());
mailAttr[0].item.wCount = atoi(op_param_list.get(5)->rawStr());
mailAttr[1].nType = atoi(op_param_list.get(6)->rawStr());
mailAttr[1].item.wItemId = atoi(op_param_list.get(7)->rawStr());
mailAttr[1].item.wCount = atoi(op_param_list.get(8)->rawStr());
CMailSystem::SendMail(nActorId,args[1],args[2],mailAttr
);
return true;
}
bool CChatSystem::GmAddServerMail(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if ( args_count < 3)
{
m_pEntity->GetMailSystem().SendAllMail();
return true;
}
unsigned int nActorId = atoi(args[0]);
// if (nActorId == 0)
// {
// nActorId = m_pEntity->GetId();
// }
unsigned int nCurrTime = GetGlobalLogicEngine()->getMiniDateTime();
ServerMail serverMail;
ServerMailDef& mail = serverMail.serverData;
char* szTitle = args[1];
char* szContent = args[2];
memcpy(mail.sTitle, szTitle, sizeof(mail.sTitle));
memcpy(mail.sContent, szContent, sizeof(mail.sContent));
printf("szTitle:%s, count:%s\n", szTitle, szContent);
mail.nMinVipLevel = 0;
mail.nMaxVipLevel = 0;
mail.nMinLevel = 0;//最低人物等级
mail.nMaxLevel = 999; //最高人物等级
mail.nMinRegisterTime = 0; //最早注册时间
mail.nMaxRegisterTime = 0; //最晚注册时间
mail.nMinLoginTime = 0; //最早登录时间
mail.nMaxLoginTime = 0; //最晚登录时间
mail.btOnline = 0; //在线 0全部1在线2不在线
mail.btSex = -1; //性别 -1全部0男 1女
mail.nWay = 0; //用途标识,0系统正常邮件1后台福利
int nType = atoi(args[3]); //物品type
int nId = atoi(args[4]); // 物品id
int nCount = atoi(args[5]); // 物品数量
serverMail.mailAttach[0].actorAward.wId = (WORD)nId;
serverMail.mailAttach[0].actorAward.btType = nType;
serverMail.mailAttach[0].actorAward.wCount = (WORD)nCount;
GetGlobalLogicEngine()->GetMailMgr().TestAddServerMail(serverMail);
return true;
}
bool CChatSystem::GmAddOneMail(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if ( args_count < 11)
{
m_pEntity->GetMailSystem().SendAllMail();
return true;
}
unsigned int nActorId = atoi(args[0]);
if (nActorId == 0)
{
nActorId = m_pEntity->GetId();
}
char* szTitle = args[1];
char* szContent = args[2];
int nType = atoi(args[3]);
int nId = atoi(args[4]);
int nCount = atoi(args[5]);
int nFlag = atoi(args[6]); //0-正常1-绑定2-不可交易
int nStar = atoi(args[7]); //强化星级
int nLostStar = atoi(args[8]); //强化损失星级
int bInSourceType = atoi(args[9]); //铭刻等级
int nAreaId = atoi(args[10]); //铭刻经验
CMailSystem::MAILATTACH mailAttr[MAILATTACHCOUNT];
mailAttr[0].nType = nType;
mailAttr[0].item.wItemId = (WORD)nId;
mailAttr[0].item.wCount = (WORD)nCount;
mailAttr[0].item.btFlag = (BYTE)nFlag;
mailAttr[0].item.wStar = (WORD)nStar;
mailAttr[0].item.bLostStar = (BYTE)nLostStar;
mailAttr[0].item.bInSourceType = (BYTE)bInSourceType;
mailAttr[0].item.nAreaId = nAreaId;
CMailSystem::SendMail(nActorId,szTitle, szContent, mailAttr);
return true;
}
//------------------------反加速外挂相关-----begin--------------------------
bool CChatSystem::GmSetOpenCkSpeedFalg(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
int nFlag = atoi(args[0]);
if(nFlag == 0)
{
CCheckSpeedSystem::m_bOpenVerifyFlag = false;
}
else
{
CCheckSpeedSystem::m_bOpenVerifyFlag = true;
}
return true;
}
bool CChatSystem::GmSetDeviationTimes(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CCheckSpeedSystem::m_DeviationTimes = atoi(args[0]);
return true;
}
bool CChatSystem::GmSetCkIntevalTime(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
CCheckSpeedSystem::m_IntevalTime = atoi(args[0]);
return true;
}
bool CChatSystem::GmSetSpeedCheck(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 4) == false) return false;
CCheckSpeedSystem::m_nSpeedCheck = atoi(args[0]);
CCheckSpeedSystem::m_nTimeRate = atoi(args[1]);
CCheckSpeedSystem::m_nStartCheck = atoi(args[2]);
_stprintf(sRetMsg, _T("GmSetSpeedCheck, m_nSpeedCheck:%d, m_nTimeRate:%d, m_nStartCheck:%d, s_nNormalTime:%d"), CCheckSpeedSystem::m_nSpeedCheck,
CCheckSpeedSystem::m_nTimeRate, CCheckSpeedSystem::m_nStartCheck);
return true;
}
bool CChatSystem::GmSetSpeedValue(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
int nType = atoi(args[0]);
switch(nType)
{
case 1:
{
CCheckSpeedSystem::m_nUpLimit = atoi(args[1]);
break;
}
case 2:
{
CCheckSpeedSystem::m_nLowLimit = atoi(args[1]);
break;
}
case 3:
{
CCheckSpeedSystem::m_nUpLimit2 = atoi(args[1]);
break;
}
case 4:
{
CCheckSpeedSystem::m_nLowLimit2 = atoi(args[1]);
break;
}
default:
break;
}
return true;
}
bool CChatSystem::GmLoadNpcFile(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
if (!_stricmp(args[0], "SYS"))
{
return GetGlobalLogicEngine()->GetMiscMgr().HotUpdateScript(args[1]);
}
return false;
}
bool CChatSystem::GmLoadQuestFile( char ** args, INT_PTR nArgsCount, char * sRetMsg )
{
// if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false) return false;
// CNpc * pNpc = GetGlobalLogicEngine()->GetScriptNpc();
// if (pNpc != NULL)
// {
// char sBuff[256];
// sprintf_s(sBuff, ArrayCount(sBuff), "data/functions/NpcMiscFun/NpcDialog/%s.txt", args[0]);
// return pNpc->LoadScriptBuff(sBuff);
// }
return false;
}
bool CChatSystem::GmTotalAllSceneMonsterCount(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
unsigned int nTotalCount = GetGlobalLogicEngine()->GetFuBenMgr()->TotalAllSceneMonsterCount();
_stprintf(sRetMsg, _T("All Scene Monster Count is %d."), nTotalCount);
return true;
}
bool CChatSystem::GmGetCurrSceneInfo(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
CScene* pScene = ((CActor*)m_pEntity)->GetScene();
if ( !pScene )
{
return false;
}
_stprintf(sRetMsg, _T("name:%s,id:%d W:%d H:%d"), pScene->GetSceneName(),
pScene->GetSceneId(), pScene->GetSceneWidth(), pScene->GetSceneHeight() );
return true;
}
bool CChatSystem::GmSetTaxing(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
if (IsArgsValid(args,nArgsCount,sRetMsg,2) == false)
{
return false;
}
BYTE btType = (BYTE)atoi(args[0]);
int nValue = (int)atoi(args[1]);
if (btType == 1)
{
//GetGlobalLogicEngine()->GetGuildMgr().m_CurAllTaxing = nValue;
}
else if (btType == 2)
{
//GetGlobalLogicEngine()->GetGuildMgr().m_ReciveTaxing = nValue;
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmSetRundomKey(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor)
{
pActor->SetRundomKey(atoi(args[1]));
}
return true;
}
bool CChatSystem::GmDeleteGuild(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args,nArgsCount,sRetMsg,1) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if(pActor)
{
if(pActor->GetGuildSystem())
{
CGuild* pGuild = pActor->GetGuildSystem()->GetGuildPtr();
if ( pGuild )
{
GetGlobalLogicEngine()->GetGuildMgr().SendDbMsgDeleteGuild(pActor->GetHandle(),pGuild->m_nGid);
}
}
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmAddNewTitle(char ** args, INT_PTR nArgsCount, char * sRegMsg)
{
if (IsArgsValid(args, nArgsCount, sRegMsg, 2) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (!pActor)
{
return false;
}
int nId = atoi(args[1]);
return pActor->GetNewTitleSystem().addNewTitle(nId);
}
bool CChatSystem::GmDelNewTitle(char ** args, INT_PTR nArgsCount, char * sRegMsg)
{
if (IsArgsValid(args, nArgsCount, sRegMsg, 2) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (!pActor)
{
return false;
}
int nId = atoi(args[1]);
return pActor->GetNewTitleSystem().delNewTitle(nId);
}
bool CChatSystem::GmAddCustomTitle(char ** args, INT_PTR nArgsCount, char * sRegMsg)
{
if (IsArgsValid(args, nArgsCount, sRegMsg, 2) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (!pActor)
{
return false;
}
int nId = atoi(args[1]);
return pActor->GetNewTitleSystem().addCustomTitle(nId);
}
bool CChatSystem::GmDelCustomTitle(char ** args, INT_PTR nArgsCount, char * sRegMsg)
{
if (IsArgsValid(args, nArgsCount, sRegMsg, 2) == false) return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (!pActor)
{
return false;
}
int nId = atoi(args[1]);
return pActor->GetNewTitleSystem().delCustomTitle(nId);
}
bool CChatSystem::GmDelVar(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false ) return false;
CCLVariant &var = m_pEntity->GetActorVar();
CCLVariant* p = var.get(args[0]);
if (p)
{
p->~CCLVariant();
}
return true;
}
bool CChatSystem::GmResetWorldLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetGlobalLogicEngine()->GetWorldLevelMgr().ResetWorldLevel();
return true;
}
bool CChatSystem::GmReLoadWorldLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
GetGlobalLogicEngine()->GetWorldLevelMgr().ResetWorldLevel();
GetGlobalLogicEngine()->GetWorldLevelMgr().ReloadWorldLevel();
return true;
}
bool CChatSystem::GmSetFootPrintPay(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (nArgsCount == 1)
{
if (args[0] == NULL)
{
return false;
}
int nTime = atoi(args[0]);
if (nTime == 0)
{
//GetGlobalLogicEngine()->GetMiscMgr().OnEveryDayPayOver(CMiscMgr::edaFootPrintPay);
}
else
{
return false;
}
}
if (IsArgsValid(args, nArgsCount, sRetMsg, 3) == false)
return false;
char* sTime = args[0];
int nLastTime = atoi(args[1]);
int nActId = atoi(args[2]);
CMiniDateTime nStart;
//nStart.encode(sParam);
CBackStageSender::StdTimeStr2MiniTime(sTime, nStart);
//GetGlobalLogicEngine()->GetMiscMgr().OnEveryDayPayStart(CMiscMgr::edaFootPrintPay, nStart.tv, nLastTime, nActId);
return true;
}
bool CChatSystem::GmSetActorCallScript(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 2) == false) return false;
char* sName = args[0];
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(sName);
if (!pActor) return false;
CNpc* pNpc = GetGlobalLogicEngine()->GetGlobalNpc();
if (pNpc == NULL) return false;
CScriptValueList paramList, retList;
unsigned int nActorId=pActor->GetProperty<unsigned int>(PROP_ENTITY_ID);
paramList << (CActor*)pActor;
if (!pNpc->GetScript().Call(args[1], paramList, retList))
{
OutputMsg(rmError, _T("GmSetActorCallScript failed"));
return false;
}
return true;
}
bool CChatSystem::GmOpenBlackHouse(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if (IsArgsValid(args, nArgsCount, sRetMsg, 1) == false)
{
return false;
}
int flag = atoi(args[0]);
if (flag == CCheckSpeedSystem::enBlackHouse || flag == CCheckSpeedSystem::enCloseActor)
{
CCheckSpeedSystem::m_useSpeedHandle = flag;
}
return true;
}
bool CChatSystem::GmQuitBlackHouse(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 1 && args_count != 0)
{
sprintf(sRetMsg,"Need 0 or 1 param");
return false;
}
CActor* pActor = NULL;
if (args_count == 1)
{
char* sName = args[0];
pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(sName);
}
else if (args_count == 0)
{
pActor = (CActor*)m_pEntity;
}
if (pActor)
{
pActor->GetCheckSpeedSystem().TriggerEvent(CCheckSpeedSystem::enQuitBlackHouse);
((CActor*)m_pEntity)->SendTipmsgFormat(_T("%s QuitBlackHouse Success "),ttFlyTip + ttChatWindow, pActor->GetEntityName());
}
return true;
}
bool CChatSystem::GmCleanBlackHouse(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 1 && args_count != 0)
{
sprintf(sRetMsg,"Need 0 or 1 param");
return false;
}
CActor* pActor = NULL;
if (args_count == 1)
{
char* sName = args[0];
pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(sName);
}
else if (args_count == 0)
{
pActor = (CActor*)m_pEntity;
}
if (pActor)
{
pActor->GetCheckSpeedSystem().TriggerEvent(CCheckSpeedSystem::enCleanBlackHousedata);
pActor->GetCheckSpeedSystem().TriggerEvent(CCheckSpeedSystem::enQuitBlackHouse);
((CActor*)m_pEntity)->SendTipmsgFormat(_T("%s CleanBlackHouse Success "),ttFlyTip + ttChatWindow, pActor->GetEntityName());
}
return true;
}
bool CChatSystem::GmKickAndSetActorStatus(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 3 )
{
sprintf(sRetMsg,"Need 2 or 3 param");
return false;
}
int nFlag = atoi(args[0]);
bool boDisApear = false;
if ( nFlag != 0 )
{
boDisApear = true;
}
return GetGlobalLogicEngine()->GetMiscMgr().KickAllActorByLevel(atoi(args[1]),atoi(args[2]),boDisApear);
}
bool CChatSystem::GMSetSoulLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args, nArgsCount, sRetMsg, 2) ==false)
return false;
int nLevel = atoi(args[1]);
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (pActor)
{
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction(pActor,"resetSoulLevel",nLevel);
((CActor*)m_pEntity)->SendTipmsgFormat(_T("%s SetSoulLevel Success "),ttFlyTip + ttChatWindow, pActor->GetEntityName());
}
else
{
((CActor*)m_pEntity)->SendTipmsgFormat(_T("Error:Actor Offline"),ttFlyTip + ttChatWindow);
}
return true;
}
bool CChatSystem::GMAddRankPoint(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
// if(IsArgsValid(args, nArgsCount, sRetMsg, 2) ==false)
// return false;
// CRanking* rank = GetGlobalLogicEngine()->GetRankingMgr().GetRanking(args[0]);
// if(!rank){
// sprintf(sRetMsg, "ranking not found: %s", args[0]);
// return false;
// }
// return rank->Update(m_pEntity->GetId(), atoi(args[1])) != NULL;
return true;
}
bool CChatSystem::SetAchieve(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(IsArgsValid(args, nArgsCount, sRetMsg, 3) ==false)
return false;
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (pActor)
{
int nAchieveId = atoi(args[1]);
int nState = atoi(args[2]);
if (nState == 1)
{
pActor->GetAchieveSystem().SetAchieveInstantFinish(nAchieveId,true);
}
else
{
pActor->GetAchieveSystem().SetAchieveUnFinished(nAchieveId);
}
((CActor*)m_pEntity)->SendTipmsgFormat(_T("%s SetAchieve Success "),ttFlyTip, pActor->GetEntityName());
}
else
{
return false;
}
return true;
}
bool CChatSystem::GmFuBen(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 2 )
{
sprintf(sRetMsg,"Need 3 param");
return false;
}
CScriptValueList arg;
int nFuBenId = atoi(args[0]);
int nIndex = atoi(args[1]);
arg << m_pEntity;
arg << nFuBenId;
arg << nIndex;
CNpc* pNpc = GetGlobalLogicEngine()->GetGlobalNpc();
if (pNpc == NULL)
return false;
pNpc->GetScript().Call("DoGmFuBen", arg, arg);
return true;
}
bool CChatSystem::GMSetRingLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 3 )
{
sprintf(sRetMsg,"Need 3");
return false;
}
int wRingId = atoi(args[1]);
int nLevel = atoi((args[2]));
CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
if (pActor)
{
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction(pActor,"GMSetRingLevel",wRingId,nLevel);
((CActor*)m_pEntity)->SendTipmsgFormat(_T("%s SetRingLevel Success "),ttFlyTip + ttChatWindow, pActor->GetEntityName());
}
else
{
((CActor*)m_pEntity)->SendTipmsgFormat(_T("Error:Actor Offline"),ttFlyTip + ttChatWindow);
}
return true;
}
bool CChatSystem::QuestMove(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
if(!IsArgsValid(args, nArgsCount, sRetMsg, 3))return false;
CScriptValueList paramList, retParamList;
int nSceneId = 0;
CFuBen *pFb = GetGlobalLogicEngine()->GetFuBenMgr()->GetFbStaticDataPtr(0);
if (pFb)
{
CScene* pScene = pFb->GetSceneByName(args[0]);
if (pScene)
nSceneId = pScene->GetSceneId();
}
paramList<<m_pEntity<<nSceneId<<atoi(args[1])<<atoi(args[2]);
CNpc* pNpc = GetGlobalLogicEngine()->GetGlobalNpc();
if (pNpc == NULL) return false;
if (!pNpc->GetScript().Call("QuestMove", paramList, retParamList))
{
const RefString &s = pNpc->GetScript().getLastErrorDesc();
OutputMsg(rmError, (LPCSTR)s);
}
return true;
}
bool CChatSystem::GmDebugLua(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 3 )
{
sprintf(sRetMsg,"Need 2 param");
return false;
}
CScriptValueList arg, retList;
int arg1 = atoi(args[0]);
int arg2 = atoi(args[1]);
int arg3 = atoi(args[2]);
arg << m_pEntity;
arg << arg1;
arg << arg2;
arg << arg3;
GetGlobalLogicEngine()->GetGlobalNpc()->GetScript().Call("DOGMDebugLua", arg, retList, 1);
if(retList.count() >= 0 && (bool)retList[0] == false )
{
int a = 1;
}
return true;
}
//商店的GM指令
bool CChatSystem::GmShop(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 2 )
{
sprintf(sRetMsg,"Need 2 param");
return false;
}
CScriptValueList arg;
int nShopId = atoi(args[0]);
int nIndex = atoi(args[1]);
arg << m_pEntity;
arg << nShopId;
arg << nIndex;
GetGlobalLogicEngine()->GetGlobalNpc()->GetScript().Call("DoGMShopHandle", arg, arg, 0);
return true;
}
bool CChatSystem::GmPkValue(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 1 )
{
sprintf(sRetMsg,"Need 2 param");
return false;
}
CScriptValueList arg;
int nPkValue = atoi(args[0]);
m_pEntity->GetPkSystem().AddPkValue(nPkValue);
return true;
}
bool CChatSystem::GmExploit(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
// INT_PTR args_count = GetArgsCount(args, nArgsCount);
// if (args_count != 1 )
// {
// m_pEntity->SendOldTipmsgFormatWithId(tpExploitMy, ttTipmsgWindow, (int)m_pEntity->GetProperty<int>(PROP_ACTOR_EXPLOIT));
// return true;
// }
// CScriptValueList arg;
// int nValue = atoi(args[0]);
// m_pEntity->ChangeExploit(nValue);
// m_pEntity->ChangeTodayExploit(nValue);
return true;
}
bool CChatSystem::GmSetEquipPosStrongLevel(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 3 )
{
sprintf(sRetMsg,"Need 3 param at least");
return true;
}
//CActor* pActor = GetGlobalLogicEngine()->GetEntityMgr()->GetActorPtrByName(args[0]);
//if (!pActor)
//{
// sprintf(sRetMsg,"error:actor offline");
// return true;
//}
//int nPos = atoi(args[1]);
//int nLevel = atoi(args[2]);
//CStdItemProvider& stdItemProvider = GetLogicServer()->GetDataProvider()->GetStdItemProvider();
//if (nPos == -1)//全部位置都设
//{
// for (int i = 0; i < CUserEquipment::EquipmentCount; i++)
// {
// if (stdItemProvider.IsEquipPosStrongValidPos(i))
// {
// pActor->GetEquipmentSystem().SetEquipPosStrongLevel(i, nLevel);
// }
// }
//}
//else if (stdItemProvider.IsEquipPosStrongValidPos(nPos))
//{
// pActor->GetEquipmentSystem().SetEquipPosStrongLevel(nPos, nLevel);
//}
//GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction(pActor,"EquipPosStrongSendData");
//((CActor*)m_pEntity)->SendTipmsgFormat(_T("%s SetEquipPosStrongLevel Success "),ttFlyTip + ttChatWindow, pActor->GetEntityName());
return true;
}
bool CChatSystem::GmSetGuildTree(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 3 )
{
sprintf(sRetMsg,"Need 3 param at least");
return false;
}
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(args[0]);
if (!pGuild)
{
sprintf(sRetMsg,"has no the guild");
return false;
}
int nTreeLevel = atoi(args[1]);
int nTreeDegree = atoi(args[2]);
pGuild->SetGuildTreeData(nTreeLevel, nTreeDegree);
((CActor*)m_pEntity)->GetGuildSystem()->SendGuildTreeData();
return true;
}
bool CChatSystem::GmSetGuildFruit(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 4 )
{
sprintf(sRetMsg,"Need 4 param at least");
return false;
}
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(args[0]);
if (!pGuild)
{
sprintf(sRetMsg,"has no the guild");
return false;
}
int nFruitLevel = atoi(args[1]);
int nFruitDegree = atoi(args[2]);
int nFruitNum = atoi(args[3]);
pGuild->SetGuildFruitData(nFruitLevel, nFruitDegree, nFruitNum);
((CActor*)m_pEntity)->GetGuildSystem()->SendGuildFruitData();
return true;
}
bool CChatSystem::GmSetMyGuildTree(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CGuild* pGuild = ((CActor*)m_pEntity)->GetGuildSystem()->GetGuildPtr();
if (!pGuild)
{
sprintf(sRetMsg,"has no the guild");
return false;
}
int nTreeLevel = atoi(args[0]);
int nTreeDegree = atoi(args[1]);
pGuild->SetGuildTreeData(nTreeLevel, nTreeDegree);
((CActor*)m_pEntity)->GetGuildSystem()->SendGuildTreeData();
return true;
}
bool CChatSystem::GmSetMyGuildFruit(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 3 )
{
sprintf(sRetMsg,"Need 3 param at least");
return false;
}
CGuild* pGuild = ((CActor*)m_pEntity)->GetGuildSystem()->GetGuildPtr();
if (!pGuild)
{
sprintf(sRetMsg,"has no the guild");
return false;
}
int nFruitLevel = atoi(args[0]);
int nFruitDegree = atoi(args[1]);
int nFruitNum = atoi(args[2]);
pGuild->SetGuildFruitData(nFruitLevel, nFruitDegree, nFruitNum);
((CActor*)m_pEntity)->GetGuildSystem()->SendGuildFruitData();
return true;
}
bool CChatSystem::GmClearConsignItem(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
return true;
}
bool CChatSystem::GmAddConsignItem(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 1 )
{
sprintf(sRetMsg,"Need 1 param at least");
return false;
}
int nId = atoi(args[0]);
int nCount = atoi(args[1]);
int nPrice = atoi(args[2]);
CStdItemProvider& stdItemProvider = GetLogicServer()->GetDataProvider()->GetStdItemProvider();
ConsignmentProvider& consignProvider = GetLogicServer()->GetDataProvider()->GetConsignmentProvider();
// CVector<const CStdItem*> itemList;
// for (int i=0; i < stdItemProvider.count(); i++)
// {
// const CStdItem* pStdItem= &stdItemProvider.operator const CStdItem*()[i];
// if (!pStdItem)
// {
// continue;
// }
// // if (pStdItem->m_nConsignType > 0)
// // {
// // itemList.add(pStdItem);
// // }
// }
// for (int i =0; i < nCount; i++)
// {
// CUserItem* pConsignItem = GetGlobalLogicEngine()->AllocUserItem(true);
// if (pConsignItem)
// {
// int idIndex = wrandvalue()%itemList.count();
// const CStdItem* pStdItem = itemList[idIndex];
// pConsignItem->wItemId = pStdItem->m_nIndex ;
// if (pStdItem->isEquipment())
// {
// pConsignItem->btQuality = wrandvalue()%6;
// pConsignItem->wStar = wrandvalue()%10;
// int nQualityDataIndex = wrandvalue()%stdItemProvider.GetQualityIndexListCount();
// RandAttrSelector::InitSmithByUserItem(pConsignItem, nQualityDataIndex);
// }
// pConsignItem->wCount = wrandvalue()%(pStdItem->m_wDupCount+1)+1;
// CStdItem::AssignInstance(pConsignItem,pStdItem);
// int nPrice = wrandvalue()%consignProvider.nMaxSellPrice+ consignProvider.nMinSellPrice;
// GetGlobalLogicEngine()->GetConsignmentMgr().AddConsignItem(pConsignItem,0, nPrice,pConsignItem->wCount);
// }
ConsignmentData data;
data.nActorId = m_pEntity->GetId();
data.nPrice = nPrice;
data.nSellTime = time(NULL) + consignProvider.nSellTime*3600;
data.nState = eConsignmentOnShelf;
// data.nItemId = nId;
// data.nCount = nCount;
// memcpy(&data.item, );
GetGlobalLogicEngine()->GetConsignmentMgr().AddConsignItem(data);
// }
return true;
}
bool CChatSystem::GmSetGuildTask(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 3 )
{
sprintf(sRetMsg,"Need 3 param at least");
return false;
}
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(args[0]);
if (!pGuild)
{
sprintf(sRetMsg,"has no the guild");
return false;
}
int nTaskId = atoi(args[1]);
int nTaskSche = atoi(args[2]);
pGuild->SetGuildTaskId(nTaskId);
pGuild->SetGuildTaskSche(nTaskSche);
((CActor*)m_pEntity)->GetGuildSystem()->SendGuildTaskInfo();
return true;
}
bool CChatSystem::GmRefreshGuildTask(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 3 param at least");
return false;
}
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuildByName(args[0]);
if (!pGuild)
{
sprintf(sRetMsg,"has no the guild");
return false;
}
int nTaskSche = atoi(args[1]);
pGuild->RefreshGuildTask(true); //强制刷新
pGuild->SetGuildTaskSche(nTaskSche); //任务进度
((CActor*)m_pEntity)->GetGuildSystem()->SendGuildTaskInfo();
return true;
}
bool CChatSystem::GmDoWorship(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoWorshipMonarch", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoProtecteTuCity(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoProtecteTuCity", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoRewardQuest(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoRewardQuest", nFlag, nParam);
return true;
}
//后台补偿
bool CChatSystem::GmDoCompensate(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 1 )
{
sprintf(sRetMsg,"Need 1 param at least");
return false;
}
char* strCom = args[0];
char* sFlag = strchr(strCom,'|');
if (sFlag != NULL)
{
strCom[sFlag-strCom] = 0; //开关
sFlag++;
int nFlag = atoi(strCom);
if( nFlag == 0 ) //关闭补偿
{
CMiscMgr &mgr = GetGlobalLogicEngine()->GetMiscMgr();
mgr.SetCompensateVar(0); //设置ID为0关闭
mgr.DoScriptFunction("TerminateBackCompensate");
}
else if( nFlag == 2 ) //清空排行榜(领取数据)
{
CMiscMgr &mgr = GetGlobalLogicEngine()->GetMiscMgr();
mgr.DoScriptFunction("ClearBackCompensateRank");
}
else //打开补偿
{
CMiscMgr &mgr = GetGlobalLogicEngine()->GetMiscMgr();
char* sComId = strchr(sFlag,'|');
if( sComId )
{
sFlag[sComId-sFlag] = 0;
sComId++;
int nComId = atoi(sFlag);
char* sLevel = strchr(sComId,'|');
if( sLevel )
{
sComId[sLevel-sComId] = 0;
sLevel++;
int nLevel = atoi(sComId);
char* sBeginTime = strchr(sLevel,'|');
if( sBeginTime )
{
sLevel[sBeginTime-sLevel] = 0;
sBeginTime++;
CMiniDateTime miniBeginTime;
CBackStageSender::StdTimeStr2MiniTime(sLevel, miniBeginTime);
char* sLastTime = strchr(sBeginTime,'|'); //持续时间
if( sLastTime )
{
sBeginTime[sLastTime-sBeginTime] = 0;
sLastTime++;
int nLastTime = atoi(sBeginTime) * 60;
char* szTitle = sLastTime; //最后是补偿title
mgr.SetCompensateVar( nComId, miniBeginTime, nLastTime, nLevel, szTitle,true );
}
}
}
}
}
}
else
{
int nFlag = atoi(strCom);
if( nFlag == 0 ) //关闭补偿
{
CMiscMgr &mgr = GetGlobalLogicEngine()->GetMiscMgr();
mgr.SetCompensateVar(0); //设置ID为0关闭
mgr.DoScriptFunction("TerminateBackCompensate");
}
else if( nFlag == 2 ) //清空排行榜(领取数据)
{
CMiscMgr &mgr = GetGlobalLogicEngine()->GetMiscMgr();
mgr.DoScriptFunction("ClearBackCompensateRank");
}
}
return true;
}
bool CChatSystem::GmDoSupplyBattle(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoSupplyBattle", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoSevenGoodGift(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoSevenGoodGift", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoChallengeFB(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoChallengeFB", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoAllCharge(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoAllCharge", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoGuildSiege(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "DoGuildSiege", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoGameStore(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoGameStore", nFlag, nParam);
return true;
}
bool CChatSystem::GmGuildDepotItemReject(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 1 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nGuildId = atoi( args[0] );
CGuild* pGuild = GetGlobalLogicEngine()->GetGuildMgr().FindGuild( nGuildId );
if (!pGuild)
{
return false;
}
pGuild->ProcDepotItemInExchangeCheck();
return true;
}
bool CChatSystem::GmDoMaterialFB(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoMaterialFuben", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoOpenSevTheme(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoOpenSevTheme", nFlag, nParam);
return true;
}
bool CChatSystem::GmDoDailyCharge(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nFlag = atoi(args[0]);
int nParam = atoi(args[1]);
GetGlobalLogicEngine()->GetMiscMgr().DoScriptFunction((CActor*)m_pEntity, "GmDoDailyCharge", nFlag, nParam);
return true;
}
bool CChatSystem::GmGenAttrInSmith(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 4 )
{
sprintf(sRetMsg,"Need 3 param at least");
return false;
}
CActor *pActor = (CActor*)m_pEntity;
int nSmithId = atoi(args[0]);
int nAttrNum = atoi(args[1]);
int njob = atoi(args[2]);
int nAttrTypeMust = atoi(args[3]);
RandAttrSelector::GenerateAttrsInSmith( nSmithId, nAttrNum, njob, nAttrTypeMust );
return true;
}
bool CChatSystem::GmDoMapActor(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count < 2 )
{
sprintf(sRetMsg,"Need 2 param at least");
return false;
}
int nType = atoi(args[0]);
int nSceneId = atoi(args[1]);
CFuBen * pRetFb =NULL;
CScene * pRetScene =NULL;
GetGlobalLogicEngine()->GetFuBenMgr()->GetFbPtrBySceneId(nSceneId,pRetFb,pRetScene);
if (!pRetScene)
{
return false;
}
switch(nType)
{
case 0:
{
int nLevel = 0;
if (args[2])
{
nLevel = atoi(args[2]);
}
int nCount = pRetScene->CalcAllActor(nLevel);
sprintf(sRetMsg,"S:%d,T:%d",nSceneId,nCount);
break;
}
case 1:
{
int nLevel = 0;
if (args[2])
{
nLevel = atoi(args[2]);
}
int nCount = pRetScene->CloseSceneAllActor(nLevel);
sprintf(sRetMsg,"S:%d,T:%d",nSceneId,nCount);
break;
}
default:break;
}
return true;
}
bool CChatSystem::GmDoGiveAward(char **args, INT_PTR nArgsCount, char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 3)
{
sprintf(sRetMsg,"Need 3 param");
return false;
}
int nType = atoi(args[0]);
int nId = atoi(args[1]);
int nValue = atoi(args[2]);
CActor *pActor = (CActor*)m_pEntity;
return pActor->GiveAward(nType, nId, nValue,0,0,0,0,GameLog::Log_BackStage);
}
bool CChatSystem::GmReloadVSPDef(char ** args, INT_PTR nArgsCount, char * sRetMsg)
{
GetLogicServer()->GetVSPDefine().LoadDefinitions(_T("data/VSPDef.txt"));
return true;
}
bool CChatSystem::GmSetFcmStatus(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 1 )
{
sprintf(sRetMsg,"Need 1 param ");
return false;
}
BYTE nFlag = (BYTE)atoi(args[0]);
CActor *pActor = (CActor*)m_pEntity;
return pActor->GetMiscSystem().ReInitialFCM(nFlag);
}
bool CChatSystem::GMChgJob(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 2)
{
sprintf(sRetMsg,"Need 2 param");
return false;
}
int nVoc = atoi(args[0]);
int nSex = atoi(args[1]);
CActor *pActor = (CActor*)m_pEntity;
pActor->UseChangeVocationCard(nVoc, nSex);
return true;
}
bool CChatSystem::GMADDLootPet(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 1)
{
sprintf(sRetMsg,"Need 1 param");
return false;
}
int nPetId = atoi(args[0]);
CActor *pActor = (CActor*)m_pEntity;
pActor->GetLootPetSystem().addLootPet(nPetId);
}
bool CChatSystem::GmMakeRealItem(char **args, INT_PTR nArgsCount,char * sRetMsg)
{
INT_PTR args_count = GetArgsCount(args, nArgsCount);
if (args_count != 4)
{
sprintf(sRetMsg,"Need 3 param");
return false;
}
int nInput = atoi(args[0]);
int nNum = atoi(args[1]);
int nSceneId = atoi(args[2]);
int nMonsterId = atoi(args[3]);
const CStdItem* pItem = GetLogicServer()->GetDataProvider()->GetStdItemProvider().GetStdItem(nInput);
if (!pItem)
{
sprintf(sRetMsg,"Need 1 param ");
return false;
}
int nID = pItem->m_nIndex;
bool result = AddItem(nID, __max(1, nNum), 0,0,0,CStdItem::iqKillMonster,nSceneId,nMonsterId,sRetMsg);
return result;
}
//------------------------反加速外挂相关-----end--------------------------
bool CChatSystem::GmOpenBallFanStore(char **args, INT_PTR nArgsCount, char *sRetMsg)
{
/*
if(!IsArgsValid(args, nArgsCount, sRetMsg, 1))return false;
return GetGlobalLogicEngine()->GetMiscMgr().OpenBallFanStore(atoi(args[0]), args[1], args[2] ? atoi(args[2]) : 0);
*/
return true;
}