Ñêðèïòû - Ñòðàíèöà 265 - Ôîðóì HeroesWorld-à

Áûñòðàÿ íàâèãàöèÿ ïî îñíîâíûì ðàçäåëàì ôîðóìà:
Òóðíèðû
ÊÀÐÒÛ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Ãåðîè Ìå÷à è Ìàãèè 5 - Êàðòîñòðîèòåëüñòâî (Ðåäàêòîð êàðò)  ýòîì ðàçäåëå ìîæíî îáñóæäàòü âñå ÷òî êàñàåòñÿ ðåäàêòîðà êàðò äëÿ Heroes of Might and Magic V. Òàê æå çäåñü îáñóæäàåì êàðòîñòðîèòåëüñòâî.

Îòâåò
Ñòðàíèöà 265 èç 265
 
Îïöèè òåìû
#3961
Ñòàðûé 29.12.2024, 02:49
  #3961
^
Äîëãèé
 
Àâàòàð äëÿ Äîëãèé
📖
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 104
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 104
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Dogenator

Всем здравствуйте!

Возникла такая проблема:

Установил скрипт по смене дня-ночи, все работает, но...

При смене дневного освещения на ночное - становится недоступно меню героев, причем только для игрока №1

В чем может быть проблема?

Вот код:

curr_light = 'day'

function DayNight()
  if curr_light == 'day' then
    SetAmbientLight(GROUND, 'NIGHT', 1, 5.0)
    curr_light = 'night'
  else
    SetAmbientLight(GROUND, 'DAY', 1, 5.0)
    curr_light = 'day'
  end
end


Это только при запуске карты через мультиплеер? в сингл плеере всё нормально? У меня был подобный баг при вызове showFlyingSign(), пока на экране всех игроков надпись не появится, доступа к меню героя не будет, точнее будет но по нажатию на иконку героя меню будет открываться у последнего игрока (ставил всех под управление человека и тестил). Крч есть функции для правильной работы которых нужно чтоб они были на экране каждого игрока человека. PEST фиксит это в мультиплеере
Äîëãèé âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3962
Ñòàðûé 29.12.2024, 03:35
  #3962
^
Dogenator
 
Àâàòàð äëÿ Dogenator
📖
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Да, при запуске в мультиплеере, но под управлением вторым игроком.

То есть я правильно понимаю, что когда у меня наступила ночь, то у второго игрока еще день, поэтому получается такой рассинхрон.

Завтра попробую с товарищем попробовать, посмотрю как там будет и отпишусь

Dogenator âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3963
Ñòàðûé 06.01.2025, 02:43
  #3963
^
Dogenator
 
Àâàòàð äëÿ Dogenator
📖
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Наконец, смог протестировать этот скрипт в онлайне.

Вы правы, Pest решает эту проблему, все работает

Спасибо за помощь!

Dogenator âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3964
Ñòàðûé 23.01.2025, 14:35
  #3964
^
Dogenator
 
Àâàòàð äëÿ Dogenator
📖
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Всем добрый день!

Встала такая задача: через скрипт выдавать заклинание "Ускорение" при прокачке навыка "Волшебство скорости" из нападения. И удалять, если навык был скручен у ментора. Нужно это так как я изменил тир заклинания "Ускорения" с 1-го на 3-ий и при прокачке "ВС", в бою заклинание становится недоступно

В файлах по скриптам я нашел пару функций, которые за это отвечают

HasHeroSkill(heroName, skillID); - проверяет наличие навыка

TeachHeroSpell(heroName, spell);  - выдает заклинание 

Забирает заклинание - ?

Единственное, что меня смущает, так это скриптовое имя героя. Если я хочу, чтобы эта функция работала на всех героев, то как следует поступить?

 

И отдельный вопрос, Триггер касания работает с первого дня или можно задать так, чтобы он работал с определенного?

 

 

Dogenator âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3965
Ñòàðûé 23.01.2025, 19:37
  #3965
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 538
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 538
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Dogenator, нужно крутить отдельный поток, который будет пробегать по всем героям игрока
while(1) do
  local heroes = GetPlayerHeroes(ID_игрока);
  for i, hero in heroes do
    if(HasHeroSkill(hero, ID_скилла) and (not KnowHeroSpell(hero, ID_спелла))) then
      TeachHeroSpell(hero, ID_спелла);
    end
  end
  sleep(50);
end

Но на отнимание заклинания кажется функции нет, может читом разве что?
DogenatorТриггер касания работает с первого дня или можно задать так, чтобы он работал с определенного?
Можно в обработчике касания проверять какой сейчас день, или можно вешать триггер касания не сразу по старту, а в триггере нового дня когда наступит нужный день. Триггер работает с момента когда выполнится функция Trigger().
__________________
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3966
Ñòàðûé 24.01.2025, 00:26
  #3966
^
}{0TT@6bI4
 
Àâàòàð äëÿ }{0TT@6bI4
📖
Ðåãèñòðàöèÿ: 05.09.2019
Àäðåñ: Ñåðåáðÿíûå Ãîðîäà, Àëü-Ñàôèð
Ñîîáùåíèÿ: 2007
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 05.09.2019
Àäðåñ: Ñåðåáðÿíûå Ãîðîäà, Àëü-Ñàôèð
Ñîîáùåíèÿ: 2007
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Если заклинание недоступно для каста (недостаточный уровень магии света), то даже выданное скриптом оно кастоваться не будет, к сожалению
__________________
Ñ óâàæåíèåì, }{0TT@6bI4
_________________
Ãðóïïà êàðòîñòðîèòåëåé
Òàì îòâåòû íà âîïðîñû, ðóêîâîäñòâà, ãàéäû è ïðî÷åå
Discord-ñåðâåð "Ãåðîè 5: S.T.A.L.K.E.R"
Ñåðâåð ïî ìîäèôèêàöèè "Ãåðîè 5: S.T.A.L.K.E.R"
_________________
Ñ óâàæåíèåì, }{0TT@6bI4
_________________
Ãðóïïà êàðòîñòðîèòåëåé
Òàì îòâåòû íà âîïðîñû, ðóêîâîäñòâà, ãàéäû è ïðî÷åå
Discord-ñåðâåð "Ãåðîè 5: S.T.A.L.K.E.R"
Ñåðâåð ïî ìîäèôèêàöèè "Ãåðîè 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3967
Ñòàðûé 24.01.2025, 00:41
  #3967
^
Dogenator
 
Àâàòàð äëÿ Dogenator
📖
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Сделал так, как вы сказали, все получилось

Но, почему то, у меня перестали работать абсолютно все другие скрипты, помещенные в функцию нового дня. В чем может быть проблема?

Так выглядит функция, которая запускается с NEW_DAY_TRIGGER

function new_day_trigger()
haste_p1 ()
haste_p2 ()
 if (GetDate(ABSOLUTE_DAY) == 2) then
Spawn_army()
 end
 if (GetDate(ABSOLUTE_DAY) == 3) then
day_3rd()
mentor_off ()
Trigger(OBJECT_TOUCH_TRIGGER, 'mentor_1', 'mentor_message_p1' );
Trigger(OBJECT_TOUCH_TRIGGER, 'mentor_2', 'mentor_message_p2' );
 end
end

А эта функция, что вы мне прислали, которая ломает все то, что выше

function haste_p1 ()
while(1) do
  local heroes = GetPlayerHeroes(PLAYER_1);
  for i, hero in heroes do
    if(HasHeroSkill(hero, 143) and (not KnowHeroSpell(hero, SPELL_HASTE))) then
      TeachHeroSpell(hero, SPELL_HASTE);
    end
  end
  sleep(50);
end
end

Возможно я неправильно поместил саму эту функцию haste, что до всех остальных функций обработка скрипта просто не доходит?

 



Добавлено через 2 минуты

}{0TT@6bI4Если заклинание недоступно для каста (недостаточный уровень магии света), то даже выданное скриптом оно кастоваться не будет, к сожалению

Как ни странно, но это работает, но заклинание кастуется только на искусном уровне школы света, хотя света даже нет в прокачке

Но ломает почему то все другие скрипты

Dogenator âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3968
Ñòàðûé 24.01.2025, 12:34
  #3968
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 538
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 538
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Конструкции вида while(1) do ... end - это цикл, если в нём нет команды выхода из цикла, то он бесконечный. Когда вы вызываете haste_p1(), скрипт крутится внутри этой функции бесконечно. Для таких вещей нужно использовать отдельные потоки, функция startThread(название функции). Запустить один раз, можно прямо при старте карты, и они вечно работают.
__________________
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3969
Ñòàðûé 24.01.2025, 15:40
  #3969
^
Dogenator
 
Àâàòàð äëÿ Dogenator
📖
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ðåãèñòðàöèÿ: 06.06.2024
Ñîîáùåíèÿ: 57
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Jack_of_shadowsКонструкции вида while(1) do ... end - это цикл, если в нём нет команды выхода из цикла, то он бесконечный. Когда вы вызываете haste_p1(), скрипт крутится внутри этой функции бесконечно. Для таких вещей нужно использовать отдельные потоки, функция startThread(название функции). Запустить один раз, можно прямо при старте карты, и они вечно работают.

Спасибо вам, вот теперь все работает как надо.

Dogenator âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò
Ñòðàíèöà 265 èç 265


Îïöèè òåìû



×àñîâîé ïîÿñ GMT +4, âðåìÿ: 19:36.


vBulletin v3.5.0, Copyright ©2000-2025, Jelsoft Enterprises Ltd. (Ðóññêèé)

ßíäåêñ öèòèðîâàíèå    Top.Mail.Ru