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

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

Аватар пользователя
#3854
Можете переформулировать задачу?) Я не понял, когда должно произойти)
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#3855
}{0TT@6bI4
Можете переформулировать задачу?) Я не понял, когда должно произойти)
Значит, наступает вторая неделя, и в первый её день(понедельник) происходит что-то, ну например MsgBox "Да здравствует счастливая неделя!". Проходит эта неделя, потом ещё одна, начинается 4-я и опять тот же MsgBox "Да здравствует счастливая неделя!".
Аватар пользователя
#3856
Думаю, вы сами поймёте все, если я вам скажу одно: ваши недели с учётом каждой второй это циклическая группа порядка 2, изоморфная группе вычетов по модулю двух.
В общем, если остаток от деления номера недели равен двум и день недели — ПН, то ....
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#3857
}{0TT@6bI4
Думаю, вы сами поймёте все, если я вам скажу одно: ваши недели с учётом каждой второй это циклическая группа порядка 2, изоморфная группе вычетов по модулю двух.
В общем, если остаток от деления номера недели равен двум и день недели — ПН, то ....
Спасибо) Правда, уже разобрался сам... Просто сев и посчитав сколько всего недель в месяце(4), а потом прописал такой код:
if (( GetDate(WEEK) == 2 ) or ( GetDate(WEEK) == 4 )) and ( GetDate(DAY_OF_WEEK) == 1 ) then

И теперь всё работает как нужно)

В ответ пользователю Азгалор
Аватар пользователя
#3858
Всем привет! Помогите, кто-нибудь, разобраться в Talkbox'сах. Очень хочу сделать небольшой диалог в игре. 
Заранее спасибо!

Мои карты:
Падший рыцарь
Сердце Хаоса

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники

Аватар пользователя
#3859
BlueHeavenHero, можете посмотреть соответствующий вопрос из ЧаВо в моей подписи.
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
В ответ пользователю Jack_of_shadows
Аватар пользователя
#3860
Jack_of_shadows
BlueHeavenHero, можете посмотреть соответствующий вопрос из ЧаВо в моей подписи.
Спасибо, Наконец-то смог разобраться. 

Добавлено через 1 час 58 минут
Все таки я никогда не буду ладить с TalkBox'ами. Написал такой скрипт, но при нажатии ответа ОК (см. строчку elseif (ansver == 2) then функции FirstTalkBoxCallback) ничего не происходит, функция RobberJoin не срабатывает и консоль жалуется на Value was NIL when getting global with name "RobberJoin". Все пути к текстовым файлам и текстурам иконок я прописал верно, перепроверял пять раз.
Как это решить?
function FirstTalkBox()
TalkBoxForPlayers(PLAYER_1, "/Textures/Interface/CombatArena/Faces/Heaven/ico_Marksman_128.xdb#xpointer(/Texture)", nil, "/Text/TalkBox.txt", nil, "FirstTalkBoxCallback", 0, "/Text/Robber.txt", nil, 0, "/Text/Ans1.txt", "/Text/Ans2.txt", "/Text/Ans3.txt")
Trigger(OBJECT_TOUCH_TRIGGER,"rodder", nil)
end;

Trigger(OBJECT_TOUCH_TRIGGER,"rodder", "FirstTalkBox")

function FirstTalkBoxCallback(player, answer)
if (answer == 1) then
MessageBox("/Text/Rimours.txt")
SetObjectiveState("prim3",OBJECTIVE_ACTIVE,1)
elseif (answer == 2) then
QuestionBox("/Text/RobberJoin.txt", "RobberJoin", "SecondTalkBox")
elseif (answer == 3) then
MessageBox("/Text/RobberAttack.txt")
StartCombat("Hafad", nil, 3, 3, 9+1*diff, 5, 5+1*diff, 2, 13+1*diff, nil, nil, nil, nil)
end;
end;

function SecondTalkBox()
TalkBoxForPlayers(PLAYER_1, "/Textures/Interface/CombatArena/Faces/Heaven/ico_Marksman_128.xdb#xpointer(/Texture)", nil, "/Text/TalkBox.txt", nil, "SecondTalkBoxCallback", 0, "/Text/Robber.txt", nil, 0, "/Text/Ans4.txt", "/Text/Ans5.txt")
end;

function SecondTalkBoxCallback(player, answer)
if (answer == 1) then
MessageBox("/Text/Rimours.txt")
sleep(1)
SetObjectiveState("prim3",OBJECTIVE_ACTIVE,1)
elseif (answer == 2) then
MessageBox("/Text/Objectives/CaptureCastle.txt")
sleep(1)
OpenCircleFog(126, 139, 0, 4, 1)
MoveCamera(126, 139, 0, 3, 0, 0, 1, 1)
sleep(1)
MessageBox("/Text/Rimours.txt")
SetObjectiveState("prim3",OBJECTIVE_ACTIVE,1)
end;

function RobberJoin()
AddHeroCreatures("Hafad", 1, 13)
AddHeroCreatures("Hafad", 3, 9)
AddHeroCreatures("Hafad", 5, 5)
sleep(1)
TalkBoxForPlayers(PLAYER_1, "/Textures/Interface/CombatArena/Faces/Heaven/ico_Marksman_128.xdb#xpointer(/Texture)", nil, "/Text/TalkBox.txt", nil, "SecondTalkBoxCallback", 0, "/Text/Robber.txt", nil, 0, "/Text/Ans4.txt", "/Text/Ans5.txt")
end;
end;

