Заставить игрока произнести фразу
Добрый день Возникла идея - если игрок юзает читы и античит его палит (сыплются логи), заставить игрока орать в общий чат фразу "Я ЧИТЕР!" Подскажите плиз как это можно реализовать Я так с ходу не припомню такой функции
Если помог, ставь плюсик в репу :)
Сообщение #
1 написано 07.10.2012 в 15:04
Аннонсом уже лучше как по мне.
Сообщение #
2 написано 07.10.2012 в 15:47
Quote (Stormtrooper )
Я ЧИТЕР!
не самый ок вариант.
Сообщение #
3 написано 07.10.2012 в 15:54
ну можно и анонсом - пока правда не дошло как и отсюда же возникает вопрос - надо ведь не просто вывести сообщение что читер в игре а ещё и прикрутить НИК читера
Если помог, ставь плюсик в репу :)
Сообщение #
4 отредактировано
Stormtrooper -
Воскресенье, 07.10.2012, 16:22
Code
sWorld->SendWorldText
Сообщение #
5 написано 07.10.2012 в 16:26
это всё здорово, но нужны аргументы к этой функции в частности тип выдаваемого сообщения, само сообщение (не знаю как прикрутить в функцию SendWorldText) и определение ника игрока с читами есть мыслишка сделать так: sWorld.SendWorldText(LANG_SYSTEMMESSAGE, m_session->GetPlayer()->GetName(), args); но не понятно как прикрутить само сообщение и что такое "args"
Если помог, ставь плюсик в репу :)
Сообщение #
6 написано 11.10.2012 в 12:23
Stormtrooper , по-пробуй по принципу как в патче антиреклама) ТАм ведь в случае рекламы игроку пишется сообщения и в лфу сразу +ник есть)
Человек не может жить без сердца, без печени, без почек.
Зато, сука, без мозгов спокойно живут целыми поколениями.
Сообщение #
7 написано 11.10.2012 в 13:35
мде а где взять этот патч? у меня есть только антимат но там ничего игроку не пишется - там просто заменяется слово
Если помог, ставь плюсик в репу :)
Сообщение #
8 написано 11.10.2012 в 14:58
#include "ScriptPCH.h" #include "Channel.h" class System_Censure : public PlayerScript { public: System_Censure() : PlayerScript("System_Censure") {} void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg) { CheckMessage(player, msg, lang, NULL, NULL, NULL, NULL); } void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Player* receiver) { CheckMessage(player, msg, lang, receiver, NULL, NULL, NULL); } void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Group* group) { CheckMessage(player, msg, lang, NULL, group, NULL, NULL); } void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Guild* guild) { CheckMessage(player, msg, lang, NULL, NULL, guild, NULL); } void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Channel* channel) { CheckMessage(player, msg, lang, NULL, NULL, NULL, channel); } void CheckMessage(Player* player, std::string& msg, uint32 lang, Player* /*receiver*/, Group* /*group*/, Guild* /*guild*/, Channel* channel) { //if (player->isGameMaster() || lang == LANG_ADDON) //return; // transform to lowercase (for simpler checking) std::string lower = msg; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); uint8 cheksSize = 27; std::string checks[27]; checks[0] ="http://"; checks[1] =".com"; checks[2] =".www"; checks[3] =".net"; checks[4] =".org"; checks[5] =".ru"; checks[6] ="www."; checks[7] ="wow-"; checks[8] ="-wow"; checks[9] ="rondor"; checks[10] ="no-ip"; checks[11] =".zapto"; checks[12] =".lt"; checks[13] =".biz"; checks[14] ="spzone"; checks[15] ="fakewow"; checks[16] ="deathside"; checks[17] ="warsong"; checks[18] ="RiverRise"; checks[19] ="air-world"; checks[20] ="wow-cool"; checks[21] ="elgracia"; checks[22] ="backkor"; checks[23] ="isengard"; checks[24] ="wowcircle"; checks[25] ="izbooshka"; checks[26] ="magic"; for (int i = 0; i < cheksSize; ++i) if (lower.find(checks[i]) != std::string::npos) { msg = "Cервер просто отпад)"; ChatHandler(player).PSendSysMessage("Реклама запрещена!"); return; } } }; void AddSC_System_Censure() { new System_Censure(); }
Добавлено (11.10.2012, 16:21) ---------------------------------------------
Quote (Just_Max )
msg = "Cервер просто отпад)";
пишется в чат Пример: Поиск спутников: ЛоЛ: Cервер просто отпад) Quote (Just_Max )
Реклама запрещена!
пишется самому игроку в лс
Человек не может жить без сердца, без печени, без почек.
Зато, сука, без мозгов спокойно живут целыми поколениями.
Сообщение #
9 написано 11.10.2012 в 16:21
Спасибо - буду пробовать
Если помог, ставь плюсик в репу :)
Сообщение #
10 написано 11.10.2012 в 17:39
Пример: Code
char msg[250]; snprintf(msg, 250, "Игрок %s читер!", player->GetName()); sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
Сообщение #
11 написано 11.10.2012 в 17:46
А вот это уже мега интересно Я бы хотел только парочку пояснений если можно Что такое char msg[250]; точнее почему 250? длина сообщения максимальная? почему именно snprintf ? p.s я стремлюсь во всём разобраться и понять а не просто вкатать чужую подсказку в ядро
Если помог, ставь плюсик в репу :)
Сообщение #
12 отредактировано
Stormtrooper -
Четверг, 11.10.2012, 17:56
Сообщение #
13 написано 11.10.2012 в 18:02
А сразу стрингом объявить было нельзя? Ну хотябы типо такого std::string lower = msg;
Если помог, ставь плюсик в репу :)
Сообщение #
14 написано 11.10.2012 в 18:10
Stormtrooper , удачи. SendServerMessage хочет char Code
void SendServerMessage(ServerMessageType type, const char *text = "", Player* player = NULL);
Сообщение #
15 отредактировано
Dinoza -
Четверг, 11.10.2012, 18:17
SendWorldText не хочет void SendWorldText(int32 string_id, ...);
Если помог, ставь плюсик в репу :)
Сообщение #
16 отредактировано
Stormtrooper -
Четверг, 11.10.2012, 18:18