Script.dll + include
Moderators: Murderator+, Murderator
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Если сам чар ещё не вышел из УО - возможно такое, надо дождаться логаута чара, или зайти тем, что открылось в зону, с моментальным логаутом (если такая имеется).
После того как чар оффнется из мира - заходит под нормальным конфигом)
Это баг клиента, он, видимо, грузит конфиг при выборе чара, если выбора нет - использует последний открытый конфиг.
Ибо даже в окошке трэйда при этом глюке ник не чара, которым ты зашёл, а чара, конфиг которого подгрузился)
После того как чар оффнется из мира - заходит под нормальным конфигом)
Это баг клиента, он, видимо, грузит конфиг при выборе чара, если выбора нет - использует последний открытый конфиг.
Ибо даже в окошке трэйда при этом глюке ник не чара, которым ты зашёл, а чара, конфиг которого подгрузился)
Re: Script.dll + include
кстати,
при первом запуске инжекта, если сразу открыть окно "с 2я ячейками" и нажать на скрипт, то будет выдавать ошибку, а если эту же процедуру провернуть в самом окне инжекта в макросах "с 3я ячейками", то запускается хорошо и после этого запускаются скрипты из окна "с 2я ячейками" без ошибки
при первом запуске инжекта, если сразу открыть окно "с 2я ячейками" и нажать на скрипт, то будет выдавать ошибку, а если эту же процедуру провернуть в самом окне инжекта в макросах "с 3я ячейками", то запускается хорошо и после этого запускаются скрипты из окна "с 2я ячейками" без ошибки
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Gromiz wrote:кстати,
при первом запуске инжекта, если сразу открыть окно "с 2я ячейками" и нажать на скрипт, то будет выдавать ошибку, а если эту же процедуру провернуть в самом окне инжекта в макросах "с 3я ячейками", то запускается хорошо и после этого запускаются скрипты из окна "с 2я ячейками" без ошибки
Хмм, какую именно ошибку?
Не найден скрипт? Или чото про Access violation at address ..?
У меня скрипт, загружаемый из другого файла, без замены текущего скрипта - запускался нормально.
Из текущего скрипта - тоже без проблемм.
Re: Script.dll + include
захожу в игру, в нжекте активирую всплывающее окошко, в окошке запускаю любой скрипт из другого файла, выдает:

хотя из основного окна инжекта с 3мя ячейками все запускает сразу и после можно запускать из всплывающего окна.
хотя 825 строка не связана с этими скриптами в целом.
825 строка : Sub Meditation()

хотя из основного окна инжекта с 3мя ячейками все запускает сразу и после можно запускать из всплывающего окна.
хотя 825 строка не связана с этими скриптами в целом.
825 строка : Sub Meditation()
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
825 строка, которая видна при включённой галочке Show.
Все строки, ошибки в которых выдаёт модуль - пока что из окна редактора с включённой Show.
Щас проверю что там не так на счёт запуска)
//add
http://rghost.ru/39376321
Исправил этот глюк.
Теперь всё нормально обрабатывает.
Заодно исправил сохранение файла с макросами, теперь он всегда сохраняется в корневую папку инжи, от куда был запущен модуль, а не куда-то ещё))
Все строки, ошибки в которых выдаёт модуль - пока что из окна редактора с включённой Show.
Щас проверю что там не так на счёт запуска)
//add
http://rghost.ru/39376321
Исправил этот глюк.
Теперь всё нормально обрабатывает.
Заодно исправил сохранение файла с макросами, теперь он всегда сохраняется в корневую папку инжи, от куда был запущен модуль, а не куда-то ещё))
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Опять при клике во всплывающем окошке?
Re: Script.dll + include
нет, теперь сам инжект, правда и скорее всего по вине корявого скрипта, ибо его поправил и все нормально.
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Поправил классики Buffer и FindPath.
В Buffer - только незначительные фиксы.
Конструктор в FindPath теперь объявляется с 3 переменными
PathFind(UOPath,MapIndex,Z)
UOPath - путь к *.mul файлам
MapIndex - индекс карты, для которой вычислять путь (map0/map1/etc...)
Z - координата Z чара, в коде ищет путь по Z +/-20
Думает дольше, но без глобальных глюков)
Пока что не реагирует на игровые предметы УО (заборы, дома, фонари и т.п.), это как нибудь впилю.
Добавил функцию Remain(Val1,Val2).
Возвращает true если есть остаток деления Val1/Val2, false - если делится без остатка.
Добавил аналог PrivateGetTile():
GetTileXYM(X,Y,M,Tile1,Tile2,UOPath)
X - координата X тайла
Y - координата Y тайла
M - карта, на которой происходит действие
Tile1,Tile2 - диапазон от Tile1 до Tile2
UOPath - путь к папке с *.mul файлами
Теперь, при ошибке в скрипте, парсер выдаёт информацию с названием файла, в котором содержится строка с ошибкой, и, соответственно, строку с ошибкой.
Может глючить и указывать на пустые строки, если это произошло - ошибка на последней не пустой строке, перед этими пустыми строками %)
Пофиксил "зависание" Ctrl при макросах Ctrl+S/O/F/G/H. Теперь всё работает как нужно.
*Для дллки с доп. окошком:
Координаты и размеры окна теперь сохраняются и загружаются при старте.
Размеры ячеек изменяются только программно, размер ячейки с номером заметно уменьшился.
Ссылки обновил в 1 посте.
В Buffer - только незначительные фиксы.
Конструктор в FindPath теперь объявляется с 3 переменными
PathFind(UOPath,MapIndex,Z)
UOPath - путь к *.mul файлам
MapIndex - индекс карты, для которой вычислять путь (map0/map1/etc...)
Z - координата Z чара, в коде ищет путь по Z +/-20
Думает дольше, но без глобальных глюков)
Пока что не реагирует на игровые предметы УО (заборы, дома, фонари и т.п.), это как нибудь впилю.
Добавил функцию Remain(Val1,Val2).
Возвращает true если есть остаток деления Val1/Val2, false - если делится без остатка.
Code: Select all
sub RemainTest()
if remain(9,3) then
uo.print('Деление с остатком.')
else
uo.print('Деление без остатка.')
endif
end sub
Добавил аналог PrivateGetTile():
GetTileXYM(X,Y,M,Tile1,Tile2,UOPath)
X - координата X тайла
Y - координата Y тайла
M - карта, на которой происходит действие
Tile1,Tile2 - диапазон от Tile1 до Tile2
UOPath - путь к папке с *.mul файлами
Теперь, при ошибке в скрипте, парсер выдаёт информацию с названием файла, в котором содержится строка с ошибкой, и, соответственно, строку с ошибкой.
Может глючить и указывать на пустые строки, если это произошло - ошибка на последней не пустой строке, перед этими пустыми строками %)
Пофиксил "зависание" Ctrl при макросах Ctrl+S/O/F/G/H. Теперь всё работает как нужно.
*Для дллки с доп. окошком:
Координаты и размеры окна теперь сохраняются и загружаются при старте.
Размеры ячеек изменяются только программно, размер ячейки с номером заметно уменьшился.
Ссылки обновил в 1 посте.
Last edited by Juicy Fruit on 2012-08-27 06:51:49, edited 1 time in total.
Re: Script.dll + include
cool, thnx ^^,


