bluem2引擎登录器官网 > 传奇学院 > 引擎说明书 > 新增引擎优化与命令

新增引擎优化与命令

功能:

KillMonGetFullExp +/-/= 秒数    // 高等级杀怪获取全部经验时间(秒),存库
REFITEMSHAPE 位置 数值      // 引用某同类型物品外观,位置:0衣服 1武器,数值参考stditems.db中的物品idx,存库,(连击合击版本才支持)

扩展NPC命令:compval <$USERID> ^ "userid" // $USERID是否以userid开头
扩展NPC命令:compval <$USERID> ` "userid" // $USERID是否以userid结尾

M2 人物设置为免毒/符释放技能时,英雄也将免毒/符放技能
M2 添加NPC命令:MakePoison 类型(0~7) 秒数,第一参数为clearup时,清理掉状态;类型:0绿毒/1红毒/3雷击/4冰冻/5石化/6禁锢(同石化)/7重伤(丧失防御)
M2 添加获取SetAbility数值变量:$ABILITIES0~100;增加$TARINFO_ISSLAVE变量,是否是随从
M2 添加针对P/G/D/M/I/H等整数型变量的NPC命令:
AND,OR,XOR,NOT运算,CompVal支持与运算(&号)比较,这组操作相比下面的命令会比较晦涩难懂,但是一次可以批量开关;
针对0~31位的操作和比较:SetBit,UnSetBit,FlipBit,IsBitSet,第二参数表示第几位(0~31)
结合以上命令可以给一个int类型的整数设置32个开关,节省变量的开销,有关操作请上网查阅。

说明:

M2 人物设置为免毒/符释放技能时,英雄也将免毒/符放技能
M2 修复英雄PowerRate时间到了不清理问题
------------------------------------------
M2 修正SetAbility引起的内存泄露问题!
   合击击中效果补全和一些效果修正,需要配套客户端更新
   使用隐身术后再带隐身戒指无效问题
   修正假人招出的英雄升级后有几率收回问题
   增加BotNoAttackList.txt,设置挂机假人不攻击列表,格式:怪物名 1 // 1挂机假人不攻击
   假人可以触发:[@PickupItem]、[@HeroLogin]
   [@KillPlayXX]、[@KillPlayMonXX] 支持变量:
     $PARAM(0) 杀死的怪物名字
     $PARAM(1) 地图编号
     $PARAM(2) 地图名字
     $PARAM(3) 怪物X坐标
     $PARAM(4) 怪物Y坐标
     $PARAM(5) 怪物等级

M2 增加NPC命令:DELFIREBURN 地图名 X Y 类型(1-8)  // 删除光圈,用于删除MobFireBurn刷出的光柱(MobFireBurn刷非类型5的光柱不会消失)

客户端
   合击击中效果补全和一些效果修正,需要配套M2更新
   客户端因为退出慢,导致人物有可能延迟下线问题

M2 添加变量:$MAPWIDTH,$MAPHEIGHT  // 当前地图的宽、长
   添加NPC命令:GuardPos x y 范围  // 设置假人的守护点和范围(不小于Setup中的maxViewRangeX),x为-1时取消守护
   例子:
   ;随机地图点守护
   MAP $CURRENTMAP
   GuardPos $CURRENTX $CURRENTY 30
   $ATTINFO_SKILLID 部分技能ID获取不到问题

M2 1、SetAbility 赋值时会触发QF的[@SetAbility_XX],属性过期后将触发[@ResetAbility_XX] // 参考之前SetAbility的更新说明
   2、添加NPC命令:PetPickupItemRange 宠物名字 范围(0-15)  
      宠物自动拾取范围,宠物名字为“H”时指英雄,宠物名字为“Self”时指自己(挂机用),“*”指非英雄的所有宠物,范围0时关闭自动拾取,可结合上条更新进行定时。
   3、添加NPC命令:Lockdown 1  // 锁定,不可攻击、移动、魔法等,Lockdown 0是解锁
   4、重点的性能优化,在玩家/怪物/物品集中情况下,引擎CPU占用率有大改善,改善人怪假象,
      适当调整!Setup.txt的maxviewrangex、maxviewrangey,以便适应大分辨率的客户端,建议分辨设置为16、15,无需适应大屏幕设置12、12即可,较小的值可以节约CPU占用。
   5、添加NPC命令:FakePlayer 0/1 // 0踢假人,1加载假人
   6、添加NPC命令:GuildStat 行会名 统计玩家等级 过滤同机器码(0/1) P1 // 统计行会在线玩家数,数量返回P1,行会名为Self时指自己行会,可结合IsGuildMaster使用。

M2 1、添加NPC命令:EndGuildWar 行会名1 行会名2 // 结束行会战,两个参数可以使用通配符*
   2、添加条件判断:
   #if
   true  // 代替checklevelex >= 0之类的语句
   #act
   ...

M2/Client 增加战斗中小退时间限制,默认0秒,在参数设置-时间限制面板调节  // 限于PK,打怪不受限制

M2 细化英雄处理粒度;改进英雄组合速度,开启可以细调英雄各种组合动作

M2 屏蔽掉护体神盾的释放动作

M2 命令扩展:Kick 1 // 让在线玩家执行小退
   killSlaveName * // 杀死所有随从;可以放在[@OnLogout_OffLinePlaying]执行,实现离线挂机再次登录的免踢功能

   修改 MonDropRate 对于爆率文件中 1/xxx 的写法也起作用,计算公式:xxx/yyy / 100 * MonDropRate,假如MonDropRate=200,即在原来爆率基础上提高一倍
   附带条件的爆率条目,有所有权才会爆出

M2 扩展 Take/TakeW 物品1|物品2|物品3|物品4... 数量 P0 // P0返回删除的数量,TAKE物品不要和金币混用

M2 添加针对A/S字符变量的NPC命令:INS S1 位置(1~S1的长度+1) 插入字符 重复次数(默认1)

M2 添加针对P/G/D/M/I/H等整数型变量的NPC命令:
   AND,OR,XOR,NOT运算,CompVal支持与运算(&号)比较,这组操作相比下面的命令会比较晦涩难懂,但是一次可以批量开关;
   针对0~31位的操作和比较:SetBit,UnSetBit,FlipBit,IsBitSet,第二参数表示第几位(0~31)
   结合以上命令可以给一个int类型的整数设置32个开关,节省变量的开销,有关操作请上网查阅。
// AND,OR,XOR,NOT,CompVal

说明:
[@OR]
#act
OR P1 5    // 或运算,1位和3位设置为1(1是低1位,4是低3位,可以用计算器查看BIN数据)
SendMsg 7 <$STR(P1)>

[@XOR]
#if
  CompVal <$STR(P1)> & 1
#act
  XOR P1 1   // 异或运算,1位设置为0

#if
  CompVal <$STR(P1)> & 4 // 异或运算,3位设置为0
#act
  XOR P1 4

[@CheckSwitchState]
#if
  CompVal <$STR(P1)> & 1 // 于运算 比较
#act
  SendMsg 7 P1低1位二进制数值为1
#elseact
  SendMsg 7 P1低1位二进制数值为0

#if
  CompVal <$STR(P1)> & 2
#act
  SendMsg 7 P1低2位二进制数值为1
#elseact
  SendMsg 7 P1低2位二进制数值为0

#if
  CompVal <$STR(P1)> & 4
#act
  SendMsg 7 P1低3位二进制数值为1
#elseact
  SendMsg 7 P1低3位二进制数值为0


// SetBit,UnSetBit,FlipBit,IsBitSet

说明:
[@SetBit]
#if
  !IsBitSet P1 22  // 第22位是否关闭
#act
  SetBit P1 22
  SendMsg 7 P1的22位现在处于开启状态

#if
  IsBitSet P1 22  // 第22位是否开启
#act
  UnSetBit P1 22
  SendMsg 7 P1的22位现在处于关闭状态

[@FilpBit]
#if
  checklevelex > 0
#act
  FlipBit P1 31   // 切换状态,开<->关来回切换

#if
  IsBitSet P1 31  // 第31位是否开启
#act
  SendMsg 7 P1的31位现在处于开启状态
#elseact
  SendMsg 7 P1的31位现在处于关闭状态


------------------------------------------
M2 添加NPC命令:MakePoison 类型(0~11) 秒数 点数,第一参数为clearup时,清理掉状态;类型:0绿毒/1红毒/3雷击/4冰冻/5石化/6禁锢(同石化)/7重伤(丧失防御)
M2 添加获取SetAbility数值变量:$ABILITIES0~100;增加$TARINFO_ISSLAVE变量,是否是随从

说明:
[@SetAbility]
#act
SetAbility 50 20 900 石化技能恢复正常
SendMsg 7 获得20%几率的石化技能,持续15分钟

QF:
[@Attack]
#if
  CompVal <$TARINFO_RACE> ! 1  // 非人物
  CompVal <$TARINFO_ISSLAVE> = 0 // 非随从
  CompVal <$ABILITIES50> > 0  // Abilities的50位置有数值
#act
  SetRandomNo 100   // 按100随机
#elseact
  break

#if
  CompVal <$ABILITIES50> > <$RANDOMNO> // 命中触发
#act
  T.MakePoison 5 5

------------------------------------------
M2 添加NPC命令:MakePoison 类型(0~11) 秒数 点数,第一参数为clearup时,清理掉状态;类型:0绿毒/1红毒/3雷击/4冰冻/5石化/6禁锢(同石化)/7重伤(丧失防御)
M2 添加获取SetAbility数值变量:$ABILITIES0~100;增加$TARINFO_ISSLAVE变量,是否是随从
说明:
[@SetAbility]
#act
SetAbility 50 20 900 石化技能恢复正常
SendMsg 7 获得20%几率的石化技能,持续15分钟

QF:
[@Attack]
#if
  CompVal <$TARINFO_RACE> ! 1  // 非人物
  CompVal <$TARINFO_ISSLAVE> = 0 // 非随从
  CompVal <$ABILITIES50> > 0  // Abilities的50位置有数值
#act
  SetRandomNo 100   // 按100随机
#elseact
  break

#if
  CompVal <$ABILITIES50> > <$RANDOMNO> // 命中触发
#act
  T.MakePoison 5 5