Skocz do zawartości

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

Sprawdzanie czy gracz ma flage/zestaw flag


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

#1 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 07.11.2008 21:42

Oto mala funkcja do sprawdzania czy uzytkownik ma okreslona flage (takie oznaczenia jak w users.ini tj. "abcd...")

public has_flags(id,string[])
{
	new ret=1
	new byte
	
	new len = strlen(string)
	new p_flag = get_user_flags(id)
	
	for(new i=0;i<=len;i++)
	{
		if(string[i]>='a' && string[i]<='z') byte = (1<<(string[i]-'a'))
		else if(string[i]>='A' && string[i]<='Z') byte = (1<<(string[i]-'A'))
		else if(string[i]==',' && ret==1) return 1
		else if(string[i]==',') ret=1
		if(byte!=0 && !(p_flag & byte)) ret=0

		byte=0
	}
	
	return ret
}

Przykladowe uzycie - nie praktyczne ale pokazuje o co chodzi :)

#include <amxmodx>
#include <amxmisc>


public plugin_init() {
	register_clcmd("say flag","flag") 
	register_cvar("amx_plug_flags","aeio");
}

public flag(id)
{
	new maxs[] = "yabcdefghijklmnoprstuvwx"
	if(has_flags(id,maxs)) client_print(id,print_chat,"FLCL")
	else if(has_flags(id,"abcdex")) client_print(id,print_chat,"admin-x")
	else if(has_flags(id,"abcde")) client_print(id,print_chat,"admin")
	else if(has_flags(id,"bcde")) client_print(id,print_chat,"low admin")
	else if(has_flags(id,"bc,de,aef")) client_print(id,print_chat,"conajmniej 1 z 3")
	
	new cvar[16]
	get_cvar_string("amx_plug_flags",cvar,15)
	if(has_flags(id, cvar)) client_print(id,print_chat,"Komenda dziala")
}

public has_flags(id,string[])
{
	new ret=1
	new byte
	
	new len = strlen(string)
	new p_flag = get_user_flags(id)
	
	for(new i=0;i<=len;i++)
	{
		if(string[i]>='a' && string[i]<='z') byte = (1<<(string[i]-'a'))
		else if(string[i]>='A' && string[i]<='Z') byte = (1<<(string[i]-'A'))
		else if(string[i]==',' && ret==1) return 1
		else if(string[i]==',') ret=1
		if(byte!=0 && !(p_flag & byte)) ret=0

		byte=0
	}
	
	return ret
}

Funkcje polecam tym, co chca dac swojemu plugowi mozliwosc nastawiania na jaka/jakie flagi ma dzialac.

Przyklady:
Jak ma dzialac na - a lub b lub c - to dajemy has_flag(id,"a,b,c")
Jak ma dzialac tylko gdy user ma flage - a i b i c - to dajemy has_flag(id,"abc")
Jak ma dzialac w przypadkach - a i b lub a i c lub b i c - to dajemy has_flag(id,"ab,ac,bc")
  • +
  • -
  • 0

#2 ciemny

    Pomocny

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:47
  • Lokalizacja:Wronki, Polska
Offline

Napisano 26.08.2009 15:20

Ta funkcja sprawdza flagi z pliku users.ini, tak?
  • +
  • -
  • 1

#3 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 26.08.2009 15:52

pośrednio, ale tak
  • +
  • -
  • 0




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

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