Szerző Téma: Eltelt idõ a szerveren  (Megtekintve 3032 alkalommal)

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Eltelt idõ a szerveren
« Dátum: 2012. augusztus 18. - 21:44:22 »
+5 Show voters
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!
« Utoljára szerkesztve: 2012. augusztus 19. - 19:48:24 írta Rupert »

Nem elérhető bendor

  • 2949
    • Profil megtekintése
Eltelt idõ a szerveren
« Válasz #1 Dátum: 2012. augusztus 19. - 13:10:33 »
0 Show voters
Köszi,f*sza lett   ;)
Felhasználtam  :D

Eltelt idõ a szerveren
« Válasz #2 Dátum: 2012. augusztus 19. - 13:13:22 »
0 Show voters
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.

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Eltelt idõ a szerveren
« Válasz #3 Dátum: 2012. augusztus 19. - 13:35:38 »
0 Show voters
Közsi ɐʞzssǝlosz a tanácsot.:D

Eltelt idõ a szerveren
« Válasz #4 Dátum: 2012. augusztus 19. - 18:03:35 »
0 Show voters
szép grat :D +

Nem elérhető Spedy

  • 227
    • Profil megtekintése
Eltelt idõ a szerveren
« Válasz #5 Dátum: 2012. augusztus 19. - 19:43:05 »
0 Show voters
Repül a + :)  :thumbsup:

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Eltelt idõ a szerveren
« Válasz #6 Dátum: 2012. augusztus 19. - 19:47:39 »
0 Show voters
Kijavítva egy aprócska bug, letöltési link frissítve.

Eltelt idõ a szerveren
« Válasz #7 Dátum: 2012. augusztus 20. - 09:07:06 »
0 Show voters
Ez 30 játékosnál laggot okozhat.

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Eltelt idõ a szerveren
« Válasz #8 Dátum: 2012. augusztus 20. - 10:02:03 »
0 Show voters
Nem hinném, hogy laggot okozna....

Eltelt idõ a szerveren
« Válasz #9 Dátum: 2012. augusztus 21. - 14:01:27 »
0 Show voters
Hm!Eleg jol nez ki lehet hogy fel hasznalom, Grat! :D

Eltelt idõ a szerveren
« Válasz #10 Dátum: 2012. augusztus 21. - 15:59:57 »
0 Show voters
Jó lett!:) óránként irja ki?

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Eltelt idõ a szerveren
« Válasz #11 Dátum: 2012. augusztus 21. - 16:16:17 »
0 Show voters
Ó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.

Eltelt idõ a szerveren
« Válasz #12 Dátum: 2012. augusztus 21. - 17:55:21 »
0 Show voters
Ó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

Eltelt idõ a szerveren
« Válasz #13 Dátum: 2012. szeptember 21. - 14:51:32 »
0 Show voters
Jó kis script ez nekem nagyon hasznos :))

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Eltelt idõ a szerveren
« Válasz #14 Dátum: 2012. szeptember 22. - 12:15:38 »
0 Show voters
azt meg tudod, csinálni ha egy játékos eléri az 50 órát akkor kapjon pl életet?  :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal