PDA

Просмотр полной версии : [mod_sa] RakClient FYP'a


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(stOnfootData)); ////Ну и все упаковываем

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

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

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

С вами былJesus (http://blasthack.net/members/jesus.87/), урок написан по просьбе RickAstley (http://blasthack.net/members/rickastley.64/)

Специально для сайта BlastHack.Net (http://blasthack.net/)

При копировании указывать источникBlastHack.Net (http://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
Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде

Код:






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
у тебя 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
Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде


Смотри

Это







Код:






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
Смотри
Это







Код:






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
Отлично, сделал, теперь варнингов меньше, но все же...

Код:






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
Нифига себе сколько строк


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

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
блин, постоянно ошибки появляются, я лишние строки удалил (которые писали что-то вроде







Код:






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
удалил &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(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 );

yarodi
16.05.2013, 19:37
вот rakclient это шикарно

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


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

im0rg
20.05.2013, 18:20
ты в онфут дату не пишешь свою позицию и тебя отправляет в нулевые корды


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

EnD1ZeR
20.05.2013, 18:38
Ахахаха вспомнил кое что (про 0 координаты)


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

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

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




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

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