jass中,怎么表示名为XXX的玩家呢,又怎么得到这个玩家控制的英雄呢
答案:1 悬赏:40 手机版
解决时间 2021-02-27 16:23
- 提问者网友:放下
- 2021-02-27 06:37
jass中,怎么表示名为XXX的玩家呢,又怎么得到这个玩家控制的英雄呢
最佳答案
- 五星知识达人网友:逐風
- 2021-02-27 08:15
根据你的意思 我的理解是你需要一个添加作弊的 但是限定玩家名字
差不多是主机优势的意思
由你的需求 先大概写出触发:
未命名触发器 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了 不懂可以继续问 上面代码没放进地图试验过 只是提供解决办法
求采纳 谢谢
差不多是主机优势的意思
由你的需求 先大概写出触发:
未命名触发器 001
┣━事件
┃ ├─玩家 - 玩家1(红色) 输入 Cheat ,信息过滤方式 完全匹配
┃ ├─玩家 - 玩家2(蓝色) 输入 Cheat ,信息过滤方式 完全匹配
┃ ├─玩家 - 玩家3(青色) 输入 Cheat ,信息过滤方式 完全匹配
┃ └─玩家 - 玩家4(紫色) 输入 Cheat ,信息过滤方式 完全匹配
┣━条件
┗━动作
├─设置 String = ((触发玩家) 的名字)
└─如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
String 等于 ll14569
Then - 动作
设置 HeroGroup = (可用地图区域
单位组 - 选取 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了 不懂可以继续问 上面代码没放进地图试验过 只是提供解决办法
求采纳 谢谢
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