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

Cake_

Потрачен
Проверенный
263
313
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как сделать проверку на локальное сообщение?
 

Roger571

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

index

Известный
125
82
Хукать 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


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

Cake_

Потрачен
Проверенный
263
313
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

ALF

Известный
Проверенный
320
539
Как сделать бесконечную проверку на сообщение в чате? Например мне нужно
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_

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