Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
#3565
while 1 do
pfonix = GetHeroCreatures( "Main_Hero", CREATURE_PHOENIX);
if pfonix >= 5 then
SetObjectiveState("dzad3", OBJECTIVE_COMPLETED);
SetObjectiveState("dzad2", OBJECTIVE_FAILED);
break;
end;
sleep(1)
end

Не хватает sleep-а в последнем цикле, поэтому при невыполнении условия pfonix >= 5 (по-английски правильно пишется phoenix, а не пфоникс) после первой итерации игра вылетает. Как-то так.

С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#3566
}{0TT@6bI4
while 1 do
pfonix = GetHeroCreatures( "Main_Hero", CREATURE_PHOENIX);
if pfonix >= 5 then
SetObjectiveState("dzad3", OBJECTIVE_COMPLETED);
SetObjectiveState("dzad2", OBJECTIVE_FAILED);
break;
end;
sleep(1)
end

Не хватает sleep-а в последнем цикле, поэтому при невыполнении условия pfonix >= 5 (по-английски правильно пишется phoenix, а не пфоникс) после первой итерации игра вылетает. Как-то так.

Теперь всё понятно. Большое вам спасибо! 
Сценарий: "Наследие прошлого"
Кампании:
"
Новый порядок", "Серый Альянс""Поиски Истины"

Трейлер №2 кампании "Дыхание Пустоты": https://www.youtube.com/watch?v=XkHKXk5BctA&ab_channel=%D0%90ndrei_21

В ответ пользователю Andrei_21
Аватар пользователя
#3567
Какой нужен скрипт чтобы в зданиях где нанимают существ, можно было нанять существ один раз за всю игру?
Аватар пользователя
#3568
В функции нового дня:
if GetDate(DAY_OF_WEEK)==0 then
SetObjectDwellingCreatures("Имя города", id-существа, 0)
end

Если таких существ несколько, то составьте массив айди:
if GetDate(DAY_OF_WEEK)==0 then
local id_table = {id1, id2, id3, ....}
for key, id in id_table do
SetObjectDwellingCreatures("Имя города", id, 0)
end
end
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#3569
Какой скрипт нужен чтобы после диалога выдавалось несколько заданий?
В ответ пользователю Alinksolo
Аватар пользователя
#3570
Кстати, а как все-таки работает скрипт sleep?Вообще понять не могу
В ответ пользователю Григорий Ковалев
Аватар пользователя
#3571
Григорий Ковалев
Кстати, а как все-таки работает скрипт sleep?Вообще понять не могу

Григорий, это задержка между скриптами работает примерно так:
 Ваш код
 sleep(1) - в скобках указываем время задержки. При этом нужно помнить, что sleep(1) равен 200мс.
Ваш код 

Очень удобна функция, если сначала нужно, допустим, проиграть красивый эффект, а по его завершении разрушить какой-либо объект.
Сценарий: "Наследие прошлого"
Кампании:
"
Новый порядок", "Серый Альянс""Поиски Истины"

Трейлер №2 кампании "Дыхание Пустоты": https://www.youtube.com/watch?v=XkHKXk5BctA&ab_channel=%D0%90ndrei_21

В ответ пользователю Andrei_21
Аватар пользователя
#3572
То есть если я правильно понял, sleep дает задержку между скриптами? Если это так, бегу пробовать.
Аватар пользователя
#3573
Пробуйте, Григорий. Знание, где поставить sleep одно из важнейших понятий в lua.
Сценарий: "Наследие прошлого"
Кампании:
"
Новый порядок", "Серый Альянс""Поиски Истины"

Трейлер №2 кампании "Дыхание Пустоты": https://www.youtube.com/watch?v=XkHKXk5BctA&ab_channel=%D0%90ndrei_21

В ответ пользователю Alinksolo
Аватар пользователя
#3574
Alinksolo
Какой скрипт нужен чтобы после диалога выдавалось несколько заданий?
Задание выдаётся этой командой SetObjectiveState('имя_задания', state, playerID = PLAYER_1); Можете несколько раз прописать эту команду для выдачи разных заданий
В ответ пользователю John_Lock
Аватар пользователя
#3575
User01322342
Задание выдаётся этой командой SetObjectiveState('имя_задания', state, playerID = PLAYER_1); Можете несколько раз прописать эту команду для выдачи разных заданий
Если оно выставлено как управляемое в ручную.
В ответ пользователю Григорий Ковалев
#3576
Хелп, люди добрые.
Никто случайно не знает, как написать отдельный скрипт на ворота гарнизона?
Что-то мне ни разу такое не попадалось, а между тем, в этой модели есть вкладка Script.
Ведь это, наверное, не function, а надо писать просто, без всяких предисловий?
Я хочу, чтобы в ворота мог проехать только владелец такого-то замка, и сякого-то замка, то есть, два условия.
Как это пишется?
В ответ пользователю Марта
Аватар пользователя
#3577
Марта
Хелп, люди добрые.
Никто случайно не знает, как написать отдельный скрипт на ворота гарнизона?
Что-то мне ни разу такое не попадалось, а между тем, в этой модели есть вкладка Script.
Ведь это, наверное, не function, а надо писать просто, без всяких предисловий?
Я хочу, чтобы в ворота мог проехать только владелец такого-то замка, и сякого-то замка, то есть, два условия.
Как это пишется?

Можно создать регион где стоит гарнизон.Потом скриптом SetRegionBlocked блокируем регион.SetRegionBlocked("имя региона", true или false,  1)
true блокировка, false разблокировка.
1 номер игрока, то есть красный.Второй - синий и т.д.
Аватар пользователя
#3578
Есть вариант проще.
function GarrisonBlock()
while 1 do
if GetObjectOwner("Замок2")==GetObjectOwner("Замок1")  then --Ваше условие истинно, только если оба замка принадлежат одному игроку
SetObjectEnabled("Гарнизон", 1, GetObjectOwner("Замок1")) --Разблокируем гарнизон владельцу обоих замков
while not IsObjectEnabled("Гарнизон") do sleep(1) end
end
for i=1,8 do
if GetPlayerState(i)==PLAYER_ACTIVE and  i~=GetObjectOwner("Замок1") and i~=GetObjectOwner("Замок2") and IsObjectEnabled("Гарнизон") then --Если игрок активен и не владелец обоих замков, но гарнизон ему разблокирован, то
SetObjectEnabled("Гарнизон", nil, i) --Заблокировать гарнизон ему
end
end
sleep(1)
end

startThread(GarrisonBlock)

Да, скрипт не очень красивый, можно было бы и имена в переменные загнать, чтобы не писать 5 раз, а еще лучше в аргументы функции, можно еще использовать триггер смены владельца замка и проверку на старте карты, чтоб лишний цикл не крутился.
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
#3579
Спасибо, сейчас буду пробовать.

Добавлено через 36 минут
Хоттабыч, что-то не фурычит скрипт.
Скрипт эдитор сразу начал ругаться, но я там ещё один end добавила перед sleep, и он перестал.
Однако, теперь при попытке загрузить карту, на надписи "нажмите любую клавишу" игра наглухо зависает, и приходится выходить через Ctrl + Alt + Del, по-другому никак.
Я правильно поняла, надо было скрипт в Меп скрипт прописывать, а не на сами ворота?
И вот эта вот строчка меня смущает:
while not IsObjectEnabled("Garnizon_1") do sleep(1)end
Я в луа, и вообще в скриптах, ничего не понимаю, - но впервые сталкиваюсь, что end пишут просто так в конце, - это так и надо, do sleep(1)end, или это надо было с новой строчки или двух строчек писать?

Статистика

Приветствуем новейшего участника: leyu