It is currently 10 Dec 2018, 09:58

All times are UTC + 2 hours [ DST ]




Post new topic Reply to topic  [ 4 posts ] 
Author Message
PostPosted: 08 Sep 2016, 22:43 
Offline
Руководитель проекта
User avatar

Joined: 31 Jul 2008, 19:08
Posts: 35169
* Данное сообщение является копией сообщения разработчика Juicy Fruit. Оригинал здесь:
Это официальное описание релиза, для того, чтобы перейти к FAQ по установке и часто задаваемым вопросам, перейдите по ссылке.

Версия 1508.09 <--- Injection качать тут

Список изменений:
    - Исправлено зависание скриптов в окошке скриптов.
    - Исправлена ошибка с появлением предупреждения "Creation thread error".
    - Добавлена проверка на нахождение функции в теле скрипта UO.SubExists(SubName).
    - Реализована возможность вызова функции через UO.CallSub(SubName, Params...)
    Может принимать различное количество параметров (минимум 1 - название функции), сканирует тело скрипта на предмет нахождения указанной функции в нем с указанным количеством параметров и выполняет ее в стандартном режиме.
    - Исправлена работа функции UO.FunRunning(SubName), теперь работает правильно и без сбоев.
    - Некоторые корректировки в Script.dll.
    - Исправления в поисковых функциях.
    - Исправлена работа UO.mfgi.
    - Реализован доступ к списку найденного с помощью поисковых фукнций (FindItem/FindList) через UO.FindItem(index). Индексы от 0 до UO.FindCount() - 1.
    - Добавлен спецификатор вызова __runonce#ScriptName. При вызове скрипта с таким спецификатором через хоткеи или через uo.exec('exec __runonce#MyScript') - скриптовый движок проверит, запущена ли функция MyScript в данный момент, если запущена - ничего не произойдет, иначе - запустит скрипт в штатном режиме.
    - Улучшена стабильность инжекта.



Версия 1503.08

