Другое Полезные сниппеты и SCM-функции

SR_team

like pancake
BH Team
3,814
3,859
Получение скорости кара, по координатам X Y Z.
CLEO:
//0ab1: call @CarSpeed 1 Car_Handle 0@ retrieve X 1@ Y 2@ Z 3@
//In: 0@ - HANDLE кара
//Out:
//1@: float - скорость по X
//2@: float - скорость по Y
//3@: float - скорость по Z
:CarSpeed
0A97: 0@ = car 0@ struct
0@ += 0x44 //Смещение на начало скорости
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
0@ += 0x4 //Float = 4 byte, значит + 4
0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0
0@ += 0x4
0A8D: 3@ = read_memory 0@ size 4 virtual_protect 0
ret 3 1@ 2@ 3@
 
  • Нравится
Реакции: kraft1k

Opcode.eXe

Известный
84
110
This took me a while to make... and its really useful for me.

0AB1: @DRAW_OUTLINED_BOX 9 POS 300.0 300.0 SIZE 50.0 50.0 RGBA 255 0 0 255

You can make hacks like this with it:




//0AB1: @DRAW_OUTLINED_BOX 9 POS 300.0 300.0 SIZE 50.0 50.0 RGBA 255 0 0 255 THICKNESS 0.5
:DRAW_OUTLINED_BOX
0087: 14@ = 8@ // (float)
0087: 12@ = 2@ // (float)
0087: 13@ = 3@ // (float)
12@ /= 2.0 // (float)
13@ /= 2.0 // (float)
0087: 8@ = 0@ // (float)
005B: 8@ += 2@ // (float)
0063: 8@ -= 12@ // (float)
0087: 9@ = 0@ // (float)
0063: 9@ -= 2@ // (float)
005B: 9@ += 12@ // (float)
0087: 10@ = 1@ // (float)
005B: 10@ += 3@ // (float)
0063: 10@ -= 13@ // (float)
0087: 11@ = 1@ // (float) by OpcodeXe
0063: 11@ -= 3@ // (float)
005B: 11@ += 13@ // (float)
03F0: enable_text_draw 1
038E: draw_box_position 8@ 1@ size 14@ 3@ RGBA 4@ 5@ 6@ 7@ // links
038E: draw_box_position 9@ 1@ size 14@ 3@ RGBA 4@ 5@ 6@ 7@ // rechts
038E: draw_box_position 0@ 10@ size 2@ 14@ RGBA 4@ 5@ 6@ 7@ // oben
038E: draw_box_position 0@ 11@ size 2@ 14@ RGBA 4@ 5@ 6@ 7@ // unten
0AB2: 0

 
  • Нравится
Реакции: alfazlo и fonarik

Opcode.eXe

Известный
84
110
http://ugbase.eu/snippets/getboneposition-from-actor/
Код:
{
GET BONE POSITION:
0AB1: call_scm_func @GET_BONE_POS 2 FROM_ACTOR $PLAYER_ACTOR BONE 6 _STORE_TO 1@ 2@ 3@  // HEAD
}   
:GET_BONE_POS
0085: 10@ = 0@ // (int)
0085: 15@ = 1@ // (int)
1@ = 0.0 // X offset
2@ = 0.0 // Y offset {THX TO: WESSER}
3@ = 0.0 // Z offset
0A96: 0@ = actor 10@ struct
0AC7: 4@ = var 1@ offset
0AA6: call_method 0x5E01C0 struct 0@ num_params 3 pop 0 bIncludeAnim 1 iBoneID 15@ vOffset 4@ // CPed__getBonePositionWithOffset
0AB2: retn 3 1@ 2@ 3@

 
Последнее редактирование модератором:

Opcode.eXe

