 |
|

11.05.2013, 16:08
|
|
Постоянный
Регистрация: 19.03.2013
Сообщений: 586
С нами:
6920791
Репутация:
113
|
|
Всем привет это опять урок по 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
|
|
|

11.05.2013, 18:52
|
|
Участник форума
Регистрация: 19.03.2013
Сообщений: 144
С нами:
6921041
Репутация:
0
|
|
Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде
Код:
Код:
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
|
|
|

11.05.2013, 18:53
|
|
Постоянный
Регистрация: 19.03.2013
Сообщений: 586
С нами:
6920791
Репутация:
113
|
|
Сообщение от 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 не нашло
|
|
|

11.05.2013, 18:57
|
|
Участник форума
Регистрация: 19.03.2013
Сообщений: 144
С нами:
6921041
Репутация:
0
|
|
Сообщение от 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);
}
|
|
|

11.05.2013, 18:58
|
|
Постоянный
Регистрация: 19.03.2013
Сообщений: 586
С нами:
6920791
Репутация:
113
|
|
Сообщение от RickAstley
Подскажи плизз куда это вставлять????
у меня ошибки( в последнем коде
Смотри
Это
Код:
замени на
Код:
И в 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;
|
|
|

11.05.2013, 19:01
|
|
Участник форума
Регистрация: 19.03.2013
Сообщений: 144
С нами:
6921041
Репутация:
0
|
|
Сообщение от Jesus
Смотри
Это
Код:
замени на
Код:
И в 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
|
|
|

11.05.2013, 19:11
|
|
Новичок
Регистрация: 17.08.2023
Сообщений: 5
С нами:
1444419
Репутация:
0
|
|
Нифига себе сколько строк
|
|
|

11.05.2013, 19:13
|
|
Постоянный
Регистрация: 19.03.2013
Сообщений: 586
С нами:
6920791
Репутация:
113
|
|
Сообщение от 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;
тупо коды вставлять не надо я что для себя все это писал, читайте хоть чуток
|
|
|

11.05.2013, 23:41
|
|
Участник форума
Регистрация: 12.04.2013
Сообщений: 290
С нами:
6885795
Репутация:
0
|
|
Сообщение от Rafael
Нифига себе сколько строк
Я вот тоже смотрю, и вдупляю как я дурак
|
|
|

12.05.2013, 07:29
|
|
Участник форума
Регистрация: 19.03.2013
Сообщений: 144
С нами:
6921041
Репутация:
0
|
|
блин, постоянно ошибки появляются, я лишние строки удалил (которые писали что-то вроде
Код:
Код:
Error C2440: '=': cannot convert from 'weapon [13]' to 'BYTE' // \n There is no context in which this conversion is possible
и теперь при запуске функции он как будто много раз нажимает среднюю кнопку мыши, потому что экран крутится и от сервера поступает сообщение "вы должны быть в машине"(
и меня как будто слишком далеко уносит, т.к. ближайшие игроки и пикапы пропадают
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|