Мои карты:
Падший рыцарь
Сердце Хаоса

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники

Аватар пользователя
#3861
Неправильно расставлены end'ы. Под функцией RobberJoin — два (а должен быть один), а под секонд толкбокс коллбэк — один (а должно быть два). Из-за этого функция стала локальной, поэтому из других функций не видна и попытка вызвать её после толкбокса приводит к ошибке
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#3862
}{0TT@6bI4
Неправильно расставлены end'ы. Под функцией RobberJoin — два (а должен быть один), а под секонд толкбокс коллбэк — один (а должно быть два). Из-за этого функция стала локальной, поэтому из других функций не видна и попытка вызвать её после толкбокса приводит к ошибке
Спасибо за помощь. Долго ломал голову, почему же скрипт не работает (редактор скриптов ни на что не ругался, а понять, на что именно жалуется консоль, я понять не могу) 

Мои карты:
Падший рыцарь
Сердце Хаоса

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники

Аватар пользователя
#3863
Value was nil when getting global with name "XXX" — в текущей области видимости переменная не существует. То есть либо она была локальной внутри блока, либо ошибка в названии, либо обращение к ней наступает раньше объявления. Например,
print(a)
a = 123:
>>>Value was nil when ...
>>>nil
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
Аватар пользователя
#3864
А ещё проставление отступов для всех внутренних блоков кода и привычка сразу писать function() + end, а потом уже набирать код внутри, избавляет от таких проблем почти полностью.
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
Аватар пользователя
#3866
Всем привет! Создал я, значит, Кастомное заклинание на основе неиспользуемого Custom Adventure Spell 3. Поставил иконку, поменял тип на Dark... Но как сделать так, чтобы при нажатии на закл в книжке на поле боя призывались Вестники Смерти?

Мои карты:
Падший рыцарь
Сердце Хаоса

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники

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

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

В ответ пользователю Andrei_21
Аватар пользователя
#3868
Andrei_21
Насколько я знаю, сделать кастомное заклинание на призыв мобов во время битвы невозможно. Только на карте приключений будет работать такой призыв.
Очень жаль... Тогда придется довольствоваться кастомной специализацией героя.

Мои карты:
Падший рыцарь
Сердце Хаоса

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники

В ответ пользователю BlueHeavenHero
Аватар пользователя
#3869
Всем привет! На днях занялся тестированием сценария, и во время тестов обнаружил проблему - скрипт, который восстанавливает разрушенный мост, работает, но финал меня разочаровал. Мост строится, но Пройти по нему почему-то невозможно! 
Заранее спасибо за помощь.
function RazedBridge(hero)
FirstStartRaskopok = GetDate(DAY)
if GetObjectiveState("BuildBridge") == OBJECTIVE_UNKNOWN then
SetObjectiveState("BuildBridge",OBJECTIVE_ACTIVE, 1)
MessageBox("/Text/RazedBridge.txt")
end;
if GetObjectiveState("BuildBridge") == OBJECTIVE_ACTIVE and GetHeroCreatures(hero,1) >= 200 then
RemoveHeroCreatures(hero,1,200)
SetObjectiveState("BuildBridge",OBJECTIVE_COMPLETED)
sleep(2)
startThread(BuildBridge)
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"razedbridge", nil)
end;
end;

Trigger(REGION_ENTER_AND_STOP_TRIGGER,"razedbridge", "RazedBridge")

function BuildBridge()
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
sleep(5)
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
end;

function newday()
if GetObjectiveState("BuildBridge") == OBJECTIVE_COMPLETED then
if GetDate(DAY) - FirstStartRaskopok == 1 then
MessageBox("/Text/Five.txt")
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
end;
if GetDate(DAY) - FirstStartRaskopok == 2 then
MessageBox("/Text/Four.txt")
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
end;
if GetDate(DAY) - FirstStartRaskopok == 3 then
MessageBox("/Text/Three.txt")
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
end;
if GetDate(DAY) - FirstStartRaskopok == 4 then
MessageBox("/Text/Two.txt")
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
end;
if GetDate(DAY) - FirstStartRaskopok == 5 then
MessageBox("/Text/One.txt")
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
end;
if GetDate(DAY) - FirstStartRaskopok == 6 then
MessageBox("/Text/BuildBridge.txt")
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
sleep(1)
RemoveObject("razedbridge1")
RemoveObject("razedbridge2")
RemoveObject("razedbridge3")
sleep(1)
Play3DSound("/Sounds/_(Sound)/SFX/Seige-Destr/destr01.xdb#xpointer(/Sound)", 56, 97, 0)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 94, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 97, 2, 0, GROUND)
PlayVisualEffect( "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)", "", "tag1", 56, 100, 2, 0, GROUND)
sleep(1)
SetObjectPosition("bridge1", 56, 97, 0)
SetObjectPosition("bridge2", 56, 97, 0)
SetObjectPosition("bridge3", 56, 100, 0)
end;
end;
end;

Trigger(NEW_DAY_TRIGGER, 'newday')
Вложения 1
1 файл • Общий размер: 669,9 KB

Мои карты:
Падший рыцарь
Сердце Хаоса

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники

Статистика

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

Сейчас на сайте 5 пользователей 1023 гостей