![]() |
Всем привет это опять урок по RakClient FYP'a 1-й пакет который разберем SendDeathКод: Код:
if (KEY_DOWN('8') && KEY_DOWN('9'))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 аргумент /////////////////////////////////////////// ////////////////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;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 |
Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде Код: Код:
1>cheat_generic.cpp(1321): warning C4101: 'temp' : unreferenced local variable |
Цитата:
|
Цитата:
Код: Код:
void SendFakeOnfootSyncData ( float coord[3], float speed[3] ) |
Цитата:
Это Код: Код:
stOnfootDataзамени на Код: Код:
ONFOOT_SYNC_DATAИ в RakClient.h в самый низ добавь Код: Код:
typedef struct _ONFOOT_SYNC_DATA |
Цитата:
Код: Код:
1>cheat_generic.cpp(1458): error C2065: 'Health' : undeclared identifier |
Нифига себе сколько строк
|
Цитата:
и пример писал self->hitpoints; тупо коды вставлять не надо я что для себя все это писал, читайте хоть чуток |
Цитата:
|
блин, постоянно ошибки появляются, я лишние строки удалил (которые писали что-то вроде
Код: Код:
Error C2440: '=': cannot convert from 'weapon [13]' to 'BYTE' // \n There is no context in which this conversion is possibleи теперь при запуске функции он как будто много раз нажимает среднюю кнопку мыши, потому что экран крутится и от сервера поступает сообщение "вы должны быть в машине"( и меня как будто слишком далеко уносит, т.к. ближайшие игроки и пикапы пропадают |
Хотя я всё понял, самое удивительное можно DDOS'ер сделать.
Точнее DDoS'ер пикапами, который почти находиться во всех приватных RakSAMPClient'ах. А сделать этот DDOS'ер пикапами легко, просто поднятие всех пикапов ( Рандомное поднятие пикапов ) g_RakClient->SendPickUp( int pickupId ); ( Вот и здесь ищите как делать ддосер :trollface: ) |
Цитата:
|
короче я пытаюсь сделать рванку, урок скопировал с форума СМ, но sendfakeonfootdata заменил на твой урок, Health поменял на hitpoints, но там еще варнинги вылезали при компиляции, так что я удалил &picSync и Weapon, так вот, моя проблема в том, что функция не работает, тоесть при активации у меня тупо пропадают streamed in игроки/объекты/пикапы
|
Цитата:
Криво делаешь значит, у всех нормально работает |
Цитата:
и непроще ету твою синхру в 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 ); |
вот rakclient это шикарно
|
Цитата:
|
Цитата:
|
Цитата:
|
Это именно то, что я искал. Правда я код совсем другим представлял.
|
Цитата:
Указываем размер? ШТО? Правильно сказать: Обнуляем объявленную структуру |
| Время: 22:45 |