Д'якон
09 Oct 2007, 23:30
Мне допустим трудно без самого скрипта понять в чем причина. За остальных не буду говорить (но что-то мне подсказывает, что врядли тебе помогут пока не увидят срипт наглядно).
Добавлено ([mergetime]1191961095[/mergetime]):
Полностью разобрался с системой наложения и снятия магии (черт ногу сломит.
Закрутили так...

). Теперь постараюсь выложить все в скрипт и можно будет снимать конкретно взятый каст с монстра не трогая остальных.
Добавлено ([mergetime]1191961838[/mergetime]):
Также это касается массовой магии и магии накладываемой монстрами.
ShadowTheAge
10 Oct 2007, 00:32
Черт!!! Только что написал скрипт, делающий это же самое! Блин. Давай махнемся?
Мой вот:
Код
см. десятьюмя постами ниже
Д'якон
10 Oct 2007, 05:52
Хм... Как же это называется? Плагиат по-моему. Или в простонародье баян. Я ведь сказал, что не программист и мне гораздо сложнее.
Ну написал - молодец. Вот только чего-то не хватает в твоем скрипте (я его не пробовал. А ты сам то его проверял?). Чесно говоря сомневаюсь в его корректности, по-моему ты забыл про ДЛИТЕЛЬНОСТЬ заклинания, но может я ошибаюсь.
Цербер
10 Oct 2007, 08:32
Попробую написать, что есть ))) Загвоздка в том, что у меня Герои и все к ним на одном компьютере, а интернет на другом ))) Думаю, скоро будет.
Д'якон
10 Oct 2007, 08:58
Чтож. Придется обьяснить общественности твой скрипт и твое поведение.
1. Предпологалось сделать скрипт- мощный инструмент для работы с магией. Например, снятие установленного пользователем заклинания с определенного стэка или установка иммунитета для определенного закла или масса других вещей.
Работа твоего скрипта не совсем понятна. И вряд ли скрипт работоспособен.
Идея основная была в снятии определенного закла, с которым легко работать через длительность данного закла. При снятии закла, длительность также обнуляется, чего не видно в твоем скрипте. Также, если убираемый закл второй по номеру в абилке монстра, то его нужно поставить на первое место, после чего убирать. Если же он первый и последний, то при его удалении, адрес указателя на массив хранения номера закла в абилке монсра обнуляется.
Ничего этого в твоем скрипте я не наблюдаю.
На счет адресов. Сомневаюсь, что они обнаружатся на другом компе. Нужен статический указатель.
2. Написать данный скрипт за час невозможно. По одной простой причине-время на поиск адресов. Конечно если ты не воспользовался моими адресами, что обьясняес отсутствие в скрипте длительности и прочего (т.е. не разбирался).
3. Есть такая фраза -профессиональная этика. Например, в научных кругах, если человек публикует статью научную на определенную тему, то эта тема считается его полем деятельности. И его работа не присваевается.
4. Есть пословица характерезующая твой скрипт: поспешишь -людей насмешишь.
ShadowTheAge
10 Oct 2007, 09:52
2Дьякон.
Я не знал, что ты пишешь такой же скрипт. Поэтому обвиненя в плагиате беспочвенны. Хорошо, я уберу свой вариант.
Во-вторых: Мой скрипт работает по другому! При его помощи нельзя снять заклинания, только обновить список картинок.
То есть заклинание снимается обычным образом, путем установки длительности в 0. Только после этого запускается функция, которая пробегая по всем заклинаниям сама формирует список изображений, которые должны быть отображены при щелчке правой кнопкой.
Скрипт работает 100% проверено.
Я решил написать этот скрипт, поскольку при исследовании монстров наткнулся на нужные адреса.
Насчет пункта 4 - не понял.
Да, и еще. Я хоть и умею программировать, но в ассемблере дуб. Поэтому все делалось без каких-либо программистских навыков, только при помощи ArtMoney.
Да, кстати. Может я плохо смотрел, но ты публиковал свой скрипт? Если да (и раньше моего), то публично приношу извинения. Если нет, то я никак, просто никак не мог сплагиатить.
Д'якон
10 Oct 2007, 10:09
Я публиковал сырье для скрипта. С необходимыми адресами. Ты его даже тестил. Можешь сравнить. Повторюсь, что на других компах твой скрипт может не работать.
Demiurg
10 Oct 2007, 13:51
Имхо, вы, Д'якон и ShadowTheAge могли бы вместе поработать над скриптом и написать универсальный мегаскрипт с нужными возможностями. Я мельком проглядев скрипт Д'якона не нашел всего, что используется в скрипте ShadowTheAge. Скрипт ShadowTheAge полный. В то время как Д'якон сделал только для одного существа и только одну картинку. Критика в данном случае не обоснована. И вообще пора создавать под заклинания, воздействующие на стеки и их картинки новую тему.
Д'якон
10 Oct 2007, 23:14
2 Demiurg
Ты это говоришь не разобравшись. Поэтому прошу удалить в твоем посте свои оценки по данному спору. Т.к. люди не разбирающиеся в ЕРМ могут принять твою сторону как человека авторитетного (что будет архинеправильно). Каждый пусть решает для себя.
2 ShadowTheAge
>Скрипт удален по просьбе Д'якон. Но он был рабочим.
Я об этом не просил тебя ни в одном посте. Поэтому полож обратно скрипт. Люди разберутся, рабочий он или нет.
Мой скрипт. (Я даже не знаю как теперь в этой ситуации правильно, может - мой
вариант скрипта)
Скрипт рабочий, но может слегка корявый. Т.к. писал в спешке в связи с сложившейся ситуацией.
Скрипт снимает любой наложеный закл с любого стэка.
Код
ZVSE
!?BG1; - можно и другой тригер в зависимости от преследуемой цели
!!FU23345:Pх1/х2; x1 - номер стэка, с которого снимается закл; х2 - номер закла
!?FU23345;
!!VRv1234:S0;
!!VRv1235:S0;
!!UN:C6919200/4/?y10;
!!VRy15:Sx1*1352;
!!VRy11:Sy10 +22776 +y15;;
!!UN:Cy11/4/?y1;
!!if&y1>0:;
!!VRy2:Sy11 +32;
!!VRy20:Sx2*4;
!!VRy3:Sy11 -660 +y20;
!!VRy4:Sy11 -664;
!!DO23346/1/20/1:Py1/x2;
!!if&v1234=0:;
!!FU:E;
!!en;
!!if&v1234=>1/v1235>1:;
!!VRy21:Sv1234 -1 *4;
!!VRy7:Sy1 +y21;
!!UN:Cy1/4/?y8;
!!UN:Cy1/4/x2;
!!UN:Cy7/4/y8;
!!VRy1:+4;
!!UN:Cy11/4/y1;
!!en;
!!if&v1234=1/v1235=1:;
!!UN:Cy11/4/0;
!!en;
!!if&v1234>0:;
!!UN:Cy2/4/?y9;
!!UN:Cy3/4/?y12;
!!UN:Cy4/4/?y13;
!!VRy9:-1;
!!VRy12:S0;
!!VRy13:-1;
!!UN:Cy2/4/y9;
!!UN:Cy3/4/y12;
!!UN:Cy4/4/y13;
!!en;
!!VRv1234:S0;
!!VRv1235:S0;
!?FU23346;
!!UN:Cx1/4/?y1;
!!VRy2:+1;
!!if&y1=x2:;
!!VRv1234:Sy2;
!!en;
!!if&y1>0/y1<80;
!!VRv1235:+1;
!!en;
!!VRx1:+4;
ShadowTheAge
11 Oct 2007, 00:54
Хорошо, вот мой:
Код
!?FU12920;
!!BMx1:G165/?y1/dG92/d/0G169/y1/dG-1/0/d;
!!DO12921/0/75/1:Px1/y1;
!?FU12921;
!!BMx1:Gx16/d/?y1G-1/?y2/d;
!!VRy3&y1>0:Sy2*4+x2;
!!UN&y1>0:Cy3/4/x16;
!!BMx1&y1>0:G92/d/d1G169/d4/dG-1/d1/d;
Несколько меньше твоего

Доработал слегка. Уложил в 8 строк, 0 используемых внешних переменных и ни одного глобального обращения по адресу, следовательно, должно работать во всех версиях, начиная с 3.56 (там ввели поддержку !!BM)
Использование: Снимаем заклинания как обычно (устанавливаем длительность в 0), затем вызываем !!FU12920:Px1;, где x1 - номер стека. Функция обновит список картинок статусов.
GrayMage
11 Oct 2007, 01:41
г-н Д'якон не надо необоснованных обвинений. Вам другие люди доказали, что воровства небыло. Почитав тему - я в этом тоже уверился. Спасибо.
Д'якон
11 Oct 2007, 05:54
2 ShadowTheAge
Вот только, если было наложено более одного закла и один из них убрал во время боя, то при начале следующего боя игра вылетает.
З.Ы. А где старый скрипт?
ShadowTheAge
11 Oct 2007, 09:45
2 Д'якон
Действительно, есть такая проблема. Твой, кстати, тоже вылетает.
*ушел думать*
Доработал, больше не вылетает. Спасибо за обнаруженый баг

Кстати, твой скрипт не только вылетает, но еще и криво работает с заклинаниями если их больше трех штук. Попробуй такой код:
!?CM4;
!!BM21:M20/5/1M21/5/1M22/5/1M23/5/1M24/5/1M25/5/1;
!!FU23345:P21/25P21/24P21/23P21/22P21/21P21/20;
И шелкни мышкой правой на поле боя. Вот увидишь - снимется не все.
З.Ы. (Ответ на нижеследующий пост) Твой вылетает даже когда больше одного закла - попробуй скрипт:
!!BM21:M40/5/1M50/5/1M60/5/1;
!!FU23345:P21/40P21/60;
Вылетит.
Д'якон
11 Oct 2007, 10:21
Буду дома разберусь.
DracoLich
11 Oct 2007, 11:26
Предлагаю не спорить, у кого лучше. С нынешними процессорами скорость выполнения команды незаметна. А количество переменных - сугубо личное дело.
sergroj
11 Oct 2007, 17:23
Мне кажется, что где-то там не далеко и до MR:N добраться.
Д'якон
11 Oct 2007, 17:53
Скрипт подправил. По идеи не должен вылетать. А также можно укоротить его в треть и уйти от глобальных переменных (просто писал поспешно)
Цербер
14 Oct 2007, 17:39
Вот два проблемных куска кода.
Код
**Мальвик**
!?OB15/24/0;
!!IF&5:Q501^тут текст, в точности его приводить не обязательно, тут все работает^;
!!HE-1&501:A4/1021; вот здесь мне надо найти номер свитка с Огненным шаром, а по этому коду герой получает Кольцо холода
!!IF:V5/0;
**пьедесталы**
!?OB7/19/0;
!!IF:M^Вы посетили пьедеста Ускорения.^;
!!IF:V20/1;
!?OB32/10/0;
!!IF:M^Вы посетили пьедестал Защиты от огня^;
!!IF:V21/1;
!?OB28/6/0;
!!IF:M^Вы посетили пьедестал Дня Богов^;
!!IF:V22/1;
**перед боем**
!?BA0;
!!VRv25:S0;
!!DO23/0/20/1:P;
!!BA:H0/?v30;
!!HEv30&22:Fd+5/d+5/d+5/d+5;
!?FU23;
!!BMv25&20:M53/99/3;
!!BMv25&21:M31/99/3;
!?BA1;
!!HEv30&22:Fd-5/d-5/d-5/d-5;
Поясняю. В первом случае все видно в комментариях. Во втором - код при посещении первых двух пьедесталов срабатывает, а в начале битвы никакого влияния не оказывает. А третий пьедестал дает бонус в начале битвы, но не убирает его в конце, что, естественно, мне не нужно )))
Помогите пожалуйста, а то я сам нигде явных ошибок не вижу...
DracoLich
14 Oct 2007, 17:54
Цитата
!!HEv30&22:Fd+5/d+5/d+5/d+5;
Попробуй использовать вместо v30 -10 (т.к. тебе нужен атакер)
!!HE-10&22:..
Цитата
!!BMv25&20:M53/99/3;
что за v25? Если используешь в круговой функции, то x16 нужно
Цербер
14 Oct 2007, 19:44
Насчет первого - а оно в !?BA1 работает? С добавлением-то все в порядке, убрать не получается.
Насчет второго: я просто тупо скопировал из вышеуказанной темы все, что мне было нужно. То есть, например, накладывать заклинания на обороняющихся мне не нужно, и накладывать их надо не при наличии артефакта, а после посещения объекта. В оригинале было сделано именно так. Не знаю, может, я чего-то недосписал...
gamecreator
14 Oct 2007, 19:56
Цитата(Цербер @ 14 Oct 2007, 19:44)
Насчет первого - а оно в !?BA1 работает?
оно работает в бою
Цербер
15 Oct 2007, 14:09
Цитата(gamecreator @ 14 Oct 2007, 20:56)
Цитата(Цербер @ 14 Oct 2007, 19:44)
Насчет первого - а оно в !?BA1 работает?
оно работает в бою
Мне-то надо после боя... ))) это еще считается в бою? )))
gamecreator
15 Oct 2007, 18:43
по идее да
Цербер
15 Oct 2007, 18:51
Спасибо всем
Два вопроса:
1) Как отменить действие команды !!OB998:M-1/1/1; (на все диалоги объекта отвечать "да")
Строка !!OB998:M-1/0/1; к сожалению не сбрасывает на дефолтные уствновки

