Спасибо, RedHeavenHero :) Всё как я хотел :)
502 Bad Gateway
__________________________________
nginx/0.8.54
__________________________________
nginx/0.8.54
Впервые здесь? Я Роха — провести быструю экскурсию?
Отследить прикосновение героя к гарнизону практически невозможно
Ok, I figured this one out. It takes names like BUILDING_ABANDONED_MINE, TOWN_NECROMANCY and CREATURE_GENIE as arguments. They need to be between quotes, otherwise the command doesn't work.
What the function returns is an array, filled with adventure map references: a name if the object has one, otherwise its generic name, like "1-210-199-AdvMapDwelling-27624". You can refer to this by using the array index. For instance:
Imp_Cruc_Array=GetObjectNamesByType("BUILDING_IMP_CRUCIBLE");
GetObjectNamesByType('TOWN') - все города на карте
GetObjectNamesByType('TOWN_DUNGEON')- все города данжена
GetObjectNamesByType('BUILDING_WITCH_HUT') - все хижины ведьм.
Похоже оно ищет по строковому префиксу типа, т.к.
GetObjectNamesByType('BUILDING_WITCH') и GetObjectNamesByType('BUILDING_WIT') дают те же результаты, что и
GetObjectNamesByType('BUILDING_WITCH_HUT').
GetObjectNamesByType('TOWN') вернёт массив с именами всех городов на карте.
GetObjectNamesByType
GetObjectNamesByType — Получает все объекты заданного типа
Синтаксис
GetObjectNamesByType(objectTypeName);
Описание
Получает все объекты заданного типа. Для зданий нужно задавать тип(objectTypeName),
прописанный в Shared-Type Для монстров — это Creature Для героев — HeroClass Для
городов — TownRace Можно задавать подстроки для задания более общих типов.
Например: BUILDING — все здания ABANDONED_MINE или BUILDING_ABANDONED_MINE — для
заброшенных шахт DWELLING — для всех двеллингов DWELLING_<тип двеллинга> —
конкретные двеллинги CREATURE — все монстры CREATURE_PEASANT или просто PEASANT
— крестьяне HERO — все герои HERO_CLASS_WIZARD — все герое Академии TOWN — все
города TOWN_HEAVEN — все города расы HEAVEN
Где тут про героев? Если не секрет, то лучше выложить скрипт. Ошибка могла быть в другом.
function GetPlayers()
local n = 0
for i=1,8 do
n = n + (GetPlayerState(i) == 1 or 0)
end
return n
end
А как же GetPlayerState?function GetPlayers()
local n = 0
for i=1,8 do
n = n + (GetPlayerState(i) == 1 or 0)
end
return n
end
-- Получение числа игроков в игре
function getTotalPlayers()
local total = 0
for playerID = PLAYER_1, PLAYER_8 do
if GetPlayerState(playerID) == PLAYER_ACTIVE then
total = total + 1
end
end
return total
endУгу, с помощью неё уже и успел решить проблему.
Только вместо "магических" чисел 1 и 0 использовал константу PLAYER_ACTIVE (которой, видимо, соответствует 1).-- Получение числа игроков в игре
function getTotalPlayers()
local total = 0
for playerID = PLAYER_1, PLAYER_8 do
if GetPlayerState(playerID) == PLAYER_ACTIVE then
total = total + 1
end
end
return total
end
А зачем использовать значение PLAYER_NOT_IN_GAME (0)?
Почему "магических"?
Где? К тому же игроки вне игры обозначаются 4.
n = n + (GetPlayerState(i) == 1 or 0)Мне совершенно непонятно, что она здесь делает, а из-за отсутствия скобок, неясно даже, как будет выполняться сия конструкция, сначала проверка на равенство, а затем OR, или наоборот.