-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Если баг вылезет - пиши сюда или в аську (в модуле указана), может вылезти из-за добавления названий файлов и более корректных строк с ошибками) 2 недели теста - пока что без багов)
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Реализовал поддержку else if в конструкции if else endif.
else if должно записываться только так, записи elseif/elif и т.п. не допустимы.
Регистр не важен.
Теперь громоздкие конструкции типо:
можно записывать как:
Работает это с учётом вложенности циклов, как видно на фрагменте ниже.
Не заморачивался с условиями настоящего синтаксиса, это просто для наглядности учета всех циклов и строк:
Данный фрагмент будет рассматриваться парсером как:
else if должно записываться только так, записи elseif/elif и т.п. не допустимы.
Регистр не важен.
Теперь громоздкие конструкции типо:
Code: Select all
if ... then
else
if ... then
else
...
endif
endif
можно записывать как:
Code: Select all
if ... then
else if ... then
else if ... then
endif
Работает это с учётом вложенности циклов, как видно на фрагменте ниже.
Не заморачивался с условиями настоящего синтаксиса, это просто для наглядности учета всех циклов и строк:
Code: Select all
sub ghd()
if fgh
...
for hg
...
while gg
...
if gf
...
else if h
...
else if h
...
endif
wend
next
else if hg
...
else if gh
for hg
...
while gg
...
if gf
...
repeat
...
if ...
...
else if ???
...
endif
until fff
else if h
else if h
endif
wend
next
else if gh
...
else if gh
...
endif
end sub
Данный фрагмент будет рассматриваться парсером как:
Code: Select all
sub ghd()
if fgh
...
for hg
...
while gg
...
if gf
...
else
if h
...
else
if h
...
endif
endif
endif
wend
next
else
if hg
...
else
if gh
for hg
...
while gg
...
if gf
...
repeat
...
if ...
...
else
if ???
...
endif
endif
until fff
else
if h
else
if h
endif
endif
endif
wend
next
else
if gh
...
else
if gh
...
endif
endif
endif
endif
endif
end sub
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Добавил возможность вызова скрипта с параметрами из хоткеев (или создание нового трида из уже запущенного скрипта)
,exec FunctionName#Params1#...#ParamN
FunctionName - соответственно имя функции;
Params - передаваемые в неё параметры.
Params перечисляются используя разделитель не запятую, а #.
Ограничение по кол-ву параметров - 20.
Параметры строчного типа должны и быть вковычках.
Числовые параметры или имена переменных нужно записывать без ковычек.
Если в строчке необходим пробел - он должен быть заменён на $, ибо в обработку дллкой приходит функция уже без пробелов.
Пример:
Требуется вызвать функцию asd с параметрами: Переменная,Число,Строка
Где-то на просторах скрипта находится:
В окне УО (или забиваем в хоткей) пишем
script.dll обработает этот запрос на вызов функции, создаст временную функцию с названием <FunName>_WithParams(), запустит её и из неё вызовет необходимую функцию
В итоге в систем чате УО имеем:
В списке запущенных скриптов, 10 секунд, будет висеть созданная функция asd_WithParams
///////////////// Добавлено позже.
Теперь диалоги открытия/сохранения скрипта не блокируют доступ к инжекту и окну УО.
///////////////// 29.09.2012
Исправлена ошибка, возникающая при использовании в скриптах else if.
Теперь всё работает так, как и должно)
Обновил ссылки.
,exec FunctionName#Params1#...#ParamN
FunctionName - соответственно имя функции;
Params - передаваемые в неё параметры.
Params перечисляются используя разделитель не запятую, а #.
Ограничение по кол-ву параметров - 20.
Параметры строчного типа должны и быть вковычках.
Числовые параметры или имена переменных нужно записывать без ковычек.
Если в строчке необходим пробел - он должен быть заменён на $, ибо в обработку дллкой приходит функция уже без пробелов.
Пример:
Требуется вызвать функцию asd с параметрами: Переменная,Число,Строка
Где-то на просторах скрипта находится:
Code: Select all
var Param1='Param1_data'
sub asd(a1,a2,a3)
uo.print(a1)
uo.print(str(a2))
uo.print(a3)
wait(10000)
end sub
В окне УО (или забиваем в хоткей) пишем
Code: Select all
,exec asd#Param1#123#'Param3$with$spaces'
script.dll обработает этот запрос на вызов функции, создаст временную функцию с названием <FunName>_WithParams(), запустит её и из неё вызовет необходимую функцию
Code: Select all
sub asd_WithParams()
asd(Param1,123,'Param3 with spaces')
end sub
В итоге в систем чате УО имеем:
Code: Select all
Param1_data
123
Param3 with spaces
В списке запущенных скриптов, 10 секунд, будет висеть созданная функция asd_WithParams
///////////////// Добавлено позже.
Теперь диалоги открытия/сохранения скрипта не блокируют доступ к инжекту и окну УО.
///////////////// 29.09.2012
Исправлена ошибка, возникающая при использовании в скриптах else if.
Теперь всё работает так, как и должно)
Обновил ссылки.
Re: Script.dll + include
вы могли бы реализовать такие вещи, как:
http://agrs.info/asm/filesru.html
Это уже существует?
Благодарю вас за ваше время и усилия!
http://agrs.info/asm/filesru.html
Это уже существует?
Благодарю вас за ваше время и усилия!
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Можно, но толку от этого? Эта дллка нормально работает с АСМ, глюков не возникало) когда время будет и если будет еще актуально – поковыряю)
Re: Script.dll + include
эта модификация никак же не может повлиять на стабильность работы инжекта на высоких клиентах +6...?
может в курсе, можно как-то скрипт проверить на работоспособность?
может в курсе, можно как-то скрипт проверить на работоспособность?
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Gromiz wrote:эта модификация никак же не может повлиять на стабильность работы инжекта на высоких клиентах +6...?
Вообще на 6+ клиентах не играл, но на Olmer'e (там 6+ какой-то клиент) не жаловались на дллку.
Gromiz wrote:может в курсе, можно как-то скрипт проверить на работоспособность?
Всмысле? Запустить и посмотреть как работает, нэ?)
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Добавил функции (по-сути аналог SetGlobal/GetGlobal, только чуть более функциональные) по работе с глобальными переменными:
Индексы позиций от 0 до Size-1
Теперь при возникновении ошибки "Unhandled exception in parser." функция, в которой возникла данная ошибка незамедлительно стирается из списка запущенных функций.
Добавлена проверка на то, запущенна ли функция в данный момент или нет.
Смысл от неё - держать запущенным, помимо основной функции, трид, который проверяет основную функцию на работоспособность, если её нет - перезапускать основной трид (при появлении "Unhandled exception in parser." не особо актуально), закрывать окно УО (лесоруба/минёра/т.п. чтоб не убили во время срыва добычи при "обстоятельствах") или ещё какие-то действия.
P.S. Новое оформление без "окна макро" не выпускаю из-за не актуальности)
Code: Select all
UO.GListSet(String Name, String Value) #Добавить/заменить глобальную переменную
UO.GListGet(String Name) #Получить значение глобальной переменной
UO.GListClear() #Очистить список глобальных переменных
UO.GListSize() #Узнать размер списка (кол-во позиций) глобальных переменных
UO.GListPosName(Number Position) #Получить имя глобальной переменной, которая находится в позиции Position
UO.GListPosValue(Number Position) #Получить значение глобальной переменной, которая находится в позиции Position
Индексы позиций от 0 до Size-1
Теперь при возникновении ошибки "Unhandled exception in parser." функция, в которой возникла данная ошибка незамедлительно стирается из списка запущенных функций.
Добавлена проверка на то, запущенна ли функция в данный момент или нет.
Code: Select all
UO.FunRunning(String Name)
Смысл от неё - держать запущенным, помимо основной функции, трид, который проверяет основную функцию на работоспособность, если её нет - перезапускать основной трид (при появлении "Unhandled exception in parser." не особо актуально), закрывать окно УО (лесоруба/минёра/т.п. чтоб не убили во время срыва добычи при "обстоятельствах") или ещё какие-то действия.
P.S. Новое оформление без "окна макро" не выпускаю из-за не актуальности)
Last edited by Juicy Fruit on 2012-11-10 09:30:38, edited 2 times in total.
Re: Script.dll + include
Как всегда молодец. Но насчет игнорирования ошибки спорно. Ошибка сигнализирует что игра либо запущена не правильно (многоядерный проц) либо ошибка в скрипте. А когда она будет молча закрываться пользователь будет сидеть и тыкать в кнопку.
PS попробуй поискать функцию Pathfind для передвижения. Хотя хз - если за столько лет создатели не раскололись...
PS попробуй поискать функцию Pathfind для передвижения. Хотя хз - если за столько лет создатели не раскололись...
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Script.dll + include
Ошибка осталась, выскакивает когда случсется, только функция, которая вызвала этот еррор удаляется из списка)
На счет функции для перемещения поподробнее, зачем поискать? Путь мое деяние не правильно расчитывает?) Или к чему это?)
На счет функции для перемещения поподробнее, зачем поискать? Путь мое деяние не правильно расчитывает?) Или к чему это?)