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

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

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

Îòâåò
Ñòðàíèöà 263 èç 264
 
Îïöèè òåìû
#3931
Ñòàðûé 13.07.2024, 20:34
  #3931
^
Gerter
 
Àâàòàð äëÿ Gerter
📖
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 834
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 834
pegn0ly#9113
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Ну если глянуть код DialogBox'а, то можно предположить, что проблема в использовании GetCurrentPlayer там. TalkBox ожидает первым аргументом не номер игрока, а его filter. Для 1 и 2 игрока фильтр равен номеру, но для 3+ нет. Поэтому, вероятно, и работает только для двух первых игроков. Если проблема в этом, то решением будет обернуть первый аргумент DialogBox'а - GetPlayerFilter(GetCurrentPlayer())
__________________
Íåò âîéíå.
Íåò âîéíå.
Gerter âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3932
Ñòàðûé 13.07.2024, 21:09
  #3932
^
green belly
 
Àâàòàð äëÿ green belly
📖
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Попробовал поменять местами 1 с 3 объектами, код оставил прежним.

Было так:
первый игрок = объект "1"
второй игрок = объект "2" и т.д.
3 игрок и 3 объект и так до 8 не работали

Стало так:
первый игрок касается объекта "3" и все работает
третий игрок касается объекта "1" и не работает.

Значит код верный и работает для всех 8 функций.

