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

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

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

Îòâåò
Ñòðàíèöà 262 èç 264
 
Îïöèè òåìû
#3916
Ñòàðûé 28.06.2024, 13:05
  #3916
^
BlueHeavenHero
 
Àâàòàð äëÿ BlueHeavenHero
📖
Ðåãèñòðàöèÿ: 20.08.2022
Ñîîáùåíèÿ: 426
Ðåãèñòðàöèÿ: 20.08.2022
Ñîîáùåíèÿ: 426
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Привет всем. Спустя долгое время наконец-то я вернулся к работе над картами, ясен-красен кое-что подзабыл, но вопрос не в этом. Очень долго я пытался сделать функцию, которая бы проверяла, на каком "этаже" находится герой - на поверхности или в подземелье. Именно этот параметр, а не общее расположение, ибо мне потом надо будет передать это значение "этажа" в другую функцию. Может кто подсказать, как грамотно сделать такую проверку?
__________________
Ìåëüêàþùèå îãíè ãèðëÿíä, ñòàêàí ãîðÿ÷åãî øîêîëàäà è... ëþáèìàÿ íèìôà
Ìåëüêàþùèå îãíè ãèðëÿíä, ñòàêàí ãîðÿ÷åãî øîêîëàäà è... ëþáèìàÿ íèìôà
BlueHeavenHero âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3917
Ñòàðûé 28.06.2024, 15:14
  #3917
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

BlueHeavenHero, если написать
local x, y, f = GetObjectPosition(имя_героя);
то f и будет номером этажа.
__________________
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

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

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3918
Ñòàðûé 28.06.2024, 15:25
  #3918
^
BlueHeavenHero
 
Àâàòàð äëÿ BlueHeavenHero
📖
Ðåãèñòðàöèÿ: 20.08.2022
Ñîîáùåíèÿ: 426
Ðåãèñòðàöèÿ: 20.08.2022
Ñîîáùåíèÿ: 426
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Jack_of_shadowsBlueHeavenHero, если написать
local x, y, f = GetObjectPosition(имя_героя);
то f и будет номером этажа.
Не думал, что это может быть так просто. Спасибо, сейчас попробую сделать снова
__________________
Ìåëüêàþùèå îãíè ãèðëÿíä, ñòàêàí ãîðÿ÷åãî øîêîëàäà è... ëþáèìàÿ íèìôà
Ìåëüêàþùèå îãíè ãèðëÿíä, ñòàêàí ãîðÿ÷åãî øîêîëàäà è... ëþáèìàÿ íèìôà
BlueHeavenHero âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3919
Ñòàðûé 30.06.2024, 09:35
  #3919
^
Àçãàëîð
 
Àâàòàð äëÿ Àçãàëîð
📖
Ðåãèñòðàöèÿ: 24.04.2016
Ñîîáùåíèÿ: 226
Ðåãèñòðàöèÿ: 24.04.2016
Ñîîáùåíèÿ: 226
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Привет! Такой вопрос: если раскидать свой скрипт по нескольким файлам(вынести в файлы некоторые части кода, которые должны отрабатывать только в определенные моменты), а потом в нужный момент их запускать через doFile, там всё что нужно отрабатывать, и на этом будет окончена считка кода от туда? Просто, интересно разгрузит ли это карту, или же без разницы делить-не делить, а лагги всё равно будут?
Àçãàëîð âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3920
Ñòàðûé 30.06.2024, 14:18
  #3920
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

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

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

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3921
Ñòàðûé 01.07.2024, 01:18
  #3921
^
green belly
 
Àâàòàð äëÿ green belly
📖
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

У меня вопрос, как поменять стоимость забывания навыка в здании ментора?
green belly âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3922
Ñòàðûé 03.07.2024, 01:37
  #3922
^
BlueHeavenHero
 
Àâàòàð äëÿ BlueHeavenHero
📖
Ðåãèñòðàöèÿ: 20.08.2022
Ñîîáùåíèÿ: 426
Ðåãèñòðàöèÿ: 20.08.2022
Ñîîáùåíèÿ: 426
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

BlueHeavenHeroНе думал, что это может быть так просто. Спасибо, сейчас попробую сделать снова
Что-то у меня не получается... Я всё же не понял, как можно передать полученный результат этажа из GetObjectPosition в глобальную переменную(
__________________
Ìåëüêàþùèå îãíè ãèðëÿíä, ñòàêàí ãîðÿ÷åãî øîêîëàäà è... ëþáèìàÿ íèìôà
Ìåëüêàþùèå îãíè ãèðëÿíä, ñòàêàí ãîðÿ÷åãî øîêîëàäà è... ëþáèìàÿ íèìôà
BlueHeavenHero âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3923
Ñòàðûé 03.07.2024, 01:59
  #3923
^
Àçãàëîð
 
Àâàòàð äëÿ Àçãàëîð
📖
Ðåãèñòðàöèÿ: 24.04.2016
Ñîîáùåíèÿ: 226
Ðåãèñòðàöèÿ: 24.04.2016
Ñîîáùåíèÿ: 226
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

BlueHeavenHero, я себе на карте такую функцию написал:

function WhereAmI(obj)
   local x, y, z = GetObjectPosition(obj);
   if z == 0 then
      return 0
   elseif z == 1 then
      return 1
   end
end

Использование: 

    if heroName == "Duncan" then
        if WhereAmI( heroName ) == 0  then
            DuncanInGround = 1
        elseif WhereAmI( heroName ) == 1  then 
            DuncanInGround = 0
        end
    end 
Àçãàëîð âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3924
Ñòàðûé 03.07.2024, 13:35
  #3924
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Любая переменная для которой не написано local, она и есть глобальная. Просто выбросим из примера одно слово:
x, y, f = GetObjectPosition(имя_героя);
Переменным желательно только присвоить более длинные имена, раз они видны из всего скрипта.
__________________
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

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

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3925
Ñòàðûé 06.07.2024, 01:19
  #3925
^
green belly
 
Àâàòàð äëÿ green belly
📖
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Всем привет, почитал на просторах форума и не только инфу про функцию talkboxforplayer, всё работает кроме одного, функция не видит коснувшегося героя. Окошко с вариантами есть, тексты ответов есть, кнопки есть, а вот героя не видит, и армию не выдает.
Замысел такой - случайный герой касается домика - выбирает ответ - получает армию.

Сам код взят из руководства Jack_of_shadows:
Зеленым цветом выделил правильный код, который я копировал, а красным код, который я писал под себя и он разумеется содержит где то ошибку

function DialogBox(icon, title, text, mode, callback, ...)
hero = human
if arg.n==1 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1])
elseif arg.n==2 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1], arg[2])
elseif arg.n==3 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1], arg[2], arg[3])
elseif arg.n==4 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1], arg[2], arg[3], arg[4])
elseif arg.n==5 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1], arg[2], arg[3], arg[4], arg[5])
end;
end

Trigger (OBJECT_TOUCH_TRIGGER, "pokrov1", "Talk1");

function Talk1()
DialogBox("/UI/MessageBox/Message.xdb#xpointer(/Texture)","/UI/MessageBox/TalkBox/text.txt", "/Maps/Multiplayer/arena/voenachalnik1.txt", 1, "Talk1Callback", "/Maps/Multiplayer/arena/voenachalnik2.txt", "/Maps/Multiplayer/arena/voenachalnik3.txt", "/Maps/Multiplayer/arena/voenachalnik4.txt")
end

function Talk1Callback(pl, ans)
if (ans==1) and HasHeroSkill (human, 57)
then
AddHeroCreatures (human, 106, 50);
elseif (ans==2) and HasHeroSkill (human, 57)
then
AddHeroCreatures (human, 107, 50);
elseif (ans==3) and HasHeroSkill (human, 57)
then
AddHeroCreatures (human, 108, 50);
end;
end;

Благодарю за помощь

green belly âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3926
Ñòàðûé 06.07.2024, 01:47
  #3926
^
Àçãàëîð
 
Àâàòàð äëÿ Àçãàëîð
📖
Ðåãèñòðàöèÿ: 24.04.2016
Ñîîáùåíèÿ: 226
Ðåãèñòðàöèÿ: 24.04.2016
Ñîîáùåíèÿ: 226
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

green belly, сразу же вижу что у тебя триггер не передаёт никакие аргументы в функцию с DialogBox'ом, т.е. в Talk1. А ещё у тебя как-то неверно прописано назначение переменной героя, с которым нужно что-либо делать. Для начала следует убрать строку hero = human из DialogBox(она там просто не нужна), строку function Talk1() заменить на function Talk1(hero), в самой функции добавить строку human = hero. Теперь скрипт будет знать кто такой human чтобы давать ему существ.
Àçãàëîð âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3927
Ñòàðûé 06.07.2024, 01:58
  #3927
^
green belly
 
Àâàòàð äëÿ green belly
📖
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Азгалор
green belly, сразу же вижу что у тебя триггер не передаёт никакие аргументы в функцию с DialogBox'ом, т.е. в Talk1. А ещё у тебя как-то неверно прописано назначение переменной героя, с которым нужно что-либо делать. Для начала следует убрать строку hero = human из DialogBox(она там просто не нужна), строку function Talk1() заменить на function Talk1(hero), в самой функции добавить строку human = hero. Теперь скрипт будет знать кто такой human чтобы давать ему существ.


Спасибо, сделал, заработало.
Ранее никаких переменных и аргументов не указывал и не подтягивал
green belly âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3928
Ñòàðûé 13.07.2024, 16:14
  #3928
^
green belly
 
Àâàòàð äëÿ green belly
📖
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ðåãèñòðàöèÿ: 14.06.2024
Ñîîáùåíèÿ: 15
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Снова я с TalkBoxForPlayers

Проблема такая, есть рабочий код, он прописан 8 раз для 8 игроков на касание 8 объектов. И тут начинается самый шок.

Для первых 2 функций - работает все идеально.

Для 3-8 функций - не вызывается диалог бокс.

Для этих же 3-8 функций вызывается строка else messagebox....

Сам код:

function pokrov1F(hero)
human = hero
if HasHeroSkill(human, 80)
then
DialogBox("/UI/MessageBox/Message.xdb#xpointer(/Texture)","/UI/MessageBox/TalkBox/text.txt", "/Maps/Multiplayer/arena/pokrov1.txt", 1, "pokrov1otvetF", "/Maps/Multiplayer/arena/pokrov2.txt", "/Maps/Multiplayer/arena/pokrov3.txt", "/Maps/Multiplayer/arena/pokrov4.txt", "/Maps/Multiplayer/arena/pokrov5.txt")
Trigger (OBJECT_TOUCH_TRIGGER, "pokrov1", nil);
else MessageBox("/Maps/Multiplayer/arena/netpokrov.txt");
end;
end;
Trigger (OBJECT_TOUCH_TRIGGER, "pokrov1", "pokrov1F");

function pokrov1otvetF(pl, ans)
if (ans==1)
then
ChangeHeroStat(human, STAT_ATTACK, 3);
elseif (ans==2)
then
ChangeHeroStat(human, STAT_SPELL_POWER, 3);
elseif (ans==3)
then
ChangeHeroStat(human, STAT_KNOWLEDGE, 3);
elseif (ans==4)
then
ChangeHeroStat(human, STAT_LUCK, 2);
end;
end;

Разумеется я меняю параметры для того чтобы работало на разных игроков

Меняю на цифры 2,3 и тд до 8, выделил жёлтым цветом меняемые параметры

Для меня неизвестно где проблема, потому что ВО ВСЕХ функциях реально проверяется наличие перка 80, ведь когда его нет показывается else messagebox, но как так для цифр 1 и 2 работает, а далее нет.

green belly âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3929
Ñòàðûé 13.07.2024, 16:45
  #3929
^
Mîînst@r
📖
Ðåãèñòðàöèÿ: 07.08.2019
Ñîîáùåíèÿ: 461
Ðåãèñòðàöèÿ: 07.08.2019
Ñîîáùåíèÿ: 461
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

green belly, посмотри коммент #3900
Mîînst@r âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3930
Ñòàðûé 13.07.2024, 17:45
  #3930
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 531
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

green belly, мне кажется, вопрос всё-таки не с TalkBoxForPlayers(), а с неработающей проверкой HasHeroSkill(). Попробуйте декомпозировать проблему, например просто за каждого из игроков прописать в консоли @print(HasHeroSkill("имя_соответствующего_героя", 80)) и посмотреть везде ли будет одинаковый результат.
__________________
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

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

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò
Ñòðàíèöà 262 èç 264


Îïöèè òåìû



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


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

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