永发信息网

jass中,怎么表示名为XXX的玩家呢,又怎么得到这个玩家控制的英雄呢

答案:1  悬赏:40  手机版
解决时间 2021-02-27 16:23
jass中,怎么表示名为XXX的玩家呢,又怎么得到这个玩家控制的英雄呢
最佳答案
根据你的意思 我的理解是你需要一个添加作弊的 但是限定玩家名字
  差不多是主机优势的意思

  由你的需求 先大概写出触发:
  未命名触发器 001
  ┣━事件
  ┃ ├─玩家 - 玩家1(红色) 输入 Cheat ,信息过滤方式 完全匹配
  ┃ ├─玩家 - 玩家2(蓝色) 输入 Cheat ,信息过滤方式 完全匹配
  ┃ ├─玩家 - 玩家3(青色) 输入 Cheat ,信息过滤方式 完全匹配
  ┃ └─玩家 - 玩家4(紫色) 输入 Cheat ,信息过滤方式 完全匹配
  ┣━条件
  ┗━动作
  ├─设置 String = ((触发玩家) 的名字)
  └─如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
  If - 条件
  String 等于 ll14569
  Then - 动作
  设置 HeroGroup = (可用地图区域 内满足 ((((匹配单位) 是 英雄) 等于 TRUE) 且 (((匹配单位) 的所有者) 等于 (触发玩家))) 的所有单位)
  单位组 - 选取 HeroGroup 内所有单位做动作
  Loop - 动作
  英雄 - 修改 力量 对 (选取单位) : 添加 10 点
  英雄 - 修改 敏捷 对 (选取单位) : 添加 10 点
  英雄 - 修改 智力 对 (选取单位) : 添加 10 点
  Else - 动作

  注:我用的是ydwe 里面大部分是cj函数 方便我们转换j后使用

  在编辑器中可以直接点编辑-转换为自定义文本就是对应的j:
  function Trig____________________001_Func002Func001002002001 takes nothing returns boolean
  return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true )
  endfunction

  function Trig____________________001_Func002Func001002002002 takes nothing returns boolean
  return ( GetOwningPlayer(GetFilterUnit()) == GetTriggerPlayer() )
  endfunction

  function Trig____________________001_Func002Func001002002 takes nothing returns boolean
  return GetBooleanAnd( Trig____________________001_Func002Func001002002001(), Trig____________________001_Func002Func001002002002() )
  endfunction

  function Trig____________________001_Func002Func002A takes nothing returns nothing
  call ModifyHeroStat( bj_HEROSTAT_STR, GetEnumUnit(), bj_MODIFYMETHOD_ADD, 10 )
  call ModifyHeroStat( bj_HEROSTAT_AGI, GetEnumUnit(), bj_MODIFYMETHOD_ADD, 10 )
  call ModifyHeroStat( bj_HEROSTAT_INT, GetEnumUnit(), bj_MODIFYMETHOD_ADD, 10 )
  endfunction

  function Trig____________________001_Func002C takes nothing returns boolean
  if ( not ( udg_String == "ll14569" ) ) then
  return false
  endif
  return true
  endfunction

  function Trig____________________001_Actions takes nothing returns nothing
  set udg_String = GetPlayerName(GetTriggerPlayer())
  if ( Trig____________________001_Func002C() ) then
  set udg_HeroGroup = GetUnitsInRectMatching(bj_mapInitialPlayableArea, Condition(function Trig____________________001_Func002Func001002002))
  call ForGroupBJ( udg_HeroGroup, function Trig____________________001_Func002Func002A )
  else
  endif
  endfunction

  //===========================================================================
  function InitTrig____________________001 takes nothing returns nothing
  set gg_trg____________________001 = CreateTrigger( )
  call TriggerRegisterPlayerChatEvent( gg_trg____________________001, Player(0), "Cheat", true )
  call TriggerRegisterPlayerChatEvent( gg_trg____________________001, Player(1), "Cheat", true )
  call TriggerRegisterPlayerChatEvent( gg_trg____________________001, Player(2), "Cheat", true )
  call TriggerRegisterPlayerChatEvent( gg_trg____________________001, Player(3), "Cheat", true )
  call TriggerAddAction( gg_trg____________________001, function Trig____________________001_Actions )
  endfunction

  然后略微优化就可以得到 比如用局部变量 优化条件动作 和 把bj函数换位cj函数
  function Cheat_boolexpr_trgHero takes nothing returns boolean
  return GetOwningPlayer(GetFilterUnit()) == GetTriggerPlayer() and IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO)
  endfunction

  function Cheat_addPoint takes nothing returns nothing
  call SetHeroStat(GetEnumUnit(), bj_HEROSTAT_STR, GetHeroStr(GetEnumUnit(), false) + 10)
  call SetHeroStat(GetEnumUnit(), bj_HEROSTAT_AGI, GetHeroAgi(GetEnumUnit(), false) + 10)
  call SetHeroStat(GetEnumUnit(), bj_HEROSTAT_INT, GetHeroInt(GetEnumUnit(), false) + 10)
  endfunction

  function CheatTest_action takes nothing returns nothing
  local group g = null
  local string str = GetPlayerName(GetTriggerPlayer())
  if ( str == "ll14569" ) then
  set g = GetUnitsInRectMatching(bj_mapInitialPlayableArea, Condition(function Cheat_boolexpr_trgHero))
  call ForGroup( g, function Cheat_addPoint )
  call DestroyGroup( g )
  set g = null
  else
  endif
  set str = null
  endfunction

  //===========================================================================
  function CheatTest takes nothing returns nothing
  local trigger trg = CreateTrigger( )
  call TriggerRegisterPlayerChatEvent( trg, Player(0), "Cheat", true )
  call TriggerRegisterPlayerChatEvent( trg, Player(1), "Cheat", true )
  call TriggerRegisterPlayerChatEvent( trg, Player(2), "Cheat", true )
  call TriggerRegisterPlayerChatEvent( trg, Player(3), "Cheat", true )
  call TriggerAddAction( trg, function CheatTest_action )
  set trg = null
  endfunction

  这就是简单的j了 不懂可以继续问 上面代码没放进地图试验过 只是提供解决办法
  求采纳 谢谢
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
微博如何绑定身份证
工作行为评估中最常用的方法是()。A.面谈B.
柠檬树怎么去啊,有知道地址的么
再遇到徒惹人野蛮攻击时尼摩船长丝毫不惊慌因
可以说说这几款车的优、缺点吗?丰田花冠自动
求超人大战蝙蝠侠高清百度云
问下.什么材料做的刀最重
冰雪风情地址有知道的么?有点事想过去
黑人解放之后
天蝎座女生的性格弱点
北海艺术设计学院地址有知道的么?有点事想过
阜阳买吉利博越的店在哪里?
洪濑中心卫生院-急诊科地址在哪,我要去那里
全民渔乐被骗怎么办?
校园歌手大赛策划书怎么写阿
推荐资讯
印尼西加里曼丹吉达邦砂金矿怎么样
男生爱一个女生,在她面前撒娇,变得幼稚,有
老公身上有香味胸部有腿到脚都有背部也没有衣
黄金鲍鱼做法大全
光大龙腾白金信用卡额度多少
微波炉里面面板鼓一块,是不是就不能加热了?
虹景酒店在什么地方啊,我要过去处理事情
怎么追自己喜欢的男生?他弹吉他很好,和我在
在沈阳,怎么办特病,需要什么手续,好办吗,
电脑画板怎么安装
步步高家教机h8s怎么打开不了wifi.
60多吨的变压器多少钱一公斤
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?