You are not logged in.
если не знаешь для чего это, не пиши, что посты тупые
toggle ignore_unknown
А вот сразу сказать что тебе это нужно нельзя было? Это включается там же, и без toggle debug_mode. Не надо горячку пороть >:\
Offline
Просто у меня пишет, что сначала надо включить toggle debug_mode, а потом toggle ignore_unknown, и это я делал через консоль, но уже разобрался. Всё равно спасибо.
SNKillers.net - всё о взломе и защите социальных сетей
Offline
Еще хорошо бы сделать подсветку констант:D
Можно воспользоваться таким приёмом: ставить в начало имени константы какую-нибудь цифру (0-9), например 2const. Тогда константы будут выделяться цветом (таким же, что и числа).
Offline
Доброго времени суток всем, особенно авторам СБ.
У меня вопрос - не вопрос, сообщение о баге - ил нет... короче разъясните нубу в програмировании и скриптиге.
Стоит СА (ну, да, не то, чтобы очень родная и правильная ). Стоит СБ 3.04. Пишу в нем клео скрипт. Поскольку новичок, пишу, компилю, лезу в игру проверять... Если что-то не так, лезу обратно в СБ править... Короче, на какой-то раз лазаний туда-сюда, СБ сбрасывает настройки IF - AND / OR. Это конечно обходится (AND можно последовательно несколько проверок сделать, а OR несколько разных), но как-то это не правильно вроде...
Try not. Do or do not, there is no try.
Offline
Смысла не вижу, но извольте. Это не мой код (это кусок кода из мода CLEO_Windshield_GUI). Довольно простой - рисуем новый интерфейс, в том числе иконки оружия и цифирки патронов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | :WeapAmmoDisplay gosub @GetCurrentWeap if and CURRENT_WEAP > 15 not CURRENT_WEAP == 40 not CURRENT_WEAP > 43 then gosub @GetCurrentWeapAmmo if or CURRENT_WEAP == 16 CURRENT_WEAP == 17 CURRENT_WEAP == 18 CURRENT_WEAP == 35 CURRENT_WEAP == 36 CURRENT_WEAP == 39 then gosub @DrawWeapAmmoOne else gosub @GetCurrentSlot 0A96: 0@ = actor $PLAYER_ACTOR struct 000A: 0@ += 0x5A 0 CURRENT_SLOT *= 0x1C 005A: 0@ += CURRENT_SLOT // (int) 000A: 0@ += 0x 8 0A8D: AMMO_CLIP = read_memory 0@ size 4 virtual_protect 0 // GetAmmoClip 0062: WEAP_AMMO -= AMMO_CLIP // (int) 0085: AMMO_OTH = WEAP_AMMO // (int) gosub @DrawWeapAmmoTwo end end return |
Вопрос в том, что если этот код несколько раз открыть и закрыть в SB указанное в коде "if or" изменится на просто "if" или, что еще хуже на "if and".
Повторюсь, я нуб. Я ничерта в этом не понимаю. Редактирую я напрямую в SB, а не в текстовых файлах, как, возможно, делают опытные кодеры. Я вообще смысла в этих текстовых файлов не понимаю и их удаляю... Может потому он мне параметры и сбрасывает? Если это баг - буду рад, что указал на него. Если нет, буду рад, если объясните, в чем я не прав...
Try not. Do or do not, there is no try.
Offline
Начнём с того, что скомпилированный скрипт (cs-файл) открыть можно только в hex-редакторе, но никак не в Sanny Builder. Если сделать двойной щелчок по значку cs-файла, то он не открывается, а декомпилируется. В результате декомпиляции создаётся текстовый файл, содержимое которого появляется в окне SB.
Не нужно удалять текстовый файл (исходник) после компиляции скрипта (компиляция - создание или перезапись cs-файла с тем же названием, что и исходник). Исходник нужен как раз на случай последующего редактирования кода. Для осуществления редактирования надо открыть текстовый файл в Sanny Builder (команда Файл-Открыть). После внесения изменений производится повторная компиляция скрипта с помощью команды Запуск-Компилировать.
П.С. Даже в случае удаления исходника, содержимое cs-файла самопроизвольно меняться не должно. Так что причину замены if or на if and я не знаю, у меня такого не было.
Last edited by Den_spb (09-03-2011 19:27)
Offline
Ну, примерно понятно. Хотя, я не настолько туп и нуб (стихи прямо), чтоб так подробно мне всё объяснять, но спасибо...
Описываю ещё раз, более подробно. СБ декомпилируя некий скрипт, содержащий проверку с параметром ИЛИ (наоборот, вроде не замечал) без исходного текстового файла, делает это правильно... Более того - очеловечивает код, выдавая на экране вместо цифрового значения слова И или ИЛИ. Компилируя скрипт обратно в машинный код (в процессе работы над скриптом в СБ, возможно, текстовый файл, созданный при декомпиляции удаляется), СБ не видит цифрового значения и считает количество условий с 0 или 1 (соответственно присваивая цифровое значение, что, в итоге, всегда даёт параметр И)... Получается, что СБ компилирует не то, что на экране, а то, что в текстовом файле... Теперь всё ясно.
Маленький оффтоп можно? Объясните мне ещё один нубский вопрос... Вот, я так понимаю, что команда джамп - код туда ушёл и не вернулся, а госаб - ушёл и вернулся... Почему в оригинальном мэйне в некоторых местах (в потоке джанкфуд, например) стоят два джампа подряд? Это криворукость рокстарз? Это остатки от консоли? Или это моё непонимание того, как работает код и эти команды?
П.С. И до кучи: каким опкодом или как ещё в ГТА-СА вывести на экран флоат значение? Координаты, например?
Last edited by Yoda (09-03-2011 22:21)
Try not. Do or do not, there is no try.
Offline
Получается, что СБ компилирует не то, что на экране, а то, что в текстовом файле...
Нет. При компиляции код, который находится на экране, записывается в txt-файл (в том виде, в котором он представлен на экране). На основании этого кода также создаётся "машинный" cs-файл (если cs или txt файлы уже существуют, то они перезаписываются).
Почему в оригинальном мэйне в некоторых местах (в потоке джанкфуд, например) стоят два джампа подряд?
Подобное может быть, например, при компиляции двух вложенных друг в друга циклов с предусловием. Исходный код:
1 2 3 4 5 6 7 | { $CLEO } wait 0 while true while true wait 0 end end |
Что получаем после декомпиляции:
1 2 3 4 5 6 7 | {$CLEO .cs} 0001: wait 0 ms :NONAME_4 0001: wait 0 ms 0002: jump @NONAME_4 0002: jump @NONAME_4 |
Понятно, что второй jump здесь бесполезен (он никогда не будет выполнен), просто высокоуровневые конструкции так компилируются.
каким опкодом или как ещё в ГТА-СА вывести на экран флоат значение?
1 2 | 0@ = 5.27348568 0AD0: show_formatted_text_lowpriority "%.5g" time 5000 0@ |
Last edited by Den_spb (09-03-2011 22:54)
Offline
Благо_дарствую за разъяснения!
Try not. Do or do not, there is no try.
Offline
Сразу 3 предложения.
1) Доработать декомпиляцию скриптов с HEX вставкой, а то приходится из .cs HEX редактором вставки доставать
2) Добавить восстановление высокоуровнего кода
3) Добавить возможность сохранять отладочные опции при перезапуске программы
Offline
При этом и первый пункт выполняется
Offline
Я пишу скрипты для SAMP и не сохраняю код внутри скрипта. Скрипт состоит более чем из 10к строк. Псле переустановки винды (10ку ставил) я забыл сделать бэкап исходного кода последней версии скрипта, при дикомпиляции получаю порядка 40к строк низкооровнего кода с разбитым HEX'ом, испорчеными условиями и к тому же отсутствуют некоторые метки на которые ссылались потоки (скрипт работает почти в 100 потоков)
Offline
Offline