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

Problem z gangami by Cypis


  • Zamknięty Temat jest zamknięty
47 odpowiedzi w tym temacie

#1 Black004

    Wszechpomocny

  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 22.07.2019 08:28

Witam, problem dotyczny tego, że chce sam dodać do nich umiejętności, ale nie działa zapis tego ile dodałem mój kod wygląda tak:

public ShowSkillsMenu( id )
{	
	static szMenu[ 512 ], iLen, iKeys;
	
	if( !iKeys )
	{
		iKeys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_0;
	}
	
	iLen	=	formatex( szMenu, charsmax( szMenu ), "\yMenu Umiejetnosci^n^n" );
//	iLen	+=	formatex( szMenu[ iLen ], 511 - iLen, "\r1. \wSilownia [\rKoszt: \y500.0 szlugow\w] \y[Level:%i/5]^n", bonus_szlugow[user_gang[id]]);
	iLen	+=	formatex( szMenu[ iLen ], 511 - iLen, "\r2. \wBonus szlugow [\rKoszt: \y600.0 szlugow\w] \y[Level:%i/5]^n", bonus_szlugow[user_gang[id]] );
//	iLen	+=	formatex( szMenu[ iLen ], 511 - iLen, "\r3. \wObrazenia [\rKoszt: \y700.0 szlugow\w] \y[Level:%i/5]^n", bonus_szlugow[user_gang[id]] );
//	iLen	+=	formatex( szMenu[ iLen ], 511 - iLen, "\r4. \wObezwladnienie [\rKoszt: \y800.0 szlugow\w] \y[Level:%i/5]^n", bonus_szlugow[user_gang[id]] );
	
	iLen	+=	formatex( szMenu[ iLen ], 511 - iLen, "^n\r0. \wExit" );
	
	show_menu( id, iKeys, szMenu, -1, "Skills Menu" );
}

public SkillsMenu_Handler( id, iKey )
{

	new Float:szlugi_gracza = get_user_jbpack(id)
	
	switch( ( iKey + 1 ) % 10 )
	{
		case 0: 
		{
			MenuGang(id);
			return PLUGIN_HANDLED;
		}
		case 2:
		{
			if( bonus_szlugow[user_gang[id]] == 5 )
			{
				ColorChat( id, NORMAL, "^3[^4Jailbreak - Gang^3] ^1Twoj gang posiada maksymalny poziom tej umiejętnosci.");
				ShowSkillsMenu( id );
				return PLUGIN_HANDLED;
			}
			
			new Float:iRemaining = szlugi_gracza - 600;
			
			if( iRemaining < 0 )
			{
				ColorChat( id, NORMAL, "^3[^4Jailbreak - Gang^3] ^1Nie masz na to pieniedzy.");
				ShowSkillsMenu( id );
				return PLUGIN_HANDLED;
			}
			
			bonus_szlugow[user_gang[id]]++;
			ColorChat( id, NORMAL, "^3[^4JailBreak - Gang^3] ^1Ulepszyles swoj gang.");
			set_user_jbpack( id, iRemaining );
		}
		
	}
	
	ShowSkillsMenu( id );
	
	return PLUGIN_HANDLED;
}

Zapis tak:

public zaladuj_skills(id)
{
	new name[48]
	get_user_name(id,name,47)
	new vaultkey[64],vaultdata[128]
	formatex(vaultkey,63,"%s-skills",name)
	
	if(nvault_get(jb_skills,vaultkey,vaultdata,127)) {
		new parsowanie[5][16];
		parse(vaultdata, parsowanie[0], 15)
		
		bonus_szlugow[id]=str_to_num(parsowanie[0])
	log_amx("WCZYTANO %s", vaultdata)
		
	}
	
	return PLUGIN_CONTINUE
}  

public zapisz_skills(id) {	
	new name[48]
	get_user_name(id,name,47)
	new vaultkey[64],vaultdata[128]
	formatex(vaultkey,63,"%s-skills",name)
	formatex(vaultdata,127,"%d", bonus_szlugow[user_gang[id]])
	nvault_set(jb_skills,vaultkey,vaultdata)
	log_amx("ZAPISNO %s", vaultdata)
	
	return PLUGIN_CONTINUE
}

Problem w tym, że nie zapisuję ilości lvl w bonusie i tak samo nie załadowuję tego...

new parsowanie[5][16]

W tym później będą inne umiejętności więc na razie zostawiłem tak.

 

Dam kod czystych gangów od cypisa:

 

 


  • +
  • -
  • 0

#2 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 23.07.2019 09:08

@Ref


  • +
  • -
  • 0

#3 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 23.07.2019 09:41

Zauważyłem, że zdublowały mi się tematy, a tam jest dodany kod z gangami, a tu nie więc dodaję:

 

 

 

 

 

 

 

 

 

Załączony plik  jail_gangi (1).sma   23,56 KB  35 Ilość pobrań
  jail_gangi (1).amxx

 

 


Użytkownik Black004 edytował ten post 23.07.2019 09:42

  • +
  • -
  • 0

