Sziasztok. A segítségkérõ témában megírtam egy \"eltelt idõ\" scriptet az egyik segítségkérõnek.
Itt a script kódja:
#include <a_samp>
#include <dini>
#include <zcmd>
new file[128];
enum Info
{
orak,
percek,
mpercek
}
new pInfo[MAX_PLAYERS][info];
new timerke[MAX_PLAYERS];
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Eltoltott ido script by Rupert\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
print(\"Script bezarva. (Eltoltott ido)\");
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
KillTimer(timerke[playerid]);
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(file,128,\"/ido/%s.ini\",name);
dini_IntSet(file,\"Orak\",pInfo[playerid][orak]);
dini_IntSet(file,\"Percek\",pInfo[playerid][percek]);
dini_IntSet(file,\"Mpercek\",pInfo[playerid][mpercek]);
}
public OnPlayerSpawn(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(file,128,\"/ido/%s.ini\",name);
if(!dini_Exists(file))
{
dini_Create(file);
dini_IntSet(file,\"Orak\",0);
dini_IntSet(file,\"Percek\",0);
dini_IntSet(file,\"Mpercek\",0);
pInfo[playerid][orak] = dini_Int(file,\"Orak\");
pInfo[playerid][percek] = dini_Int(file,\"Percek\");
pInfo[playerid][mpercek] = dini_Int(file,\"Mpercek\");
}
else
{
pInfo[playerid][orak] = dini_Int(file,\"Orak\");
pInfo[playerid][percek] = dini_Int(file,\"Percek\");
pInfo[playerid][mpercek] = dini_Int(file,\"Mpercek\");
}
timerke[playerid] = SetTimerEx(\"toltottorak\",1000,1,\"i\",playerid);
SetPlayerScore(playerid,pInfo[playerid][orak]);
return 1;
}
public OnPlayerUpdate(playerid)
{
SetPlayerScore(playerid,pInfo[playerid][orak]);
}
forward toltottorak(playerid);
public toltottorak(playerid)
{
pInfo[playerid][mpercek]++;
if(pInfo[playerid][mpercek] == 59)
{
pInfo[playerid][mpercek] = 0;
pInfo[playerid][percek]++;
if(pInfo[playerid][percek] == 59 && pInfo[playerid][mpercek] == 59)
{
pInfo[playerid][percek] = 0;
pInfo[playerid][mpercek] = 0;
pInfo[playerid][orak]++;
new str[128];
format(str,128,\"Eltelt az eltelt idõidben egy óra! Játszott óráid: %i\",pInfo[playerid][orak]);
SendClientMessage(playerid,-1,str);
}
}
return 1;
}
CMD:oraim(playerid,params[])
{
new str[128];
format(str,128,\"Játszott óráid: %i óra, %i perc és %i másodperc.\",pInfo[playerid][orak],pInfo[playerid][percek],pInfo[playerid][mpercek]);
SendClientMessage(playerid,-1,str);
return 1;
}
Írjátok be hogy /oraim, és kijelzi az összesen eltelt idõtöket.
A pontjaitokon (score) mutatja az óráitokat.
A scriptfiles mappában legyen egy \"ido\" mappa.
Letöltés: http://www.solidfiles.com/d/6f396c81d9/
Tesztelve, mûködik!
Egyszer már leírtam csak elveszett amit írtam.
Nem rossz de talán lehetne jobb is egy észrevétel rögtön, amit egy részlettel kezdenék:
format(file,128,\"/ido/%s.ini\",name) if(!dini_Exists(file))
{
dini_Create(file);
dini_IntSet(file,\"Orak\",0);
dini_IntSet(file,\"Percek\",0);
dini_IntSet(file,\"Mpercek\",0);
pInfo[playerid][orak] = dini_Int(file,\"Orak\");
pInfo[playerid][percek] = dini_Int(file,\"Percek\");
pInfo[playerid][mpercek] = dini_Int(file,\"Mpercek\");
Gyakorlatilag ebben a részben ellenõrzõd hogy létezik-e az adott fájl ha ez nem létezik akkor létrehozod (dini_Create) majd létrehozol benne 3 adatsort (Orak, Percek, Mpercek)
amelyeknek te magad megadtál nulla értéket (,0);) majd a létrehozott fájlból kiolvastatod az adatokat a változókba (pInfo[playerid], dini_Int(..), a kérdésem a következõ lenne:
Minek olvastatod ki a fájlból (dini_Int(..) az adatot ha te éppen elõtte határoztad meg hogy nulla legyen az értéke?
Nem lenne egyszerûbb így?
pInfo[playerid][(valtozo)] = 0;
És még egy javaslat vagy kettõ, ne használj dini-t, meg felesleges az ilyen elrendezés a fájlban
Orak = 0
Percek = 0
Mpercek = 0
Lehetne csak ennyi:
0/0/0
234/54/23
vagy
0 0 0
234 54 23
Senki nem fogja megnyitni a .txt fájlokat olvasásra rajtad kívül, a játékban meg úgy is csak az eredmény a lényeg.
Ez a harmadik kísérlet hogy elküldjem ezt az üzenetet.