Hali
Pár dolog nem tiszta nekem...
Kéne egy olyan változó, aminek ha megváltoztatom az értékét, akkor a használata után visszaáll az eredeti értékére.
Például parancsoknál...
Használok egy változót, aminek ha értéket adok, akkor a következõ parancsnál az elõzõ parancsban megadott értéket veszi fel.
Írok példát, mert furcsán fogalmaztam.
#include <a_samp>
new variable_1;
public OnFilterScriptInit() {
print(\"default value\");
printf(\"%d\\n\", variable_1); // alap értéke 0
print(\"starting test_1\");
test_1();
print(\"test_1 done\");
printf(\"%d\\n\", variable_1); // most 2 az értéke
print(\"starting test_2\");
test_2();
print(\"test_2 done\");
printf(\"%d\\n\", variable_1); // most 13, de nekem 11 kéne
return 1;
}
stock test_1() {
variable_1 += 2; // hozzáadok az értékéhez 2t
return 1;
}
stock test_2() {
variable_1 += 11; // hozzáadok az értékéhez 11et
return 1;
}
stock test_1() {
variable_1 += 2; // hozzáadok az értékéhez 2t
return 1;
}
stock test_2() {
variable_1 = 11; // hozzáadok az értékéhez 11et
return 1;
}
Erre gondolsz?
stock test_1() {
variable_1 += 2; // hozzáadok az értékéhez 2t
return 1;
}
stock test_2() {
variable_1 = 11; // hozzáadok az értékéhez 11et
return 1;
}
Erre gondolsz?
ez igy tiszta.
akkor írok másik példát
van egy globális változóm, például \'temp\' néven
használom sscanf érték beolvasására.
utána egy másik helyen számolásra
new temp;
CMD:mittomén(playerid, params[]) {
if(sscanf(params, \"d\", temp)) return 1;
printf(\"%d\", temp);
return 1;
}
CMD:pontaz(playerid, params[]) {
for(new i = 0; i < MAX_PLAYERS;i++) if(IsPlayerConnected(i)) temp++;
printf(\"%d\", temp);
return 1;
}
szoval a másodiknál az elõzõ parancsban megadott értékkel folytatja a számolást, nekem pedig az kéne, hogy a létrehozásnál felvett értéktõl (0) kezdje, anélkül, hogy minden \'temp\' változó használat elé kéne írnom ezt a sort
temp = 0;
remélem így érthetõbb.