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

[ROZWIĄZANE] Zapis Nvault ZapiszDane(id) - CoDMoD StaryPrzepełnienie stosu

codstary stack error

Najlepsza odpowiedź GwynBleidD, 03.05.2014 12:18

Ustaw duże tablice jako static lub zmienne globalne, wtedy nie będą trzymane na stosie. Przejdź do postu


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

#1 Szyfrant

    Godlike

  • Przyjaciel

Reputacja: 1 374
Godlike

  • Postów:3 072
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Sztokholm
Offline

Napisano 01.05.2014 18:02

Wszystkie publicki niżej wymienione prowadzą do ZapiszDane(id)
 

L 05/01/2014 - 12:13:09: [AMXX] Run time error 3: stack error
L 05/01/2014 - 12:13:09: [AMXX] [0] Untitled.sma::ZapiszDane (line 4594)
L 05/01/2014 - 12:13:09: [AMXX] [1] Untitled.sma::SprawdzPoziom (line 4866)
L 05/01/2014 - 12:13:09: [AMXX] [2] Untitled.sma::Eksploduj (line 8339)
L 05/01/2014 - 12:13:09: [AMXX] [3] Untitled.sma::Death (line 3020)

 



 

public ZapiszDane(id)
{
    new vaultkey[64],vaultdata[256];
    formatex(vaultkey,63,"%s-%i-cod", nazwa_gracza[id], klasa_gracza[id]);
    formatex(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id], gGrawitacja[id], gNiewi[id], gZdolnosc[id], refleks_gracza[id], critic_gracza[id]);
    nvault_set(g_vault,vaultkey,vaultdata);
    
}

public WczytajDane(id, klasa)
{
    new vaultkey[64],vaultdata[256];
    formatex(vaultkey,63,"%s-%i-cod", nazwa_gracza[id], klasa);
    formatex(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id], gGrawitacja[id], gNiewi[id], gZdolnosc[id], refleks_gracza[id], critic_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], grawitacjagracza[32], niewigracza[32], zdolnosc[32], refleksgracza[32], criticgracza[32];
    
    parse(vaultdata, doswiadczeniegracza, 31, poziomgracza, 31, inteligencjagracza, 31, silagracza, 31, zrecznoscgracza, 31, zwinnoscgracza, 31, grawitacjagracza, 31, niewigracza, 31, zdolnosc, 31, refleksgracza, 31, criticgracza, 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);
    gGrawitacja[id] = str_to_num(grawitacjagracza);
    gNiewi[id] = str_to_num(niewigracza);
    gZdolnosc[id] = str_to_num(zdolnosc);
    refleks_gracza[id] = str_to_num(refleksgracza);
    critic_gracza[id] = str_to_num(criticgracza);
    punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-gGrawitacja[id]-gNiewi[id]-gZdolnosc[id]-refleks_gracza[id]-critic_gracza[id];
} 

Zwykłe zwiększenie tablicy wystarczy?


  • +
  • -
  • 0

#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 03.05.2014 12:18   Najlepsza odpowiedź

Ustaw duże tablice jako static lub zmienne globalne, wtedy nie będą trzymane na stosie.
  • +
  • -
  • 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


#3 Szyfrant

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 1 374
Godlike

  • Postów:3 072
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Sztokholm
Offline

Napisano 05.05.2014 22:17

#include <amxmodx>
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <fakemeta_util>
#include <engine>
#include <hamsandwich>
#include <nvault>
#include <fakemeta_util>
#include <ColorChat> 
#include <tutor>

#define PLUGIN ******
#define VERSION ****
#define AUTHOR *********

#define ***********
#define **********
#define *********
#define ******

#define ADMIN_FLAG_V (1<<21)
#define ADMIN_FLAG_W (1<<22)
#define ADMIN_FLAG_X (1<<23)

############# new vaulkey[128]; 
############# new vaultdata[512] 
public ZapiszDane(id)
{
#############	formatex(vaultkey, charsmax(vaultkey),"%s-%i-cod", nazwa_gracza[id], klasa_gracza[id]);
#############	formatex(vaultdata, charsmax(vaultdata),"%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id], gGrawitacja[id], gNiewi[id], gZdolnosc[id], refleks_gracza[id], critic_gracza[id]);
	nvault_set(g_vault, vaultkey, vaultdata);
	
}

public WczytajDane(id, klasa)
{
#############	formatex(vaultkey, charsmax(vaultkey),"%s-%i-cod", nazwa_gracza[id], klasa);
#############	formatex(vaultdata, charsmax(vaultdata),"%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id], gGrawitacja[id], gNiewi[id], gZdolnosc[id], refleks_gracza[id], critic_gracza[id]);
#############	nvault_get(g_vault, vaultkey, vaultdata, charsmax(vaultdata));
	
#############	replace_all(vaultdata, charsmax(vaultdata), "#", " ");
	
	new doswiadczeniegracza[32], poziomgracza[32], inteligencjagracza[32], silagracza[32], zrecznoscgracza[32], zwinnoscgracza[32], grawitacjagracza[32], niewigracza[32], zdolnosc[32], refleksgracza[32], criticgracza[32];
	
	parse(vaultdata, doswiadczeniegracza, 31, poziomgracza, 31, inteligencjagracza, 31, silagracza, 31, zrecznoscgracza, 31, zwinnoscgracza, 31, grawitacjagracza, 31, niewigracza, 31, zdolnosc, 31, refleksgracza, 31, criticgracza, 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);
	gGrawitacja[id] = str_to_num(grawitacjagracza);
	gNiewi[id] = str_to_num(niewigracza);
	gZdolnosc[id] = str_to_num(zdolnosc);
	refleks_gracza[id] = str_to_num(refleksgracza);
	critic_gracza[id] = str_to_num(criticgracza);
	punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-gGrawitacja[id]-gNiewi[id]-gZdolnosc[id]-refleks_gracza[id]-critic_gracza[id];
} 

Zrobilem coś takiego.

Plugin się kompiluje tylko  pytanko czy tak moze być??

 

Tam gdzie zmiany dodałem "#############" przed linią 


Użytkownik Szyfrant edytował ten post 05.05.2014 22:20

  • +
  • -
  • 0

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 07.05.2014 12:31

Tja, pomoże :) Ale wystarczyłby static ;)
  • +
  • -
  • 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


#5 Szyfrant

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 1 374
Godlike

  • Postów:3 072
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Sztokholm
Offline

Napisano 10.05.2014 11:16

a ktore rozwiązanie jest bardziej optymalne? 

 

bo widze ze zadziałało 3 dni bez errorów ;)


  • +
  • -
  • 0

#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 13.05.2014 14:03

Szczerze? Jeden ch.....wali jedno, inny chwali drugie :)

Różnica jest tylko w widoczności zmiennej, szkoda sobie czasem zaśmiecać kod zmiennymi globalnymi ;)
  • +
  • -
  • 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





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

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