#1 Re: GTA Modding » Sanny Builder / CLEO discussion » 07-08-2021 02:54

RoYaL wrote:

How do I set a value to a variable  with a command while I'm in the game?

the question is not clear. you can set a value with the set command, like 0004: $var = 1 or 0006: 0@ = 1 etc


{$CLEO}
0000:
while true
    wait 250
    if 
        0ADC:   test_cheat "SETVAR"
    then
        0@ = 10 // or any other value
    end
end

#3 Re: Sanny Builder и CLEO » Параметры в классах. » 20-07-2021 23:11

mfisto

спасибо за файл. я нашел и исправил ошибку. постараюсь в ближайшие дни выложить обновление.

#4 Re: Вопросы по скриптингу » Вопрос про фишки которые выдаются при посадки в машину. » 15-07-2021 01:55

Это происходит в функции

.text:005B89F0 CVehicle::SetDriver((CPed *)) proc near

вот например добавление 20 ХП

.text:005B8AC2 call    GetPlayerPed
.text:005B8AC7 mov     dl, ds:_players.maxHealth
.text:005B8ACD fld     flt_69C69C

можно записать 0 по этому адресу

.data:0069C69C flt_69C69C dd 20.0

тогда здоровье не будет увеличиваться

с оружием чуть сложнее

.text:005B8C0D mov     ecx, ebp                        ; CPed *
.text:005B8C0F push    1                               ; flag
.text:005B8C11 push    3                               ; weaponIndex
.text:005B8C13 call    CPed__HasWeapon
.text:005B8C18 test    al, al
.text:005B8C1A jz      loc_5B8CD0
.text:005B8C20
.text:005B8C20 loc_5B8C20:                             ; CODE XREF: CVehicle::SetDriver((CPed *))+21Bj
.text:005B8C20 push    1                               ; flags
.text:005B8C22 push    261                             ; modelIndex
.text:005B8C27 call    RequestStream

самое простое что тут можно сделать, это инвертировать проверку на наличие оружия у игрока. в оригинальной версии оружие выдается, если у игрока еще нет шотгана, можно сделать наоборот. если шотгана нет - не выдавать.

для этого должно быть достаточно записать 0x85 по адресу 005B8C1B

write_memory 0x005B8C1B 1 0x85 1


ps. в игре не проверял

#5 Re: Sanny Builder и CLEO » Параметры в классах. » 13-07-2021 23:43

Можешь выложить свой скрипт и classes.db, на котором воспроизводится ошибка, я посмотрю в чем дело

#6 Re: Sanny Builder и CLEO » Параметры в классах. » 06-07-2021 20:55

для режима гта3 же нет classes.db. ты используешь какой-то свой classes.db?

если да, то в 3.6.0 формат "extended" параметров изменился. https://docs.sannybuilder.com/v/ru/codi … starevshee

для того, чтобы они работали, их нужно объявить в classes.db как #DEPRECATED_ENUMS
смотри в качестве примера classes.db из режима SA

а еще лучше, использовать новые enum (тоже требуют изменения в classes.db)

#8 Re: Вопросы по скриптингу » Отключение розыска при покидании Лос Сантоса » 08-05-2021 21:01

Если я правильно помню, за это отвечает стат 181.

0652: $STAT_UNLOCKED_CITIES_NUMBER = integer_stat 181

чтобы открыть все, нужно выставить значение в 4

0629: change_integer_stat 181 to 4

#9 Re: Вопросы по скриптингу » Копия катсцены из оригинального main.scm в свой » 26-04-2021 22:01

Финальную катсцену в Сан Андреас можно найти в миссии 112 FINALEC. Сразу после команды 0434: show_credits

:FINALEC_41683
0954: start_playing_loaded_soundtrack 
043C: disable_sounds_after_fadeout 0 
0924: enable_screen_darkness 1 with_value -1 
0434: show_credits 
016A: fade 1 time 250 
0925: restore_camera_to_user_defined 
0936: set_camera 2523.975 -1749.962 57.202 position_to 2514.887 -1733.851 57.202 time 2000 smooth_transition 0 
0920: point_camera 2523.755 -1749.572 56.3075 transverse_to 2514.668 -1733.461 56.3075 time 2000 smooth_transition 0 

:FINALEC_41780
...
<финальная катсцена>
...

учебники/туториалы по main.scm?

на главной странице https://sannybuilder.com/ru/index.html есть несколько ссылок, можно начать с них

#10 Re: Вопросы по скриптингу » Копия катсцены из оригинального main.scm в свой » 22-04-2021 16:41

Титры с именами запускаются командами

0434: show_credits
0435: end_credits
8436:   not reached_end_of_credits

непосредственно к пролету камеры они отношения не имеют

#11 Re: Вопросы по скриптингу » Копия катсцены из оригинального main.scm в свой » 22-04-2021 16:40

Для какой игры? В вайс сити за финальную сцену с титрами отвечает вот этот код из миссии "Keep your friends close..."

0000:

01B4: set_player $PLAYER_CHAR can_move 0 
02A3: enable_widescreen 1 
03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 1 
03F4: set_all_vehicles_apply_damage_rules 0 
04BB: select_interiour 0 // select render area 
0004: $991 = 0 // $ = int 
03AD: set_rubbish 1 
04FA: clear_extra_colors_with_fade 0 
0055: put_player $PLAYER_CHAR at 198.4252 -434.6284 9.5332 
0434: show_credits 
0004: $61 = 0 // $ = int 
03EA: generate_cars_around_camera 1 
01BD: $4811 = current_time_in_ms 
0001: wait 0 ms 
0001: wait 0 ms 
02A3: enable_widescreen 1 
01BD: $4811 = current_time_in_ms 
0084: $5040 = $4811 // $ = $ int 
01B6: set_weather 0 

:FIN_1_24761
00D6: if 
8436:   not reached_end_of_credits 
004D: jump_if_false @FIN_1_26913 
0001: wait 0 ms 
01BD: $4811 = current_time_in_ms 
00D6: if 
00E1:   player 0 pressed_button 16 
004D: jump_if_false @FIN_1_24827 
00D6: if 
0038:   $61 == 1 // $ == int 
004D: jump_if_false @FIN_1_24820 
0435: end_credits 

:FIN_1_24820
0002: jump @FIN_1_24834 

:FIN_1_24827
0004: $61 = 1 // $ = int 

:FIN_1_24834
00D6: if 
0038:   $5039 == 0 // $ == int 
004D: jump_if_false @FIN_1_24980 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_24980 
015F: set_camera_position 315.4413 -606.3295 10.9994 rotation 0.0 0.0 0.0 
0160: point_camera 315.8044 -605.4032 11.1004 switchstyle 2 
00C0: set_current_time 18 0 
009B: destroy_actor_instantly $5027 
009A: $5027 = create_actor_pedtype 4 model #MALE01 at 315.4413 -606.3295 10.9994 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_24980
00D6: if 
0038:   $5039 == 1 // $ == int 
004D: jump_if_false @FIN_1_25055 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25055 
0169: set_fade_color 0 0 1 
016A: fade 1 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25055
00D6: if 
0038:   $5039 == 2 // $ == int 
004D: jump_if_false @FIN_1_25130 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25130 
0169: set_fade_color 0 0 1 
016A: fade 0 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 3500 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25130
00D6: if 
0038:   $5039 == 3 // $ == int 
004D: jump_if_false @FIN_1_25276 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25276 
015F: set_camera_position -57.009 -1579.473 11.6604 rotation 0.0 0.0 0.0 
0160: point_camera -57.1214 -1578.485 11.765 switchstyle 2 
00C0: set_current_time 14 0 
009B: destroy_actor_instantly $5027 
009A: $5027 = create_actor_pedtype 4 model #MALE01 at -57.009 -1579.473 11.6604 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25276
00D6: if 
0038:   $5039 == 4 // $ == int 
004D: jump_if_false @FIN_1_25351 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25351 
0169: set_fade_color 0 0 1 
016A: fade 1 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25351
00D6: if 
0038:   $5039 == 5 // $ == int 
004D: jump_if_false @FIN_1_25426 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25426 
0169: set_fade_color 0 0 1 
016A: fade 0 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 3500 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25426
00D6: if 
0038:   $5039 == 6 // $ == int 
004D: jump_if_false @FIN_1_25572 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25572 
015F: set_camera_position -31.4477 -942.5128 11.2897 rotation 0.0 0.0 0.0 
0160: point_camera -30.4814 -942.2845 11.4088 switchstyle 2 
00C0: set_current_time 15 0 
009B: destroy_actor_instantly $5027 
009A: $5027 = create_actor_pedtype 4 model #MALE01 at -31.4477 -942.5128 11.2897 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25572
00D6: if 
0038:   $5039 == 7 // $ == int 
004D: jump_if_false @FIN_1_25647 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25647 
0169: set_fade_color 0 0 1 
016A: fade 1 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25647
00D6: if 
0038:   $5039 == 8 // $ == int 
004D: jump_if_false @FIN_1_25722 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25722 
0169: set_fade_color 0 0 1 
016A: fade 0 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 3500 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25722
00D6: if 
0038:   $5039 == 9 // $ == int 
004D: jump_if_false @FIN_1_25868 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25868 
015F: set_camera_position 527.1948 -1101.658 12.3979 rotation 0.0 0.0 0.0 
0160: point_camera 526.1959 -1101.612 12.4088 switchstyle 2 
00C0: set_current_time 12 0 
009B: destroy_actor_instantly $5027 
009A: $5027 = create_actor_pedtype 4 model #MALE01 at 527.1948 -1101.658 12.3979 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25868
00D6: if 
0038:   $5039 == 10 // $ == int 
004D: jump_if_false @FIN_1_25943 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_25943 
0169: set_fade_color 0 0 1 
016A: fade 1 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_25943
00D6: if 
0038:   $5039 == 11 // $ == int 
004D: jump_if_false @FIN_1_26018 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26018 
0169: set_fade_color 0 0 1 
016A: fade 0 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 3500 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26018
00D6: if 
0038:   $5039 == 12 // $ == int 
004D: jump_if_false @FIN_1_26164 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26164 
015F: set_camera_position 329.8244 -1123.419 29.418 rotation 0.0 0.0 0.0 
0160: point_camera 329.5483 -1122.458 29.4027 switchstyle 2 
00C0: set_current_time 2 0 
009B: destroy_actor_instantly $5027 
009A: $5027 = create_actor_pedtype 4 model #MALE01 at 329.8244 -1123.419 29.418 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26164
00D6: if 
0038:   $5039 == 13 // $ == int 
004D: jump_if_false @FIN_1_26239 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26239 
0169: set_fade_color 0 0 1 
016A: fade 1 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26239
00D6: if 
0038:   $5039 == 14 // $ == int 
004D: jump_if_false @FIN_1_26314 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26314 
0169: set_fade_color 0 0 1 
016A: fade 0 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 3500 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26314
00D6: if 
0038:   $5039 == 15 // $ == int 
004D: jump_if_false @FIN_1_26460 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26460 
015F: set_camera_position 420.3749 -179.7319 12.2077 rotation 0.0 0.0 0.0 
0160: point_camera 420.3214 -178.7335 12.193 switchstyle 2 
00C0: set_current_time 11 0 
009B: destroy_actor_instantly $5027 
009A: $5027 = create_actor_pedtype 4 model #MALE01 at 420.3749 -179.7319 12.2077 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26460
00D6: if 
0038:   $5039 == 16 // $ == int 
004D: jump_if_false @FIN_1_26535 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26535 
0169: set_fade_color 0 0 1 
016A: fade 1 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26535
00D6: if 
0038:   $5039 == 17 // $ == int 
004D: jump_if_false @FIN_1_26610 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26610 
0169: set_fade_color 0 0 1 
016A: fade 0 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 3500 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26610
00D6: if 
0038:   $5039 == 18 // $ == int 
004D: jump_if_false @FIN_1_26756 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26756 
015F: set_camera_position -397.3825 22.9746 47.9553 rotation 0.0 0.0 0.0 
0160: point_camera -396.5451 23.4814 47.7505 switchstyle 2 
00C0: set_current_time 5 45 
009B: destroy_actor_instantly $5027 
009A: $5027 = create_actor_pedtype 4 model #MALE01 at -391.2471 26.5135 25.2721 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26756
00D6: if 
0038:   $5039 == 19 // $ == int 
004D: jump_if_false @FIN_1_26831 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26831 
0169: set_fade_color 0 0 1 
016A: fade 1 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 20000 // $ += int 
0008: $5039 += 1 // $ += int 

:FIN_1_26831
00D6: if 
0038:   $5039 == 20 // $ == int 
004D: jump_if_false @FIN_1_26906 
00D6: if 
001C:   $4811 > $5040 // $ > $ int 
004D: jump_if_false @FIN_1_26906 
0169: set_fade_color 0 0 1 
016A: fade 0 3000 ms 
0084: $5040 = $4811 // $ = $ int 
0008: $5040 += 3500 // $ += int 
0004: $5039 = 21 // $ = int 

:FIN_1_26906
0002: jump @FIN_1_24761 

:FIN_1_26913
043C: set_game_sounds_disable_on_fade 1 
0440: stop_cutscene_music 
009B: destroy_actor_instantly $5027 
02A3: enable_widescreen 0 
03EA: generate_cars_around_camera 0 
01B7: release_weather 
0395: clear_area 1 at -379.2 -536.4 16.2 range 1.0 
0055: put_player $PLAYER_CHAR at -379.2 -536.4 16.2 
0171: set_player $PLAYER_CHAR z_angle_to 0.0 
0373: set_camera_directly_behind_player 
04BB: select_interiour 0 // select render area 
0004: $991 = 0 // $ = int 
03AD: set_rubbish 1 
04FA: clear_extra_colors_with_fade 0 
03CB: load_scene -379.2 -536.4 16.2 
0169: set_fade_color 0 0 1 
016A: fade 1 1500 ms 
01B4: set_player $PLAYER_CHAR can_move 1 
02A3: enable_widescreen 0 
03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 0 
03F4: set_all_vehicles_apply_damage_rules 1 
0373: set_camera_directly_behind_player 
02EB: restore_camera_with_jumpcut 
03DE: set_pedestrians_density_multiplier_to 1.0 
0395: clear_area 0 at -354.419 -569.529 30.0 range 200.0 
04E3: set_player $PLAYER_CHAR mood 0 duration 60000 


end_thread

#12 Re: Вопросы по скриптингу » Актер в неправильных координатах » 18-02-2021 14:34

мне выдает ошибку - Недостаточно параметров. Ожидалось 6 параметр(а).

Убедитесь, что когда пишете команду в форме класс.метод, между параметрами стоит запятая:

1@ = Actor.Create(CivMale, #Male01, 2260.7104, -1258.08, 23.975 )

в форме опкода между параметрами запятая не ставится, достаточно пробела (как в моем примере).

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

#13 Re: Вопросы по скриптингу » Актер в неправильных координатах » 17-02-2021 14:29

Попробуйте опкод

0972: put_actor 1@ at 2260.7104 -1258.08 23.975 no_offset

#14 Re: Вопросы по скриптингу » Всё что связано с гаражом и поиском » 16-01-2021 04:57

Проверить то, что машина находится в гараже можно путем обычной проверки координат. Гаражей в гта3 всего 3, поэтому много кода это не потребует.

float portland_x1 = 0.0 // подставить правильные координаты гаража
float portland_y1 = 0.0
float portland_x2 = 0.0
float portland_x2 = 0.0

float staunton_x1 = 0.0
float staunton_y1 = 0.0
float staunton_x2 = 0.0
float staunton_x2 = 0.0

if
     810F:   player 0 wanted_level <= 0 
then
  if
    00B0:   car 0@ 0 portland_x1 portland_y1 portland_x2 portland_y2  
  then
     // машина в гараже портланда
  else
    if
      00B0:   car 0@ 0 staunton_x1 staunton_y1 staunton_x2 staunton_y2 
    then
       // машина в гараже стэнтон
    else
        // проверка на шорсайд
    end
  end
end

#16 Re: Sanny Builder и CLEO » Параметры в классах. » 15-01-2021 02:00

Да, было исправлено в одной из тестовых сборок (v3.7.0-alpha.1). Можете скачать последнюю версию тут
https://github.com/sannybuilder/dev/releases

#17 Re: Вопросы по скриптингу » Проблемы с телепортом лодки. » 26-12-2020 07:11

не вижу команды wait внутри цикла. это не дает игре обработать другие события и отрендерить новый кадр

#18 Re: Вопросы по скриптингу » Проблемы со скриптом » 13-12-2020 21:12

04A8: player $PLAYER_CHAR driving_boat это нестандартный для GTA3 опкод, он добавляется через CLEO 2.0
https://github.com/cleolibrary/III.VC.C … .cpp#L1022

возможно, что он неправильно реализован, поэтому и выбивает ошибку

#20 Re: Вопросы по скриптингу » Проблемы со скриптом » 04-12-2020 20:10

но тогда он себя подрывает кучу раз стоя на одном месте

а кто ему говорит, что нужно бежать? По условию взрыв происходит если подрывник находится рядом с игроком. Если игрок стоит на месте, что должно произойти? Подрывник ведь тоже будет стоять? Наверно, есть смысл переместить взрыв (опкод 020C) после проверки 02A0:   actor $BOMBER stopped.

Т.е. логика должна быть примерно такая

создали подрывника
запускаем бесконечный цикл (while true)

проверяем, если игрок или подрывник умер - делаем break
проверяем остановился ли подрывник рядом с игроком
если да, то создаем explosion
если нет, заставляем его бежать
делаем паузу на 2 секунды (тогда серия взрывов будет реже)

конец цикла

очистка

#21 Re: Вопросы по скриптингу » Проблемы со скриптом » 04-12-2020 14:44

Тип актера задается при создании
009A: $BOMBER = create_actor 18 #SPECIAL01 at 0@ 1@ 2@

тут 18 - это параметр PedType

вот документация:
http://gtamodding.ru/wiki/Ped_Type - (неправильно указан тип 19, должно быть 21)
https://docs.sannybuilder.com/v/ru/scm- … 3/pedtypes
https://gtamods.com/wiki/Ped_type - тут наиболее полная информация

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

имеется в виду эта часть?

                then
                    02AB: set_actor $BOMBER immunities 0 0 0 0 0
                    00A0: store_actor $BOMBER position_to 0@ 1@ 2@
                    020C: create_explosion 8 at 0@ 1@ 2@
                    break <---- прерываем цикл
....

        0164: disable_marker $MARKER_BOMBER
        01C2: mark_actor_as_no_longer_needed $BOMBER <--- приходим сюда
        0296: unload_special_actor 1  
 

я думаю что если убрать break подрывник будет пытаться подорвать себя, пока не умрет, после чего цикл while 00A2:   actor $BOMBER alive прекратится сам и будет вызван 01C2, чтобы освободить память игры.

#22 Re: Вопросы по скриптингу » Проблемы со скриптом » 04-12-2020 07:12

это всё сразу в main.scm-е пишется

не совсем очевидно из вашего примера, в котором есть директива {$CLEO}, ну да ладно. Из того что бросилось в глаза, подрывник создается с типом 18. В GTA 3 для создания скриптовых персонажей в основном используется тип 21 (Special). Попробуйте с этим типом, может поведение будет иное.

#23 Re: Вопросы по скриптингу » Проблемы со скриптом » 03-12-2020 14:51

Для начала нужно избавиться от всех глобальных переменных, кроме $PLAYER_ACTOR.
Переменную $flag_player_on_mission заменить на $onmission

end_thread заменить на 0A93: terminate_this_custom_script

#24 Re: Программы для GTA » Coords viewer » 20-11-2020 23:39

Там можно было водить курсором поверх изображения карты и при клике на какую-то точку на карте внизу отображались координаты XYZ. Примерно так себе я это помню (было 10 лет назад). Одно время я даже хотел добавить ее в Sanny Builder, но не срослось.

В любом случае удачи с твоей программой.

Board footer

Powered by FluxBB