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
CoD Nowy

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

cod nowy

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


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

#1 GoldenKill

    Guru

  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 12.05.2014 14:34

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);
}

  • +
  • -
  • 0

#2 OpUr off

    Pomocny

  • Zbanowany

Reputacja: 16
Początkujący

  • Postów:74
  • Imię:Arek łowca szparek
  • Lokalizacja:Warszawa
Offline

Napisano 12.05.2014 14:48

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



#3 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 12.05.2014 15:05

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


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#4 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 12.05.2014 15:11

Niestety, ale nie działa 


  • +
  • -
  • 0

#5 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 12.05.2014 15:43

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.


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#6 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 12.05.2014 16:01

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);
}

  • +
  • -
  • 0

#7 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 12.05.2014 16:04

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

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#8 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 12.05.2014 16:28

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

 


  • +
  • -
  • 0

#9 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 12.05.2014 16:38

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

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#10 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 12.05.2014 16:58

Dalej nie działa  :(


  • +
  • -
  • 0

#11 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 12.05.2014 17:18

Hmm pokaż swój kod a pomogę


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#12 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 12.05.2014 17:33

Już ci ślę go na pw


  • +
  • -
  • 0

#13 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 12.05.2014 17:57

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


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#14 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 12.05.2014 18:08

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ł.


  • +
  • -
  • 0

#15 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 12.05.2014 18:31   Najlepsza odpowiedź

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


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika





Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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