Другое SAMPFUNCS | API C++

Cake_

Известный
Проверенный
263
313
как сделать проверку на локальное сообщение?
 

Roger571

Известный
58
31
как сделать проверку на локальное сообщение?
Хукать RPC, составлять список сообщений от сервера и сравнивать пул на наличие сообщений которые не приходили через RPC.
Может есть способ и проще, но это первое, что пришло в голову.
 

index

Известный
127
83
Хукать RPC, составлять список сообщений от сервера и сравнивать пул на наличие сообщений которые не приходили через RPC.
Может есть способ и проще, но это первое, что пришло в голову.
Там, вроде, разные функи отвечают за вывод сообщений от сервера и локальных. На samp 0.3dl локальными занимается функа по адресу 0x67B60 (она же 0x64520 на 0.3.7r1), серверными - 0x67BE0. Достаточно первую хукнуть.
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Помогите найти авто-обновление плагина
 

aim.cfg

Участник
37
4
Код:
SF->getSAMP()->getDialog()->ShowDialog(1337, 4, "ArpHelp", "Привет \n Пока", "Set", "Close");
    if (SF->getSAMP()->getDialog()->ListBoxGetItemsCount() == 1)
    {
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Молодец.");
    }
Подскажите как правильно сделать?
 

Cake_

Известный
Проверенный
263
313
Код:
SF->getSAMP()->getDialog()->ShowDialog(1337, 4, "ArpHelp", "Привет \n Пока", "Set", "Close");
    if (SF->getSAMP()->getDialog()->ListBoxGetItemsCount() == 1)
    {
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Молодец.");
    }
Подскажите как правильно сделать?
C++:
void CALLBACK DialogCallback(int dialogId, int buttonId, int listItem, const char* input)
{
    if (dialogId == 14 && buttonId == 1) {
        SF->getSAMP()->getChat()->AddChatMessage(-1, "Вы выбрали пункт номер %i.", listItem);
    }
}

// mainloop
SF->getSAMP()->registerDialogCallback(DialogCallback);
SF->getSAMP()->getDialog()->ShowDialog(14, DIALOG_STYLE_LIST, "Caption", "Пункт 1\nПункт 2\n...", "Далее", "Закрыть");

Создай глобальную переменную типа bool и меняй её значение, потом в коде , который я тебе скинул, делай условие на то что эта переменная равна true, тоесть, если значение переменной = true - диалог откроется или же закроется
 
  • Нравится
Реакции: Rei и aim.cfg

aim.cfg

Участник
37
4
Как сделать бесконечную проверку на сообщение в чате? Например мне нужно
Server closed the connection.
 

Cake_

Известный
Проверенный
263
313
Как сделать бесконечную проверку на сообщение в чате? Например мне нужно
Server closed the connection.
Это клиентское сообщение, чтобы его чекать можно хукнуть функции добавления сообщения в чат, брать адрес возврата из стека и чекать что он в samp.dll


Как сделать бесконечную проверку на сообщение в чате? Например мне нужно
Server closed the connection.
А, если серверные сообщения то просто создай объект класса БитСтрим и читай сообщение.
 
  • Нравится
Реакции: aim.cfg

aim.cfg

Участник
37
4
Это клиентское сообщение, чтобы его чекать можно хукнуть функции добавления сообщения в чат, брать адрес возврата из стека и чекать что он в samp.dll


А, если серверные сообщения то просто создай объект класса БитСтрим и читай сообщение.
ого чёт сложное) просто не видел этого в уроках, не подскажешь как хукнуть?
 

ALF

Известный
Проверенный
320
534
Как сделать бесконечную проверку на сообщение в чате? Например мне нужно
Server closed the connection.
а собственно зачем делать проверку на сообщение в чате? есть ID_DISCONNECTION_NOTIFICATION
C++:
bool CALLBACK incomingData(stRakNetHookParams *params)
{
    if(params->packetId == PacketEnumeration::ID_DISCONNECTION_NOTIFICATION)
    {      
        // do something
    }
    return true;
}

// mainloop
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_PACKET, incomingData);
 

astap_

Известный
Всефорумный модератор
625
593
Как использовать задержку в callback? Буду благодарен наглядному примеру