Вопросы по CLEO-скриптингу

Terratomorf

Известный
315
58
Как сделать чтоб при запуске игры когда появлялась заставка сампфункса открывалась конслось и туда писалась активация моего Cleo скрипта.?
 

Terratomorf

Известный
315
58
Как сделать активацию через консоль?
Код:
0000: NOP

repeat
wait 0
until samp.Available()

:Noname_73
0B34: samp register_client_command "tp" to_label @Noname_1261
0BE3: raknet setup_incoming_rpc_hook @Noname_1756
0BE2: raknet setup_outcoming_packet_hook @Noname_1715

:Noname_168
wait 0
if
   not 19@ == 0
jf @Noname_473
call @Noname_2176 2 260 1 2@
format 3@v "TP%d" 19@
if
0AF4: 2@ = read_string_from_ini_file "cleo\TP.ini" section 3@v key "Name"
jf @Noname_461
chatmsg "[TP] “елепортируемс¤ к точке: {ffffff}%s" 7115439 2@
0AF2: 7@ = get_float_from_ini_file "cleo\TP.ini" section 3@v key "PosX"
0AF2: 8@ = get_float_from_ini_file "cleo\TP.ini" section 3@v key "PosY"
0AF2: 9@ = get_float_from_ini_file "cleo\TP.ini" section 3@v key "PosZ"
0AF0: 12@ = get_int_from_ini_file "cleo\TP.ini" section 3@v key "ConfirmTimer"
10@ = 1

:Noname_461
free 2@
19@ = 0

:Noname_473
if
  10@ == 1
jf @Noname_526
32@ = 0
10@ = 2
Actor.PutAt($PLAYER_ACTOR, 7@, 8@, 9@)
goto @Noname_625

:Noname_526
if
  10@ == 2
jf @Noname_625
call @Noname_2210 3 7@ 8@ 9@
if
002D:   32@ >= 12@ // (int)
jf @Noname_625
chatmsg "[TP] “елепорт завершен" 7115439
10@ = 0

:Noname_625
if
   SAMP.DialogRespond(666, 5@, 6@, 0)
jf @Noname_1254
if
  5@ == 1
jf @Noname_1254
if
  6@ == 0
jf @Noname_727
chatmsg "[TP] “елепорт отменен" 7115439
goto @Noname_1254

:Noname_727
if
  6@ == 1
jf @Noname_990
if
0AB6: store_target_marker_coords_to 7@ 8@ 9@ // IF and SET
jf @Noname_939
04E4: refresh_game_renderer_at 7@ 8@
Camera.SetAtPos(7@, 8@, 9@)
select_interior 0
0860: link_actor $PLAYER_ACTOR to_interior 0
02CE: 9@ = ground_z_at 7@ 8@ 500.0
0AF0: 12@ = get_int_from_ini_file "cleo\TP.ini" section "Settings" key "MapTPTime"
chatmsg "[TP] “елепортируемс¤ к точке: {ffffff}“елепорт по метке" 7115439
10@ = 1
goto @Noname_983

:Noname_939
chatmsg "[TP] ѕоставьте метку на карте!" 7115439

:Noname_983
goto @Noname_1254

:Noname_990
if
  6@ == 2
jf @Noname_1221
if
call @Noname_2335 0
jf @Noname_1171
call @Noname_2433 0 7@ 8@ 9@
0AF0: 12@ = get_int_from_ini_file "cleo\TP.ini" section "Settings" key "CPTPTime"
chatmsg "[TP] “елепортируемс¤ к точке: {ffffff}“елепорт по GPS" 7115439
10@ = 1
goto @Noname_1214

:Noname_1171
chatmsg "[TP] Ќет активного чекпоинта!" 7115439

:Noname_1214
goto @Noname_1254

:Noname_1221
if
  6@ >= 3
jf @Noname_1254
6@ -= 2
0085: 19@ = 6@ // (int)

:Noname_1254
goto @Noname_168

:Noname_1261
   SAMP.IsCommandTyped(18@)
if
8AD4:   not 18@ = scan_string 18@ format "%d" 19@
jf @Noname_1713
if
0AAB:   file_exists "cleo\TP.ini"
jf @Noname_1671
call @Noname_2176 2 1024 1 0@
call @Noname_2176 2 260 1 2@
call @Noname_2176 2 260 1 4@
format 0@ "ќтменить телепорт%c“елепорт по метке на карте%c“елепорт по GPS чекпоинту%c" 10 10 10
1@ = 1

:Noname_1472
wait 0
format 3@v "TP%d" 1@
if
0AF4: 2@ = read_string_from_ini_file "cleo\TP.ini" section 3@v key "Name"
jf @Noname_1581
format 4@ "{4271FF}%d.{FFFFFF} %s%c" 1@ 2@ 10
0C15: strcat destination 0@ source 4@

:Noname_1581
1@ += 1
  1@ > 50
jf @Noname_1472
SAMP.ShowDialog(666, "{FFFF66}“елепорт", 0@, "“елепорт", "«акрыть", DIALOG_STYLE_LIST)
free 0@
free 2@
free 4@
goto @Noname_1713

:Noname_1671
chatmsg "[TP] ‘айл настроек не найден" 7115439

:Noname_1713
SAMP.CmdRet

:Noname_1715
0BE5: raknet 11@ = get_hook_param 1
if and
  10@ == 2
  11@ == 207
jf @Noname_1752
0BE0: raknet hook_ret 0

:Noname_1752
0BE0: raknet hook_ret 1

:Noname_1756
0BE5: raknet 17@ = get_hook_param 1
if
  17@ == 93
jf @Noname_2172
0BE5: raknet 13@ = get_hook_param 0
14@ = BitStream.Read(13@, 3)
15@ = BitStream.Read(13@, 3)
call @Noname_2176 2 256 1 16@
BitStream.ReadArray(13@, 16@, 15@)
if
0C14: strcmp string1 16@ string2 "ƒобро пожаловать на Diamond Role Play!"
jf @Noname_2099
chatmsg "[TP] ƒл¤ телепорта введите команду {ffffff}/tp{6c92af} выберите точку дл¤ телепорта" 7115439
chatmsg "[TP] “ак же можно использовать {ffffff}/tp [1-50]{6c92af} дл¤ телепорта на точку" 7115439
free 16@
0BE0: raknet hook_ret 0

:Noname_2099
if
0C14: strcmp string1 16@ string2 "¬ы были кикнуты по подозрению в читерстве"
jf @Noname_2167
free 16@
0BE0: raknet hook_ret 0

:Noname_2167
free 16@

:Noname_2172
0BE0: raknet hook_ret 1

:Noname_2176
005A: 0@ += 1@ // (int)
alloc 2@ 0@
0C11: memset destination 2@ value 0 size 0@
ret 1 2@

:Noname_2210
alloc 3@ 18
0C0D: struct 3@ offset 0 size 2 = 0
0C0D: struct 3@ offset 2 size 2 = 0
0C0D: struct 3@ offset 4 size 2 = 0
0C0D: struct 3@ offset 6 size 4 = 0@
0C0D: struct 3@ offset 10 size 4 = 1@
0C0D: struct 3@ offset 14 size 4 = 2@
4@ = BitStream.New()
BitStream.Write(4@, 212, BS_TYPE_BYTE, 1)
BitStream.Write(4@, 3@, BS_TYPE_ARRAY, 18)
RakNet.LiteSend(4@)
BitStream.Delete(4@)
free 3@
ret 0

:Noname_2335
0AA2: 0@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 0@ + 2203916 // int
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 36
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
if
  1@ == 1
jf @Noname_2421
return_true
goto @Noname_2423

:Noname_2421
return_false

:Noname_2423
0AA3: free_library 0@
ret 0

:Noname_2433
0AA2: 0@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 0@ + 2203916 // int
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 12
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4
0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4
0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0
0AA3: free_library 0@
ret 3 2@ 3@ 4@
x      __SBFTR
 

хуесос)

Известный
263
64
Как сделать активацию через консоль?
Код:
0000: NOP

repeat
wait 0
until samp.Available()

:Noname_73
0B34: samp register_client_command "tp" to_label @Noname_1261
0BE3: raknet setup_incoming_rpc_hook @Noname_1756
0BE2: raknet setup_outcoming_packet_hook @Noname_1715

:Noname_168
wait 0
if
   not 19@ == 0
jf @Noname_473
call @Noname_2176 2 260 1 2@
format 3@v "TP%d" 19@
if
0AF4: 2@ = read_string_from_ini_file "cleo\TP.ini" section 3@v key "Name"
jf @Noname_461
chatmsg "[TP] “елепортируемс¤ к точке: {ffffff}%s" 7115439 2@
0AF2: 7@ = get_float_from_ini_file "cleo\TP.ini" section 3@v key "PosX"
0AF2: 8@ = get_float_from_ini_file "cleo\TP.ini" section 3@v key "PosY"
0AF2: 9@ = get_float_from_ini_file "cleo\TP.ini" section 3@v key "PosZ"
0AF0: 12@ = get_int_from_ini_file "cleo\TP.ini" section 3@v key "ConfirmTimer"
10@ = 1

:Noname_461
free 2@
19@ = 0

:Noname_473
if
  10@ == 1
jf @Noname_526
32@ = 0
10@ = 2
Actor.PutAt($PLAYER_ACTOR, 7@, 8@, 9@)
goto @Noname_625

:Noname_526
if
  10@ == 2
jf @Noname_625
call @Noname_2210 3 7@ 8@ 9@
if
002D:   32@ >= 12@ // (int)
jf @Noname_625
chatmsg "[TP] “елепорт завершен" 7115439
10@ = 0

:Noname_625
if
   SAMP.DialogRespond(666, 5@, 6@, 0)
jf @Noname_1254
if
  5@ == 1
jf @Noname_1254
if
  6@ == 0
jf @Noname_727
chatmsg "[TP] “елепорт отменен" 7115439
goto @Noname_1254

:Noname_727
if
  6@ == 1
jf @Noname_990
if
0AB6: store_target_marker_coords_to 7@ 8@ 9@ // IF and SET
jf @Noname_939
04E4: refresh_game_renderer_at 7@ 8@
Camera.SetAtPos(7@, 8@, 9@)
select_interior 0
0860: link_actor $PLAYER_ACTOR to_interior 0
02CE: 9@ = ground_z_at 7@ 8@ 500.0
0AF0: 12@ = get_int_from_ini_file "cleo\TP.ini" section "Settings" key "MapTPTime"
chatmsg "[TP] “елепортируемс¤ к точке: {ffffff}“елепорт по метке" 7115439
10@ = 1
goto @Noname_983

:Noname_939
chatmsg "[TP] ѕоставьте метку на карте!" 7115439

:Noname_983
goto @Noname_1254

:Noname_990
if
  6@ == 2
jf @Noname_1221
if
call @Noname_2335 0
jf @Noname_1171
call @Noname_2433 0 7@ 8@ 9@
0AF0: 12@ = get_int_from_ini_file "cleo\TP.ini" section "Settings" key "CPTPTime"
chatmsg "[TP] “елепортируемс¤ к точке: {ffffff}“елепорт по GPS" 7115439
10@ = 1
goto @Noname_1214

:Noname_1171
chatmsg "[TP] Ќет активного чекпоинта!" 7115439

:Noname_1214
goto @Noname_1254

:Noname_1221
if
  6@ >= 3
jf @Noname_1254
6@ -= 2
0085: 19@ = 6@ // (int)

:Noname_1254
goto @Noname_168

:Noname_1261
   SAMP.IsCommandTyped(18@)
if
8AD4:   not 18@ = scan_string 18@ format "%d" 19@
jf @Noname_1713
if
0AAB:   file_exists "cleo\TP.ini"
jf @Noname_1671
call @Noname_2176 2 1024 1 0@
call @Noname_2176 2 260 1 2@
call @Noname_2176 2 260 1 4@
format 0@ "ќтменить телепорт%c“елепорт по метке на карте%c“елепорт по GPS чекпоинту%c" 10 10 10
1@ = 1

:Noname_1472
wait 0
format 3@v "TP%d" 1@
if
0AF4: 2@ = read_string_from_ini_file "cleo\TP.ini" section 3@v key "Name"
jf @Noname_1581
format 4@ "{4271FF}%d.{FFFFFF} %s%c" 1@ 2@ 10
0C15: strcat destination 0@ source 4@

:Noname_1581
1@ += 1
  1@ > 50
jf @Noname_1472
SAMP.ShowDialog(666, "{FFFF66}“елепорт", 0@, "“елепорт", "«акрыть", DIALOG_STYLE_LIST)
free 0@
free 2@
free 4@
goto @Noname_1713

:Noname_1671
chatmsg "[TP] ‘айл настроек не найден" 7115439

:Noname_1713
SAMP.CmdRet

:Noname_1715
0BE5: raknet 11@ = get_hook_param 1
if and
  10@ == 2
  11@ == 207
jf @Noname_1752
0BE0: raknet hook_ret 0

:Noname_1752
0BE0: raknet hook_ret 1

:Noname_1756
0BE5: raknet 17@ = get_hook_param 1
if
  17@ == 93
jf @Noname_2172
0BE5: raknet 13@ = get_hook_param 0
14@ = BitStream.Read(13@, 3)
15@ = BitStream.Read(13@, 3)
call @Noname_2176 2 256 1 16@
BitStream.ReadArray(13@, 16@, 15@)
if
0C14: strcmp string1 16@ string2 "ƒобро пожаловать на Diamond Role Play!"
jf @Noname_2099
chatmsg "[TP] ƒл¤ телепорта введите команду {ffffff}/tp{6c92af} выберите точку дл¤ телепорта" 7115439
chatmsg "[TP] “ак же можно использовать {ffffff}/tp [1-50]{6c92af} дл¤ телепорта на точку" 7115439
free 16@
0BE0: raknet hook_ret 0

:Noname_2099
if
0C14: strcmp string1 16@ string2 "¬ы были кикнуты по подозрению в читерстве"
jf @Noname_2167
free 16@
0BE0: raknet hook_ret 0

:Noname_2167
free 16@

:Noname_2172
0BE0: raknet hook_ret 1

:Noname_2176
005A: 0@ += 1@ // (int)
alloc 2@ 0@
0C11: memset destination 2@ value 0 size 0@
ret 1 2@

:Noname_2210
alloc 3@ 18
0C0D: struct 3@ offset 0 size 2 = 0
0C0D: struct 3@ offset 2 size 2 = 0
0C0D: struct 3@ offset 4 size 2 = 0
0C0D: struct 3@ offset 6 size 4 = 0@
0C0D: struct 3@ offset 10 size 4 = 1@
0C0D: struct 3@ offset 14 size 4 = 2@
4@ = BitStream.New()
BitStream.Write(4@, 212, BS_TYPE_BYTE, 1)
BitStream.Write(4@, 3@, BS_TYPE_ARRAY, 18)
RakNet.LiteSend(4@)
BitStream.Delete(4@)
free 3@
ret 0

:Noname_2335
0AA2: 0@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 0@ + 2203916 // int
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 36
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
if
  1@ == 1
jf @Noname_2421
return_true
goto @Noname_2423

:Noname_2421
return_false

:Noname_2423
0AA3: free_library 0@
ret 0

:Noname_2433
0AA2: 0@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 0@ + 2203916 // int
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 12
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4
0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4
0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0
0AA3: free_library 0@
ret 3 2@ 3@ 4@
x      __SBFTR
Сверху опкод
 

The Spark

Известный
656
688
CLEO:
17@ = 111
18@  = 222
19@  = 101
14@  = 100
15@ = 130
16@ = 150

4@ = Actor.Health($PLAYER_ACTOR)
0093: 4@ = integer 4@ to_float
0AB1: call_scm_func @drawBar 6 coords_X 564.5 coords_Y 58.5 value 4@ size X 110.0 Y 7.0 thickness 2.0

:drawBar
13@ = 100.0
0073: 13@ /= 3@ // (float)
0073: 2@ /= 13@ // (float)
0087: 11@ = 3@ // (float)
0087: 12@ = 4@ // (float)
005B: 11@ += 5@  // (float)
005B: 12@ += 5@  // (float)    
038E: draw_box_position 0@ 1@ size 11@ 12@ RGBA 0 0 0 255
038E: draw_box_position 0@ 1@ size 3@ 4@ RGBA 100 100 155 255 //17@ 18@ 19@ 255
0087: 10@ = 2@ // (float)
0017: 10@ /= 2.0
0017: 3@ /= 2.0
005B: 0@ += 10@  // (float)
0063: 0@ -= 3@  // (float)
038E: draw_box_position 0@ 1@ size 2@ 4@ RGBA 150 130 255 255 // 14@ 15@ 16@ 255
0AB2: ret 0

Как мне занести в scm переменные которые выше и вставить их в цвета RGBA?
 

The Spark

Известный
656
688
как я понимаю, они там в виде текстдрава?
CLEO:
0C5A: samp textdraw 0@ get_string_to 1@ // получить содержание текстдрава
0C5E: samp textdraw 0@ delete // удалить текстдрав

Получил я в переменную текст: ~w~22~y~:~w~47 ,Как мне убрать всю эту ересть и оставить 22:47?
 
Последнее редактирование:

Harryss

Участник
233
26
Функцию с тем, как получить ID игрока по хэндлу, прицелу, нигде не нашел. Подскажет кто?
 

хуесос)

Известный
263
64
Функцию с тем, как получить ID игрока по хэндлу, прицелу, нигде не нашел. Подскажет кто?
CLEO:
0AD2: 1@ = player $PLAYER_CHAR targeted_actor // получаем Хендл.
0B2B: samp 2@ = get_player_id_by_actor_handle 1@ // Получаем ID po handle в переменную 2
Пример.
CLEO:
{$CLEO .cs}
0000:

//-------------MAIN---------------

while true // Беск. цикл
 wait 0 // Не крашило
  if and // Проверка с 2+ усолвиями
  0AD2: 1@ = player $PLAYER_CHAR targeted_actor // проверка на то что игрок прицелен на другого игрока.
 0ab0: 49 // Нажата клавиша 1
  then // Если условие выполненно, то.
 alloc 2@ 14 // Выделяем память. 
  0AD2: 1@ = player $PLAYER_CHAR targeted_actor // получаем Хендл.
  0B2B: samp 2@ = get_player_id_by_actor_handle 1@ // Получаем ID po handle в переменную 2
  chatmsg "%d" 2@ // Выводим в чат ID.
  free 2@ // Освобождаем память.
 end
end
 
Последнее редактирование:
  • Нравится
Реакции: Harryss

Dimoman

Новичок
24
0
Помогите, плиз! Вот кусок кода для перемещения колес автомобиля по оси Y. Но мне нужно перемещение по оси Z. Работает перемещение по X, по Y, а по Z никак не хотят колеса двигаться!
Код:
:NONAME_12
wait 0
0A97: 1@ = car 0@ struct
0A97: 2@ = car 0@ struct
0A97: 3@ = car 0@ struct 
0A97: 4@ = car 0@ struct 
1@ += 0x650
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x10
1@ += 52
2@ += 0x65C
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
2@ += 0x10
2@ += 52
3@ += 0x658
0A8D: 3@ = read_memory 3@ size 4 virtual_protect 0
3@ += 0x10
3@ += 52
4@ += 0x664
0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
4@ += 0x10
4@ += 52
jump @NONAME_13

:NONAME_13
wait 50
if
00E1:   player 0 pressed_key 11
then
5@ += 0.01 
end
if
00E1:   player 0 pressed_key 10
then
5@ -= 0.01 
end
if or
1@ <> 0
2@ <> 0
3@ <> 0
4@ <> 0
then
0A8C: write_memory 1@ size 4 value 5@ virtual_protect 0
0A8C: write_memory 2@ size 4 value 5@ virtual_protect 0
0A8C: write_memory 3@ size 4 value 5@ virtual_protect 0
0A8C: write_memory 4@ size 4 value 5@ virtual_protect 0
end
jump @NONAME_13