aelrond | Дата: Понедельник, 26.10.2015, 22:36 | Сообщение # 1 |
- Сообщения: 29
- Награды: 0
- Замечания:
|
Добрый день, скрипты писать начал недавно, вот столкнулся с проблемой: как сделать, что бы в чате указывалась раса, префикс, уровень?
Нашел тут несколько тем, там описан один способ с использованием chatcolor3.0 Я решил сделать своим способом, и выкладываю его сюда. Может кому пригодится! Итак, что дает мой способ? 1. Выводит расу в чат 2. Добавляет префикс VIP ADMIN player VIP+ (на сколько у вас хватит фантазии) 3. Не нужно ничего качать дополнительно. Начнём! 1. B *.sma
Код #include "war3ft/prefix.inl"
public plugin_init{ register_clcmd ("say", "hook_say"); register_clcmd ("say_team", "hook_say_team"); SzSayText = get_user_msgid ("SayText"); SzMaxPlayers = get_maxplayers(); register_message (SzSayText, "arubaid_duplicated"); } 2. В папке /war3ft создаем файлик prefix.inl в него копируем следующий код Код new SzMaxPlayers new SzSayText new Messages[192] new SzName[32]
public arubaid_duplicated (msgId, msgDest, receiver) { return PLUGIN_HANDLED }
public hook_say(idUser) { read_args (Messages, 191) remove_quotes (Messages) if (Messages[0] == '/' || Messages[0] == '!' || equal (Messages, "")) return PLUGIN_CONTINUE new szRaceName[64]; lang_GetRaceName( p_data[idUser][P_RACE], idUser, szRaceName, 63 ); new SzAlive = is_user_alive(idUser); get_user_name(idUser, SzName, 31); if(!is_valid_msg(Messages)) return PLUGIN_CONTINUE; //Player (SzAlive ? format(Messages, 191, "^1[^3%s^1]^3%s: ^1%s", szRaceName, SzName,Messages) : format(Messages, 191, "^1DEAD^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages)) for(new i = 1; i <= SzMaxPlayers; i++){ if(!is_user_connected(i)) continue; if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i)){ message_begin(MSG_ONE, SzSayText, {0, 0, 0}, i); write_byte(idUser); write_string(Messages); message_end();} } return PLUGIN_CONTINUE; }
public hook_say_team(idUser) { read_args (Messages, 191) remove_quotes (Messages) if (Messages[0] == '/' || Messages[0] == '!' || equal (Messages, "")) return PLUGIN_CONTINUE new szRaceName[64]; lang_GetRaceName( p_data[idUser][P_RACE], idUser, szRaceName, 63 ); new SzPlayerTeam = get_user_team(idUser); new SzAlive = is_user_alive(idUser); get_user_name(idUser, SzName, 31); if(!is_valid_msg(Messages)) return PLUGIN_CONTINUE; //Player { if( get_user_team( idUser ) == 2 ) (SzAlive ? format(Messages, 191, "^1CT^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD CT^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) if( get_user_team( idUser ) == 1 ) (SzAlive ? format(Messages, 191, "^1T^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD T^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) } for(new i = 1; i <= SzMaxPlayers; i++) { if(!is_user_connected(i)) continue; if(get_user_team(i) != SzPlayerTeam) continue; if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i)) { message_begin(MSG_ONE, SzSayText, {0, 0, 0}, i); write_byte(idUser); write_string(Messages); message_end(); } } return PLUGIN_CONTINUE; }
bool:is_valid_msg(const Messages[]) { if( Messages[0] == '@' || !strlen(Messages)) { return false; } return true; } 3. В принципе всё готово. можно компилировать! но если вы хотите добавить префиксы VIP/Admin/player/любой другой, то нужно дописать еще пару строк: В constants.inl Я делал под себя, вы можете оперировать "флагами" как душе угодно! Главное не запутаться.
Код #define ADMIN_FLAG ADMIN_LEVEL_H // VIP #define ADMIN_FLAG2 ADMIN_KICK // VIP+ #define ADMIN_FLAG3 ADMIN_BAN // админ #define GL ADMIN_PASSWORD // Главный админ
Далее, для каждого префикса добавляем строки в hook_say и hook_say_team Код //Player if(!(get_user_flags(idUser) & ADMIN_FLAG2) && !(get_user_flags(idUser) & ADMIN_FLAG) && !(get_user_flags(idUser) & GL) && !(get_user_flags(idUser) & ADMIN_FLAG3)) (SzAlive ? format(Messages, 191, "^1[^3Player^1]^1[^3%s^1]^3%s: ^1%s", szRaceName, SzName,Messages) : format(Messages, 191, "^1DEAD^1[^3Player^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages)) //Admin if((get_user_flags(idUser) & ADMIN_FLAG3) && !(get_user_flags(idUser) & GL)) (SzAlive ? format(Messages, 191, "^1[^4Admin^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD^1[^4Admin^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages))
//VIP if(!(get_user_flags(idUser) & ADMIN_FLAG2) && (get_user_flags(idUser) & ADMIN_FLAG) && !(get_user_flags(idUser) & GL) && !(get_user_flags(idUser) & ADMIN_FLAG3)) (SzAlive ? format(Messages, 191, "^1[^3VIP^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD^1[^3VIP^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages))
//VIP+ if((get_user_flags(idUser) & ADMIN_FLAG2) && (get_user_flags(idUser) & ADMIN_FLAG) && !(get_user_flags(idUser) & GL) && !(get_user_flags(idUser) & ADMIN_FLAG3)) (SzAlive ? format(Messages, 191, "^1[^3VIP+^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD^1[^3VIP+^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages)) //Главный if(get_user_flags(idUser) & GL) (SzAlive ? format(Messages, 191, "^1[^4Gl.Admin^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1[^4Gl.Admin^1]^1[^3%s^1]^3%s: ^1%s", szRaceName,SzName, Messages)) Код //Player if(!(get_user_flags(idUser) & ADMIN_FLAG2) && !(get_user_flags(idUser) & ADMIN_FLAG) && !(get_user_flags(idUser) & GL) && !(get_user_flags(idUser) & ADMIN_FLAG3)) { if( get_user_team( idUser ) == 2 ) (SzAlive ? format(Messages, 191, "^1CT^1[^4Player^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD CT^1[^4Player^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) if( get_user_team( idUser ) == 1 ) (SzAlive ? format(Messages, 191, "^1T^1[^4Player^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD T^1[^4Player^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) } //Admin if((get_user_flags(idUser) & ADMIN_FLAG3) && !(get_user_flags(idUser) & GL)) { if( get_user_team( idUser ) == 2 ) (SzAlive ? format(Messages, 191, "^1CT^1[^4Admin^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD CT^1[^4Admin^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) if( get_user_team( idUser ) == 1 ) (SzAlive ? format(Messages, 191, "^1T^1[^4Admin^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD T^1[^4Admin^1]^1[^3%s^1]^3%s : ^3%s", szRaceName,SzName, Messages)) } //VIP if(!(get_user_flags(idUser) & ADMIN_FLAG2) && (get_user_flags(idUser) & ADMIN_FLAG) && !(get_user_flags(idUser) & GL) && !(get_user_flags(idUser) & ADMIN_FLAG3)) { if( get_user_team( idUser ) == 2 ) (SzAlive ? format(Messages, 191, "^1CT^1[^3VIP^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD CT^1[^3VIP^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) if( get_user_team( idUser ) == 1 ) (SzAlive ? format(Messages, 191, "^1T^1[^3VIP^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD T^1[^3VIP^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) } //VIP+ if((get_user_flags(idUser) & ADMIN_FLAG2) && (get_user_flags(idUser) & ADMIN_FLAG) && !(get_user_flags(idUser) & GL) && !(get_user_flags(idUser) & ADMIN_FLAG3)) { if( get_user_team( idUser ) == 2 ) (SzAlive ? format(Messages, 191, "^1CT^1[^3VIP+^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD CT^1[^3VIP+^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) if( get_user_team( idUser ) == 1 ) (SzAlive ? format(Messages, 191, "^1T^1[^3VIP+^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1DEAD T^1[^3VIP+^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) } //Главный if(get_user_flags(idUser) & GL) { if( get_user_team( idUser ) == 2 ) (SzAlive ? format(Messages, 191, "^1[^4Gl.Admin^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1[^4Gl.Admin^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) if( get_user_team( idUser ) == 1 ) (SzAlive ? format(Messages, 191, "^1[^4Gl.Admin^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages) : format(Messages, 191, "^1[^4Gl.Admin^1]^1[^3%s^1]^3%s: ^3%s", szRaceName,SzName, Messages)) }
4. Если вы на этом не желаете останавливаться, и хотите отображать еще и уровень игрока:
то нужно сделать вот что: берем конструкцию ^1[^3%d^1] и p_data[idUser][P_LEVEL] и вставляем её везде вот таким образом:
Готово!
Сообщение отредактировал aelrond - Понедельник, 26.10.2015, 22:38 |
|
| |