Известный
84
110
Not really perfect, but i cant make it better ...
Код:
//0AB1: @DRAW_LINE 9 POS 10.0 10.0 _TO_ 200.0 310.0 RGBA 255 0 0 255 THICKNESS 1.0
:DRAW_LINE
0087: 11@ = 2@ // (float)
0087: 12@ = 3@ // (float)
0509: 10@ = distance_between_XY 0@ 1@ and_XY 2@ 3@
10@ -= 37.0 {REMOVE STRANGE OFFSET AT END}
0063: 2@ -= 0@ // (float)
0063: 3@ -= 1@ // (float)
0604: get_Z_angle_for_point 2@ 3@  store_to 9@
9@ += 84.0
005B: 0@ += 11@
0@ /= 2.0    {MITTE} // get center pos
005B: 1@ += 12@
1@ /= 2.0
03F0: enable_text_draw 1
074B: draw_texture 666 position 0@ 1@ scale 10@ 8@ angle 9@ color 4@ 5@ 6@ 7@
0AB2: 0
 
  • Нравится
Реакции: XyJluraH_J и san0

gcode

нестандартное звание звание звание звание звани...
Друг
789
350
Возвращает нажатую на данный момент клавишу.
CLEO:
repeat
    wait 50
    0AB1: call_scm_func @nowkey 0 8@
until 8@ > 0
 
:nowkey
1@ = 0
for 0@ = 1 to 222
    if
        0ab0: 0@
    then
        0085: 1@ = 0@
    end
end
0ab2: 1 1@
 

hnnssy

knowname
Друг
2,601
2,375
Описание: Получает кол-во пт в обойме.
Использование: 0AB1: call @get_AmmoInClip 0 return: 0@
Код:
CLEO:
:getAmmoInClip
0A96: 0@ = actor $PLAYER_ACTOR struct
0A8E: 1@ = 0@ + 0x0718
0A8D: 1@ = read_memory 1@ size 1 virtual_protect 0
1@ *= 0x1C
0A8E: 2@ = 0@ + 0x5A0
005a: 2@ += 1@
2@ += 0x8
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
ret 1 2@
 

Dark_Knight

hehe te nandayo
Друг
3,733
1,625
strcmpi for English language
Example
Код:
{$CLEO}
0000:
if 29@ = samp.Base()
then
    while not samp.Available()
    wait 100
    end
else end_thread
end
 
0ac8: 0@ = 128
0ac8: 1@ = 128
0ad3: 0@ = "heR"
0ad3: 1@ = "her"
if call @strcmpi 2 0@ 1@
then message "true" -1
else message "false" -1
end
0ac9: 0@
0ac9: 1@
end_thread
Function
Код:
:strcmpi
var
2@ : int
3@ : int
5@ : int
6@ : int
end
0c17: 2@ = strlen 0@
0c17: 3@ = strlen 1@
if 2@ == 3@
then
    for 4@ = 1 to 2@
    0A8D: 5@ = read_memory 0@ size 1 virtual_protect 0
    0A8D: 6@ = read_memory 1@ size 1 virtual_protect 0
        if 5@ == 0
        then break
        end
        5@ -= 6@
        if or
        5@ == -20
        5@ == 0
        5@ == 20
        then return_true
        else return_false
        break
        end   
    end
else return_false
end
ret 0
 

hnnssy

knowname
Друг
2,601
2,375
Получение статуса меню TAB. (1 - открыто, 0 - закрыто)
call @get_scoreboard_status 0 return_me: 0@
CLEO:
:get_scoreboard_status
0AF7: samp 0@ = get_base
0@ += 0x212A3C
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
ret 1 1@
 
  • Нравится
Реакции: kraft1k и ehxqu

SR_team

like pancake
BH Team
3,814
3,859
Округление дробного числа
0ab1: call_scm_func @Float2Integer 1 1@ 2@
1@ - входящее число
2@ - возвращаемое число
CLEO:
:Float2Integer
var
1@: float
0@: float
end
1@ = 0@
While 1@ > 1.0
1@ -= 1.0
end
if 1@ >= 0.5
    then
    0@ += 1.0
    end
0@ -= 1@
ret 1 0@
 

itsLegend

Подпишись на мой профиль! 🤠
Администратор
2,701
1,371
Код:
:getNumberPlate
// 0ab1: call @getNumberPlate 1 car_id 0@ retr_to 1@
1@ = SAMP.Base()
1@ += 0x212A80 // SAMP_INFO_OFFSET
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x3D9 // Pools
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x18 // stVehiclePool
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0

0@ *= 4
005a: 1@ += 0@ // pSAMP_Vehicle[0@]
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x8F
0ab2: ret 1 1@

