Szerző Téma: Változó érték probléma  (Megtekintve 573 alkalommal)

Változó érték probléma
« Dátum: 2012. szeptember 13. - 15:57:05 »
0 Show voters
Sziasztok,
Elkészültem az adminrendszerrel, és a következõ problémával találtam szembe magam:
Amikor warnolok, automatikusan 50 (nem kereken hanem random 50 valahány) lesz az Account[player][pWarns] értéke és kickeli a játékost...
Értékváltoztatás csak itt, és (dis)connectnél van, ahol nullára állítom az értékét.
 

CMD:warn(playerid,params[])
{
LevelCheck(playerid,2);
new player, reason[200];
if(sscanf(params,\"ds[200]\",player,reason))return SendClientMessage(playerid,red,\"Használat: /warn <id> <indok>\");
if(IsValidPlayer(player))
{
    Account[player][pWarns]+=1;
if(Account[player][pWarns] >= 3)
{
   format(reason,200,\"Adminisztrátor \\\"%s\\\" kidobta \\\"%s\\\"-t! | Indok: %s | Figyelmeztetések: %d/3\", pName(playerid), pName(player), reason, Account[player][pWarns]);
   SendClientMessageToAll(admincolor,reason);
   Kick(player);
        SaveIn(\"kicklog\",reason);
        SaveIn(\"warnlog\",reason);
}
else
{
   format(reason,200,\"Adminisztrátor \\\"%s\\\" figyelmeztette \\\"%s\\\"-t! | Indok: %s | Figyelmeztetések: %d/3\", pName(playerid), pName(player), reason, Account[player][pWarns]);
   SendClientMessageToAll(admincolor,reason);
        SaveIn(\"warnlog\",reason);
}
}
else SendClientMessage(playerid,red,\"HIBA: A játékos nincs csatlakozva!\");
return 1;
}

 
E:
Nem tudom mért van ez, de ezzel kijavítottam:
 

if(Account[player][pWarns] > 3)Account[player][pWarns] = 0;

 
Nyitva hagyom hátha valaki meg tudja mondani mi a baja.
« Utoljára szerkesztve: 2012. szeptember 13. - 18:43:48 írta 1ST_Chr »

Változó érték probléma
« Válasz #1 Dátum: 2012. szeptember 14. - 00:03:15 »
0 Show voters
OnPlayerConnectnél is nullázd.
Amúgy meg kizárt hogy 50 valamennyi legyen csak úgy, valahol máshol is szerepel ez a változó, nézd csak meg jobban.


NÉZD MEG MIELÕTT RÁÍROD HOGY ÁTNÉZTED ÉS CSAK OTT VAN AHOL ÍRTAD.
 
Egy változó csak úgy a semmitõl nem lesz 50 valamennyi értékû. Ebben biztos lehetsz. :D

Változó érték probléma
« Válasz #2 Dátum: 2012. szeptember 14. - 07:47:07 »
0 Show voters
CTRL + F > pWarns:
-enumerációban
-ResetAllVars funkcióban ahol nullázom az összes játékos változót (ezt lefuttatom kapcsolódáskor és kilépéskor)
-CMD:warn
ennyi...

Változó érték probléma
« Válasz #3 Dátum: 2012. szeptember 14. - 08:52:20 »
0 Show voters
Én meg biztosan állítom hogy egy változó értéke nem lesz csak úgy 50 valamennyi, és mivel csak te elõtted van a szkript kód ezért csak te látod át az összeset, te tudod hogy nézett ki teszteléskor.
Talán nézd meg a kódod, hogy nem-e string/karakter format típust adtál meg egy integer változónak valami format sorban, mivel a számoknak az ascii karakterkódolás értéke a következõ:
 
for(new i; i < 256; i++) printf(\"%c <- ascii: %d\", i, i);

 

0 <- ascii: 48
1 <- ascii: 49
2 <- ascii: 50
3 <- ascii: 51
4 <- ascii: 52
5 <- ascii: 53
6 <- ascii: 54
7 <- ascii: 55
8 <- ascii: 56
9 <- ascii: 57
 
[/quote]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal