Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#3624
Старый 23.05.2022, 23:05
  #3624
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
По умолчанию
Re: Скрипты

МартаА конкретно, - как с самого начала отключить гарнизон для всех, кроме второго игрока?
Добрый вечер. Функция SetObjectEnabled не принимает ничего третьим параметром, то есть сказать какому игроку заблокировать нельзя. Объект можно либо включить, либо выключить. Касаемо вашего скрипта, могу предложить следующее:
-- Делаем одноклеточный регион, на 1 клетку перед гарнизоном
Trigger(REGION_ENTER_WITHOUT_STOP_TRIGGER,"GARRISON_REG","GarrisonCheck")
-- Делаем массив "Запрещенных" игроков
GARRISON_BANNED_PLAYERS = {
2,
-- При необходимости дописываем сюда нужных. 
-- Если вам нужно дописать в скрипте то пишем в нужном месте GARRISON_BANNED_PLAYERS[length(GARRISON_BANNED_PLAYERS)] = "Номер игрока которого блочим"
}
-- Если потребуется убрать из массива игрока, то пишет вот такую функцию(Всё уже есть в библиотеке от RedHeavenHero, лучше велосипеды не писать)
-- Нижеописанная функция удаляет из массива крайне топорно, но вам подойдёт.
-- В месте где нужно удалить пишете GARRISON_BANNED_PLAYERS = arrayShiftByValue(GARRISON_BANNED_PLAYERS,"Номер игрока на удаление")
-- вам вернётся массив уже без указанного игрока, а точнее с nil вместо номера
function arrayShiftByValue(array,value)
  for index,element in array do
    if(element == value) then
      array[index] = nil
    end
  end
  return array
end

function GarrisonCheck(heroname)
  local player = GetObjectOwner(heroname)
  if(contains(GARRISON_BANNED_PLAYERS,player) == not nil) then
    SetObjectEnabled("GARRISON_NAME",nil)
  else
    SetObjectEnabled("GARRISON_NAME",not nil)
  end
end

В простонародье это именуется костылём, но он должен работать без нареканий. При подходе мы просто проверяем игрока и блокируем гарнизон, если это игрок, которому запрещено, а если это не игрок которому запрещено, то снимаем блокировку. 

__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием