- 262 - HeroesWorld-

:
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

5 - ( ) Heroes of Might and Magic V. .

262 262
 
#3916
28.06.2024, 13:05
  #3916
^
BlueHeavenHero
 
  BlueHeavenHero
📖
: 20.08.2022
: , .
: 425
: 20.08.2022
: , .
: 425
Re:

Привет всем. Спустя долгое время наконец-то я вернулся к работе над картами, ясен-красен кое-что подзабыл, но вопрос не в этом. Очень долго я пытался сделать функцию, которая бы проверяла, на каком "этаже" находится герой - на поверхности или в подземелье. Именно этот параметр, а не общее расположение, ибо мне потом надо будет передать это значение "этажа" в другую функцию. Может кто подсказать, как грамотно сделать такую проверку?
__________________
BlueHeavenHero, 5 Countryballs, . #
BlueHeavenHero, 5 Countryballs, . #
BlueHeavenHero
#3917
28.06.2024, 15:14
  #3917
^
Jack_of_shadows
 
  Jack_of_shadows
📖
: 08.09.2013
: 519
:  -  :    2015-  (  HoMMV) 
: 1
: 08.09.2013
: 519
:  -  :    2015-  (  HoMMV) 
: 1
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
: , .
: 425
: 20.08.2022
: , .
: 425
Re:

Jack_of_shadowsBlueHeavenHero, если написать
local x, y, f = GetObjectPosition(имя_героя);
то f и будет номером этажа.
Не думал, что это может быть так просто. Спасибо, сейчас попробую сделать снова
__________________
BlueHeavenHero, 5 Countryballs, . #
BlueHeavenHero, 5 Countryballs, . #
BlueHeavenHero
#3919
30.06.2024, 09:35
  #3919
^
 
📖
: 24.04.2016
: 223
: 24.04.2016
: 223
Re:

Привет! Такой вопрос: если раскидать свой скрипт по нескольким файлам(вынести в файлы некоторые части кода, которые должны отрабатывать только в определенные моменты), а потом в нужный момент их запускать через doFile, там всё что нужно отрабатывать, и на этом будет окончена считка кода от туда? Просто, интересно разгрузит ли это карту, или же без разницы делить-не делить, а лагги всё равно будут?
__________________

/:

/:

#3920
30.06.2024, 14:18
  #3920
^
Jack_of_shadows
 
  Jack_of_shadows
📖
: 08.09.2013
: 519
:  -  :    2015-  (  HoMMV) 
: 1
: 08.09.2013
: 519
:  -  :    2015-  (  HoMMV) 
: 1
Re:

Я думаю это ничего не изменит, поскольку подгрузка кода интерпретатором это очень быстрая операция. Если же речь о его выполнении (например, настроить какую-нибудь локацию при старте карты или в момент входа в эту локацию), то конечно можно сэкономить, но для этого не обязательно делить на файлы, просто код в функции, которая вызывается в определённый момент.
__________________
- HoMM5:

HoMM5:
- HoMM5:

HoMM5:
Jack_of_shadows
#3921
01.07.2024, 01:18
  #3921
^
green belly
 
  green belly
📖
: 14.06.2024
: 9
: 14.06.2024
: 9
Re:

У меня вопрос, как поменять стоимость забывания навыка в здании ментора?
green belly
#3922
03.07.2024, 01:37
  #3922
^
BlueHeavenHero
 
  BlueHeavenHero
📖
: 20.08.2022
: , .
: 425
: 20.08.2022
: , .
: 425
Re:

BlueHeavenHeroНе думал, что это может быть так просто. Спасибо, сейчас попробую сделать снова
Что-то у меня не получается... Я всё же не понял, как можно передать полученный результат этажа из GetObjectPosition в глобальную переменную(
__________________
BlueHeavenHero, 5 Countryballs, . #
BlueHeavenHero, 5 Countryballs, . #
BlueHeavenHero
#3923
03.07.2024, 01:59
  #3923
^
 
📖
: 24.04.2016
: 223
: 24.04.2016
: 223
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
: 519
:  -  :    2015-  (  HoMMV) 
: 1
: 08.09.2013
: 519
:  -  :    2015-  (  HoMMV) 
: 1
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
: 9
: 14.06.2024
: 9
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
: 223
: 24.04.2016
: 223
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
: 9
: 14.06.2024
: 9
Re:

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


Спасибо, сделал, заработало.
Ранее никаких переменных и аргументов не указывал и не подтягивал
green belly
262 262

« | »




GMT +4, : 12:45.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. ()

     Top.Mail.Ru