#4 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 25.07.2019 21:12

@Ref


  • +
  • -
  • 0

#5 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 26.07.2019 21:34

@Ref

 


  • +
  • -
  • 0

#6 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.07.2019 22:55

Pustka...

	log_amx("ZAPISNO %s", vaultdata)
        log_amx("WCZYTANO %s", vaultdata)
 

Tu dobrze pokazuje?

 

 

Dlaczego nie SQL, jak juz zapis jest zrobiony to modyfikacja jest dość prosta.


  • +
  • -
  • 0

#7 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 28.07.2019 09:23

Pustka...

	log_amx("ZAPISNO %s", vaultdata)
        log_amx("WCZYTANO %s", vaultdata)
 

Tu dobrze pokazuje?

 

 

Dlaczego nie SQL, jak juz zapis jest zrobiony to modyfikacja jest dość prosta.

 

 

Tak tu dobrze pokazuję, a sql dlatego nie, ponieważ nie wiem jak to zrobić, sql w ogóle nie potrafie, :/

 

Nie wiem też jak to by miało działać w sql i zapisywać bonus akurat do do gangu gracza.


Użytkownik Black004 edytował ten post 28.07.2019 09:25

  • +
  • -
  • 0

#8 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.07.2019 09:33

A sprawdzałeś  wartości tu:

bonus_szlugow[id]=str_to_num(parsowanie[0])

czym jest parsowanie[0] i co powstaje po konwersji na inta?

 

 

Podrzuć jeszcze funkcje w ktorych wywolujesz zapis/wczytanie


  • +
  • -
  • 0

#9 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 28.07.2019 10:04

public client_putinserver(id)
{	
	if(is_user_hltv(id))
	return;
	
	create_gang[id] = false;
	user_wczytalo[id] = false;
	user_gang[id] = 0;
	user_flags[id] = USER;
	user_bunty[id] = 0;
	user_zyczenia[id] = 0;
	bonus_szlugow[user_gang[id]] = 0

	get_user_name(id, nazwa_gracza[id], 34);
	replace_all(nazwa_gracza[id], 34, "'", "\'");
	replace_all(nazwa_gracza[id], 34, "`", "\`");
	
	new data[1];
	data[0] = id;
	
	SQL_FormatQuery("SELECT * FROM `GangUser` WHERE `Name` = '%s';", nazwa_gracza[id]);
	SQL_ThreadQuery(info, "PobierzGang", gszQuery, data, 1);
	zaladuj_skills(id)
}

public client_disconnect(id)
{	
	if(is_user_hltv(id))
	return;
	zapisz_skills(id)
	bonus_szlugow[user_gang[id]] = 0
}

Zmieniłem jeszcze zapis, dodałem żeby wyprintowało mi parse i też działa ulepszyłem gang na max (5 poziom) i normalnie wszędzie pisało 5, jeszcze naprawiłem jeden błąd z 

bonus_szlugow[id]=str_to_num(parsowanie[0])

Bo chyba powinno być raczej tak:

bonus_szlugow[user_gang[id]]=str_to_num(parsowanie[0])

Bo w zapisie mam tak: bonus_szlugow[user_gang[id]]

 

Cały zapis i ladowanie wygląda tak:

public zaladuj_skills(id)
{
	new name[48]
	get_user_name(id,name,47)
	new vaultkey[64],vaultdata[128]
	formatex(vaultkey,63,"%s-skills",name)
	
	if(nvault_get(jb_skills,vaultkey,vaultdata,127)) {
		new parsowanie[5][16];
		parse(vaultdata, parsowanie[0], 15)
		
		bonus_szlugow[user_gang[id]]=str_to_num(parsowanie[0])
		log_amx("WCZYTANO %s", vaultdata)
		log_amx("PARSOWANIE %s", parsowanie[0])
		
	}
	
	return PLUGIN_CONTINUE
}  

public zapisz_skills(id) {	
	new name[48]
	get_user_name(id,name,47)
	new vaultkey[64],vaultdata[128]
	formatex(vaultkey,63,"%s-skills",name)
	formatex(vaultdata,127,"%d", bonus_szlugow[user_gang[id]])
	nvault_set(jb_skills,vaultkey,vaultdata)
	log_amx("ZAPISNO %s", vaultdata)
	
	return PLUGIN_CONTINUE
}

  • +
  • -
  • 0

#10 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.07.2019 10:18

	SQL_ThreadQuery(info, "PobierzGang", gszQuery, data, 1);
	zaladuj_skills(id)

załaduj skills daj w handlerze od tego sqla, czyli w PobierzGang, tam bedziesz miał wczytanie user_gangu to po tym daj zeby ladowal.

Pytanie jeszcze jak dużą masz tablice bonus_szlugow bo jak bedzie duzo gangow to Ci bedzie wychodzic poza zakres, domyslam sie ze inne bonusy są robione na dynamicznych tablicach


  • +
  • -
  • 0

#11 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 28.07.2019 10:53

Działa, dzięki.

 

