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

Sklepik - problem z set_user_flags


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

#1 ViruSPL

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:40
  • Lokalizacja:Bydgoszcz
Offline

Napisano 17.07.2014 23:37

Witam, mam problem z funkcją set_user_flag w sklepiku.

Chcę by za określoną liczbę monet dało się kupić vipa/klase cokolwiek.

Mniej więcej się to udalo. Klasa na codmodzie się wybiera, vip się dodaje. Ale.

 

Kupuję klasę X wybieram ją, na chwilę zmienię na klasę Y (już nie vip), po czym nie mogę już wybrać klasy X ponieważ jakby plugin resetuje flagi po.

 

Opisze to ineczej

 

 

        case 0:
        {
            if(kasa >= 500)
            {
                set_user_flags(id,ADMIN_LEVEL_H);
                cod_set_user_coins(id, kasa-500);
                client_print(id, print_chat, "[COD:MW4] Kupiles ElitSniper na okres mapy!");
            }
            if(kasa < 500)
                client_print(id, print_chat, "[COD:MW4] Masz za malo kasy!");
        }

 

Funkcja nadaje flagę T, wybieram sobie elit sniper'a po czym chcę komandosa standardowego lecz po wyborze komandosa nie mogę już wybrać elit sniper'a znów.

 

W przypadku kupna autobh działa nawet po relogu - chcę uzyskać ten sam effekt.

 

Może jeszcze jakiś kod dopisać prócz set_user_flags? Z góry dzięki za sugestie ;P


  • +
  • -
  • 0

#2 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 18.07.2014 07:24

Dodaj zmienna z rozmiarem tablicy 33 i sprawdzaj czy gracz eczesniej klasy nie kupil
  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#3 ViruSPL

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:40
  • Lokalizacja:Bydgoszcz
Offline

Napisano 18.07.2014 11:28

new bool:klasa1[33];

itd..

        case 0:
        {
            if(kasa >= 500)
            {
                klasa1[id] = true
                cod_set_user_coins(id, kasa-500);
                client_print(id, print_chat, "[COD:MW4] Kupiles ElitSniper na okres mapy!");
            }
            if(kasa < 500)
                client_print(id, print_chat, "[COD:MW4] Masz za malo kasy!");
        }
public klasa1{
if(klasa1[id] == true){
set_user_flags(id,ADMIN_LEVEL_H);}
}

Coś takiego pod każdą klasę masz na myśli? Btw jestem totalny świeżak samouk xDD 


  • +
  • -
  • 0

#4 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 18.07.2014 12:06

Aaa, dopiero teraz zrozumiałem, że ma to działać też w kolejnych mapach ^^ W takim razie musisz właśnie robić te zmienne i zapisywać do pliku, kto kupił a kto nie. Potem przy każdym połączeniu gracza sprawdzasz, czy przypisana zmienna na ten nick/sid istnieje, jeżeli tak to używasz funkcji set user flags
  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#5 ViruSPL

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:40
  • Lokalizacja:Bydgoszcz
Offline

Napisano 18.07.2014 17:43

Na początku

new bool:klasa1[33];
new bool:klasa2[33];
new bool:klasa3[33];
new bool:klasa4[33];
new bool:klasa5[33];

Case:

		case 0:
		{
			if(kasa >= 500)
			{
				klasa1[id] = true
				cod_set_user_coins(id, kasa-500);
				client_print(id, print_chat, "[COD:MW4] Kupiles ElitSniper na okres mapy!");
			}
			if(kasa < 500)
				client_print(id, print_chat, "[COD:MW4] Masz za malo kasy!");
		}
		case 1:
		{
			if(kasa >= 500)
			{
				klasa2[id] = true
				cod_set_user_coins(id, kasa-500);
				client_print(id, print_chat, "[COD:MW4] Kupiles Egzekutora na okres jednej mapy!");
			}
			if(kasa < 500)
				client_print(id, print_chat, "[COD:MW4] Masz za malo kasy!");
		}
		case 2:
		{
			if(kasa >= 500)
			{
				klasa3[id] = true
				cod_set_user_coins(id, kasa-500);
				client_print(id, print_chat, "[COD:MW4] Kupiles Zboczenca na okres jednej mapy!");
			}
			if(kasa < 500)
				client_print(id, print_chat, "[COD:MW4] Masz za malo kasy!");
		}
		case 3:
		{
			if(kasa >= 500)
			{
				klasa4[id] = true
				cod_set_user_coins(id, kasa-500);
				client_print(id, print_chat, "[COD:MW4] Kupiles Atoma na okres jednej mapy!");
			}
			if(kasa < 500)
				client_print(id, print_chat, "[COD:MW4] Masz za malo kasy!");
		}
		case 4:
		{
			if(kasa >= 500)
			{
				klasa5[id] = true
				cod_set_user_coins(id, kasa-500);
				client_print(id, print_chat, "[COD:MW4] Kupiles M3ntosa na okres jednej mapy!");
			}
			if(kasa < 500)
				client_print(id, print_chat, "[COD:MW4] Masz za malo kasy!");
		}
	}
	return PLUGIN_CONTINUE;
}

Po czym

public klasa11(id){
if(klasa1[id] == true){
set_user_flags(id,ADMIN_LEVEL_H);}
}
public klasa22(id){
if(klasa2[id] == true){
set_user_flags(id,ADMIN_LEVEL_D);}
}
public klasa33(id){
if(klasa3[id] == true){
set_user_flags(id,ADMIN_LEVEL_E);}
}
public klasa44(id){
if(klasa4[id] == true){
set_user_flags(id,ADMIN_LEVEL_F);}
}
public klasa55(id){
if(klasa5[id] == true){
set_user_flags(id,ADMIN_LEVEL_G);}
}

Tak nie działa. Lecz chyba muszę jeszcze coś w plugins init dodać, ale co?

Nie chcę na następną mapę tylko na całą aktualną mapę - nawet po relogu.

 

AutoBH mam w public client_PreThink(id)

 

Może te wszystkie

if(klasa5[id] == true){
set_user_flags(id,ADMIN_LEVEL_G);}
}

itd dodać tam?


  • +
  • -
  • 0

#6 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 20.07.2014 09:56

Szurnij natywa I wartosc zmiennej przez niego przekazuj
  • +
  • -
  • 0

#7 ViruSPL

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:40
  • Lokalizacja:Bydgoszcz
Offline

Napisano 20.07.2014 11:28

Serio? Wszystko rozumiem! :D Gdybym wiedział o czym mówisz pewnie zrobił bym to sam xDD

 

Jaśniej proszę ;P


  • +
  • -
  • 0

#8 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 20.07.2014 11:58

http://amxx.pl/topic...e-2#entry565907

Nie mam warunkow aby zarzucic kod*em bo z telefonu pisze, ale musisz zrobic natywa, a w publicu, ktory sie do niego odwoluje zwrocic wartosc zmiennej przez return. Jak nikt mnie do jutra nie uprzedzi to nabazgram cos
  • +
  • -
  • 0

#9 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 24.07.2014 17:36

Coś tam naskrobałem

Dodaje premke na jedną mapę!

 

Musisz kompilować lokalnie, natyw wrzucasz do include

 

Gdybyś chciał usługę dodać na zawsze. mógłbyś kombinować z zapisem nvault, tablicami dynamicznymi. Jednak najlepszym rozwiązaniem byłoby dodawanie usługi do pliku users.ini lub utworzenie osobnego pliku. Jeśli nie będziesz czegoś wiedział, napisz. Oczywiście podałem tylko przykład, musisz to już zrobić pod swój sklepik i klasę

Załączone pliki

  • Załączony plik  Sklep.rar   1,33 KB  22 Ilość pobrań

  • +
  • -
  • 0

#10 ViruSPL

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:40
  • Lokalizacja:Bydgoszcz
Offline

Napisano 26.07.2014 17:53

Dobra jednej rzeczy nie ogarniam. Jak tu przpisać zwykłą flagę? : P dajmy Admin_level_H

 

Czy to musi wyglądac tak?

 

    register_native("admin_level_h", "KlasaElitsniper", 1);

 

czy to w inny sposób zarządzić?

 

W takim razie po co by tworzyć nowy natyw?


  • +
  • -
  • 0

#11 Albertd

    Zaawansowany

  • Użytkownik

Reputacja: 34
Życzliwy

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

Napisano 26.07.2014 20:44

Po pierwsze jeżeli chcesz komuś dodać flagi to robi się to tak:

new Flagi = read_flags( "h" );
set_user_flags( index, Flagi )
Wielkie Jol 

Haha xD Sorka, w ogóle nie wczytałem się w temat, ale tak masz racje nie trzeba tak dodawać, można robić tak jak zrobili to wyżej.


Użytkownik Albertd edytował ten post 26.07.2014 20:57

  • +
  • -
  • 0

#12 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 26.07.2014 20:45

Wcale nie, nie trzeba używać tego read_flags, by komuś dać flagr
  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#13 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 26.07.2014 20:45

To nie jest na flage tylko na zmienną ;)
  • +
  • -
  • 0




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

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