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 15:27)
Offline
Ну, примерно понятно. Хотя, я не настолько туп и нуб (стихи прямо), чтоб так подробно мне всё объяснять, но спасибо...
Описываю ещё раз, более подробно. СБ декомпилируя некий скрипт, содержащий проверку с параметром ИЛИ (наоборот, вроде не замечал) без исходного текстового файла, делает это правильно... Более того - очеловечивает код, выдавая на экране вместо цифрового значения слова И или ИЛИ. Компилируя скрипт обратно в машинный код (в процессе работы над скриптом в СБ, возможно, текстовый файл, созданный при декомпиляции удаляется), СБ не видит цифрового значения и считает количество условий с 0 или 1 (соответственно присваивая цифровое значение, что, в итоге, всегда даёт параметр И)... Получается, что СБ компилирует не то, что на экране, а то, что в текстовом файле... Теперь всё ясно.
Маленький оффтоп можно? Объясните мне ещё один нубский вопрос... Вот, я так понимаю, что команда джамп - код туда ушёл и не вернулся, а госаб - ушёл и вернулся... Почему в оригинальном мэйне в некоторых местах (в потоке джанкфуд, например) стоят два джампа подряд? Это криворукость рокстарз? Это остатки от консоли? Или это моё непонимание того, как работает код и эти команды?
П.С. И до кучи: каким опкодом или как ещё в ГТА-СА вывести на экран флоат значение? Координаты, например?
Last edited by Yoda (09-03-2011 18: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 18:54)
Offline
Благо_дарствую за разъяснения!
Try not. Do or do not, there is no try.
Offline
Что такое последняя переменная?
Offline
Здравствуйте. Как-то раз писал я код, да и заметил баг компилятора:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | var $DRUGAN_X : array 3 of Float $DRUGAN_Y : array 3 of Float $DRUGAN_Z : array 3 of Float $DRUGAN_PM : array 3 of Marker end $DRUGAN_X [0] = 2202.1089 $DRUGAN_Y [0] = - 1977.2307 $DRUGAN_Z [0] = 13.554 $DRUGAN_X [1] = 2453.4404 $DRUGAN_Y [1] = - 1984.6873 $DRUGAN_Z [1] = 13.554 $DRUGAN_X [2] = 2643.999 $DRUGAN_Y [2] = - 2059.3098 $DRUGAN_Z [2] = 13.554 for 0@ = 0 to 2 step 1 018A: $DRUGAN_PM [ 0@ ] = create_checkpoint_at $DRUGAN_X [ 0@ ] $DRUGAN_Y [ 0@ ] $DRUGAN_Z [ 0@ ] end |
Баг заключается в том, что при выполнении этих строк значение переменной $DRUGAN_Y[0] меняется на значение $DRUGAN_X[2], а $DRUGAN_Z[0] - на $DRUGAN_Y[2]. Я мало что понимаю в серьёзном программировании, но знающий человек подсказал мне, что такое происходит из-за того, что компилятор неправильно выделяет память под массив типа Marker, и поэтому элементы индексируются неверно. Надо отметить, замещение происходит только при своих переменных. Код мейновский, не CLEO.
Я очень надеюсь, что Seemann прислушается к этой проблеме и по возможности исправит досадный баг.
Offline
Я попробовал скомпилировать и декомпилировать обратно этот код и получил следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 0005: $4 = 2202.109 0005: $7 = - 1977.231 0005: $10 = 13.554 0005: $5 = 2453.44 0005: $8 = - 1984.687 0005: $9 = 13.554 0005: $6 = 2643.999 0005: $9 = - 2059.31 0005: $12 = 13.554 0006: 0@ = 0 :NONAME_97 018A: $13 ( 0@ ,3i) = create_checkpoint_at $4 ( 0@ ,3f) $7 ( 0@ ,3f) $10 ( 0@ ,3f) 000A: 0@ += 1 0019: 0@ > 2 004D: jump_if_false @NONAME_97 |
код верный. можешь выложить полный .cs файл, на котором воспроизводится проблема?
Offline
можешь выложить полный .cs файл, на котором воспроизводится проблема?
Я же сказал, что код не CLEO, а мейна, точнее MPack'овского scr.scm.
Offline
Тогда выложи scr.scm) Или можешь выслать мне его в личку.
Offline
Выслал.
Offline
вставку asm .. end. Что бы писать asm вставки без дебагеров, в которых можно подсмотреть байты команд.
Offline
Добавьте очень полезную штуку как проводник ресурсов.
Это очень удобно для создания больших проектов и скриптов!
Стандартная возможность неудобна для восприятия ( Нельзя разложить все по папкам все время нужно открывать файлы фиг знает откуда и при редактировании нужно сохранять файл потом переключаться на главный и компилировать.
Offline
Хотелось бы иметь возможность переобъявлять константы. В данный момент такой код:
1 2 3 4 5 6 7 8 9 10 11 | const MyVar = 0@ end MyVar = 0 const MyVar = 1@ end MyVar = 0 |
компилируется в:
1 2 | 0006: 0@ = 0 0006: 0@ = 0 |
А ведь нужная возможность, особенно для scm-функций.
Offline
А будет релиз новой версии санни билдера и вообще будет ли он развиваться?
Offline
Хотелось бы иметь возможность переобъявлять константы. В данный момент такой код:
1234567891011const
MyVar =
0@
end
MyVar =
0
const
MyVar =
1@
end
MyVar = 0
компилируется в:
120006:
0@
=
0
0006:
0@
= 0
А ведь нужная возможность, особенно для scm-функций.
А можешь привести реальный пример кода, в котором это нужно?
А будет релиз новой версии санни билдера и вообще будет ли он развиваться?
Да, будет. Точные даты, к сожалению, сказать не могу.
Offline
Хотелось бы иметь возможность переобъявлять константы.
Мне кажется, это плохая идея, ведь цель констант как раз в обратном - значения фиксированы.
Я за внедрения проводника в СБ, как упоминалось выше - было бы удобно. А так этого функционала достаточно в СБ.
Offline
Только, если идея проводника всё же будет принята к сведению, хотелось бы также увидеть функцию его отключения в настройках. Потому как во многих случаях он будет просто не нужен, и будет мозолить глаза.
Offline