←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Połączenie awansu klas z frakcjami od cypisa

  • +
  • -
1stADXionC - zdjęcie 1stADXionC 23.10.2016

Witam.

Jak zrobić aby awans klas działał razem z frakcjami od cypisa.

Chcę osiągnąć efekt, że gdy wpisze komendę " /klasa " otworzy się menu z frakcjami;

1. Darmowe 
2. Premium

Po wybraniu frakcji wyświetla się menu z klasami:

1.Nazwa Klasy
2.Nazwa Klasy

Gdy już wybierzemy klasę otworzy się kolejne menu:

1. Nazwa Klasy
2. Elitarna Nazwa Klasy
Mój kod wyboru klas:
 
public WybierzKlase(id)
{
    new menu = menu_create("Wybierz klase:", "WybierzKlase_Frakcje");
    for(new i=1; i <= ilosc_klas; i++)
    {
        if(!equal(frakcja_klas[i],"") && !is_in_previous(frakcja_klas[i],i)){
            menu_additem(menu,frakcja_klas[i],frakcja_klas[i])
        }
    }
    
    menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
    menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
    menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
    menu_display(id, menu);
}

public WybierzKlase_Frakcje(id, menu, item)
{
    if(item == MENU_EXIT){
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    
    new data[65], iName[64]
    new acces, callback
    menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)
    
    new menu2 = menu_create("Wybierz klase:", "WybierzKlase_Handle");
    
    new klasa[50],szTmp[5];
    for(new i=1; i <= ilosc_klas; i++)
    {
        if(equali(data,frakcja_klas[i])){
            WczytajDane(id, i);
            format(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
            num_to_str(i,szTmp,charsmax(szTmp));
            menu_additem(menu2, klasa, szTmp);
        }
    }
    
    WczytajDane(id, klasa_gracza[id]);
    
    menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
    menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona");
    menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona");
    menu_display(id, menu2);
    
    client_cmd(id, "spk QTM_CodMod/select");
    
    menu_destroy(menu);
    return PLUGIN_CONTINUE;
}

public WybierzKlase_Handle(id, menu, item)
{
    client_cmd(id, "spk QTM_CodMod/select");
    
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }    
    
    new data[65], iName[64]
    new acces, callback
    menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)
    
    item = str_to_num(data);
    if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
        return PLUGIN_CONTINUE;
    
    nowa_klasa_gracza[id] = item;
    
    if(klasa_gracza[id])
        client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
    else
    {
        UstawNowaKlase(id);
        DajBronie(id);
        ZastosujAtrybuty(id);
    }
    return PLUGIN_CONTINUE;
}

 

Odpowiedz

  • +
  • -
Qes - zdjęcie Qes 25.10.2016

Pewnie wystarczy coś takiego


public WybierzKlase(id)
{
	new menu = menu_create("Wybierz klase:", "WybierzKlase_Frakcje");
	for(new i=1; i <= ilosc_klas; i++)
	{
		if(!equal(frakcja_klas[i],"") && !is_in_previous(frakcja_klas[i],i)){
			menu_additem(menu,frakcja_klas[i],frakcja_klas[i])
		}
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);
}

public WybierzKlase_Frakcje(id, menu, item)
{
	if(item == MENU_EXIT){
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	
	new data[65], iName[64]
	new acces, callback
	menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)
	
	new menu2 = menu_create("Wybierz klase:", "WybierzKlase_Handle");
	
	new klasa[50], dana_klasa, numer[10];
	for(new i=1; i <= ilosc_klas; i++)
	{
		if(JestAwansem(i))
			continue;
		WczytajDane(id, i);
		dana_klasa = i;
	  
		for(;;)
		{
			if(awansuje_do[dana_klasa] && poziom_gracza[id] >= awanse[ZnajdzAwans(dana_klasa, awansuje_do[dana_klasa])][2])
			{
				dana_klasa = awansuje_do[dana_klasa];
				WczytajDane(id, dana_klasa);
			}
			else break;
		}
		formatex(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[dana_klasa], poziom_gracza[id]);
		num_to_str(dana_klasa, numer, 9);
		menu_additem(menu, klasa, numer);
	}
	
	WczytajDane(id, klasa_gracza[id]);
	
	menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu2);
	
	client_cmd(id, "spk QTM_CodMod/select");
	
	menu_destroy(menu);
	return PLUGIN_CONTINUE;
}

public WybierzKlase_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}     
	
	new data[65], iName[64]
	new acces, callback
	menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)
	
	item = str_to_num(data);
	if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
		return PLUGIN_CONTINUE;
	
	nowa_klasa_gracza[id] = item;
	
	if(klasa_gracza[id])
		client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
	else
	{
		UstawNowaKlase(id);
		DajBronie(id);
		ZastosujAtrybuty(id);
	}
	return PLUGIN_CONTINUE;
}

Trudno to sprawdzić skoro nie podajesz .sma 

Odpowiedz

  • +
  • -
1stADXionC - zdjęcie 1stADXionC 25.10.2016



Pewnie wystarczy coś takiego


public WybierzKlase(id)
{
	new menu = menu_create("Wybierz klase:", "WybierzKlase_Frakcje");
	for(new i=1; i <= ilosc_klas; i++)
	{
		if(!equal(frakcja_klas[i],"") && !is_in_previous(frakcja_klas[i],i)){
			menu_additem(menu,frakcja_klas[i],frakcja_klas[i])
		}
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);
}

public WybierzKlase_Frakcje(id, menu, item)
{
	if(item == MENU_EXIT){
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	
	new data[65], iName[64]
	new acces, callback
	menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)
	
	new menu2 = menu_create("Wybierz klase:", "WybierzKlase_Handle");
	
	new klasa[50], dana_klasa, numer[10];
	for(new i=1; i <= ilosc_klas; i++)
	{
		if(JestAwansem(i))
			continue;
		WczytajDane(id, i);
		dana_klasa = i;
	  
		for(;;)
		{
			if(awansuje_do[dana_klasa] && poziom_gracza[id] >= awanse[ZnajdzAwans(dana_klasa, awansuje_do[dana_klasa])][2])
			{
				dana_klasa = awansuje_do[dana_klasa];
				WczytajDane(id, dana_klasa);
			}
			else break;
		}
		formatex(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[dana_klasa], poziom_gracza[id]);
		num_to_str(dana_klasa, numer, 9);
		menu_additem(menu, klasa, numer);
	}
	
	WczytajDane(id, klasa_gracza[id]);
	
	menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu2);
	
	client_cmd(id, "spk QTM_CodMod/select");
	
	menu_destroy(menu);
	return PLUGIN_CONTINUE;
}

public WybierzKlase_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}     
	
	new data[65], iName[64]
	new acces, callback
	menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)
	
	item = str_to_num(data);
	if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
		return PLUGIN_CONTINUE;
	
	nowa_klasa_gracza[id] = item;
	
	if(klasa_gracza[id])
		client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
	else
	{
		UstawNowaKlase(id);
		DajBronie(id);
		ZastosujAtrybuty(id);
	}
	return PLUGIN_CONTINUE;
}

Trudno to sprawdzić skoro nie podajesz .sma 

Łap:

Załączone pliki

Odpowiedz

  • +
  • -
Qes - zdjęcie Qes 28.10.2016

Tak jak pisałem, mogłeś sprawdzić to co podałem, bo ja nie posiadam jakieś biblioteki quests

Załączony plik  cod_silnik.sma   61,4 KB   32 Ilość pobrań

Odpowiedz