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

Nvault skrocenie zapisu


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

#1 Kmf!p

    Wszechwidzący

  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 30.12.2015 20:48

Witam, mam problem ze zbyt duza iloscia zmiennych, przez co nie chce mi sie skompilowac.

dla kazdej broni zapisuje 3 zmienne (i tak skrocilem co moglem ;) ale to i tak wychodzi za duzo.

dodam ze podane zmienne nie zwracaja true/false tylko jakas wartosc, jak mozna to skrocic ?

patrzylem cos tam o defline, ale to zwraca chyba true/false ? macie jakies pomysly ?

 


  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#2 NiczegoWinien

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:334
  • Lokalizacja:No Disc
Offline

Napisano 31.12.2015 00:22

Pokaz kod z zapisem.


  • +
  • -
  • 0

#3 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 31.12.2015 00:42

nie chcesz tego widziec ;)

podam na przykladach, bo kodu za duzo jest i to nie pelne nazwy wiec ciezko bedzie.

//zmienne

new KillsGlock[33], DeathGlock[33], AsistGlock[33];

//zapis

format(vaultdata, charsmax(vaultdata),"%i %i %i",KillsGlock[id],DeathGlock[id],AsistGlock[id])

//wczytywanie

new kgl[32], dgl[32], agl[32];
parse(vaultdata, kgl, 31, dgl, 31, agl, 31)

KillsGlock[id] = str_to_num(kgl);
DeathGlock[id] = str_to_num(dgl);
AsistGlock[id] = str_to_num(agl);


tak to mniej wiecej wyglada, jak widzisz 3 wartosci/zmienne dla jednej broni, a broni jest duzo i chce zapisywac dla kazdej. chodzi o to ze mi nie miesci sie w tej linijce duzo znakow/zmiennych

parse(vaultdata, kgl, 31, dgl, 31, agl, 31)

Użytkownik Kmf!p edytował ten post 31.12.2015 00:44

  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#4 NiczegoWinien

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:334
  • Lokalizacja:No Disc
Offline

Napisano 31.12.2015 01:01

public WczytajDane(id, klasa)
{
    new vaultkey[64],vaultdata[256];
    format(vaultkey,63,"%s-%i-cod", nazwa_gracza[id], klasa);
    format(vaultdata,255,"%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]);
    nvault_get(g_vault,vaultkey,vaultdata,255);
 
    replace_all(vaultdata, 255, "#", " ");
 
    new doswiadczeniegracza[32], poziomgracza[32], inteligencjagracza[32], silagracza[32], zrecznoscgracza[32], zwinnoscgracza[32];
 
    parse(vaultdata, doswiadczeniegracza, 31, poziomgracza, 31, inteligencjagracza, 31, silagracza, 31, zrecznoscgracza, 31, zwinnoscgracza, 31);
 
    doswiadczenie_gracza[id] = str_to_num(doswiadczeniegracza);
    poziom_gracza[id] = str_to_num(poziomgracza)>0?str_to_num(poziomgracza):1;
    inteligencja_gracza[id] = str_to_num(inteligencjagracza);
    zdrowie_gracza[id] = str_to_num(silagracza);
    wytrzymalosc_gracza[id] = str_to_num(zrecznoscgracza);
    kondycja_gracza[id] = str_to_num(zwinnoscgracza);
    punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
}

 

To jest przyklad z cod moda. Kazda klasa ma przypisane swoje umiejetnosci do danej klasy.

Zamiast klasa wstaw tam swoja bron i prawidlowo ja zapisz.


  • +
  • -
  • 0

#5 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 31.12.2015 01:07

wiem o tym mam po nie kad to z coda ;)

chodzi mi o to ze jak tu masz w kodzie z codmoda tych umiejetnosci z 7 to ja w swoim kodzie mam ich az okolo 70 ;D

przekroczylem limit w tym: parse() musze to obejsc jakos lub inaczej to wykonac...

patrzylem troche i widzialem ze przez: define jakos zapisuja z tym ze to chyba dla true/false


Użytkownik Kmf!p edytował ten post 31.12.2015 01:21

  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#6 GeDox

    Wszechpomocny

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:315
  • Steam:steam
  • Imię:Przemysław
  • Lokalizacja:Kielce
Offline

Napisano 31.12.2015 01:19

Struktura + pętla po każdej "zmiennej" w strukturze :)
 
https://forums.allie...ead.php?t=26634
 

enum EPlayer
{
    chFrags,
    chDeaths
};

new PlayerStats[ 33 ][ EPlayer ];

for(new i = 0; EPlayer:i < EPlayer; EPlayer:i++)
{
        format(string, charsmax(string), "%s%d#", PlayerStats[id][EPlayer:i]);
}
usuń ostatni znak
zapisz cały string do pliku


@edit nie doczytałem ;]

Użytkownik GeDox edytował ten post 31.12.2015 01:28

  • +
  • -
  • 0

#7 NiczegoWinien

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:334
  • Lokalizacja:No Disc
Offline

Napisano 31.12.2015 01:24

Zawsze mozesz tworzyc zmienne typu a,b,c aby skrocic zapis ;]


  • +
  • -
  • 0

#8 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 31.12.2015 01:29

mam to poskracane ;D ale to nie o to chodzi bo linie moge lamac chodzi o to ze zbyt wiele wartosci i przekracza max i sie nie skompiluje.

 

GeDox

 

mozesz troche jasniej bo nie wiem co z tym zrobic ;) jak mozesz zrob na przykladzie z mojego postu dla tych 3 zmiennych.


  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#9 GeDox

    Wszechpomocny

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:315
  • Steam:steam
  • Imię:Przemysław
  • Lokalizacja:Kielce
Offline

Napisano 31.12.2015 02:17

Ale to jest zapis. Co do odczytu, musiałbyś pobierać do najbliższego znaku (#) lub końca linii (ostatni znak) i wrzucać do tablic.
  • +
  • -
  • 0

#10 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 31.12.2015 02:24

Jak nie wiesz co to struktura to użyj po prostu zwykłej tablicy trójwymiarowej. Na przykład:

New tablica[32][24][3] tj. Tablica[id gracza][id broni][opcje]]

 

pisząc opcje mam na myśli:

0 - frag

1- zgon

2- asysta


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#11 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 31.12.2015 09:29

tablica byla by najlepsza chyba tylko jak to zrobic. mozesz to zrobic na przykladzie z mojego 2 postu ? co trzeba zapisac i w jaki sposob oraz jak to odczytac, wlasnie myslalem o czyms takim zeby przypisac do broni fragi, zgony, asysty tylko nie wiem jak sie za to zabrac...


  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#12 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 31.12.2015 15:02

For(New a = 0; a < MaxID; a++)
{
         for(New b = 0; b < 3; b++)
.         {
.           tablica[id][a][b] = str_to_num(tablicaPomocbicza[a][b])
.         }
}
Public funkcja(id)
{

New weaponId = cs_get_weapon_id(id)

Tablica[id][weaponId][0]++; doda jednego fraga

[...]

Tablica[id][weaponId][1]++; doda jednego zgona

[...]

Tablica[id][weaponId][2]++; doda jedna asyste

}

tutaj masz funkcję zwracająca id broni: http://amxx.pl/dokum...s-get-weapon-id

Do odczytu stwórz sobie tablice pomocniczą.
Później zagnieźdź pętlę i gotowe.

Nie wiem czego tam używasz do wykrywania zgonów itd.

W każdy razie możesz zrobić to tak:

Eh przykład masz na górze pisze z telefonu i jakoś tak wyszło :(

Co do zagnieżdżonych pętli to robisz to tak:
Wczesniej najlepiej okresl sobie jakie jest największe id broni

#define MaxID 20 // to przykład nie pamiętam jakie jest najwieksze musisz sobie sam sprawdzić
Przykład masz na górze to ten pierwszy z pętlami nie wiem czego ale znów mi to wywalilo na gore . Ehh :(


Użytkownik Master Yoga edytował ten post 31.12.2015 15:08

  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#13 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 31.12.2015 19:50

// zmienne

new Kills[32][24][3], new Death[32][24][3], new Asist[32][24][3];

// zapis

public Save(id)
{
          new vaultkey[35], vaultdata[256], gracz_names[64];
          format(vaultdata, charsmax(vaultdata),"%i %i %i",Kills[id][weaponID][?],Death[id][weaponID][?],Asist[id][weaponID][?])
          copy(gracz_names, charsmax(gracz_names), name_player[id]);
          format(vaultkey, charsmax(vaultkey),"%s", gracz_names);
          nvault_set(vaults, vaultkey, vaultdata);
}
// odczyt

public Load(id)
{
          new vaultkey[35], vaultdata[256], gracz_names[64];
          copy(gracz_names, charsmax(gracz_names), name_player[id]);
          format(vaultkey, charsmax(vaultkey),"%s", gracz_names);


          if(!nvault_get(vaults,vaultkey,vaultdata,255)) 
          {
                    format(vaultkey, charsmax(vaultkey), "%s", gracz_names[id]);
                    nvault_get(vaults,vaultkey,vaultdata,255);
          }


          replace_all(vaultdata, 255, "#", " ");


          new frag[32][24][3], zgon[32][24][3], asysta[32][24][3];
          parse(vaultdata, frag, 31, 23, 2, zgon, 31, 23, 2, asysta, 31, 23, 2)

          Kills[id][weaponID][?] = str_to_num(frag[32][24][3]);
          Death[id][weaponID][?] = str_to_num(zgon[32][24][3]);
          Asist[id][weaponID][?] = str_to_num(asysta[32][24][3]);
}


// pozostale (naliczanie)

          Kills[id][weaponID][0]++;
          Death[id][weaponID][1]++;
          Asist[id][weaponID][2]++;

co wstawic tam gdzie znak zapytania i czy takie cos zadziala po poprawieniu kodu, cos pomieszalem chyba ... jak to poprawic zeby dzialalo, nie wiem tez gdzie dodac pozostala czesc ;)


Użytkownik Kmf!p edytował ten post 31.12.2015 19:52

  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#14 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 31.12.2015 20:27

nie twórz 3 tablic tylko 1

 

new Statystyki[id][weaponID][0] to to samo co u ciebie kills

new Statystyki[id][weaponID][1] to to samo co u ciebie Death

new Statystyki[id][weaponID][2] to to samo co u ciebie Asist

 

Będziesz musiał z zapisem i odczytem dużo się bawić. Ale da się to zrobić dużo krócej - kombinuj :)


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#15 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 31.12.2015 22:56

lepiej mi do kodu pasuja 3 tablice wiec moze 2 wymiarowe ?

// zmienne

          new Kills[32][24], Death[32][24], Asist[32][24];
          
// naliczanie

          Kills[id][weaponID]++;
          Death[id][weaponID]++;
          Asist[id][weaponID]++;

potrzebuje jakis prosty sposob zeby to zapisac i odczytac, dzis nie mam na to pomyslow ;D

 

 


  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#16 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 04.01.2016 03:18

zapis:

pętla + konkatenacja

 

odczyt:

pętla i tutaj dziel string na 2 części.
Pierwszy zamieniaj na liczbę i zapisuj do tablicy, drugi daj dalej do podziału


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#17 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 04.01.2016 10:48

zebym cos z tego rozumial ;)

to jest najprostszy sposob zapisu tablicy wielowymiarowej ? szybciej bym to zrobil robiac zapis w 3 oddzielnych plikach ;)

jak mozecie to podajcie gotowca jakiegos bo widze ze po samych postach tego nie zrobie

 


  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#18 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 04.01.2016 23:18

widzialem w pluginie cos takiego ze mozna zdefiniowac liste broni ? to by skrocilo moze zapis ?

#define PRIMARY_WEAPONS_BITSUM ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90))

bo juz broni nie musialbym zapisywac ?


  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#19 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 05.01.2016 15:20

http://amxx.pl/topic...vault/?p=542687

jak zrobic ten zapis za pomoca tego sposobu ?


  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#20 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 06.01.2016 03:02

Raczej nie da rady no chyba że sie mylę to niech mnie ktoś poprawi bo bitowi możesz przypisać wartość z zakresu 0-1 a ty musisz zapisać waartossci typu integer ( liczby całkowite ). Bity to dobry sposób na zastąpienie zmiennych logicznych.
Nie wiem czy wiesz ale ty nie zapisujesz ciągu liczb a ciąg znaków który u ciebie patrząc na przykłady będzie wyglądał tak: 1#2#3#6#8#9#44#0
dzięki funkcji replace_all zamienisz wszystkie znaki # na spacje. Po tym zabiegu twój string będzie wyglądał tak: 1 2 3 6 8 9 44 0.
Funkcja parse przypisuje każdy argument innej zmiennej.
Na przykład: Zmienna1 będzie rowna "1" zmienna2 będzie rowna "2" itd
Następnie funkcją str_to_numzamieniasz tekst na liczbę czyli nie masz juz "1" tylko 1.
Im więcej chcesz zapisać tym bardziej sie rozpisujesz.

A nie krócej ( i to o ile ) i łatwiej byłoby ci dzięki pętli doklejać do stringu podstawowego wartości kolejnej zmiennej "#%d" po ówczesnym sformatowaniu, a przy sobie odczycie zamiast rozpisywać to na każdą zmienną oblecieć wszystko z pętla i dzielić string na 2 części i pierwszym wystąpieniu danej znaku i części pierwszej zamienienie na liczbe i przypisanie do tablicy a drugiej części stringu pod przykazanie na dalsze rozdzielanie.
Przykład:
String: 1#2#3#4#5
Podział na 2,części przy wystąpieniu znaku #
String1 = "1" zamiana na liczbe i przypisanie do tablicy
String 2 wygladal by wtedy tak: 2#3#4#5

Proste i o wiele wygodniejsze nieprawdaż?
  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png





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

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