Просмотр полной версии : [Вопрос] raknet manager
CheSToRiA
08.02.2016, 16:38
Каким образом можно отловить сообщение отправленное через SendClientMessage и запретить его показ? Пробовал через перехват функции, но не помогло. Можно ли это каким-то образом словить через RakNet manager plugin? Если да, то как? P.S: Сообщение отправляет из скрипта, а он в свою очередь с закрытым исходным кодом.
vovandolg
08.02.2016, 16:44
Зачем тебе плагин для таких целей если на форумах полно скриптов анти-пиара или анти-мата, где можно перехватить слово которое ты указываешь.
CheSToRiA
08.02.2016, 16:45
Зачем тебе плагин для таких целей если на форумах полно скриптов анти-пиара или анти-мата, где можно перехватить слово которое ты указываешь.
Ты не понял. Есть скрипт с закрытым исходным кодом, а он в свою очередь отправляет ошибочное сообщение, но автор не хочет обновлять его, а мне нужно чтобы это сообщение попросту не показалось игроку. Вот мне нужно перехватить его и запретить его показ. То есть, сообщение отправляет не игрок, а другой подключенный скрипт.
#offtop
Могу предположить,что вы взяли на проверку пробную версию какого-то скрипта,который каждые n секунд выводит рекламу или сообщение о том,что она пробная.
По теме:
id нужного вам RPC: RPC_ClientMessage = 93;
Вот плагин:
http://pro-pawn.ru/showthread.php?13333-RNM-RakNet-Manager-1-0-0 (клик)
В теме есть пример перехвата.
CheSToRiA
08.02.2016, 17:44
#offtop
Могу предположить,что вы взяли на проверку пробную версию какого-то скрипта,который каждые n секунд выводит рекламу или сообщение о том,что она пробная.
По теме:
id нужного вам RPC: RPC_ClientMessage = 93;
Вот плагин:
http://pro-pawn.ru/showthread.php?13333-RNM-RakNet-Manager-1-0-0 (клик)
В теме есть пример перехвата.
Да пример есть, но что вводить BS_ReadValue я так и не понял. Пробовал как там или по другому, но мне выдало либо пустую строку, либо иероглифы.
Да пример есть, но что вводить BS_ReadValue я так и не понял. Пробовал как там или по другому, но мне выдало либо пустую строку, либо иероглифы.
new RPC_Chat = 101;
public OnServerSendRPC(playerid, rpcid, BitStream:bs)
{
if(rpcid == RPC_Chat)
{
new message[256], len;
BS_ReadValue(bs, RNM_UINT8, len,
RNM_STRING, message, len);
if(!strcmp(message,"Твой текст", true)) return 0;
}
return 1;
}
Не проверял на работоспособность.
Еще точно не знаю какой RPC.Либо RPC_ClientMessage,либо RPC_Chat.
CheSToRiA
08.02.2016, 18:12
new RPC_Chat = 101;
public OnServerSendRPC(playerid, rpcid, BitStream:bs)
{
if(rpcid == RPC_Chat)
{
new message[256], len;
BS_ReadValue(bs, RNM_UINT8, len,
RNM_STRING, message, len);
if(!strcmp(message,"Твой текст", true)) return 0;
}
return 1;
}
Не проверял на работоспособность.
Еще точно не знаю какой RPC.Либо RPC_ClientMessage,либо RPC_Chat.
Это когда игрок отправляет, а мне надо когда SendClientMessage, а это RPC_ClientMessage.
Это когда игрок отправляет, а мне надо когда SendClientMessage, а это RPC_ClientMessage.
Ну попробуй с RPC_ClientMessage.Отпишись потом.
CheSToRiA
08.02.2016, 18:23
Ну попробуй с RPC_ClientMessage.Отпишись потом.
Я же говорю что пробовал, но там или иероглифы или пустая строчка.
Я же говорю что пробовал, но там или иероглифы или пустая строчка.
Я попробовал.Получилось.Только есть баг,он считывает с ФС. Вот код:
МОД
public OnServerSendRPC(playerid, rpcid, BitStream:bs)
{
new RPC_ClientMessage = 93;
if(rpcid == RPC_ClientMessage)
{
new message[256], len;
BS_ReadValue(bs, RNM_UINT8, len,
RNM_STRING, message, len);
if(!strcmp(message,"It works!", true))
{
printf("ITSWORK");
return 0;
}
}
return 1;
}
Кстати в моде тоже работает.(вставил 6 SendClientMessage(playerid,-1,"It works"); в OnPlayerSpawn(playerid))
[21:10:52] ITSWORK
[21:10:52] ITSWORK
[21:10:52] ITSWORK
[21:10:52] ITSWORK
[21:10:54] ITSWORK
[21:10:54] ITSWORK
Скрины (http://imgur.com/a/JuUgJ)
CheSToRiA
08.02.2016, 18:53
Я попробовал.Получилось.Только есть баг,он считывает с ФС. Вот код:
МОД
public OnServerSendRPC(playerid, rpcid, BitStream:bs)
{
new RPC_ClientMessage = 93;
if(rpcid == RPC_ClientMessage)
{
new message[256], len;
BS_ReadValue(bs, RNM_UINT8, len,
RNM_STRING, message, len);
if(!strcmp(message,"It works! ", true))
return 0;
}
return 1;
}
ФС
#include <a_samp>
#include <dc_cmd>
main()
{
printf("FS is loaded.");
}
CMD:work(playerid,params[])
{
SendClientMessage(playerid,-1,"It works!");
return 1;
}
Скрины (http://imgur.com/a/JuUgJ)
Отлично, спасибо. Закрыто!
CheSToRiA
08.02.2016, 19:31
Открыто. Сделал все как вы написали, но теперь вообще не одного сообщения не видно.
Точнее не видно того, что пишет игрок.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot