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

Savev - Nowy zapis


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

#1 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 22.08.2012 11:24

*
Popularny

Witam, przedstawiam wam moj własny zapis.
Mieści się on w pliku inc.

Tu jego zawartosc :

#if defined _Save_included
#endinput
#endif

#include <amxmodx>

new sciezka[] = "addons/amxmodx/Zapis_v2" // Folder zapisywanych plikow

/* Funkcja Zapisywania */

public ZapiszDane(const file[], const key[], const data[])
{
new ominac
new c[1024], sciezka_[128], arg1[64], tekst[500], len;

formatex(sciezka_, 127, "%s/%s", sciezka, file);

formatex(c, 1023, "^"%s^" ^"%s^"", key, data);

if(!dir_exists(sciezka))
mkdir(sciezka);

if(!file_exists(sciezka_))
write_file(sciezka_, "", 0);

for(new i; read_file(sciezka_, i, tekst, 499, len);i++)
{
parse(tekst, arg1, 63);

if(equal(key, arg1, strlen(arg1)))
{
write_file(sciezka_, c, i);
ominac++
}
else
continue;
}
if(!ominac)
write_file(sciezka_, c, -1);
ominac = 0
}

/* Funkcja Odczytywania */

public WczytajDane(const file[], const key[], data[], len)
{
new tekst[1101], len, sciezka_[128];
new arg1[64], arg2[1024];

formatex(sciezka_, 127, "%s/%s", sciezka, file)

if(!file_exists(sciezka_))
return PLUGIN_CONTINUE
for(new i; read_file(sciezka_, i, tekst, 1100, len);i++)
{
parse(tekst, arg1, 63, arg2, 1023);

if(equal(key, arg1, strlen(arg1)))
copy(data, len, arg2);
else
continue;
}
return PLUGIN_CONTINUE
}

/* Funkcja Usuwania */

public UsunDane(const file[], const key[])
{

new tekst[1101], len, sciezka_[128];
new arg1[64], arg2[1024];

formatex(sciezka_, 127, "%s/%s", sciezka, file)

if(!file_exists(sciezka_))
return PLUGIN_CONTINUE
for(new i; read_file(sciezka_, i, tekst, 1100, len);i++)
{
parse(tekst, arg1, 63, arg2, 1023);

if(equal(key, arg1, strlen(arg1)))
write_file(sciezka_, "", i);
else
continue;
}
return PLUGIN_CONTINUE
}


teraz przedstawie funkcje i jak je uzywać:

ZapiszDane(const file[], const key[], const data[])


Zapisuje dane data[] do pliku file[] do klucza key[] np:

new nick[33]
get_user_name(id, nick, 32)
ZapiszDane("plik.txt", nick, "Dane")



WczytajDane(const file[], const key[], data[], len)


Wczytuje dane z pliku file[] z klucza key[] do data[] o dlugosci len np:

new nick[33], dane[33]
get_user_name(id, nick, 32)
WczytajDane("plik.txt", nick, dane, 32)



UsunDane(const file[], const key[])


Usuwa dane z pliku file[] z klucza key[] np:


new nick[33]
get_user_name(id, nick, 32)
UsunDane("plik.txt", nick)


const file[]
- Nazwa pliku z rozszerzeniem np: "plik.txt"
const key[]
- Klucz, po ktorym ma wyszukiwać np :
const data[]
- Co ma zapisać do danego klucza / Do czego ma wczytac.
len
- do ilu ma zapisac (tylko w WczytajDane)

Plik tworzy sie w folderze : addons/amxmodx/Zapis_v2/nazwa_pliku.rozszerzenie
A teraz przykład użycia w krótkim kodzie:


/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <savev>
#include <fun>

#define PLUGIN "Zapis"
#define VERSION "1.0"
#define AUTHOR "tomcionek15 & grs4"

new plik[] = "fragi_gracza.txt"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /zapisz", "Zapisz")
register_clcmd("say /wczytaj", "Wczytaj")

}
public Zapisz(id)
{
new nick[33], dane[64]
get_user_name(id, nick, 32)
formatex(dane, 63, "%d %d %d %d", get_user_frags(id), get_user_deaths(id), get_user_health(id), get_user_armor(id))
ZapiszDane(plik, nick, dane)
}
public Wczytaj(id)
{
new nick[33], dane[64]
get_user_name(id, nick, 32)
WczytajDane(plik, nick, dane, 63)

new fg[5], dg[5], zg[5], ag[5] // fg = fragi gracza, dg = dedy graczca itd...
parse(dane, fg, 5, dg,5, zg, 5, ag, 5)

client_print(id, 3, "Z poprzedniego zapisu wynika, ze miales")
client_print(id, 3, "%d zabic i zgineles %d razy,", str_to_num(fg), str_to_num(dg))
client_print(id, 3, "miales %d zycia, i %d kamizelki", str_to_num(zg), str_to_num(ag))
}


A o to efekt:
Dołączona grafika

zawartośc pliku : Zapis_v2/fragi_gracza.txt :


"STRIKER--McPr0 <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />" "1 4 98 0"

Plik .inc w zalączniku
I .sma uzyte.

===

Wszystko co robie, robie dla ludzi :)

Załączone pliki


Użytkownik PaTrIcKx edytował ten post 22.08.2012 11:39

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 985
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 22.08.2012 12:24

W czym różni się to od np. nvault pomijam fakt że twoja metoda jest wolniejsza
  • +
  • -
  • 0

#3 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 22.08.2012 12:35

Dla mnie jest to najlepszy zapis. Co z tego ze wolniejsza ale ma więcej plusów np ze można edytować wartości ręcznie nawet w trakcie gry.<p>Przynajmniej nie ma dziwnych znaków i wszystko jest estetyczne.

Użytkownik PaTrIcKx edytował ten post 22.08.2012 12:37

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#4 Nestea****Lemon

    Herbata ?!

  • Użytkownik

Reputacja: 81
Zaawansowany

  • Postów:313
  • GG:
  • Imię:Dawid
  • Lokalizacja:Radzyń Podlaski
Offline

Napisano 22.08.2012 13:45

@ UP
Zgadzam się z tym , leci +
  • +
  • -
  • 0

cY2lZ.gif

http://nestea-tdm.cba.pl <---- Nestea****Lemon Blog


Aktualnie tworzę moda do Minecrafta ^D^


#5 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 985
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 22.08.2012 14:27

Co z tego ze wolniejsza ale ma więcej plusów np ze można edytować wartości ręcznie nawet w trakcie gry

a to w nvault niby nie można ? ;) ( plik journal )

wszystko jest estetyczne

co jest niestetyczne w nvault

zamień read_line / writeline etc. na operacje z pointerem z fopen kod będzie bardziej optymalny

Użytkownik DarkGL edytował ten post 22.08.2012 14:29

  • +
  • -
  • 0

#6 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 22.08.2012 14:28

plik journal nie mozna edytowac poniewaz jest uzywany przez inny proces. :P

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 985
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 22.08.2012 14:30

jest uzywany przez inny proces

:huh: przez proces hlds'a
  • +
  • -
  • 0

#8 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 22.08.2012 15:18

zamień read_line / writeline etc. na operacje z pointerem z fopen kod będzie bardziej optymalny

Jescze nie potrafię :) Nie jestem 'specem' jak ty xD uczę się pomału :)

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#9 Jak się nazwać

    Wszechmogący

  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 22.08.2012 18:56

To działa na podobnej zasadzie a jest optymalniejsze:
http://forums.allied...047&postcount=1
  • +
  • -
  • 0
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#10 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 22.08.2012 19:10

Nie widzialem tego :D Przeaanalizuje dzięki za info

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#11 Pan PrO

    Wszechpomocny

  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 24.11.2012 14:00

Ten zapis też ma tą wadę co vault że przy dużej ilości danych usuwa coś lub nie odczytuje ??
  • +
  • -
  • 0

#12 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 27.11.2012 20:55

ten zapis nie ma wad ten zapis jest jedna wielka wadą :D

fvault jest szybsze/optymalniejsze i z wiekszymi mozliwosciami zarówno niz to cos jak i nvault
  • +
  • -
  • 2
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#13 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 31.03.2013 19:45

Heh :D
Ja się nie spotkałem z problemami przy dużej ilośći graczy ( usuwanie, nieodyczytywanie )

G[o]Q

Dzięki za opinie :D

Ale i tak zamiast pochwalić, że się postarałem i zrobiłem coś "wymagającego myślenia i testowania" to Ty mówisz prawdę, z czego jestem niezmiernie wdzięczny.

A więc krótko mówić zapis może być użwany do małych "krótkich" zapisów.

pyt: nvault czy fvault ?

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 





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

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