Помощь - Поиск - Пользователи - Календарь
Полная версия: Плагин графического интерфейса
UoKit.com Форумы > Кликер > UO Pilot > Плагины и доп. ПО
Страницы: 1, 2, 3, 4, 5
Cockney
Так а все, вся функция и есть чтение хмл, ну не считая пары строк, которые я указал.

Я только не пойму, че не так. У меня работает, к цируса(или цайрус, как там) тоже. Только у тебя...
DarkMaster
Дык если не работает в виде пары строк, то эти пару строк и надо смотреть. Смысл ковырять хмл, если проблемы возникают без него?
Cockney
Как я могу понять, что проблема именно в них? Я лишь предположил. Сейчас соберу сборку без тех строк.
DarkMaster
Ну дык если есть шапка без полезного когда, которая должна просто инициализироваться, но она сыпет ошибку, то очевидно, что проблема в шапке, а не в полезном коде.
DarkMaster
закинул 0.3.4.1 на чужой комп вин7 64 - та же самая проблема.
Cockney
Дурдом. Я не знаю, честно. И повторить не получается.
DarkMaster
в обрезке же получилось.
Cockney
Ну, судя по обрезку, получается проблема в пилоте, что сомнительно.
DarkMaster
Учитывая, что плагины на плюсах гарантированно работают и есть образец плагина который тоже должен работать(как минимум работал), то это никак не пилот. В конце концов эта функция должна вернуть просто набор байтов в определенном порядке. В этом плане для отладки артмани хорошо помогает smile.gif Посмотри в хексе, что там идет. Структура то примитивная.
Cockney
Так,если бы что-то не шло - не работало бы вообще. Полнофункциональная версия работает у меня без проблем(и не только у меня,на виндах начиная с хр).Т.е. по идее, код то не виноват. Обрезаная выбивает ошибку,хотя видимых причин нет. Вот и думай, что тут искать. Компилятор сменить если...
DarkMaster
еще тесты:
почти чистая виртуалка вин7 32 - ошибка.
засраная вин7 64 - запустилась.

Клянчу копию виртуалки тебе в доступ, чтобы воспроизвести смог.

Цитата
Т.е. по идее, код то не виноват.

Либо что-то компенсирует. Указатель кривой, например, где-то есть.
Имхо в любом случае надо начинать с создания рабочей шапки, а потом наращивать и смотреть.
Cockney
как можно компенсировать кривые указатели?этож абсурд. Полный плагин работает,а пустая шапка нет. в моем случае. а в твоем...
DarkMaster
Цитата
как можно компенсировать кривые указатели?

Банально перезаписать некорректно выставленный '\0' в начале строки.
Цитата
а в твоем...

ни как он не работает.
Да и не мой он. Уже у 3 человек не запустилось.

Лично мои действия, которые бы я предпринял:
1) Обрезать код до минимального состояния на котором воспроизводится ошибка.
2) Помедетировать на код.
3) Посмотреть артманей структуру.
4) Взять образец плагина, скомпилить, посмотреть работает ли.
5) Взять образец плагина и потихоньку подсовывать куски текущего плагина и смотреть результат.
Хотя, честно сомневаюсь, что ты хуже меня понимаешь возможные шаги.

Кардинал у тебя 4 байта? Вопрос может показаться дебильным, но в с++ int может быть как 4, так и 8 байт, а кардинал это по сути unsigned int. Это кстати в свою очередь привело бы к 0 экспортируемых функций, что может вызвать ошибку.
Cockney
да,4

про некорректный \0. по дефолту этот символ ты не обязан писать нигде. система сама вставит где нужно. в дельфовых строках она ставит его в конец.
DarkMaster
Цитата
ты имеешь ввиду работу со строками?

+
Cockney
изменил свой пост,был не внимателен.


следовательно,если я не ставлю 0 в начало,а я и не ставлю,то все должно быть корректно.
DarkMaster
Виртуалку выдать?
Cockney
Результат или что?
DarkMaster
Виртуалку, где будет еррор воспроизводится. Человек домой минут через 40 придет и сможет дать виртуалку на которой сможешь воспроизвести проблему.
Cockney
Так а на кой мне? Никаких полезных данных я не получу.


Ладно, пошел отдыхать. Завтра еще поломаю голову.
DarkMaster
Ну смотри. Было бы где тестить.
cirus
Проверил на втором компе, плагин работает. На обоих стоит Win7 x64. Пилот 2.36.1.
Cockney
По моему я схожу с ума....


Сегодня имел :

3 ноутбука с виндами 8,8.1,10 соответственно.
1 мак с виртуалкой вин хр
стационар с вин 7 32х
еще один стационар с вин 7 64х

на каждом пересобрал плагин, начиная с пустой шапки и заканчивая полным функционалом. Добавлял все построчно. Абсолютно на всех и абсолютно все сборки работали. Просто запускались и без проблем. И да, сборка с шапкой фейлилась потому что я там выделение памяти под инитструкт затер.
DarkMaster
вот поэтому я и предлагал выделить тебе виртуалку, где ошибка воспроизводилась бы.
Cockney
ты серьезно? ну не может же так быть ,что на стольких машинах работает, а на других нет?это как так?
DarkMaster
Ты думаешь, что я тебе вру что ли? В числе тестеров был zavas, если еще помнишь такого. Его виртуалку тебе и предлагали. Еще из вариантов - обновления винды, но тут очень сложно будет вычислить проблемный патч (имхо проще понять на что ругается и переписать).
Cockney
Нет, не думаю) просто реально на издевку похоже. Дальнейшую беседу предлагаю перенести в лс, дабы не захламлять уж в конец тему.
Cockney
Работа не заброшена) давит учеба. Скоро продолжу работу.
DarkMaster
это гут
cirus
С запуском плагина решился вопрос?
DarkMaster
Да. Мой косяк) В свою оправдание могу лишь сказать, что очень много факторов провоцировало на то, чтобы закинуть хмл в папку с плагинами...
Cockney
Ну, первый, наверно, не лагающий релиз.


-Повысил стабильность работы раз в 40. Теперь плагин как и пилот, в теории, не валятся от неаккуратных действий.
-Добавил параметры в блок <SysInfo>в GUI.xml : <SafeMode>, <Warning>.
<SafeMode> - при отсутствии какого либо параметра или неправильного значения в нем автоматически применяет значение по дефолту.
Если установлено 1, то фича работает, 0 - будет выбивать ошибку при некорректном параметре, при этом прерывая обработку некоторых блоков полностью.
<Warnings> - работает только в сочетании с SafeMode = 1. Выводит предупреждения, о неправильных параметрах.

Перемудрил тут походу.

-Теперь функции при ошибке будут возвращать отрицательные значения. Расшифровка будет скоро.
-Поправил места потенциальных багов, в том числе связанных с возвращаемым результатом от GetAction.


Постарался оформить нормально. Если что не так - напишите.

---------------
В скором времени приведу в порядок описание и справку нормальную(надеюсь) прибью.

Нажмите для просмотра прикрепленного файла или тут.
Cockney
В связи с новой возможностью группировки функций по категориям появилась идея продублировать для каждого элемента все функции, тобиш вместо SetText будет SetButtonText и т.д. Основные плюсы :

1)Все функции элемента в отдельной вкладке.
2)Отпадет нужда указывать тип элемента в параметрах.
3)Специфичные функции для некоторых элементов будут во вкладке этого элемента.

Ну и минусы :

Полная или частичная потеря совместимости со старыми скриптами. Первый вариант - все функции будут переделаны под новый вид, и работать и экспортироваться будут во всех версиях одинаково. Второй вариант - экспортировать разные версии функций для разных пилотов, но это слишком накладно в плане дублирования кода и лишней путаницы. Да и новые функции под старый формат не охота переделывать.

Кто что думает?

Думаю, пока слишком не поздно перейти на новый формат.
cirus
Не вижу проблем для перехода.
Текущую версию плагина оставить без изменений. Те кто пользуются им сейчас,а таких немного судя по скачиваниям и дальше смогут его использовать, чтобы не переписывать скрипты. Пусть и без новых функций.
Новые версии плагина делать по-новому.
DarkMaster
Цитата
Текущую версию плагина оставить без изменений. Те кто пользуются им сейчас,а таких немного судя по скачиваниям и дальше смогут его использовать, чтобы не переписывать скрипты. Пусть и без новых функций.
Новые версии плагина делать по-новому.

+
Cockney
Скорее всего будем переписываться с нуля.
DarkMaster
Причины? Переосмысление?
Cockney
Ага, перфекционист во мне сидит. Да и костылей много. Охота все как надо сделать, а не через...
InG
Ребят, подскажите чо как делать, я даже пример не могу заставить работать, может что не так делаю, пошагово дайте инструкцию как например сделать чтобы по нажатию на кнопку выполнялся "alarm" а дальше я как нить разберусь
cirus
Если архив взят отсюда https://forum.uokit.com/index.php?s=&sh...st&p=220793, то:
Код
set %a GUI.GetAction ()
if %a [1 3] = Старт and %a [1 4] = BUTTON_CLICK   // если сделан один клик по кнопке Старт
     alarm
end_if
wait 100
InG
Цитата(cirus @ 1.12.2016, 3:11) *

Если архив взят отсюда https://forum.uokit.com/index.php?s=&sh...st&p=220793, то:
Код
set %a GUI.GetAction ()
if %a [1 3] = Старт and %a [1 4] = BUTTON_CLICK   // если сделан один клик по кнопке Старт
     alarm
end_if
wait 100


Такс, спасибо большое, работает, а теперь вопросик, что значит [1 3] и [1 4]
Я немного понял, ну типа 1 - айдишник формы, а второе не понимаю наверное кнопка но где это указано и тд
cirus
Цитата
но где это указано и тд

Справки нет. Частично в первом посте написано, но там кое-что менялось, дорабатывалось, что-то может быть не актуально.
Цитата
а второе не понимаю наверное кнопка

Это имя кнопки, указанное в gui.xml
Код
<Name>Button</Name>    
<Caption>Старт</Caption>

Т. е. в %a [1 2] вернёт Button, в %a [1 3] - Старт
GUI.GetAction () возвращает:
Код
1 - Имя формы
2 - Имя контрола
3 - Текст контрола
4 - Описание события

События:
Код
BUTTON_CLICK - Клик по кнопке
BUTTON_DBL_CLICK - Двойной клик по кнопке
TEXT_CLICK - Клик по тексту
EDIT_CHANGE - Если редактируется поле ввода
InG
Цитата(cirus @ 2.12.2016, 3:10) *

Справки нет. Частично в первом посте написано, но там кое-что менялось, дорабатывалось, что-то может быть не актуально.

Это имя кнопки, указанное в gui.xml
Код
<Name>Button</Name>    
<Caption>Старт</Caption>

Т. е. в %a [1 2] вернёт Button, в %a [1 3] - Старт
GUI.GetAction () возвращает:
Код
1 - Имя формы
2 - Имя контрола
3 - Текст контрола
4 - Описание события

События:
Код
BUTTON_CLICK - Клик по кнопке
BUTTON_DBL_CLICK - Двойной клик по кнопке
TEXT_CLICK - Клик по тексту
EDIT_CHANGE - Если редактируется поле ввода


с этим разобрались, спасибо, я вчера эксперементировал и заметил что getaction захватывает только последний активный обжект, кнопка то или чек бокс, нельзя сделать чтобы можно было проверять сразу два едита на наличия правильного лога и пароля?
а то я конечно могу сделать поэапно но это геморно и куча кода лишнего, типа - "Введите логи.. проверка на логин, потом скрытие едита с логином и открытие едита с паролем, если пароль тоже ввели вено то скрытие едита с паролем и вывод кнопки после нажатия на которую открываются кнопки Старт и Стоп и тд" но это уж очень как то некрасиво хд
cirus
Можно просто получить текст из обоих edit.
Код
set $a GUI.GetText (*Edit* *Main* *edit*)      // присвоить переменной текст из edit
set $b GUI.GetText (*Edit* *Main* *edit2*)    // присвоить переменной текст из edit2
hint $a   $b
wait 100
ivanTu
А как к примеру при клики по одной кнопке, изменить visible = другой
cirus
Код
set %a GUI.GetAction ()
if %a [1 3] = Старт and %a [1 4] = BUTTON_CLICK   // если сделан один клик по кнопке Старт
     set $a GUI.Enable (*Button* *Main* *Button2* *0*)        // 0 - выключить, 1 - включить
end_if
wait 100

При нажатии на кнопку Старт кнопка Стоп станет не активна.
ivanTu
Спасибо!

Пытался по этому же принципу скрыть кнопку не получилось...

set %a GUI.GetAction ()
if %a [1 3] = Старт and %a [1 4] = BUTTON_CLICK // если сделан один клик по кнопке Старт
set $a GUI.Visible (*Button* *Main* *Button2* *0*) // 0 - выключить, 1 - включить
end_if
cirus
Цитата
GUI.Visible

Потому что такой команды нет.
ivanTu
То есть, кликнув по одной кнопки, изменить свойство Visible у другой кнопки нет возможности?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.