ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [mod_sa] RakClient FYP'a (https://forum.antichat.xyz/showthread.php?t=1300794)

im0rg 11.05.2013 16:08

Всем привет это опять урок по 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(stOnfoot Data)); ////Ну и все упаковываем

////Все это в пакет

g_RakClient->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);

///И отправляем

С вами былJesus, урок написан по просьбе RickAstley

Специально для сайта BlastHack.Net

При копировании указывать источникBlastHack.Net

RickAstley 11.05.2013 18:52

Подскажи плизз куда это вставлять????

у меня ошибки( в последнем коде

Код:





Код:

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 11.05.2013 18:53

Цитата:

Сообщение от RickAstley

Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде

Код:





Код:

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 11.05.2013 18:57

Цитата:

Сообщение от Jesus

у тебя 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 11.05.2013 18:58

Цитата:

Сообщение от RickAstley

Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде

Смотри

Это







Код:





Код:

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 11.05.2013 19:01

Цитата:

Сообщение от Jesus

Смотри
Это







Код:





Код:

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 11.05.2013 19:11

Нифига себе сколько строк

im0rg 11.05.2013 19:13

Цитата:

Сообщение от RickAstley

Отлично, сделал, теперь варнингов меньше, но все же...

Код:





Код:

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;

тупо коды вставлять не надо я что для себя все это писал, читайте хоть чуток

Charlatan 11.05.2013 23:41

Цитата:

Сообщение от Rafael

Нифига себе сколько строк

Я вот тоже смотрю, и вдупляю как я дурак

RickAstley 12.05.2013 07:29

блин, постоянно ошибки появляются, я лишние строки удалил (которые писали что-то вроде







Код:





Код:

Error C2440: '=': cannot convert from 'weapon [13]' to 'BYTE' // \n There is no context in which this conversion is possible


и теперь при запуске функции он как будто много раз нажимает среднюю кнопку мыши, потому что экран крутится и от сервера поступает сообщение "вы должны быть в машине"(

и меня как будто слишком далеко уносит, т.к. ближайшие игроки и пикапы пропадают

rafael 12.05.2013 08:41

Хотя я всё понял, самое удивительное можно DDOS'ер сделать.

Точнее DDoS'ер пикапами, который почти находиться во всех приватных RakSAMPClient'ах.

А сделать этот DDOS'ер пикапами легко, просто поднятие всех пикапов ( Рандомное поднятие пикапов )

g_RakClient->SendPickUp( int pickupId ); ( Вот и здесь ищите как делать ддосер :trollface: )

im0rg 12.05.2013 09:50

Цитата:

Сообщение от RickAstley

блин, постоянно ошибки появляются, я лишние строки удалил (которые писали что-то вроде







Код:





Код:

Error C2440: '=': cannot convert from 'weapon [13]' to 'BYTE' // \n There is no context in which this conversion is possible


и теперь при запуске функции он как будто много раз нажимает среднюю кнопку мыши, потому что экран крутится и от сервера поступает сообщение "вы должны быть в машине"(
и меня как будто слишком далеко уносит, т.к. ближайшие игроки и пикапы пропадают

В чем именно твоя проблема?

RickAstley 12.05.2013 10:01

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

im0rg 12.05.2013 10:13

Цитата:

Сообщение от RickAstley

удалил &picSync

это типо сам пакет удалил?

Криво делаешь значит, у всех нормально работает

BaHeK 12.05.2013 11:50

Цитата:


Ты его можешь и 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(stOnfoot Data));

g_RakClient->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);

}


в RakClient.h

void SendFakeOnfootSyncData ( float coord[3], float speed[3] );

и всамом коде рванки обявить синхру

g_RakClient->SendFakeOnfootSyncData( coord, speed );

yarodi 16.05.2013 19:37

вот rakclient это шикарно

EnD1ZeR 20.05.2013 17:58

Цитата:

Сообщение от RickAstley

моя проблема в том, что функция не работает, тоесть при активации у меня тупо пропадают streamed in игроки/объекты/пикапы

ты в онфут дату не пишешь свою позицию и тебя отправляет в нулевые корды

im0rg 20.05.2013 18:20

Цитата:

Сообщение от EnD1ZeR

ты в онфут дату не пишешь свою позицию и тебя отправляет в нулевые корды

Ахахаха вспомнил кое что (про 0 координаты)

EnD1ZeR 20.05.2013 18:38

Цитата:

Сообщение от Jesus

Ахахаха вспомнил кое что (про 0 координаты)

блять, не напоминай, я кажется понял о чем ты

trueman 29.07.2013 03:05

Это именно то, что я искал. Правда я код совсем другим представлял.

MogAika 17.08.2013 16:51

Цитата:

Сообщение от Jesus

memset(&sync, 0, sizeof(stOnfootData)); ////Указываем ей размер


Указываем размер? ШТО?

Правильно сказать: Обнуляем объявленную структуру


Время: 22:45