- 2,684
- 2,761
ставить хук на onfoot data и подменять в нём координаты на 10+пацаны, а как сделать чтобы сервер видел мои координаты всегда на 10 метров впереди, от моих локальных. типа fake позиция, хз как объяснить по-другому
ставить хук на onfoot data и подменять в нём координаты на 10+пацаны, а как сделать чтобы сервер видел мои координаты всегда на 10 метров впереди, от моих локальных. типа fake позиция, хз как объяснить по-другому
ВСЁ О РАКНЕТЕ НА КЛЕОКто пояснит за raksamp и работу с пакетами? последний раз на 0.3x Обходился оффсетами, но теперь походу без них никуда, объясните на примерах как например тот же onfoot перехватить?
Размеры типов данных
uint16_t ---> 2 bytes.
uint8_t ---> 1 bytes.
char ---> 1 bytes.
bool ---> 1 bytes.
int ---> 4 bytes.
short int ---> 2 bytes.
unsigned int ---> 4 bytes.
unsigned short int ---> 2 bytes.
uint32_t ---> 4 bytes.
float ---> 4 bytes.
uint16_t somevariable[2] ---> 2*2 = 4 bytes.
void ---> = 4 bytes.
DWORD ---> = 4 bytes.
float asomevariable[3] ---> 3*4 = 12 bytes.
PACKET_NAME = id | Local data offset
PARAM_BITSTREAM = 02
PARAM_PACKETID = 1
PARAM_PRIORITY = 2
PARAM_RELIABILITY = 3
PARAM_ORDERINGCHANNEL = 4
PARAM_SHIFTTIMESTAMP = 5
BS_TYPE_BYTE = 0
BS_TYPE_BOOL = 1
BS_TYPE_SHORT = 2
BS_TYPE_INT = 3
BS_TYPE_FLOAT = 4
BS_TYPE_ARRAY = 5
BS_TYPE_BITSTREAM = 6
PACKET_PLAYER_SYNC = 207 | +55
// struct stOnFootData ( size =68)
// uint16_t sLeftRightKeys;
// uint16_t sUpDownKeys;+2
// uint16_t sKeys;+4
// float fPosition[3];+6
// float fQuaternion[4];+18
// uint8_t byteHealth;+34
// uint8_t byteArmor;+35
// uint8_t byteCurrentWeapon;+36
// uint8_t byteSpecialAction;+37
// float fMoveSpeed[3];+38
// float fSurfingOffsets[3];+50
// uint16_t sSurfingVehicleID;+62
// uint16_t iCurrentAnimationID;+64
// uint16_t AnimFlags;+66
PACKET_MARKERS_SYNC = 208
//struct stMarkersSync ( size =25)
//int i;+0
//int iNumberOfPlayers;+4
//DWORD playerID;+8
//short sPos[3];+10
//bool bIsPlayerActive;+24
PACKET_UNOCCUPIED_SYNC = 209
//struct stUnoccupiedData ( size =67)
//int16_t sVehicleID;+0
//uint8_t byteSeatID;+2
//float fRoll[3];+3
//float fDirection[3];+15
//float fPosition[3];+27
//float fMoveSpeed[3];+39
//float fTurnSpeed[3];+51
//float fHealth;+63
PACKET_TRAILER_SYNC = 210 | +147
//struct stTrailerData ( size =54)
//uint16_t sTrailerID;+0
//float fDirection[3];+2
//float fRoll[3];+14
//float fPosition[3];+26
//float fSpeed[3];+38
//uint32_t pad;+50
PACKET_PASSENGER_SYNC = 211 | +123
//struct stPassengerData ( size =24)
//uint16_t sVehicleID;+0
//uint8_t byteSeatID;+2
//uint8_t byteCurrentWeapon;+3
//uint8_t byteHealth;+4
//uint8_t byteArmor;+5
//uint16_t sLeftRightKeys;+6
//uint16_t sUpDownKeys;+8
//uint16_t sKeys;+10
//float fPosition[3];+12
PACKET_AIM_SYNC = 203 | + 24
// struct stAimData ( size =31)
//BYTE byteCamMode;+0
//float vecAimf1[3];+1
//float vecAimPos[3];+13
//float fAimZ;+25
//BYTE byteCamExtZoom :6;+29
//BYTE bUnk;+30
PACKET_VEHICLE_SYNC = 200 | +201
// struct stInCarData ( size =63)
// uint16_t sVehicleID;
// uint16_t sLeftRightKeys;+2
// uint16_t sUpDownKeys;+4
// uint16_t sKeys;+6
// float fQuaternion[4];+8
// float fPosition[3];+24
// float fMoveSpeed[3];+36
// float fVehicleHealth;+48
// uint8_t bytePlayerHealth;+52
// uint8_t byteArmor;+53
// uint8_t byteCurrentWeapon;+54
// uint8_t byteSiren;+55
// uint8_t byteLandingGearState;+56
// uint16_t sTrailerID;+57
// float fTrainSpeed;+59
PACKET_WEAPONS_UPDATE = 215
//struct stWeaponData ( size =6\2\10)
//int16_t iTargetID;+0
//uint8_t slot;+2
//uint8_t weapon;+3
//int16_t ammo;+4
PACKET_STATS_UPDATE = 216
//struct stStatsData ( size =6)
//int iMoney;+0
//WORD wAmmo;+4
PACKET_BULLET_SYNC = 206
//struct stBulletSync ( size =40)
//BYTE bHitType;+0
//short iHitID;+1
//float fBullFrom[3];+3
//float fBullTo[3];+15
//float fBodyOfsset[3];+27
//BYTE bWeaponID;+39
PACKET_SPECTATOR_DATA = 212
//struct stSpectatorData (size = 20)
// uint16_t sLeftRightKeys;
// uint16_t sUpDownKeys;+2
// uint16_t sKeys;+4
// float fPosition[3];+6 //10 //14
Тебе нужно именно всегда ? Если именно всегда, то вот пример в этой теме: Информация - Гайд - Работа с RakNet хуками с помощью SAMPFUNCS(https://blast.hk/threads/17440/)пацаны, а как сделать чтобы сервер видел мои координаты всегда на 10 метров впереди, от моих локальных. типа fake позиция, хз как объяснить по-другому
{$CLEO}
0000:
float 23@ = 10.0
repeat
wait 500
until Samp.Available()
0B34: samp register_client_command "example" to_label @cmd
while true
wait 0
Actor.StorePos($PLAYER_ACTOR,11@,12@,13@)
// 005B: 11@ += 23@ //X
// 005B: 12@ += 23@ // Y
0063: 13@ -= 23@ // Z
if 10@ == 1
then
printf "EXAMPLE" 1
0AC8: 1@ = allocate_memory_size 68
0B2B: samp 0@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0BBA: samp store_player 0@ onfoot_data 1@
// 0C0D: struct 1@ offset 6 size 4 = 11@ // X
// 0C0D: struct 1@ offset 10 size 4 = 12@ // Y
0C0D: struct 1@ offset 14 size 4 = 13@ // Z
0BC0: samp send_onfoot_data 1@
0AC9: free_allocated_memory 1@
end
end
:cmd
0B12: 10@ = 10@ XOR 1
Samp.CmdRet()
Это вроде проверка на определенную версию сампфанкса или на его наличиеГде можно посмотреть зачем нужныи тд?CLEO:0@ IF 8028: not $707 >= 16
{$CLEO}
{$NOSOURCE}
0000:
:1
0001: wait 0 ms
0AFA: is_samp_available
0256: player $PLAYER_CHAR defined
0038: $672 == 17
004D: jump_if_false @1
0B34: samp register_client_command "hpup" to_label @cmd
:hp
0001: wait 0 ms
0039: 25@ == 1
004D: jump_if_false @hp
0AF8: samp add_message_to_chat "Ñêðèïò àêòèâèðîâàí!" color 0xFFFFFF
0A96: 0@ = actor $PLAYER_ACTOR struct
0A8E: 1@ = 1@ + 1344 // int
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 1
0A8C: write_memory 2@ size 4 value 100.0 virtual_protect 1
0002: jump @carhp
:carhp
0001: wait 0 ms
00DF: actor $PLAYER_ACTOR driving
004D: jump_if_false @hp
00D9: 20@ = actor $PLAYER_ACTOR car // add to mission cleanup
0A97: 3@ = car 20@ struct
0A8E: 4@ = 3@ + 1216 // int
0A8D: 5@ = read_memory 4@ size 4 virtual_protect 1
0A8C: write_memory 5@ size 4 value 1000.0 virtual_protect 1
0002: jump @1
:cmd
0001: wait 0 ms
8039: not 25@ == 1
004D: jump_if_false @cmd2
0A8E: 25@ = 1 + 0 // int
0B43: samp cmd_ret
:cmd2
0A8E: 25@ = 0 + 0 // int
0B43: samp cmd_ret
В командах нельзя использовать waitПомогите исправить код. Вылетает при активации команды.
CLEO:{$CLEO} {$NOSOURCE} 0000: :1 0001: wait 0 ms 0AFA: is_samp_available 0256: player $PLAYER_CHAR defined 0038: $672 == 17 004D: jump_if_false @1 0B34: samp register_client_command "hpup" to_label @cmd :hp 0001: wait 0 ms 0039: 25@ == 1 004D: jump_if_false @hp 0AF8: samp add_message_to_chat "Ñêðèïò àêòèâèðîâàí!" color 0xFFFFFF 0A96: 0@ = actor $PLAYER_ACTOR struct 0A8E: 1@ = 1@ + 1344 // int 0A8D: 2@ = read_memory 1@ size 4 virtual_protect 1 0A8C: write_memory 2@ size 4 value 100.0 virtual_protect 1 0002: jump @carhp :carhp 0001: wait 0 ms 00DF: actor $PLAYER_ACTOR driving 004D: jump_if_false @hp 00D9: 20@ = actor $PLAYER_ACTOR car // add to mission cleanup 0A97: 3@ = car 20@ struct 0A8E: 4@ = 3@ + 1216 // int 0A8D: 5@ = read_memory 4@ size 4 virtual_protect 1 0A8C: write_memory 5@ size 4 value 1000.0 virtual_protect 1 0002: jump @1 :cmd 0001: wait 0 ms 8039: not 25@ == 1 004D: jump_if_false @cmd2 0A8E: 25@ = 1 + 0 // int 0B43: samp cmd_ret :cmd2 0A8E: 25@ = 0 + 0 // int 0B43: samp cmd_ret
Только из-за этого крашит? В остальном код правильный?В командах нельзя использовать wait
Только из-за этого крашит? В остальном код правильный?
0A96: 0@ = actor $PLAYER_ACTOR struct
0A8E: 1@ = 1@ + 1344 // int
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 1
0A8C: write_memory 2@ size 4 value 100.0 virtual_protect 1
if
8090: not 25@ == 1
0A8E: 25@ = 0 + 0 // int
можно просто писать:
25@ = 0
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}
//-------------MAIN---------------
0000: NOP
:Noname_2
0001: wait 500 ms
0AFA: is_samp_available
004D: jump_if_false @Noname_2
0B34: samp register_client_command "hpup" to_label @Noname_269
:Noname_29
0001: wait 500 ms
00D6: if
0039: 25@ == 1
004D: jump_if_false @Noname_262
0AF8: samp add_message_to_chat "ÕÏ àêò¸ðà ïîïîëíåíû äî 100" color 16777215
0A96: 0@ = actor $PLAYER_ACTOR struct
0A8E: 0@ = 0@ + 1344 // int
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 1
0A8C: write_memory 0@ size 4 value 100.0 virtual_protect 1
0001: wait 100 ms
00D6: if
00DF: actor $PLAYER_ACTOR driving
004D: jump_if_false @Noname_255
0AF8: samp add_message_to_chat "ÕÏ êàðà ïîïîëíåíû äî 1000" color 16777215
03C0: 10@ = actor $PLAYER_ACTOR car
0A97: 10@ = car 10@ struct
0A8E: 10@ = 10@ + 1216 // int
0A8D: 11@ = read_memory 10@ size 4 virtual_protect 1
0A8C: write_memory 10@ size 4 value 1000.0 virtual_protect 1
0006: 25@ = 0
0002: jump @Noname_262
:Noname_255
0006: 25@ = 0
:Noname_262
0002: jump @Noname_29
:Noname_269
0B12: 25@ = 25@ XOR 1
0B43: samp cmd_ret
{$CLEO}
0000:
repeat
wait 500
until Samp.Available()
0B34: samp register_client_command "hpup" to_label @cmd
while true
wait 500
if 25@ == 1
then
0AF8: samp add_message_to_chat "ХП актёра пополнены до 100" color 0xFFFFFF
0A96: 0@ = actor $PLAYER_ACTOR struct
0A8E: 0@ = 0@ + 0x540 // int
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 1
0A8C: write_memory 0@ size 4 value 100.0 virtual_protect 1
wait 100
if Actor.Driving($PLAYER_ACTOR)
then
0AF8: samp add_message_to_chat "ХП кара пополнены до 1000" color 0xFFFFFF
10@ = Actor.CurrentCar($PLAYER_ACTOR)
0A97: 10@ = car 10@ struct
0A8E: 10@ = 10@ + 0x4C0 // int
0A8D: 11@ = read_memory 10@ size 4 virtual_protect 1
0A8C: write_memory 10@ size 4 value 1000.0 virtual_protect 1
25@ = 0
else
25@ = 0
end
end
end
:cmd
0B12: 25@ = 25@ XOR 1
Samp.CmdRet()
Во-первых: логически думай прежде, чем что-то пишешь. Ты записываешь структуру игрока в 0@ переменную, а потом к структуре прибавляешь 0x540(health adress), но куда ты это записываешь, если ты структуру записал в 0@ переменную, а адресс добавляешь вообще в какую-то левую переменную 1@ и так далееCLEO:0A96: 0@ = actor $PLAYER_ACTOR struct 0A8E: 1@ = 1@ + 1344 // int 0A8D: 2@ = read_memory 1@ size 4 virtual_protect 1 0A8C: write_memory 2@ size 4 value 100.0 virtual_protect 1
Во-вторых: не уверен, но 8039: not 25@ == 1, вроде оно проверять нихуя не будет, потому что это (ВРОДЕ) не тот опкод, который сам выступает как, условие по-этому лучше пиши:
В третьих:CLEO:if 8090: not 25@ == 1
В четвертых: задержка в командах не используетсяCLEO:0A8E: 25@ = 0 + 0 // int можно просто писать: 25@ = 0
Хз на счет некоторых пунктов, которые я здесь решил написать, мб это ты скинул код, который из-за {$NOSOURCE} такой
Короче вот:
CLEO:// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013 {$CLEO .cs} //-------------MAIN--------------- 0000: NOP :Noname_2 0001: wait 500 ms 0AFA: is_samp_available 004D: jump_if_false @Noname_2 0B34: samp register_client_command "hpup" to_label @Noname_269 :Noname_29 0001: wait 500 ms 00D6: if 0039: 25@ == 1 004D: jump_if_false @Noname_262 0AF8: samp add_message_to_chat "ÕÏ àêò¸ðà ïîïîëíåíû äî 100" color 16777215 0A96: 0@ = actor $PLAYER_ACTOR struct 0A8E: 0@ = 0@ + 1344 // int 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 1 0A8C: write_memory 0@ size 4 value 100.0 virtual_protect 1 0001: wait 100 ms 00D6: if 00DF: actor $PLAYER_ACTOR driving 004D: jump_if_false @Noname_255 0AF8: samp add_message_to_chat "ÕÏ êàðà ïîïîëíåíû äî 1000" color 16777215 03C0: 10@ = actor $PLAYER_ACTOR car 0A97: 10@ = car 10@ struct 0A8E: 10@ = 10@ + 1216 // int 0A8D: 11@ = read_memory 10@ size 4 virtual_protect 1 0A8C: write_memory 10@ size 4 value 1000.0 virtual_protect 1 0006: 25@ = 0 0002: jump @Noname_262 :Noname_255 0006: 25@ = 0 :Noname_262 0002: jump @Noname_29 :Noname_269 0B12: 25@ = 25@ XOR 1 0B43: samp cmd_ret
Рабочий код, того что ты хотел сделатьCLEO:{$CLEO} 0000: repeat wait 500 until Samp.Available() 0B34: samp register_client_command "hpup" to_label @cmd while true wait 500 if 25@ == 1 then 0AF8: samp add_message_to_chat "ХП актёра пополнены до 100" color 0xFFFFFF 0A96: 0@ = actor $PLAYER_ACTOR struct 0A8E: 0@ = 0@ + 0x540 // int 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 1 0A8C: write_memory 0@ size 4 value 100.0 virtual_protect 1 wait 100 if Actor.Driving($PLAYER_ACTOR) then 0AF8: samp add_message_to_chat "ХП кара пополнены до 1000" color 0xFFFFFF 10@ = Actor.CurrentCar($PLAYER_ACTOR) 0A97: 10@ = car 10@ struct 0A8E: 10@ = 10@ + 0x4C0 // int 0A8D: 11@ = read_memory 10@ size 4 virtual_protect 1 0A8C: write_memory 10@ size 4 value 1000.0 virtual_protect 1 25@ = 0 else 25@ = 0 end end end :cmd 0B12: 25@ = 25@ XOR 1 Samp.CmdRet()
P.S. с тебя новые нервы, пока я пытался зайти на читинг протестить и какие-то хуесосы крашили меня на протяжении 20 минут. Какими же детьмы даунов надо быть, что бы сидеть на читинге и крашить кого-то. Ебанные уроды.
HostName: Cheating ALLOWEDСпасибо больше. Можешь еще дать IP читинга, а то не охота на серверах проверять читы?)
HostName: Cheating ALLOWED
Address: 37.187.7.227:7778
Players: 1 / 100
Ping: 52
Mode: Fun Cheat
Language: -
HostName: SA-MP Cheating Server
Address: 79.133.50.48:7777
Players: 0 / 0
Ping: 9999
Mode:
Language:
HostName: Prime-Hack Cheating allowed
Address: prime-hack.net:1337
Players: 0 / 0
Ping: 9999
Mode:
Language:
В цикле отправлять синхру пуль.Каким способом можно сделать дамагер? Я просто знаю сервер где почти не 1 дамагер не робит