Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Powiązanie callback Menu i pliku cfg.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
17 odpowiedzi w tym temacie

#1 METALOWIEC

    Zaawansowany

  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 18.10.2018 13:43

Chciałbym dodać nową funkcję do menu CSDM, mianowicie odblokowanie broni w ramach konkretnej rangi z pluginu cs_rank_system.

Wszystkie callbacki korzystają z: IsRestricted[weaptype] do restrykcji broni z danych w pliku cfg. Chciałbym tam zaimplementować zmienną która na tej samej zasadzie sprawdzałaby rangę gracza przy spawnie i blokowała elementy które są wyższych rang (ew. ominięcie rang za pomocą blokady od lvlu).

Czy ktoś mógłby wykonać opisaną modyfikację albo wskazać w jaki sposób powinienem to wykonać (tylko bez odesłania linkiem, a przykładem z opisem - aby nie robić kopiuj wklej, a rzeczywiście nauczyć)? 

Załączone pliki


  • +
  • -
  • 0

#2 Toldi

    Wszechwiedzący

  • Power User

Reputacja: 126
Zaawansowany

  • Postów:531
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 18.10.2018 17:01

Tworzysz natyw w rangach przesyłający index aktualnej rangi gracza.

public plugin_natives()
{
	register_native("get_user_rank", "_zwroc_id_rangi_gracza", 1);
}

public _zwroc_id_rangi_gracza(index) // index - id gracza
{
	return rank[index];
}

Następnie w csdm_equip dajesz sprawdzenie

if(get_user_rank(id)> X)
{
...kod
}

W pluginie od rang w linii 333 masz ustawianie odpowiedniego id rangi gracza.


  • +
  • -
  • 0

#3 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 18.10.2018 17:24

Ok, ta część jest jasna, pytanie tylko o zastosowanie get_user_rank w csdmie.

Plugin pobiera dane z pliku cfg więc i każdy element jest pobierany z pliku cfg. Gdyby było to normalne menu to tego ifa można wrzucić bezpośrednio w callback, tylko jak to zastosowac w tym wypadku?


  • +
  • -
  • 0

#4 Toldi

    Wszechwiedzący

  • Power User

Reputacja: 126
Zaawansowany

  • Postów:531
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 18.10.2018 18:05

Hmm... Nie wiem czy coś z tego wyjdzie ale próbuj. Na początku najważniejsze nad public plugin_init dodaj

native get_user_rank(index);

Dobrze było by też, aby plugin od rang był wyżej w plugins.ini od csdm_equip.

Następnie przechodzimy do linii 649 public c_Secondary(id, menu, item) // menu broni drugorzednej (pistolety) i podmieniamy ten public na

//Secondary Weapon Callback
public c_Secondary(id, menu, item)
{
	if( item < 0 ) return PLUGIN_CONTINUE
	
	new cmd[6], iName[64]
	new access, callback
	
	menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback)
	
	new dis = str_to_num(cmd)
	new team = get_user_team(id)
	new weaptype = get_weaponid(g_Secondary[dis])

	//Check to see if item is disabled
	if (g_DisabledSec[dis])
	{
		return ITEM_DISABLED
	}
	else if (!IsRestricted[weaptype] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
	{
		return ITEM_ENABLED
	}
	else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
		|| (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)get_user_rank(id) > X)
	{
		return ITEM_ENABLED
	}
	else
	{
		return ITEM_DISABLED
	}	
	return PLUGIN_HANDLED
}

No i analogicznie zrob w lini 684. Przyjrzyj się a zauważysz że dopisuje tylko do ifa właśnie warunek czy id rangi gracza jest wieksz od X.

Tak jak mówię może być źle bo trochę mi ciężko było się w tym kodzie odnaleźć. 


  • +
  • -
  • 0

#5 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 18.10.2018 18:27

Taki zapis powoduje włączenie wszystkich elementów menu od konkretnej rangi (konieczne jest to aby każdy z elementów można było przydzielić do rangi osobno).

(w tym miejscu mogę pleść głupoty, ze względu na brak pojęć związanych z programowaniem): 

else if (!IsRestricted[weaptype] && get_user_rank(id) > X)

Gdyby utworzyć tablicę do rang i postawić za X zmienną odpowiedzialną za zczytanie rangi to raczej by się udało. Pozostaje tylko kwestia działania pliku .cfg i połączenia tego ze zmienną tak aby można byłą ją edytować z poziomu pliku.

Do cfg odwołanie idzie z:

public cfgPrimary(readAction, line[], section[])
{

Sama budowa menu i pobranie wartości jest realizowane przez:

//Copy weapon into array
format(g_Primary[g_iNumPrim], 17, "weapon_%s", wep)
g_DisabledPrim[g_iNumPrim] = disabled ? false : true


format(cmd, 5, "%d", g_iNumPrim)
g_iNumPrim++


if (disabled > 0)
g_iNumUsedPrim++




//TODO: Add menu_destroy_items to remake menu on cfg reload
menu_additem(g_PrimMenuID, display, cmd, 0, g_cPrimary)
} else if (readAction == CFG_RELOAD) {
g_PrimMenuID = menu_create(g_PrimMenu, "m_PrimHandler", 0)
g_iNumPrim = 0
g_iNumUsedPrim = 0
} else if (readAction == CFG_DONE) {

Ale też dość ciężko mi się z tym połapać :/

 


  • +
  • -
  • 0

#6 Toldi

    Wszechwiedzący

  • Power User

Reputacja: 126
Zaawansowany

  • Postów:531
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 18.10.2018 19:31

Spróbuj tego. Może, może...

//Secondary Weapon Callback
public c_Secondary(id, menu, item)
{
	if( item < 0 ) return PLUGIN_CONTINUE
	
	new cmd[6], iName[64]
	new access, callback
	
	menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback)
	
	new dis = str_to_num(cmd)
	new team = get_user_team(id)
	new weaptype = get_weaponid(g_Secondary[dis])

	//Check to see if item is disabled
	if (g_DisabledSec[dis])
	{
		return ITEM_DISABLED
	}
	
	switch(cs_get_weapon_id(weaptype))
	{
		case CSW_USP:
		{
			if (!IsRestricted[CSW_USP] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_CT)get_user_rank(id) > X)
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}	
		case CSW_GLOCK18:
		{			
			if (!IsRestricted[CSW_GLOCK18] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_CT)get_user_rank(id) > X)
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		case CSW_DEAGLE:
		{
			//to samo co wyzej z kazda bronia CSW_BRON jaka jest dostepna w menu secondary
			
		}
		
		default: return ITEM_DISABLED;
	}
	
	
	/*else if (!IsRestricted[weaptype] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
	{
		return ITEM_ENABLED
	}
	else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
		|| (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)get_user_rank(id) > X)
	{
		return ITEM_ENABLED
	}
	else
	{
		return ITEM_DISABLED
	}*/	
	return PLUGIN_HANDLED
}

  • +
  • -
  • 0

#7 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 18.10.2018 19:50

Niestety nie kompiluje, 

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team


Error: Invalid subscript (not an array or too many subscripts): "get_user_rank" on line 682
Error: Expected token: "}", but found "return" on line 683
Error: Only a single statement (or expression) can follow each "case" on line 685
Warning: Loose indentation on line 690
Error: Invalid statement; not in switch on line 690
Warning: Expression has no effect on line 690
Error: Expected token: ";", but found ":" on line 690
Error: Invalid expression, assumed zero on line 690
Error: Too many error messages on one line on line 690


Compilation aborted.
7 Errors.
Could not locate output file C:\Users\Mateusz\Desktop\sprites\csdm_equip\csdm_equip.amx (compile failed).
 

  • +
  • -
  • 0

#8 aSiorr

    Idc, deal with it

  • Support Team

Reputacja: 479
Wszechobecny

  • Postów:1 388
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 18.10.2018 20:05


Dobrze było by też, aby plugin od rang był wyżej w plugins.ini od csdm_equip.

 

 

Natyw pluginu A wysyła i odbiera natywy z pluginu B i na odwrót. Kolejność nie jest ważna.

 

@METALOWIEC jeśli dobrze rozumiem, to masz problem z odczytywaniem wartości (poziomów?) z configa? I'm a simple man 

 


  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#9 Toldi

    Wszechwiedzący

  • Power User

Reputacja: 126
Zaawansowany

  • Postów:531
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 18.10.2018 20:10

Spróbuj teraz. Jeżeli nadal nie będziesz mógł skompilować podaj mi bibliotekę csdm bo tą co mam z neta coś nie gra.

@edit: Dodałeś do kodu np. nad plugin_init to?

native get_user_rank(index);
//Secondary Weapon Callback
public c_Secondary(id, menu, item)
{
	if( item < 0 ) return PLUGIN_CONTINUE
	
	new cmd[6], iName[64]
	new access, callback
	
	menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback)
	
	new dis = str_to_num(cmd)
	new team = get_user_team(id)
	new weaptype = get_weaponid(g_Secondary[dis])

	//Check to see if item is disabled
	if (g_DisabledSec[dis])
	{
		return ITEM_DISABLED
	}
	
	cs_get_weapon_id(weaptype);
	switch(cs_get_weapon_id(weaptype))
	{
		case CSW_USP:
		{
			if (!IsRestricted[CSW_USP] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_CT) && (get_user_rank(id) > X))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}	
		case CSW_GLOCK18:
		{			
			if (!IsRestricted[CSW_GLOCK18] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_CT) && (get_user_rank(id) > X))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		case CSW_DEAGLE:
		{
			//to samo co wyzej z kazda bronia CSW_BRON jaka jest dostepna w menu secondary
			
		}
		
		default: return ITEM_DISABLED;
	}
	
	
	/*else if (!IsRestricted[weaptype] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
	{
		return ITEM_ENABLED
	}
	else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
		|| (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)get_user_rank(id) > X)
	{
		return ITEM_ENABLED
	}
	else
	{
		return ITEM_DISABLED
	}*/	
	return PLUGIN_HANDLED
}

  • +
  • -
  • 1

#10 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 18.10.2018 20:11

Problem polega na tym że chcę połączyć działanie tych 2 pluginów, tak aby można było zarządzać bronią i ograniczeniem dla rangi, najlepiej z poziomu tego cfg (chyba to najprostsza droga). Niestety jak widać nie wychodzi dość dobrze :/ w ostateczności będę musiał chyba zrezygnować z csdm_equip i zrobić całe menu w sma od rang :/ utrudni to trochę trzymanie balansu w grze


  • +
  • -
  • 0

#11 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 18.10.2018 20:38

Ale żeby skompilować musiałem wstawić jeszcz każdą rangę jako
new RANKS_Noobest ,

w csdm_equip.

Dzięki, wielki :D Teraz tylko do przerobienia cały plugin, kompilacja i dalsze testy ^ ^.

 

  • +
  • -
  • 0

#12 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 18.10.2018 21:21

Pozostał 1 bug:

L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 17 out of range
L 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!
L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 16 out of range
L 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!
L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 11 out of range
L 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!
L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 1 out of range
L 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!
L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
 

  • +
  • -
  • 0

#13 Toldi

    Wszechwiedzący

  • Power User

Reputacja: 126
Zaawansowany

  • Postów:531
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 19.10.2018 12:25

 

Pozostał 1 bug:

L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 17 out of range
L 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!
L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 16 out of range
L 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!
L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 11 out of range
L 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!
L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 1 out of range
L 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!
L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

 

Dopisz debug tj. csdm_equip.amxx debug. Dodatkowo w kodzie, który Ci podałem tuż na switch(cs_get_weapon_id(weaptype)) usuń lub zakomentuj (//) cs_get_weapon_id(weaptype); bo zapomniałem usunąć a jest już to w switchu.

 

@edit: Czy kod, który ci podałem blokuję opcję w menu tak jak chcesz (od danej rangi)??


  • +
  • -
  • 0

#14 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 19.10.2018 12:41

L 10/19/2018 - 13:39:23: [AMXX] Displaying debug trace (plugin "csdm_equip.amxx")
L 10/19/2018 - 13:39:23: [AMXX] Run time error 10: native error (native "cs_get_weapon_id")
L 10/19/2018 - 13:39:23: [AMXX]    [0] csdm_equip.sma::c_Primary (line 804)
L 10/19/2018 - 13:39:23: [CSTRIKE] Non-player entity 20 out of range
L 10/19/2018 - 13:39:23: [AMXX] Displaying debug trace (plugin "csdm_equip.amxx")
L 10/19/2018 - 13:39:23: [AMXX] Run time error 10: native error (native "cs_get_weapon_id")
L 10/19/2018 - 13:39:23: [AMXX]    [0] csdm_equip.sma::c_Primary (line 804)
L 10/19/2018 - 13:39:23: [CSTRIKE] Non-player entity 3 out of range
L 10/19/2018 - 13:39:23: [AMXX] Displaying debug trace (plugin "csdm_equip.amxx")
L 10/19/2018 - 13:39:23: [AMXX] Run time error 10: native error (native "cs_get_weapon_id")
L 10/19/2018 - 13:39:23: [AMXX]    [0] csdm_equip.sma::c_Primary (line 804)
L 10/19/2018 - 13:39:23: [CSTRIKE] Non-player entity 14 out of range
L 10/19/2018 - 13:39:23: [AMXX] Displaying debug trace (plugin "csdm_equip.amxx")
L 10/19/2018 - 13:39:23: [AMXX] Run time error 10: native error (native "cs_get_weapon_id")
L 10/19/2018 - 13:39:23: [AMXX]    [0] csdm_equip.sma::c_Primary (line 804)

Z blokowaniem jest pewien problem, mianowicie obecnie nie blokuje, ale w pierwszej wersji (niestety nie zapisałem kodu, pomimo ustawień blokowało tylko ostatni item na danej stronie menu).

@edit blokowanie było wtedy kiedy nie dodałem case do danego itemu

 

Użytkownik METALOWIEC edytował ten post 19.10.2018 12:46

  • +
  • -
  • 0

#15 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 19.10.2018 13:18

	if (g_DisabledSec[dis])
	{
		return ITEM_DISABLED
	}
	
	switch(cs_get_weapon_id(weaptype))
	{
	
		case CSW_GLOCK18:
		{			
			if (!IsRestricted[CSW_GLOCK18] && get_user_rank(id) >= 14)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_T) && (get_user_rank(id) >= 0) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_CT) && (get_user_rank(id) >= 0))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		case CSW_USP:
		{
			if (!IsRestricted[CSW_USP] && get_user_rank(id) >= 2 )// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_T) && (get_user_rank(id) >= 2 ) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_CT) && (get_user_rank(id) >= 2 ))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		case CSW_FIVESEVEN:
		{
			if (!IsRestricted[CSW_FIVESEVEN] && get_user_rank(id) >= RANKS_Normal )// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_FIVESEVEN] < RestrictWps[CSW_FIVESEVEN]) && (team == _TEAM_T) && (get_user_rank(id) >= RANKS_Normal) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_FIVESEVEN] < RestrictWps[CSW_FIVESEVEN]) && (team == _TEAM_CT) && (get_user_rank(id) >= RANKS_Normal))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		case CSW_P228:
		{
			if (!IsRestricted[CSW_P228] && get_user_rank(id) > RANKS_SuperExpert)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_P228] < RestrictWps[CSW_P228]) && (team == _TEAM_T) && (get_user_rank(id) >= RANKS_SuperExpert) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_P228] < RestrictWps[CSW_P228]) && (team == _TEAM_CT) && (get_user_rank(id) >= RANKS_SuperExpert))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		case CSW_DEAGLE:
		{
			if (!IsRestricted[CSW_DEAGLE] && get_user_rank(id) >= 11)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_DEAGLE] < RestrictWps[CSW_DEAGLE]) && (team == _TEAM_T) && (get_user_rank(id) >= 11) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_DEAGLE] < RestrictWps[CSW_DEAGLE]) && (team == _TEAM_CT) && (get_user_rank(id) >= 11))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		default: return ITEM_DISABLED;
	}
	
	
	
	/*else if (!IsRestricted[weaptype] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
	{
		return ITEM_ENABLED
	}
	else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
		|| (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)get_user_rank(id) > X)
	{
		return ITEM_ENABLED
	}
	else
	{
		return ITEM_DISABLED
	}*/	
	return PLUGIN_HANDLED
}

//Primary Weapon Callback
public c_Primary(id, menu, item)
{

	if (item < 0)
		return PLUGIN_CONTINUE
	
	// Get item info
	new cmd[6], iName[64]
	new access, callback
	
	menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback)
	
	new dis = str_to_num(cmd)
	new team = get_user_team(id)
	new weaptype = get_weaponid(g_Primary[dis])

	//Check to see if item is disabled
	if (g_DisabledPrim[dis])
	{
		return ITEM_DISABLED
	}
	
	switch(cs_get_weapon_id(weaptype))
	{
	
		case CSW_TMP:
		{			
			if (!IsRestricted[CSW_TMP] && get_user_rank(id) >= 11)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_TMP] < RestrictWps[CSW_TMP]) && (team == _TEAM_T) && (get_user_rank(id) >= 0) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_TMP] < RestrictWps[CSW_TMP]) && (team == _TEAM_CT) && (get_user_rank(id) >= 0))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		case CSW_M3:
		{
			if (!IsRestricted[CSW_M3] && get_user_rank(id) >= 2 )// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_M3] < RestrictWps[CSW_M3]) && (team == _TEAM_T) && (get_user_rank(id) >= 2 ) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_M3] < RestrictWps[CSW_M3]) && (team == _TEAM_CT) && (get_user_rank(id) >= 2 ))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		case CSW_FIVESEVEN:
		{
			if (!IsRestricted[CSW_FIVESEVEN] && get_user_rank(id) >= 5 )// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_FIVESEVEN] < RestrictWps[CSW_FIVESEVEN]) && (team == _TEAM_T) && (get_user_rank(id) >= 5) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_FIVESEVEN] < RestrictWps[CSW_FIVESEVEN]) && (team == _TEAM_CT) && (get_user_rank(id) >= 5))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		case CSW_P228:
		{
			if (!IsRestricted[CSW_P228] && get_user_rank(id) >= 8)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_P228] < RestrictWps[CSW_P228]) && (team == _TEAM_T) && (get_user_rank(id) >= 8) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_P228] < RestrictWps[CSW_P228]) && (team == _TEAM_CT) && (get_user_rank(id) >= 8))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		case CSW_DEAGLE:
		{
			if (!IsRestricted[CSW_DEAGLE] && get_user_rank(id) >= 11)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy 
			{
				return ITEM_ENABLED
			}
			else if ((UsedWpsT[CSW_DEAGLE] < RestrictWps[CSW_DEAGLE]) && (team == _TEAM_T) && (get_user_rank(id) >= 11) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje)
				|| (UsedWpsCT[CSW_DEAGLE] < RestrictWps[CSW_DEAGLE]) && (team == _TEAM_CT) && (get_user_rank(id) >= 11))
			{
				return ITEM_ENABLED
			}
			else
			{
				return ITEM_DISABLED
			}
		}
		
		default: return ITEM_DISABLED;
	}
	
	/*else if (!IsRestricted[weaptype])
	{
		return ITEM_ENABLED
	}
	else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) 
					|| (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT))
	{
		return ITEM_ENABLED
	}
	else
	{
		return ITEM_DISABLED
	}*/	
	return PLUGIN_HANDLED
}

Przy takim kodzie roboczym zablokowany jest dgl, p90, sg522 i ak. Nie mam pojęcia co tu się wyrabia


  • +
  • -
  • 0

#16 Toldi

    Wszechwiedzący

  • Power User

Reputacja: 126
Zaawansowany

  • Postów:531
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 19.10.2018 19:31

Przecież w PRIMARY nie ma pistoletów (slot 2) tylko wszystko to co jest w slocie 1 w takim razie czemu wpisałeś tam fiveseven, dgl, p228? AK blokuję dlatego (chyba) że nie podałeś go w case.

 default: return ITEM_DISABLED;

 blokuje wszystkie opcję w menu, które w nim są a nie są podane wyżej w case czyli między innymi AK. Może podaj .sma + .inc csdm


  • +
  • -
  • 0

#17 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 19.10.2018 19:38

Przecież w PRIMARY nie ma pistoletów (slot 2) tylko wszystko to co jest w slocie 1 w takim razie czemu wpisałeś tam fiveseven, dgl, p228? AK blokuję dlatego (chyba) że nie podałeś go w case.

 default: return ITEM_DISABLED;

 blokuje wszystkie opcję w menu, które w nim są a nie są podane wyżej w case czyli między innymi AK. Może podaj .sma + .inc csdm

to tylko kod roboczy bez uzupełnienia wszystkich opcji, w przypadku użycia case i braku broni w menu nie powinno mieć to żadnego efektu na skrypt (po prostu nie da sie wywołać danego case i powinno korzystać właśnie z default: - ale tak się nie dzieje, bardziej martwi mnie kwesta że np. glock w secondary pomimo nadania limitu nie został zablokowany. 

Główny + inc w złączniku.

@edit

Pozostałych primary też nie ma w case a jednak nie są blokowane w żaden sposób.

Załączone pliki


Użytkownik METALOWIEC edytował ten post 19.10.2018 19:40

  • +
  • -
  • 0

#18 METALOWIEC

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:138
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 19.10.2018 22:46

@update, niestety logi dalej wywalają ten sam błąd, ale po zmianie silnika na rehlds blokowanie wygląda na poprawnie, dam pełne info jak zrobie całe menu


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych