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

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Помогите пронумеровать оффсеты. Никак не выходит 23 байта.


Код:
struct stPassengerData
{
#pragma pack( 1 )
    uint16_t    sVehicleID;
    uint8_t        byteSeatID;
    uint8_t        byteCurrentWeapon;
    uint8_t        byteHealth;
    uint8_t        byteArmor;
    uint16_t    sLeftRightKeys;
    uint16_t    sUpDownKeys;
    union
    {
        uint16_t            sKeys;
        struct stSAMPKeys    stSampKeys;
    };
    float        fPosition[3];
};

я уже нумеровал и короче бошка не варит нифига, но должно быть 23 байта, а не выходит. Уже мозг потек от этих оффсетов, вроде, что проще пронумировать но нихера.
Код:
struct stLocalPlayer []
        struct stPassengerData  passengerData;// [23] +0
        struct stAimData                aimData;// [32] +23
        struct stTrailerData    trailerData;// [54] +55
        struct stOnFootData            onFootData;// [68] +109
        struct stInCarData              inCarData;// [63]  +177
 
        uint16_t                                sCurrentVehicleID;//  [2] +240
        uint16_t                                sLastVehicleID;// [2] +242
        int                                            iIsActive;// [4] +244
        int                                            iIsWasted;// [4] +248
        int                                            iCurrentAnimID;// [4] +252
        int                                            iUnknown1;// [4] +256
        struct stSAMPPed                *pSAMP_Actor;// [4] +260
        uint8_t                                byteTeamID;//  [1] +264
        int                                            iSpawnSkin;//  [4] +265
        uint8_t                                byteUnknown1;//  [1] +269
        float                                  fSpawnPos[3];// [12] +270
        float                                  fSpawnRot;//  [4] +282
        int                                            iSpawnWeapon[3];// [12] +286
        int                                            iSpawnAmmo[3];// [12] +298
        int                                            iIsActorAlive;// [4] +310
        int                                            iSpawnClassLoaded;// [4] +314
        uint32_t                                ulSpawnSelectionTick;// [4] +318
        uint32_t                                ulSpawnSelectionStart;// [4] +322
        int                                            iIsSpectating;//  [4] +326
        uint8_t                                byteTeamID2;// [1] +330
        BYTE                                    byteUnknown2[22];// [22] +331
        struct stHeadSync              headSyncData;//  [20] +353
        BYTE                                    byteUnknown3[4];//  [4] +373
        uint16_t                                sAimingAtPid;// [2] +377
        uint8_t                                byteCurrentWeapon;// [1] +379
        struct stSurfData              surfData;// [34] +380
        uint8_t                                byteWeaponInventory[13];// [13] +414
        int                                            iWeaponAmmo[13];// [52] +427
        int                                            iPassengerDriveBy;// [4] +479
        uint8_t                                byteCurrentInterior;//  [1] +483
        int                                            iIsInRCVehicle;//  [4] +484
        BYTE                                    byteUnknown4[256];// [256] +488
        struct stDamageData            vehicleDamageData;// [12] +744
        uint8_t                                byteUnknown5[4];// [4]  +756
        int                                            iClassSelectionOnDeath;// [4] +760
        int                                            iSpawnClassID;// [4] +764
        int                                            iRequestToSpawn;//  [4] +768
        int                                            iIsInSpawnScreen;// [4] +772
        int                                            iUnknown2;// [4] +776
        uint8_t                                byteSpectateMode;// [1] +780  // 3 = vehicle, 4 = player, side = 14, fixed = 15 [] +240
        uint8_t                                byteSpectateType;// [1] +781  // 0 = none, 1 = player, 2 = vehicle  [] +240
        int                                            iSpectateID;// [4] +782
        int                                            iInitiatedSpectating;// [4] +786
        // not placed correctly
        uint32_t                                ulSendTick;// [4] +790
        uint32_t                                ulSpectateTick;// [4] +794
        uint32_t                                ulAimTick;//  [4] +798
        uint32_t                                ulStatsUpdateTick;// [4] +802
        uint32_t                                ulWeapUpdateTick;// [4] +806
        uint32_t                                ulUnknownTick;// [4] +810
        uint8_t                                byteUnknown_756[4];// [4] +814
        uint32_t                                ulZoneNameTick;// [4] +818
        uint32_t                                ulUnoccupiedTick;// [4] +822
        //826  size
       
};
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Код:
struct stPassengerData
{
#pragma pack( 1 )
    uint16_t    sVehicleID; // [2] +0
    uint8_t        byteSeatID; // [1] +1
    uint8_t        byteCurrentWeapon; // [1] +2
    uint8_t        byteHealth; // [1] +3
    uint8_t        byteArmor; // [1] +4
    uint16_t    sLeftRightKeys; // [2] +6
    uint16_t    sUpDownKeys; // [2] +8
    union
    {
        uint16_t            sKeys;
        struct stSAMPKeys    stSampKeys;
    };
    float        fPosition[3]; // [12] +20
// 24 size
};
Нет?
У меня получилось 24 байта :O
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
struct stPassengerData
{
#pragma pack( 1 )
    uint16_t    sVehicleID; // [2] +0
    uint8_t        byteSeatID; // [1] +1
    uint8_t        byteCurrentWeapon; // [1] +2
    uint8_t        byteHealth; // [1] +3
    uint8_t        byteArmor; // [1] +4
    uint16_t    sLeftRightKeys; // [2] +6
    uint16_t    sUpDownKeys; // [2] +8
    union
    {
        uint16_t            sKeys;
        struct stSAMPKeys    stSampKeys;
    };
    float        fPosition[3]; // [12] +20
// 24 size
};
Нет?
У меня получилось 24 байта :O
У меня также, правда не понял как ты нумеровал :D, но ведь вылаживали раньше, что там 23 байта и в других структурах все совпдает. У меня так:
Код:
 {
#pragma pack( 1 )
    uint16_t    sVehicleID; // [2] +0
    uint8_t        byteSeatID; // [1] +2
    uint8_t        byteCurrentWeapon; // [1] +3
    uint8_t        byteHealth; // [1] +4
    uint8_t        byteArmor; // [1] +5
    uint16_t    sLeftRightKeys; // [2] +6
    uint16_t    sUpDownKeys; // [2] +8
    union
    {
        uint16_t            sKeys;                     [2] +10
        struct stSAMPKeys    stSampKeys;
    };
    float        fPosition[x]; // [4] +12
    float        fPosition[y]; // [4] +16
    float        fPosition[z]; // [4] +20  
24
Где-то же этот 1 байт должен отпасть. в других структурах все совпадает вроде.
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как вы их номеруете?
Смотришь структуру. Первый элемент имеет оффсет 0.
Смотришь тип данных: uint16_t - 16 бит / 8 = 2 байта. int/float/uint32 - 4 байта и т.д и прибавляешь.
{
uint16_t element1; // +0 //размер uint16_t - 2 байта первый элемент занимает 2 байта, следующий начинается с 2.
uint8_t element2; // +2 // занимает 1 байт
uint8_t element3 ; //+3
// size 4 byte
{
Если ты это имел ввиду.
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ты прав, я не заметил
uint8_t byteArmor; // [1] +4
uint16_t sLeftRightKeys; // [2] +6
Сам исправишь уже
Это не я нумеровал, вот я пронумеровал:
uint16_t sVehicleID; // [2] +0
uint8_t byteSeatID; // [1] +2
uint8_t byteCurrentWeapon; // [1] +3
uint8_t byteHealth; // [1] +4
uint8_t byteArmor; // [1] +5
uint16_t sLeftRightKeys; // [2] +6
uint16_t sUpDownKeys; // [2] +8
union
{
uint16_t sKeys; [2] +10
struct stSAMPKeys stSampKeys;
};
float fPosition[x]; // [4] +12
float fPosition[y]; // [4] +16
float fPosition[z]; // [4] +20
legend как-то сниху-вверх нумеровал походу :D
 

Z0DY

Новичок
24
0
Ok here is a better Example.
Код:
:start
wait 0
if
0AB0:  key_pressed 0xA2
then
0AC8: 3@ = allocate_memory_size 260
0AB1: call @getChatEntryText 1 id 99 to 0@
0AC9: free_allocated_memory 3@
wait 200
end
jump @start
 
 
 
 
:getChatEntryText
// 0AB1: call @getChatEntryText 1 id 0@ to 1@
1@ = samp.Base()
1@ += 0x212A24 // SAMP_CHAT_INFO_OFFSET  03x
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@

Now 0@ =" Connected to Cheating ALLOWED"
Now i want save "to Cheating" from 0@ to 1@ but i dont know how.
Pls help me guys :)
Nobody can help me?
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
мб aimdata имеет 31
struct stPassengerData passengerData;// [23] +0
struct stAimData aimData;// [32] +23
struct stTrailerData trailerData;// [54] +55
Это все не правильно, так как 109 - 68 = 41 а не 55
Код:
// struct stAimData  ( size = 32 )
//    uint8_t        byteCamMode;
//    float        vecAimf1[3]; + 1
//    float        vecAimPos[3]; + 13
//    float        fAimZ; + 25
//    uint8_t        byteCamExtZoom; + 29
//    uint8_t        byteWeaponState; + 30
//    uint8_t        bUnk; + 31
В конце есть байт неизвестный, может он. ну в любом случае придется прибавлять 1 байт к AimData и убирать этот последний байт, тогда все встанет, в исходниках клиента 0.2x этого байта нет в структуре.
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,262
1,752

я тебя палкой изобью быстрее, чем ты добавишься ко мне в скайп :(

короче, мне срать что ты не понимаешь русский, переводи как хочешь, но
заходишь в эту тему: http://www.blasthack.net/threads/call-scm-funcs.897/#post-16568
копируешь мою функцию, пихаешь в конец своего скрипта и делаешь следующее:

Код:
0AC8: 1@ = 64
0AC8: 2@ = 64
0C11: memset destination 1@ value 0 size 64 // обнулим на всякий
0C11: memset destination 2@ value 0 size 64
0AD3: string 1@ format "сейчас 03.07.2013 0:06"
call @copy_string 4 text 1@ start 7 end 21 to_buffer 2@ // вот вместо 21 можно указать дохреналион, видишь ли моя функция это видит и всё равно скопирует лишь до конца строки..
0AF8: samp add_message_to_chat "result: %s" color 0xFF61BB 2@
0AC9: 1@
0AC9: 2@

что в результате нам даст:
03.07.2013 0:06
 
  • Нравится
Реакции: Charlatan

Z0DY

Новичок
24
0
я тебя палкой изобью быстрее, чем ты добавишься ко мне в скайп :(

короче, мне срать что ты не понимаешь русский, переводи как хочешь, но
заходишь в эту тему: http://www.blasthack.net/threads/call-scm-funcs.897/#post-16568
копируешь мою функцию, пихаешь в конец своего скрипта и делаешь следующее:

Код:
0AC8: 1@ = 64
0AC8: 2@ = 64
0C11: memset destination 1@ value 0 size 64 // обнулим на всякий
0C11: memset destination 2@ value 0 size 64
0AD3: string 1@ format "сейчас 03.07.2013 0:06"
call @copy_string 4 text 1@ start 7 end 21 to_buffer 2@ // вот вместо 21 можно указать дохреналион, видишь ли моя функция это видит и всё равно скопирует лишь до конца строки..
0AF8: samp add_message_to_chat "result: %s" color 0xFF61BB 2@
0AC9: 1@
0AC9: 2@

что в результате нам даст:
03.07.2013 0:06
works fine thx :D
 

Dimk0

Новичок
10
1
Здравствуйте,подскажите опкод,который позволяет cleo нажимать клавиши (как в Autohotkey,только мне нужно именно cleo).