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

Тема в разделе "CLEO", создана пользователем MISTER_GONWIK, 17 май 2013.

  1. gcode

    gcode нестандартное звание звание звание звание звани...
    Проверенный

    Регистрация:
    09.06.2013
    Сообщения:
    793
    Симпатии:
    392
    Репутация:
    361
    Данная функция будет очень полезна тем, кто хочет делать обработчики событий, типа OnMouseClick, OnMouseOver и т.п.

    // if
    //  0AB1: call @is_cursor_here 4 start 30@ 29@ end_offset 28@ 27@ cursor_offset_to 26@ 25@
    // then
    //  //* Actions *//
    // end
    //
    // Функция проверяет находится ли курсор в заданном прямоугольнике координат.
    // А также выводит смещение курсора от точки начала (левого верхнего угла)
    //
    // 30@, 29@ - координаты левого верхнего угла
    // 28@, 27@ - оффсеты до правого нижнего угла
    // 26@, 25@ - возвращает оффсет мышки от координат левого верхнего угла (необязательные параметры)
    //
    // 30@ - позиция начала по оси X
    // 29@ - позиция начала по оси Y
    // 28@ - смещение до конца по оси X
    // 27@ - смещение до конца по оси Y
    // 26@ - смещение курсора от начала по оси X
    // 25@ - смещение курсора от начала по оси Y
    //
    // Например нам нужно проверить есть ли мышка в прямоуглольнике от (400,1) до (865,250)
    // Значит 30@ = 400, 29@ = 1, 28@ = 465, 27@ = 249
     
    :is_cursor_here
    0AB1: call @GetCursorPos 0 4@ 5@ // Получаем позицию курсора
    if and
        001D: 4@ > 0@
        001D: 5@ > 1@
    then
        005A: 0@ += 2@
        005A: 1@ += 3@
        if and
            001D: 0@ > 4@
            001D: 1@ > 5@
        then
            0485:  return_true
        else
            059A:  return_false
        end
        0062: 0@ -= 2@
        0062: 1@ -= 3@
    else
        059A:  return_false
    end
    0062: 4@ -= 0@
    0062: 5@ -= 1@
    0AB2: ret 2 4@ 5@
     
    :GetCursorPos
    0AA2: 0@ = load_library "user32.dll"
    0AA4: 1@ = get_proc_address "GetCursorPos" library 0@
    0AC8: 2@ = allocate_memory_size 8
    0AA5: call 1@ num_params 1 pop 0 2@
    0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
    2@ += 4
    0A8D: 4@ = read_memory 2@ size 4 virtual_protect 0
    0AC9: free_memory 2@
    0AA3: free_library 0@
    0AB2: ret 2 3@ 4@ 
     
    Последние данные очков репутации:
    legend2360: 3 Очки 7 мар 2014
    legend2360 нравится это.
  2. san0

    san0 (っ◔◡◔)っ ♥ #San0 ♥
    Проверенный

    Регистрация:
    15.12.2013
    Сообщения:
    310
    Симпатии:
    134
    Репутация:
    56
    Сразу для 0.3z // 0AB1: call @getChatEntryText 1 id 0@ to 1@
    :getChatEntryText
    0ab1: call @GetSampBase 0 retr_base_to 1@
    1@ += 0x212A6C
    0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
    1@ += 0x136
    0@ *= 252 // size of stChatEntry
    005A: 1@ += 0@ // (int)
    1@ += 28
    0AB2: ret 1 1@
     
    :GetSampBase
    wait 0
    0AA2: 0@ = load_library "kernel32.dll"
    0AA4: 1@ = get_proc_address "GetModuleHandleA" library 0@
    0AA7: call_function 1@ num_params 1 pop 0 "samp.dll" 2@
    0ab2: ret 1 2@
     
    Последние данные очков репутации:
    tayler882: 1 Очко 5 мар 2014
    Opcode.eXe: 1 Очко 14 мар 2014
    tayler882 нравится это.
  3. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    Useful for flying mods O:-)
    //0AB1: @DISABLE_VELOCITY_Z_LIMIT 1 FALSE
    //0AB1: @DISABLE_VELOCITY_Z_LIMIT 1 TRUE
    :DISABLE_VELOCITY_Z_LIMIT
    if
    0@ == 1
    then
        0A8C: write_memory 0x5E91CE size 1 value 0x90 virtual_protect 1
        0A8C: write_memory 0x5E91CF size 1 value 0x90 virtual_protect 1
        0A8C: write_memory 0x5E91D0 size 1 value 0x90 virtual_protect 1
        0A8C: write_memory 0x5E91D1 size 1 value 0x90 virtual_protect 1
        0A8C: write_memory 0x5E91D2 size 1 value 0x90 virtual_protect 1
        0A8C: write_memory 0x5E91D3 size 1 value 0x90 virtual_protect 1
        0A8C: write_memory 0x5E91D4 size 1 value 0x90 virtual_protect 1
    else
        if
        0@ == 0
        then
            0A8C: write_memory 0x5E91CE size 1 value 0xC7 virtual_protect 1
            0A8C: write_memory 0x5E91CF size 1 value 0x46 virtual_protect 1
            0A8C: write_memory 0x5E91D0 size 1 value 0x4C virtual_protect 1
            0A8C: write_memory 0x5E91D1 size 1 value 0    virtual_protect 1
            0A8C: write_memory 0x5E91D2 size 1 value 0    virtual_protect 1
            0A8C: write_memory 0x5E91D3 size 1 value 0x80 virtual_protect 1
            0A8C: write_memory 0x5E91D4 size 1 value 0x3E virtual_protect 1
        end
    end
    0AB2: ret 0
     
    //0AB1: @DISABLE_GROUND_COLLISION_FOR_VELOCITY 0
    :DISABLE_GROUND_COLLISION_FOR_VELOCITY
    0A96: 23@ = actor $PLAYER_ACTOR struct
    0A8E: 22@ = 23@ + 0x46C
    0A8C: write_memory 22@ size 1 value 0 virtual_protect 0 // ONFOOT STATE = AIR
    0A96: 23@ = actor $PLAYER_ACTOR struct
    0A8E: 22@ = 23@ + 0x46D
    0A8C: write_memory 22@ size 1 value 3 virtual_protect 0  // JUMP STATE = ONFOOT
    0AB2: ret 0
     
    _Viktor_ и SR_team нравится это.
  4. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    //0AB1: @CREATE_VELOCITY_PUSH 4 FROM ACTOR $PLAYER_ACTOR _TO_OFFSET 0.0 0.0 0.0 STORE_TO 4@ 5@ 6@
    :CREATE_VELOCITY_PUSH
    04C4: store_coords_to 4@ 5@ 6@ from_actor 0@ with_offset 1@ 2@ 3@
    Actor.StorePos(0@, 7@, 8@, 9@)
    0063: 4@ -= 7@ // (float)
    0063: 5@ -= 8@ // (float)
    0063: 6@ -= 9@ // (float)
    0AB2: RET 3 4@ 5@ 6@
     
    p1cador, fonarik и san0 нравится это.
  5. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    //0AB1: @CREATE_VELOCITY_IN_LOOKING_DIRECTION 1 POWER 1.0 _STORE_TO 4@ 5@ 6@
    :CREATE_VELOCITY_IN_LOOKING_DIRECTION
    0087: 13@ = 0@ // (float)
    Actor.StorePos($PLAYER_ACTOR, 20@, 21@, 22@)
    068D: get_camera_position_to 24@ 25@ 26@
    0063: 20@ -= 24@ // (float)
    0063: 21@ -= 25@ // (float)
    0063: 22@ -= 26@ // (float)
    Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
    006B: 20@ *= 13@ // (float)
    006B: 21@ *= 13@ // (float)
    006B: 22@ *= 13@ // (float)
    005B: 22@ += 13@ // (float)
    005B: 0@ += 20@ // (float)
    005B: 1@ += 21@ // (float)
    005B: 2@ += 22@ // (float)
    Actor.StorePos($PLAYER_ACTOR, 3@, 4@, 5@)
    0063: 0@ -= 3@ // (float)
    0063: 1@ -= 4@ // (float)
    0063: 2@ -= 5@ // (float)
    0AB2: RET 3 0@ 1@ 2@
     
    p1cador и Dragar нравится это.
  6. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    This function gets the closest player to your crosshair. You can add your own filters.
    Its a better version of 0AD2. Function opcode:

    0AB1: @GET_AIM_TARGET_ACTOR 1 IN_RADIUS_FROM_CROSSHAIR 400.0 _STORE_TO 0@

    FUNCTION + EXAMPLE:

    {$CLEO .cs}
    0000:
     
    WHILE TRUE
        WAIT 0
        0AB1: @GET_AIM_TARGET_ACTOR 1 IN_RADIUS_FROM_CROSSHAIR 400.0 _STORE_TO 0@
        if
        056D:  actor 0@ defined
        then
            0187: 1@ = create_marker_above_actor 0@
            WAIT 100
            0164: disable_marker 1@
        end
    END
     
     
     
     
     
     
     
     
    //0AB1: @GET_AIM_TARGET_ACTOR 1 IN_RADIUS_FROM_CROSSHAIR 400.0 _STORE_TO 0@
    :GET_AIM_TARGET_ACTOR
    FOR 28@ = 0.0 TO 0@ STEP 8.0
        0A8D: 29@ = read_memory 0xB74490 size 4 virtual_protect 0
        000A: 29@ += 0x4
        0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
        for 30@ = 0 to 35584 step 0x100
            0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
            000A: 29@ += 0x1
            if and
                0029:  31@ >= 0x00
                001B:  0x80 > 31@
            then
                005A: 31@ += 30@
                if
                056D:  actor 31@ defined
                then
                    if
                    803C: $PLAYER_ACTOR == 31@ // (int)
                    then
                    04C4: store_coords_to 27@ 26@ 25@ from_actor 31@ with_offset 0.0 0.0 0.0
                    068D: get_camera_position_to 24@ 23@ 22@
                        if and { PUT YOUR CHECKS RIGHT BELOW THIS...}
                        06BD:  no_obstacles_between 27@ 26@ 25@ and 24@ 23@ 22@ solid 1 car 1 actor 0 object 1 particle 0
                        80DF:  actor 31@ driving
                        8118:  actor 31@ dead
                        02CB:  actor 31@ bounding_sphere_visible
                        then
                            04C4: store_coords_to 10@ 11@ 12@ from_actor 31@ 0.0 0.0 0.0 
                            0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 10@ Y 11@ Z 12@ store_screen_X_to 13@ Y_to 14@
                            0509: 15@ = distance_between_XY 339.1 179.1 and_XY 13@ 14@
                            if
                            0035:  28@ >= 15@ // (float)
                            then
                                0AB2: 1 31@     
                            end 
                        end
                    end
                end
            end
        end
    END
    0AB2: 1 -1
     
    //0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 0@ Y 1@ Z 2@ store_screen_X_to 3@ Y_to 4@
    :getScreenXYFrom3DCoords
    0AC7: 14@ = var 0@ offset
    0AC7: 15@ = var 3@ offset
    0AC7: 16@ = var 6@ offset
    0AC7: 17@ = var 9@ offset
    0AA5: call 0x70CE30 num_params 6 pop 6 {18@ 18@} 0 0 17@ 16@ 15@ 14@
    0007: 12@ = 640.0
    0007: 13@ = 448.0
    0A8D: 14@ = read_memory 0xC17044 size 4 virtual_protect 0
    0A8D: 15@ = read_memory 0xC17048 size 4 virtual_protect 0
    0093: 14@ = integer 14@ to_float
    0093: 15@ = integer 15@ to_float
    0073: 12@ /= 14@
    0073: 13@ /= 15@
    006B: 3@ *= 12@
    006B: 4@ *= 13@
    0AB2: ret 2 3@ 4@
     
    Последние данные очков репутации:
    SR_team: 2 Очки (very nice) 30 мар 2014
    Niko.: 1 Очко (Big thanks) 4 апр 2015
    tezooo: 1 Очко 22 окт 2016
    tezooo, p1cador, Niko. и 5 другим нравится это.
  7. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    { EXAMPLE:
        if
        0AB1: @GET_TARGET_CAR 0 _STORE_TO 0@
        then
            0186: 1@ = create_marker_above_car 0@
            wait 500
            0164: disable_marker 1@
        end
        by OpcodeXe for www.ugbase.eu
    }   
    :GET_TARGET_CAR
    8@ = 0 {GOT_CAR?,FALSE}
    if
    0AE2: 0@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 99999.0 find_next 0 pass_wrecked 0
    then
        REPEAT
            if
            00DF:  actor $PLAYER_ACTOR driving
            then
                03C0: 7@ = actor $PLAYER_ACTOR car
                else
                7@ = -1
            end
            0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset 0.0 0.0 0.0
            0AB1: @getScreenXYFrom3DCoords 3 3D_coords_X 1@ 2@ 3@ _to X 4@ Y 5@
            03F0: enable_text_draw 1
            //038E: draw_box_position 320.0 200.0 size 50.0 50.0 RGBA 0 0 0 100 {TARGET_SPOT_POINT}
            0509: 6@ = distance_between_XY 320.0 200.0 and_XY 4@ 5@
            if  and
            803B: 0@ == 7@ NOT_MY_CAR
            02CA: 0@ IN_VIEW
            6@ < 50.0 { ITS NEAR MY TARGET_SPOTTER POINT }
            then
                8@ = 1 {GOT_CAR?,TRUE}
                break
            end 
        UNTIL 8AE2: 0@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 99999.0 find_next 1 pass_wrecked 0
    end
    if
    8@ == 0
    then
        059A:  return_false
    else
        0485:  return_true
    end
    0AB2: 1 0@
     
    //0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 0@ Y 1@ Z 2@ store_screen_X_to 3@ Y_to 4@
    :getScreenXYFrom3DCoords
    0AC7: 14@ = var 0@ offset
    0AC7: 15@ = var 3@ offset
    0AC7: 16@ = var 6@ offset
    0AC7: 17@ = var 9@ offset
    0AA5: call 0x70CE30 num_params 6 pop 6 {18@ 18@} 0 0 17@ 16@ 15@ 14@
    0007: 12@ = 640.0
    0007: 13@ = 448.0
    0A8D: 14@ = read_memory 0xC17044 size 4 virtual_protect 0
    0A8D: 15@ = read_memory 0xC17048 size 4 virtual_protect 0
    0093: 14@ = integer 14@ to_float
    0093: 15@ = integer 15@ to_float
    0073: 12@ /= 14@
    0073: 13@ /= 15@
    006B: 3@ *= 12@
    006B: 4@ *= 13@
    0AB2: ret 2 3@ 4@
     
    woksonal, XyJluraH_J и SR_team нравится это.
  8. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.671
    Симпатии:
    1.660
    Репутация:
    439
    Получение скорости кара, по координатам X Y Z.
    //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@
     
  9. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    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:


    [​IMG]

    //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

    [​IMG]
     
    Последние данные очков репутации:
    alfazlo: 1 Очко (+) 11 июн 2014
    alfazlo и fonarik нравится это.
  10. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    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@
    [​IMG]
     
    #50 Opcode.eXe, 4 май 2014
    Последнее редактирование модератором: 18 дек 2014
    SPARTA, Dark_Knight, alfazlo и ещё 1-му нравится это.
  11. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    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 нравится это.
  12. gcode

    gcode нестандартное звание звание звание звание звани...
    Проверенный

    Регистрация:
    09.06.2013
    Сообщения:
    793
    Симпатии:
    392
    Репутация:
    361
    Возвращает нажатую на данный момент клавишу.
    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@
     
  13. hnnssy

    hnnssy Creator of mgmoldova's mother
    Друг

    Регистрация:
    23.03.2013
    Сообщения:
    1.817
    Симпатии:
    1.110
    Репутация:
    187
    Описание: Получает кол-во пт в обойме.
    Использование: 0AB1: call @get_AmmoInClip 0 return: 0@
    Код:
    
    :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@
    
     
    Последние данные очков репутации:
    Opcode.eXe: 1 Очко (good) 15 июн 2014
    Drv64: 1 Очко (Помог) 25 сен 2014
    AW_Rage: 1 Очко (Помог :)) 3 авг 2015
    4el0ve4ik, AWRage, mauvais_ton и ещё 1-му нравится это.
  14. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    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
     
    Последние данные очков репутации:
    Ink: 1 Очко (1) 3 июл 2014
  15. hnnssy

    hnnssy Creator of mgmoldova's mother
    Друг

    Регистрация:
    23.03.2013
    Сообщения:
    1.817
    Симпатии:
    1.110
    Репутация:
    187
    Получение статуса меню TAB. (1 - открыто, 0 - закрыто)
    call @get_scoreboard_status 0 return_me: 0@
    
    :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 и hq~ нравится это.
  16. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.671
    Симпатии:
    1.660
    Репутация:
    439
    Округление дробного числа
    0ab1: call_scm_func @Float2Integer 1 1@ 2@
    1@ - входящее число
    2@ - возвращаемое число
    
    :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@
     
    Thomas_Johnson и mauvais_ton нравится это.
  17. legend2360

    legend2360   ¯\_(°□°)_/¯
    Всефорумный модератор

    Регистрация:
    23.03.2013
    Сообщения:
    2.387
    Симпатии:
    846
    Репутация:
    479
    :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 нравится это.
  18. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.671
    Симпатии:
    1.660
    Репутация:
    439
    Получение скилла в %
    0ab1: @SkiLl 1 0@ 1@
    0@ - id оружия
    1@ - уровень скилла
    :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@
     
  19. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    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  
     
  20. mauvais_ton

    mauvais_ton Известный пользователь

    Регистрация:
    27.05.2013
    Сообщения:
    86
    Симпатии:
    39
    Репутация:
    27
    Удаление строки чата (чат автоматически обновляется, не нужно добавлять строку в чат).

    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
     
    Последние данные очков репутации:
    Vetalll: 1 Очко (Полезно.) 13 май 2017
    mgmoldova: 2 Очки 7 июл 2017
    Vetalll и Сэнд нравится это.
  21. FYP

    FYP админ какой-то

    Регистрация:
    09.03.2013
    Сообщения:
    1.113
    Симпатии:
    1.959
    Репутация:
    736
    :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
    
    :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@
     
    Последние данные очков репутации:
    hnnssy: 4 Очки 11 сен 2014
    mauvais_ton нравится это.
  22. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    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@
     
  23. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    So you wanna edit a vehicle's handling value? Like make a car go faster?
    With these two snippets you can do it!


    0AB1: @GET_HANDLING 3 FROM_VEHICLE_MODEL #SULTAN OFFSET 0x1C SIZE 4 _TO: 0@
    //0AB1: @GET_HANDLING 3 FROM_VEHICLE_MODEL #SULTAN OFFSET 0x1C SIZE 4 _TO: 0@
    :GET_HANDLING
    0@ *= 4
    0@ += 0xA9B0C8
    0A8D: 0@ 0@ 4 0
    0@ += 0x4A
    0A8D: 0@ 0@ 2 0
    0@ *= 0xE0
    0@ += 0xC2B9DC
    005A: 0@ 1@
    0A8D: 3@ 0@ 2@ 0
    0AB2: 1 3@
    0AB1: @SET_HANDLING 4 FROM_VEHICLE_MODEL #SULTAN OFFSET 0x1C SIZE 4 INTO: -1.0
    //0AB1: @SET_HANDLING 4 FROM_VEHICLE_MODEL #SULTAN OFFSET 0x1C SIZE 4 INTO: -1.0
    :SET_HANDLING
    0@ *= 4
    0@ += 0xA9B0C8
    0A8D: 0@ 0@ 4 0
    0@ += 0x4A
    0A8D: 0@ 0@ 2 0
    0@ *= 0xE0
    0@ += 0xC2B9DC
    005A: 0@ 1@
    0A8C: 0@ 2@ 3@ 0
    0AB2: 0

    Here is a list of all the offsets:

    //-------------------------------
    //List of Handling Offsets:
    {
    0x0  = [dword] Index/Identifier
    0x4  = fMass
    0x8  = 1.0 / fMass
    0xC  = fTurnMass
    0x10 = fDragMult
    0x14 = CentreOfMass.x
    0x18 = CentreOfMass.y
    0x1C = CentreOfMass.z
    0x20 = [byte] nPercentSubmerged
    0x24 = fMass * 8.0000001E-1 / nPercentSubmerged
    0x28 = fTractionMultiplier
    0x74 = [byte] TransmissionData.nDriveType
    0x75 = [byte] TransmissionData.nEngineType
    0x76 = [byte] TransmissionData.nNumberOfGears
    0x7C = TransmissionData.fEngineAcceleration (Multiplied by 3.9999999E-4)
    0x80 = TransmissionData.fEngineInertia
    0x84 = TransmissionData.fMaxVelocity (Multiplied by 5.5555599E-3)
    0x94 = fBrakeDeceleration (Multiplied by 3.9999999E-4)
    0x98 = fBrakeBias
    0x9C = [byte] bABS
    0xA0 = fSteeringLock
    0xA4 = fTractionLoss
    0xA8 = fTractionBias
    0xAC = fSuspensionForceLevel
    0xB0 = fSuspensionDampingLevel
    0xB4 = fSuspensionHighSpdComDamp
    0xB8 = Suspension upper limit
    0xBC = Suspension lower limit
    0xC0 = Suspension bias between front and rear
    0xC4 = Suspension anti-dive multiplier
    0xC8 = fCollisionDamageMultiplier (multiplier not yet found)
    0xCC = [hex] modelFlags
    0xD0 = [hex] handlingFlags
    0xD4 = fSeatOffsetDistance
    0xD8 = [dword] nMonetaryValue
    0xDC = [byte] Front lights
    0xDD = [byte] Rear lights
    0xDE = [byte] Vehicle anim group 
    }
    Example:
    - Making the SULTAN take no damage when colliding with somehting:
    {$CLEO .cs}
    0000:
    0AB1: @SET_HANDLING 4 FROM_VEHICLE_MODEL #SULTAN OFFSET 0xC8 SIZE 4 INTO: 0.0 //fCollisionDamageMultiplier
    004E: END_THIS_THREAD
     
    Последние данные очков репутации:
    Dark_Knight: 4 Очки 13 сен 2014
    hnnssy: 4 Очки (spsbrat) 13 сен 2014
    mauvais_ton: 1 Очко (Офигенно.) 15 сен 2014
    4el0ve4ik, mauvais_ton, hnnssy и 2 другим нравится это.
  24. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.671
    Симпатии:
    1.660
    Репутация:
    439
    Узнаем дамаг оружия в руке (для сингла не пойдет)
    0ab1: call @DamageConvert 0 0@
    :DamageConvert
    0A96: 2@ = actor $PLAYER_ACTOR struct
    2@ += 0x72C
    0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0
    0470: 0@ = actor $PLAYER_ACTOR current_weapon
    0085: 1@ = 0@
    if 2@ == 2
        then 1@ += 25
        end
    if 2@ == 3
        then 1@ += 36
        end
    1@ *= 112
    1@ += 13150904
    1@ += 0x22
    0A8D: 1@ = read_memory 1@ size 2 virtual_protect 0
    0093: 1@ = integer 1@ to_float
    if and
    0@ >= 22
    0@ <> 25
    0@ <> 26
    0@ <> 27
    0@ <= 34
        then 1@ /= 3.0434782608695652173913043478261
        end
    ret 1 1@
     
    Последние данные очков репутации:
    Opcode.eXe: 1 Очко (y) 14 сен 2014
    4el0ve4ik и DubStep_ нравится это.
  25. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    This Sync's pessenger seat.

    0AB1: @PACKET_PASSENGER_SYNC 1 CAR_HANDLE 0@
    :PACKET_PASSENGER_SYNC
    IF
    0B2C: samp 30@ = get_vehicle_id_by_car_handle 0@
    THEN
        0AC8: 31@ = allocate_memory_size 24
        0C0D: struct 31@ offset 0 size 2  = 30@
        0C0D: struct 31@ offset 2 size 1  = 1
        0C0D: struct 31@ offset 3 size 1  = 0
        0C0D: struct 31@ offset 4 size 1  = 50
        0C0D: struct 31@ offset 5 size 1  = 0
        0C0D: struct 31@ offset 6 size 2  = 0
        0C0D: struct 31@ offset 8 size 2  = 0                                                             
        0C0D: struct 31@ offset 10 size 2 = 0 
        0B3D: raknet 29@ = new_bit_stream
        0B40: raknet bit_stream 29@ write 216 type 0 size 1
        0B40: raknet bit_stream 29@ write 31@ type 5 size 63
        0B8B: raknet send bit_stream 29@
        0B3E: raknet delete_bit_stream 29@
        0AC9: free_allocated_memory 31@       
    END
    0AB2: 0
     
    Garrus нравится это.
  26. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    Does anyone have a function to change a cars model into another model?
    Example: My current cars model == #SULTAN, When i press X my car model changes to #INFERNUS.

    Кто-нибудь есть функцию для изменения автомобилей модели в другую модель?
    Пример: Мой текущий автомобили модели == #SULTAN, когда я нажимаю X мои модели автомобиля изменения #INFERNUS.



     
  27. FYP

    FYP админ какой-то

    Регистрация:
    09.03.2013
    Сообщения:
    1.113
    Симпатии:
    1.959
    Репутация:
    736
    you can destroy your car and create new with same matrix, speed and other parameters. also you need to rewrite car handle and struct in samp vehicle pool.
    there is some function, but it's buggy:
    
    :ChangeCarModel // 0@:car_handle, 1@:model
    Model.Load(1@)
    038B: load_requested_models
    while not model.Available(1@)
        wait 0
    end
    0A97: 2@ = car 0@ struct
    0AA6: call_method 0x6D6A40 2@ num_params 1 pop 0 1@
    ret 0
    
     
    Последние данные очков репутации:
    Opcode.eXe: 1 Очко (Thanks :O) 15 сен 2014
    hnnssy и Opcode.eXe нравится это.
  28. gcode

    gcode нестандартное звание звание звание звание звани...
    Проверенный

    Регистрация:
    09.06.2013
    Сообщения:
    793
    Симпатии:
    392
    Репутация:
    361
    0AC8: 30@ = allocate_memory_size 64
    repeat
        wait 50
        0AB1: call_scm_func @nowkeys 1 array 30@ num_of_keys_to 29@  
    until 29@ > 0
    0AF8: samp add_message_to_chat "Зажато %d клавиш:" color 0xEAEAEA 29@
    29@ -= 1
    for 28@ = 0 to 29@
        0C0E: 27@ = array 30@ element 28@
        0AF8: samp add_message_to_chat "id %d" color 0xEAEAEA 27@
    end 
    0AC9: free_allocated_memory 30@
    
    :nowkeys
    2@ = 0
    for 1@ = 1 to 222
        if
            0ab0: 1@
        then
            0C0F: array 1@ element 2@ = 1@
            2@ += 1
        end
    end
    0ab2: 1 2@
     
  29. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    With this function you can create beeps with frequency. Currently it gets 1 warning message. I have no idea why it happens. //FIXED: Thx to Dark_Knight
    //0AB1: @MAKE_BEEP 2 FREQUENCY 0x25 TIME 1000
    :MAKE_BEEP
    IF
    0AA2: 31@ = load_library "kernel32.dll"
    THEN
        IF
        0AA4: 30@ = get_proc_address "Beep" library 31@
        THEN
            0AA5: _CALL_ 30@ num_params 2 pop 0 1@ 0@
        END
        0AA3: free_library 31@
    END
    0AB2: 0
     
  30. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    try this
    0AA5: _CALL_ 30@ num_params 2 pop 0 {_In_ DWORD dwDuration}0@ {_In_ DWORD dwFreq}1@ {return value }2@
     
  31. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    With these functions you can move the Gta Sa Camera.

    0AB1: @MouseMOVE_DOWN 0
    0AB1: @MouseMOVE_UP 0
    0AB1: @MouseMOVE_LEFT 0
    0AB1: @MouseMOVE_RIGHT 0

    I already made a Aimbot with these things and its really cool.


    :MouseMOVE_RIGHT
    0AA2: 31@ = load_library "user32.dll"
    0AA4: 30@ = get_proc_address "mouse_event" library 31@ 
    IF
    0A4C:   mouse_not_inverted_vertically
    THEN
        0AA5: call 30@ num_params 5 pop 0 0 0 0 -2 0
    ELSE
        0AA5: call 30@ num_params 5 pop 0 0 0 0 2 0
    END
    0AA3: free_library 31@
    0AB2: 0
    
    :MouseMOVE_LEFT
    0AA2: 31@ = load_library "user32.dll"
    0AA4: 30@ = get_proc_address "mouse_event" library 31@ 
    IF
    0A4C:   mouse_not_inverted_vertically
    THEN
        0AA5: call 30@ num_params 5 pop 0 0 0 0 2 0
    ELSE
        0AA5: call 30@ num_params 5 pop 0 0 0 0 -2 0
    END
    0AA3: free_library 31@
    0AB2: 0
    
    :MouseMOVE_DOWN
    0AA2: 31@ = load_library "user32.dll"
    0AA4: 30@ = get_proc_address "mouse_event" library 31@ 
    0AA5: call 30@ num_params 5 pop 0 0 0 -2 0 0
    0AA3: free_library 31@
    0AB2: 0
    
    :MouseMOVE_UP
    0AA2: 31@ = load_library "user32.dll"
    0AA4: 30@ = get_proc_address "mouse_event" library 31@ 
    0AA5: call 30@ num_params 5 pop 0 0 0 2 0 0
    0AA3: free_library 31@
    0AB2: 0
     
    Последние данные очков репутации:
    SR_team: 4 Очки (Oh good!) 26 сен 2014
    p1cador нравится это.
  32. spiceman

    spiceman GOWNIK <3
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    105
    Симпатии:
    35
    Репутация:
    62
    Описание: Стандартный аудиострим SAMP
    Использование:
    0AC8: 0@ = allocate_memory_size SizeUri
    0AD3: 0@ = format "someUri"
    // exp: 0AD3: 0@ = format "http:%c%cmysite.com%ctrack-1.mp3" 0x2F 0x2F 0x2F
    0AB1: @PlayAudioStream 1 uri 0@
    wait 50
    0AB1: @StopAudioStream 0
    :PlayAudioStream
    // 0AB1: @PlayAudioStream 1 uri 1@
    0C17: 1@ = strlen 0@
     
    2@ = RakNet.NewBitStream()
    RakNet.Write(2@, 1@, BS_TYPE_BYTE, 0x01) // Длина строки
    RakNet.Write(2@, 0@, BS_TYPE_ARRAY, 1@) // URI записи
    for 1@ = 0 to 0xE
        RakNet.Write(2@, 0x00, BS_TYPE_BYTE, 0x01)
    end
    RakNet.Write(2@, 0x48, BS_TYPE_BYTE, 0x1)
    RakNet.Write(2@, 0x42, BS_TYPE_BYTE, 0x1)
    RakNet.Write(2@, 0x00, BS_TYPE_BYTE, 0x1)
    0BF6: raknet emul_rpc_receive 0x29 bit_stream 2@
    RakNet.DeleteBitStream(2@)
    0AB2: ret 0
     
    :StopAudioStream
    0@ = RakNet.NewBitStream()
    0BF6: raknet emul_rpc_receive 0x2A bit_stream 0@
    RakNet.DeleteBitStream(0@)
    0AB2: ret 0
     
    Последние данные очков репутации:
    Opcode.eXe: 1 Очко (nicee) 2 окт 2014
    gcode: 4 Очки (zaebok) 5 окт 2014
    Сэнд, test132, Dragar и 2 другим нравится это.
  33. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    0AB1: @GetCurrentPcUserName 0 0@
    0@ = "Opcode" - PC NAME...

    //0AB1: @GetCurrentPcUserName 0 0@
    :GetCurrentPcUserName
    IF
    0AA2: 31@ = load_library "Advapi32.dll"
    THEN 
        0AC8: 1@ = allocate_memory_size 260
        IF
        0AA4: 30@ = get_proc_address "GetUserNameA" library 31@
        THEN 
            0AC8: 0@ = allocate_memory_size 260   
            0AA5: call 30@ num_params 2 pop 0 0@ 1@
            0AC9: free_allocated_memory 0@
        ELSE
            0AD3: 1@ = "ERROR"
        END
        0AA3: free_library 31@
    END
    0AB2: 1 1@
     
  34. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.671
    Симпатии:
    1.660
    Репутация:
    439
    by Seemann
    0x514970 - метода класса СViewport (0xB6F028), который записывает в буфер координаты площади прицеливания.
    .text:00514970 ; int __cdecl CViewport__gettargetarea(float targetrange,float x,float y,float z,int* ll_corner,int* ur_corner)

    1 параметр - максимальное расстояние до точки прицеливания (см. weapon.dat).
    2, 3, 4 - координаты точки отуда ведется прицеливание (позиция актера/игрока)
    5 - указатель на буфер, в который будут записаны координаты нижнего левого угла площади прицеливания
    6 - указатель на буфер, в который будут записаны координаты верхнего правого угла площади прицеливания

    Грубо говоря, линия между этими двумя углами - это траектория полета пули. Длина траектории равна 1 параметру. Координаты в первом буфере - место вылета пули. Координаты во втором буфере - это примерная точка, куда она попадет (туда же направлен и прицел).
    Буфер должен быть размером в 12 байтов, чтобы хранить 3 переменные XYZ.

    Вот как можно применить это в коде:
    029B: 28@ = init_object 1224 at 2480.562 -1666.865 12.8757 // создаем ящик
     
    while true
        wait 0
     
        00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@  // записываем начальные координаты
        //                                                            {$13-$15} {$16-$18} {z} {y} {x} {target range}
        0AA6: call_method 0x514970 struct 0xB6F028 num_params 6 pop 0 0xA49994  0xA499A0  2@  1@  0@  20.0 // вызываем метод. буфер - это группы глоб. переменных
        01BC: put_object 28@ at $13 $14 $15  // перемещаем ящик в точку прицеливания
    end
     
  35. mgmoldova

    mgmoldova Creator of hnnssy
    Проверенный

    Регистрация:
    18.03.2013
    Сообщения:
    281
    Симпатии:
    205
    Репутация:
    158
    by Ноунейм ( нашел случайно)
    0AA7: call 0x8220AD num_params 6 pop 6 params 1@v 2@v 3@ 4@ "%s %s %d %d" string 0@ retr_svars 5@
    Аналог 0AD4: 4@ = scan_string 0@v format "%d + %d = %d" 5@ 6@ 7@ //IF and SET
    Можно искать стринг.

    :write_script
    0B35: samp 0@ = get_last_command_params
    0AA7: call 0x8220AD num_params 6 pop 6 params 1@v 2@v 3@ 4@ "%s %s %d %d" string 0@ retr_svars 5@
    if 5@ == 4
    then
        0AF5: write_string 4@ to_ini_file "CLEO\config.ini" section "SaveFake" key "HitName"
        0AF5: write_string 3@ to_ini_file "CLEO\config.ini" section "SaveFake" key "PlaName"
        0AF1: write_int 2@ to_ini_file "CLEO\config.ini" section "SaveFake" key "PlaID"
        0AF1: write_int 1@ to_ini_file "CLEO\config.ini" section "SaveFake" key "ConSumma"
        else
        0AF8: samp add_message_to_chat "<< /fk_write [Ник хитмана] [Ник игрока] [ID Игрока] [Сумма] >>" color 0xFAEBD7
    end
    0b43: samp cmd_ret  
     
    Последние данные очков репутации:
    SR_team: 4 Очки (какой нонейм? В конфе кто-то кидал. Альфа вроде или легенгд) 13 окт 2014
    Niko. нравится это.
  36. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.671
    Симпатии:
    1.660
    Репутация:
    439
    Получаем количество подключенных скриптов. Аналогично можно записать свое значение.
    0ab1: call @ScriptCounter 0 1@
     
    :ScriptCounter
    0AA2: 31@ = load_library "kernel32.dll"
    0AA4: 30@ = get_proc_address "GetModuleHandleA" library 31@
    0AA7: call_function 30@ num_params 1 pop 0 "CLEO.asi" 0@
    0@ += 0x43154
    0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
    ret 1 1@
     
    Niko. и XyJluraH_J нравится это.
  37. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    0AB1: @GET_CAMERA_FACING_ANGLES 0 Z_AND_Y 0@ 1@
    0@ = Camera_Z_Angle_from_Player
    1@ = Camera_Y_Angle_from_Player

    Example:

    {$CLEO .cs}
    0000:
     
    WHILE TRUE
    WAIT 0
        0AB1: @GET_FACING_ANGLES 0 Z_AND_Y 0@ 1@
        083E: set_actor $PLAYER_ACTOR rotation 1@ 0.0 0@ IN AIR!!
        0812: $PLAYER_ACTOR "FALL_SKYDIVE" "PARACHUTE" 4.0 1 1 1 1 -1
    END
    
    //0AB1: @GET_CAMERA_FACING_ANGLES 0 Z_AND_Y 0@ 1@
    :GET_CAMERA_FACING_ANGLES
    00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@   
    0AA6: call_method 0x514970 struct 0xB6F028 num_params 6 pop 0 0xA49994 0xA499A0 3@ 2@ 1@ 20.0
    0AB1: call_scm_func @getYAngleBetweenPoints_ULKXK 6 from_XYZ $13 $14 $15 and_XYZ 1@ 2@ 3@ store_to 5@
    0AB1: call_scm_func @getZAngleBetweenPoints_ULKXK 4 from_XY $13 $14 and_XY 1@ 2@ store_to 4@
    5@ += 90.0
    0AB2: 2 4@ 5@
    :getYAngleBetweenPoints_ULKXK
    0509: 6@ = distance_between_XY 0@ 1@ and_XY 3@ 4@
    0063: 2@ -= 5@
    0604: get_Z_angle_for_point 6@ 2@ store_to 7@
    0AB2: ret 1 7@
    :getZAngleBetweenPoints_ULKXK
    0063: 0@ -= 2@
    0063: 1@ -= 3@
    0604: get_Z_angle_for_point 0@ 1@ store_to 4@
    0AB2: ret 1 4@
    
     
    p1cador, AWRage и XyJluraH_J нравится это.
  38. legend2360

    legend2360   ¯\_(°□°)_/¯
    Всефорумный модератор

    Регистрация:
    23.03.2013
    Сообщения:
    2.387
    Симпатии:
    846
    Репутация:
    479
    Описание:
    Получение уровня розыска локального игрока(вашего) в SAMP'е.​

    Вызов:
    0AB1: @getWantedLevel 0 return_to 0@​

    Функция:
    :getWantedLevel
    0A8D: 0@ = read_memory 0x58DB60 size 1 virtual_protect 0
    0AB2: ret 1 0@ 
    Значения:
    0@ - wanted level.​
     
    Последние данные очков репутации:
    Ded_Fedot: 1 Очко (sps) 25 окт 2014
    Walk228, Ded_Fedot и XyJluraH_J нравится это.
  39. Opcode.eXe

    Opcode.eXe Известный пользователь

    Регистрация:
    11.04.2013
    Сообщения:
    86
    Симпатии:
    91
    Репутация:
    51
    Does anyone know, how to make CLEO.cs mods run in their own thread?

    Example:
    0AB1: @MAKE_BEEP 2 FREQUENCY 0x25 TIME_MS 5000
    -> Will make GTA_SA.EXE stop working for 5 seconds.

    or

    0AB1: @URLDownloadToFile 2 "file.txt" "google.com"
    -> GTA_SA.EXE paused until download is finished.

    I need to make my .cs multithreaded. So does anyone know how?
    ( maybe impossible?)
     
  40. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    If you want to UrlDownloadToFile not cause freezes the game you need the fifth parameter to pass a pointer to it BindStatusCallback. (c) Google Translate
     
    unInstance нравится это.