Как да сложа public функция в case на меню ?

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Как да сложа public функция в case на меню ?

Мнение от [N]eXuS » 01 Апр 2018, 19:14

Как мога да направя например като регистрирам евент за 2х Damage на някво оражие или нещо друго но имам и меню да кажем че в менюто имам няколко избора и един е да направи това с 2x Damage то и как ще стане този евент да го сложа в case ??

Дано да сте ме разбрали :coolface:

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Как да сложа public функция в case на меню ?

Мнение от User12 » 01 Апр 2018, 20:04

Знам един от от един сайт дето гледах и ми е помагал няколко пъти виж го може да ти помогне и на теб мисля , че има това което търсиш :

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

#include <amxmodx>

 public plugin_init()
 {
// Ще регистрираме командата /menu, която ще създава ново меню.
    register_clcmd( "say /menu","AwesomeMenu");
    register_clcmd( "say_team /menu","AwesomeMenu");
 }
// Това е функцията за менюто.
 public AwesomeMenu(id)
 {
    new menu = menu_create("\rZaglavie na moeto menu!:", "menu_handler")
// Това долу са възможностите.
    menu_additem(menu, "\wOtovri mi MOTD ", "1", 0);
    menu_additem(menu, "\wOtvori mi drugo Menu", "2", 0);
// Нужни неща за показването на менюто.
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
// Функцията, изпълнявана при избиране на опция.
 public menu_handler(id, menu, item)
 {
// Ако има Exit>>
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
// Още нужни неща.
    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    new key = str_to_num(data);
// Тук вече са случаите.
    switch(key)
    {
// Първи случай:
        case 1:
        {
            // Ще отворим MOTD екрана, който ще зарежда HTML информация от файла motd.txt, който трябва да бъде в configs.
            show_motd(id,"addons/amxmodx/configs/motd.txt")
        }
        case 2:
        {
            // Ще отворим друго меню, ако изберем 2-рия случай.
            SubMenu(id);
        }
    }

// Унищожаваме менюто.
    menu_destroy(menu);
    return PLUGIN_HANDLED;
 }
// Новото меню, което ще се отвори при избирането на втори случай.
 SubMenu(id)
 {
    //Ще използваме друг handler!!!
    new menu = menu_create("\rDrugoto mi menu!:", "submenu_handler")

    menu_additem(menu, "\w1-vi sluchai", "1", 0);
    menu_additem(menu, "\w2-ri sluchai", "2", 0);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
// Функцията за случаите.
 public submenu_handler(id, menu, item)
 {
// Ако натиснат Exit да ги върнем към първото меню.
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);

        // Проверка дали са живи
        if( is_user_connected(id) )
            // Изпращаме ги обратно
           AwesomeMenu(id);

        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    new key = str_to_num(data);

// И тук са случаите на второто меню
   switch(key)
    {
        case 1:
        {
            // Нека сложим нормални чат съобщения.
            client_print(id, print_chat, "Ti izbra 1-vata opciq na drugoto menu.");
        }
        case 2:
        {
            client_print(id, print_chat, "Ne, ti izbra vtorata opciq na tova menu!!!");
        }
    }
// Унищожаваме менюто.
    menu_destroy(menu);
    return PLUGIN_HANDLED;
} 
Каналът ми в YouTube : Георги Пламенов

Изображение

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Как да сложа public функция в case на меню ?

Мнение от [N]eXuS » 01 Апр 2018, 22:43

Ами не не ми тря това но мерси мисълта ми беше друга ( Дай линк на лс на форума )

То даже например имаме едно меню

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

menu_additem(menu, "Model 1")
menu_additem(menu, "Model 2")
и като регна евента CurWeapon

нали тря да е
public CurWeapon()

и мисълта ми е как да сложа в case че точно него си модел да се сменя ? :coolface:

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

Как да сложа public функция в case на меню ?

Мнение от OciXCrom » 01 Апр 2018, 23:17

Демек искаш да извикаш функцията ръчно? Изказвай се правилно... Просто напиши името на функцията, примерно OnChangeWeapon(id).

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Как да сложа public функция в case на меню ?

Мнение от [N]eXuS » 01 Апр 2018, 23:20

Не те разбрах :Д
Може да дадеш един пример с регването на евента с менюто и смяната на моделите щото аз както съм го направил сменям ги моделите но като сменя на нош например и върна пак другото оражие и модела се маха !

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

Как да сложа public функция в case на меню ?

Мнение от OciXCrom » 01 Апр 2018, 23:21

Ти мен не ме разбра, а пък аз теб изобщо. По-скоро дай кода и обясни какво искаш да направиш.

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Как да сложа public функция в case на меню ?

Мнение от [N]eXuS » 01 Апр 2018, 23:27

Ами да скъся тази част с #define където съм ги сложил и да направя моделите

Ето кода : :mad:

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

#include <amxmodx>
#include <fun>
#include <stripweapons>
#include <fakemeta>
#include <cromchat>
#include <cstrike>

new const PLUGIN[] = ""
new const VERSION[] = ""
new const AUTHOR[] = ""

new pMenuEnable, pAwpSkin1Cr, pAwpSkin2Cr, pAwpSkin3Cr, pAwpSkin4Cr, pAwpSkin5Cr

#define AWP_SKIN_1_V "models/awp_skin1_v.mdl"
#define AWP_SKIN_1_P "models/awp_skin1_p.mdl"

#define AWP_SKIN_2_V "models/awp_skin2_v.mdl"
#define AWP_SKIN_2_P "models/awp_skin2_p.mdl"

#define AWP_SKIN_3_V "models/awp_skin3_v.mdl"
#define AWP_SKIN_3_P "models/awp_skin3_p.mdl"

#define AWP_SKIN_4_V "models/awp_skin4_v.mdl"
#define AWP_SKIN_4_P "models/awp_skin4_p.mdl"

#define AWP_SKIN_5_V "models/awp_skin5_v.mdl"
#define AWP_SKIN_5_P "models/awp_skin5_p.mdl"

#define MSG_NO_CR "Imash %i trybvat ti %i !"


public plugin_precache()
{
	precache_model(AWP_SKIN_1_V)
	precache_model(AWP_SKIN_1_P)
	
	precache_model(AWP_SKIN_2_V)
	precache_model(AWP_SKIN_2_P)
	
	precache_model(AWP_SKIN_3_V)
	precache_model(AWP_SKIN_3_P)
	
	precache_model(AWP_SKIN_4_V)
	precache_model(AWP_SKIN_4_P)
	
	precache_model(AWP_SKIN_5_V)
	precache_model(AWP_SKIN_5_P)
}

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /awp", "Awp_Models_Menu")
	register_clcmd("say_team /awp", "Awp_Models_Menu")
	
	// pCvars
	pMenuEnable = register_cvar("amx_menu_skin", "1")
	pAwpSkin1Cr = register_cvar("amx_awp_skin1_cr", "10000")
	pAwpSkin2Cr = register_cvar("amx_awp_skin2_cr", "200")
	pAwpSkin3Cr = register_cvar("amx_awp_skin3_cr", "300")
	pAwpSkin4Cr = register_cvar("amx_awp_skin4_cr", "400")
	pAwpSkin5Cr = register_cvar("amx_awp_skin5_cr", "500")
}


public Awp_Models_Menu(id)
{
	if(get_user_weapon(id) == CSW_AWP)
	{
		if(get_pcvar_num(pMenuEnable) == 1 || is_user_alive(id))
		{
			static buffer[64]
			
			new menu = menu_create("Shop you Awp Model", "Menu_Container")
			
			formatex(buffer, charsmax(buffer), "Imeto na Skin 1 \r| %i |", get_pcvar_num(pAwpSkin1Cr))
			menu_additem(menu, buffer)
			
			formatex(buffer, charsmax(buffer), "Imeto na Skin 2 \r| %i |", get_pcvar_num(pAwpSkin2Cr))
			menu_additem(menu, buffer)
			
			formatex(buffer, charsmax(buffer), "Imeto na Skin 3 \r| %i |", get_pcvar_num(pAwpSkin3Cr))
			menu_additem(menu, buffer)
			
			formatex(buffer, charsmax(buffer), "Imeto na Skin 4 \r| %i |", get_pcvar_num(pAwpSkin4Cr))
			menu_additem(menu, buffer)
			
			formatex(buffer, charsmax(buffer), "Imeto na Skin 5 \r| %i |", get_pcvar_num(pAwpSkin5Cr))
			menu_additem(menu, buffer)
			
			menu_display(id, menu)
		}
	}
	
	else
	
	{
		CC_SendMessage(id, "Za da vidite menuto trqbva da ste zakupili AWP !")
	}
}

