Официальный сайт Совместим с: III, VC, SA + LCS, VCS Программа для создания миссий, размещения пикапов на карте, добавления новых возможностей и других скриптов. А так же для создания CLEO скриптов.
После запуска программы, для работы гта3 и вайса в правом нижнем углу выбрать нужную игру. При попытке комп или ровать или декомп или ровать нужно будет указать папку с игрой. C:\Program Files\Sanny Builder 3\data\gta3 opcodes.txt - здесь список всех опкодов использованных в игре.
CLEO - это asi скрипт позволяющий добавлять скрипты, без замены старых файлов, и без необходимости начинать новую игру. Пикапы - это значки которые можно подобрать. Например броня. Можно создать и новые пикапы. CLEO v2 не работает на WinXP
В мобильной версии в cleo нет новых опкодов
CLEO v1 05DC: завершить поток 05DD: завершить поток 'NAM' 05DE: create_custom_thread 'ct.s' 05DF: редактировать память 1@ размер(1,2,4,8) $1 данные 0 virtual_protect 1 05E0: 0@ = записать данные из памяти 1@ размер $1 virtual_protect 0 05E1: call 0x55BFC0 num_params 3 pop 3 0 0 0@ 05E2: call_function 0x4BC1E0 num_params 0 pop 0 0@ 05E3: call_method 0x4DF240 struct 0@ num_params 3 pop 3 0.0 0.0 0.0 05E4: call_function_method 0x5BAA80 struct 0@ num_params 0 pop 0 1@ 05E5: 0@ = версия игры(0=1.0, 1=1.1, 2=steam) 05E6: 0@ = $actor адрес памяти педа(CPed) 05E7: 0@ = $car адрес памяти тачки 05E8: 0@ = $object адрес памяти объекта 05E9: 0@ = ped_struct 0@ handle 05EA: 0@ = vehicle_struct 0@ handle 05EB: 0@ = vehicle_struct 0@ handle 05EC: 0@ = current_thread_pointer 05ED: 0@ = thread 'MAIN' pointer 05EE: если нажата клавиша 0x9 //Tab
Backspace=8 Tab=9 Enter=13 Shift(оба)=16 Ctrl(оба)=17 Alt=18 Pause=19 Caps Lock=20 Esc=27 Spacebar(пробел)=32 Page Up=33 Page Down=34 End=35 Home=36 (влево)=37 (вверх)=38 (вправо)=39 (вниз)=40 Prt Sc SysRq=44 Insert=45 Delete=46 0=48 1=49 2=50 3=51 4=52 5=53 6=54 7=55 8=56 9=57 A или ф=65 B или и=66 C или с=67 D или в=68 E или у=69 F или а=70 G или п=71 H или р=72 I или ш=73 J или о=74 K или л=75 L или д=76 M или ь=77 N или т=78 O или щ=79 P или з=80 Q или й=81 R или к=82 S или ы=83 T или е=84 U или г=85 V или м=86 W или ц=87 X или ч=88 Y или н=89 Z или я=90 (левый=Windows)=91 (правый=Windows)=92 (меню)=93 0 NumLock=если вкл NumLock)=96 1 NumLock=если вкл NumLock)=97 2 NumLock=если вкл NumLock)=98 3 NumLock=если вкл NumLock)=99 4 NumLock=если вкл NumLock)=100 5 NumLock=если вкл NumLock)=101 6 NumLock=если вкл NumLock)=102 7 NumLock=если вкл NumLock)=103 8 NumLock=если вкл NumLock)=104 9 NumLock=если вкл NumLock)=105 * NumLock)=106 +=NumLock)=107 _=NumLock)=108 -=NumLock)=109 .=NumLock)=110 /=NumLock)=111 F1=112 F2=113 F3=114 F4=115 F5=116 F6=117 F7=118 F8=119 F9=120 F10=121 F11=122 F12=123 Num Lock=144 Scroll Lock=145 ;ж=186 =+=187 ,б=188 -_=189 .ю=190 /?.,=191 `=192 [=219 \=220 ]=221 '"э=222
05EF: 3@ = random_actor_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_deads 0 //IF and SET 05F0: 3@ = random_vehicle_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_wrecked 0 //IF and SET 05F1: 3@ = random_object_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 //IF and SET 05F2: 0@ = pop_float 05F3: 0@ = 2 exp 0.5 //all floats 05F4: 0@ = log 0@ base 2 //all floats 05F5: call_scm_func @func params_count 0 05F6: ret 0
{ VC only 016F: draw_shadow 3 at 13@ 14@ 15@ angle 0.0 size 1.0 intensity 150 colour 0 0 0 0349: text_draw_style = 3 } { GTA3 only 04C2: create_coordinate 0@ 1@ 2@ from_object 11@ offset -0.277 -16.662 3.152 ;0400 in VC 04C3: create_coordinate 0@ 1@ 2@ from_car 10@ offset 0.0 -20.0 0.0 ;0407 in VC 04C4: create_coordinate 0@ 1@ 2@ from_actor $PLAYER_ACTOR offset 0.0 1.2 0.0 046F: store_player $player_char currently_armed_weapon_to 13@ 04DD: $873 = actor $player_actor armour 04C9: player $PLAYER_CHAR driving_plane 04A8: player $PLAYER_CHAR driving_boat 04aa: player $PLAYER_CHAR driving_heli 047E: player $PLAYER_CHAR driving_a_motorbike 0485: return_true 059a: return_false } 0601: is_button_pressed_on_pad 3 with_sensitivity 0xFF 0602: emulate_button_press_on_pad 2 with_sensitivity 0xFF 0603: is_camera_in_widescreen_mode 0604: 0@ = weapon 13 model 0605: 0@ = model #TEC9 weapon_id 0606: set_memory_offset memory_pointer 0x400040 memory_to_point 0x500040 virtual_protect 1 0607: 0@ = get_current_weather 0608: show_text_position 50.0 50.0 text "Test string" // свой текст в любом месте на экране 0609: show_formatted_text_position 50.0 50.0 text "model id = %d; weapon id = %d; weather = %d" 6@ 7@ 8@ 0673: play_animation on actor $PLAYER_ACTOR animgroup 0 anim 0 blendfactor 30.0 0A8C: write_memory 0xC0BC15 size 1 value 1 virtual_protect 0 0A8D: $result = read_memory 1@ size 4 virtual_protect 0 0A8E: 4@ = 5@ + 6@ // int 0A8F: $var = 0@ - 1 // int 0A90: $var = 100 * 1@ // int 0A91: $div = 1 / 5 // int 0A92: create_custom_thread "ShowTextBox.s" 0A93: end_custom_thread 0A96: $ActorStruct = actor $PLAYER_ACTOR struct 0A97: $CarStruct = car $MyCar struct 0A98: $ObjectStruct = object 0@ struct 0A99: chdir 0 0A9A: $hFILE = openfile "settings.ini" mode 0x72 // IF and SET 0A9B: closefile $hFILE 0A9C: 0@ = file $hFILE size 0A9D: readfile $hFILE size 2 to $150 0A9E: writefile $hFILE size 128 from 0@ 0A9F: 0@ = current_thread_pointer 0AA0: gosub_if_false @CREATE_NEW_ACTOR 0AA1: return_if_false 0AA2: $hLIB = load_library "CLEO\version.dll" // IF and SET 0AA3: free_library $hLIB 0AA4: $hPROC = get_proc_address "GetVersion" library $hLIB // IF and SET 0AA5: call $hPROC num_params 1 pop 1 $param 0AA6: call_method $Destroy struct $CarStruct num_params 0 pop 0 0AA7: call_function 0x569660 num_params 2 pop 2 $COORD_Y $COORD_X $GROUND 0AA8: call_function_method 0x4048E0 struct 0xB74494 num_params 1 pop 0 $MyCar 0@ 0AA9: is_game_version_original 0AAA: 0@ = thread 'OTB' pointer 0AAB: file_exists "CLEO\version.dll" 0AB0: key_pressed 0x73 0AB1: call_scm_func @GetSQR 1 10 $result 0AB2: ret 1 0@ 0ABA: end_custom_thread_named 'BENZIN' 0AC6: 0@ = label @label offset 0AC7: 0@ = var 0@ offset 0AC8: 0@ = allocate_memory_size 260 0AC9: free_allocated_memory 0@ 0ACA: show_text_box 0x6001FC //показывает текст из адреса 0ACB: show_styled_text 0@ time 1000 style 1 0ACC: show_text_lowpriority 0x969110 time 100 0ACD: show_text_highpriority 0x969110 time 100 0ACE: show_formatted_text_box "This is %.4X opcode" 0x0ACE 0ACF: show_formatted_styled_text "This is %.4X opcode" time 2000 style 1 0x0ACF 0AD0: show_formatted_text_lowpriority "This is %.4X opcode" time 2000 0x0AD0 0AD1: show_formatted_text_highpriority "This is %.4X opcode" time 2000 0x0AD1 0AD3: 0@ = format "%d + %d = %d" 2 2 4 0AD4: 4@ = scan_string 0@ format "%d + %d = %d" 5@ 6@ 7@ //IF and SET 0AD5: file $hFile seek 0x10 from_origin 1 //IF and SET 0AD6: end_of_file $hFile reached 0AD7: read_string_from_file $hFile to 0@ size 15 // IF and SET 0AD8: write_string_to_file $hFile from 0@ //IF and SET 0AD9: write_formatted_text "CLEO version: %d.%d.%d.%d" in_file $hFile 4 0 0 1 0ADA: 0@ = scan_file $hFile format "CLEO version: %d.%d.%d.%d" 0@ 1@ 2@ 3@ //IF and SET 0ADB: 0@ = car_model #LANDSTAL name 0ADC: test_cheat "BLOWUP" 0ADD: spawn_car_with_model #RHINO like_a_cheat 0ADE: 0@ = text_by_GXT_entry 0@ 0ADF: add_dynamic_GXT_entry "_TEST" text "Test string" 0AE0: remove_dynamic_GXT_entry "_TEST" 0AE1: $actor = random_actor_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_deads 1 0AE2: $car = random_vehicle_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_wrecked 1 0AE3: $object = random_object_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 //IF and SET 0AE9: pop_float 0@ 0AEA: $actor = actor_struct $ped_struct handle 0AEB: $car = car_struct $vehicle_struct handle 0AEC: $object = object_struct $object_struct handle 0AEE: 0@ = 2.0 exp 0.5 //all floats 0AEF: 0@ = log 10.0 base 2.718281828459045 //all floats 0AF0: 0@ = get_int_from_ini_file "cleo\config.ini" section "SectionName" key "intKey" 0AF1: write_int 16 to_ini_file "cleo\config.ini" section "SectionName" key "intKey" 0AF2: 0@ = get_float_from_ini_file "cleo\config.ini" section "SectionName" key "floatKey" 0AF3: write_float 0.0 to_ini_file "cleo\config.ini" section "SectionName" key "floatKey" 0AF4: 0@ = read_string_from_ini_file "cleo\config.ini" section "SectionName" key "stringKey" 0AF5: write_string "new string value" to_ini_file "cleo\config.ini" section "SectionName" key "stringKey" 0B00: delete_file "CLEO\log.txt" // IF and SET 0B01: delete_directory "CLEO\CLEO_SAVES" include_subdirs 0 0B02: move_file "CLEO\1.txt" to "CLEO\2.txt" //IF and SET 0B03: move_directory "CLEO\dir1" to "CLEO\dir2" //IF and SET 0B04: copy_file "CLEO\1.txt" to "CLEO\2.txt" //IF and SET 0B05: copy_directory "CLEO\dir1" to "CLEO\dir2" //IF and SET 0B10: 0@ = 0@ AND 0xFF 0B11: 0@ = 0@ OR 0x80 0B12: 0@ = 1@ XOR 1 0B13: 0@ = NOT 0@ 0B14: 0@ = 0@ MOD 5 0B15: 0@ = 0@ SHR 8 0B16: 0@ = 0@ SHL 8 0B17: 0@ &= 1@ 0B18: 0@ |= 1@ 0B19: 0@ ^= 1@ 0B1A: ~0@ 0B1B: 0@ %= 1@ 0B1C: 0@ >>= 1@ 0B1D: 0@ <<= 1@ 0B20: read_clipboard_text_to 0@ size 64 0B21: write_clipboard_data_from 0@ size 64 0BA2: 15@ = memory_load_library 15@ // IF and SET 0BA4: 10@ = memory_get_proc_address "?SetPointers@@YAXPAM000@Z" library 15@ // IF and SET 0BA3: memory_free_library 15@
Если для гта3 или вайса то это не нужно, там ее даже нет. Если для сан андреаса то, нажми на эту кнопку CLEO и пролистай до самого конца и нажми на текст. Теперь нажми установить. Попросит указать путь к игре, указывай и жми ОК. Жми снова установить. Отблагодарить Мои видосы
Проблема: все float(дробные числа) компилируются в короткий float(2 байта), а то есть значения не точные и нельзя выставить значение выше 2048.0 Решение: использовать хекс код 0x3F800000(1.0) Проблема №2: при использовании хекс кода после декомпиляции переводит в Dword(4 байта целые числа). А если дело касается минусовых, то вообще не вообще не восстановить(ctrl+H). Вопрос: как все это исправить? Как восстановить минусовые float и как сделать так чтобы 3000.0 компилировался в нормальный float(453B8000) Речь о gta3. На форуме билдера не могу зарегистрироваться. Отблагодарить Мои видосы
Это лимит скриптового движка игры, а не SannyBuilder'а.
При чем тут движок игры? Тут нужно в прогу вносить улучшения. 0055: put_player $PLAYER 3000.0 -100.0 10.0 < игрок оказывается в координатах ~101.5 -100.0 10.0 0055: put_player $PLAYER 0x453B8000 -100.0 10.0 < игрок оказывается в координатах 3000.0 -100.0 10.0 0x453B8000 < 4 байт float движок отлично понимает. При использовании переменных та же фигня. Пару значений перевести не проблема, а когда их много это геморно.
Еще хорошо было бы если ввели констаты в опкоды(SCM.ini) или отдельный файл как CustomVariables.ini. К примеру так: SCM.ini [OPCODES] 02a8=5,%5d% = create_marker %4b:RadarSprites% at %1d% %2d% %3d%
в проге: 02A8: $VAR = иконка на радаре RADAR_SPRITE_CAT $X $Y $Z При использовании keywords ADD_SPRITE_BLIP_FOR_COORD$VARRADAR_SPRITE_CAT$X $Y $Z и при нажатии ctrl+пробел выводился список констатов для данного опкода. И ведь есть исходники констатов для гта3 и вайса. Отблагодарить Мои видосы
Тут нет ни чего агрессивного. Движок позволяет и 2 и 4 байта, но неудобство в проге. Я думал что есть решение неудобства как это происходит с текстом. К примеру 'ABC' - максимум 7 символов. "ABC" - не ограничено. Но тут уже да лимит движка. Спасибо за внимание. Надеюсь Seemann примет во внимание идеи по улучшению.
Пишет что письмо с паролем и логином было отправлено, но ни чего ни пришло. При повторе пишет что ник уже зарегистрирован. Пробовал разные почты. Отправлял запрос о восстановлении пароля. Написал о проблеме на основную почту. Ответа нет. Отблагодарить Мои видосы