Получается дело в номере игрока - для 2 игроков работает, для 6 нет.
Придется отказаться от классной задумки бонуса на усмотрение игрока человека(((

 



Добавлено через 28 минут
GerterНу если глянуть код DialogBox'а, то можно предположить, что проблема в использовании GetCurrentPlayer там. TalkBox ожидает первым аргументом не номер игрока, а его filter. Для 1 и 2 игрока фильтр равен номеру, но для 3+ нет. Поэтому, вероятно, и работает только для двух первых игроков. Если проблема в этом, то решением будет обернуть первый аргумент DialogBox'а - GetPlayerFilter(GetCurrentPlayer())
Прописал получение фильтра, все заработало, благодарю 
green belly âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3933
Ñòàðûé 13.07.2024, 22:05
  #3933
^
Gerter
 
Àâàòàð äëÿ Gerter
📖
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 834
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 834
pegn0ly#9113
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

сразу бы хотел предупредить, что если собираешься юзать талкбоксы в мультиплеере по сети, то лучше сразу отказаться от этой идеи, т.к. эта функция ломает сейвы в мультике.
__________________
Íåò âîéíå.
Íåò âîéíå.
Gerter âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3934
Ñòàðûé 13.07.2024, 22:17
  #3934
^
Äîëãèé
 
Àâàòàð äëÿ Äîëãèé
📖
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 103
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 103
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

green belly

Попробовал поменять местами 1 с 3 объектами, код оставил прежним.

Было так:
первый игрок = объект "1"
второй игрок = объект "2" и т.д.
3 игрок и 3 объект и так до 8 не работали

Стало так:
первый игрок касается объекта "3" и все работает
третий игрок касается объекта "1" и не работает.

Значит код верный и работает для всех 8 функций.

Получается дело в номере игрока - для 2 игроков работает, для 6 нет.
Придется отказаться от классной задумки бонуса на усмотрение игрока человека(((

 



Добавлено через 28 минут
Прописал получение фильтра, все заработало, благодарю 
 
У всех функций которые называются ....BoxForPlayers аргумент на id игрока работает странно. 1 игрок = 1, 2 игрок = 2, 3 игрок = 4, 4 игрок = 8, 5 игрок = 16, 6 игрок = 32, 7 игрок = 64, 8 игрок = 128. Насчет последних 2 не уверен, проверял только для 6 игроков. 
Äîëãèé âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3935
Ñòàðûé 14.07.2024, 17:27
  #3935
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Долгий 
У всех функций которые называются ....BoxForPlayers аргумент на id игрока работает странно. 1 игрок = 1, 2 игрок = 2, 3 игрок = 4, 4 игрок = 8, 5 игрок = 16, 6 игрок = 32, 7 игрок = 64, 8 игрок = 128. Насчет последних 2 не уверен, проверял только для 6 игроков. 

Это битовая маска, чтобы можно было выводить одинаковое сообщение сразу для нескольких игроков. Например если нужно для 1, 3 и 5, то можно передать PLAYERFLT_1 + PLAYERFLT_3 + PLAYERFLT_5.
__________________
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

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

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
Jack_of_shadows ñåé÷àñ íà ôîðóìå
Îòâåòèòü ñ öèòèðîâàíèåì
#3936
Ñòàðûé 11.09.2024, 20:47
  #3936
^
Shiroyasha2910
📖
Ðåãèñòðàöèÿ: 07.07.2019
Ñîîáùåíèÿ: 48
Ðåãèñòðàöèÿ: 07.07.2019
Ñîîáùåíèÿ: 48
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Добрый вечер, хотел через скрипт дать маны герою, как с навыком "Тайное преимущество", чтобы игнорировало максимальную ману героя. Попытался через ChangeHeroStat() не получилось. Самое смешное, что когда я только начал заниматься картой у меня наоборот получилось с игнором макс. маны, а требовалось до максимальной, а теперь наоборот и я не могу вспомнить, как я это сделал. Нашёл на форуме ответ, как сделать герою ману до 300, через ChangeHeroStat(), но как писал выше не получилось.

Shiroyasha2910 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3937
Ñòàðûé 11.09.2024, 21:21
  #3937
^
Magnificent
 
Àâàòàð äëÿ Magnificent
📖
Ðåãèñòðàöèÿ: 04.08.2024
Ñîîáùåíèÿ: 10
Ðåãèñòðàöèÿ: 04.08.2024
Ñîîáùåíèÿ: 10
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Shiroyasha2910

Добрый вечер, хотел через скрипт дать маны герою, как с навыком "Тайное преимущество", чтобы игнорировало максимальную ману героя. Попытался через ChangeHeroStat() не получилось. Самое смешное, что когда я только начал заниматься картой у меня наоборот получилось с игнором макс. маны, а требовалось до максимальной, а теперь наоборот и я не могу вспомнить, как я это сделал. Нашёл на форуме ответ, как сделать герою ману до 300, через ChangeHeroStat(), но как писал выше не получилось.


Возможное решение: временно добавить герою Знание, а после увеличения количества маны вернуть Знание к прежнему значению. Пример:

ChangeHeroStat("Deleb", STAT_KNOWLEDGE, 10)
ChangeHeroStat("Deleb", STAT_MANA_POINTS, 100)
ChangeHeroStat("Deleb", STAT_KNOWLEDGE, -10)

Быстро проверил через консоль. Да, так работает, мана остаётся выше максимального значения. Пока так, возможно, кто-то знает как одной командой это сделать.
Magnificent âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3938
Ñòàðûé 11.09.2024, 21:56
  #3938
^
Shiroyasha2910
📖
Ðåãèñòðàöèÿ: 07.07.2019
Ñîîáùåíèÿ: 48
Ðåãèñòðàöèÿ: 07.07.2019
Ñîîáùåíèÿ: 48
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

MagnificentВозможное решение: временно добавить герою Знание, а после увеличения количества маны вернуть Знание к прежнему значению. Пример:

ChangeHeroStat("Deleb", STAT_KNOWLEDGE, 10)
ChangeHeroStat("Deleb", STAT_MANA_POINTS, 100)
ChangeHeroStat("Deleb", STAT_KNOWLEDGE, -10)

Быстро проверил через консоль. Да, так работает, мана остаётся выше максимального значения. Пока так, возможно, кто-то знает как одной командой это сделать.

Я об этом думал, но надеялся, что я просто тупой, и не знаю способа получше. Но всё равно спасибо. Блин, как же я в тот раз это одной командой сделал.
Shiroyasha2910 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3939
Ñòàðûé 12.09.2024, 07:47
  #3939
^
}{0TT@6bI4
 
Àâàòàð äëÿ }{0TT@6bI4
📖
Ðåãèñòðàöèÿ: 05.09.2019
Àäðåñ: Ñåðåáðÿíûå Ãîðîäà, Àëü-Ñàôèð
Ñîîáùåíèÿ: 1996
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 05.09.2019
Àäðåñ: Ñåðåáðÿíûå Ãîðîäà, Àëü-Ñàôèð
Ñîîáùåíèÿ: 1996
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Возможно, вы помните увеличение маны в бою функцией SetUnitManaPoints, там нет ограничений по максимуму маны

В моём моде очки здоровья технически реализованы как мана героя и проблемы такой нет, ChangeHeroStat увеличивает манапул выше, чем подразумевает знание героя
__________________
Ñ óâàæåíèåì, }{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 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3940
Ñòàðûé 13.10.2024, 00:25
  #3940
^
CetusSantis
📖
Ðåãèñòðàöèÿ: 13.10.2024
Ñîîáùåíèÿ: 5
Ðåãèñòðàöèÿ: 13.10.2024
Ñîîáùåíèÿ: 5
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Добрый день, есть простенькая задачка, сделать в редакторе карт такой скрипт, чтобы, например, при убийстве нейтрала, любому герою, кто бы это сделал, дали Х опыта.

Но вот, никак не получается это реализовать. В чем тут ошибка?

GetPlayerHeroes(0);
SetGameVar(whotoup, 0);
whotoup = GetPlayerHeroes(0);
ChangeHeroStat(whotoup[0], 0, 999999999)

CetusSantis âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3941
Ñòàðûé 13.10.2024, 20:04
  #3941
^
Äîëãèé
 
Àâàòàð äëÿ Äîëãèé
📖
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 103
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 103
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

CetusSantis

Добрый день, есть простенькая задачка, сделать в редакторе карт такой скрипт, чтобы, например, при убийстве нейтрала, любому герою, кто бы это сделал, дали Х опыта.

Но вот, никак не получается это реализовать. В чем тут ошибка?

GetPlayerHeroes(0);
SetGameVar(whotoup, 0);
whotoup = GetPlayerHeroes(0);
ChangeHeroStat(whotoup[0], 0, 999999999)



Костылями можно сделать проще, но если нужна точная логика, что ЛЮБОЙ герой получит опыт за пробивку КОНКРЕТНОГО стека, а не общего количества каких-то существ, то вот моя идея:

Дать имя юниту  на карте. Например UnitExp

function FightUnitExp(hero, unit)
 while isObjectExists(hero) == not nil and isObjectExists(unit) == not nil do
  sleep(5)
 end 
 if isObjectExists(unit) == nil then
  ChangeHeroStat(hero, 0, 999999999)
 end
end
Trigger(OBJECT_TOUCH_TRIGGER, "UnitExp", "FightUnitExp")
Äîëãèé âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3942
Ñòàðûé 14.10.2024, 22:31
  #3942
^
CetusSantis
📖
Ðåãèñòðàöèÿ: 13.10.2024
Ñîîáùåíèÿ: 5
Ðåãèñòðàöèÿ: 13.10.2024
Ñîîáùåíèÿ: 5
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Сразу 2 глупых вопроса)

Как дать юниту это имя? 

Куда нужно добавить этот скрипт? К этому юниту? Если да, то скрипт или комбат скрипт?

CetusSantis âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3943
Ñòàðûé 14.10.2024, 23:04
  #3943
^
Äîëãèé
 
Àâàòàð äëÿ Äîëãèé
📖
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 103
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 103
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

CetusSantis

Сразу 2 глупых вопроса)

Как дать юниту это имя? 

Куда нужно добавить этот скрипт? К этому юниту? Если да, то скрипт или комбат скрипт?


Имя добавляется в параметр Name  юнита в редакторе карт. Я приложил скриншот, там зеленым выделено куда.

Скрипт в общий скрипт карты.
Ìèíèàòþðû
Íàæìèòå íà èçîáðàæåíèå äëÿ óâåëè÷åíèÿ
Íàçâàíèå:  example.png
Ïðîñìîòðîâ: 4
Ðàçìåð:	549.6 Êáàéò
ID:	73656  
Äîëãèé âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3944
Ñòàðûé 14.10.2024, 23:27
  #3944
^
CetusSantis
📖
Ðåãèñòðàöèÿ: 13.10.2024
Ñîîáùåíèÿ: 5
Ðåãèñòðàöèÿ: 13.10.2024
Ñîîáùåíèÿ: 5
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Понятно, а с модом heroes5.5 такой трюк совместим? А то там тоже свои скрипты.
CetusSantis âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3945
Ñòàðûé 14.10.2024, 23:29
  #3945
^
Äîëãèé
 
Àâàòàð äëÿ Äîëãèé
📖
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 103
Ðåãèñòðàöèÿ: 23.04.2019
Ñîîáùåíèÿ: 103
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Проверил скрипт. Есть 1 ошибка: функция isObjectExists пишется с большой буквы: IsObjectExists

Добавлено через 1 минуту
CetusSantisПонятно, а с модом heroes5.5 такой трюк совместим? А то там тоже свои скрипты.

Не знаю, не проверял. Может сработает, а может нет. На ванилле проверил, работает
Äîëãèé âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò
Ñòðàíèöà 263 èç 264


Îïöèè òåìû



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


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

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