[Script] Chat Mod & Boss Announcer
Всем добрый вечер. Наткнулся на парочку скриптов,и решил поделиться с вами Скопипастил с Ac-web,и перевел на русский. 1. Chat Mod Добавляет команду .chat "ваш текст" . Работает по типу анонса. При использовании команды добавляется тэг рядом с ником: Для игроков [Орда] и [Альянс] Для Модератора [Модератор] Для Гейм-мастера [ГМ] Для Админа [Админ]
Code
commit 640283b67c46ef164a899e73461de007dcd6c1a3 Author: kleuser75 <kleuser1@gmail.com> Date: Sat Aug 4 22:04:17 2012 +0700 diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index d3253be..e71d688 100755 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -39,6 +39,7 @@ void AddSC_arena_spectator_script(); void AddSC_dalaran_squirrel(); void AddSC_npc_transmogrifier(); void AddSC_transmogriefer(); +void AddSC_cs_world_chat(); // spells void AddSC_deathknight_spell_scripts(); @@ -1299,6 +1300,7 @@ AddSC_professionnpc(); AddSC_dalaran_squirrel(); AddSC_npc_transmogrifier(); AddSC_transmogriefer(); +AddSC_cs_world_chat(); #endif } diff --git a/src/server/scripts/Custom/CMakeLists.txt b/src/server/scripts/Custom/CMakeLists.txt index 1893714..fc9c434 100644 --- a/src/server/scripts/Custom/CMakeLists.txt +++ b/src/server/scripts/Custom/CMakeLists.txt @@ -23,6 +23,7 @@ set(scripts_STAT_SRCS Custom/dalaran_squirrel.cpp Custom/transmogrification.cpp Custom/transmogrification2.cpp + Custom/world_chat.cpp ) message(" -> Prepared: Custom") diff --git a/src/server/scripts/Custom/world_chat.cpp b/src/server/scripts/Custom/world_chat.cpp new file mode 100644 index 0000000..42e7bf1 --- /dev/null +++ b/src/server/scripts/Custom/world_chat.cpp @@ -0,0 +1,87 @@ +#include "ScriptPCH.h" +#include "Chat.h" + +class cs_world_chat : public CommandScript +{ + public: + cs_world_chat() : CommandScript("cs_world_chat"){} + + ChatCommand * GetCommands() const + { + static ChatCommand WorldChatCommandTable[] = + { + {"chat", SEC_PLAYER, true, &HandleWorldChatCommand, "", NULL}, + {NULL, 0, false, NULL, "", NULL} + }; + + return WorldChatCommandTable; + } + + static bool HandleWorldChatCommand(ChatHandler * handler, const char * args) + { + if (!handler->GetSession()->GetPlayer()->CanSpeak()) + return false; + std::string temp = args; + + if (!args || temp.find_first_not_of(' ') == std::string::npos) + return false; + + std::string msg = ""; + Player * player = handler->GetSession()->GetPlayer(); + + switch(player->GetSession()->GetSecurity()) + { + // Player + case SEC_PLAYER: + if (player->GetTeam() == ALLIANCE) + { + msg += "|cff0000ff[Альянс] |cffffffff["; + msg += player->GetName(); + msg += "] |cfffaeb00"; + } + + if (player->GetTeam() == HORDE) + { + msg += "|cffff0000[Орда] |cffffffff["; + msg += player->GetName(); + msg += "] |cfffaeb00"; + } + break; + // Moderator/trial + case SEC_MODERATOR: + msg += "|cffff8a00[Модератор] |cffffffff["; + msg += player->GetName(); + msg += "] |cfffaeb00"; + break; + // GM + case SEC_GAMEMASTER: + msg += "|cff00ffff[ГМ] |cffffffff["; + msg += player->GetName(); + msg += "] |cfffaeb00"; + break; + // Admin + case SEC_ADMINISTRATOR: + msg += "|cfffa9900[Админ] |cffffffff["; + msg += player->GetName(); + msg += "] |cfffaeb00"; + break; + + } + + msg += args; + sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), 0); + + return true; + } +}; + +void AddSC_cs_world_chat() +{ + new cs_world_chat(); +}
2.Босс анонсер Считаю бредом,но для фан серверов думаю сгодиться. Работает очень просто,убили босса,в чате всем станет известно об этом
Code
commit c46869c9d8692211ce2122dd58e3958b3519b431 Author: kleuser75 <kleuser1@gmail.com> Date: Sat Aug 4 22:07:44 2012 +0700 diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index e71d688..d7e2f78 100755 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -40,6 +40,7 @@ void AddSC_dalaran_squirrel(); void AddSC_npc_transmogrifier(); void AddSC_transmogriefer(); void AddSC_cs_world_chat(); +void AddSC_Boss_Announcer(); // spells void AddSC_deathknight_spell_scripts(); @@ -1301,6 +1302,7 @@ AddSC_dalaran_squirrel(); AddSC_npc_transmogrifier(); AddSC_transmogriefer(); AddSC_cs_world_chat(); +AddSC_Boss_Announcer(); #endif } diff --git a/src/server/scripts/Custom/CMakeLists.txt b/src/server/scripts/Custom/CMakeLists.txt index fc9c434..8054a97 100644 --- a/src/server/scripts/Custom/CMakeLists.txt +++ b/src/server/scripts/Custom/CMakeLists.txt @@ -24,6 +24,7 @@ set(scripts_STAT_SRCS Custom/transmogrification.cpp Custom/transmogrification2.cpp Custom/world_chat.cpp + Custom/announcer_boss.cpp ) message(" -> Prepared: Custom") diff --git a/src/server/scripts/Custom/announcer_boss.cpp b/src/server/scripts/Custom/announcer_boss.cpp new file mode 100644 index 0000000..6ccd222 --- /dev/null +++ b/src/server/scripts/Custom/announcer_boss.cpp @@ -0,0 +1,32 @@ +#include "ScriptPCH.h" + +class Boss_Announcer : public PlayerScript +{ +public: +Boss_Announcer() : PlayerScript ("Boss_Announcer") {} + +void OnCreatureKill(Player* player, Creature* boss) +{ + +if (boss->isWorldBoss()) +{ +if (player->getGender() == GENDER_MALE) +{ +char msg[250]; +snprintf(msg, 250, "|CFF7BBEF7[Босс Анонсер]|r:|cffff0000 %s |r и его группа убили мирового босса |CFF18BE00[%s]|r !!!",player->GetName(),boss->GetName()); +sWorld->SendServerMessage(SERVER_MSG_STRING, msg); +} +else +{ +char msg[250]; +snprintf(msg, 250, "|CFF7BBEF7[Босс Анонсер]|r:|cffff0000 %s |r и его группа убили мирового босса |CFF18BE00[%s]|r !!!",player->GetName(),boss->GetName()); +sWorld->SendServerMessage(SERVER_MSG_STRING, msg); +} +} +} +}; + +void AddSC_Boss_Announcer() +{ +new Boss_Announcer; +}
Сообщение #
1 написано 04.08.2012 в 19:40
Давно пробовал Boss Announcer. Он чуть ли не каждого трешмоба в цлк считает босом. И тупо засоряет чат сообщениями о том что , Вася Пупкин и его команда убили боса XYZ. Влом пока-что разбирать принципы работы функции boss->isWorldBoss() чтобы подправить.
Сообщение #
2 написано 04.08.2012 в 23:46
Quote (zhyvchyk )
Влом пока-что разбирать принципы работы функции boss->isWorldBoss() чтобы подправить.
Щито? Проверка идет на босса же -_- Что тут разбирать?
Сообщение #
3 написано 05.08.2012 в 01:10
Quote (zhyvchyk )
Он чуть ли не каждого трешмоба в цлк считает босом. И тупо засоряет чат сообщениями о том что , Вася Пупкин и его команда убили боса XYZ.
Может оно и так,я еще не проверял у себя.Но все же может сгодится кому нибудь.
Сообщение #
4 написано 05.08.2012 в 02:12
Почему бы не сделать оптимизацию с ? Внести эту переменную до 2-ого условия.
Сообщение #
5 написано 05.08.2012 в 02:38
Для игроков [Орда] и [Альянс] имя не пишет)
Сообщение #
6 написано 05.08.2012 в 09:00
std_Suicide , маловато знаний по этому поводу я бы сделал если бы знал. Quote (sergey566 )
Для игроков [Орда] и [Альянс] имя не пишет)
всё пишет я проверял
Сообщение #
7 написано 05.08.2012 в 12:30
У меня почему то ваще не пашет( Скомпилилось без ошибок но ничего не пашет ни чат ни бос аннонсер((((( и ошибок не показывает((((
Сообщение #
8 написано 11.08.2012 в 10:16
Всё работает прекрасно. проверено
Сообщение #
9 написано 11.08.2012 в 10:57
не работает нету файла Quote (kleuser )
src/server/scripts/Custom/world_chat.cpp
Сообщение #
10 написано 10.10.2012 в 17:09
создай файл world_chat.cpp и в него вставь
#include "ScriptPCH.h" #include "Chat.h" class cs_world_chat : public CommandScript { public: cs_world_chat() : CommandScript("cs_world_chat"){} ChatCommand * GetCommands() const { static ChatCommand WorldChatCommandTable[] = { {"chat", SEC_PLAYER, true, &HandleWorldChatCommand, "", NULL}, {NULL, 0, false, NULL, "", NULL} }; return WorldChatCommandTable; } static bool HandleWorldChatCommand(ChatHandler * handler, const char * args) { if (!handler->GetSession()->GetPlayer()->CanSpeak()) return false; std::string temp = args; if (!args || temp.find_first_not_of(' ') == std::string::npos) return false; std::string msg = ""; Player * player = handler->GetSession()->GetPlayer(); switch(player->GetSession()->GetSecurity()) { // Player case SEC_PLAYER: if (player->GetTeam() == ALLIANCE) { msg += "|cff0000ff[Альянс] |cffffffff["; msg += player->GetName(); msg += "] |cfffaeb00"; } if (player->GetTeam() == HORDE) { msg += "|cffff0000[Орда] |cffffffff["; msg += player->GetName(); msg += "] |cfffaeb00"; } break; // Moderator/trial case SEC_MODERATOR: msg += "|cffff8a00[Модератор] |cffffffff["; msg += player->GetName(); msg += "] |cfffaeb00"; break; // GM case SEC_GAMEMASTER: msg += "|cff00ffff[ГМ] |cffffffff["; msg += player->GetName(); msg += "] |cfffaeb00"; break; // Admin case SEC_ADMINISTRATOR: msg += "|cfffa9900[Админ] |cffffffff["; msg += player->GetName(); msg += "] |cfffaeb00"; break; } msg += args; sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), 0); return true; } }; void AddSC_cs_world_chat() { new cs_world_chat(); }
Сообщение #
11 написано 11.10.2012 в 13:14
у меня всё норм
[blizz]Если помог ставим +[/blizz]
Сообщение #
12 написано 11.10.2012 в 19:28