Simple Timeleft and Nextmap [Colored Messages]

Неодобрените плъгини биват прехвърляни в този раздел. Не препоръчваме да ги ползвате, тъй като най-вероятно съдържат бъгове или същестуват такива плъгини, които вършат по-добра работа от тези тук.
Отговори
Потребителски аватар

Автор на темата
Unbr3akable 3/120
Потребител
Потребител
Мнения: 178
Регистриран: 21 дек 2016, 20:50

Simple Timeleft and Nextmap [Colored Messages]

Мнение от Unbr3akable 3/120 » 02 фев 2017, 21:08

Simple Timeleft and Nextmap [Colored Messages]


Изображение Описание на плъгина:
  • Прост плъгин, който прави съобщенията в чата като Timeleft: 14:14, Nextmap: de_dust2 и прочие оцветени. Съобщенията се настройват наистина лесно чрез CVARs.
Изображение Списък с CVARs:
  • Главни CVARs
  • 1 = ВКЛЮЧЕНО | 0 = ИЗКЛЮЧЕНО
  • enable_timeleft -- Включва Timeleft.
    • ПО ПОДРАЗБИРАНЕ: 1
  • enable_thetime -- Включва Timeleft.
    • ПО ПОДРАЗБИРАНЕ: 1
  • enable_nextmap -- Включва Nextmap.
    • ПО ПОДРАЗБИРАНЕ: 1
  • enable_currentmap -- Включва Currentmap.
    • ПО ПОДРАЗБИРАНЕ: 1
  • CVARs на съобщенията
  • timeleft_message -- Timeleft съобщението, което се показва в чата.
    • ПО ПОДРАЗБИРАНЕ: !t[!gTimeleft!t] !yTime remaining: !t<timeleft>
  • thetime_message -- Thetime съобщението, което се показва в чата.
    • ПО ПОДРАЗБИРАНЕ: !t[!gThetime!t] !yThe time is: !t<thetime>
  • nextmap_message -- Nextmap съобщението, което се показва в чата.
    • ПО ПОДРАЗБИРАНЕ: !t[!gNextmap!t] !yNext map is: !t<nextmap>
  • currentmap_message -- Nextmap съобщението, което се показва в чата.
    • ПО ПОДРАЗБИРАНЕ: !t[!gCurrentmap!t] !yCurrent map is: !t<currentmap>
Изображение Команди в чата:
  • say (Y) /timeleft -- Показва оставащото време (timeleft)
  • say (Y) /thetime -- Показва текущото време (thetime)
  • say (Y) /nextmap -- Показва следващата карта (nextmap)
  • say (Y) /currentmap -- Показва текущата карта (currentmap)
Изображение Настройки и цветове:
  • Настройки
  • <timeleft> -- Оставащото време (например: 19:42).
  • <thetime> -- Текущото време (например: 02/02/2017 - 21:00:13).
  • <nextmap> -- Следващата карта (например: de_dust2_2006)
  • <currentmap> -- Текущата карта (например: de_dust2)
  • Цветове
  • !y -- ЖЪЛТ ЦВЯТ
  • !t -- СПОРЕД ОТБОРА
  • !g -- ЗЕЛЕН ЦВЯТ
Изображение Снимки:

Изображение
Изображение
Изображение
Изображение

Изображение Изтегляне и допълнителна информация:
simple_timeleft_nextmap.sma
Версия 1.0
(3.69 KиБ) Свален 174 пъти
simple_timeleft_nextmap.sma
Версия 1.0
(3.69 KиБ) Свален 174 пъти
ВАЖНО: Когато добавяте плъгина, е препоръчително да спрете timeleft.amxx и nextmap.amxx от plugins.ini, за да няма проблеми.

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5046
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 57 пъти
Получена благодарност: 472 пъти
Години: 21
Контакти:

Re: Simple Timeleft and Nextmap [Colored Messages]

Мнение от OciXCrom TM » 02 фев 2017, 22:09

Код: Избери всички

new g_szMessage[256] 
Защо ползваш глобална променлива? По този начин много лесно може да стане объркване ако няколко играча ползват командата наведнъж. Създай променливата вътре във функцията. Също така, ако съобщението е по-дълго от 192 символа, сървърът ще крашне (при теб е 256).

Код: Избери всички

register_plugin("Simple Timeleft and Nextmap [Colored Messages]", PLUGIN_VERSION, "Unbr3akable") 
Няма смисъл да ползваш толкова дълго име за плъгина. Ако не се лъжа, максимумът е 22. Напиши amx_plugins за да разбереш колко букви от името ще се покажат.

Код: Избери всички

register_clcmd("say /timeleft", "Show_Timeleft")
register_clcmd("say /thetime", "Show_Thetime")
register_clcmd("say /nextmap", "Show_Nextmap")
register_clcmd("say /currentmap", "Show_Currentmap") 
Няма да е зле да регистрираш и say_team командите, за да може да се пишат и в team чата. Също така, в обикновения плъгин командите се пишат без "/", тъй че няма да е зле да ги добавиш и по този начин.

Код: Избери всички

new szText[256]
formatex(szText, charsmax(szText), "%i:%i", iMinutes, iSeconds) 
256 дължина за толкова кратък текст? Това никога няма да е по-дълго от 7, тъй че намали го. Също така, по-горе казах, че не трябва да е над 192. Тук може да ти предложа и да добавиш часове, тъй като някои сървъри ползват по-дълго времетраене.

Код: Избери всички

for(new i = 0; i < sizeof(g_szReplaceColors) - 1; i += 2)
    replace_all(g_szMessage, charsmax(g_szMessage), g_szReplaceColors[i], g_szReplaceColors[i + 1]) 
Този код го ползваш доста пъти, тъй че направи си един сток:

Код: Избери всички

replace_colors(szMessage[], iLen)
{
    for(new i; i < sizeof(g_szReplaceColors) - 1; i += 2)
        replace_all(szMessage, iLen, g_szReplaceColors[i], g_szReplaceColors[i + 1])
}

...

new szMessage[192]
replace_colors(szMessage, charsmax(szMessage)) 

Код: Избери всички

if(get_pcvar_num(g_pTimeleft))
    ColorChat(id, TEAM_COLOR, "%s", g_szMessage)
Плъгинът прави един куп проверки преди този код, и ако тази проверка е false, излишно е направил останалите, тъй че премести я в началото на функцията, тоест:

Код: Избери всички

if(!get_pcvar_num(g_pTimeleft))
    return PLUGIN_CONTINUE
Същото се отнася и за останалите команди.

Код: Избери всички

get_cvar_string("amx_nextmap", szNextMap, charsmax(szNextMap))
Щом взимаш стойността на квара повече пъти, ползвай pcvar:

Код: Избери всички

new g_pAmxNextmap

public plugin_init()
    g_pAmxNextmap = get_cvar_pointer("amx_nextmap")
    
...

get_pcvar_string(g_pAmxNextmap, ...)

Код: Избери всички

get_mapname(szCurMap, charsmax(szCurMap))
Името на текущата карта няма как да се промени по време на игра, тъй че запази го в глобална променлива при plugin_init().

Код: Избери всички

new iTheTime[32] 
szTheTime[32]

Отговори

Върни се в “Неодобрени/стари плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост