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

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,953
Загрузил, активировал - игроки падают, кровь течет, но хп как были так и остались(( Есть идеи как реализовать убийство других игроков?
Это всё потому-то сервер доверяет игрокам, а не Local. Тут нужна синхронизация.
 

coilblack

Новичок
1
0
Ребят, как прикрепить 3d text к машине ? если можно, то на примере
Код:
{$CLEO}
thread 'd'
0000:
if 8AF7: get_samp_base_to 33@
then 0A93: end_custom_thread
end
repeat
wait 400
until 0AFA: is_samp_structures_available
0AF8: samp add_message_to_chat "Ìåìîñû" 0xff9a0a
wait 20
0AF8: samp add_message_to_chat "/ass" 0xff9a0a
0B34: samp register_client_command "ass" to_label @fmw
while true
wait 0
end

:fmw      
0B44: samp 9@ = create_3d_text "piw-piw" color 1@ position 2@ 3@ 4@ view_distance 5@ show_behind_walls 6@ attached_to_player 7@ attached_to_vehicle 8@
SAMP.CmdRet()
 
Последнее редактирование:

SEVILLE1

Новичок
2
0
Помогите.
Поставил анти-крашер, поставил самфанкс версией 5.1.1, поставил клео 4.3.16 и все равно крашит.
Винда 7, максималка.
Есть моды.
 

iGO[R]

Новичок
42
1
А как получить координаты игрока по ид?
Чтобы на них потом тп.
 

iGO[R]

Новичок
42
1
Нашел один опкод - 0B2F, получаю координаты, а потом телепортируюсь по ним, но он как то странно телепортируется, как-будто не ко всем игрокам, а к третьей части:

Код:
{$CLEO .cs}

0000: NOP

Thread "MyLife"

0B34: samp register_client_command "мучитель" to_label @Cmd  
   
While true
Wait 0

If 10@ == 1
Then
For 0@ = 0 To 1000
If 0B2F: samp get_streamed_out_player_pos 0@ to $X $Y $Z
Then
Actor.PutAt($PLAYER_ACTOR, $X, $Y, $Z)
Wait 1000 
End
End                                                                                               
End

End

:Cmd
0B12: 10@ = 10@ XOR 1
Samp.CmdRet()
Если есть идеи, как по другому телепортироваться ко всем игрокам на карте, скажите пожалуйста))
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,953
Нашел один опкод - 0B2F, получаю координаты, а потом телепортируюсь по ним, но он как то странно телепортируется, как-будто не ко всем игрокам, а к третьей части:
Этот опкод работает только если сервер это разрешает.


Код:
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
00A0: store_actor 1@ position_to 2@ 3@ 4@
Так ты не сможешь телепортироваться к игроку который вне зоны стрима.
 

iGO[R]

Новичок
42
1
А как этот скрипт работает тогда, раз сервер не дает разрешение? (декомпилировал через декриптор):

Он телепортирует нашего персонажа к случайному игроку.
Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0662: printstring "FINDPLAYERS"
thread "FINDPLAYERS"
wait 0

:FINDPLAYERS_34
wait 0
if and
key_down 70
key_down 80
jf @FINDPLAYERS_34

:FINDPLAYERS_57
wait 0
if or
   not key_down 70
   not key_down 80
jf @FINDPLAYERS_57
018C: play_sound 1058 at 0.0 0.0 0.0
00BC: show_text_highpriority GXT 'CHEAT1' time 2000 flag 1  // Ќњ¦-koљ ak¦њўњpoўa®

:FINDPLAYERS_116
wait 0
10@ = 12224240

:FINDPLAYERS_130
0A8E: 14@ = 10@ + 28 // int
0A8D: 18@ = read_memory 14@ size 4 virtual_protect 0
if or
  18@ == 2
  18@ == 3
jf @FINDPLAYERS_967
0A8D: 17@ = read_memory 10@ size 4 virtual_protect 0
0A8E: 11@ = 10@ + 28 // int
0A8C: write_memory 11@ size 4 value 3 virtual_protect 0
00BE: text_clear_all
01E3: show_text_1number_styled GXT 'NUMBER' number 18@ time 10 style 5  // ~1~
if
  17@ == 500
jf @FINDPLAYERS_256
goto @FINDPLAYERS_967

:FINDPLAYERS_256
0A8E: 14@ = 10@ + 8 // int
0A8D: 20@ = read_memory 14@ size 4 virtual_protect 0
0A8E: 14@ = 10@ + 12 // int
0A8D: 21@ = read_memory 14@ size 4 virtual_protect 0
0A8E: 14@ = 10@ + 16 // int
0A8D: 22@ = read_memory 14@ size 4 virtual_protect 0
05BC: AS_actor $PLAYER_ACTOR jump 1
083C: set_actor $PLAYER_ACTOR velocity_in_direction_XYZ 0.0 0.0 50.0
wait 200
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
wait 100
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
0395: clear_area 1 at 0@ 1@ 2@ radius 999.0
gosub @FINDPLAYERS_1068
if
056D:   actor 23@ defined
jf @FINDPLAYERS_904
if
   Actor.Driving(23@)
jf @FINDPLAYERS_767
if
04A9:   actor 23@ driving_heli
jf @FINDPLAYERS_603
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 0.0 1.0 1.9
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
wait 100
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 0.0 1.0 1.8
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
wait 100
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 0.0 1.0 2.0
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
goto @FINDPLAYERS_904

:FINDPLAYERS_603
wait 0
if
   Actor.Driving(23@)
jf @FINDPLAYERS_767
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 0.0 1.0 1.2
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
wait 100
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 0.0 1.0 1.2
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
wait 100
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 0.0 1.0 1.2
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
goto @FINDPLAYERS_904

:FINDPLAYERS_767
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 1.0 0.0 0.8
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
wait 100
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 1.0 0.0 0.8
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
wait 100
04C4: store_coords_to 20@ 21@ 22@ from_actor 23@ with_offset 1.0 0.0 0.8
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)

:FINDPLAYERS_904
018C: play_sound 1057 at 0.0 0.0 0.0

:FINDPLAYERS_924
wait 0
if and
key_down 70
key_down 80
jf @FINDPLAYERS_924
018C: play_sound 1058 at 0.0 0.0 0.0

:FINDPLAYERS_967
10@ += 40
if
  10@ > 12231240
jf @FINDPLAYERS_130
goto @FINDPLAYERS_116

:FINDPLAYERS_1002
wait 0
if or
   not key_down 70
   not key_down 80
jf @FINDPLAYERS_1002
018C: play_sound 1057 at 0.0 0.0 0.0
00BC: show_text_highpriority GXT 'CHEAT8' time 2000 flag 1  // Ќњ¦-koљ o¦kћ«¤e®
goto @FINDPLAYERS_34

:FINDPLAYERS_1068
0AB3: var 900 = 0
0AB3: var 901 = 0
run "FINDPLAYER.S"

:FINDPLAYERS_1099
wait 80
if or
   not key_down 70
   not key_down 80
jf @FINDPLAYERS_1195
0AB4: 28@ = var 900
if
   not 28@ == 0
jf @FINDPLAYERS_1099
0AB4: 23@ = var 901
if
056D:   actor 23@ defined
jf @FINDPLAYERS_1179
goto @FINDPLAYERS_1193

:FINDPLAYERS_1179
29@ = -1
goto @FINDPLAYERS_1193

:FINDPLAYERS_1193
return

:FINDPLAYERS_1195
0ABA: end_custom_thread_named 'FINDPLAYER'
goto @FINDPLAYERS_1179
wait 16777216
hex
4D 4F 0F 42 59 20 53 48 41 47 47 59 00 59 27 08
36 54 00 4E 53 0F 4E 45 57 52 4F 43 4B 53 54 41
52 2E 44 4F 2E 41
end
jf
hex
00 65 09 32 30 31
end

0882: NOP
hex
48 45 58 02 00 01 65 FB
 

iGO[R]

Новичок
42
1
И еще, подскажите пожалуйста, почему этот код крашит:

Код:
{$CLEO .cs}

//—————————————————————————MAIN—————————————————————————
0000: NOP 

Thread "MyLife"

0B34: samp register_client_command "мучитель" to_label @Cmd   
End
    
While true
Wait 0

If 10@ == 1
Then
For $Actors = 0 To 1000 
If 0B20: samp $Zone = actor_handle_by_samp_player_id $Actors   
Then   
If 056D: actor $Zone defined
Then 
If 00A0: store_actor $Actors position_to $X $Y $Z
Then                                                                  
Actor.PutAt($PLAYER_ACTOR, $X, $Y, $Z)                                                                      
Wait 1000  
End
End                                                                                                
End
End
End

End

:Cmd
0B12: 10@ = 10@ XOR 1
Samp.CmdRet()
 

iGO[R]

Новичок
42
1
Ой блин ошибочка в коде, вот новый код:

Код:
{$CLEO .cs}

//—————————————————————————MAIN—————————————————————————
0000: NOP

Thread "MyLife"

0B34: samp register_client_command "мучитель" to_label @Cmd
End

While true
Wait 0

If 10@ == 1
Then
For $Actors = 0 To 1000
If 0B20: samp $Zone = actor_handle_by_samp_player_id $Actors
Then
If 056D: actor $Zone defined
Then
If 00A0: store_actor $Zone position_to $X $Y $Z
Then                                                             
Actor.PutAt($PLAYER_ACTOR, $X, $Y, $Z)                                                                 
Wait 1000
End
End                                                                                           
End
End
End

End

:Cmd
0B12: 10@ = 10@ XOR 1
Samp.CmdRet()

Dark_Knight, пробовал убирать глобальные переменные, все равно крашило. :)
Ну да это уже не важно, ибо ошибочка в коде была - исправил, теперь варнингов и краша нет, но скрипт не работает (персонаж не тп к игрокам) :(
 
Последнее редактирование:

Dark_Knight

Me, me and me.
Друг
4,056
2,075
Потому, что нехер юзать глоб. переменные. В клео разрешены только локальные. Так же добавь проверку, что игрок подключен к серверу.
 
Последнее редактирование:

iGO[R]

Новичок
42
1
Dark_Knight, так?:
Убрал глобальные переменные, и добавил проверку подключен ли игрок к серверу - результат не порадовал, все равно не тп к игрокам в зоне стрима.

Код:
{$CLEO .cs}

0000: NOP

0B34: samp register_client_command "мучитель" to_label @Cmd  
   
While true
Wait 0

If 10@ == 1
Then
For 0@ = 0 To 1000
If Samp.IsPlayerConnected(0@)
Then
If 0B20: samp 1@ = actor_handle_by_samp_player_id 0@  
Then  
If 056D: actor 1@ defined
Then
If 00A0: store_actor 1@ position_to 2@ 3@ 4@      
Then                                                                   
Actor.PutAt($PLAYER_ACTOR, 2@, 3@, 4@)
Print "Torment..." 100                                                                     
Wait 1000              
End
End                                                                                               
End
End
End
End

End

:Cmd
0B12: 10@ = 10@ XOR 1
Samp.CmdRet()
Мне кажется координаты другого игрока не записываются в переменные.
 

kraft1k

Вынь х*й из головы и все получится © hnnssy
Друг
1,479
1,160
Мне надо сделать бота который будет бегать по чекпоинтам и вовремя чекпоинта чтобы анимка не сбивалась.
Код:
{$CLEO .cs}
0000:NOP

repeat
wait 0
until Samp.Available()
0B34: samp register_client_command "ferma" to_label @cmd

:3
wait 0
if 10@ == 1
jf @3
jump @4

:4
wait 0
0ACC: show_text_lowpriority "BOT Ferma ~g~ON" time 1000
jump @1
 
:1
while true
wait 0   
    if 10@ == 1         
    then                                                                    
        Actor.StorePos($PLAYER_ACTOR, 3@, 4@, 5@)
        0AB1: call @StoreClosestMarkerPos 0 X 7@ Y 8@ Z 9@
        0AB3: var 740 = 2
        wait 1000
        05D3: AS_actor $PLAYER_ACTOR goto_point 7@ 8@ 9@ mode 6 time 30000 ms
        wait 2000      
        if 10@ == 0
        then
        10@ = 0
        0AB3: var 740 = 0
        0ACC: show_text_lowpriority "BOT Ferma ~r~OFF" time 1000
        0687: clear_actor $PLAYER_ACTOR task
        goto @3
        end
    end
end

:cmd
0B12: 10@ = 10@ XOR 1
Samp.CmdRet()


:storeclosestmarkerpos
12@ = 9999.0
for 0@ = 0 to 31
     0085: 1@ = 0@
     1@ *= 160
     1@ += 0xC7DD58
     1@ += 48
     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 
     00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@   
     050A: 8@ = distance_between_XYZ 2@ 3@ 4@ and_XYZ 5@ 6@ 7@
     if
         0025: 12@ > 8@
     then
         0087: 12@ = 8@
         0087: 9@ = 2@
         0087: 10@ = 3@
         0087: 11@ = 4@    
     end
end
0AB2: ret 3 9@ 10@ 11@