Я просто хочу, чтобы при посещении объекта стандартные диалоги (для этого объекта) "тихо" закрывались, а потом, когда битва в банке завершится, я хочу видеть диалоги... но когда я в триггере ВА1 пытаюсь использовать !!OB998:M-1/0/1; (вроде как вернуть всё на дефолт), то ничего не срабатывает (хотя бонусы даются, типа я ответил "окей")
2) Когда игрок посетит банк (с победой), то для ИИ атоматом игра устанавливает флаг "посещено"? (аналог команды !!CB998:T1)
Или в игре ИИ всё равно не видит что банк пуст (пока сам туда не заглянет)?
gamecreator
17 Oct 2007, 21:33
1)читай хелп: третий параметр - это следующее состояние параметра 2. соотв., для нормального статуса необходимо вызвать М-1/0/0
2)все он видит
1) так вроде если второй установить на "вернуть назад", то третий вроде как и не влияет (я вообще думал ставить d)
спасибо, в общем... буду смотреть
2) вот он зараза... надеюсь вы истину говорите.
DracoLich
18 Oct 2007, 08:37
2) Комп видит ВСЕ, и если он что-либо посещает либо игнорирует, то в большинстве случаев туда можно уже не заглядывать.
Ыгы... пустите ИИ на море... он гад все пустые бревна проигнорит...
gamecreator
18 Oct 2007, 19:41
ии видит все, потому что он слабее.
он что, даже пустых скелетов "видит"? (которые никем не посещались естественно)
Demiurg
18 Oct 2007, 22:41
Имхо, не все так просто. Например, комп любит посещать обсерватории красного дерева. Всевидящему они в принципе не нужны. Доходит до смешного. Если занавес некрополиса пересекается с областью, открываемой обсерваторией, то возможна ситуация, что комп будет в обсерву заходить каждый день.
два вопроса:
- каков предел условий (в справке вроде писалось про 12, но всё же хотса уточнить наверняка)? (для ресивера и триггера, если конено у них это разграничено

)
- есть ли предел для кол-ва параметров на одну запись ресивера?
спасибо!
Demiurg
22 Oct 2007, 20:41
мне казалось, что 16 условий допускается. Точно не знаю.
DracoLich
23 Oct 2007, 12:20
Максимум условий в одном ресейвере - 16. Все, что после, вызывает сообщение об ошибке, условие не учитывается, как будто его и нет.
Насчет предела параметров - неохота проверять, но, думаю, тоже 16. В любом случае, за глаза хватит.
Fatalist
26 Oct 2007, 08:31
Подскажите как давать свои названия объектам и монстрам на карте?
для объектов см. справку по !!OB:H или !!HT:T
для монстров можно как и для объектов через !!OB назначать (тут либо по координатам, либо по типу/подтипу)... или же см. !!UN:G1 (тут уже смотря как вам требуется)
а вообще, для подобных операций вам в помощь спец. прога для начинающих скриптеров (я с неё и начинал) -
ERM Creator © Soul Reaver
gamecreator
26 Oct 2007, 17:00
Перекину сюда чтоб не оффтопить.
Цитата(Fatalist @ 26 Oct 2007, 08:53)
Попробовал скрипт с Плащём из глины. После начала новой недели игра выдаёт несколько синтаксических ошибок и артефакт не даёт земляных элементалей((
ссылку на скрипт
DracoLich
26 Oct 2007, 17:41
Скрипт имеется ввиду из Обучения ЕРМ, первый пост.
Если ты напрямую скопировал, то ошибка в том, что какая-то команда там напечатана русскими буквами. Перепечатай сам.
Блин...
Неужели в ТЕ нельзя настраивать стоимость построек в городе?
Хотя бы городские двеллинги...

PS: до последнего думал что это возможно, а как приспичило так ненашёл
sergroj
27 Oct 2007, 20:33
Или через UN:C. Но результат тот же - изменения каснутся не только твоей карты.
Д'якон
27 Oct 2007, 20:53
Можно конечно сделать типа вог-опции (которая условно постоянно включена) подгружать нужные значения при загрузке карты при помощи !!UN:C, а потом по ходу игры их менять. При этом при загрузке новой карты значения будут востанавливаться.
Но эт немного напряжно.
Скажите, а, случайно, в текстовиках не прописывается стоимость построек в городах?
Если да, то что это за файл?
Только не говорите, что это тоже зашито в ехе-шнике

===
вариант с UN:C звучит заманчиво, только вот одна проблема - я не умею пользоваться "артмани" для нахождения адресов (для меня это не достижимо... удивляюсь просто, как вам это удаётся)
Может кто поможет с адресами то?

(город - Сопряжние)
ЗЫ: это не для карты, а для целого города (причём для эмулятора), посему проблема с восстановлением всего назад отпадает
DracoLich
28 Oct 2007, 07:37
BULDINGS.TXT - цены зданий (в битмап)
Д'якон
28 Oct 2007, 16:35
Вот скрипт, если нужен, для изменения цен двелингов в Конфлюксе.
Код
ZVSE
!#TM1:S1/2/1/1;
!?TM1;
!!DO1/0/6/1:Px1/x2/x3/x4/x5/x6/x7/x8;
!?FU1;
!!VRy1:S0;
!!VRy2:S0;
!!VRy3:S0;
!!VRy1:+x16 *4;
!!VRy2:+28 *x8;
!!VRy3:+y1 +y2 +6988992;
!!VRy2:Sx16 +1;
!!UN:Cy3/4/xy2;
Значит обьясняю.
х1,х2,х3,х4,х5,х6,х7 - цены
х8 - номер двелинга (первый начинается с нуля, а для улучшенных +7)
т.е.
феи - 0
элементы воздуха -1
улуч. феи - 7
Элементы шторма - 8.
Дальше, запустил из под таймера, почему-то !#DO - не прокатило.
И последнее. Благодоря текстовику, когда выходишь из игры полностью, то при новой ее загрузке цены обновляються. Поэтому скрипт должен включаться постоянно либо в виде опции. (В принципе в виде опции я думаю тебе и нужно)
Надеюсь адреса статические (не проверял), если не пашет - подправлю. (Делал под ТЕ)
gamecreator
28 Oct 2007, 16:36
тем более что для эмулятора
это насчет текстовика
Д'якон
28 Oct 2007, 16:42
Если нужны будут остальные строения - можно доделать.
спасибо, Дьякон, за старания.
===
Люди, кто объяснит, что понимается под -1 в настройках таймера?
Т.е. когда пишуть !#TM10:S1/999/1/-1;
Означает ли это, что таймер пройдёт при первом игроке, а потом уже срабатывать не будет (по аналогии с !!TM10&$once$=1)???
Или он всё равно будет срабатывать при каждом новом игроке (пока все мой игрок не переночует) ???
Д'якон
29 Oct 2007, 20:04
Это то же самое, что и 255.
Цитата(ShadowTheAge @ 11 Oct 2007, 00:54)
Хорошо, вот мой:
Код
!?FU12920;
!!BMx1:G165/?y1/dG92/d/0G169/y1/dG-1/0/d;
!!DO12921/0/75/1:Px1/y1;
!?FU12921;
!!BMx1:Gx16/?y1/dG-1/?y2/d;
!!VRy3&y1>0:Sy2*4+x2;
!!UN&y1>0:Cy3/4/x16;
!!BMx1&y1>0:G92/d/d1G169/d4/dG-1/d1/d;
Уложил в 8 строк, 0 используемых внешних переменных и ни одного глобального обращения по адресу, следовательно, должно работать во всех версиях, начиная с 3.56 (там ввели поддержку !!BM)
Использование: Снимаем заклинания как обычно (устанавливаем длительность в 0), затем вызываем !!FU12920:Px1;, где x1 - номер стека. Функция обновит список картинок статусов.
Ваш код имеет один недостаток...
Если на стэках будет закл Корни (или Камень, или Паралич, в общем не стандартные заклы), то их картинки тоже снимаются, хотя действие само сабой остаётся

Не могли бы вы его пофиксить
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.