Список изменений:
    - Исправлено отображение дистанции до цели при стягивании статуса.
    - Исправлено добавление системных сообщений в журнал (с серийником 0).
    - Добавлены опции для команды _set:
    - corpsetimer - задает таймер (в мс) для очереди трупов для открытия;
    - autoparty - автовыбор действий при приглашении в группу: 1 - принять; 2 - отклонить; другое значение - дать выбор пользователю.
    - Теперь автооткрытие трупов ожидает, когда персонаж приблизится к трупу, стандартное время ожидания 30 сек с момента появления трупа на экране, после чего, труп удаляется из очереди.
    - Добавлена возможность замены текста в Replace по фрагменту текста. Для этого необходимо в начало поисковой строки дописать /*
    - Добавлена функция ClientMarkChar(ActionIndex, Serial), при ActionIndex:
    1 - устанавливает LastTarget клиента на Serial (отображает полоску ХП под чаром);
    2 - устанавливает LastAttack клиента на Serial (подсвечивает персонажа и отображает полоску ХП);
    3 - совместно первые 2 вариации.
    - Вход на шард Xhearon. В лаунчере прописать /xhearon и заиметь UserKeys:
    [Keys]
    Key1=0x2E43ED9D
    Key2=0x2E43ED9D
    Key3=0xA234227F
    SeedKey=0x00001357
    Type=5
    - Вход на шард Naderia. В лаунчере прописать /naderia, шифрование 2.0.3.
    - Вход на шард Nebula. В лаунчере прописать /nebula и заиметь UserKeys:
    [Keys]
    Key1=0x2E43ED9D
    Key2=0x2E43ED9D
    Key3=0xA234227F
    SeedKey=0x00001357
    Type=5
    - Вход на шард Empire UO. В лаунчере прописать /empireuo, шифрование 2.0.3.
    - Исправлены недочеты в работе с магазином.
    - Косметические баги в окнах инжекта.
    - Работа хоткеев, исправлены ошибки по сохранению/загрузке/удалению. Необходимо перезаписать хоткеи с использованием Insert/Home/Delete/End/PgUp/Down/Стрелки.
    - Исправлено отображение элементов в окне Object Types.
    - Исправлена работа massmove, emptycontainer. Выполнение этих функций больше не вешает клиент. Во время выполнения НЕЛЬЗЯ вручную перетаскивать какие-либо предметы до завершения работы функции. Все глюки/краши/потери потерь при несоблюдении этого условия - вина юзера.
    - Добавлена возможность изменять цвет абсолютно всех сообщений от сервера одним цветом (Соответствующая галочка и текстовое окно расположено на главной вкладке инжекта).
    - Исправлена работа функций UseType/UseFromGround.
    - Добавлена возможность поиска/использования гапов по одному из параметров Serial/ID, второй параметр указать как 0.
    - Добавлена возможность скармливать функции Uo.GetDistance различное количество параметров:
    UO.GetDistance(Serial) - стандартный вызов;
    UO.GetDistance(X, Y) - Расстояние от персонажа до заданных координат;
    UO.GetDistance(X1, Y1, X2, Y2) - Расстояние между заданными координатами.
    - Исправлено сохранение значений для LastStatusX, LastStatusY, LastTargetX, LastTargetY.
    - Добавлены функции для работы с вышеперечисленными переменными:
    UO.LastStatusX()
    UO.LastStatusY()
    UO.LastTargetX()
    UO.LastTargetY()
    - Добавлены глобальные переменные работы с журналом:
    UO.GetFoundedTextIndex() - получить индекс строки найденного текста;
    UO.GetFoundedTextSerial() - получить серийник, связанный со строкой текста в журнале;
    UO.GetFoundedTextTimer() - получить время добавления текста в журнал;
    UO.GetFoundedTextColor() - получить цвет.
    - Исправлено игнорирование банка при использовании UseType-подобных комманд.
    - Исправлена работа FPS патча для всех клиентов.
    - Размер игрового окна теперь не изменяется при применении настроек в опциях клиента и сообщение с пожеланиями разработчиков на этот счет не показывается.
    - Добавлена функция UO.Exists(Serial) для проверки наличия в памяти инжекта объекта.
    - Добавлена функция UO.UpdateObject(Serial) для синхронизации координат предмета в памяти инжекта с предметом в памяти клиента (актуально для своего персонажа).
    - Исправлена работа указателя * в элементах заголовка.
    - Изменения/исправления/добавления в Injection.chm.
    - Некоторые корректировки в Script.dll.



Версия 1501.17

Список изменений:
    - Переписаны системы хранения и обработки данных.
    - Переписана и исправлена отрисовка заголовка окна УО.
    - Появилась возможность самому задавать фон заголовка.
    - Исправлена работа Display On/Off.
    - Доабвлена возможность изменять цвет ника персонажа в заголовке. Текущий конфиг необходимо подкорректировать.
    - Добавлена возможность переключения стиля статусбаров в заголовке, командой _set sbgreen 0/1
    - Исправлены проблеммы, которые возникали при чтении/записи конфига.
    - Переписана работа с гампами:
    Для LastGump появились пара новых идентификаторов:
    Code:
    InjID - узнать ИДшник гампа в памяти инжекта (грубо говоря его адрес, можно скармливать его инжекту что бы не было конфликтов с другими гампами, у которых одинаковые Serial и GumpID
    InClient - узнать, отображен ли гамп в клиенте, или был обработан инжектом и ответ отправлен на сервер минуя клиент, либо клиент уже закрыл этот гамп


    Функции по работе с гампами:
    Code:
    UO.GetGumpCount() - получить количество гампов в памяти инжекта
    UO.SelectGump(InjID) - выбрать гамп, с которым будем работать
    UO.GumpExists(InjID) / UO.GumpExists(Serial, GumpID) - проверить, есть ли указанный гамп в памяти
    UO.GetGump(ident [n]) - работа с гампом, аналогично работе с LastGump, но, если первым параметром является InjID то:
       UO.GetGump(ident, GumpIndex) / UO.GetGump(ident, Serial, GumpID) - будут возвращать InjID гампа в строке, либо пустую строку. GumpIndex - порядковый номер гампа от 0 до GumpCount() - 1
    UO.SetGump(ident, id, state) - работа с гампом, который выбрали в UO.SelectGump(), если гамп исчез - ничего не произойдет.
       ident может быть: checkbox, radio, state для этого случая число 0 или 1. Переключает значения чекбоксов и радио-кнопок. Для радио кнопок срабатывает только на 1.
          textentry - для этого случая, state - строка, на которую нужно заменить текст
    И уже давно существующая функция UO.SendGumpSelect(index, ...) - index это номер кнопки, которую нужно нажать.
    Параметры:
    UO.SendGumpSelect(index) - нажать в последнем гампе
    UO.SendGumpSelect(index, gump_index) - нажать в гампе с порядковым номером
    UO.SendGumpSelect(index, serial, gump_id) - нажать в гампе по серийнику и ид
    UO.SendGumpSelect(index, serial = 0, gump_id = 0, InjID) - нажать в гампе по InjID гампа, серийник и ИД гампа могут быть любыми значениями и не используются в этом варианте.


    - Расширена возможность работы с шоплистами. А точнее - с текущими списками покупки/продажи вендоров:
    Добавлены классы: VendorList и VendorReply

    Функции VendorList:
    Code:
    var list = VendorList() - создать лист. Создавать самому его не нужно, для этого есть функция (после описания классов)
    list.Serial() - получить серийник вендора
    list.Count() - получить количество предметов в листе
    list.IsBuyList() - бай/селл лист
    list.InClient() - гамп ушел клиенту или был обработан инжектом, минуя клиент. (пока что работает не как нужно)
    list.ItemSerial(index) - серийник предмета по порядковому номеру (от 0 до list.Count() - 1)
    list.ItemGraphic(index) - тип предмета
    list.ItemColor(index) - цвет предмета
    list.ItemPrice(index) - цена предмета
    list.ItemCount(index) - доступное количество
    list.ItemName(index) - имя предмета


    Функции VendorReply:
    Code:
    var reply = VendorReply(VendorSerial, MaxCount) - создать тело ответа для шоппинга. Принимает параметры: серийник вендора, с которым оперируем и максимальное колчество предметов в ответе (list.Count())
    reply.Count(count) - указать реальное количество предметов в ответе. Задается после формирования списка.
    reply.ItemSerial(index, serial) - задать серийник предмета в указанном порядковом номере (от 0 до MaxCount - 1)
    reply.ItemCount(index, count) - задать количество предметов


    Функции инжекта по работе с магазином:
    Code:
    var list = UO.GetShopList() - получить класс VendorList()
    UO.SendShopReply(VendorReply) - послать заранее сформированный запрос о купле/продаже на сервер


    Пример кода для скупки:
    Code:
    sub testshop()
       var list = uo.GetShopList() #получим доступный лист из инжекта
     
       #тут можно будет сделать всякие проверки list.IsBuyList() и list.InClient() для коррекции
     
       var i, item = '', count = list.Count()
       if count then
          uo.print(str(count)) 
          uo.textclear()
          count = count - 1
          for i = 0 to count #вывод вендор листа в текстовое окошко
             uo.print(str(i)) 
             item = 'serial=' + list.ItemSerial(i) + ' graphic=' + list.ItemGraphic(i)
             item = item + ' color=' + list.ItemColor(i) + ' price=' + str(list.ItemPrice(i))
             item = item + ' count=' + str(list.ItemCount(i)) + ' name=' + list.ItemName(i)
             uo.textprint(item)
          next
          uo.textopen()
          count = count + 1
         
          var reply = VendorReply(list.Serial(), count) #создадим ответ для указанного вендора
          reply.ItemSerial(0, list.ItemSerial(1)) #укажем серийник предмета в позиции 0
          uo.print('send count of items = ' + str(reply.ItemCount(0, 2))) #укажем количество предметов в 0 позиции списка равное 2 (двум)
          reply.Count(1) #Реальное количество предетов в ответе, если известно заранее - можно указатьв  самом начале
          uo.SendShopReply(reply) #отправка запроса на сервер
       endif
    end sub


    Пример скрипта для докупки регов до 50 штук:
    Code:
    sub testshop()
       uo.msg('bye')
       wait(500)
       uo.msg('buy')
       wait(500)
       
       var BuyItemsCount = 8 #Сколько предметов проверяем для докупки
       var BuyDelay = 300 #Задержка для покупки одного итема
       
       dim BuyType[20], BuyColor[20], BuyCount[20]
       
       #Описание предмета 1:
       BuyType[0] = 'bm' #Тип предмета
       BuyColor[0] = 0 #Цвет предмета
       BuyCount[0] = 50 #До какого количества докупаем
       
       #Описание предмета 2:
       BuyType[1] = 'bp'
       BuyColor[1] = 0
       BuyCount[1] = 50
       
       #Описание предмета 3:
       BuyType[2] = 'ga'
       BuyColor[2] = 0
       BuyCount[2] = 50
       
       BuyType[3] = 'gs'
       BuyColor[3] = 0
       BuyCount[3] = 50
       
       BuyType[4] = 'mr'
       BuyColor[4] = 0
       BuyCount[4] = 50
       
       BuyType[5] = 'ns'
       BuyColor[5] = 0
       BuyCount[5] = 50
       
       BuyType[6] = 'sa'
       BuyColor[6] = 0
       BuyCount[6] = 50
       
       BuyType[7] = 'ss'
       BuyColor[7] = 0
       BuyCount[7] = 50
       
       if BuyItemsCount < 1 then
          uo.print('Не указано количество предметов для докупки.')
          return
       endif
       
       var list = uo.GetShopList() #получим доступный лист из инжекта
       
       if not list.IsBuyList() then
          uo.print('Это не байлист.')
          return
       endif
       
       if not list.InClient() then
          uo.print('Этот байлист уже обработан инжектом/клиентом.')
          return
       endif
       
       var i = 0, j = 0, ReplyCount = 0, want = 0, count = list.Count()
       
       if count then
          count = count - 1
         
          var reply = VendorReply(list.Serial(), BuyItemsCount) #создадим ответ для указанного вендора
         
          BuyItemsCount = BuyItemsCount - 1
         
          for i = 0 to count
             for j = 0 to BuyItemsCount
               
                want = BuyCount[j] - uo.Count(BuyType[j], BuyColor[j])
               
                if want > 0 && list.ItemGraphic(i) == uo.GetGraphic(BuyType[j]) then
                   if BuyColor[j] == -1 || list.ItemColor(i) == uo.GetGraphic(BuyColor[j]) then
                     
                      if want > list.ItemCount(i) then
                         want = list.ItemCount(i)
                      endif

                      if want > 0 then #На всякий случай
                         reply.ItemSerial(ReplyCount, list.ItemSerial(i))
                         reply.ItemCount(ReplyCount, want)
                     
                         ReplyCount = ReplyCount + 1
                      endif
                   endif
                endif
             next
          next
         
          if ReplyCount then
             uo.print('ReplyCount = ' + str(ReplyCount) + ' waiting ' + str(BuyDelay * ReplyCount) + ' ms')
             wait(BuyDelay * ReplyCount)
             
             reply.Count(ReplyCount) #Реальное количество предетов в ответе, если известно заранее - можно указатьв  самом начале
             uo.SendShopReply(reply) #отправка запроса на сервер
          else
             uo.print('На вендоре нет доступных предметов для докупки')
          endif
       else
          uo.print('Это пустой байлист')
       endif
    end sub


    - Исправлен учет трейдеров (UO.TradeCount() и прочие).
    - Добавлена возможность задания цветов полоскам во внешнем статусбаре для <33%, 34-66% и >67% значения характеристики.
    - Созданы адекватные интерфейсы для функций ожидания и событий.
    - Equipment (Arm/Dress/Disarm и прочие) переписан полностью и работает адекватно.
    - В лаунчере добавлена возможность сделать мульти-клиент, пока еще нормально не проверил.
    - Возможность самому создавать настройки расположения и названия элементов в окнах инжекта с помощью Injection Forms Designer (в архиве, должен находиться в папке с инжектом, пока что не применим к окну от Script.dll).
    - Все доступные на данный момент функции с возможными принимаемыми параметрами выведены в Injection.chm, для большинства функций описание пока что отсутствует, только параметры.

Данное сообщение является копией сообщения разработчика Juicy Fruit. Оригинал: http://forum.yoko.com.ua/viewtopic.php?f=1&t=17527


Top
 Profile  
 
PostPosted: 27 Apr 2017, 15:15 
Offline
Начинающий игрок

Joined: 27 Apr 2017, 14:59
Posts: 33
Добрый день.Уважаемые коллеги и разраб,подскажите,что может быть?Клиент стартует,входит в игру,но как только пытаешься открыть бэгпэк или любой другой объект вроде сумки или сундучка-клиент зависает.
Винда десятка. Но не думаю что в этом косяк
Спасибо


Top
 Profile  
 
PostPosted: 28 Apr 2017, 20:24 
Offline
Игрок

Joined: 06 Jan 2017, 16:39
Posts: 126
Image

_________________
Scripts writer Yoko Injection


Top
 Profile  
 
PostPosted: 21 Jun 2017, 13:41 
Offline
Новичок

Joined: 20 Jun 2017, 20:49
Posts: 5
А подробнее?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC + 2 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group