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 zapisem NVAULT


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

#1 RiderS

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
Offline

Napisano 01.04.2018 19:19

Cześć, ostatnio próbuję nauczyć się tworzyć zapis nvault, jednakże mi nie wychodzi.
Nie wiem czy ogólnie cały zapis mi nie działa (serwer normalnie mi tworzy plik w data/vault), czy nie działa mi wczytanie tego pliku.
Prosiłbym o pomoc w odnalezieniu błędu i ew. pomocy przy naprawie (wyjaśnieniu jak naprawić).
Podaje *sma (w załączniku) i to co się zapisuje w pliku(nie mam uprawnień by dodać plik .vault, więc daje w kodzie i ss).
 
TLVn    EÁZ -player_model0#
 A dokładnie to takie coś

RzHNB1O.png

Załączone pliki


  • +
  • -
  • 0

#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 02.04.2018 11:00

Zapis ok:

formatex(vaultdata, 255, "%d#", player_model[id]);

Jak zapisujesz jedną wartosć to nie trzeba Ci tego hasha na koncu.

 

 

Co do wczytywania:

	new vaultkey[64], vaultdata[256];
	formatex(vaultkey, 63, "%s-player_model", player_auth[id]);
	formatex(vaultdata, 255, "%d#", player_model[id]);
	nvault_get(vault, vaultkey, vaultdata,255);

twoje vaultdata to tablica do której sie wczytają dane, nie trzeba tam używać formatexa. Ty dane odczytujesz z pliku a nie ustawiasz przez formatexa. 

I ponownie, jak masz jedną wartość to wystarczy takie coś:

public SaveModel(id)
{
	new vaultkey[64], vaultdata[256];
	formatex(vaultkey, 63, "%s-player_model", player_auth[id]);
	formatex(vaultdata, 255, "%d", player_model[id]);
	nvault_set(vault, vaultkey, vaultdata);
	
	return;
}

public LoadModel(id)
{
	new vaultkey[64], vaultdata[256];
	formatex(vaultkey, 63, "%s-player_model", player_auth[id]);
	nvault_get(vault, vaultkey, vaultdata,255);
	
	player_model[id] = str_to_num(vaultdata);
	
	return;
}

Jeżei nie zrobiłem zadnej literówki czy coś.

Popatrz sobie w moim Cod mod lub ogolnie w codmod jak zapis jest zrobiony


  • +
  • -
  • 0

#3 RiderS

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
Offline

Napisano 02.04.2018 15:18

Zapis ok:
 

formatex(vaultdata, 255, "%d#", player_model[id]);
Jak zapisujesz jedną wartosć to nie trzeba Ci tego hasha na koncu.


A jak bym chciał zapisać więcej niż 1 wartość to z hashem? To będzie jakaś różnica?

A czy do public LoadModel nie potrzeba jakiejś funkcji, która ustawi model graczowi ?

Podamieniłem te Twoje publici w pluginie, jednak model dalej się nie wczytuje. Trzeba go po prostu kupić od nowa.
  • +
  • -
  • 0

#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 03.04.2018 10:32

jak wiecej niz jedna wartość to se zrób spacją a nie hashem. Potem we wczytywaniu nie musisz używać replace_all() i zamieniać hashe na spacje.

 

 

No wczytałeś z pliku tylko jakąś wartość. A to co z nią zrobisz to twoja sprawa, aczkolwiek widze że zmienna player_model nie jest wykorzystywana nigdzie indziej poza odczytaniem i zapisaniem wartości. Nigdzie jej nie ustawiasz, nigdzie jej nie wykorzystujesz. Zapisuje się i oczytuje się zero do niej.

 

 

Dodam jeszcze: 

formatex(vaultkey, 63, "%s-player_model", player_auth[id]);

Klucz - nie musi jakby zawierać nazwy zmiennej która bedzie zachowana, równie dobrze mogloby byc: "%s-dupcia123", ale to pewnie wiesz.


  • +
  • -
  • 0

#5 RiderS

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
Offline

Napisano 05.04.2018 18:19

Ehh próbowałem po wczytaniu ustawić model lecz efekt ten sam.

 

Spróbowałem też odwzorować zapis z cod moda i z pewnego pluginu na skiny, który też posiada zapis vault. Lecz jedyne co mi wychodziło to tylko większa ilość errorów podczas kompilacji ;>


  • +
  • -
  • 0

#6 AwIlL^^

    Magiczny Gość

  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:263
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Gdańsk
Offline

Napisano 07.04.2018 07:13

a dlaczego nie wykorzystać możliwości, które dał twórca amxx??
nvault_get przyjmuje zmienną liczbę parametrów:
2 parametry - funkcja zwraca liczbę całkowitą, która jest zapisana pod danym kluczem
3 parametry - funkcja zwraca liczbę rzeczywistą przez referencję
4 parametry - funkcja zwraca ciąg znaków

Wszędzie wszyscy używają 4 parametrów, nawet tam gdzie to jest zbędne, tak samo tutaj
wczytywanie mogłoby wyglądać tak:

public LoadModel(id)
{
	new vaultkey[64];
	formatex(vaultkey, 63, "%s-player_model", player_auth[id]);
	
	player_model[id] = nvault_get(vault, vaultkey);
}
Jak nie znajdzie to zwróci 0, więc jest spoko :)

Do zapisu nie mam uwag ponieważ da się tylko zapisywać przez ciąg znaków

a co do większej ilości zapisywanych danych to wczytany string najłatwiej przerobić na liczby całkowite przy pomocy pewnej funkcji:
explode_num
z tego tematu:
https://amxx.pl/topi...ę-na-tablicach/
  • +
  • -
  • 0

Potrzebujesz porad do amxx?? Pisz na [PW]





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

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