←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
[ROZWIĄZANE] Zapis questów na klasę


Najlepsza odpowiedź BlackPerfum 12.05.2014 18:31

Wysłałem ci juz działającą wersję w której wykonałem rzeczy tylko z moich postów i działa. Następnym razem czytaj uważniej. A co do nazwy klasy to wcale nie jest taki głupi pomysł bo jak zmienisz kolejnośc wczytywania klas lub dodasz nową to zburzysz dotychczasowy system indexowania xD

Przejdź do postu
Zablokowany

  • +
  • -
GoldenKill - zdjęcie GoldenKill 12.05.2014

Witam

 

 

Chciałem zrobić zapis questów na daną klasę, aby wszystkie nie miały tego questa tylko ta na której wybraliśmy, ale mam problem bo mi nie chce działać. Załączam kod zapisu i z góry dziękuje za pomoc

public zapisz_questa(id,akt,quest){
        new klasa[64];
	new name[64];
	get_user_name(id,name,63)
        cod_get_class_name(cod_get_user_class(id), klasa, charsmax(klasa))
	strtolower(name)
	new key[100];
	formatex(key,99,"questy-%i-%s-%i-%i",klasa[id],name,akt,quest);
	nvault_set(vault_questy,key,"1");
}

public zapisz_aktualny_quest(id){
        new klasa[64];
	new name[64];
	get_user_name(id,name,63)
        cod_get_class_name(cod_get_user_class(id), klasa, charsmax(klasa))
	strtolower(name)
	new key[100];
	format(key,99,"questy-%d-%s",klasa[id],name);
	new data[32]
	formatex(data,charsmax(data),"#%i#%d#%d#%i",quest_gracza[id][Akt],quest_gracza[id][Quest],quest_postep[id],quest_gracza[id][Posiada]);
	nvault_set(vault_questy2,key,data);
}

public wczytaj_aktualny_quest(id){
        new klasa[64];
	new name[64];
	get_user_name(id,name,63)
        cod_get_class_name(cod_get_user_class(id), klasa, charsmax(klasa))
	strtolower(name)
	new key[100];
	format(key,99,"questy-%d-%s",klasa[id],name);
	new data[32];
	nvault_get(vault_questy2,key,data,31);
	replace_all(data,31,"#"," ");
	new questt[32],ile[32],akt[10],posiada[10]
	parse(data,akt,9,questt,31,ile,31,posiada,9)
	quest_postep[id] = str_to_num(ile)
	quest_gracza[id][Quest] = str_to_num(questt)
	quest_gracza[id][Akt] = str_to_num(akt)
	quest_gracza[id][Posiada] = str_to_num(posiada)
}

public SprawdzQuesta(id,akt,quest){
        new klasa[64];
	new name[64];
	get_user_name(id,name,63)
        cod_get_class_name(cod_get_user_class(id), klasa, charsmax(klasa))
	strtolower(name)
	new key[64];
	format(key,63,"questy-%i-%s-%i-%i",klasa[id],name,akt,quest);
	new data[64];
	nvault_get(vault_questy,key,data,63);
	return str_to_num(data);
}
Odpowiedz

OpUr off - zdjęcie OpUr off 12.05.2014

Szczerze to nie chce mi się tego rozkminiać ale na pierwszy rzut oka wiem ze to nie działa. Trochę przekombinowałeś moim zdaniem.

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 12.05.2014

To dlatego piszesz do mnie na skype. Hehe. Proszę:

 

Szczerze to nie chce mi się tego rozkminiać ale na pierwszy rzut oka wiem ze to nie działa. Trochę przekombinowałeś moim zdaniem.

Ależ to działa tylko chopaczek źle bawi się nazwą klasy. Tak w ogóle to na co ci ona??

 

Łap

public zapisz_questa(id,akt,quest){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[100];
	formatex(key,99,"questy-%i-%s-%i-%i",cod_get_user_class(id),name,akt,quest);
	nvault_set(vault_questy,key,"1");
}

public zapisz_aktualny_quest(id){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[100];
	format(key,99,"questy-%i-%s",cod_get_user_class(id),name);
	new data[32]
	formatex(data,charsmax(data),"#%i#%d#%d#%i",quest_gracza[id][Akt],quest_gracza[id][Quest],quest_postep[id],quest_gracza[id][Posiada]);
	nvault_set(vault_questy2,key,data);
}

public wczytaj_aktualny_quest(id){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[100];
	format(key,99,"questy-%i-%s",cod_get_user_class(id),name);
	new data[32];
	nvault_get(vault_questy2,key,data,31);
	replace_all(data,31,"#"," ");
	new questt[32],ile[32],akt[10],posiada[10]
	parse(data,akt,9,questt,31,ile,31,posiada,9)
	quest_postep[id] = str_to_num(ile)
	quest_gracza[id][Quest] = str_to_num(questt)
	quest_gracza[id][Akt] = str_to_num(akt)
	quest_gracza[id][Posiada] = str_to_num(posiada)
}

public SprawdzQuesta(id,akt,quest){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[64];
	format(key,63,"questy-%i-%s-%i-%i",cod_get_user_class(id),name,akt,quest);
	new data[64];
	nvault_get(vault_questy,key,data,63);
	return str_to_num(data);
}

Ja tylko sprawiłem by to działało ale nie optymalizowałem bo nie tego dotyczy temat :D

Jak nigdzie błędu nie popełniłem to wszystko działa

Odpowiedz

  • +
  • -
GoldenKill - zdjęcie GoldenKill 12.05.2014

Niestety, ale nie działa 

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 12.05.2014

Przypomniam to jest zapis. Jeśli w trakcjie gry zmienisz klase to nadal quest będzie aktywny. Lecz jeśli weźmiesz klase, włączysz questa, wyjdziesz z serwera, wejdziesz, i wejdziesz na inna klase to nie będziesz miał tego questa co rozpocząłeś!!! Musisz wyłapać moment zmiany klasy i najpierw zapisać questa a potem odczytać adekwatnego do klasy, musisz także zmienić moment pierwszego wczytania questa i nie używaj mojego imienia bo je tępie.

Odpowiedz

  • +
  • -
GoldenKill - zdjęcie GoldenKill 12.05.2014

Hmmm, może tak ?

new klasa [33][64];

public cod_class_changed(id, klasa)
{
	quest_gracza[id] = wczytaj_aktualny_quest(id)
}

Do DeathMsg

		cod_get_class_name(cod_get_user_class(victim), klasa[victim], charsmax(klasa));
		if(klasa[victim][0] == NazwyQ[quest_gracza[attacker]][2]){
			quest_postep[attacker]++;
			zapisz_aktualny_quest(attacker)
		}
		
Zapis

public zapisz_questa(id,akt,quest){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[100];
	formatex(key,99,"questy-%i-%s-%i-%i",klasa[id],name,akt,quest);
	nvault_set(vault_questy,key,"1");
}

public zapisz_aktualny_quest(id){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[100];
	format(key,99,"questy-%i-%s",klasa[id],name);
	new data[32]
	formatex(data,charsmax(data),"#%i#%d#%d#%i",quest_gracza[id][Akt],quest_gracza[id][Quest],quest_postep[id],quest_gracza[id][Posiada]);
	nvault_set(vault_questy2,key,data);
}

public wczytaj_aktualny_quest(id){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[100];
	format(key,99,"questy-%i-%s",klasa[id],name);
	new data[32];
	nvault_get(vault_questy2,key,data,31);
	replace_all(data,31,"#"," ");
	new questt[32],ile[32],akt[10],posiada[10]
	parse(data,akt,9,questt,31,ile,31,posiada,9)
	quest_postep[id] = str_to_num(ile)
	quest_gracza[id][Quest] = str_to_num(questt)
	quest_gracza[id][Akt] = str_to_num(akt)
	quest_gracza[id][Posiada] = str_to_num(posiada)
}

public SprawdzQuesta(id,akt,quest){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[64];
	format(key,63,"questy-%i-%s-%i-%i",klasa[id],name,akt,quest);
	new data[64];
	nvault_get(vault_questy,key,data,63);
	return str_to_num(data);
}
Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 12.05.2014

Wytłumacz mi na co ci nazwa klasy???


Do DeathMsg

cod_get_class_name(cod_get_user_class(victim), klasa[victim], charsmax(klasa));
if(klasa[victim][0] == NazwyQ[quest_gracza[attacker]][2]){
quest_postep[attacker]++;
zapisz_aktualny_quest(attacker)
}

Zapis

Po co?

 

Wszystko okey tylko zamiast nazwy klasy pobieraj jej index - cod_get_user_class(id

 

Edit

 

I nie dawaj tego:

quest_gracza[id] = wczytaj_aktualny_quest(id)

Tylko tak:

wczytaj_aktualny_quest(id)

Ale pamiętaj aby najpierw zapisac na starej klasie


Użytkownik BlackPerfum edytował ten post 12.05.2014 16:18
Odpowiedz

  • +
  • -
GoldenKill - zdjęcie GoldenKill 12.05.2014

Następny błąd występuje tu

 

	cod_get_user_class(vid);
	if(klasa[vid][0] == NazwyQ[quest_gracza[vid][Akt]]) {
		quest_postep[kid]++;
		zapisz_aktualny_quest(kid)
	}

Taki sam jak ci pisałem tylko NazwyQ

 

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 12.05.2014

Przeczytaj jeszcze raz mojego ostatniego posta

Tak się dzieje jak udostępniasz za mały skrawek kodu.

Tu potrzeba więcej zmian niż te które wprowadziłeś


Użytkownik BlackPerfum edytował ten post 12.05.2014 16:39
Odpowiedz

  • +
  • -
GoldenKill - zdjęcie GoldenKill 12.05.2014

Dalej nie działa  :(

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 12.05.2014

Hmm pokaż swój kod a pomogę

Odpowiedz

  • +
  • -
GoldenKill - zdjęcie GoldenKill 12.05.2014

Już ci ślę go na pw

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 12.05.2014

Za chwile ci go wyślę ale możesz mi za ten czas powiedzieć po co ci ta nazwa klasy bo naprawdę nie wiem.

Wytłumacz mi

Odpowiedz

  • +
  • -
GoldenKill - zdjęcie GoldenKill 12.05.2014

Znalazłem podobny kod w innym pluginie i chciałem zobaczyć czy jak u siebie go zastosuje, questy zaczną się zapisywać na daną klasę, ale niestety nie zadziałał.

Odpowiedz

  • +
  • -
Najlepsza odpowiedź BlackPerfum - zdjęcie BlackPerfum 12.05.2014

Wysłałem ci juz działającą wersję w której wykonałem rzeczy tylko z moich postów i działa. Następnym razem czytaj uważniej. A co do nazwy klasy to wcale nie jest taki głupi pomysł bo jak zmienisz kolejnośc wczytywania klas lub dodasz nową to zburzysz dotychczasowy system indexowania xD

Odpowiedz
Zablokowany