Jump to content
  • 0

Variabila globala


PauLL

Question

 

Problema intalnita (descriere): 

Salut,as vrea sa intreb cum as putea limita numarul de modele la DS-ul meu.

De exemplu,sa se poata cumpara doar 10 modele de infernus?


Ero(area / rile) / warning-(ul / urile): Array out of bounds
Liniile de cod / sursa / script-ul(obligatoriu): La orice variabila globala incercata.
Imagini / Video (optional):
Ati incercat sa rezolvati singur?: Da,am incercat sa fac o variabila globala gInfernusStock[MAX_PLAYERS][10]; unde 10 e numarul de infernusuri,am pus conditia cand se cumpara masina iar apoi gInfernusStock[MAX_PLAYERS][10]--; ca sa scada 1..si nu merge nu stiu cum sa fac sa se poata cumpara doar 10 infernus din dealer.Multumesc anticipat.
 
Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Ce tip de program (Dini, YSI, MySQL) folosesti ?

"Mulţi programatori buni fac programare nu pentru că se aşteaptă să câştige bani sau să fie lăudaţi de public, ci pentru că e amuzant să programezi." - Linus Torvalds

Link to comment
Share on other sites

  • 0

Incearca si asa:

new gInfernusStock[MAX_PLAYERS] = 10;

iar cand vrei sa scada poti folosi asa:
gInfernusStock[playerid] --;

Iar ca mesaj de alerta !
if(gInfernusStock[playerid] < 0) return SendClientMessage(playerid, -1, "Nu mai sunt masini in stock !");

 

"Mulţi programatori buni fac programare nu pentru că se aşteaptă să câştige bani sau să fie lăudaţi de public, ci pentru că e amuzant să programezi." - Linus Torvalds

Link to comment
Share on other sites

  • 0

Doar ca trebuie sa salvezi si sa incarci variabila cu dini :

gInfernusStock[MAX_PLAYERS] 

 

Cum ai face si la un cont de jucator sau parola. Daca nu faci asta nu se va salva la server restart.

Edited by Rappy
Link to comment
Share on other sites

  • 0

Am incercat sa fac asta si imi da errori: Array index out of bounds  

C:\Users\Paul23\Desktop\ds\ds\ds\ds\gamemodes\dspep.pwn(25607) : error 032: array index out of bounds (variable "gInfernusStock"
C:\Users\Paul23\Desktop\ds\ds\ds\ds\gamemodes\dspep.pwn(25662) : error 032: array index out of bounds (variable "gInfernusStock"
Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase 


2 Errors
.  

Linii:

 

new gInfernusStock[MAX_PLAYERS] = 10;  

if(gInfernusStock[MAX_PLAYERS] > 0)  

 

gInfernusStock[MAX_PLAYERS]--;  

 

EDIT:am reusit sa rezolv ,in loc de [max_players] am pus doar = 10; si a mers insa mai am o problema,cum fac sa se salveze dupa restart deoarce dupa rr stockul este iar plin.

 

Edited by PauLL
Link to comment
Share on other sites

  • 0
stock saveStock()
{
	new file[32];
	format(file, sizeof(file), "/stocks.ini");
	dini_Create(file);
	dini_IntSet(file, "StockRamas", gInfernusStock);
	return 1;
}

stock loadStock()
{
	new file[32];
	format(file, sizeof(file), "/stocks.ini");
	if(dini_Exists(file))
	{
		gInfernusStock = dini_Get(file, "StockRamas");
	}
	return 1;
}

loadStock();  il pui in OnGameModeInit()
saveStock();  il pui in OnGameModeExit()

 

incearca si varianta asta, nu garantez ca va functiona, nu prea lucrez c dini.

"Mulţi programatori buni fac programare nu pentru că se aşteaptă să câştige bani sau să fie lăudaţi de public, ci pentru că e amuzant să programezi." - Linus Torvalds

Link to comment
Share on other sites

  • 0

Tot nu a mers..multumesc pentru ajutor..alte pareri?

Am incercat sa ma iau dupa sistemul de salvare/load al teritoriilor insa nu mi-a iesit:

 

public LoadZones()
{
    new arrCoords[6][64];
    new strFromFile2[256];
    new File: file = fopen("Altele/gzones.cfg", io_read);
    if (file)
    {
        new idx;
        while (idx < sizeof(ZoneInfo))
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, '|');
            strmid(ZoneInfo[idx][zOwner], arrCoords[0], 0, strlen(arrCoords[0]), 255);
            ZoneInfo[idx][zMinX] = floatstr(arrCoords[1]);
            ZoneInfo[idx][zMinY] = floatstr(arrCoords[2]);
            ZoneInfo[idx][zMaxX] = floatstr(arrCoords[3]);
            ZoneInfo[idx][zMaxY] = floatstr(arrCoords[4]);
            ZoneInfo[idx][zTeam] = strval(arrCoords[5]);
            //printf("Id:%d Team:%d Owner:%s",idx,ZoneInfo[idx][zTeam],ZoneInfo[idx][zOwner]);
            idx++;
        }
        fclose(file);
    }
    return 1;
}
public SaveZones()
{
    new idx;
    new File: file2;
    while (idx < sizeof(ZoneInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%s|%f|%f|%f|%f|%d\n",
        ZoneInfo[idx][zOwner],
        ZoneInfo[idx][zMinX],
        ZoneInfo[idx][zMinY],
        ZoneInfo[idx][zMaxX],
        ZoneInfo[idx][zMaxY],
        ZoneInfo[idx][zTeam]);
        if(idx == 0)
        {
            file2 = fopen("Altele/gzones.cfg", io_write);
        }
        else
        {
            file2 = fopen("Altele/gzones.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        idx++;
        fclose(file2);
    }
    return 1;
}

Edited by PauLL
Link to comment
Share on other sites

  • 0
forward LoadCarStock();
forward SaveCarStock();

stock GetVal(numb, str[]) {
    new tmp[256], idx;
    for(new i=0; i<numb; i++) {
        tmp=strtok(str, idx);
    }
    return strval(tmp);
}

public LoadCarStock()
{
	new str[32], File:cfg=fopen("Altele/carstock.cfg", io_read);
    format(str, sizeof(str), "%d", gInfernusStock);
	while(fread(cfg, str)) {
		gInfernusStock=GetVal(1, str);	
	}
	fclose(cfg);
	return 1;
}

public SaveCarStock()
{
	new File:ftw=fopen("Altele/carstock.cfg", io_write);
	if(!ftw) {
		fcreate(FILE_NAME);
		fwrite(ftw, gInfernusStock);
		fclose(ftw);
	}
	else {
		fwrite(ftw, gInfernusStock);
		fclose(ftw);
	}
	return 1;
}

am incercat ceva, daca nu merge scz ca te incrc ;)

Edited by Staark

"Mulţi programatori buni fac programare nu pentru că se aşteaptă să câştige bani sau să fie lăudaţi de public, ci pentru că e amuzant să programezi." - Linus Torvalds

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.