Sup Darau misiju sistema, ir nezinau kaip man uzkraut informaciją.
new pMisijos[MAX_PLAYERS][Misijos][MAX_ETAPAI];
zodziu kiekviena misija turi kazkiek etapu tarkim žinom kad pirma misija turi 2 etapus, trečia turi 5.
pMisijos[playerid][0][0]
pMisijos[playerid][0][1]
...
pMisijos[playerid][1][0]
pMisijos[playerid][1][1]
pMisijos[playerid][1][2]
pMisijos[playerid][1][3]
pMisijos[playerid][1][4]
...
ir as jas saugau taip kad eitu uzkraut su sscanf pvz "1 0 0 1 1 0 1" tai kaip man uzkraut su sscanf jeigu as zinau kiek misija turi etapu? Tarkim stringas: "1 1 0 0 1", žinau kad pirma misija turi 3 etapus, antra 2.
pMisijos[playerid][0][0] = 1;
pMisijos[playerid][0][1] = 1;
pMisijos[playerid][0][2] = 0;
-- kita misija
pMisijos[playerid][1][0] = 0;
pMisijos[playerid][1][1] = 1;
Dėkui už pagalbą, nežinau ar suprasit, sunku paaiškint :D
Bebras prieš 9 metus
Krauk kaip masyvą!
new masyvas[3];
sscanf(string, "a<i>[3]", masyvas);
Arba tavo atvejo teks formatuoti tai kad gautum kažką panašaus:
new masyvacs[3], string[10];
format(string, sizeof(string), "a<i>[%d]", dydis);
sscanf(something, string, masyvas);
Yiin prieš 9 metus
Kodėl darai new pMisijos[MAX_PLAYERS][Misijos][MAX_ETAPAI];
, o ne new pMisijos[MAX_PLAYERS][Misijos];
, ir tuomet pMisijos[playerid][misijosID] = 5; // penktas etapas
?
Infrox prieš 9 metus
Bet tai jeigu aš turiu stringą "1 0 0 1 1 0 1", pirma misija turi 3 etapus, tai pirmus tris skaičius nuskaito, nustato, o pereinant į kitą misiją vėl tą patį stringą skaitys?
Bebras prieš 9 metus
Tai problema dar likusi? Jei taip, papasakok apie viską plačiau. Nes dar nelabai suprantu situaciją.
Infrox prieš 9 metus
Taip dar liko, tik noriu paklaust, kaip man padaryt kad išsaugotu kaip masyva, ta prasme jeigu stringas = "11000" tai
pMisijos[playerid][i][0] = 1;
pMisijos[playerid][i][1] = 1;
pMisijos[playerid][i][2] = 0;
pMisijos[playerid][i][3] = 0;
pMisijos[playerid][i][4] = 0;
Bebras prieš 9 metus
Tai tu nori iš string 11000 sudėti tuos skaičius į masyvą?
for(new j = 0; j < strlen(string); j++)
{
pMisijos[ playerid ][ i ][ j ] = (string[j] == "1") ? (1) : (0);
}
Infrox prieš 9 metus
Tavo kodas neveikia, error 033: array must be indexed (variable "-unknown-").
bandžiau šitaip:
for(new c = 0; c < strlen(LaikinasString); c++)
{
printf("LaikinasString[%d] = %s",c,LaikinasString[c]);
pMisijos[playerid][i][c] = (!strcmp(LaikinasString[c],"1")) ? (1) : (0);
}
stringas atrodo taip: "10110" bet printina:
[12:51:34] LaikinasString[0] = 10110
[12:51:34] LaikinasString[1] = 0110
[12:51:34] LaikinasString[2] = 110
[12:51:34] LaikinasString[3] = 10
[12:51:34] LaikinasString[4] = 0
Bebras prieš 9 metus
Taip printina nes %s rodo viską nuo pasirinkto indekso iki galo. Jei nori išprintinti vieną raidę, naudok %c.