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

Zapis oraz odczyt nvault


Najlepsza odpowiedź GwynBleidD , 21.11.2014 13:37

Ma zostać puste, a dostajesz argument type mismatch, bo parametr name w ZapiszDaneNick powinien być tablicą. Ostatecznie powinno wyglądać to tak:

public Zapisz_Dane(id)
{
    new name[64];
    get_user_name(id, name, 63)
    ZapiszDaneNick(id, name)
}

public ZapiszDaneNick(id, name[]){
    new vaultkey[40], vaultdata[25]
    formatex(vaultkey, 39 ,"%s-ggg", name);
    formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name)
    nvault_set(zapis_sprawdz, vaultkey, vaultdata);
}
Z Wczytaj_Dane chyba sobie już poradzisz ;) Przejdź do postu


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

#1 Petpat

    Wszechwidzący

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 19.11.2014 22:10

Witam mam pewno pytanie, da się jakoś zrobić gdy gracz zmienia nick, to żeby statystyki się zerowały gdy gracz o takim nicku nie był zapisany, lub zmiana nicku = wczytanie statystyk gracza który jest już zapisany, wiem ,że można zablokować zmianę nicku, ale ja tego nie chce zrobić ;)


  • +
  • -
  • 0

#2 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 20.11.2014 04:08

public client_infochanged(id){
	new newname[32], oldname[32];
	get_user_info(id, "name", newname, 31);
	get_user_name(id, oldname, 31);
	if(!equal(oldname, newname)){
		//tu dajesz kod zapisujący staty dla nicku "oldname" oraz wczytujący dla nicku "name" + możesz dodać zerowanie statów w tabeli podczas danej mapy (żeby przy nastepnej zmianie nicku nie wczytac tulu fragow/smierci ile aktualnie posiada, albo zapisywac do zmiennej globalnej podczas zmiany nicku i odejmowac je przy nastepnej i tak w kółko.
	}
}

Użytkownik grankee edytował ten post 20.11.2014 04:10

  • +
  • -
  • 1

#3 Petpat

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 20.11.2014 08:52

public client_infochanged(id){
    new newname[32], oldname[32];
    get_user_info(id, "name", newname, 31);
    get_user_name(id, oldname, 31);
    if(!equal(oldname, newname)){
        Zapisz_Dane(id)
        padlofiara[id] = 0;
        zabil[id] = 0;
        Wczytaj_Dane(id)
    }
}

 

Zrobiłem coś takiego, ale to nie działa, jest dalej tak ,że jak zmieniam nick, to statystyki są takie same które miałem na starym nicku, jakieś inne propozycję ? :)


  • +
  • -
  • 0

#4 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 20.11.2014 19:21

Jeśli chcesz to w tabeli zresetować to musisz użyć 

set_user_frags
cs_set_user_deaths

  • +
  • -
  • 0

#5 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 20.11.2014 19:33

public client_infochanged(id){
    new newname[32], oldname[32];
    get_user_info(id, "name", newname, 31);
    get_user_name(id, oldname, 31);
    if(!equal(oldname, newname)){
        Zapisz_Dane(id)
        padlofiara[id] = 0;
        zabil[id] = 0;
        Wczytaj_Dane(id)
    }
}

Zrobiłem coś takiego, ale to nie działa, jest dalej tak ,że jak zmieniam nick, to statystyki są takie same które miałem na starym nicku, jakieś inne propozycję ? :)

 

1. Do Zapisz_Dane(id) i Wczytaj_Dane(id) podajesz tylko ID, przez co te funkcje spróbują na podstawie ID same pobrać nick gracza. Stwórz ich alternatywne wersje, do których podasz nick, a nie id. I wtedy odpowiednio podaj do nich oldname i newname

 

2. Obie te funkcje wywołane z client_infochanged wywołają się dla STAREGO nicku, client_infochanged jest wywoływany przed właściwą zmianą nicku na serwerze (aby można było taką zmianę zablokować), więc nie dziwota, że statystyki się nie zmienią skoro wczytujesz nadal te dla starego nicku :)


  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#6 Petpat

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 20.11.2014 20:24

Można prosić o jakiś przykład ? :)


  • +
  • -
  • 0

#7 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 20.11.2014 23:53

załóżmy, że kod funkcji zapisz wygląda tak:

 

ZapiszDane(id) {
    new name[64];
    get_user_name(id, name, 63);
 
    // ... dalej zapis danych na nick w SQL lub nvault
}

 

Stwórz więc funkcję ZapiszDaneNick(id, name) do której przeniesiesz wszystko z Zapisz_Dane, prócz pobierania nicku gracza. Następnie w Zapisz_Dane po pobraniu nicku wywołasz ZapiszDaneNick. Tą samą funkcję również wykonasz w client_infochanged, podając jako nick oldname. Dla Wczytaj_Dane postąp analogicznie, podając tym razem newname w client_infochanged.


  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#8 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 21.11.2014 02:06

Gwyn

get_user_info(id, "name", newname, 31);

wczyta nowy nick (ten po zmianie)


  • +
  • -
  • 1

#9 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 21.11.2014 11:30

Owszem, to jest oczywiste i wynika z kodu, który podałeś wcześniej. Można też do wczytywania danych dać w/w get_user_info zamiast get_user_name, a w zapisywaniu zostawić get_user_name, co rozwiąże problem, ale rozwiązanie z dodaniem parametru do określenia nicku da nam możliwość późniejszej rozbudowy pluginu np o logowanie się przez admina do statystyk dowolnej osoby (z różnychtam przyczyn, np twierdzi, że mu się level zbugował i mimo nabicia X expa nie wbił nowego levelu). Podejście już takie mam, że staram się zostawiać wszędzie jak najwięcej możliwości rozbudowy ;)
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#10 Petpat

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 21.11.2014 12:06

Hmmmmm, najwyraźniej ja źle zrozumiałem  ... ;) Wyświetla mi się błąd : ""error 035: argument type mismatch (argument 2)"
Właśnie Zapisz_Dane(id) ma zostać puste w sensie ,że zostaje tylko pobieranie nicku + zapis danych na nick ? Czy tak jak teraz jest ? :)

 

public Zapisz_Dane(id)
{
    new name[64];
    get_user_name(id, name, 63)
    ZapiszDaneNick(id, name)
    new vaultkey[40], vaultdata[25]
    formatex(vaultkey, 39 ,"%s-ggg", name);
    formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name)
    nvault_set(zapis_sprawdz, vaultkey, vaultdata);
}

public ZapiszDaneNick(id, name){
    new vaultkey[40], vaultdata[25]
    formatex(vaultkey, 39 ,"%s-ggg", name);
    formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name)
    nvault_set(zapis_sprawdz, vaultkey, vaultdata);
}

  • +
  • -
  • 0

#11 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 21.11.2014 13:37   Najlepsza odpowiedź

Ma zostać puste, a dostajesz argument type mismatch, bo parametr name w ZapiszDaneNick powinien być tablicą. Ostatecznie powinno wyglądać to tak:

public Zapisz_Dane(id)
{
    new name[64];
    get_user_name(id, name, 63)
    ZapiszDaneNick(id, name)
}

public ZapiszDaneNick(id, name[]){
    new vaultkey[40], vaultdata[25]
    formatex(vaultkey, 39 ,"%s-ggg", name);
    formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name)
    nvault_set(zapis_sprawdz, vaultkey, vaultdata);
}
Z Wczytaj_Dane chyba sobie już poradzisz ;)
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#12 Petpat

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 21.11.2014 14:46

Dzięki za zainteresowanie, wszystko działa teraz jak należy ;)


  • +
  • -
  • 0

#13 Petpat

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 22.11.2014 02:18

Jednak nie działa jak należy :) Są dwa problemy jeden załatany

public Zapisz_Dane(id)
{
    new name[64];
    get_user_name(id, name, 63)
    ZapiszDaneNick(id, name)
}

public ZapiszDaneNick(id, name[]){
    new vaultkey[40], vaultdata[25]
    formatex(vaultkey, 39 ,"%s-ggg", name);
    formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name)
    nvault_set(zapis_sprawdz, vaultkey, vaultdata);
}

 

Gdy jest tak ustawione, to nie zapisuje statystyk ..

 

    new name[64];
    get_user_name(id, name, 63)
dodałem również do ZapiszDaneNick

I zapis teraz działa, teraz problem jest z odczytem ;) Bo wczytuje dalej stary nick ... ;)

Wczytaj_Dane(id, name[]) Jest zrobione tak + w client_infochanged(id) Wczytaj_Dane(id, oldname);

 

@POST UP NIE MOGŁEM EDYTOWAĆ :)

 


  • +
  • -
  • 0

#14 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 22.11.2014 14:48

Pokaż funkcje Zapisz_Dane, ZapiszDaneNick, Wczytaj_Dane, WczytajDaneNick i client_infochanged w całości.


  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#15 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 22.11.2014 15:01

^"%d^"
A po co tak? Inty można dawać bez tego "".
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#16 Petpat

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 22.11.2014 22:27

Dzięki za zaangażowanie oraz za zainteresowanie, sebul, bo tak chciałem że tak powiem dla estetyki, mi to odpowiada ;) Wdarła mi się literówka i dzięki temu nie czytało danych, udało mi się to naprawić dzięki raz jeszcze :)


sebul (23.11.2014 14:59):
Problem może już rozwiązałeś, ale zwiększ tablicę "vaultdata", bo masz tam zbyt mało miejsca.

  • +
  • -
  • 0

#17 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 23.11.2014 14:59

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





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

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