gamecreator
Posts: 7107
|
|
04.09.2010 23:36 |
|
GhostManSD
Posts: 1054
|
Подскажите, пожалуйста, где ошибка в скрипте. Упорно не хочет работать, а у меня уже башка не варит...
ZVSE
!#VRz799:S^Заблокированный слот^; Изменить название неиспользуемого существа
!#UN:G1/122/0/z799; Установить название неиспользуемого существа
!#UN:G1/122/1/z799; Установить название неиспользуемых существ
!#UN:U34/-1/?y1; Сосчитать количество героев на карте
!#DO79999/1/y1/1&y1>0:P; Запустить цикл для изменения количества существ
!?FU79999; !!UN:U34/-1/x16/1; Запомнить координаты героя !!OBv1/v2/v3:U?v1; !!FU80000:Pv1;
!?FU80000; Функция для изменения навыка "Лидерство" !!FU80001:Px1/x2; Запустить функцию для вычисления возможного количества слотов !!DO80002/0/6/1:Px1/x2; Запустить цикл для вычисления текущего количества слотов !!FU80003:Px1;
!?FU80001; Функция для вычисления возможного количества слотов !!HEx1:S6/?y1; Запомнить текущий уровень навыка "Лидерство" левого героя !!VRv8001:S4 +y1; Установить количество доступных слотов для войск !!HEx2:S6/?y1; Запомнить текущий уровень навыка "Лидерство" правого героя !!VRv8002:S4 +y1; Установить количество доступных слотов для войск
!?FU80002; Функция для вычисления количества уже занятых слотов !!HEx1:C0/x16/?y1/?y2; Запомнить тип существ в слоте и их количество у левого героя !!VRv8003&y1>-1/y2>0:+1; Добавить 1 к числу занятых слотов, если слот занят !!HEx2:C0/x16/?y1/?y2; Запомнить тип существ в слоте и их количество у правого героя !!VRv8004&y1>-1/y2>0:+1; Добавить 1 к числу занятых слотов, если слот занят
!?FU80003; Функция для установки переменной наличия свободных слотов и добавления
; Удалить неиспользуемых существ из слотов !!HEx1&v8001=4:C0/4/122/0; Удалить неиспользуемое существо !!HEx1&v8001=4:C0/5/122/0; Удалить неиспользуемое существо !!HEx1&v8001=4:C0/6/122/0; Удалить неиспользуемое существо !!HEx1&v8001=5:C0/5/122/0; Удалить неиспользуемое существо !!HEx1&v8001=5:C0/6/122/0; Удалить неиспользуемое существо !!HEx1&v8001=6:C0/6/122/0; Удалить неиспользуемое существо
; Добавить неиспользуемых существ в слоты !!HEx1&v8001=4:C0/4/122/1; Добавить неиспользуемое существо !!HEx1&v8001=4:C0/5/122/1; Добавить неиспользуемое существо !!HEx1&v8001=4:C0/6/122/1; Добавить неиспользуемое существо !!HEx1&v8001=5:C0/5/122/1; Добавить неиспользуемое существо !!HEx1&v8001=5:C0/6/122/1; Добавить неиспользуемое существо !!HEx1&v8001=6:C0/6/122/1; Добавить неиспользуемое существо
********************************************************************************
; Лидерство - Окно города
********************************************************************************
!?FU90001; Функция для входа на экран города !!CA-1:H1/?v800; Запомнить номер героя в v800 !!HEv800:B0/?z800; Запомнить имя героя !!FU80000:Pv800;
!?CM1; Триггер при клике в окне замка !!CM:S?y1 F?y2 I?y3 P?y4/?y5/?y6 H?y7/?y8; Запомнить подтип клика, флаг для клика, место клика, позицию в x/y/l и номера героев !!CM&y1=12/y2=0/y3=123:R0; Запретить перемещение героя в гарнизон
; Установить количество доступных слотов !!IF&y2=512/y3>143/y3<147/v8001=4:Q1/20/21/4^{Герой} {%Z800}
{Лидерство:} навык отсутствует
{Доступно:} четыре отряда
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже базового уровня.^; !!CM&y3=144/v8001=4:R0; Запретить пятый слот !!CM&y3=145/v8001=4:R0; Запретить шестой слот !!CM&y3=146/v8001=4:R0; Запретить седьмой слот !!CM&y3=144/v8001=4:R1; Разрешить пятый слот !!CM&y3=145/v8001=4:R1; Разрешить шестой слот !!CM&y3=146/v8001=4:R1; Разрешить седьмой слот !!IF&y2=512/y3>144/y3<147/v8001=5:Q1/20/22/4^{Герой} {%Z800}
{Лидерство:} базовый уровень
{Доступно:} пять отрядов
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже продвинутого уровня.^; !!CM&y3=145/v8001=5:R0; Запретить шестой слот !!CM&y3=146/v8001=5:R0; Запретить седьмой слот !!CM&y3=145/v8001=5:R1; Разрешить шестой слот !!CM&y3=146/v8001=5:R1; Разрешить седьмой слот !!IF&y1=12/y2=0/y3=146/v8001=6:Q1/20/23/4^{Герой} {%Z800}
{Лидерство:} продвинутый уровень
{Доступно:} пять отрядов
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже экспертного уровня.^; !!CM&y3=146/v8001=6:R0; Запретить седьмой слот !!CM&y3=146/v8001=6:R1; Разрешить седьмой слот
********************************************************************************
; Лидерство - Окно героя
********************************************************************************
!?FU77004; Функция для захода в окно героя !!HE-1:N?v800; Запомнить номер героя !!FU80000:Pv800; Запустить функцию для изменения навыка "Лидерство" !!HEv800:B0/?z800; Запомнить имя героя
!?CM2; Триггер при клике в окне героя !!CM:S?y1 F?y2 I?y3 P?y4/?y5/?y6 H?y7/?y8; Запомнить подтип клика, флаг для клика, место клика, позицию в x/y/l и номера героев
; Установить количество доступных слотов !!IF&y2=512/y3>71/y3<75/y7=v800/v8001=4:Q1/20/21/4^{Герой} {%Z800}
{Лидерство:} навык отсутствует
{Доступно:} четыре отряда
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже базового уровня.^; !!CM&y3=72/v8001=4:R0; Запретить пятый слот !!CM&y3=73/v8001=4:R0; Запретить шестой слот !!CM&y3=74/v8001=4:R0; Запретить седьмой слот !!CM&y3=72/v8001=4:R1; Разрешить пятый слот !!CM&y3=73/v8001=4:R1; Разрешить шестой слот !!CM&y3=74/v8001=4:R1; Разрешить седьмой слот !!IF&y2=512/y3>72/y3<75/v8001=5:Q1/20/22/4^{Герой} {%Z800}
{Лидерство:} базовый уровень
{Доступно:} пять отрядов
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже продвинутого уровня.^; !!CM&y3=73/y7=v800/v8001=5:R0; Запретить шестой слот !!CM&y3=74/y7=v800/v8001=5:R0; Запретить седьмой слот !!CM&y3=73/y7=v800/v8001=5:R1; Разрешить шестой слот !!CM&y3=74/y7=v800/v8001=5:R1; Разрешить седьмой слот !!IF&y1=12/y7=v800/y2=0/y3=74/v8001=6:Q1/20/23/4^{Герой} {%Z800}
{Лидерство:} продвинутый уровень
{Доступно:} пять отрядов
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже экспертного уровня.^; !!CM&y3=74/v8001=6:R0; Запретить седьмой слот !!CM&y3=74/v8001=6:R1; Разрешить седьмой слот
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 06.09.2010 02:13 by GhostManSD.)
|
|
06.09.2010 02:12 |
|
GhostManSD
Posts: 1054
|
Bers, в другой функции все работает. Точнее, там я произвожу проверку номера города и, если он равен единице, меняю существ для найма во всех городах такого типа. А если отличен от единицы, то восстанавливаю стандартных существ.
Похоже, проблема где-то в функциях 79999-80003. Потому что триггер не работает ни для функции входа в окно героя, ни для !?PI. А вот где ошибка - понять не могу.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
06.09.2010 11:56 |
|
GhostManSD
Posts: 1054
|
Исправил. Все почти замечательно, однако при сражении компа с кем-нибудь игра вылетает (ну, нет же дефов для этого неиспользуемого монстра). Строки, удаляющие перед битвой у героя неиспользуемых, я добавил, и если я нападаю на компа, то у нас обоих всё отлично. Однако комп постоянно дерзит и тоже норовит подраться, неважно, с кем. Игра, как я и сказал, вылетает. Добавлено:
Как думаете, сильно ли повредит балансу такая вот штука: игроку сделать на ограничение слотов, а компу - нет? Мне кажется, что это усложнит игру (так, у героя без "Лидерства" есть всего 4 слота против 7 комповских), но ведь комп играет так уныло, что в этом может заключаться и спасение...
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 08.09.2010 20:13 by GhostManSD.)
|
|
08.09.2010 19:56 |
|
GhostManSD
Posts: 1054
|
Вот и замечательно. Я рассудил, что более-менее хорошему игроку хватит. А на форуме вроде как совсем плохих нет. Напротив.
Стоит ли приписывать артефакту возможность давать дополнительный стек, или это имба? Самому крутому из артефактов поднятия боевого духа, конечно.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
08.09.2010 20:11 |
|
Berserker
Posts: 16657
|
|
08.09.2010 22:40 |
|
GhostManSD
Posts: 1054
|
Bers, ошибка повторялась назависимо от того, как я меня скрипт. Кроме того, она повторялась не при схватке компа, а при передаче хода. Думал, что проблема в действиях бота, и перепробовал твой вариант. Не прокатило. С самого начала запретил давать боту стеки неиспользуемых существ. Потом - ещё что-то. Проблема не исчезала. В итоге я внимательно посмотрел на адрес ошибки (текст ошибки менялся, а адрес - нет). Там был указан адрес 0x42437D. Ну, я психанул и забил его нулями (точнее, NOP). Ошибки пропали, всё работает отлично.
На всякий пожарный привожу полный текст скрипта.
Code:
!?PI; Пост-инструкция
!!VRz800:S^Заблокированный слот^; Изменить название неиспользуемого существа
!!UN:G1/122/0/z800; Установить название неиспользуемого существа
!!UN:G1/122/1/z800; Установить название неиспользуемых существ
!!DO80000/0/155/1:P; Запустить функцию для добавления заблокированных слотов
!?BA0; Триггер при начале битвы для игрока
!!BA:H0/?y1 H1/?y2; Запомнить номера сражающихся героев
!!FU80001:Py1/y2; Запустить функцию для удаления заблокированных слотов
!?BA1; Триггер в конце битвы для игрока
!!FU80000:P; Запустить функцию для добавления заблокированных слотов
; Необходимые функции
!?FU80000; Функция для пересчитывания количества заблокированных слотов
!!HEx16:S6/?v800; Запомнить текущий уровень навыка "Лидерство"
!!HEx16:C1/122/-1/0; Удалить всех неиспользуемых существ
!!HEx16&v800=0:C0/4/122/1; Добавить неиспользуемое существо
!!HEx16&v800=0:C0/5/122/1; Добавить неиспользуемое существо
!!HEx16&v800=0:C0/6/122/1; Добавить неиспользуемое существо
!!HEx16&v800=1:C0/5/122/1; Добавить неиспользуемое существо
!!HEx16&v800=1:C0/6/122/1; Добавить неиспользуемое существо
!!HEx16&v800=2:C0/6/122/1; Добавить неиспользуемое существо
!?FU80001; Функция для удаления заблокированных слотов на время битвы
!!HEx1:C1/122/-1/0; Удалить всех неиспользуемых существ у левого героя
!!HEx2:C1/122/-1/-; Удалить всех неиспользуемых существ у правого героя
; Лидерство - При повышении уровня
!?FU90002; Функция для повышения уровня
!!DO80000/0/155/1:P; Запустить функцию для добавления заблокированных слотов
; Лидерство - Окно города
!?FU90001; Функция для входа на экран города
!!CA-1:H1/?y1; Запомнить номер героя
!!FU80001:Py1; Запустить функцию для удаления заблокированных слотов
!!DO80000/0/155/1:P; Запустить функцию для добавления заблокированных слотов
!?CM1; Триггер при клике в окне замка
!!CM:S?y1 F?y2 I?y3 P?y4/?y5/?y6 H?y7/?y8; Запомнить подтип клика, флаг для клика, место клика, позицию в x/y/l и номера героев
!!CM&y1=12/y2=0/y3=123:R0; Запретить перемещение героя в гарнизон
!!CA-1:H1/?y7; Запомнить номер героя
!!HEy7:S6/?v801; Запомнить текущий уровень лидерства
!!HEy7:B0/?z801; Запомнить имя героя
; Установить количество доступных слотов
!!IF&y2=512/y3>143/y3<147/v801=0:Q1/20/21/4^{Герой} {%Z801}
{Лидерство:} навык отсутствует
{Доступно:} четыре отряда
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже базового уровня.^;
!!CM&y3=144/v801=0:R0; Запретить пятый слот
!!CM&y3=145/v801=0:R0; Запретить шестой слот
!!CM&y3=146/v801=0:R0; Запретить седьмой слот
!!IF&y2=512/y3>144/y3<147/v801=1:Q1/20/22/4^{Герой} {%Z801}
{Лидерство:} базовый уровень
{Доступно:} пять отрядов
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже продвинутого уровня.^;
!!CM&y3=145/v801=1:R0; Запретить шестой слот
!!CM&y3=146/v801=1:R0; Запретить седьмой слот
!!IF&y2=512/y3=146/v801=2:Q1/20/23/4^{Герой} {%Z801}
{Лидерство:} продвинутый уровень
{Доступно:} пять отрядов
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже экспертного уровня.^;
!!CM&y3=146/v801=2:R0; Запретить седьмой слот
; Лидерство - Окно героя
!?FU77004; Функция для захода в окно героя
!!FU80001:P; Запустить функцию для удаления заблокированных слотов
!!DO80000/0/155/1:P; Запустить функцию для добавления заблокированных слотов
!?CM2; Триггер при клике в окне героя
!!CM:S?y1 F?y2 I?y3 P?y4/?y5/?y6 H?y7/?y8; Запомнить подтип клика, флаг для клика, место клика, позицию в x/y/l и номера героев
!!DO80000/0/155/1:P; Запустить функцию для добавления заблокированных слотов
!!HEy7:S6/?v801; Запомнить текущий уровень лидерства
!!HEy7:B0/?z801; Запомнить имя героя
; Установить количество доступных слотов
!!IF&y2=512/y3>71/y3<75/v801=0:Q1/20/21/4^{Герой} {%Z801}
{Лидерство:} навык отсутствует
{Доступно:} четыре отряда
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже базового уровня.^;
!!CM&y3=72/v801=0:R0; Запретить пятый слот
!!CM&y3=73/v801=0:R0; Запретить шестой слот
!!CM&y3=74/v801=0:R0; Запретить седьмой слот
!!IF&y2=512/y3>72/y3<75/v801=1:Q1/20/22/4^{Герой} {%Z801}
{Лидерство:} базовый уровень
{Доступно:} пять отрядов
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже продвинутого уровня.^;
!!CM&y3=73/v801=1:R0; Запретить шестой слот
!!CM&y3=74/v801=1:R0; Запретить седьмой слот
!!IF&y2=512/y3=74/v801=2:Q1/20/23/4^{Герой} {%Z801}
{Лидерство:} продвинутый уровень
{Доступно:} пять отрядов
Чтобы иметь возможность взять под командование ещё один отряд, необходимо иметь навык "Лидерство" не ниже экспертного уровня.^;
!!CM&y3=74/v801=2:R0; Запретить седьмой слот
А теперь - вопрос про этот адрес.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 08.09.2010 23:52 by GhostManSD.)
|
|
08.09.2010 23:44 |
|
gamecreator
Posts: 7107
|
|
08.09.2010 23:53 |
|
GhostManSD
Posts: 1054
|
Да, я тоже об этом подумал. Но ошибка от этого не пропадает, уже проверял. :-(
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
08.09.2010 23:57 |
|
gamecreator
Posts: 7107
|
|
09.09.2010 00:15 |
|
GhostManSD
Posts: 1054
|
Да. Вылезает ошибка с самым разным текстом (все сторонние и свои скрипты убрал из карты, кроме этого). Текст ошибки меняется постоянно, неизменным остается адрес - 42437D.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
09.09.2010 00:46 |
|
gamecreator
Posts: 7107
|
|
09.09.2010 01:22 |
|
Sav
Posts: 2180
|
А разве можно в принципе ограничить действия компа not used-ами?
|
|
09.09.2010 13:42 |
|