Simple Timeleft and Nextmap [Colored Messages]

Неодобрените плъгини биват прехвърляни в този раздел. Не препоръчваме да ги ползвате, тъй като най-вероятно съдържат бъгове или същестуват такива плъгини, които вършат по-добра работа от тези тук.
Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Simple Timeleft and Nextmap [Colored Messages]

Мнение от Unbr3akable » 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 KiB) Свалено 532 пъти
simple_timeleft_nextmap.sma
Версия 1.0
(3.69 KiB) Свалено 532 пъти
ВАЖНО: Когато добавяте плъгина, е препоръчително да спрете timeleft.amxx и nextmap.amxx от plugins.ini, за да няма проблеми.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Simple Timeleft and Nextmap [Colored Messages]

Мнение от OciXCrom » 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]

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Simple Timeleft and Nextmap [Colored Messages]

Мнение от OciXCrom » 30 Май 2020, 15:16

Дали си тествал плъгина? Ако спреш nextmap.amxx както си написал, то плъгинът няма как да вземе стойността от cvar-a amx_nextmap който е регистриран в nextmap.amxx, съответно командата няма да работи и ще изкара грешка.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Неодобрени/стари плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта