Sanny builder 3 compiler error

SannyBuilder.com Forums You are not logged in. #1 10-07-2009 15:41 Sanny compile error 014B опкод Можно сказать методом тыка делаю скрипт на респ авто возле дома CJ по учебнику Alexsander’a. Конечно я наверна не правильно постороил скрипт, но вот опкод 014B 014С Санни принимать не хочет и не даёт всё скомпильнуть. Вот такую ошибку […]

Содержание

  1. SannyBuilder.com Forums
  2. #1 10-07-2009 15:41
  3. Sanny compile error 014B опкод
  4. #2 10-07-2009 15:48
  5. Re: Sanny compile error 014B опкод
  6. #3 10-07-2009 15:50
  7. Re: Sanny compile error 014B опкод
  8. #4 10-07-2009 15:54
  9. Re: Sanny compile error 014B опкод
  10. #5 10-07-2009 15:55
  11. Re: Sanny compile error 014B опкод
  12. #6 10-07-2009 15:56
  13. Re: Sanny compile error 014B опкод
  14. #7 10-07-2009 16:06
  15. Re: Sanny compile error 014B опкод
  16. #8 10-07-2009 18:13
  17. Re: Sanny compile error 014B опкод
  18. #9 10-07-2009 18:17
  19. Re: Sanny compile error 014B опкод
  20. #10 10-07-2009 19:51
  21. Re: Sanny compile error 014B опкод
  22. #11 26-07-2009 11:24
  23. Re: Sanny compile error 014B опкод
  24. #12 28-07-2009 08:06
  25. Re: Sanny compile error 014B опкод
  26. #13 19-06-2010 10:37
  27. Re: Sanny compile error 014B опкод
  28. #14 19-06-2010 11:28
  29. Re: Sanny compile error 014B опкод
  30. #15 19-06-2010 12:15
  31. Re: Sanny compile error 014B опкод
  32. #16 23-06-2010 07:35
  33. Re: Sanny compile error 014B опкод
  34. #17 23-06-2010 07:56
  35. Re: Sanny compile error 014B опкод
  36. #18 26-06-2010 02:24
  37. Re: Sanny compile error 014B опкод
  38. #19 26-06-2010 03:21
  39. Re: Sanny compile error 014B опкод
  40. #20 05-01-2011 12:56
  41. Re: Sanny compile error 014B опкод
  42. SannyBuilder.com Forums
  43. #176 26-08-2008 10:00
  44. Re: Вопросы и предложения по Sanny Builder
  45. #177 26-08-2008 11:01
  46. Re: Вопросы и предложения по Sanny Builder
  47. #178 27-08-2008 10:03
  48. Re: Вопросы и предложения по Sanny Builder

You are not logged in.

#1 10-07-2009 15:41

Sanny compile error 014B опкод

Можно сказать методом тыка делаю скрипт на респ авто возле дома CJ по учебнику Alexsander’a.

Конечно я наверна не правильно постороил скрипт, но вот опкод 014B 014С Санни принимать не хочет и не даёт всё скомпильнуть. Вот такую ошибку выдаёт: Not enough actual parameters. Expected 13 params.

Если поставить опкод 013B (он не для транспорта), то Санни компилит.
Что делать? И есть мануал по написанию cleo скриптов от начала до конца? А то все мануалы про main.scm.

Last edited by ThisIsSparta (10-07-2009 16:07)

#2 10-07-2009 15:48

Re: Sanny compile error 014B опкод

:wow: Такого опкода не существует (как мне подсказывает Opcode Search)
А с 014B пишет: «Не достаточно данных. Ожидалось 13 параметров»
Проверь всё и попробуй снова.

————-
Посмотрел картинку, там тебе ясно написанно что необходимо писать на одной строке

————
И совсем забыл. Используй локальные переменные для клео

Last edited by Sw[ee]t (10-07-2009 15:51)

#3 10-07-2009 15:50

Re: Sanny compile error 014B опкод

Во многих скриптах он есть. И по учебнику и по многим сайтам его ставят. вот тут например http://forums.playground.ru/gta_san_and … ng/164511/

А скажи плз каким поиском опкодов пользуешься. (У меня тока опеодник 2.0)

Last edited by ThisIsSparta (10-07-2009 15:52)

#4 10-07-2009 15:54

Re: Sanny compile error 014B опкод

Во многих скриптах он есть. И по учебнику и по многим сайтам его ставят. вот тут например http://forums.playground.ru/gta_san_and … ng/164511/


Будешь спорить?

—————
Я не использую никакой опкодник. Учился здесь, так что пробегись по форуму, почитай темы и надеюсь всё поймёшь

Last edited by Sw[ee]t (10-07-2009 15:55)

#5 10-07-2009 15:55

Re: Sanny compile error 014B опкод

————-
Посмотрел картинку, там тебе ясно написанно что необходимо писать на одной строке

————
И совсем забыл. Используй локальные переменные для клео

спс (я просто за весь день задолбался со скриптами, игру напрочь выбивают большинство).
А локальные переменные это как?

#6 10-07-2009 15:56

Re: Sanny compile error 014B опкод

Глобальные переменные — $Chtonit
Локальные — @1 (Допускается только числовое значение)

#7 10-07-2009 16:06

Re: Sanny compile error 014B опкод

вроде число потом собака 1@ ?

(Строки в скрипте цельные)

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

//————-MAIN—————
0000: NOP
wait 0
014B: 1@ = init_parked_car_generator #URANUS color 8 8 0 alarm 0 door_lock 0 0 40000 at 2488.74 -1670.0 13.34 angle 120.0
014C: set_parked_car_generator 1@ cars_to_generate_to 101
014B: 2@ = init_parked_car_generator #INFERNUS color 8 8 0 alarm 50 door_lock 0 0 40000 at 2479.71 -1671.72 13.4 angle 120.0
014C: set_parked_car_generator 2@ cars_to_generate_to 101
end_thread

X —> Загоужаю сэйв и чар стоит на месте и 0 эмоций. ниодна кнопка кроме Esc не работает. ((

—————————-
+ —> Заменил end_thread на 0A93: end_custom_thread и пошло поехало, чар бегает вышел из дома отъехал далеко приехал и стоит 2 тачик.
Кул.
Sw[ee]t спс

Last edited by ThisIsSparta (10-07-2009 16:23)

#8 10-07-2009 18:13

Re: Sanny compile error 014B опкод

не надо делать генераторы тачек в клео. Ну или на крайняк надо использовать опкод 0A95, чтобы генератор не создавался новый с каждой загрузкой.

#9 10-07-2009 18:17

Re: Sanny compile error 014B опкод

а куда его пихать 0A95: enable_thread_saving?
вместо 0А93?

А еще как добавить разные эффекты . (сразу включеные фары, иммунитет, гидравлику), пробовал разными способами — игра вылетает.
есть эти опкоды
067F: set_car $Car headlights 2
07FF: set_car $car1 hydraulics 0

Last edited by ThisIsSparta (10-07-2009 18:30)

#10 10-07-2009 19:51

Re: Sanny compile error 014B опкод

а куда его пихать 0A95: enable_thread_saving?

В начало кода, после wait 0

А еще как добавить разные эффекты . (сразу включеные фары, иммунитет, гидравлику), пробовал разными способами — игра вылетает.
есть эти опкоды
067F: set_car $Car headlights 2
07FF: set_car $car1 hydraulics 0

Вместо $Car должна быть вписана переменная машины, к которой ты хочешь применить данные действия. Можно, например, записать в переменную машину CJ-я:

Вообще в СБ справке есть пример на эту тему — см. раздел Статьи -> Транспорт

Last edited by Den_spb (10-07-2009 19:54)

#11 26-07-2009 11:24

Re: Sanny compile error 014B опкод

Несколько подсказок:
1) в SB есть русскоязычный интерфейс (см. опции — F10) и русскоязычная справка со множеством полезных статей (большая часть учебника Alexander’а там есть)
2) искать опкоды в SB Ctrl+Alt+2
3) если делать парковки через CLEO не используя опкод 0A95, то после сохранения игры и загрузки сейва, вместо одной парковки будет уже две, потом три, потом четыре и т.д. пока сейв не заглючит. Нужно обязательно использовать 0A95, чтобы скрипт не запускался повторно после сейва (т.е. он один раз отработает, парковка создастся, CLEO запомнит, что скрипт выполнен и завершен и больше не будет его запускать при старте игры).

#12 28-07-2009 08:06

Re: Sanny compile error 014B опкод

Маленькое дополнение:
к машине, созданной опкодом 014b нельзя применять опкоды, используемые с транспортом (сразу включеные фары, иммунитет, гидравлику)- в абсолютном большинстве случаев последует вылет

Поправьте меня если я ошибаюсь
только вежливо :)

#13 19-06-2010 10:37

Re: Sanny compile error 014B опкод

Народ объясните что за дела?

Смотрел на вашем форуме как всё правильно делать. просто скопировал похожий скрипт — компилировал работает, но стоит только изменить модель машины и её координаты — саннибайлдер ожидает 13 параметров(а именно опкод 014B) — объясните что я не так делаю?

#14 19-06-2010 11:28

Re: Sanny compile error 014B опкод

Попробуй запятые убрать после параметров.

#15 19-06-2010 12:15

Re: Sanny compile error 014B опкод

Попробуй запятые убрать после параметров.

Чувак спасибо тебе!-и вправду заработало!

#16 23-06-2010 07:35

Re: Sanny compile error 014B опкод

Народ объясните что за дела?

У меня вопрос по поводу использования переменной для разовости выполнения скрипта — 0A95 недостаточно? и при загрузке игры переменные (особенно локальные) вроде нулевые или в сейвах их значения сохраняются?!

#17 23-06-2010 07:56

Re: Sanny compile error 014B опкод

0A95: enable_thread_saving — этого достаточно, чтоб твой скрипт работал одноразово. Так как он дошёл до 0A93: end_custom_thread, он больше не будет идти сначала, так что эти переменные не имеют значения.

#18 26-06-2010 02:24

Re: Sanny compile error 014B опкод

0A95: enable_thread_saving — этого достаточно, чтоб твой скрипт работал одноразово. Так как он дошёл до 0A93: end_custom_thread, он больше не будет идти сначала, так что эти переменные не имеют значения.

Не понял смысла вашего сообщения, зачем в простом коде по созданию пары машин нужен опкод 0A95:? данная команда нужна для сохранения значения переменных в файл: Доппустим в коде переменная 0@ стала равна 1, так вот это число и будет сохранено и после следующей загрузки игры или ещё чего, где переменные обнуляются, 0@ будет равна 1

#19 26-06-2010 03:21

Re: Sanny compile error 014B опкод

0A95 делает так, что при сохранении игры значения локальных переменных, а также статус скрипта заносятся в сейв. Последнее означает, что если в момент сохранения скрипт уже был завершён командой 0A93, то при последующем запуске этого сохранения данный скрипт не будет запущен в работу.
Если скрипт создаёт объект (или пикап, или парковочный генератор), то при сохранении игры данный объект будет занесён в сейв. При последующем запуске этого сохранения скрипт сработает ещё раз и создаст второй объект в том же месте. Чтобы этого избежать, нужно добавлять в скрипт 0A95 и делать проверку переменной (если скрипт не завершается, а работает по бесконечному циклу).

Last edited by Den_spb (26-06-2010 12:34)

#20 05-01-2011 12:56

Re: Sanny compile error 014B опкод

<$CLEO .cs>
04ED: load_animation «LOWRIDER»

:TEST
wait 0
00D6: if and
04EE: animation «LOWRIDER» loaded
00E1: player 0 pressed_key 0 10
004D: jump_if_false @TEST

:Rap
0605: actor $PLAYER_ACTOR perform_animation_sequence «RAP_A_loop» from_file «LOWRIDER» 4.0 loop 1 0 0 1 -1 ms
04EF: release_animation «LOWRIDER»
0A93: end_custom_thread

:FIN_1
wait 0
00D6: if and
8611: not actor $PLAYER_ACTOR performing_animation «RAP_A_loop»
80E1: not key_pressed 0 10
004D: jump_if_false @FIN_1
0687: clear_actor $PLAYER_ACTOR task
04EF: release_animation «LOWRIDER»
0A93: end_custom_thread

:TEST_0
wait 0
00D6: if and
04EE: animation «LOWRIDER» loaded
00E1: player 0 pressed_key 0 11
004D: jump_if_false @TEST_0

:Rap_0
0605: actor $PLAYER_ACTOR perform_animation_sequence «RAP_B_loop» from_file «LOWRIDER» 4.0 loop 1 0 0 1 -1 ms
04EF: release_animation «LOWRIDER»
0A93: end_custom_thread

:FIN_2
wait 0
00D6: if and
80E1: not key_pressed 0 11
8611: not actor $PLAYER_ACTOR performing_animation «RAP_B_loop»
004D: jump_if_false @FIN_2
0687: clear_actor $PLAYER_ACTOR task
04EF: release_animation «LOWRIDER»
0A93: end_custom_thread

:TEST_1
wait 0
00D6: if and
04EE: animation «LOWRIDER» loaded
00E1: player 0 pressed_key 0 19
004D: jump_if_false @TEST_1

:Rap_1
0605: actor $PLAYER_ACTOR perform_animation_sequence «RAP_C_loop» from_file «LOWRIDER» 4.0 loop 1 0 0 1 -1 ms
04EF: release_animation «LOWRIDER»
0A93: end_custom_thread

:FIN_3
wait 0
00D6: if and
80E1: not key_pressed 0 19
8611: not actor $PLAYER_ACTOR performing_animation «RAP_C_loop»
004D: jump_if_false @FIN_3
0687: clear_actor $PLAYER_ACTOR task
04EF: release_animation «LOWRIDER»
0A93: end_custom_thread

:TEST_R
wait 0
00D6: if and
04EE: animation «LOWRIDER» loaded
if or
00E1: key_pressed 0 10
00E1: key_pressed 0 11
00E1: key_pressed 0 19
004D: jump_if_false @TEST_R
create_thread @RADIO_0_R

:RADIO_0_R
041E: set_radio_station 0
0A93: end_custom_thread

:FIN_4
wait 0
if or
00E1: not key_pressed 0 10
00E1: not key_pressed 0 11
00E1: not key_pressed 0 19
004D: jump_if_false @FIN_4
041E: set_radio_station 12

:TEST_2
wait 0
00D6: if and
04EE: animation «LOWRIDER» loaded
if or
00E1: key_pressed 0 10
00E1: key_pressed 0 11
00E1: key_pressed 0 19
004D: jump_if_false @TEST_2
create_thread @CLOTHES_0

:CLOTHES_0
wait 0
Player.SetClothes($PLAYER_CHAR, «hoodyAblack», «hoodyA», 0) //Torso
Player.SetClothes($PLAYER_CHAR, «flattop», «flattop», 0) //Hair
Player.SetClothes($PLAYER_CHAR, «jeansdenim», «jeans», 0) //Legs
Player.SetClothes($PLAYER_CHAR, «skullyblk», «skullycap», 0) //Head
player.Build($PLAYER_CHAR)
end_thread

Ничего не происходит.
Я ЧУТЬ НЕ СОШЁЛ С УМА. ПОСЛЕ ВСЕГО ЧТО Я ПИСАЛ.

Last edited by BoUnTy_xD (05-01-2011 13:10)

Источник

You are not logged in.

Pages: Previous 1 … 6 7 8 9 10 11 12 Next

#176 26-08-2008 10:00

Re: Вопросы и предложения по Sanny Builder

Неплохо бы для cleo скриптов и миссий локальные переменные именовать, как и глобальные, например:

. Константы всё-таки надо использовать по прямому назначению. Это полезно было бы в cleo-миссиях, например, сейчас так:

недостатки:
1. Если я захочу увеличить число актёров в массиве, то надо перелопачивать всё объявление переменных и констант
2. Невозможно обратиться так: TestObj.Create(. )
3. Не всегда очевидна нумерация (как в случае со строками и массивами)
4. Нельзя обратиться так: 0@[25] = 1.
В миссиях, где используется 1024+2 переменные, ошибиться будет очень легко

если именовать напрямую, то этих недостатков не будет:

Насчёт быстродействия: так это будет только в Cleo скриптах.

#177 26-08-2008 11:01

Re: Вопросы и предложения по Sanny Builder

Насчёт быстродействия: так это будет только в Cleo скриптах.

Мну кажетсо это надо сделать не тока для клео-скриптов.
Еще хорошо бы сделать подсветку констант:D
мечтательно расплылся на столе как Пёс из бременских музыкантов.

#178 27-08-2008 10:03

Re: Вопросы и предложения по Sanny Builder

Заметил серьёзную ошибку: если сохранить (Сохранить как. ) скрипт в формате HTML, затем открыть исходный (txt) файл, то выскочит эта ошибка:

Sanny Builder3 — compiler error
Неверное выражение .
Одна из переменных имеет неизвестный тип, либо их типы несовместимы.

Лучше бы экспорт в HTML и RTF был отдельным пунктом меню (Экспорт. ).
P.S.

2 Seemann

2Sanchez
угу, санник 3-й версии уже умеет такое.

А во второй добавить это можно? Или скоро выйде 3 версия .

Источник

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .cs}

//————-MAIN—————
thread ‘WANTSVD’

:WANTSVD_11
wait 0
if
Player.Defined($PLAYER_CHAR)
else_ju9mp @WANTSVD_11
wait 0
if
not Actor.Driving($PLAYER_ACTOR)
else_j9ump @WANTSVD_11
wait 0
if and
00E1: player 0 pressed_key 18
00E1: player 0 pressed_key 16
else_j9ump @WANTSVD_11
j9ump @WANTSVD_85

:WANTSVD_85
wait 100
Model.Load(#M4)
Model.Load(#MINIGUN)
Model.Load(#MP5LNG)
Model.Load(#FAM2)
038B: load_requested_models

:WANTSVD_98
wait 0
if
Model.Available(#M4)
Model.Available(#MINIGUN)
Model.Available(#MP5LNG)
Model.Available(#FAM2)
else_j9ump @WANTSVD_98
j9ump @WANTSVD_129

:WANTSVD_129
wait 100
04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 3.0 0.0
wait 10
5@ = Actor.Create(Gang2, #FAM2, 1@, 2@, 3@)
Actor.Health(5@) = 410
Actor.SetImmunities(5@, 0, 0, 0, 0, 0)
Actor.WeaponAccuracy(5@) = 100
01B2: give_actor 5@ weapon 38 ammo 520 // Load the weapon model before using this
01B2: give_actor 5@ weapon 29 ammo 520 // Load the weapon model before using this
01B2: give_actor 5@ weapon 31 ammo 9999 // Load the weapon model before using this
07FE: set_actor 5@ fighting_style_to 6 7
0850: AS_actor 5@ follow_actor $PLAYER_ACTOR
0631: put_actor 5@ in_group $PLAYER_GROUP
077A: set_actor 5@ acquaintance 4 to_actors_pedtype 9 // see ped.dat
0568: set_actor 5@ targetable 1
wait 1000
Model.Destroy(#M4)
Model.Destroy(#MINIGUN)
Model.Destroy(#MP5LNG)
Model.Destroy(#FAM2)
wait 0
03C0: 33@ = actor $PLAYER_ACTOR car
if
Actor.InCar(5@, 33@)
else_j9ump @WANTSVD_351
01B2: give_actor 5@ weapon 38 ammo 9999 // Load the weapon model before using this
wait 0
j9ump @WANTSVD_351

:WANTSVD_351
wait 0
if and
00E1: player 0 pressed_key 18
00E1: player 0 pressed_key 16
else_j9ump @WANTSVD_404
wait 100
Actor.DestroyInstantly(5@)
Actor.RemoveReferences(5@)
wait 1000
j9ump @WANTSVD_11

:WANTSVD_404
wait 0
if or
Actor.Dead($PLAYER_ACTOR)
Actor.Dead(5@)
else_j9ump @WANTSVD_351
wait 5000
Actor.RemoveReferences(5@)
wait 1000
j9ump @WANTSVD_11

как обешал

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

Sanny Builder

Sanny Builder 3
Текущая версия: 3.13
Разработчик: Seemann
Платформа: GTA 3, GTA VC, GTA SA,
GTA LCS, GTA VCS
Тип: редактор скриптов
Сайт: http://sannybuilder.com

Sanny Builder – это быстрая и мощная программа для редактирования скриптов трехмерной серии GTA (GTA3, VC, SA; частично LCS и VCS).
Включает в себя дизассемблер, позволяющий пользователю быстро декомпилировать main.scm с игровыми скриптами. Автор и разработчик Sanny Builder – Seemann.

Спустя 5 лет после выхода последней версии Sanny Builder 3.04, Seemann выложил версию 3.05, где добавилась поддержка новых языков перевода (финский, польский, венгерский, украинский, турецкий) и библиотеки CLEO 4.1.1.30f. Более подробно историю версий программы читайте в статье Sanny Builder (история версий).

Содержание

  • 1 Возможности программы
    • 1.1 Основные возможности
    • 1.2 Возможности среды программирования
      • 1.2.1 Подсветка синтаксиса
      • 1.2.2 Быстрый переход по тексту
      • 1.2.3 Быстрый переход по меткам
      • 1.2.4 Показ различной информации о текущем опкоде
      • 1.2.5 Подбор опкодов
      • 1.2.6 Чтение координат и угла разворота игрока
      • 1.2.7 Поддержка макросов
      • 1.2.8 Замена номеров миссий на их имена
      • 1.2.9 Многоязычный интерфейс
      • 1.2.10 Различные режимы редактирования
      • 1.2.11 Меню внешних приложений
      • 1.2.12 Комментирование кода
      • 1.2.13 Собственные имена для меток
  • 2 Опции программы
    • 2.1 Общие настройки
    • 2.2 Форматирование
    • 2.3 Редактор
    • 2.4 Подсветка
  • 3 Консоль
  • 4 Горячие клавиши
  • 5 Поиск опкодов
  • 6 Ссылки

Возможности программы

Основные возможности

  • Поддержка всех игр трехмерной серии GTA, кроме GTA 4. Позволяет декомпилировать и компилировать скрипты для GTA3, GTA VC и GTA SA. Скриптовый формат GTA LCS и GTA VCS поддерживается лишь частично: Sanny Builder поможет только декомпилировать скрипты этих игр;
  • В Sanny Builder встроен самый быстрый компилятор среди аналогичных программ;
  • Представляет собой удобную интегрированную среду разработки с подсветкой кода;
  • Содержит детальную справку, включающую описания и пути разрешения различных run-time ошибок.
Игра Декомпиляция Компиляция
Gta3.png GTA III да да
Vc.png GTA VC да да
Sa.png GTA SA да да
Lcs.png GTA LCS да нет
Vcs.png GTA VCS да нет

Возможности среды программирования

Sanny Builder как среда программирования предоставляет пользователю следующие возможности:

Подсветка синтаксиса

Есть возможность раскрашивать в любые цвета параметры опкодов, комментарии, ключевые слова. Набор ключевых слов содержится в файлах keywords.txt и keywords.ini.

Быстрый переход по тексту

Для этого есть два способа:

  1. Установить на нужной строке маркер комбинацией клавиш Ctrl + Shift + <0..9>, а затем быстро перейти к этой строке комбинацией Ctrl + <0..9>. Удалить все маркеры можно через меню Правка -> Удалить закладки
  2. Через опцию Перейти.... Она вызывается комбинацией Ctrl+G. Вводите порядковый номер нужной строки, и редактор быстро переместит Вас к ней.

Быстрый переход по меткам

Для этого установите курсор на какой-либо метке, например [color=green]@MyLabel[/color]. Нажмите Ctrl+Num2 и редактор переместит курсор к строке с этой меткой ([color=green]:MyLabel[/color]). Вернуться обратно можно нажатием Ctrl+Num8. Также можно исследовать переходы (jumps). Для этого установите курсор на метку (например, [color=green]@MyLabel[/color]) и нажмите Ctrl+Num4 для перехода на строку с другим переходом на эту же метку, находящуюся выше. Или Ctrl+Num6 на переход, находящийся ниже. Если больше таких переходов нет, то позиция курсора меняться не будет.

Показ различной информации о текущем опкоде

Сейчас реализован вывод количества параметров опкода и, если курсор находится над именем модели, цифрового значения модели (только для моделей из IDE — файлов и только когда определена директория San Andreas).

Конвертирование исходников из SAMB

В текущей версии поддерживается формат SAMB 0.33.
Для конвертации откройте файл в Sanny Builder и выберите пункт меню Сервис->Конвертация->MB->SB.

Также можно конвертировать отдельный, выделенный участок кода.

Внимание: при конвертировании используется файл MB.ini, в котором содержатся текстовые имена переменных и значения адресов памяти. Если Вы добавляли свои переменные в файл variables.ini в SAMB 0.33, используйте его (переименовав в файл MB.ini).

Подбор опкодов

Напишите часть опкода (например fade) и нажмите F1. Программа из файла opcodes.txt выберет первую строку с этим словом.

0169: set_fade_color 0 0 0

Если Вам нужен другой опкод с этим словом, нажмите F1 нужное количество раз.
Вы можете составить свой список опкодов из текущего исходника через опцию Сервис->Построить opcodes.txt.

Чтение координат и угла разворота игрока

Нажмите Ctrl+Alt+1, когда запущен SA, и появится окно менеджера.
Здесь вы можете установить новые координаты и угол разворота и скопировать текущие.
В верхнем поле ввода вы можете указать сразу 3 координаты, разделив их пробелом или «,».
Также вы можете быстро вставить координаты игрока в текст комбинацией Ctrl+Shift+C. Вставка угла разворота (z_angle) в текст производится нажатием Ctrl+Shift+E.

Поддержка макросов

Иногда скриптеру необходимо писать одни и те же строки кода, например для загрузки моделей. Чтобы сократить время написания такого кода, вы можете вызвать специальный макрос, который вставит в редактор нужный код. Для этого напишите ключевое слово, соответствующее этому макросу, например load и нажмите F2. В редакторе появится код

#.Load
 
while not #.Available
wait 0
end

Вам останется только написать нужное имя модели в качестве параметра.

Список используемых макросов содержится в файле 'macroes.txt'.
Используется следующий синтаксис:

Имя макроса (ключевое слово) пишется обычной строкой. На этой же строке можно добавить краткое описание макроса. Для этого достаточно поставить знак = (равно), а после добавить описание. Поддерживаются только однострочные описания.

После строки с именем записывается содержимое макроса, каждая строка обозначается символом =. Место, куда должен быть помещен курсор после вставки обозначается символом |.

В ходе работы можно вызвать список макросов комбинацией Ctrl+J.

Также можно добавить свой макрос в файл 'macroes.txt' прямо из редактора. Для этого достаточно выделить нужный кусок текста и выбрать меню «Сервис->Добавить макрос«. В появившемся диалоговом окне вы должны ввести имя нового макроса (вместе или без описания) и нажать кнопку OK. Новый макрос будет сразу же готов к использованию.

Также существует возможность создавать свои собственные макросы в ходе работы. По сути редактор будет запоминать нажатия любых клавиш и потом вопроизводить их в том же порядке.
Например, у вас есть код:

$Actor = Actor.Create(CivMale, #MALE01, 100.0, 100.0, 10.0)
$ActorWithGun = Actor.Create(CivMale, #MALE01, 110.0, 100.0, 20.0)
$Gang01 = Actor.Create(CivMale, #MALE01, 120.0, 100.0, 30.0)
$Gang02 = Actor.Create(CivMale, #MALE01, 130.0, 100.0, 40.0)
$Killer = Actor.Create(CivMale, #MALE01, 140.0, 100.0, 50.0)
$ActorWithoutGun = Actor.Create(CivMale, #MALE01, 150.0, 100.0, 60.0)

Допустим, Вам нужно обменять имена актеров в кажой паре (поставить вместо [color=blue]$Actor $ActorWithGun[/color], а вместо [color=blue]$ActorWithGun[/color] — [color=blue]$Actor[/color] и т.д.) Путем записи макроса можно сократить время написания такого кода.

Поставьте курсор на первую строку и нажмите Ctrl+M. С этого момента редактор запоминает все нажатия клавиш, так что будьте осторожны.

  1. Зажмите Ctrl и нажмите один раз стрелку вправо. Ctrl нужен так как строки разной длины.
  2. Теперь нажмите Shift+Home и Ctrl+Ins.
  3. Нажмите стрелку вниз. Вы должны оказаться на второй строке, при этом глобальная переменная будет в буфере обмена.
  4. Нажмите Ctrl+стрелка вправо и Shift+Ins.
  5. Нажмите Ctrl+стрелка влево, Shift+Home, Ctrl+Ins и кнопку Delete
  6. Нажмите стрелку вверх
  7. Нажмите Ctrl+Shift+стрелка вправо и Shift+Ins
  8. Нажмите кнопку Home.

Теперь первые две строки выглядят как

$ActorWithGun = Actor.Create(CivMale, 100.0, 100.0, 10.0)
$Actor = Actor.Create(CivMale, 110.0, 100.0, 20.0)

курсор стоит в начале первой строки. Теперь нажмите Ctrl+M

Макрос записан. Теперь вы можете воспроизводить нажатия клавиш комбинацией Ctrl+P. Установите курсор на 3-ю строку, нажмите Ctrl+P и имена актеров поменяются местами.

Во время записи макроса можно включить паузу нажатием Ctrl+P. Продолжить запись — Ctrl+P.

Замена номеров миссий на их имена

Sanny Builder допускает использовать вместо номера миссии ее имя. Именем миссии явялется имя ее метки, которая определена в блоке DEFINE MISSION.

Например, если у вас есть

DEFINE MISSION 10 AT @MYMISSION

то вы можете использовать вместо

В SB добавлена опция Заменять номера миссий. Когда она включена, декомпилятор автоматически заменяет все номера миссий в коде на их имена. На компилятор эта опция не влияет, он поддерживает оба варианта.

Эта опция дает возможность безболезненно удалять миссии, не заботясь о переименовывании всех последующих номеров в коде. Все что нужно, это изменить блок DEFINE MISSION.

Для дополнительного удобства в строке start_mission можно вызвать список имен миссий и их номеров нажатием Ctrl+[space].

Также можно быстро перейти с имени миссии на нее саму. Переход осуществляется так же, как и переход на метку

Многоязычный интерфейс

Начиная с версии 2.98 Sanny Builder поддерживает различные варианты перевода интерфейса и сообщений. В стандартной комплектации доступны русскоязычный и англоязычный варианты. Переключить язык можно через опции (F10).

Информация по созданию своего перевода содержится в файле 'langHow to translate.txt'

Различные режимы редактирования

Sanny Builder может редактировать скрипты игр GTA3, GTA VC, GTA SA. Текущий режим отображается в нижнем правом углу программы.

Переключить режимы редактирования можно через контекстное меню, которое появляется при клике по названию текущего режима.

Меню внешних приложений

Вы можете добавить в меню Инструменты до 9 внешних приложений, которые будут запускаться когда они вам понадобятся. Каждому приложению можно присвоить комбинацию горячих клавиш и ряд параметров, необходимых для запуска.

В качестве параметра запускаемого приложения может использоваться специальное слово: $SB_FileName. Оно обозначает имя текущего открытого файла и может быть передано во внешнее приложение.

Комментирование кода

Комментарии обозначаются в коде двойным слешем [color=navy]//[/color]
Все, что идет после данного знака до конца строки, игнорируется компилятором.

Для того чтобы закомментировать несколько строк сразу либо только часть строки (например в середине или начале) вы можете использовать блочные комментарии [color=navy]{}[/color]

0001: wait {это и�норируется} 0 ms

Также вы можете закомментировать несколько строк выделив их и нажав Ctrl+Q Для раскоментирования выделите текст и нажмите Ctrl+Q еще раз.

Собственные имена для меток

Вы можете давать меткам собственные имена, которые не будут зависеть от опций декомпилятора. Перечень имен содержится в файле CustomLabels.ini (отдельный для каждой игры). Формат записи следующий:

<label address>=<custom name>

Если декомпилятор встретит метку по данному адресу, он заменит ее на указанное имя.

Узнать адрес метки можно включив в опциях формат меток "Смещение от начала". После декомпиляции файла, число после слова Label и будет адресом метки.

Опции программы

Опции программы вызываются нажатием кнопки F10. Вы увидите окно, поделенное на 4 части, каждая из которых содержит определенный вид настроек. По умолчанию открывается страница общих настроек.

Общие настройки

SB-1.png

Данная страница содержит в основном настройки (де)компилятора.

SB-2.png

Работа программы требует использования определенных файлов игры, поэтому вы должны указать корректный путь к папке, куда была установлена игра. Вы можете ввести адрес вручную или выбрать папку через диалог, появляющийся при нажатии кнопки.

SB-3.png

Для корректной работы программы ей требуется INI-файл, со списком опкодов. В данном поле вы можете указать путь к данному файлу. При нажатии на кнопку появится диалог выбора файла.

SB-4.png

В правой части находится список доступных языков для интерфейса программы. Сами переводы находится в папке lang. Для установки нового языка интерфейса, выберите его в списке.

Информация о создании новых переводов содержится в файле How to translate.txt в папке lang.

SB-5.png

Для удобства работы с SCM-файлами вы можете ассоциировать их с Sanny Builder’ом.

Когда галочка выбрана, в реестр Windows будут внесены необходимые изменения, и теперь при клике по файлу с расширением .scm будет автоматически запускаться декомпилятор SB. Для того чтобы прекратить ассоциацию, уберите галочку.

SB-6.png

Общий список опций (де)компилятора. В левом столбце находятся опции, сопутствующие процессу работы программы, в правом — конкретные варианты (де)компиляции.

[U]Перезапись выходного файла[/U]

При выборе данной опции декомпилятор будет записывать данные в выходной файл, независимо от того, существует он уже или нет. Если опция не выбрана, то при условии существования выходного текстового с таким именем, декомпилятор не будет его перезаписывать, а создаст новый файл, добавив к нему индекс (например, main[0].txt).

[U]Показывать прогресс[/U]

При выборе данной опции в процессе работы (де)компилятора в статусбаре будет отображаться текущий прогресс. В противном случае в статусбаре будут слова «Пожалуйста ждите…». Показ прогресса немного замедляет процесс (де)компиляции.

[U]Показывать отчет[/U]

При выборе данной опции Sanny Builder будет показывать различную информацию об итогах проделанной декомпиляции либо компиляции.

[U]Показывать предупреждение[/U]

Данная опция имеет значение только при компиляции скриптов San Andreas. Если игра запущена ко время компиляции, то файл script.img, содержащий часть скриптов не сможет быть перезаписан, поскольку игра использует данный файл. Компилятор покажет об этом предупреждение. Вы можете отключить его показ, выбрав данную опцию.

[U]Ручной выбор IMG-файла[/U]

При декомпиляции программа ищет файл script.img, содержащий часть игровых скриптов. Если файл не будет найден в одной папке с .scm-файлом или в папке игры, то будет показана ошибка. Однако при выборе данной опции вы сможете указать IMG-файл вручную.

[U]Быстрая загрузка игры[/U]

Sanny Builder способен пропускать начальные заставки при запуске San Andreas (F8). Если данная возможность вызывает ошибку в вашей версии игры, отключите данную опцию.

[U]Проверка условий[/U]

Данная опция имеет 2 значения. При декомпиляции с включенной данной опцией программа будет заменять количество условий в опкоде IF на слова AND и OR. При компиляции программа будет способна компилировать конструкции IF..END, а также определять параметр для опкода IF в условиях со словами AND и OR.

[U]Проверка локальных переменных[/U]

Количество используемых локальных переменных имеет свои лимиты. При включении данной опции компилятор будет проверять правильность их использования.

[U]Использовать опкоды[/U]

Данная опция превращает декомпилятор Sanny Builder из высокоуровневого в низкоуровневый и наоборот. При ее выключении декомпилятор будет использовать доступные классы и кейворды, заменяя ими опкоды. Также не будут записываться опкоды для некоторых простых математических выражений. При включении данной опции все опкоды будут записываться в исходник.

[U]Заменять номера миссий[/U]

При включении данной опции декомпилятор будет заменять номера миссий в опкоде start_mission 0 на ее имя. Например, start_mission INITIAL. Имя миссии определяется по имени метки в заголовке файла. Его также можно использовать для быстрого перехода к телу миссии.

[U]Вставлять оригинальные имена миссий[/U]

Когда данная опция включена, декомпилятор добавляет заранее определенные имена миссий как комментарии к опкоду start_mission, а также к строке DEFINE MISSION в заголовке файла.

[U]Добавлять дополнительную информацию в SCM.[/U]

При включении данной опции компилятор будет записывать определенную информацию в конец файла main.scm. Эта информация будет потом использоваться при декомпиляции файла для максимального соответствия оригинальному скомпилированному файлу. В конец main.scm записываются позиции конструкций hex..end, имена использованных глобальных переменных и т. п. Обратите внимание, что файл, скомпилированный таким образом нельзя будет декомпилировать в старых версиях SB (кроме случая включения опции ignore_unknown).

См. так же «Кодинг в Sanny Builder 3».

Форматирование

SB-7.png

На данной вкладке вы можете настроить имена исходника, форматы меток, регистры идентификаторов.

SB-8.png

Здесь вы можете выбрать как будут называться файлы, получаемые после (де)компиляции. В верхнем поле вы указываете путь и имя текстового файла, в который записывается содержимое декомпилируемого файла. В нижних двух – пути и имена бинарных файлов SCM и IMG, содержащих скомпилированные скрипты. Все поля имеют общий синтаксис. Специальными словами обозначатся часть имени декомпилируемого SCM-файла (для верхнего поля), либо исходного текстового файла (для нижних двух полей).

$dir – путь к указанному файлу

$name – имя файла

$ext – его расширение

$game – папка игры // game path

$sb – папка Sanny Builder // Sanny Builder path

Например, если вы декомпилируете файл C:MyDirmain.scm, то

$dir = C:MyDir;

$name = main

$ext — .scm

Тогда при задании маски $dir$name.txt декомпилированный исходник получит имя C:MyDirmain.txt (это будет отображаться в строке под одним из 3-х полей).

SB-9.png

В этой части страницы вы можете выбрать как будут именоваться метки при декомпиляции scm-файла.

Смещение от начала файла: все метки будут иметь числовое имя, например [color=green]@12345[/color]. Цифра после знака @ будет означать позицию данной метки в декомпилируемом файле.

Имя потока+смещение от его начала: все метки будут иметь имя потока, в котором они находятся (определяется по опкоду name_thread) плюс дополнительно смещение от начала потока. Например, [color=green]@MAIN_12[/color]

Имя потока+смещение от начала файла: данный вариант похож на предыдущий, только после имени потока в метке будет записано ее позиция в файле (как в первом случае). Например, [color=green]@HELP_34567[/color].

Если вы хотите, чтобы смещения в именах меток были указаны в 16-чном формате, поставьте галочку в соответствующем поле внизу. По умолчанию смещения записываются в десятеричном формате.

SB-10.png

Здесь вы можете выбрать будет ли декомпилятор использовать имена отдельных элементов скрипта, определенные пользователем в соответствующих файлах.

Имена меток содержатся в файле CustomLabels.ini в папке data<игра>. Файл представляет собой список имен меток и их смещений от начала файла. Если данная галочка поставлена, декомпилятор, в случае соответствия позиции метки в файле одной из позиций в данном списке, назовет метку как указано в списке. Содержимое файла CustomLabels.ini содержит смещения для оригинального файла main.scm версии 1.0

Имена переменных содержатся в файле CustomVariables.ini для каждой игры. Файл представляет собой список оригинальных числовых имен переменных (DMA) и их текстовые эквиваленты. При включении данной опции декомпилятор будет называть переменные указанными именами.

Имена массивов содержатся в файле CustomArrays.ini. Формат файла следующий: первым числом на строке стоит оригинальное имя переменной – начало массива, затем через пробел количество элементов в массиве – размер, затем текстовое имя. Данная опция предназначена для того, чтобы декомпилятор заменял некоторые идущие подряд глобальные переменные на индексированные переменные.

SB-11.png

Эта опция имеет 2 назначения. Декомпилятор, используя данную опцию, будет именовать глобальные переменные, метки, массивы в указанном регистре букв. Компилятор будет записывать строковые значения в SCM также в указанном регистре.

Редактор

SB-12.png

На данной странице вы можете изменить настройки IDE

SB-13.png

Данные списки устанавливают цвета различных элементов окна редактора.
Активная строка – цвет строки, на которой стоит курсор.
Отступ – цвет левого края редактора.
Поле редактора – фон текста в редакторе.

SB-14.png

Значение глубины просмотра используется при построении списка миссий, меток, переменных и т.п. по нажатию Ctrl+[space]. Число означает количество просматриваемых строк вверх и вниз от той строки, где был вызван список. Если вы поставите число 0, программа будет искать указанные элементы по всему скрипту.

Также вы можете регулировать автоматическое появление списка. При поставленной галочке, список будет автоматически появляться после набора символа @, $, # и т.д.

SB-15.png

Здесь представлены основные опции редактора.

Показывать главную панель – вы можете показать/спрятать панель с кнопками в главном окне редактора.

Показывать информацию об опкодах – при выборе данной опции редактор будет отображать с статусбаре отдельную информацию об опкоде на текущей строке: число параметров, имя опкода в классе, номер модели, тип переменной и т. д.

Показывать номера строк – в левом отступе появятся номера строк.

Показывать границу отступа – при выборе этой опции левый отступ будет ограничен с правой стороны. Отключите данную опцию, если вы хотите визуально увеличить пространство редактора.

Открывать при запуске последний файл – при выборе данной опции программа при запуске будет открывать последний закрытый файл, если таковой имеется.

Открывать все закрытые файлы – вы можете открывать разом все закрытые файлы при запуске. Данная опция может быть выбрана только при включенной опции Открывать при запуске последний файл.

Подтверждать выход – при закрытии программы вы должны будете подтвердить выход. Полезно для предупреждения случайного закрытия программы.

SB-16.png

Здесь вы можете выбрать шрифт и его настройки для редактора. Sanny Builder поддерживает только пропорциональные шрифты. Строка AaBbCcDd отражает текущие настройки.

Подсветка

SB-17.png

На данной вкладке вы можете выбрать варианты подсветки синтаксиса в окне редактора.
Каждый элемент кода имеет 3 свойства: Цвет, Фон, Стиль.

Доступны 3 элемента стиля: Bполужирный, Iкурсив, U – [U]подчеркнутый[/U].

Выбранный вариант подсветки используется также при сохранении кода в формат RTF или HTML.

Элементы кода:

Комментарии – текст, находящийся за двойным слешем [color-navy]//[/color] либо между фигурными скобками [color-navy]{}[/color].

Метки – идентификаторы, начинающиеся с символа [color=green]@[/color].

Переменные — – идентификаторы, начинающиеся с символа [color=blue]$[/color] (глобальные), а также заканчивающиеся символом [color=blue]@[/color] (локальные). Также к переменным приравнивается тип aDMA (начинается c [color=blue]&[/color]) и массивы.

Кейворды – специальные слова, записанные в файле keywords.ini (общий для всех) и <codekeywords.txt (свой для каждой игры).

Числа – целые и дробные числа.

Строки – текст между символами [color=red]“…”[/color] и [color=red]‘…’[/color].

Модели — идентификаторы, начинающиеся с символа [color=brown]#[/color].

Классы – часть класса, идентификатор стоящий перед знаком точки.

Команды — часть класса, идентификатор стоящий после знака точки.

Директивы – идентификаторы, заключенные в фигурные скобки и начинающиеся с [color=green]$[/color]

Консоль

Назначение консоли в Sanny Builder’е – переключение особых опций программы (в первую очередь (де)компилятора). Консоль вызывается нажатием Ctrl + ~. В поле ввода внизу вы можете писать команды и параметры. После набора команды нажмите Enter. Результат работы будет отображаться в поле консоли.

Команды нечувствительны к регистру, поэтому вы можете набирать их в любом удобном регистре букв.

Список поддерживаемых команд:

help – при вводе команды help откроется окно справки о командах консоли.

clear – очищает поле консоли

list – команда list выводит в консоли список всех поддерживаемых команд.

Дополнительный параметр:
list options – при наборе слов list options в консоли появится список всех возможных опций для переключения. См. команду toggle.

toggle – основная команда для переключения опций программы.

Дополнительный параметр:
toggle <имя опции> [on/off]
Список опций может меняться в разных версиях. Для получения всех возможных опций наберите list options.

После имени опции может стоять либо слово ON (тогда опция будет включена), либо слово OFF (опция будет выключена), либо ничего (тогда опция будет переключена на другое состояние – с ON на OFF или наоборот).

Игра Декомпиляция
toggle CODE_OFFSETS при включении этой опции декомпилятор будет печатать оффсеты для каждого опкода.
toggle VAR_COUNTER при включении данной опции после компиляции исходника в поле консоли будет выведен список глобальных переменных, которые использовались в коде только раз. Очень полезно при поиске ненужных переменных.
toggle IGNORE_UNKNOWN при включении это опции декомпилятор будет пропускать весь неизвестный ему код. Это поможет декомпилировать поврежденные или защищенные scm-файлы.
toggle CONSTANT_INDEXES декомпилятор будет записывать идущие подряд глобальные переменные как массив, используя числовые константы. Например

Было Стало
[color=blue]$10[/color] [color=blue]$10[/color][0]
[color=blue]$11[/color] [color=blue]$11[/color][1]
[color=blue]$12[/color] [color=blue]$12[/color][2]

По умолчанию данная опция включена.

toggle SKIP_SCM_HEADER Будет пропущено чтение заголовка scm-файла. Это поможет декомпилировать внешние скрипты из файла script.img Компилятор не будет писать заголовок для компилируемого файла.

Аналогом использования данной опции является директива $EXTERNAL.

Более быстрый и простой способ переключать данные опции — использовать меню, выпадающее после нажатия на кнопку ‘Отладочные опции’ на панели инструментов.

Вы также можете устанавливать все опции разом при запуске программы. Для этого используется ключ debug. Параметром ключа является число, значения битов которого определяют включена опция или нет.

Для правильного указания параметра запустите Калькулятор Windows, переключите его сначала на инженерный, а затем на двоичный режим (F8). Напишите последовательность нулей и единиц, обозначающих состояние той или иной опции в соответствии с таблицей ниже. Счет идет справа налево.

Например, двоичное число 10 (или 2 в десятичном формате) выключит опцию code offsets и включит ignore_unknown. Таким образом при запуске Sanny Builder с ключом debug=2 будет такой же эффект, как если бы активировали указанные опции через консоль.

# Sanny Builder Option # Sanny Builder Option
0 toggle code offsets 16
1 toggle ignore_unknown 17
2 toggle var_counter 18
3 toggle constant_indexes 19
4 toggle skip_scm_header 20
5 21
6 22
7 23
8 24
9 25
10 26
11 27
12 28
13 29
14 30
15 31

Горячие клавиши

Помимо стандартных (Ctrl+C, Ctrl+Z, … ) работают следующие комбинации клавиш:

Клавиши Значение
TAB , Shift+TAB двигать выделенный блок текста влево/вправо
Ctrl + Alt + A / D двигать выделенный блок текста влево/вправо (на 1 символ)
Ctrl + Alt + B / N / M различные режимы выделения текста: обычный, по столбцам (аналог — выделение с зажатым Alt), по строкам
Ctrl + Shift + Num8 / Num2 прокрутить страницу на одну строку вверх/вниз
Ctrl + Scroll Up / Down страница вверх/вниз
Ctrl + Shift + U / L перевод слова в верхний/нижний регистр
Ctrl + T удалить слово
Ctrl + Y удалить строку
Ctrl + Shift + Y очистить строку
Ctrl + [space] показать список классов/свойств/моделей/меток/переменных/миссий
Ctrl + Shift + [space] показать подсказку для текущей команды класса
Ctrl + Shift + C вставить текущие координаты игрока
Ctrl + Shift + E вставить текущий угол поворота игрока
Ctrl+Shift+V вставить в начало выделенного блока текста директиву $VERSION, в конец — директиву VERSION_RESTORE
Ctrl + Enter открыть файл по имени под курсором
Alt + S (когда активен список моделей) — пересортировать список
F1 искать опкод с данным словом (без учета ‘_’ и ‘.’)
Ctrl + F1 искать опкод с данным словом (с учетом ‘_’ и ‘.’)
F2 использовать макрос
Ctrl + J вызвать список макросов
Ctrl + M запись последовательности нажатия клавиш/остановка записи
Ctrl + P воспроизведение записанной последовательности/пауза во время записи
Ctrl + ~ вызвать консоль

Поиск опкодов

Вы можете вызвать программу OST нажатием Ctrl+Alt+2 или через меню
Сервис->Инструменты->Поиск опкодов.

Чтобы найти нужный опкод, впишите в верхнем поле слова, соответствующие ему, например 'actor car' (без кавычек). В списке останутся команды, содержащие эти слова. Вписывайте уточняющие слова, пока нужный опкод не будет найден. При поиске можно пользоваться специальными операторами (подробнее о них ниже).

Также программа учитывает кол-во введенных одинаковых слов и ищет их в необходимом количестве. Т.е, если вы напишете три слова 'car', то программа будет искать опкоды, в которых именно три слова car.

Вы можете регулировать задержку перед началом поиска. Если вы хотите найти длинное слово, например 'weapon', то лишний отсев, который происходит, пока вы пишете слово, может быть нежелателен. Чтобы увеличить или уменьшить задержку, откройте настроечный файл settings.ini и измените значение параметра delay на нужное. Единица измерения — миллисекунда. По умолчанию задержка — 300 мс.

Есть также еще один вариант. Измените значение параметра extra_search на 1, и теперь, если SCROLL LOCK будет включен, то поиск осуществляться не будет. Напишите нужное вам выражение, отключите SCROLL LOCK, и поиск будет осуществлен.

Если при открытии окна поиска в редакторе был выделен участок строки, он будет автоматически вставлен в строку поиска.

Копирование:

После того, как вы нашли нужный вам опкод, выделите его в списке и нажмите ENTER. Опкод будет записан в буфер. Если вы хотите добавить к нему еще один опкод, нажмите SHIFT+ENTER. Тогда в буфере обмена будет уже два ваших опкода.

F2 — скопировать весь список целиком.

Горячие клавиши:

Клавиши Значение
ENTER По выделенному опкоду — скопировать в буфер.
SHIFT + ENTER По выделенному опкоду — добавить его к содержимому буфера.
SCROLL LOCK (при параметре extra_search=1) включить/отключить поиск
F1 Вызвать справку по поиску
F2 Скопировать все опкоды в списке в буфер
F3 Сортировка по опкодам
F4 Сортировка по словам
F11 Очистить строку поиска, показать все опкоды
ESC Выход

Операторы поиска:

[U]ЛОГИЧЕСКИЕ ОПЕРАТОРЫ[/U]

Оператор И (AND)
В программе эту функцию выполняет одиночный пробел между словами.

Пример: @ player

Будут показаны опкоды, где встречаются И символ @, И слово player

Оператор ИЛИ (OR)
В программе эту функцию выполняет символ | между словами.

Пример: @ | player

Будут показаны опкоды, где встречаются ИЛИ символ @, ИЛИ слово player

Если поставить | первым элементом, программа будет связывать все последующие слова оператором OR.

Пример: | actor player car

Будут показаны опкоды, где есть хотя бы одно из этих слов.

Оператор НЕТ (NOT)
Для всех случаев это два минуса перед исключаемым словом —

Пример: car --car2 

Будут показаны опкоды, где ЕСТЬ слово car И НЕТ слова car2

Для слов и символов $ и @ можно использовать один минус. Это сделано, чтобы не перепутать исключение с поиском отрицательных чисел.

Пример: -10 -@ -car --3

Будут показаны опкоды, где ЕСТЬ число -10 И НЕТ символа @, слова car и цифры 3.

[U]ДРУГИЕ ОПЕРАТОРЫ[/U]

^ показать все условия в списке
^выражение найти выражение в условных опкодах

Пример: ^car == 

Будут показаны условные опкоды, где есть слово car и знак ==

-^ исключить все условия из списка

Пример: player -^ 

Будут показаны все опкоды, где есть слово player, и этот опкод не является условием в IF.

-^ выражение исключить условия, содержащие выражение

Пример: player -^actor

Будут показаны все опкоды, где есть слово player, исключая условные опкоды со словом actor.

% искать в заданном порядке

Пример: % @ == @

Будут показаны все опкоды, где эти символы идут в данном порядке

Ссылки

  • скачать SB 3.10
  • Официальный сайт
  • Форум, посвященный обсуждению SB

п · о · р

San Andreas Grand Theft Auto: San Andreas

Форматы файлов .col • .cfg • .cut • .dff • .dat • .fxp • .gxt • .ide • .ifp • .img • .ipl • .rep • .rrr • .scm • .txd • .set
Документация carcols.dat • Carrec • Ped Events • Ped Type • Адреса Памяти Функций (SA) • Анимация моделей в SA • Визуальные эффекты в скриптинге
Загруженные звуки • Катсцены • Номера оружия • Рисование на экране • Трюки с метками • Статистика • Структура аудио в SA • Beta версия
Инструменты CLEO • Collision File Editor II • ENBSeries • G-Tools• GXT Editor • IMG Tool • PS2 TXD Mod • PS2 TXD Viewer • Limit Adjuster • Map Editor • PathViewer
San Andreas Audio Toolkit • San Andreas Texture Placer • Sanny Builder • TXD Workshop • TXDFucker • XBOX TXD PowerTool
Туториалы Редактирование аудио в SA • Изменение cutscene • Decision Maker • Пропуск роликов • Конвертация автомобилей в SA
Основы маппинга GTA:SA • Делаем ломающиеся объекты • Конвертирование персонажа в SA • 2dfx в SanAndreas • Моддинг San Andreas v2.0
Новая анимация персонажей • Универсальный солдат (GTA SA)
Моды Alien City • Design Your Own Mission • GTA: United • GTA Stories • GTA Berlin
Мультиплеер gtaTournament • Multi Theft Auto • San Andreas Multiplayer

п · о · р

Vice City Grand Theft Auto: Vice City

Форматы файлов .adf • .col • .cfg • .dff • .dat • .gxt • .ide • .ifp • .img/.dir • .ipl • .raw/.sdt • .rep • .sc • .scm • .set • .txd • .zon
Инструменты CLEO • Clump Viewer • Col-IO‎ • Collision File Editor II • Data tool • DFF Viewer • dffxbox2pc • G-Tools • Game Archive Viewer
GTA Garage Mod Manager • GTA3 Script Compiler • GXT Editor • IMG Tool • Kam’s Max Scripts • Map Editor • Mod Generator • Mod Installer • Moo Mapper
PS2 TXD Mod • PS2 TXD Viewer • Resourse Hacker • Rotation Calculator • RW Analyze • Sanny Builder • TXD Workshop
TXD_2048 • TXDFucker • VC Limit Adjuster • VC Mission Builder • ViceTXD • VC Seter • VCFCTool • Water Editor • YAIE • ZModeler
Модификации Ultimate VC • Modern Mod • Snow Mod • Deluxe • Millenium • New Age • Killer Kip • Aliens vs. Predator
GTA Long Night • GTA Liberty City • GTA Myriad Islands • GTA State Of Liberty
Отечественные Ментовский Беспредел • Cделано в СССР • Underground • Lost Heaven • Кыштым • Ностальгия • XBox Mod (Коктейль)
Мультиплейер Multi Theft Auto • Vice City Online

п · о · р

GTA III Grand Theft Auto III

Форматы файлов .b • .a3d • .anm • .col • .cfg • .dff • .dat • .gxt • .ide • .ifp • .img/.dir • .ipl • .raw/.sdt • .rep • .sc • .scm • .set • .txd • .zon
Документация carcols.dat • CHASE.DAT • CULLZONE.DAT • cuts.img • default.dat • fistfite.dat • flight.dat • gta3.exe • gta3.dat
gta3.img • gta3.zon • handling.cfg • main.scm • map.dat • map.zon • object.dat • particle.cfg • ped.dat • pedgrp.dat
pedstats.dat • sfx.raw • surface.dat • TimeCyc.DAT • tracks.dat • train.dat • water.dat • waterpro.dat • weapon.dat
Инструменты CLEO • Clump Viewer • Col-IO‎ • Collision File Editor II • Data tool • DFF Viewer • dffxbox2pc • G-Tools • GTA Garage Mod Manager
GXT Editor • GTA3 Limit Adjuster • GTA3 Mission Builder • GTA3 Patcher • IMG Tool • Kam’s Max Scripts • Map Editor
Mod Generator • Mod Installer • Moo Mapper • PS2 TXD Mod • PS2 TXD Viewer • Resourse Hacker • Rotation Calculator
RW Analyze • ViceTXD • Water Editor • Sanny Builder • TXD Tool • TXD Workshop • YAIE • ZModeler
Туториалы раздел в разработке
Классические Моды GPS Radar • Bye-Bye Bikini • Ultimate Stunt Park • The Sphere • Miss Liberty • Illando • Intercity Highway • Shoreside Bridge
Rockstar Heights • Lighthouse Bridge • Blade Funpark • Orbital City • Lakeside Island • Liberty Penitentiary • JEM Island
Illando Helix • Cliff Climbing Mountain
Глобальные Моды Real GTA3 • Twenty Ten • Snow City • Frosted Winter • Ultimate • Beta mod • X-box mod • Bad Business • GTA3 HD • Ultra mod
OpenTunnels • Back to the Future
Мультиплеер Multi Theft Auto • Liberty Unleashed
Исходники 4×4 • 8ball • ambulance • asuka • asusb • camera • car_gen • cat • copcar • debug • demo • diablo • firetruck • frank • gates
genstuf • health • hj • hood • import • intro • joey • kenji • love • luigi • mayhem • meat • pickups • rampage • ray • rc • switch
taxi • toni • usj • wanted • yard

ajom

Well-known member


  • #2

Maybe:

  1. You fucked up somewhere in your code.
  2. You are experiencing compiler encoding problems. Try copying this Sanny Builder Settings:
  • General
  • Formats

  • #3

Maybe:

  1. You fucked up somewhere in your code.
  2. You are experiencing compiler encoding problems. Try copying this Sanny Builder Settings:

  • General
  • Formats

i copyied that but still no help
i created a small test script to test some opcodes

Code:

{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
thread 'cam'




:test
wait 0

if and
key_down 16
key_down 38
jf @test
print "1" 1000
wait 300
if
   Actor.Driving($PLAYER_ACTOR)
jf @test
print "2" 1000
00D9: 5@ = actor $PLAYER_ACTOR car // add to mission cleanup
0441: 6@ = car 5@ model
0AD3: 10@v = format "%d" 6@
print 10@v 1000
jump @test

as i run the script
it prints the number 2 but doesnt show the the ID of the car im driving

also my game starts freezing a for a sec and all the the water of GTA Samp Starts flashing off and on

  • sa-mp-041.png

    sa-mp-041.png

    602.1 KB

    · Views: 7

  • sa-mp-040.png

    sa-mp-040.png

    701.6 KB

    · Views: 7

ajom

Well-known member


  • #4

also my game starts freezing a for a sec and all the the water of GTA Samp Starts flashing off and on

You might have mods out there that causes the problem. Try launching your script on a clean GTASA + CLEO and see if it still persists.

as i run the script it prints the number 2 but doesnt show the the ID of the car im driving

  1. SB Supports High Level Syntax. Instead of using Low Level Syntax that is hard to understand/backtrace, abuse the usage of high level syntax.
  2. Try using Opcode 03C0 instead of Opcode 00D9
  3. It is a better practice to use Opcodes other than Keywords. Because in your example, the print keyword can either be Opcode 0ACC(LowPriority) or Opcode 0ACD(HighPriority).

An example for Show Car Model:

PHP:

{$CLEO}
0000: car model shower

While true
    Wait 0
    if and
        00DF: actor $PLAYER_ACTOR driving
        0AB0: key_pressed 16 // SHIFT
        0AB0: key_pressed 38 // Up Arrow
    then
        03C0: 0@ = actor $PLAYER_ACTOR car
        0441: 0@ = car 0@ model
        0AD3: 1@v = format "%d" 0@ // overwrites variables 1@, 2@, 3@, and 4@
        0ACD: show_text_highpriority 1@v time 200
    end
end

PHP:

{$CLEO}
0000: car model shower

While true
    Wait 0
    if and
        00DF: actor $PLAYER_ACTOR driving
        0AB0: key_pressed 16 // SHIFT
        0AB0: key_pressed 38 // Up Arrow
    then
        03C0: 0@ = actor $PLAYER_ACTOR car
        0441: 0@ = car 0@ model
        0AC8: 1@ = allocate_memory_size 16 // create a new memory region that can support up to 15(+1 null terminator) characters. Store the location at 1@
        0AD3: 1@ = format "%d" 0@ // write the formatting at the new memory region
        0ACD: show_text_highpriority 1@ time 200
        0AC9: free_allocated_memory 1@ // we free/forget the memory region using this opcode to avoid memory leak that can cause gtasa to crash.
    end
end

An example Elegy Detector:

PHP:

{$CLEO}
0000: Elegy Detector

While true
    Wait 0
    if and
        00DF: actor $PLAYER_ACTOR driving
        0AB0: key_pressed 16 // SHIFT
        0AB0: key_pressed 38 // Up Arrow
    then
        03C0: 0@ = actor $PLAYER_ACTOR car
        if 0137: car 0@ model == 562 // #ELEGY should work too, try changing 562 into #ELEGY later
        then 0ACD: show_text_highpriority "I'm driving an Elegy" time 200
        end
    end
end

Last edited: Feb 6, 2022

  • #5

You might have mods out there that causes the problem. Try launching your script on a clean GTASA + CLEO and see if it still persists.

  1. SB Supports High Level Syntax. Instead of using Low Level Syntax that is hard to understand/backtrace, abuse the usage of high level syntax.
  2. Try using Opcode 03C0 instead of Opcode 00D9
  3. It is a better practice to use Opcodes other than Keywords. Because in your example, the print keyword can either be Opcode 0ACC(LowPriority) or Opcode 0ACD(HighPriority).

An example for Show Car Model:

PHP:

{$CLEO}
0000: car model shower

While true
    Wait 0
    if and
        00DF: actor $PLAYER_ACTOR driving
        0AB0: key_pressed 16 // SHIFT
        0AB0: key_pressed 38 // Up Arrow
    then
        03C0: 0@ = actor $PLAYER_ACTOR car
        0441: 0@ = car 0@ model
        0AD3: 1@v = format "%d" 0@ // overwrites variables 1@, 2@, 3@, and 4@
        0ACD: show_text_highpriority 1@v time 200
    end
end

PHP:

{$CLEO}
0000: car model shower

While true
    Wait 0
    if and
        00DF: actor $PLAYER_ACTOR driving
        0AB0: key_pressed 16 // SHIFT
        0AB0: key_pressed 38 // Up Arrow
    then
        03C0: 0@ = actor $PLAYER_ACTOR car
        0441: 0@ = car 0@ model
        0AC8: 1@ = allocate_memory_size 16 // create a new memory region that can support up to 15(+1 null terminator) characters. Store the location at 1@
        0AD3: 1@ = format "%d" 0@ // write the formatting at the new memory region
        0ACD: show_text_highpriority 1@ time 200
        0AC9: free_allocated_memory 1@ // we free/forget the memory region using this opcode to avoid memory leak that can cause gtasa to crash.
    end
end

An example Elegy Detector:

PHP:

{$CLEO}
0000: Elegy Detector

While true
    Wait 0
    if and
        00DF: actor $PLAYER_ACTOR driving
        0AB0: key_pressed 16 // SHIFT
        0AB0: key_pressed 38 // Up Arrow
    then
        03C0: 0@ = actor $PLAYER_ACTOR car
        if 0137: car 0@ model == 572 // #ELEGY should work too, try changing 572 into #ELEGY later
        then 0ACD: show_text_highpriority "I'm driving an Elegy" time 200
        end
    end
end

i removed all the mods only kept gta sa and cleo
i also tried your code ELEGY Detector
but it doesnt detect so i added a
0ACD: show_text_highpriority «1» time 2000
before the IF command of the model check
it shows the «1» but doesnt show the I’m driving an Elegy Text instead it shows 1 which proves the game skips the codes of the model check
can you compile the code you gave me into CS, to see if this a compiler error or what kind of problem

here is the code

Code:

{$CLEO}
0000: Elegy Detector

While true
    Wait 0
    if and
        00DF: actor $PLAYER_ACTOR driving
        0AB0: key_pressed 16 // SHIFT
        0AB0: key_pressed 38 // Up Arrow
    then
        03C0: 0@ = actor $PLAYER_ACTOR car
        0ACD: show_text_highpriority "1" time 2000       //// < LINE i added to see if working or not
        if 0137: car 0@ model == 572 // #ELEGY should work too, try changing 572 into #ELEGY later
        then 0ACD: show_text_highpriority "I'm driving an Elegy" time 200
        end
    end
end

screenshot it only shows 1 on new code

  • sa-mp-047.png

    sa-mp-047.png

    666.6 KB

    · Views: 7

  • #6

i removed all the mods only kept gta sa and cleo
i also tried your code ELEGY Detector
but it doesnt detect so i added a
0ACD: show_text_highpriority «1» time 2000
before the IF command of the model check
it shows the «1» but doesnt show the I’m driving an Elegy Text instead it shows 1 which proves the game skips the codes of the model check
can you compile the code you gave me into CS, to see if this a compiler error or what kind of problem

here is the code

Code:

{$CLEO}
0000: Elegy Detector

While true
    Wait 0
    if and
        00DF: actor $PLAYER_ACTOR driving
        0AB0: key_pressed 16 // SHIFT
        0AB0: key_pressed 38 // Up Arrow
    then
        03C0: 0@ = actor $PLAYER_ACTOR car
        0ACD: show_text_highpriority "1" time 2000       //// < LINE i added to see if working or not
        if 0137: car 0@ model == 572 // #ELEGY should work too, try changing 572 into #ELEGY later
        then 0ACD: show_text_highpriority "I'm driving an Elegy" time 200
        end
    end
end

screenshot it only shows 1 on new code

PHP:

{$CLEO .cs}

0000: NOP

WAIT 8500

WHILE TRUE
WAIT 0

IF 0256:   player $PLAYER_CHAR defined
THEN
    IF 00DF:   actor $PLAYER_ACTOR driving
    THEN
        IF AND
        0AB0: key_pressed 16 {Shift}
        0AB0: key_pressed 38 {Up arrow}
        THEN
            IF 00DD:   actor $PLAYER_ACTOR driving_car_with_model 562 {ELEGY = 562 https://wiki.multitheftauto.com/wiki/PL/Vehicle_IDs}
            THEN
                0ACD: show_text_highpriority "~r~I'm driving an ~g~Elegy" time 1337
            END    
        END
        WAIT 137 {Anti-spam key}    
    END
END

END

  • ElegyDetector.cs

    17.9 KB

    · Views: 3

Last edited: Feb 6, 2022

  • #7

Sorry for late guys the both codes are working the problem was the #elegy
if 0137: car 0@ model == 572
i changed it to
if 0137: car 0@ model == #elegy and it works

ajom

Well-known member


  • #8

I made a typo, it should be ID 562(dphome stated). Anyway, that’s why it is better to use its GXT name definition rather than its ID to avoid confusion.

Понравилась статья? Поделить с друзьями:
  • Sane start error during device i o
  • Sands of faith runtime error
  • Sandisk extreme portable ssd 1tb не распознает пк как исправить
  • Sandboxie как исправить ошибку
  • Sandboxie cs go vac error fix