HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1181  
Старый 07.10.2016, 20:39
barspinoff
Участник форума
Регистрация: 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

А как получить только свой никнейм?
 
Ответить с цитированием

  #1182  
Старый 07.10.2016, 21:51
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

Цитата:
Сообщение от barspinoff  

А как получить только свой никнейм?
C++:





Код:
if
(
strstr
(
szPlayerName
,
"nickname"
)
!=
NULL
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DPlayerColor
,
"%s[%d] Подключился к серверу."
,
szPlayerName
,
sPlayerID
)
;
// добавляем сообщение в чат.
}


хотя вроде будет правильнее strcmp , ну сам погугли, поймешь
 
Ответить с цитированием

  #1183  
Старый 07.10.2016, 22:42
Woofing Giraffe
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами: 5744580

Репутация: 28
По умолчанию

Цитата:
Сообщение от barspinoff  

А как получить только свой никнейм?
Функция есть получения ника, ну а если так, то ID со своим сравнивай, или строку со строкой. Хотя я хз отправляется ли этот RPC при твоем коннекте
 
Ответить с цитированием

  #1184  
Старый 07.10.2016, 23:40
barspinoff
Участник форума
Регистрация: 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 у меня иногда с кривыми символами отображается.
 
Ответить с цитированием

  #1185  
Старый 07.10.2016, 23:47
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Как читаешь? После упрочнения надо записывать ноль в конце строки.

char text[123];

auto len = strlen(text);

text[len] = '\0';
 
Ответить с цитированием

  #1186  
Старый 08.10.2016, 02:02
p1cador
Участник форума
Регистрация: 19.03.2014
Сообщений: 222
С нами: 6395080

Репутация: 128
По умолчанию

Хочу собрать в .asi все свои наработки. По /командам все раскидывать уже не вариант, хочу сделать простую менюшку.

Начал делать

Но почему-то кажется, что у меня адский говнокод, размер файла растет пиздец как быстро, хотелось бы подглядывать куда-нибудь. Дайте пож. ссылки на соурсы каких-нибудь ПРОСТЫХ менюшек, чтобы можно было изучить, как там все устроено, классы там, всякое такое.
 
Ответить с цитированием

  #1187  
Старый 08.10.2016, 13:13
FYP
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами: 6935121

Репутация: 233


По умолчанию

Цитата:
Сообщение от Picador  

Хочу собрать в .asi все свои наработки. По /командам все раскидывать уже не вариант, хочу сделать простую менюшку.
Начал делать

Но почему-то кажется, что у меня адский говнокод, размер файла растет пиздец как быстро, хотелось бы подглядывать куда-нибудь. Дайте пож. ссылки на соурсы каких-нибудь ПРОСТЫХ менюшек, чтобы можно было изучить, как там все устроено, классы там, всякое такое.
никогда не видел каких-то идеальных интерфейсов в опенсорсных читах, у всех всегда всё по-своему. думал, знаю один такой вариант, хотел предложить, но сейчас глянул - тоже дерьмо. в общем, либо делать тоже как умеешь, либо использовать готовые универсальные gui - они уж точно подойдут под любые нужды. но если всё же найдёшь что-то годное - поделись, если не затруднит.
 
Ответить с цитированием

  #1188  
Старый 09.10.2016, 15:28
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

Цитата:
Сообщение от Picador  

Хочу собрать в .asi все свои наработки. По /командам все раскидывать уже не вариант, хочу сделать простую менюшку.
Начал делать

Но почему-то кажется, что у меня адский говнокод, размер файла растет пиздец как быстро, хотелось бы подглядывать куда-нибудь. Дайте пож. ссылки на соурсы каких-нибудь ПРОСТЫХ менюшек, чтобы можно было изучить, как там все устроено, классы там, всякое такое.
https://zhyk.ru/forum/showthread.php?t=840968

Мне вот эта статья когда-то помогла. Делал тоже самое что и ты.
 
Ответить с цитированием

  #1189  
Старый 09.10.2016, 19:47
p1cador
Участник форума
Регистрация: 19.03.2014
Сообщений: 222
С нами: 6395080

Репутация: 128
По умолчанию

Цитата:
Сообщение от iAmerican  

https://zhyk.ru/forum/showthread.php?t=840968
Мне вот эта статья когда-то помогла. Делал тоже самое что и ты.
да-да, давно видел этот гайд на жуке, спасибо что напомнил

получается пока как-то так

Цитата:
Сообщение от Спойлер  


это не столько сложно, сколько скучно и однообразно, столько всякого дерьма нужно учесть
 
Ответить с цитированием

  #1190  
Старый 11.10.2016, 01:02
p1cador
Участник форума
Регистрация: 19.03.2014
Сообщений: 222
С нами: 6395080

Репутация: 128
По умолчанию

Жопа полыхает.

C++:





Код:
samp_dll
=
(
uint32_t
)
LoadLibrary
(
"samp.dll"
)
;
kek
=
(
stScoreboardInfo
*
)
(
samp_dll
+
0x21A0B4
)
;
//SAMP_SCOREBOARD_INFO 0x21A0B4


Цитата:
Сообщение от Спойлер  

дебаг вывод (вдруг ошибка в получении):



(предпоследнее samp_dll, последнее kek->iIsEnabled )

проверка:



все правильно. Идем дальше. Адрес 1b505d0, смотрим, ставим брекпоинт на запись



разворачиваем, жмем tab, брекпоинт срабатывает



Нубовопросы:

1) какого хуя в углу на 1 скрине рендерится адрес, а не само значение

2) является ли адрес структуры адресом первого поля? Просто тогда не добавлял бы целую структуру ради одного значения
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.