
05.10.2016, 00:40
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от iAmerican
хочу сделать это функцией
C++:
[CODE]
std
::
string
Hostname
(
)
{
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
(
SAMPDLLBASE
+
0x21A0F8
)
,
(
LPVOID
)
&
Out
,
sizeof
(
Out
)
,
NULL
)
;
char
ServerString
[
128
]
;
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
(
Out
+
0x121
)
,
&
ServerString
,
128
,
NULL
)
;
cout
Вывод: cout
|
|
|

05.10.2016, 01:07
|
|
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами:
6438231
Репутация:
133
|
|
[QUOTE="SR_team"]
C++:
[CODE]
std
::
string
Hostname
(
)
{
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
(
SAMPDLLBASE
+
0x21A0F8
)
,
(
LPVOID
)
&
Out
,
sizeof
(
Out
)
,
NULL
)
;
char
ServerString
[
128
]
;
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
(
Out
+
0x121
)
,
&
ServerString
,
128
,
NULL
)
;
cout
|
|
|

05.10.2016, 00:36
|
|
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами:
6791977
Репутация:
183
|
|
указатель возвращай
|
|
|

07.10.2016, 03:45
|
|
Участник форума
Регистрация: 14.06.2015
Сообщений: 126
С нами:
5744580
Репутация:
28
|
|
Подскажите, как получить никнейм игрока при RPC_ClientJoin.
|
|
|

07.10.2016, 09:57
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от barspinoff
Подскажите, как получить никнейм игрока при RPC_ClientJoin.
Код:
Код:
Пример перехвата входящего (пришедшего от сервера) RPC_ScrServerJoin:
bool CALLBACK incomingRPC( stRakNetHookParams *params ) // определение callback-функции, которая будет вызвана, если от сервера был получен новый RPC.
{
if( params->packetId == ScriptRPCEnumeration::RPC_ScrServerJoin ) // если это RPC_ScrServerJoin
{
short int sPlayerID;
D3DCOLOR D3DPlayerColor;
byte isNPC, nameLen;
char szPlayerName[25];
params->bitStream->ResetReadPointer(); // обнуляем оффсет чтения.
params->bitStream->Read( sPlayerID ); // читаем ID игрока.
params->bitStream->Read( D3DPlayerColor ); // цвет ника игрока.
params->bitStream->Read( isNPC ); // флаг, говорящий о том, NPC это или нет.
params->bitStream->Read( nameLen ); // длина ника.
params->bitStream->Read( szPlayerName, nameLen ); // ник.
szPlayerName[ nameLen ]= '\0'; // обрезаем, чтоб не было мусора
params->bitStream->ResetReadPointer(); // обнуляем оффсет чтения
SF->getSAMP()->getChat()->AddChatMessage( D3DPlayerColor, "%s[%d] Подключился к серверу.",
szPlayerName, sPlayerID ); // добавляем сообщение в чат.
};
return true; // успешно завершаем обработку RPC.
};
SF->getRakNet()->registerRakNetCallback( RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC ); // регистрируем callback
|
|
|

07.10.2016, 20:39
|
|
Участник форума
Регистрация: 14.06.2015
Сообщений: 126
С нами:
5744580
Репутация:
28
|
|
Сообщение от Woofing Giraffe
Код:
Код:
Пример перехвата входящего (пришедшего от сервера) RPC_ScrServerJoin:
bool CALLBACK incomingRPC( stRakNetHookParams *params ) // определение callback-функции, которая будет вызвана, если от сервера был получен новый RPC.
{
if( params->packetId == ScriptRPCEnumeration::RPC_ScrServerJoin ) // если это RPC_ScrServerJoin
{
short int sPlayerID;
D3DCOLOR D3DPlayerColor;
byte isNPC, nameLen;
char szPlayerName[25];
params->bitStream->ResetReadPointer(); // обнуляем оффсет чтения.
params->bitStream->Read( sPlayerID ); // читаем ID игрока.
params->bitStream->Read( D3DPlayerColor ); // цвет ника игрока.
params->bitStream->Read( isNPC ); // флаг, говорящий о том, NPC это или нет.
params->bitStream->Read( nameLen ); // длина ника.
params->bitStream->Read( szPlayerName, nameLen ); // ник.
szPlayerName[ nameLen ]= '\0'; // обрезаем, чтоб не было мусора
params->bitStream->ResetReadPointer(); // обнуляем оффсет чтения
SF->getSAMP()->getChat()->AddChatMessage( D3DPlayerColor, "%s[%d] Подключился к серверу.",
szPlayerName, sPlayerID ); // добавляем сообщение в чат.
};
return true; // успешно завершаем обработку RPC.
};
SF->getRakNet()->registerRakNetCallback( RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC ); // регистрируем callback
А как получить только свой никнейм?
|
|
|

07.10.2016, 21:51
|
|
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами:
6438231
Репутация:
133
|
|
Сообщение от barspinoff
А как получить только свой никнейм?
C++:
Код:
if
(
strstr
(
szPlayerName
,
"nickname"
)
!=
NULL
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DPlayerColor
,
"%s[%d] Подключился к серверу."
,
szPlayerName
,
sPlayerID
)
;
// добавляем сообщение в чат.
}
хотя вроде будет правильнее strcmp , ну сам погугли, поймешь
|
|
|

07.10.2016, 23:40
|
|
Участник форума
Регистрация: 14.06.2015
Сообщений: 126
С нами:
5744580
Репутация:
28
|
|
Сообщение от iAmerican
C++:
Код:
if
(
strstr
(
szPlayerName
,
"nickname"
)
!=
NULL
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DPlayerColor
,
"%s[%d] Подключился к серверу."
,
szPlayerName
,
sPlayerID
)
;
// добавляем сообщение в чат.
}
хотя вроде будет правильнее strcmp , ну сам погугли, поймешь
"nickname"? не понял. Мне нужен именно мой ник, под которым я зайду, а LocalPlayerName у меня иногда с кривыми символами отображается.
|
|
|

07.10.2016, 22:42
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от barspinoff
А как получить только свой никнейм?
Функция есть получения ника, ну а если так, то ID со своим сравнивай, или строку со строкой. Хотя я хз отправляется ли этот RPC при твоем коннекте
|
|
|

07.10.2016, 23:47
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Как читаешь? После упрочнения надо записывать ноль в конце строки.
char text[123];
auto len = strlen(text);
text[len] = '\0';
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|