Возможно ли автоматически вставлять номер в глобальном массиве от цвета игрока в виде переменной?
Например:
Есть некий массив N[Integer A]. К нему обращается триггер, и, если владелец триггер-юнита красный игрок, то Integer A = 1. Это необходимо прописывать каждый раз.
А можно ли это прописать один раз при инициализации карты? Чтобы при обращении к массиву с переменной для красного игрока, Integer A была равна 1, например, а для синего - 2 и т.д.?
Вроде такого:
Init_map
set Integer A = 1 for player 1
set Integer B = 2 for player 2
Action_trigger
call UnitDamageTargetBJ( N[Integer A], N[Integer A], 50, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL ), где юниты двух разных игроков.
P.S. Знаю-знаю, что для этого есть локалки, но мне нужно в глобальном массиве.

Принятый ответ

Одна и та же переменная в одном вызове функции не может принимать разные значения. Почему нельзя использовать две переменные?
Я вообще не очень понимаю, что ты хочешь сделать такой функцией. Опиши ситуацию, пожалуйста.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
28
9 лет назад
2
боже
GetPlayerId()
возвращает номер игрока
аналог на гуи сам найдёшь надеюсь
0
11
9 лет назад
Отредактирован Impertus
0
На гуи есть аналог GetConvertedPlаyerID(), для которого нужны условия (triggering player и т.д.). Как GetPlayerId() использовать с кастом скриптом? На set udg_asd = GetPlayerID() с целочисленной ругается , какой тип переменной должен быть? Если Игрок, то его не засунешь в индекс массива.
0
25
9 лет назад
0
Господи. Номер игрока. Лицо пальма.
Пулей в статьи: xgm.guru/p/wc3/articles и не вылазь оттуда пока все не прочитаешь и осознаешь.
GetPlayerId - функция требующая данных, а именно игрока, номер которого она будет возвращать.
Используется типа вот так:
set Player_Number = GetPlayerId(GetOwningPlayer(GettriggerUnit()))
В нашем в Player_Number будет номер игрока, владельца юнита, который запустил триггер.
0
11
9 лет назад
Отредактирован Impertus
0
Наверно слишком непонятно задал вопрос. К прикладному.
Мне нужно, чтобы применительно к call UnitDamageTargetBJ( N[Integer A], N[Integer A], 50, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL ) переменная Integer A принимала разные значения для юнитов разных игроков и юнит игрока 1 дамажил юнита игрока 2, а не 2 -2. Возможно ли это?
Глобалка потому, что используется в нескольких триггерах, которые нельзя свести в один. Я как раз хочу избежать постоянного внесения данных об игроке и небольшой автоматизации вида Овнер юнита игрок 1 - значит Integer A для него всегда =1.
Если нет такого, значит буду делать на локалках.
З.Ы. Зачем сразу кидаться кактусами? Я с оперированием игроками раньше не сталкивался, поэтому и знания тут пока поверхностные.
2
33
9 лет назад
Отредактирован Кет
2
Одна и та же переменная в одном вызове функции не может принимать разные значения. Почему нельзя использовать две переменные?
Я вообще не очень понимаю, что ты хочешь сделать такой функцией. Опиши ситуацию, пожалуйста.
Принятый ответ
0
20
9 лет назад
0
Impertus:
Integer A
использование Integer A/B - дурной тон, свою переменную куда проще и удобнее создать.
И да -
Событие - Юнит начинает эффект способности
Условие - способность такая-то
Действие - приказать юниту 1 продамажить юнит 2 нанося (переменная_массив)[номер игрока владельца кастинг юнита]
Вот так например номер игрока впихивается в массив. Легко и просто.
0
11
9 лет назад
0
Кет:
Одна и та же переменная в одном вызове функции не может принимать разные значения. Почему нельзя использовать две переменные?
Вот, спасибо за ответ. Ключевое.
Я вообще не очень понимаю, что ты хочешь сделать такой функцией. Опиши ситуацию, пожалуйста.
Я хочу оптимизировать способность без использования локалок. Способность вида "юнит1 кинул дебаф на юнита2, и какие -то действия с юнит2 приносят профит юниту1, даже если действия не от юнит1". Ради этого приходится создавать отдельный громоздкий триггер с 2 массивами юнитов 1 и 2. Это и хочу уменьшить\убрать.
использование Integer A/B - дурной тон, свою переменную куда проще и удобнее создать.
Интежер А конечно только для примера, я использую свою переменную.
ssbbssc:
Действие - приказать юниту 1 продамажить юнит 2 нанося (переменная_массив)[номер игрока владельца кастинг юнита]
Вся мысль была в том, можно ли в редакторе сделать автоматическую подстановку значения переменной в зависимости от номера игрока. Т.е. при инициализации активировать триггер, который будет работать для всех остальных триггеров. Слишком жирно было бы, но а вдруг.
0
33
9 лет назад
Отредактирован Кет
0
Если искомое значение переменной равно индексу игрока, то вполне работает способ, предложенный ssbbssc.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.