Current time: 15.01.2025, 11:45 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Ваши вопросы по ERM-скриптам
Author Message
Дьякон Offline

Posts: 395
Post: #376

SimpleLod для этого


Страус труп (с) Бьерн
30.08.2009 20:59
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5441
Post: #377

хм.. имейте ввиду,граждане скриптописцы (если не знали)
Команда BH#:C$spell$/0/0/0; имеет такую особенность,что может сбивать вас с толку..
К примеру,есть код
Code:
...
!?MR2;
...
!!MR:F?y3; здесь получим y3=100
...

!?BG0;
...
!!BA-10:H0/?y3; получит к примеру 56
...
!!HE0:C45/0/0/0;
!!HEy3:N?y5;
...
Ну,я привёл тока те строки в коде вашем,которые могут пересечься.
Так вот,после команды !!HE0:C45/0/0/0; переменная y3,содержащая до этого номер героя левой стороны,примет значение =100 (от триггера MR2)..
в итоге вы будете непонимать почему вдруг меняется номер героя в битве в триггере вашем.
Я вот потратил немало нервов,пока не понял что к чему.. Bad
31.08.2009 18:25
Visit this user's website Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #378

Бес, огромное спасибо за инфу! Не знал...


Welcome!
31.08.2009 18:29
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16694
Post: #379

Это частный случай. Мы с Сержем уже сталкивались. При генерации триггера переменные функций не сохраняются, при вызове функции не сохраняются переменные триггеров.

Так что:

Триггер1
Переменна А = А
Вызов Триггера 2
Показать значение А

Триггер2
А = "муть"

Результат: муть.

y-... - триггерные
y... - для функций

Отсюда очень много багов. Мой совет: не использовать триггеры вообще, сразу вызывать функции.

!?...
!!FU...

!?...
!!FU


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
31.08.2009 18:36
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #380

Я тут намедни заметил, что если вызывать !!BG:N?y-1 внутри триггера !?BG1 (а не !?BG0), то он возвращает номер не того монстра, который только что сходил - а номер монстра, который будет ходить следующим...

Кто-нибудь может подтвердить это? Если да - то хелп надо будет поправить...


Welcome!
02.09.2009 20:55
Find all posts by this user Quote this message in a reply
major Offline

Posts: 146
Post: #381

Efrit, да, так и есть. Использую для свойств монстров при передаче хода (типа регенерации троллей).
03.09.2009 22:28
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #382

major, тогда вообще получается, что триггер !?BG1 не имеет никакого отношения к действию монстра - он срабатывает ровно в тот момент, когда монстру передаётся ход (то бишь раньше !?BG0, кстати говоря). И !!BG:A поэтому всегда (?) возвращает 0...

А триггера, который бы срабатывал после действия монстра, в природе не существует Sm

P.S. Хелп точно надо править.


Welcome!
04.09.2009 08:50
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #383

не, это в !?BG0 !!BG:A возвращает 0. а в !?BG1 все нормально.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
04.09.2009 09:42
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #384

Quote:не, это в !?BG0 !!BG:A возвращает 0. а в !?BG1 все нормально.

gamecreator, ты уверен? Sm Ну-ка проверь ещё раз Sm Как она может внутри !?BG1 возвращать не 0, если монстр к тому времени ещё ничего не сделал - и ему даже ещё ничего не приказали сделать? Он даже ещё жёлтым цветом мерцануть как следует не успел Sm


Welcome!
04.09.2009 09:47
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #385

ты меня не путай. !?BG0 - до действия. !?BG1 - после. после действия тип действия известен.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
04.09.2009 14:39
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #386

gamecreator Wrote:ты меня не путай. !?BG0 - до действия. !?BG1 - после. после действия тип действия известен.

Ё-моё. Игродел, ты вообще саму тему читаешь, или только последний пост в ней? Sm

Прочти сообщения 381, 382 и 383. Ещё раз специально повторю - триггер !?BG1 не имеет никакого отношения к действию монстра, а то что написано в хелпе - ошибка. Этот триггер срабатывает в тот момент, когда монстру передаётся ход. Причём срабатывает он раньше, чем !?BG0 (с ним в хелпе всё нормально)...

Не веришь - напиши скрипт Sm


Welcome!
04.09.2009 14:55
Find all posts by this user Quote this message in a reply
Deo Offline

Posts: 494
Post: #387

Делается так: всё необходимое получаем в !?BG0, а !?BG1 срабатывает после удара, в нем мы и используем то что получили в !?BG0.
04.09.2009 15:54
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #388

Кажись, меня все игнорируют, и Део тоже Bad

Део, триггер !?BG1 не срабатывает после удара. После удара может быть ещё много чего интересного - например, ответный удар, каст магии. Но тем не менее, все эти действия идут до триггера !?BG1 - который, в свою очередь, срабатывает только тогда, когда СЛЕДУЮЩЕМУ монстру передаётся ход... (то бишь это уже другой !?BG1, вызванный для другого стека).

Чтобы было понятнее... Игрок нападает, начинается битва. Как только стартует 1 раунд битвы, и стек с самой высокой скоростью (пусть это стек №23) начинает мигать жёлтым цветом (он ещё ничего не сделал, и игрок ещё ничего не приказал делать - просто к этому стеку перешёл ход) - то тут же активируется триггер !?BG1 (именно он, а не !?BG0 !) Команда !!BG:А в этом случае всегда возвращает 0, т.к. монстр ещё ничего не сделал.

Затем игрок приказывает этому монстру что-то делать (например, стрелять) - и тут же срабатывает уже триггер !?BG0, вот тут-то команда !!BG:А уже что-то возвращает (в данном случае 7).

Как только стек 23 выстрелил, право хода передаётся вражескому стеку с самой высокой скоростью - пусть это стек №0. И как только это самое право хода перешло к нему, то для него тут же срабатывает триггер !?BG1, и так далее...

Может, ещё подробнее описать? Sm


Welcome!
04.09.2009 16:43
Find all posts by this user Quote this message in a reply
major Offline

Posts: 146
Post: #389

Efrit, все верно, только посмотри с другой стороны. !?BG0 срабатывает перед действием монстра, с этим сомнений нету. А вот !?BG1 срабатывает именно после действия (вроде не обязательно монстра, каст героя тоже считается), т.е. не после удара, каста и т.д., а именно действия, наверно лучше сказать окончания действия при передаче хода. Просто нужно сделать в хелпе некоторое уточнение.

Efrit Wrote:А триггера, который бы срабатывал после действия монстра, в природе не существует
А вот это действительно была бы нужная вещь.
04.09.2009 18:50
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #390

Quote:А вот !?BG1 срабатывает именно после действия (вроде не обязательно монстра, каст героя тоже считается), т.е. не после удара, каста и т.д., а именно действия, наверно лучше сказать окончания действия при передаче хода.

Вот именно Sm (красным выделено мною). А "окончание действия при передаче хода" - это вообще-то и есть начало нового хода. И !!BG:N?y-1 для этих триггеров будет вызывать разные значения - а это показывает, что эти триггеры уже относятся к разным монстрам. Значит, !?BG0 вызывается именно что позже !?BG1.

Quote:А вот это действительно была бы нужная вещь.
Угу... Если идёт атака - то это ещё куда ни шло (есть !?MF1, так что повреждения можно отменить и потом "выдать" отдельно), а вот если действие иное - то действительно, проблема...


Welcome!
04.09.2009 19:27
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2025 MyBB Group