Просмотр полной версии : [Мануал] Отключение серверных сообщений
Привет ребята, сидел и думал о том как отключить чат, например при Connect`е, поискав в гуугле ничего кроме этого не нашёл
for(new x;x<20;x++) SendClientMessage(playerid, -1," ");
И решил сделать отключение чата при определённом условие, конечно может я не 1 кто этот способ сделал, но облазив Google такого не нашёл, возможно я слепой и если такое было просто удалите тему.
Вообщем создаём в любом месте stock
stock SCM(id, color, const message[])
{
if(Login[playerid] != 0)
return SendClientMessage(id, color, message);
}
#if defined _ALS_SendClientMessage
#undef SendClientMessage
#else
#define _ALS_SendClientMessage
#endif
#define SendClientMessage SCM
Вот ещё для SendClientMessageToAll
stock SCMTA(color, const message[])
{
foreach(new i: Player) SCM(i, color, message);
}
#if defined _ALS_SendClientMessageToAll
#undef SendClientMessageToAll
#else
#define _ALS_SendClientMessageToAll
#endif
#define SendClientMessageToAll SCMTA
Спасибо за помощь Profyan (http://pro-pawn.ru/member.php?2354-Profyan) и Sp1ke (http://pro-pawn.ru/member.php?4095-Sp1ke)
Что-то я вообще не понял ничего. Для чего это? Ты хочешь запретить показывать сообщения сервера игроку? Или все таки чат игрока?
И зачем stock? Ты собираешься ее не использовать в будущем?(функцию)
Да я хочу запретить показ сообщения игроку, например очень бесит когда ты заходишь на сервер а тебе постоянно новости, объявления и т.п пишет.
"И зачем stock? Ты собираешься ее не использовать в будущем?(функцию)" на счёт вот этого не понял, по подробнее)
Да я хочу запретить показ сообщения игроку, например очень бесит когда ты заходишь на сервер а тебе постоянно новости, объявления и т.п пишет.
"И зачем stock? Ты собираешься ее не использовать в будущем?(функцию)" на счёт вот этого не понял, по подробнее)
Ну тогда почитайте о перехватах - тык (http://pro-pawn.ru/showthread.php?10447-%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D1%87%D0%B0%D1%81%D1%82%D1%8C-1-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B&highlight=%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82%D1%8B), о модификаторе stock - тык (http://pro-pawn.ru/showthread.php?6570-%D0%92%D1%81%D1%91-%D0%BE-Stock) и еще ваш "вариант" не игнорирует SendClientMessageToAll
тогда поставь проверку на авторизацию в команде новостей или где нужно
тогда поставь проверку на авторизацию в команде новостей или где нужно
Лучше уже 1 раз так сделать чем в каждом SendClientMessage делать.
Лучше уже 1 раз так сделать чем в каждом SendClientMessage делать.
так я о том же, поставь проверку только в нужном месте чем в SendClientMessage
так я о том же, поставь проверку только в нужном месте чем в SendClientMessage
Ты не понял :declare:, мне удобнее что бы 1 раз перехват был и там нужные проверки)
Desulaid
09.08.2016, 21:45
А не проще отправлять сообщения всем игрокам под условием, что игрок авторизован на сервере?
А не проще отправлять сообщения всем игрокам под условием, что игрок авторизован на сервере?
Т.е ты предлагаешь перед каждым SendClientMessage ставить if(Login[playerid] == 1)?
Desulaid
09.08.2016, 22:22
Т.е ты предлагаешь перед каждым SendClientMessage ставить if(Login[playerid] == 1)?
А почему бы и нет? По мне, дак лучше контролировать места с массовой отправкой сообщений. Тебе же не всегда понадобится проверка эта.
Ну не знаю. Мне так убоднее
$continue$
10.08.2016, 05:52
А, ещё проще засунуть проверку в OnPlayerText (https://wiki.sa-mp.com/wiki/OnPlayerText)
А почему бы и нет? По мне, дак лучше контролировать места с массовой отправкой сообщений. Тебе же не всегда понадобится проверка эта.
Seregamil
10.08.2016, 07:08
А, ещё проще засунуть проверку в OnPlayerText (https://wiki.sa-mp.com/wiki/OnPlayerText)
+///
А, ещё проще засунуть проверку в OnPlayerText (https://wiki.sa-mp.com/wiki/OnPlayerText)
А при чем тут OnPlayerText? Цель данного мануалы не отправлять серверные сообщения
Daniel_Cortez
10.08.2016, 10:37
Название темы изменено по просьбе ТС.
Desulaid
10.08.2016, 14:58
А, ещё проще засунуть проверку в OnPlayerText (https://wiki.sa-mp.com/wiki/OnPlayerText)
Нет. Не проще. Это не решит той задачи, которую поставил ТС.
$continue$
10.08.2016, 15:59
Нужно заблокировать, что бы сообщение не отправлялись? Тогда почему не решает проблему?
P.S: Догнал. Человек хочет заблокировать отправку ему сообщений через SendPlayerMessage, но зачем такое нужно? Техническое применение данной фичи?
Нет. Не проще. Это не решит той задачи, которую поставил ТС.
Нужно заблокировать, что бы сообщение не отправлялись? Тогда почему не решает проблему?
P.S: Догнал. Человек хочет заблокировать отправку ему сообщений через SendPlayerMessage, но зачем такое нужно? Техническое применение данной фичи?
Техническое применение данной фичи что бы при коннекте не писало ничего в чат.Можно так же много всего придумать с этим.
vovandolg
10.08.2016, 23:56
stock SCMTA(color, const message[], id)
{
if(Login[id] == 0) return true;
return SendClientMessageToAll(color, message);
}
#if defined _ALS_SendClientMessageToAll
#undef SendClientMessageToAll
#else
#define _ALS_SendClientMessageToAll
#endif
Этот код на приколе сочинял?
Покажи как ты его собрался корректно заюзать?
stock SCMTA(color, const message[], id)
{
if(Login[id] == 0) return true;
return SendClientMessageToAll(color, message);
}
#if defined _ALS_SendClientMessageToAll
#undef SendClientMessageToAll
#else
#define _ALS_SendClientMessageToAll
#endif
Этот код не приколе сочинял?
Покажи как ты его собрался корректно заюзать?
А что тут не понятно, если я использую SCMTA человеку который не залогинился не выведится, уже проверил все работает.
А что тут не понятно, если я использую SCMTA человеку который не залогинился не выведится, уже проверил все работает.
Сообщение не выведется никому, если игрок под номером "id" не залогинен. Почему бы не использовать foreach + твою же SCM?
stock SCMTA(color, const message[])
{
foreach(new i: Player) SendClientMessage(i, color, message);
}
#if defined _ALS_SendClientMessageToAll
#undef SendClientMessageToAll
#else
#define _ALS_SendClientMessageToAll
#endif
Сообщение не выведется никому, если игрок под номером "id" не залогинен. Почему бы не использовать foreach + твою же SCM?
stock SCMTA(color, const message[])
{
foreach(new i: Player) SendClientMessage(i, color, message);
}
#if defined _ALS_SendClientMessageToAll
#undef SendClientMessageToAll
#else
#define _ALS_SendClientMessageToAll
#endif
А, как то не подумал, спасибо, поправил тему.
vovandolg
11.08.2016, 10:33
Не выведется оно, так как перехват не доделан был:lol:
Исправь:
stock SCMTA(color, const message[])
{
foreach(new i: Player) SCM(i, color, message);
}
#if defined _ALS_SendClientMessageToAll
#undef SendClientMessageToAll
#else
#define _ALS_SendClientMessageToAll
#endif
#define SendClientMessageToAll SCMTA
А что тут не понятно, если я использую SCMTA человеку который не залогинился не выведится, уже проверил все работает.
Ошибаешься, работать не будет, по той причине, что SendClientMessageToAll не передает параметров с id игрока)
Не выведется оно, так как перехват не доделан был:lol:
Функция SendClientMessage уже перехвачена выше, почему работать то не будет?
vovandolg
12.08.2016, 18:48
Функция SendClientMessage уже перехвачена выше, почему работать то не будет?
Ну так ты зайди на форум ещё лет через 5 когда всё исправят кругом))
Исправили уже всё...
Ну так ты зайди на форум ещё лет через 5 когда всё исправят кругом))
Исправили уже всё...
Причем тут исправили или нет? Ты написал про то, что перехват не был доделан и функция работать не будет, но SendClientMessage уже перехвачена выше и смысл был исправлять на SCM? ТЫ ЖИ ПРАФИСИАНАЛ
vovandolg
13.08.2016, 15:34
Причем тут исправили или нет? Ты написал про то, что перехват не был доделан и функция работать не будет, но SendClientMessage уже перехвачена выше и смысл был исправлять на SCM? ТЫ ЖИ ПРАФИСИАНАЛ
Да ты просто изначально всё не читал походу, тут в обеих функциях были ошибки
Daniel_Cortez
13.08.2016, 16:21
stock SCM(id, color, const message[])
{
if(Login[playerid] == 0) return true;//Это ваша проверка, как пример оставил свою
return SendClientMessage(id, color, message);
}
#if defined _ALS_SendClientMessage
#undef SendClientMessage
#else
#define _ALS_SendClientMessage
#endif
#define SendClientMessage SCM
Вот ещё для SendClientMessageToAll
stock SCMTA(color, const message[])
{
foreach(new i: Player) SCM(i, color, message);
}
#if defined _ALS_SendClientMessageToAll
#undef SendClientMessageToAll
#else
#define _ALS_SendClientMessageToAll
#endif
#define SendClientMessageToAll SCMTA
1. Названия SCM и SCMTA очень простые. Зачастую в модах уже есть функции с такими названиями - это приведёт к конфликту имён.
2. "return true"? В функции, которая должна возвращать целое число?
vovandolg
13.08.2016, 18:27
stock SendClientMessageEx(playerid, color, const message[])
{
if(Login[playerid] != 0)
return SendClientMessage(playerid, color, message);
}
#if defined _ALS_SendClientMessage
#undef SendClientMessage
#else
#define _ALS_SendClientMessage
#endif
#define SendClientMessage SendClientMessageEx
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot