Current time: 22.11.2024, 20:31 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: 5422
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: 6183
Post: #378

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


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
31.08.2009 18:29
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
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: 6183
Post: #380

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

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


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
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: 6183
Post: #382

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

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

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


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
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: 6183
Post: #384

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

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


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
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: 6183
Post: #386

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

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

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

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


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
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: 6183
Post: #388

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

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

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

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

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

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


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
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: 6183
Post: #390

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

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

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


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
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-2024 MyBB Group