Resource icon

CLEO Release rain.cs + rainV2.cs [Vehicle trolling mod]

CLEO related
Status
Not open for further replies.

monday

Expert
Joined
Jun 23, 2014
Messages
1,126
Reaction score
154
This mod teleports all unoccupied vehicles from the surrounding area over specific player or saved position. Mod is easly detectable by anticheat. Requires Cleo 4.1. The mod is being updated frequently, please let me know if there are any bugs, thanks.

rain.cs

Commands:
/raininfo - displays all the commands
/rain <ID> - set rain over specific player
/rainfew <ID> <number of cars> - set rain over specific player with custom number of cars
/count - display the number of streamed in vehicles
/savepos - save your current position
/rainpos - set rain over your last saved position
/carpos <carID> - put specific car at your last saved position
/delpos - delete your last saved position

Updates:

- fixed game freezing when the player is not connected/not streamed in
- added /carpos <carID> + fixed 0B30/0B31 opcodes (mod became invisible for Mrucznik's RP anti-cheat)
- fixed /carpos synchronization

Bugs:
-Inability to change your weapon after using the mod.
It seems like :Sync_in and :Sync_out cause the problem because removing both solved it. However without synchronization the whole mod is useless because others can't even see the cars, I have no idea how to fix this bug so any advice from someone who has more knowledge would be appreciated.
-Two users reported game freezing when you use it more than 5 times in a row

Crash?
Check this out:
http://ugbase.eu/tutorials/%28tut%29-fix-cleo-crashes!/

Special thanks for sharing the knowledge to:
BlackHat
pepeelpubero
Springfield
D.Kay
Opcode.exe
PopandaulX

Video:
http://youtu.be/bPHrDpGEVHs



Code:
{$CLEO .cs}
0000: NOP

0B34: samp register_client_command "rain" to_label @start
0B34: samp register_client_command "rainfew" to_label @start_few
0B34: samp register_client_command "count" to_label @count_cars
0B34: samp register_client_command "savepos" to_label @save_pos
0B34: samp register_client_command "rainpos" to_label @rain_pos
0B34: samp register_client_command "delpos" to_label @del_pos
0B34: samp register_client_command "carpos" to_label @car_pos_activation
0B34: samp register_client_command "raininfo" to_label @Info



:First
wait 0
  if 29@ == 2
  then jump @car_pos
  end
if 29@ == 1
jf @First     
0B2E: 11@ = read_samp_memory 0x12D60 size 2
0B2D: write samp_memory 0x12D60 value 0xC390 size 2
0B2E: 12@ = read_samp_memory 0x13FA0 size 2
0B2D: write samp_memory 0x13FA0 value 0xC390 size 2
0B2E: 13@ = read_samp_memory 0x4830 size 1
0B2D: write samp_memory 0x4830 value 0xC3 size 1
wait 500
for 5@ = 0 to 999
     if 0AFF: samp 0@ = car_handle_by_samp_vehicle_id 5@
     then
        0B30: samp send_enter_vehicle 5@ as_passenger false
        00AB: put_car 0@ at 21@ 22@ 23@ 
        23@ += 3.0
        0AB1: call_scm_func @SYNC_INN 1 HANDLE 0@
        wait 0
        0AB1: @SYNC_OUT 0
        wait 0
        0B31: samp send_exit_vehicle 5@
            if                     //5 cars max
            0029:   23@ > 20@ //5 cars max
            then                //5 cars max
            jump @Second         //5 cars max
            end                   //5 cars max
     
               
     end 
end
:Second   //5 cars max
wait 0
0B2D: write samp_memory 0x12D60 value 11@ size 2
0B2D: write samp_memory 0x13FA0 value 12@ size 2
0B2D: write samp_memory 0x4830 value 13@ size 1
wait 500
29@ = 0
20@ = 0 //reset 20 value to make it work later
jump @First

:SYNC_INN
0A97: 2@ = car 0@ struct
0A96: 3@ = actor $PLAYER_ACTOR struct
3@ += 1328
0A8C: write_memory 3@ size 4 value 50 virtual_protect 0
0A96: 3@ = actor $PLAYER_ACTOR struct
3@ += 1420
0A8C: write_memory 3@ size 4 value 2@ virtual_protect 0
0AB2: ret 0

:SYNC_OUT
0A96: 0@ = actor $PLAYER_ACTOR struct
0@ += 0x530 // State = 0, leaving car
0A8C: write_memory 0@ size 4 value 1 virtual_protect 0 
0AB2: ret 0  

:start
wait 0 
   SAMP.IsCommandTyped(31@)
     if
     0AD4: 30@ = scan_string 31@ format "%d" 6@
     then
         if
         0B23:  samp is_player_connected 6@
         jf @Not_connected
     0B20: samp 28@ = actor_handle_by_samp_player_id 6@
        if 
        056D:   actor 28@ defined
        jf @Too_far
     00A0: store_actor 28@ position_to 21@ 22@ 23@
     0085: 20@ = 23@
     20@ += 1000.0
     jump @Activation
     end

:start_few
wait 0 
   SAMP.IsCommandTyped(27@)
if 
0AD4: 30@ = scan_string 27@ format "%d %d" 6@ 7@
else_jump @First
    if
         0B23:  samp is_player_connected 6@
         jf @Not_connected
     0B20: samp 28@ = actor_handle_by_samp_player_id 6@
        if 
        056D:   actor 28@ defined
        jf @Too_far
00A0: store_actor 28@ position_to 21@ 22@ 23@
0085: 20@ = 23@ 
   if
   7@ == 1
   then
    20@ += 2.0       //1 car max
   end
   if
   7@ == 2
   then
    20@ += 5.0       //2 car max
   end                                          
   if
   7@ == 3
   then
    20@ += 8.0       //3 car max
   end
   if
   7@ == 4
   then
    20@ += 11.0       //4 car max
   end
   if
   7@ == 5
   then
    20@ += 14.0       //5 car max
   end
   if
   7@ == 6
   then
    20@ += 17.0       //6 car max
   end
   if
   7@ == 7
   then
    20@ += 20.0       //7 car max
   end
      if
   7@ == 8
   then
    20@ += 23.0       
   end
      if
   7@ == 9
   then
    20@ += 26.0      
   end
      if
   7@ == 10
   then
    20@ += 29.0      
   end
      if
   7@ == 11
   then
    20@ += 32.0       
   end
      if
   7@ == 12
   then
    20@ += 35.0       
   end
      if
   7@ == 13
   then
    20@ += 38.0       
   end
      if
   7@ == 14
   then
    20@ += 41.0       
   end
      if
   7@ == 15
   then
    20@ += 44.0       
   end
      if
   7@ == 16
   then
    20@ += 47.0       
   end
      if
   7@ == 17
   then
    20@ += 50.0      
   end
      if
   7@ == 18
   then
    20@ += 52.0      
   end
      if
   7@ == 19
   then
    20@ += 55.0       
   end
      if
   7@ == 20
   then
    20@ += 58.0       
   end
      if
   7@ == 21
   then
    20@ += 61.0       
   end
      if
   7@ == 22
   then
    20@ += 64.0       
   end
      if
   7@ == 23
   then
    20@ += 67.0       
   end
      if
   7@ == 24
   then                                     
    20@ += 70.0       
   end
      if
   7@ == 25
   then
    20@ += 73.0       
   end
      if
   7@ == 26
   then
    20@ += 76.0       
   end
      if
   7@ == 27
   then
    20@ += 79.0       
   end
      if
   7@ == 28
   then
    20@ += 85.0       
   end
      if
   7@ == 29
   then
    20@ += 88.0       
   end
      if
   7@ == 30
   then
    20@ += 91.0       
   end
      if
   7@ == 31
   then
    20@ += 94.0       
   end
   if
   7@ == 32
   then
    20@ += 97.0       
   end
   if
   7@ == 33
   then
    20@ += 100.0       
   end
   if
   7@ == 34
   then
    20@ += 103.0       
   end
   if                          
   7@ == 35                     
   then 20@ += 107.0            
   end                 
   if                  
   7@ == 36
   then                     
    20@ += 110.0            
   end                         
   if                  
   7@ == 37
   then                       
    20@ += 113.0              
   end
   if                         
   7@ == 38
   then
    20@ += 116.0       
   end                            
   if
   7@ == 39
   then                         
    20@ += 119.0       
   end
   if
   7@ == 40
   then
    20@ += 122.0       
   end
   if
   7@ == 41
   then
    20@ += 125.0       
   end                                     
   if
   7@ == 42                      
   then
    20@ += 128.0       
   end
   if
   7@ == 43
   then
    20@ += 131.0       
   end
   if                                              
   7@ == 44                 
   then
    20@ += 134.0        
   end                             
   if                       
   7@ == 45
   then
    20@ += 137.0       
   end
   if                                      
   7@ == 46                            
   then
    20@ += 140.0               
   end                                  
   if
   7@ == 47                                 
   then
    20@ += 143.0       
   end
   if                                     
   7@ == 48
   then
    20@ += 146.0       
   end
   if
   7@ == 49
   then
    20@ += 149.0       
   end                        
   if
   7@ == 50
   then
    20@ += 152.0       
   end
   if                                        
   7@ == 51
   then
    20@ += 155.0       
   end
   if
   7@ == 52
   then
    20@ += 158.0       
   end
   if
   7@ == 53
   then
    20@ += 161.0       
   end
   if
   7@ == 54                                  
   then
    20@ += 164.0       
   end
   if
   7@ == 55
   then
    20@ += 167.0       
   end
   if
   7@ == 56
   then
    20@ += 170.0       
   end
   if
   7@ == 57
   then
    20@ += 173.0       
   end
   if
   7@ == 58
   then
    20@ += 176.0       
   end
   if                                              
   7@ == 59
   then                                                       
    20@ += 179.0       
   end
   if
   7@ == 60
   then
    20@ += 182.0       
   end
jump @Activation
            
:Activation 
wait 0
03BD: destroy_sphere 14@ 
29@ = 1    // = 1 make it active
SAMP.CmdRet

:save_pos
wait 0
03BD: destroy_sphere 14@
00A0: store_actor $PLAYER_ACTOR position_to 21@ 22@ 23@
03BC: 14@ = create_sphere_at 21@ 22@ 23@ radius 15.0
018C: play_sound 1052 at 0.0 0.0 0.0
0085: 20@ = 23@
20@ += 1000.0
0AD1: show_formatted_text_highpriority "Position saved" time 800
SAMP.CmdRet

:rain_pos
wait 0
if 
0029:   20@ > 23@
then
jump @Activation
end
SAMP.CmdRet


:del_pos
wait 0
03BD: destroy_sphere 14@
018C: play_sound 1053 at 0.0 0.0 0.0
20@ = 0
21@ = 0 
22@ = 0
23@ = 0
0AD1: show_formatted_text_highpriority "Position deleted" time 800
SAMP.CmdRet


:count_cars
wait 0
10@ = 0
for 8@ = 0 to 999
     if 0AFF: samp 9@ = car_handle_by_samp_vehicle_id 8@
     then 10@++          
     end
end
0AD1: "~B~%d ~W~streamed vehicles" 1000 10@
wait 100
SAMP.CmdRet


:Info
wait 0
0AF8: samp add_message_to_chat "{00A4E6}rain.cs commands:" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/rain {00A4E6}<ID> {F7F694}(set rain over specific player) " color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/rainfew {00A4E6}<ID> <number of cars> {F7F694}(set rain over specific player with custom amount of cars, max 60 cars)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/count {F7F694}(check how many cars are available around)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/savepos {F7F694}(saves your current position)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/rainpos {F7F694}(set rain over your last saved position)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/carpos {00A4E6} <ID> {F7F694}(place specific vehicle at your last saved position)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/delpos {F7F694}(deletes your last saved position)" color 0xFFFFFFFF
SAMP.CmdRet
   

:Not_connected
wait 0
0AD1: "~R~Invalid ID" 1000
SAMP.CmdRet

  

:Too_far
wait 0
0AD1: "~R~Desired player is too far away" 1000
SAMP.CmdRet


:car_pos_activation
wait 0
29@ = 2
SAMP.IsCommandTyped(28@)
     if
     0AD4: 27@ = scan_string 28@ format "%d" 15@
     then
     0AFF: samp 0@ = car_handle_by_samp_vehicle_id 15@
     end
     Samp.CmdRet
    
          
:car_pos
wait 0
if
056E:   car 0@ defined
then
        0B2E: 11@ = read_samp_memory 0x12D60 size 2
        0B2D: write samp_memory 0x12D60 value 0xC390 size 2
        0B2E: 12@ = read_samp_memory 0x13FA0 size 2
        0B2D: write samp_memory 0x13FA0 value 0xC390 size 2
        0B2E: 13@ = read_samp_memory 0x4830 size 1
        0B2D: write samp_memory 0x4830 value 0xC3 size 1
        wait 500
        00AB: put_car 0@ at 21@ 22@ 23@                                                  
        0B30: samp send_enter_vehicle 15@ as_passenger false 
        0AB1: call_scm_func @SYNC_INN 1 HANDLE 0@
        wait 0
        0AB1: @SYNC_OUT 0
        wait 0
        0B31: samp send_exit_vehicle 15@
        
        0B2D: write samp_memory 0x12D60 value 11@ size 2
        0B2D: write samp_memory 0x13FA0 value 12@ size 2
        0B2D: write samp_memory 0x4830 value 13@ size 1 
        wait 500       
        03BD: destroy_sphere 14@
        018C: play_sound 1150 at 0.0 0.0 0.0
else
jump @Too_far_car
end
29@ = 0
jump @First

:Too_far_car
wait 0
0AD1: "~R~Desired vehicle is too far away" 1000
29@ = 0
jump @First


rainV2.cs

I'd like to present a new mod very similar to the previous one but instead of teleporting unoccupied cars it teleports only occupied vehicles. Theoretically it should kick the drivers out of their cars as soon as they are TP-ed up but practically some players are kicked out, some aren't. Thanks to Opcode.exe for the sync car with packets snippet.

Commands:
/r2info
/pos - saves the position
/dpos - deletes last saved position
/r2 - starts the rain
/ccars - counts occupied cars

Bugs:
Please let me know if there are any

Updates:
05/10/14 - added some minor changes, instead of kicking out the driver it burns the vehicle so all the passengers are kicked out too

Video:
http://youtu.be/nWjHpBfBmR8

Code:
{$CLEO}
0000: NOP
0B34: samp register_client_command "pos" to_label @savepos
0B34: samp register_client_command "dpos" to_label @cancel
0B34: samp register_client_command "r2" to_label @rain
0B34: samp register_client_command "ccars" to_label @count
0B34: samp register_client_command "r2info" to_label @info
30@ = 0

:First
wait 0
if
30@ == 2
jf @First
0B2E: 21@ = read_samp_memory 0x12D60 size 2
0B2D: write samp_memory 0x12D60 value 0xC390 size 2
0B2E: 22@ = read_samp_memory 0x13FA0 size 2
0B2D: write samp_memory 0x13FA0 value 0xC390 size 2
0B2E: 23@ = read_samp_memory 0x4830 size 1
0B2D: write samp_memory 0x4830 value 0xC3 size 1
3@ += 5.000
5@ += 100.555
015F: set_camera_position 3@ 4@ 5@ rotation 0.0 0.0 0.0
3@ -= 5.000
5@ -= 100.555
0160: set_camera_point_at 3@ 4@ 5@ switchstyle 2
5@ += 80.555
for 6@ = 0 to 1500
    if 0AFF: samp 0@ = car_handle_by_samp_vehicle_id 6@
    then
        if
        00DB:   actor $PLAYER_ACTOR in_car 0@
        then 0@ = 0
        end
            if
            056E:   car 0@ defined
            then
            046C: 2@ = car 0@ driver
                if
                056D:   actor 2@ defined
                then
                33@ = 0
                    repeat
                    wait 0
                    0224: set_car 0@ health_to 0
                    00AB: put_car 0@ at 3@ 4@ 5@
                    0AB1: @SYNC_VEHICLE 1 HANDLE 0@
                    until 33@ > 300
                5@ += 3.000
                end   
            end                  
    end      
end
14@ = Actor.CurrentCar($PLAYER_ACTOR)
0407: store_coords_to 11@ 12@ 13@ from_car 14@ with_offset 0.0 0.0 1.5 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 11@ 12@ 13@
wait 700
for 6@ = 0 to 1500
    if 0AFF: samp 0@ = car_handle_by_samp_vehicle_id 6@
    then
    046C: 2@ = car 0@ driver
        if
        056D:   actor 2@ defined
        then
        0AB1: @SYNC_VEHICLE 1 HANDLE 0@
        0AB1: @SYNC_VEHICLE 1 HANDLE 0@
        0AB1: @SYNC_VEHICLE 1 HANDLE 0@
        0AB1: @SYNC_VEHICLE 1 HANDLE 0@
        0AB1: @SYNC_VEHICLE 1 HANDLE 0@
        end                    
    end 
end  
036A: put_actor $PLAYER_ACTOR in_car 14@
wait 4700
015A: restore_camera
0B2D: write samp_memory 0x12D60 value 21@ size 2
0B2D: write samp_memory 0x13FA0 value 22@ size 2
0B2D: write samp_memory 0x4830 value 23@ size 1
30@ = 1
jump @First
 
:rain
wait 0
if
00DF:   actor $PLAYER_ACTOR driving
then
    if 30@ == 1
    then
    30@ = 2
    03BD: destroy_sphere 7@
    else
    0AD1: show_formatted_text_highpriority "Save the position first [/savepos2])" time 800
    end
else
0AD1: show_formatted_text_highpriority "You must be driving" time 800
end
Samp.CmdRet

:savepos
wait 0
03BD: destroy_sphere 7@
00A0: store_actor $PLAYER_ACTOR position_to 3@ 4@ 5@
03BC: 7@ = create_sphere_at 3@ 4@ 5@ radius 15.0
018C: play_sound 1052 at 0.0 0.0 0.0
29@ = 0
for 6@ = 0 to 1500
    if 0AFF: samp 28@ = car_handle_by_samp_vehicle_id 6@
    then 
    046C: 2@ = car 28@ driver
        if
        056D:   actor 2@ defined
        then
        29@++          
        end
    end
end
if
00DF:   actor $PLAYER_ACTOR driving
then
29@ -= 1
end
0AD1: show_formatted_text_highpriority "Position saved (~B~%d ~W~occupied vehicles in the area)" time 800 29@
30@ = 1
Samp.CmdRet

:cancel
wait 0
03BD: destroy_sphere 7@
018C: play_sound 1053 at 0.0 0.0 0.0
0AD1: show_formatted_text_highpriority "Position deleted" time 800
3@ = 0.0
4@ = 0.0
5@ = 0.0
30@ = 0
Samp.CmdRet

:count
wait 0
29@ = 0
for 6@ = 0 to 1500
    if 0AFF: samp 28@ = car_handle_by_samp_vehicle_id 6@
    then 
    046C: 2@ = car 28@ driver
        if
        056D:   actor 2@ defined
        then
        29@++          
        end
    end
end
if
00DF:   actor $PLAYER_ACTOR driving
then
29@ -= 1
end
0AD1: "~B~%d ~W~occupied vehicles in the area" 800 29@
Samp.CmdRet

:info
wait 0
0AF8: samp add_message_to_chat "{00A4E6}rain.cs V2 commands:" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/pos {F7F694}(save position) " color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/dpos {F7F694}(delete last saved position)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/r2 {F7F694}(set rain over your last saved position - occupied vehicles only)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/ccars {F7F694}(counts occupied vehicles in the area)" color 0xFFFFFFFF
Samp.CmdRet

const
PACKET_VEHICLE_SYNC = 219
BS_TYPE_BYTE = 0
BS_TYPE_ARRAY = 5
end

//0AB1: @SYNC_VEHICLE 1 HANDLE 0@
:SYNC_VEHICLE
IF
0B2C: 1@ = get_vehicle_id_by_car_handle 0@
THEN  
    0AC8: 31@ = allocate_memory_size 63 // struct stInCarData ( size = 63 )
    0C0D: struct 31@ offset 0 size 2 = 1@ // sVehicleID;
    0C0D: struct 31@ offset 2 size 2 = 0 // sLeftRightKeys; 
    0C0D: struct 31@ offset 4 size 2 = 0 // sUpDownKeys;
    0C0D: struct 31@ offset 6 size 2 = 0 // sKeys;        
    0A97: 17@ = car 0@ struct  
    17@ += 0x14
    0A8D: 17@ = read_memory 17@ size 4 virtual_protect 0
    0AB1: call_scm_func @Quaternion_get 1 matrix_pointer 17@ Quat_x 18@ Quat_y 19@ Quat_z 20@ Quat_w 21@        
    0C0D: struct 31@ offset 8  size 4   = 18@
    0C0D: struct 31@ offset 12 size 4   = 19@
    0C0D: struct 31@ offset 16 size 4   = 20@
    0C0D: struct 31@ offset 20 size 4   = 21@ 
    0407: store_coords_to 24@ 23@ 22@ from_car 0@ with_offset 0.0 0.0 0.0
    0C0D: struct 31@ offset 24 size 4   = 24@
    0C0D: struct 31@ offset 28 size 4   = 23@
    0C0D: struct 31@ offset 32 size 4   = 22@    
    0A97: 22@ = car 0@ struct
    22@ += 68   //Snippet by OpcodeXe
    0A8D: 21@ = read_memory 22@ size 4 virtual_protect 0
    22@ += 0x4
    0A8D: 20@ = read_memory 22@ size 4 virtual_protect 0
    22@ += 0x4
    0A8D: 19@ = read_memory 22@ size 4 virtual_protect 0
    0C0D: struct 31@ offset 36  size 4   = 21@
    0C0D: struct 31@ offset 40  size 4   = 20@
    0C0D: struct 31@ offset 44  size 4   = 19@    
    0227: 18@ = car 0@ health
    0093: 17@ = integer 18@ to_float    
    0C0D: struct 31@ offset 48  size 4   = 17@  // car hp
    0226: 17@ = actor $PLAYER_ACTOR health
    0C0D: struct 31@ offset 52  size 1   = 17@   // PLAYER
    04DD: 16@ = actor $PLAYER_ACTOR armour
    0C0D: struct 31@ offset 53  size 1   = 16@   // ARMOUR
    0C0D: struct 31@ offset 54  size 1   = 0   // weapon    
    0C0D: struct 31@ offset 55  size 1   = 0   // siren
    0C0D: struct 31@ offset 56  size 1   = 0   
    0C0D: struct 31@ offset 57  size 2   = 0   
    0C0D: struct 31@ offset 59  size 4   = 0.0 // train speed    
    0B3D: raknet 29@ = new_bit_stream
    0B40: raknet bit_stream 29@ write PACKET_VEHICLE_SYNC type BS_TYPE_BYTE size 1
    0B40: raknet bit_stream 29@ write 31@ type BS_TYPE_ARRAY size 63
    0B8B: raknet send bit_stream 29@
    0B3E: raknet delete_bit_stream 29@
    0AC9: free_allocated_memory 31@
END
0AB2: 0

:Quaternion_get 
0C0C: 1@ = struct 0@ offset 0 size 4
0C0C: 2@ = struct 0@ offset 4 size 4
0C0C: 3@ = struct 0@ offset 8 size 4
0C0C: 4@ = struct 0@ offset 16 size 4
0C0C: 5@ = struct 0@ offset 20 size 4
0C0C: 6@ = struct 0@ offset 24 size 4
0C0C: 7@ = struct 0@ offset 32 size 4
0C0C: 8@ = struct 0@ offset 36 size 4
0C0C: 9@ = struct 0@ offset 40 size 4
 
005B: 10@ = 1@
005B: 10@ += 5@
005B: 10@ += 9@
 
if 0021: 10@ > 0.0
then
0007: 0@ = 0.5
000B: 10@ += 1.0
01FB: sqrt 10@ store_to 10@
0073: 0@ /= 10@  //s
0007: 15@ = 0.25
0073: 15@ /= 0@ //w
005B: 16@ = 8@  //x
0063: 16@ -= 6@
006B: 16@ *= 0@
005B: 17@ = 3@  //y
0063: 17@ -= 7@
006B: 17@ *= 0@
005B: 18@ = 4@  //z
0063: 18@ -= 2@
006B: 18@ *= 0@
else if and
    0025: 1@ > 5@
    0025: 1@ > 9@
    then
    0007: 0@ = 2.0
    0007: 10@ = 1.0
    005B: 10@ += 1@
    0063: 10@ -= 5@
    0063: 10@ -= 9@
    01FB: sqrt 10@ store_to 10@
    006B: 0@ *= 10@ //s
    005B: 15@ = 8@ //w
    0063: 15@ -= 6@
    0073: 15@ /= 0@
    0007: 16@ = 0.25 //x
    006B: 16@ *= 0@
    005B: 17@ = 2@
    005B: 17@ += 4@
    0073: 17@ /= 0@
    005B: 18@ = 3@
    005B: 18@ += 7@
    0073: 18@ /= 0@
    else if 0025: 5@ > 9@
        then
        0007: 0@ = 2.0
        0007: 10@ = 1.0
        005B: 10@ += 5@
        0063: 10@ -= 1@
        0063: 10@ -= 9@
        01FB: sqrt 10@ store_to 10@
        006B: 0@ *= 10@ //s
        005B: 15@ = 3@ //w
        0063: 15@ -= 7@
        0073: 15@ /= 0@
        005B: 16@ = 2@ //x
        005B: 16@ += 4@
        0073: 16@ /= 0@
        0007: 17@ = 0.25 //y
        006B: 17@ *= 0@
        005B: 18@ = 6@  //z
        005B: 18@ += 8@
        0073: 18@ /= 0@
        else
        0007: 0@ = 2.0
        0007: 10@ = 1.0
        005B: 10@ += 9@
        0063: 10@ -= 1@
        0063: 10@ -= 5@
        01FB: sqrt 10@ store_to 10@
        006B: 0@ *= 10@ //s
        005B: 15@ = 4@ //w
        0063: 15@ -= 2@
        0073: 15@ /= 0@
        005B: 16@ = 3@ //x
        005B: 16@ += 7@
        0073: 16@ /= 0@
        005B: 17@ = 6@  //y
        005B: 17@ += 8@
        0073: 17@ /= 0@
        0007: 18@ = 0.25 //z
        006B: 18@ *= 0@
        end
    end
end           
0AB2: ret 4 15@ 16@ 17@ 18@
 

Attachments

  • rain.cs
    32.1 KB · Views: 2,221
  • rainV2.cs
    29.2 KB · Views: 1,676

Swag???

Active member
Joined
Jun 19, 2014
Messages
155
Reaction score
0
Re: rain.cs [Vehicle trolling mod]

It won't be detectable, but if it TP's you into the cars then you'll get caught. I haven't tested it so I don't know, but if you're a level 1 standing in the middle of mall and cars flying everywhere, then you're obviously going to get banned
 

DzkAy

Well-known member
Joined
Feb 20, 2014
Messages
472
Reaction score
1
Re: rain.cs [Vehicle trolling mod]

Nice use of Car Sync Onfoot it's sometimes detectable but Very nice job .
 

blackHat

Expert
Joined
Jul 28, 2013
Messages
930
Reaction score
2
Re: rain.cs [Vehicle trolling mod]

Swag??? link said:
It won't be detectable, but if it TP's you into the cars then you'll get caught. I haven't tested it so I don't know, but if you're a level 1 standing in the middle of mall and cars flying everywhere, then you're obviously going to get banned
:me_gusta:
Code:
  0B30: samp send_enter_vehicle 0@ as_passenger false
     
 

M3D

Active member
Joined
May 22, 2014
Messages
130
Solutions
1
Reaction score
2
Re: rain.cs [Vehicle trolling mod]

monday link said:
This mod teleports all unoccupied vehicles from the surrounding area over specific player or saved position. Mod is easly detectable by anticheat.

Commands:
/raininfo - displays all the commands
/rain <ID> - set rain over specific player
/rainfew <ID> <number of cars> - set rain over specific player with custom number of cars
/count - display the number of streamed in vehicles
/savepos - save your current position
/rainpos - set rain over your last saved position
/delpos - delete your last saved position

Special thanks for sharing the knowledge to:
BlackHat
pepeelpubero
Springfield
D.Kay
Opcode.exe
PopandaulX


http://youtu.be/bPHrDpGEVHs


Download:
http://www.mediafire.com/download/jetz5otnumpy24v/rain.cs

Code:
{$CLEO .cs}
0000: NOP

0B34: samp register_client_command "rain" to_label @start
0B34: samp register_client_command "rainfew" to_label @start_few
0B34: samp register_client_command "count" to_label @count_cars
0B34: samp register_client_command "savepos" to_label @save_pos
0B34: samp register_client_command "rainpos" to_label @rain_pos
0B34: samp register_client_command "delpos" to_label @del_pos
0B34: samp register_client_command "raininfo" to_label @Info
29@ = 0

:First
wait 0
if 29@ == 1
jf @First     
0B2E: 11@ = read_samp_memory 0x12D60 size 2
0B2D: write samp_memory 0x12D60 value 0xC390 size 2
0B2E: 12@ = read_samp_memory 0x13FA0 size 2
0B2D: write samp_memory 0x13FA0 value 0xC390 size 2
0B2E: 13@ = read_samp_memory 0x4830 size 1
0B2D: write samp_memory 0x4830 value 0xC3 size 1
wait 500
for 5@ = 0 to 999
     if 0AFF: samp 0@ = car_handle_by_samp_vehicle_id 5@
     then
        0B30: samp send_enter_vehicle 0@ as_passenger false
        00AB: put_car 0@ at 21@ 22@ 23@ 
        23@ += 3.0
        0AB1: call_scm_func @SYNC_INN 1 HANDLE 0@
        wait 0
        0AB1: @SYNC_OUT 0
        wait 0
        0B31: samp send_exit_vehicle 0@
            if                     //5 cars max
            0029:   23@ > 20@ //5 cars max
            then                //5 cars max
            jump @Second         //5 cars max
            end                   //5 cars max
     
               
     end 
end
:Second   //5 cars max
wait 0
0B2D: write samp_memory 0x12D60 value 11@ size 2
0B2D: write samp_memory 0x13FA0 value 12@ size 2
0B2D: write samp_memory 0x4830 value 13@ size 1
wait 500
29@ = 0
20@ = 0 //reset 20 value to make it work later
jump @First

:SYNC_INN
0A97: 2@ = car 0@ struct
0A96: 3@ = actor $PLAYER_ACTOR struct
3@ += 1328
0A8C: write_memory 3@ size 4 value 50 virtual_protect 0
0A96: 3@ = actor $PLAYER_ACTOR struct
3@ += 1420
0A8C: write_memory 3@ size 4 value 2@ virtual_protect 0
0AB2: ret 0

:SYNC_OUT
0A96: 0@ = actor $PLAYER_ACTOR struct
0@ += 0x530 // State = 0, leaving car
0A8C: write_memory 0@ size 4 value 1 virtual_protect 0 
0AB2: ret 0  

:start
wait 0 
   SAMP.IsCommandTyped(31@)
     if
     0AD4: 30@ = scan_string 31@ format "%d" 6@
     then
     if
     0B20: samp 28@ = actor_handle_by_samp_player_id 6@
     jf @First
     00A0: store_actor 28@ position_to 21@ 22@ 23@
     0085: 20@ = 23@
     20@ += 1000.0
     jump @Activation
     end


:start_few
wait 0 
   SAMP.IsCommandTyped(27@)
if 
0AD4: 30@ = scan_string 27@ format "%d %d" 6@ 7@
else_jump @First
if
0B20: samp 28@ = actor_handle_by_samp_player_id 6@
jf @First
00A0: store_actor 28@ position_to 21@ 22@ 23@
0085: 20@ = 23@ 
   if
   7@ == 1
   then
    20@ += 2.0       //1 car max
   end
   if
   7@ == 2
   then
    20@ += 5.0       //2 car max
   end                                          
   if
   7@ == 3
   then
    20@ += 8.0       //3 car max
   end
   if
   7@ == 4
   then
    20@ += 11.0       //4 car max
   end
   if
   7@ == 5
   then
    20@ += 14.0       //5 car max
   end
   if
   7@ == 6
   then
    20@ += 17.0       //6 car max
   end
   if
   7@ == 7
   then
    20@ += 20.0       //7 car max
   end
      if
   7@ == 8
   then
    20@ += 23.0       
   end
      if
   7@ == 9
   then
    20@ += 26.0      
   end
      if
   7@ == 10
   then
    20@ += 29.0      
   end
      if
   7@ == 11
   then
    20@ += 32.0       
   end
      if
   7@ == 12
   then
    20@ += 35.0       
   end
      if
   7@ == 13
   then
    20@ += 38.0       
   end
      if
   7@ == 14
   then
    20@ += 41.0       
   end
      if
   7@ == 15
   then
    20@ += 44.0       
   end
      if
   7@ == 16
   then
    20@ += 47.0       
   end
      if
   7@ == 17
   then
    20@ += 50.0      
   end
      if
   7@ == 18
   then
    20@ += 52.0      
   end
      if
   7@ == 19
   then
    20@ += 55.0       
   end
      if
   7@ == 20
   then
    20@ += 58.0       
   end
      if
   7@ == 21
   then
    20@ += 61.0       
   end
      if
   7@ == 22
   then
    20@ += 64.0       
   end
      if
   7@ == 23
   then
    20@ += 67.0       
   end
      if
   7@ == 24
   then                                     
    20@ += 70.0       
   end
      if
   7@ == 25
   then
    20@ += 73.0       
   end
      if
   7@ == 26
   then
    20@ += 76.0       
   end
      if
   7@ == 27
   then
    20@ += 79.0       
   end
      if
   7@ == 28
   then
    20@ += 85.0       
   end
      if
   7@ == 29
   then
    20@ += 88.0       
   end
      if
   7@ == 30
   then
    20@ += 91.0       
   end
      if
   7@ == 31
   then
    20@ += 94.0       
   end
   if
   7@ == 32
   then
    20@ += 97.0       
   end
   if
   7@ == 33
   then
    20@ += 100.0       
   end
   if
   7@ == 34
   then
    20@ += 103.0       
   end
   if                          
   7@ == 35                     
   then 20@ += 107.0            
   end                 
   if                  
   7@ == 36
   then                     
    20@ += 110.0            
   end                         
   if                  
   7@ == 37
   then                       
    20@ += 113.0              
   end
   if                         
   7@ == 38
   then
    20@ += 116.0       
   end                            
   if
   7@ == 39
   then                         
    20@ += 119.0       
   end
   if
   7@ == 40
   then
    20@ += 122.0       
   end
   if
   7@ == 41
   then
    20@ += 125.0       
   end                                     
   if
   7@ == 42                      
   then
    20@ += 128.0       
   end
   if
   7@ == 43
   then
    20@ += 131.0       
   end
   if                                              
   7@ == 44                 
   then
    20@ += 134.0        
   end                             
   if                       
   7@ == 45
   then
    20@ += 137.0       
   end
   if                                      
   7@ == 46                            
   then
    20@ += 140.0               
   end                                  
   if
   7@ == 47                                 
   then
    20@ += 143.0       
   end
   if                                     
   7@ == 48
   then
    20@ += 146.0       
   end
   if
   7@ == 49
   then
    20@ += 149.0       
   end                        
   if
   7@ == 50
   then
    20@ += 152.0       
   end
   if                                        
   7@ == 51
   then
    20@ += 155.0       
   end
   if
   7@ == 52
   then
    20@ += 158.0       
   end
   if
   7@ == 53
   then
    20@ += 161.0       
   end
   if
   7@ == 54                                  
   then
    20@ += 164.0       
   end
   if
   7@ == 55
   then
    20@ += 167.0       
   end
   if
   7@ == 56
   then
    20@ += 170.0       
   end
   if
   7@ == 57
   then
    20@ += 173.0       
   end
   if
   7@ == 58
   then
    20@ += 176.0       
   end
   if                                              
   7@ == 59
   then                                                       
    20@ += 179.0       
   end
   if
   7@ == 60
   then
    20@ += 182.0       
   end
jump @Activation
            
:Activation 
wait 0
03BD: destroy_sphere 14@ 
29@ = 1    // = 1 make it active
SAMP.CmdRet
goto @First 

:save_pos
wait 0
03BD: destroy_sphere 14@
00A0: store_actor $PLAYER_ACTOR position_to 21@ 22@ 23@
03BC: 14@ = create_sphere_at 21@ 22@ 23@ radius 15.0
018C: play_sound 1052 at 0.0 0.0 0.0
0085: 20@ = 23@
20@ += 1000.0
0AD1: show_formatted_text_highpriority "Position saved" time 800
SAMP.CmdRet
jump @First

:rain_pos
wait 0
if 
0029:   20@ > 23@
then
jump @Activation
end
SAMP.CmdRet
jump @First

:del_pos
wait 0
03BD: destroy_sphere 14@
018C: play_sound 1053 at 0.0 0.0 0.0
20@ = 0
21@ = 0 
22@ = 0
23@ = 0
0AD1: show_formatted_text_highpriority "Position deleted" time 800
SAMP.CmdRet
jump @First

:count_cars
wait 0
10@ = 0
for 8@ = 0 to 999
     if 0AFF: samp 9@ = car_handle_by_samp_vehicle_id 8@
     then 10@++          
     end
end
0AD1: "~B~%d ~W~streamed vehicles" 1000 10@
wait 100
SAMP.CmdRet
jump @First


:Info
wait 0
0AF8: samp add_message_to_chat "{00A4E6}rain.cs commands:" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/rain {00A4E6}<ID> {F7F694}(set rain over specific player) " color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/rainfew {00A4E6}<ID> <number of cars> {F7F694}(set rain over specific player with custom amount of cars, max 60 cars)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/count {F7F694}(check how many cars are available around)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/savepos {F7F694}(saves your current position)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/rainpos {F7F694}(set rain over your last saved position)" color 0xFFFFFFFF
0AF8: samp add_message_to_chat "{FFFFFF}/delpos {F7F694}(deletes your last saved position)" color 0xFFFFFFFF
SAMP.CmdRet
jump @First 
Hey, you can change the / count into /.count?  In my server in / count is the game countdown
 

Spix

Well-known member
Joined
Sep 23, 2013
Messages
353
Reaction score
1
Re: rain.cs [Vehicle trolling mod]

Well, Why would i do this? Nobody dies etc, admins can just simply respawn the cars, Maybe you would make them burn so people will die of it, Then it would be great. :imoverit:
 

TheZeRots

Expert
Joined
Dec 21, 2013
Messages
1,247
Reaction score
1
Re: rain.cs [Vehicle trolling mod]

I always respect people with 0B34.
Good job!

I will be testing it out a bit and screwing around with the code.  :trollface:
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,126
Reaction score
154
Re: rain.cs [Vehicle trolling mod]

Thank you for positive replies:)

[member=18797]Strong0123[/member]
I'll attach the version with .count to this post

[member=6201]SpexxTr0n[/member]
It creates a mess, that's all it does. I'm not able to make a mod where people burn, sorry.
Edit: Btw paradoxally it triggers more positive than negative responses from people on RP servers. Most of the reactions I encountered while testing this mod were like: "HAHAHA" "WTF LOL".
 

Attachments

  • rain.count.cs
    29.6 KB · Views: 2,275

xxx47

Active member
Joined
Mar 9, 2014
Messages
73
Reaction score
0
Re: rain.cs [Vehicle trolling mod]

Ok, I tried it, but when I connect again, all vehicles are at its original location.. so doesn't work for me, maybe on servers without anticheat  :face_palm:
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,126
Reaction score
154
Re: rain.cs [Vehicle trolling mod]

Hmm I don't know what is the reason to be honest. I tested it on LSRP, Italy mafia RP, Mrucznik RP and NEF stunt/race/dm server. Worked well on all of them. (btw /rain with all vehicles on Mrucznik RP usually caused 10 minutes auto-ban for "vehicle spawning mod")
 

xxx47

Active member
Joined
Mar 9, 2014
Messages
73
Reaction score
0
Re: rain.cs [Vehicle trolling mod]

Monday, can you make /rainpos ID (car ID) please?
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,126
Reaction score
154
Re: rain.cs [Vehicle trolling mod]

Car ID for a 1 specific car? Or /rainpos <number of cars>?
 

xxx47

Active member
Joined
Mar 9, 2014
Messages
73
Reaction score
0
Re: rain.cs [Vehicle trolling mod]

monday link said:
Car ID for a 1 specific car? Or /rainpos <number of cars>?

specific car, and I would try on another server (rp).
 

TheZeRots

Expert
Joined
Dec 21, 2013
Messages
1,247
Reaction score
1
Re: rain.cs [Vehicle trolling mod]

So far I realised using this more than 5 times = game frozen.
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,126
Reaction score
154
Re: rain.cs [Vehicle trolling mod]

[member=12579]xxx47[/member]
Should the car stand on the ground when you type the command? Or fall from the high altitude?

[member=7808]Mr.Ze[/member]
I tested /rainpos and /rain to check if the number of uses is the problem and it wasn't. Maybe that's because the player left local area, I updated the code with what is going to happen when the player is not connected or out of the streamed area, i'll upload it in a minute.

Btw another bug I found is that you can't change your weapon after using the mod. It seems like :Sync_in and :Sync_out cause that because removing both solved it. However without synchronization the whole mod is useless because others can't even see the cars, I have no idea how to fix this bug.
 

Vrana

Active member
Joined
Jun 24, 2014
Messages
128
Reaction score
0
Location
Serbia
Re: rain.cs v1.01 [Vehicle trolling mod]

I got kicked, reason: "Vehicle Troll"... But when I use NR_Serv that has Chaos-car then i dont get detected lol... why?
 

xxx47

Active member
Joined
Mar 9, 2014
Messages
73
Reaction score
0
Re: rain.cs [Vehicle trolling mod]

monday link said:
[member=12579]xxx47[/member]
Should the car stand on the ground when you type the command? Or fall from the high altitude?

I think the first option.., my intention is to move the vehicle to another location (with the savepos function), and the owner will think "where is my vehicle.." is it possible?
 

0B36

Expert
Joined
Jan 6, 2014
Messages
1,324
Reaction score
8
Re: rain.cs v1.01 [Vehicle trolling mod]

Does it require CLEO 4.1 or will 4.3 do the job ?
 
Status
Not open for further replies.
Top