Параметры:
in: 0@ - ид авто, находящиеся в зоне стрима
out: 1@ - указатель на строку
 
  • Нравится
Реакции: mauvais_ton

SR_team

like pancake
BH Team
3,814
3,859
Получение скилла в %
0ab1: @SkiLl 1 0@ 1@
0@ - id оружия
1@ - уровень скилла
CLEO:
:Skill
if and
0@ >= 23
0@ <= 32
    then
    if 0@ == 32
        then 0@ -= 4
        end
    0@ -= 23
    0@ *= 4
    0@ += 0xB79498
    0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
    else
    if 0@ == 22
        then 0A8D: 0@ = read_memory 0xB79496 size 4 virtual_protect 0
        else 0@ = 1000.0
        end
    end
0@ *= 0.1
ret 1 0@
 

Opcode.eXe

Известный
84
110
0B82: dialog 1@ add_button id 3 text "Authenticate" pos_XY 115 50 size 110 25

If you want to check if button is clicked:

Код:
//0AB1: @BUTTON_CLICKED 1 ON_DIALOG 1@ control_id 3
:BUTTON_CLICKED
0B81: dialog 0@ pop_event_to 2@ control_id_to 3@
IF AND
2@ == 0x101
003B:  3@ == 1@
THEN
    0485:  return_true
ELSE
    059A:  return_false
END
0AB2: 0
 

mauvais_ton

Известный
84
40
Удаление строки чата (чат автоматически обновляется, не нужно добавлять строку в чат).

call @delstring 1 0@ (0@ - номер строки)

Код:
:delstring
1@ = 0@
    0AC8: 2@ = allocate_memory_size 128
    0AC8: 3@ = allocate_memory_size 128
    0AC8: 4@ = allocate_memory_size 128
    0AC8: 5@ = allocate_memory_size 128
    0AC8: 6@ = allocate_memory_size 128
    0AC8: 7@ = allocate_memory_size 128
    FOR 0@ = 1@ DOWNTO 0 step 1
    wait 0
    0@ -= 1
    0B75: samp get_chat_string 0@ text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
    0@ += 1
    0B74: samp set_chat_string 0@ text 2@ prefix 3@ color 4@ prefix_color 5@
    end
    0B75: samp get_chat_string 99 text_to 6@ prefix_to 3@ color_to 7@ prefix_color_to 5@
    FOR 0@ = 99 DOWNTO 0 step 1
    wait 0
    0@ -= 1
    0B75: samp get_chat_string 0@ text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
    0@ += 1
    0B74: samp set_chat_string 0@ text 2@ prefix 3@ color 4@ prefix_color 5@
    end
    0AF8: samp add_message_to_chat 6@ color 7@
    0AC9: free_allocated_memory 2@
    0AC9: free_allocated_memory 3@
    0AC9: free_allocated_memory 4@
    0AC9: free_allocated_memory 5@
    0AC9: free_allocated_memory 6@
    0AC9: free_allocated_memory 7@
ret 0

Обновление чата (без добавления строки).

call @chatupdate 0

Код:
:chatupdate
1@ = 0@
    0AC8: 2@ = allocate_memory_size 128
    0AC8: 3@ = allocate_memory_size 128
    0AC8: 4@ = allocate_memory_size 128
    0AC8: 5@ = allocate_memory_size 128
    0AC8: 6@ = allocate_memory_size 128
    0AC8: 7@ = allocate_memory_size 128
    0B75: samp get_chat_string 99 text_to 6@ prefix_to 3@ color_to 7@ prefix_color_to 5@
    FOR 0@ = 99 DOWNTO 0 step 1
    wait 0
    0@ -= 1
    0B75: samp get_chat_string 0@ text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
    0@ += 1
    0B74: samp set_chat_string 0@ text 2@ prefix 3@ color 4@ prefix_color 5@
    end
    0AF8: samp add_message_to_chat 6@ color 7@
    0AC9: free_allocated_memory 2@
    0AC9: free_allocated_memory 3@
    0AC9: free_allocated_memory 4@
    0AC9: free_allocated_memory 5@
    0AC9: free_allocated_memory 6@
    0AC9: free_allocated_memory 7@
ret 0
 

FYP

🙁
Администратор
1,726
4,740
Обновление чата (без добавления строки).
Код:
:CChatWindow__Update // call @CChatWindow__Update 0
0@ = SAMP.Base()
0@ += 0x212A6C // CHAT_INFO
0C0E: 0@ = array 0@ element 0
0@ += 0x63DA // iUpdateChat
0C0F: array 0@ element 0 = 1
ret 0
Anyone can make a function to get cars fQuaternion?
Example: 0AB1: @GET_CAR_fQuaternion 1 CAR 0@ TO 1@ 2@ 3@ 4@
Код:
:GetCarQuat // call @GetCarQuat 1 car_handle 0@ result 1@ 2@ 3@ 4@
1@ = 0.0
2@ = 0.0
3@ = 0.0
4@ = 0.0
call @GetCarMatrixPtr 1 car_handle 0@ result 1@
if 1@ <> 0
then call @MatrixToQuat 1 matrix_ptr 0@ result 1@ 2@ 3@ 4@
end
ret 4 1@ 2@ 3@ 4@

:GetCarMatrixPtr // call @GetCarMatrixPtr 1 car_handle 0@ result 1@
if 856E: not car_defined 0@
then ret 1 0
end
0A97: 1@ = car 0@ struct
1@ += 0x14
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
ret 1 1@

:MatrixToQuat // call @MatrixToQuat 1 matrix_ptr 0@ result 1@ 2@ 3@ 4@ // by alfazlo
0C0E: 1@ = array 0@ element 0 // right
0C0E: 2@ = array 0@ element 1
0C0E: 3@ = array 0@ element 2
0C0E: 4@ = array 0@ element 4 // up
0C0E: 5@ = array 0@ element 5
0C0E: 6@ = array 0@ element 6
0C0E: 7@ = array 0@ element 8 // front
0C0E: 8@ = array 0@ element 9
0C0E: 9@ = array 0@ element 10
 
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          
ret 4 15@ 16@ 17@ 18@
 
  • Нравится
Реакции: mauvais_ton

Opcode.eXe

Известный
84
110
With this you can sync any car ..


Код:
//In: CarHandle, All positions and velocity and quanternium is set automaticly^^
//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;       
    0AB1: @GetCarQuat 1 car_handle 0@ result 25@ 26@ 27@ 28@
//    fQuaternion[4]
    0C0D: struct 31@ offset 8  size 4  = 25@
    0C0D: struct 31@ offset 12 size 4  = 26@
    0C0D: struct 31@ offset 16 size 4  = 27@
    0C0D: struct 31@ offset 20 size 4  = 28@   
    0407: store_coords_to 24@ 23@ 22@ from_car 0@ with_offset 0.0 0.0 0.0
    //fPosition[3]
    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
    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
    // float fMoveSpeed[3];
    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
:GetCarQuat // 0AB1: @GetCarQuat 1 car_handle 0@ result 1@ 2@ 3@ 4@
1@ = 0.0
2@ = 0.0
3@ = 0.0
4@ = 0.0
call @GetCarMatrixPtr 1 car_handle 0@ result 1@
if 1@ <> 0
then call @MatrixToQuat 1 matrix_ptr 0@ result 1@ 2@ 3@ 4@
end
ret 4 1@ 2@ 3@ 4@
 
:GetCarMatrixPtr // call @GetCarMatrixPtr 1 car_handle 0@ result 1@
if 856E: not car_defined 0@
then ret 1 0
end
0A97: 1@ = car 0@ struct
1@ += 0x14
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
ret 1 1@
 
:MatrixToQuat // call @MatrixToQuat 1 matrix_ptr 0@ result 1@ 2@ 3@ 4@ // by alfazlo
0C0E: 1@ = array 0@ element 0 // right
0C0E: 2@ = array 0@ element 1
0C0E: 3@ = array 0@ element 2
0C0E: 4@ = array 0@ element 4 // up
0C0E: 5@ = array 0@ element 5
0C0E: 6@ = array 0@ element 6
0C0E: 7@ = array 0@ element 8 // front
0C0E: 8@ = array 0@ element 9
0C0E: 9@ = array 0@ element 10
 
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         
ret 4 15@ 16@ 17@ 18@