A scriptről:-Menti a játszott időt (másodpercekben) dini segítségével.
-A scriptfiles mappában hozz létre egy users nevű mappát, és már nincs más dolgod, mint betölteni ezt.
-Egyszerű, rövid, hasznos, és még nem nagyon találkoztam ilyennel. Gondolom ez majd jól jöhet valakinek ezért megosztom veletek. Szerintem hasznosabb mint szórakozni egy timerrel. (Bár ha bírja a vasad...)
+Le tudod kérni a játszott idődet.
Parancsa: /jatszott_idom
Letöltés (<a href=\"
http://pastebin.com/uF240VMz\">Pastebin</a>)
Letöltés (<a href=\"
http://www.mediafire.com/download/gfohuk9o3e1687x/time.pwn\">.pwn</a>)
Letöltés (<a href=\"
http://www.mediafire.com/download/3e6q5q969m1lda6/time.amx\">.amx</a>)
Forrás kódja:
#include <a_samp>
#include <dini>
#include <zcmd>
static ET[MAX_PLAYERS];
new PlayedTime[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
new filePath[64];
format(filePath,sizeof(filePath),\"users/%s.ini\", pName(playerid));
if(!dini_Exists(filePath)) {
dini_Create(filePath);
PlayedTime[playerid] = 0;
} else {
PlayedTime[playerid] = dini_Int(filePath,\"PTIS\");//PlayedTimeInSeconds
}
ET[playerid] = GetTickCount();
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new filePath[64];
format(filePath,sizeof(filePath),\"users/%s.ini\", pName(playerid));
new interval = GetTickCountDifference(ET[playerid], GetTickCount());
interval = interval/1000;
PlayedTime[playerid] = PlayedTime[playerid]+floatround(interval);
dini_IntSet(filePath,\"PTIS\",PlayedTime[playerid]);
return 1;
}
CMD:jatszott_idom(playerid)
{
new interval = GetTickCountDifference(ET[playerid], GetTickCount());
interval = PlayedTime[playerid]+(interval/1000);
new minutes,seconds,hours;
minutes = interval / 60;
seconds = interval % 60;
hours = minutes / 60;
minutes = minutes % 60;
new str[128];
format(str,sizeof(str),\"Játszott idő: %d óra %d perc %d másodperc\",hours,minutes,seconds);
SendClientMessage(playerid,-1,str);
return 1;
}
stock abs(int)
{
if(int < 0)
return -int;
return int;
}
stock intdiffabs(tick1, tick2)
{
if(tick1 > tick2)
return abs(tick1 - tick2);
else
return abs(tick2 - tick1);
}
stock GetTickCountDifference(a, b)
{
if ((a < 0) && (b > 0))
{
new dist;
dist = intdiffabs(a, b);
if(dist > 2147483647)
return intdiffabs(a - 2147483647, b - 2147483647);
else
return dist;
}
return intdiffabs(a, b);
}
stock pName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}