Extra Items Menu v3.2 (+API)

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

Extra Items Menu v3.2 (+API)

Мнение от Unbr3akable » 15 Яну 2017, 20:40

Автор: Unbr3akable

Описание:
  • Плъгинът показва меню с артикули когато играчът се spawn-e. Той, също така съдържа и API, чрез което може да си добавите артикули по ваш избор (по-долу ще разберете как става). Ако искате менюто да бъде достъпно само за играчи с определен флаг или отбор, то трябва сами да си го направите, използвайки конфигурационния файл.
Настройки и съобщения:
  • Настройките се променят чрез конфигурационния файл ExtraItemsMenu.ini, а съобщенията - чрез lang файла ExtraItemsMenu.txt.
    В конфигурационния файл, ще намерите настройки от пет групи:
    • [PREFIX SETTING] -- Тук има само една настройка и тя е за префикса. Може да използвате следните цветове: &x01 = нормално | &x03 = според отбора | &x04 = зелено | &x05 = бяло | &x06 = синьо | &x07 = червено. Може и напълно да премахнете префикса, поставяйки &x00 пред него.
      • EIM_CHAT_PREFIX = &x01[&x03Extra Items Menu&x01]
    • [MENU SETTINGS] -- Тази група включва всички опции, отнасящи се за менюто. Може да използвате: \page = за името на страницата, \n = за добавяне на нов ред, \team = за имена на отборите в заглавията.
      • EIM_MENU_TITLE = \rExtra Items Menu by \dUnbr3akable - Заглавието на менюто.
      • EIM_MENU_TITLEPAGE = \n\w\page:\r - Заглавието на страницата в менюто.
      • EIM_TEAM_NAMES = Unassigned, Terrorist, Counter-Terrorist, Spectator - Имената на отборите.
      • EIM_MENU_BACKNAME = \wPrevious page - Име на предишна страница.
      • EIM_MENU_NEXTNAME = \wNext page - Име на следваща страница.
      • EIM_MENU_EXITNAME = \rClose the menu - Име на затваряне.
      • EIM_MENU_NUMCOLOR = \r - Цветовете на числата.
      • EIM_ITEMS_PERPAGE = 7 - Броя на артикулите на страница.
    • [SOUND SETTINGS] -- Тук ще намерите звукови опции и видовете на съответните звуци, които се изпълняват при грешка и избиране на артикул. Ако искате да няма съответен звук, оставете полето празно. Ако поставите 0 при вида на съответен звук - само играчът ще чува звука. Ако поставите 1 - всички около играча чуват звука.
      • EIM_ERROR_SOUND = buttons/button11.wav - Звук при грешка.
      • EIM_ERRORSOUND_TYPE = 0 - Вида на звука при грешка.
      • EIM_SELECTSOUND_TYPE = 0 - Вида на звука при избиране на артикул.
    • [COMMAND SETTING] -- Тук има само една опция, която определя командите за отваряне на менюто, ако се затвори.
      • EIM_COMMANDS = say /eim, say_team /eim
    • [ACCESS SETTINGS] -- Тази група определя дали менюто да е достъпно само за играчи с определен флаг или отбор.
      • EIM_FLAG = ! - Флаг '!' важи за всички играчи.
      • EIM_TEAM = 0 - '0' важи за всички отбори.
Библиотека eim.inc:
  • Тази библиотека ви дава възможност да добавяте съб-плъгини, които включват артикули по ваш избор.
    Ето примерен съб-плъгин, който добавя безсмъртност в менюто, само ако играчът е терорист:
  • Код за потвърждение: Избери целия код

    #include <amxmodx>
    #include <eim>
    #include <fun>
    
    new GODMODE
    #define GODMODE_NAME "Godmode"
    #define GODMODE_SOUND "misc/stinger12.wav"
    
    public plugin_precache()
        register_item(GODMODE_NAME, GODMODE_SOUND, .team = 1)
    
    public buy_items(id, iItem)
    {
        if (iItem == GODMODE)
            set_user_godmode(id, 1)
            
        return PLUGIN_CONTINUE
    }
    
    public remove_items(id, iItem)
    {
        if (iItem == GODMODE)
            set_user_godmode(id, 0)
    }
  • native register_item(name[], sound[] = DEFAULT_SOUND, team = 0) - Регистрира нов артикул в менюто.
    • @param name - Името на артикула.
    • @param sound - Звука на артикула.
    • @param team - Дали артикулът да бъде само за специфичен отбор.
    • @връща - Нищо.
  • forward select_items(id, item) - Дава артикул на играчът.
    • @param id - Индекса на играча.
    • @param item - Артикулът, който ще бъде даден.
    • @връща - Нищо.
  • forward remove_items(id, item) - Премахва артикул от играча на нов рунд.
    • @param id - Индекса на играча.
    • @param item - Артикулът, който ще бъде премахнат.
    • @връща - Нищо.
  • Имайте предвид, че е достатъчен и само параметъра name, за да регистрира артикул в менюто. Другите параметри може да ги ползвате по ваш избор.
Начин на инсталация:
  • Папката items отива в директорията cstrike/sound на вашия сървър.
  • Файлът ExtraItemsMenu.ini отива в папката configs.
  • Файлът ExtraItemsMenu.txt отива в data/lang.
  • Файлът eim.inc отива в scripting/include.
  • Файлът plugins-eim.ini отива в папката configs.
  • Файловете extra_items_menu.sma и eim_default_items.sma отиват в папката scripting. Оттам си ги компилирате локално и ги инсталирате както всеки друг плъгин.
ВАЖНО: Когато добавяте съб-плъгин към главния плъгин, го компилирате, слагате в папка plugins и пишете името му в configs/plugins-eim.ini!
Снимки:
ИзображениеИзображениеИзображение

Допълнителна информация и изтегляне:
  • Сървъри, използващи този плъгин - ЦЪК!
extra_items_menu.rar
Версия 3.2
(152.1 KiB) Свалено 209 пъти
extra_items_menu.rar
Версия 3.2
(152.1 KiB) Свалено 209 пъти
Последно промяна от Unbr3akable на 26 Апр 2017, 00:34, променено общо 19 пъти.

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

Re: Extra Items Menu v2.1

Мнение от OciXCrom » 16 Яну 2017, 21:34

Код за потвърждение: Избери целия код

#include <dhudmessage>      
По този начин плъгинът няма да може да се компилира на AMXX 1.8.3, тъй като библиотеката dhudmessage е вградена в него. Трябва да стане така:

Код за потвърждение: Избери целия код

#if AMXX_VERSION_NUM < 183
    #include <dhudmessage>
#endif      

Код за потвърждение: Избери целия код

if(get_pcvar_num(iVidSuobshtenie) == 0)
{
    OtvoriMenuto(id)
    ColorChat(id, GREEN, "[%s]^1 Choose your free items!", iPrefiks)
}
    
else if(get_pcvar_num(iVidSuobshtenie) == 1)
{
    OtvoriMenuto(id)
    set_hudmessage(random(256), random(256), random(256), -1.0, 0.15, 0, 6.0, 6.0)
    show_hudmessage(id, "Extra Items Menu^nChoose Your Free Items!")
}
    
else if(get_pcvar_num(iVidSuobshtenie) == 2)
{
    OtvoriMenuto(id)
    set_dhudmessage(random(256), random(256), random(256), -1.0, 0.15, 0, 6.0, 6.0)
    show_dhudmessage(id, "Extra Items Menu^nChoose Your Free Items!")
}
Това може да стане така:

Код за потвърждение: Избери целия код

switch(get_pcvar_num(iVidSuobshtenie))
{
    case 0: ColorChat(id, GREEN, "[%s]^1 Choose your free items!", iPrefiks)
    case 1:
    {
        set_hudmessage(random(256), random(256), random(256), -1.0, 0.15, 0, 6.0, 6.0)
        show_hudmessage(id, "Extra Items Menu^nChoose Your Free Items!")
    }
    case 2:
    {
        set_dhudmessage(random(256), random(256), random(256), -1.0, 0.15, 0, 6.0, 6.0)
        show_dhudmessage(id, "Extra Items Menu^nChoose Your Free Items!")
    }
}

OtvoriMenuto(id)
По-бързо и по-прегледно. Винаги ползвай switch когато е възможно. Също така, няма нужда да повтаряш функцията OtvoriMenuto(id) във всяка проверка.

Код за потвърждение: Избери целия код

set_user_rendering(id, _, 0, 0, 0, _, 0)
Вместо да пишеш тези нули, можеш просто да пишеш set_user_rendering(id), тъй като по подразбиране всички стойности на тази функция са 0.
Този "ключ" в меню handlerа е ненужен в случая и може да стане без него. Просто направи switch(iPredmet). Единствената разлика е, че по този начин първият предмет ще е 0, вместо 1. Следователно, можеш да промениш това:

Код за потвърждение: Избери целия код

menu_additem(iMenu, Tekst, "1", 0)    
menu_additem(iMenu, "Full Grenade Pack", "2", 0)
menu_additem(iMenu, "Faster Speed", "3", 0)
menu_additem(iMenu, "Low Gravity", "4", 0)
menu_additem(iMenu, "Silent Walk", "5", 0)
menu_additem(iMenu, "Invisibility", "6", 0)
=>

Код за потвърждение: Избери целия код

menu_additem(iMenu, Tekst)    
menu_additem(iMenu, "Full Grenade Pack")
menu_additem(iMenu, "Faster Speed")
menu_additem(iMenu, "Low Gravity")
menu_additem(iMenu, "Silent Walk")
menu_additem(iMenu, "Invisibility")
и да премахнеш това:

Код за потвърждение: Избери целия код

new iDanni[6], iIme[64], access, callback    
menu_item_getinfo(iMenu, iPredmet, access, iDanni, charsmax(iDanni), iIme, charsmax(iIme), callback)

new kliuch = str_to_num(iDanni)
switch(kliuch) => switch(iPredmet)
Също така намаляш всеки case за 1, с цел първият предмет да е 0.
В меню handlera отново проверяваш квара iVidSuobshtenie с else/if по три пъти. Можеш да си улесниш работата, като направиш отделна функция, която ще изпраща съобщението зависимо от квара:

Код за потвърждение: Избери целия код

izprati_suobshtenie(id, szChatSuobshtenie[], szHudSuobshtenie[], Color:iCvqt = GREEN)
{
    switch(get_pcvar_num(iVidSuobshtenie))
    {
        case 0:
        {
            new szPrefiks[32]
            get_pcvar_string(Prefiks, szPrefiks, charsmax(szPrefiks))
            ColorChat(id, iCvqt, "%s ^1%s", szPrefiks, szChatSuobshtenie)
        }
        case 1:
        {
            set_hudmessage(random(256), random(256), random(256), -1.0, 0.15, 0, 6.0, 6.0)
            show_hudmessage(id, szHudSuobshtenie)
        }
        case 2:
        {
            set_dhudmessage(random(256), random(256), random(256), -1.0, 0.15, 0, 6.0, 6.0)
            show_dhudmessage(id, szHudSuobshtenie)
        }
    }
}
... след което ще можеш да изпращаш съобщения по доста по-лесен начин. Ето как ще изглежда case-ът за първия предмет:

Код за потвърждение: Избери целия код

case 0:
{
    set_user_health(id, get_user_health(id) + get_pcvar_num(iStoinostKruv))
    cs_set_user_armor(id, get_pcvar_num(iStoinostBronq), CS_ARMOR_VESTHELM)
    izprati_suobshtenie(id, "You got more ^3HP ^1and ^3AP^1!", "Extra Items Menu^nYou got more HP and AP!")
    
    if(get_pcvar_num(iZvuci) == 1)
        emit_sound(id, CHAN_AUTO, iPutKumZvucite[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
}
Можеш да замениш тези 15 реда навсякъде със само един ред:

Код за потвърждение: Избери целия код

if(get_pcvar_num(iVidSuobshtenie) == 0)
    ColorChat(id, GREEN, "[%s]^1 You have ^3Full Grenade Pack ^1now!", iPrefiks)

else if(get_pcvar_num(iVidSuobshtenie) == 1)
{
    set_hudmessage(random(256), random(256), random(256), -1.0, 0.15, 0, 6.0, 6.0)
    show_hudmessage(id, "Extra Items Menu^nYou have Full Grenade Pack now!")
}

else if(get_pcvar_num(iVidSuobshtenie) == 2)
{
    set_dhudmessage(random(256), random(256), random(256), -1.0, 0.15, 0, 6.0, 6.0)
    show_dhudmessage(id, "Extra Items Menu^nYou have Full Grenade Pack now!")
} 
=>

Код за потвърждение: Избери целия код

izprati_suobshtenie(id, "You have ^3Full Grenade Pack ^1now!", "Extra Items Menu^nYou have Full Grenade Pack now!") 

Останалите неща са добре. Като направиш тези промени ще забележиш, че кодът ще се окаже доста по-кратък и по-прегледен, както и ще можеш по-лесно да добавяш нови неща към него. :)

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Extra Items Menu v2.2

Мнение от Unbr3akable » 16 Яну 2017, 23:18

Благодаря ти за съветите.

Това със съобщенията е наистина много добро и ми понижи доста редове от кода, и така е по-четливо, както ти самият каза.

В първата версия на плъгина, която бях постнал в друг форум (няма да споменавам името му, за да не стане реклама), @TheRedShoko беше казал да направя това със switch(item) (в този случай е iPredmet), но един потребител отричаше и викаше, че така ще има странични ефекти и затова се използва това:

Код за потвърждение: Избери целия код

new iDanni[6], iIme[64], access, callback    
menu_item_getinfo(iMenu, iPredmet, access, iDanni, charsmax(iDanni), iIme, charsmax(iIme), callback)

new kliuch = str_to_num(iDanni)
Така и не забелязах страничните ефекти, и го направих както ти каза сега и както каза @TheRedShoko преди.

Това няма значение, важното е, че всичко бачка. Така, плъгинът има

UPDATE! Версия 2.2:
- Оптимизиран код
- Добавен нов CVAR
eim_hud_effect -- Ефект на HUD/DHUD съобщението.
  • 0 Без ефекти
    1 Премигване на съобщението
    2 Съобщението се изписва постепенно

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

Re: Extra Items Menu v2.2

Мнение от OciXCrom » 17 Яну 2017, 15:02

"Странични ефекти" може да има ако при добавянето на предметите в менюто се ползват проверки и числата им не винаги са еднакви. В този случай няма никакви проверки, съответно числата на предметите винаги ще са подредени от 0 до последния предмет и няма да има проблеми.

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Extra Items Menu v2.3

Мнение от Unbr3akable » 31 Яну 2017, 22:41

UPDATE! Версия 2.3:
- Леко променен код.
- Променливите са преименувани правилно.
- Оправен е бъга със скоростта.
- Добавена е команда /eim, чрез която може да отворите отново менюто, ако случайно сте го затворили.
- Добавени са два нови CVAR-a.
eim_items_limit -- Дали да има лимит на артикулите.
  • 0 Изключено
    1 Включено
eim_limit_value -- Задавате каква да бъде стойността на лимита на артикулите.

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Extra Items Menu v3.0 (+API)

Мнение от Unbr3akable » 19 Фев 2017, 19:43

UPDATE v3.0
  • Плъгинът е пренаписан и оптимизиран.
  • Премахнат е лимита на артикулите.
  • Добавено е API, чрез което може да добавяте неограничени артикули по ваш избор, използвайки подплъгини.
  • Кваровете са премахнати, като на тяхно място е създаден конфигурационен файл, чрез който през него се променят всички настройки.
  • Повечето настройки са премахнати.
  • Премахнати са HUD/DHUD съобщенията.
  • Добавен е lang файл.
  • Може да направите артикулите само за определен отбор, като от другият - те ще се скрият в менюто.

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Extra Items Menu v3.1 (+API)

Мнение от Unbr3akable » 27 Фев 2017, 22:24

UPDATE v3.1
  • Вече настройките на менюто се редактират през конфигурационния файл.
  • В менюто може да използвате следните неща: \page - за заглавието на страницата, \team - за имената на отборите и \n - за нов ред.
  • Добавена е опция, която определя имената на отборите, ако \team е използвано в заглавието на менюто.
  • Добавена е опция, чрез която може да променяте цвета на числата в менюто.
  • Добавена е опция, която определя броя на артикулите на страница.
  • Опцията за менюто да е достъпно само за VIP играчи, е "off" за изключено и "on" - за включено, вместо 0 и 1.
  • Премахнато е главното чат съобщение.

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Extra Items Menu v3.2 (+API)

Мнение от Unbr3akable » 25 Мар 2017, 21:09

UPDATE v3.2
  • Премахнат е звука и съобщението, когато няма налични артикули в менюто.
  • Променен е lang файла.
  • Променени са някои от имената на опциите в конфигурационния файл.
  • Добавен е вид на звука при грешка и вид на звука при избиране на артикул.
  • Премахната е опцията EIM_VIP_ONLY като на нейно място е добавена опцията EIM_FLAG, която определя флага за достъп до менюто. Флаг '!' важи за всички играчи.
  • Добавена е опцията EIM_TEAM, която определя дали менюто да е достъпно само за определен отбор. '0' важи за всички отбори.
  • Кода на артикулите по подразбиране е леко променен.
  • Кода на главния плъгин е оптимизиран.

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

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

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 1 гост