[mod_sa] RakClient FYP'a

Статус
В этой теме нельзя размещать новые ответы.

im0rg

Известный
Автор темы
Друг
587
216
Всем привет это опять урок по RakClient FYP'a
1-й пакет который разберем SendDeath

Код:
if (KEY_DOWN('8') && KEY_DOWN('9'))
{
    ///////////////////////////////////////////
    /////////////////1-й способ//////////////////////////
    ///////////////////////////////////////////
    BitStream bsDeath;
 
    bsDeath.Write( reason );
    bsDeath.Write( killerId );
    g_RakClient->RPC( RPC_Death, &bsDeath );
    ///////////////////////////////////////////
    ////////////////2-й способ///////////////////////////
    ///////////////////////////////////////////
    g_RakClient->SendDeath( killerId , reason );
}


if (KEY_DOWN('8') && KEY_DOWN('9')) ////Для тех кто в танке тут я написал активацию на 2 кнопки 8 и 9
{
/// С помощью этого можно сделать Fake Kill
/// reason (причина) это оружие допустим rand()%45 будет рандомное оружие в пределе45
/// kilerid это ид убийцы это можно сделать циклом и проверкой на существование игрока
/// Ну и отправка самого пакета
///////////////////////////////////////////
/////////////////1-й способ//////////////////////////
///////////////////////////////////////////
BitStream bsDeath;////Регистрируем пакет

bsDeath.Write( reason );///Тут напишите ID оружия или как я уже говорил рандом
bsDeath.Write( killerId );///Здесь ID убийцы можно циклом
g_RakClient->RPC( RPC_Death, &bsDeath ); /// В этом случае мы используем RPC пакет RPC_Death который равен 12
///////////////////////////////////////////
////////////////2-й способ///////////////////////////
///////////////////////////////////////////
g_RakClient->SendDeath( killerId , reason ); /// А тут мы отправляем готовую функцию
////Примечание g_RakClient->SendDeath( killerId , reason ); это нужно отправлять только такой строчкой
}




2-й пакет который разберем SendPickup

Код:
if (KEY_DOWN('8') && KEY_DOWN('9'))
{
 
    ///////////////////////////////////////////
    /////////////////1-й способ/////////////////////////
    ///////////////////////////////////////////
 
    BitStream bsPickup;
 
    bsPickup.Write( pickupId );
 
    g_RakClient->RPC( RPC_PickedUpPickup, &bsPickup );
    ///////////////////////////////////////////
    ////////////////2-й способ///////////////////////////
    ///////////////////////////////////////////
    g_RakClient->SendPickUp( int pickupId );
}

{
////Этот пакет даже проще чем предыдущий
//// Он принимает всего 1 аргумент

///////////////////////////////////////////
////////////////1-й способ///////////////////////////
///////////////////////////////////////////

BitStream bsPickup;

bsPickup.Write( pickupId );//// pickupId это ид пикапа который мы собираемся подбирать

g_RakClient->RPC( RPC_PickedUpPickup, &bsPickup );///Ну и сама отправка
///////////////////////////////////////////
////////////////2-й способ///////////////////////////
///////////////////////////////////////////
g_RakClient->SendPickUp( int pickupId ); /// А тут мы отправляем готовую функцию
////Примечание g_RakClient->SendPickUp( int pickupId ); это нужно отправлять только такой строчкой
}




3-й пакет который разберем SendFakeOnfootSyncData




Код:
stOnfootData sync;
memset(&sync, 0, sizeof(stOnfootData));
BitStream bsOnfootSync;
sync.byteHealth = Health;
 
sync.byteCurrentWeapon = byteCurrentWeapon;
sync.vecPos[0] = fPos[0];
 
sync.vecPos[1] = fPos[1];
sync.vecPos[2] = fPos[2];
 
sync.vecMoveSpeed[0] = speed[0];
sync.vecMoveSpeed[1] = speed[1];
sync.vecMoveSpeed[2] = speed[2];
 
bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
bsOnfootSync.Write((PCHAR)&picSync,sizeof(stOnfootData));
g_RakClient->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);


stOnfootData sync; ///Объявляем синхру
memset(&sync, 0, sizeof(stOnfootData)); ////Указываем ей размер
BitStream bsOnfootSync; ///Объявляем пакет
sync.byteHealth = Health; ///Вот тут устанавливается ХП игроку
///Если мы используем еще
///struct actor_info *self = actor_info_get( ACTOR_SELF, ACTOR_ALIVE );
///То можно написать так
///sync.byteHealth = self->hitpoints; в таком случаее
///Будет устанавливать хп столько сколько у нас было
sync.byteCurrentWeapon = byteCurrentWeapon;///Это оружие аналогично ХП
///Можно записать sync.byteCurrentWeapon = self->weapon;
sync.vecPos[0] = fPos[0];///Это позиция можно создать масив с позицеей игрока
///И тащить от туда позицию, а можно
sync.vecPos[1] = fPos[1];
sync.vecPos[2] = fPos[2];
///Записать позицию так
///vect3_copy(&self->base.matrix[12], sync.vecPos);
/// И уже использовать sync.vecPos[2] += 0.0012; это позиция по Z координате
sync.vecMoveSpeed[0] = speed[0];
sync.vecMoveSpeed[1] = speed[1];
sync.vecMoveSpeed[2] = speed[2];
///Со скоростью работа аналогична
///vect3_copy(&self->base.matrix[12], sync.vecMoveSpeed);
/// self->speed[2] += 10; это разгонит перса по Z координате
///Можете найти у меня в уроках как использовать разгон в сторону камеры
bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);///Тут мы говорим то что используем
///PLAYER_SYNC
bsOnfootSync.Write((PCHAR)&picSync,sizeof(stOnfootData)); ////Ну и все упаковываем
////Все это в пакет
g_RakClient->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);
///И отправляем



С вами был Jesus, урок написан по просьбе RickAstley
Специально для сайта BlastHack.Net
При копировании указывать источник BlastHack.Net
 
  • Нравится
Реакции: RickAstley

RickAstley

Новичок
Проверенный
144
7
Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде
Код:
1>cheat_generic.cpp(1321): warning C4101: 'temp' : unreferenced local variable
1>cheat_generic.cpp(1338): warning C4018: '>' : signed/unsigned mismatch
1>cheat_generic.cpp(1388): warning C4018: '>' : signed/unsigned mismatch
1>cheat_generic.cpp(1455): error C2065: 'stOnfootData' : undeclared identifier
1>cheat_generic.cpp(1455): error C2146: syntax error : missing ';' before identifier 'sync'
1>cheat_generic.cpp(1455): error C2065: 'sync' : undeclared identifier
1>cheat_generic.cpp(1456): error C2065: 'sync' : undeclared identifier
1>cheat_generic.cpp(1456): error C2065: 'stOnfootData' : undeclared identifier
1>cheat_generic.cpp(1456): error C2070: ''unknown-type'': illegal sizeof operand
1>cheat_generic.cpp(1458): error C2065: 'sync' : undeclared identifier
1>cheat_generic.cpp(1458): error C2228: left of '.byteHealth' must have class/struct/union
1>          type is ''unknown-type''
1>cheat_generic.cpp(1458): error C2065: 'Health' : undeclared identifier
1>cheat_generic.cpp(1460): error C2065: 'sync' : undeclared identifier
1>cheat_generic.cpp(1460): error C2228: left of '.byteCurrentWeapon' must have class/struct/union
 

im0rg

Известный
Автор темы
Друг
587
216
Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде
Код:
1>cheat_generic.cpp(1321): warning C4101: 'temp' : unreferenced local variable
1>cheat_generic.cpp(1338): warning C4018: '>' : signed/unsigned mismatch
1>cheat_generic.cpp(1388): warning C4018: '>' : signed/unsigned mismatch
1>cheat_generic.cpp(1455): error C2065: 'stOnfootData' : undeclared identifier
1>cheat_generic.cpp(1455): error C2146: syntax error : missing ';' before identifier 'sync'
1>cheat_generic.cpp(1455): error C2065: 'sync' : undeclared identifier
1>cheat_generic.cpp(1456): error C2065: 'sync' : undeclared identifier
1>cheat_generic.cpp(1456): error C2065: 'stOnfootData' : undeclared identifier
1>cheat_generic.cpp(1456): error C2070: ''unknown-type'': illegal sizeof operand
1>cheat_generic.cpp(1458): error C2065: 'sync' : undeclared identifier
1>cheat_generic.cpp(1458): error C2228: left of '.byteHealth' must have class/struct/union
1>          type is ''unknown-type''
1>cheat_generic.cpp(1458): error C2065: 'Health' : undeclared identifier
1>cheat_generic.cpp(1460): error C2065: 'sync' : undeclared identifier
1>cheat_generic.cpp(1460): error C2228: left of '.byteCurrentWeapon' must have class/struct/union
Ты его можешь и cheat_generic.cpp вставить и в samp.cpp. А ошибки как я понял у тебя stOnfootData не нашло
 

RickAstley

Новичок
Проверенный
144
7
у тебя stOnfootData не нашло
Но я ведь его указывал вроде бы!( вот весь код
Код:
void SendFakeOnfootSyncData ( float coord[3], float speed[3] ) 
{ 
stOnfootData sync;
memset(&sync, 0, sizeof(stOnfootData));
BitStream bsOnfootSync;
sync.byteHealth = Health;
 
sync.byteCurrentWeapon = byteCurrentWeapon;
sync.vecPos[0] = fPos[0];
 
sync.vecPos[1] = fPos[1];
sync.vecPos[2] = fPos[2];
 
sync.vecMoveSpeed[0] = speed[0];
sync.vecMoveSpeed[1] = speed[1];
sync.vecMoveSpeed[2] = speed[2];
 
bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
bsOnfootSync.Write((PCHAR)&picSync,sizeof(stOnfootData));
g_RakClient->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);
}
 

im0rg

Известный
Автор темы
Друг
587
216
Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде
Смотри
Это
Код:
stOnfootData
замени на
Код:
ONFOOT_SYNC_DATA
И в RakClient.h в самый низ добавь
Код:
typedef struct _ONFOOT_SYNC_DATA
{
#pragma pack ( 1 )
    WORD lrAnalog;
    WORD udAnalog;
    WORD wKeys;
    float vecPos[3];
    float fQuaternion[4];
    BYTE byteHealth;
    BYTE byteArmour;
    BYTE byteCurrentWeapon;
    BYTE byteSpecialAction;   
    float vecMoveSpeed[3];
    float vecSurfOffsets[3];
    WORD wSurfInfo;
    int    iCurrentAnimationID;
} ONFOOT_SYNC_DATA;
 

RickAstley

Новичок
Проверенный
144
7
Смотри
Это
Код:
stOnfootData
замени на
Код:
ONFOOT_SYNC_DATA
И в RakClient.h в самый низ добавь
Отлично, сделал, теперь варнингов меньше, но все же...
Код:
1>cheat_generic.cpp(1458): error C2065: 'Health' : undeclared identifier
1>cheat_generic.cpp(1460): error C2065: 'byteCurrentWeapon' : undeclared identifier
1>cheat_generic.cpp(1461): error C2065: 'fPos' : undeclared identifier
1>cheat_generic.cpp(1463): error C2065: 'fPos' : undeclared identifier
1>cheat_generic.cpp(1464): error C2065: 'fPos' : undeclared identifier
1>cheat_generic.cpp(1471): error C2065: 'picSync' : undeclared identifier
 

Rafael

Легенда
186
13
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нифига себе сколько строк
 

im0rg

Известный
Автор темы
Друг
587
216
Отлично, сделал, теперь варнингов меньше, но все же...
Код:
1>cheat_generic.cpp(1458): error C2065: 'Health' : undeclared identifier
1>cheat_generic.cpp(1460): error C2065: 'byteCurrentWeapon' : undeclared identifier
1>cheat_generic.cpp(1461): error C2065: 'fPos' : undeclared identifier
1>cheat_generic.cpp(1463): error C2065: 'fPos' : undeclared identifier
1>cheat_generic.cpp(1464): error C2065: 'fPos' : undeclared identifier
1>cheat_generic.cpp(1471): error C2065: 'picSync' : undeclared identifier
Я же там писал используйте self
и пример писал self->hitpoints;
тупо коды вставлять не надо я что для себя все это писал, читайте хоть чуток
 

RickAstley

Новичок
Проверенный
144
7
блин, постоянно ошибки появляются, я лишние строки удалил (которые писали что-то вроде
Код:
Error C2440: '=': cannot convert from 'weapon [13]' to 'BYTE' // \n There is no context in which this conversion is possible
и теперь при запуске функции он как будто много раз нажимает среднюю кнопку мыши, потому что экран крутится и от сервера поступает сообщение "вы должны быть в машине"(
и меня как будто слишком далеко уносит, т.к. ближайшие игроки и пикапы пропадают
 

Rafael

Легенда
186
13
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Хотя я всё понял, самое удивительное можно DDOS'ер сделать.
Точнее DDoS'ер пикапами, который почти находиться во всех приватных RakSAMPClient'ах.
А сделать этот DDOS'ер пикапами легко, просто поднятие всех пикапов ( Рандомное поднятие пикапов )
g_RakClient->SendPickUp( int pickupId ); ( Вот и здесь ищите как делать ддосер :trollface: )
 

im0rg

Известный
Автор темы
Друг
587
216
блин, постоянно ошибки появляются, я лишние строки удалил (которые писали что-то вроде
Код:
Error C2440: '=': cannot convert from 'weapon [13]' to 'BYTE' // \n There is no context in which this conversion is possible
и теперь при запуске функции он как будто много раз нажимает среднюю кнопку мыши, потому что экран крутится и от сервера поступает сообщение "вы должны быть в машине"(
и меня как будто слишком далеко уносит, т.к. ближайшие игроки и пикапы пропадают
В чем именно твоя проблема?
 

RickAstley

Новичок
Проверенный
144
7
короче я пытаюсь сделать рванку, урок скопировал с форума СМ, но sendfakeonfootdata заменил на твой урок, Health поменял на hitpoints, но там еще варнинги вылезали при компиляции, так что я удалил &picSync и Weapon, так вот, моя проблема в том, что функция не работает, тоесть при активации у меня тупо пропадают streamed in игроки/объекты/пикапы
 

BaHeK

Известный
84
6
Ты его можешь и cheat_generic.cpp вставить и в samp.cpp.
а для чево тогда RakClient синхра вить там должна стоять??????
и непроще ету твою синхру в RakClient.cpp вставить вот таким образом

void RakClient::SendFakeOnfootSyncData ( float coord[3], float speed[3] )
{
stOnfootData sync;
memset(&sync, 0, sizeof(stOnfootData));
BitStream bsOnfootSync;
sync.byteHealth = Health;

sync.byteCurrentWeapon = byteCurrentWeapon;
sync.vecPos[0] = fPos[0];

sync.vecPos[1] = fPos[1];
sync.vecPos[2] = fPos[2];

sync.vecMoveSpeed[0] = speed[0];
sync.vecMoveSpeed[1] = speed[1];
sync.vecMoveSpeed[2] = speed[2];

bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
bsOnfootSync.Write((PCHAR)&picSync,sizeof(stOnfootData));
g_RakClient->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);
}

в RakClient.h
void SendFakeOnfootSyncData ( float coord[3], float speed[3] );
и всамом коде рванки обявить синхру
g_RakClient->SendFakeOnfootSyncData( coord, speed );
 
Статус
В этой теме нельзя размещать новые ответы.