Chyba da się pobrać ilość gangów w bazie danych, nie wiem jak to się robi, ale jako tymczasowe rozwiązanie moge chyba zwiększać tą tablice.

 

Wygląda ona teraz tak:

new bonus_szlugow[33];

I żeby zwiększyć limit to musze tylko zwiększyć w taki sposób?:

new bonus_szlugow[65];

Użytkownik Black004 edytował ten post 28.07.2019 10:55

  • +
  • -
  • 0

#12 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.07.2019 11:01

Tak, ale to beznadziejny pomysł :/

W miare przyrostu gangów bedziesz musiał zmieniać Tymczasowo to jest ok, ale radze Ci popatrz na tego SQL'a, na początku też się go bałem, a jest prosty jak budowa cepa :D


Rivit (28.07.2019 11:01):
Dodam, że cep składa się z dzierżaka i bijaka.

  • +
  • -
  • 0

#13 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 28.07.2019 18:28

A znasz jakiś lepszy sposób, bo wymyśliłem takie coś:

#define LIMIT_GANGU 50
new bonus_szlugow[LIMIT_GANGU], obezwladnienie[LIMIT_GANGU];

Szybciej będę zwiększał limit, ale jak będzie dużo gangów to jednak pasowałoby jakiś automatyczny limit który się zwiększa jak jest nowy gang. Mógłbym zrobić zmienną, która by rosła przy każdym zalożeniu gangu i ją zapisywać w nvault  :giggle:


Użytkownik Black004 edytował ten post 28.07.2019 18:30

  • +
  • -
  • 0

#14 Robiin

    Godlike

  • Support Team

Reputacja: 1 106
Super Hero

  • Postów:2 049
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 28.07.2019 18:53

nvault_util_count zwróci Ci ilość itemów w vaulcie, czyli tym samym ilość gangów
  • +
  • -
  • 0

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


#15 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.07.2019 19:54

@aSiorr

Ale nie możesz stworzyć tablicy używając nvault_util_count, bo nie może to zostać wyliczone na etapie kompilacji.


  • +
  • -
  • 0

#16 Robiin

    Godlike

  • Support Team

Reputacja: 1 106
Super Hero

  • Postów:2 049
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 28.07.2019 20:16

Mając do tego dostęp nie będzie musiał robić zmiennej


  • +
  • -
  • 0

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


#17 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.07.2019 20:48

Nie rozumiem Cię :(

 

 

 

 

Chociaż tak się zastanawiam, coś nie tak jest. Wczytujesz bonus_szlugów za każdym razem jak gracz wchodzi na serwer, załóżmy że jest jakas wartosc bonus_szlugów, wchodzi gracz z gangu X i wczytuje elegancko z nvault. Coś tam gra na mapie i zwiększa bonus_szlugów. Wchodzi gracz numer 2 z gangu X i zostaje wczytany stary bonus szlugów :/


  • +
  • -
  • 0

#18 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 29.07.2019 07:05

Nie rozumiem Cię :(

 

 

 

 

Chociaż tak się zastanawiam, coś nie tak jest. Wczytujesz bonus_szlugów za każdym razem jak gracz wchodzi na serwer, załóżmy że jest jakaś wartosc bonus_szlugów, wchodzi gracz z gangu X i wczytuje elegancko z nvault. Coś tam gra na mapie i zwiększa bonus_szlugów. Wchodzi gracz numer 2 z gangu X i zostaje wczytany stary bonus szlugów :/

 

Każdy gang, ma swoje id które jest przypisane do danego gracza. Wszystko się zapisuję do gangu, nie gracza.

 

Ja tym bardziej nie rozumiem, jak mam skorzystać z nvault_util_count


Użytkownik Black004 edytował ten post 29.07.2019 07:10

  • +
  • -
  • 0

#19 Robiin

    Godlike

  • Support Team

Reputacja: 1 106
Super Hero

  • Postów:2 049
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 29.07.2019 08:25

Jeśli dobrze przeczytałem i nigdzie się nie pomyliłem (a taką mam nadzieję, boście mnie zaczęli stresować) to: tablice dynamiczne.

 

Tworzysz tablicę dynamiczną, pushujesz do niej dane przez ArrayPushCell pod indeksem == indeksowi gangu, w nowej mapie odczytujesz ponownie.

 

Potem przejrzę kod gangów i może znajdę coś lepszego.


  • +
  • -
  • 0

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


#20 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 29.07.2019 17:00

Jeśli dobrze przeczytałem i nigdzie się nie pomyliłem (a taką mam nadzieję, boście mnie zaczęli stresować) to: tablice dynamiczne.

 

Tworzysz tablicę dynamiczną, pushujesz do niej dane przez ArrayPushCell pod indeksem == indeksowi gangu, w nowej mapie odczytujesz ponownie.

 

Potem przejrzę kod gangów i może znajdę coś lepszego.

 

Jeszcze nigdy nie używałem Pushowania, tych wszystki Array, Trie itd. Nigdy jeszcze mi to nie było potrzebne, jak ma kod wyglądać jak to użyję ?


  • +
  • -
  • 0




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

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