The First works fine but with the Buffer wont work <.<
use opcode 0AC8:
The First works fine but with the Buffer wont work <.<
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];
};
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
};
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
};
what i should do with this Opcodeuse opcode 0AC8:
У меня также, правда не понял как ты нумеровал :D, но ведь вылаживали раньше, что там 23 байта и в других структурах все совпдает. У меня так:Нет?Код: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
{
#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
Смотришь структуру. Первый элемент имеет оффсет 0.Как вы их номеруете?
Это точно, или предположение? Просто sKeys в InCar и OnFoot имеет 2 байта.union
{
uint16_t sKeys; [2] +10
struct stSAMPKeys stSampKeys;
};
может тут 1 байт, а не 2
Это не я нумеровал, вот я пронумеровал:ты прав, я не заметил
uint8_t byteArmor; // [1] +4
uint16_t sLeftRightKeys; // [2] +6
Сам исправишь уже
Nobody can help me?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 :)
мб 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
add to skypeNobody can help me?
Nobody can help me?
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@
works fine thx :Dя тебя палкой изобью быстрее, чем ты добавишься ко мне в скайп :(
короче, мне срать что ты не понимаешь русский, переводи как хочешь, но
заходишь в эту тему: 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