public Menu_Container(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	switch(item)
	{
		case(0):
		{
			if(cs_get_user_money(id) < get_pcvar_num(pAwpSkin1Cr))
			{
				CC_SendMessage(id, MSG_NO_CR, cs_get_user_money(id), get_pcvar_num(pAwpSkin1Cr))
			}
			
			else
			
			{
				
				set_pev(id, pev_viewmodel2, AWP_SKIN_1_V)
				set_pev(id, pev_weaponmodel2, AWP_SKIN_1_P)
				cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(pAwpSkin1Cr), 1)
			}
			
		}
		
		case(1):
		{
			if(cs_get_user_money(id) < get_pcvar_num(pAwpSkin2Cr))
			{
				CC_SendMessage(id, MSG_NO_CR, cs_get_user_money(id), get_pcvar_num(pAwpSkin2Cr))
			}
			
			else
			
			{
				
				set_pev(id, pev_viewmodel2, AWP_SKIN_2_V)
				set_pev(id, pev_weaponmodel2, AWP_SKIN_2_P)
				cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(pAwpSkin2Cr), 1)
			}
		}
		
		case(2):
		{
			if(cs_get_user_money(id) < get_pcvar_num(pAwpSkin3Cr))
			{
				CC_SendMessage(id, MSG_NO_CR, cs_get_user_money(id), get_pcvar_num(pAwpSkin3Cr))
			}
			
			else
			
			{
				
				set_pev(id, pev_viewmodel2, AWP_SKIN_3_V)
				set_pev(id, pev_weaponmodel2, AWP_SKIN_3_P)
				cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(pAwpSkin3Cr), 1)
			}
		}
		
		case(3):
		{
			if(cs_get_user_money(id) < get_pcvar_num(pAwpSkin4Cr))
			{
				CC_SendMessage(id, MSG_NO_CR, cs_get_user_money(id), get_pcvar_num(pAwpSkin4Cr))
			}
			
			else
			
			{
				set_pev(id, pev_viewmodel2, AWP_SKIN_4_V)
				set_pev(id, pev_weaponmodel2, AWP_SKIN_4_P)
				cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(pAwpSkin4Cr), 1)
			}
		}
		
		case(4):
		{
			if(cs_get_user_money(id) < get_pcvar_num(pAwpSkin5Cr))
			{
				CC_SendMessage(id, MSG_NO_CR, cs_get_user_money(id), get_pcvar_num(pAwpSkin5Cr))
			}
			
			else
			
			{
				
				set_pev(id, pev_viewmodel2, AWP_SKIN_5_V)
				set_pev(id, pev_weaponmodel2, AWP_SKIN_5_P)
				cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(pAwpSkin5Cr), 1)
			}
		}
	}
	
	return PLUGIN_HANDLED
}
Да тези #define да ги сложа в string и после как да направя да регна eventa за оражията да направя всеки модел да си отговаря на менюто !
Тука сега се уча и моля без хейт :bl:

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

Как да сложа public функция в case на меню ?

Мнение от OciXCrom » 01 Апр 2018, 23:31

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

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

Обратно към “Помощ в скриптирането”

Кой е на линия

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