GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: Rupert - 2012. augusztus 18. - 21:44:22

Cím: Eltelt idõ a szerveren
Írta: Rupert - 2012. augusztus 18. - 21:44:22
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!
Cím: Eltelt idõ a szerveren
Írta: bendor - 2012. augusztus 19. - 13:10:33
Köszi,f*sza lett   ;)
Felhasználtam  :D
Cím: Eltelt idõ a szerveren
Írta: Zsolesszka - 2012. augusztus 19. - 13:13:22
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.
Cím: Eltelt idõ a szerveren
Írta: Rupert - 2012. augusztus 19. - 13:35:38
Közsi ɐʞzssǝlosz a tanácsot.:D
Cím: Eltelt idõ a szerveren
Írta: Striker - 2012. augusztus 19. - 18:03:35
szép grat :D +
Cím: Eltelt idõ a szerveren
Írta: Spedy - 2012. augusztus 19. - 19:43:05
Repül a + :)  :thumbsup:
Cím: Eltelt idõ a szerveren
Írta: Rupert - 2012. augusztus 19. - 19:47:39
Kijavítva egy aprócska bug, letöltési link frissítve.
Cím: Eltelt idõ a szerveren
Írta: 1ST_Chr - 2012. augusztus 20. - 09:07:06
Ez 30 játékosnál laggot okozhat.
Cím: Eltelt idõ a szerveren
Írta: DrAkE - 2012. augusztus 20. - 10:02:03
Nem hinném, hogy laggot okozna....
Cím: Eltelt idõ a szerveren
Írta: Dante Sanders - 2012. augusztus 21. - 14:01:27
Hm!Eleg jol nez ki lehet hogy fel hasznalom, Grat! :D
Cím: Eltelt idõ a szerveren
Írta: _[S]wat.$ - 2012. augusztus 21. - 15:59:57
Jó lett!:) óránként irja ki?
Cím: Eltelt idõ a szerveren
Írta: Rupert - 2012. augusztus 21. - 16:16:17
Óránként kijelzi hogy eltelt egy óra, és hogy ennyi meg ennyi.
De meg tudod nézni a pontos eltöltött idõt az /oraim paranccsal.
Cím: Eltelt idõ a szerveren
Írta: _[S]wat.$ - 2012. augusztus 21. - 17:55:21
Óránként kijelzi hogy eltelt egy óra, és hogy ennyi meg ennyi.
De meg tudod nézni a pontos eltöltött idõt az /oraim paranccsal.
 
[/quote]
oksam!!:DD cak most sajnos nem jó a gépem :S
Cím: Eltelt idõ a szerveren
Írta: [(The_Pro_Kari)] - 2012. szeptember 21. - 14:51:32
Jó kis script ez nekem nagyon hasznos :))
Cím: Eltelt idõ a szerveren
Írta: ZyZu. - 2012. szeptember 22. - 12:15:38
azt meg tudod, csinálni ha egy játékos eléri az 50 órát akkor kapjon pl életet?  :D
Cím: Eltelt idõ a szerveren
Írta: [(The_Pro_Kari)] - 2012. szeptember 22. - 16:06:48
ZyZu nem is rossz 5let :)) csak vmi érdekeset kapjon vagy mondjuk az onplayerclick-hez megtod azt sinni h kiadja annak a játékosnak az eltelt idejét akire kattint ha igen megköszönném!! :)