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

C&J

Известный
41
22
Здравствуйте,возможно ли возле ника игрока изменить его id?
Знаю что данная функция меняет ник игрока
:None_37
0C17: 3@ = strlen 1@
2@ = SAMP.GetPlayerStruct(0@)
2@ += 8 // 8
0C11: memset destination 2@ value 0 size 16
0C10: memcpy destination 2@ source 1@ size 3@
2@ += 16 // 16
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0
ret 0
 
Последнее редактирование:

Vovich

HOT
Проверенный
717
197
Где ошибка?
PHP:
{$CLEO}
0000:
repeat
    wait 0
until Samp.Available()
while true
wait 0
    alloc 10@ 0x80
    0B75: samp get_chat_string 99 text_to 10@ prefix_to 6@ color_to 7@ prefix_color_to 8@
    if 0C18: 31@ = strstr string1 10@ string2 "можно заправить на %d" 1@
    then
        0af9: say_to_chat "/fill %d" 1@
        wait 1337
    end
    free 10@
end
Так нельзя:
Код:
0C18: 31@ = strstr string1 10@ string2 "можно заправить на %d" 1@

Нужно через формат:
Код:
alloc 11@ 128
0ad3: 10@ = format "можно заправить на %d" 1@
if 0C18: 31@ = strstr string1 10@ string2 11@ 
then
 

Vovich

HOT
Проверенный
717
197
Вот так? Я в принципе понял, но крашит почему-то. Покажи ошибку)
PHP:
{$CLEO}
0000:
repeat
    wait 0
until Samp.Available()
while true
wait 0
    alloc 11@ 128
    0ad3: 10@ = format "можно заправить на %d" 1@
    if 0C18: 31@ = strstr string1 10@ string2 11@
    then
        0af9: say_to_chat "/fill %d" 1@
        wait 1337
    end
    free 10@
end
Там где "free 10@", надо заменить на "free 11@"?
Не, не мудри, у тебя ни памяти не выделено, и текст из строки не полул, вообщем вот готовый код
Код:
{$CLEO}
0000:
repeat
  wait 0
until Samp.Available()
while true
wait 0
  alloc 11@ 128
  alloc 10@ 128
  alloc 1@ 128
  0B75: samp get_chat_string 99 text_to 10@ prefix_to 6@ color_to 7@ prefix_color_to 8@
  0ad3: 11@ = format "можно заправить на %d" 1@
  if 0C18: 31@ = strstr string1 10@ string2 11@
  then
  0af9: say_to_chat "/fill %d" 1@
  wait 1337
  end
  free alloc 10@
  free alloc 11@
  free alloc 1@
end
 

SR_team

like pancake
BH Team
4,720
6,371
Здравствуйте,возможно ли возле ника игрока изменить его id?
Знаю что данная функция меняет ник игрока
:None_37
0C17: 3@ = strlen 1@
2@ = SAMP.GetPlayerStruct(0@)
2@ += 8 // 8
0C11: memset destination 2@ value 0 size 16
0C10: memcpy destination 2@ source 1@ size 3@
2@ += 16 // 16
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0
ret 0
ну и норм, меняешь заодно ник пользователю с нужным ID и все
 
  • Нравится
Реакции: C&J

hnnssy

Известный
Друг
2,684
2,749
Код:
{$CLEO}
{$INCLUDE SF}
  
0001: wait 0 ms
  
repeat
  wait 400
until 0AFA:  is_samp_available

0b34: "fake" @ber

0AC8: 2@ = allocate_memory_size 64

while true
wait 0
if
0@ == 1
then
0B35: samp 1@ = get_last_command_params
if
0AD4: 2@ = scan_string 1@ format "%d" 5@
then
0B20: samp 3@ = actor_handle_by_samp_player_id 5@
if
Player.Defined(3@)
then
046C: 6@ = car $PLAYER_ACTOR driver
0B2C: samp 4@ = get_vehicle_id_by_car_handle 6@
04C4: store_coords_to 11@ 12@ 13@ from_actor 3@ with_offset 0.0 0.0 -1.0
0@ = 0
0AC9: free_allocated_memory 2@
while Player.Defined(3@)
wait 300
call @SendIncarFakeSpeedSync 4 11@ 12@ 13@ 4@
end
else
0@ = 0
0af8: "Æåðòâà ìåðòâà" color -571754
end
else
0@ = 0
0af8: "/fake [id]" color -51741
end
end
end

  
:SendIncarFakeSpeedSync
4@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
4@ = SAMP.GetPlayerStruct(4@)
4@ += 170
0AC8: 5@ = allocate_memory_size 63
0C10: memcpy destination 5@ source 4@ size 63
0C0D: struct 5@ offset 36 size 4 = 6.0
0C0D: struct 5@ offset 40 size 4 = 6.0
0C0D: struct 5@ offset 44 size 4 = 6.0
0B3D: raknet 6@ = new_bit_stream
0B40: raknet bit_stream 6@ write 200 type 0 size 1
0B40: raknet bit_stream 6@ write 5@ type 5 size 63
0B42: raknet send bit_stream 6@ priority 1 reliability 7 ordering_channel 0
0B3E: raknet delete_bit_stream 6@
0AC9: free_allocated_memory 5@
ret 0

:ber
0@ = 1
0b43:


Почему идут варнинги?
Потому что код неверный.
046C: 6@ = car $PLAYER_ACTOR driver
Это опкод получения хэндла водителя по хэндлу автомобиля.
 

test132

Новичок
28
2
Здравствуйте. Можно пример кода, или ссылку на документацию работы с онлайн радио? Нужно только включать и выключать стрим внутри игры. Спасибо!
 

hnnssy

Известный
Друг
2,684
2,749
Как сделать равность float или int переменных условием проверки?
Если одинаковые типы данных в переменных, то
if
0@ == 1@
then
printf "odinakovie zna4enija" 1000
else
printf "raznie" 1000
end
Если разные типы, то сначала привести к одному.
 
  • Нравится
Реакции: Andrewvv

Goldfish

Известный
106
22
такой вопрос:
0AD9: write_formatted_text "text %c%c" in_file 1@ 0xD 0xA
как известно 0xD 0xA - символы переноса

но пойму использовать можно только один из них .. так?