Egy parancs napi 1x

Indította Petrik, 2012. október 23. - 19:58:45

Előző téma - Következő téma

TengeriMalac

A timeres megoldás hülyeség.. laggol, és nem biztonságos, illetve restart után törlõdik.
a GetPlayerTime a játékbeli idõt kérdezi le (a játékban 24 perc 1 nap)
Én megoldásom.
 
new CommandTime[MAX_PLAYERS]; //változó
CMD:mittomén(playerid, params[]) {
if(getdate() < CommandTime[playerid]) return SendClientMessage(playerid, -1, \"Ma már használtad ezt a parancsot!\"); //lekérdezi, hogy a mai dátum nagyobb-e a mentettnél, ha nem, akkor hibaüzenetet küld.
//ha nem használta, akkor blablabla..
CommandTime[playerid] = getdate() + 1; //hozzáad a mai naphoz egyet, majd változóba menti
return 1;
}
public OnPlayerConnect(playerid) {
CommandTime[playerid] = dini_Int(fájl, \"CommandTime\"); //betölti az idõt a változóba
return 1;
}
public OnPlayerDisconnect(playerid, reason) {
dini_IntSet(fájl, \"CommandTime\", CommandTime[playerid]); //elmenti a változóból az idõt fájlba
return 1;
}

 
nem teszteltem.

bendor

Idézetet írta: TengeriMalac date=1351097216\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_TopicGetPlayerTime a játékbeli idõt kérdezi le (a játékban 24 perc 1 nap)
 
Ha realtime a játékbeli idõ,akkor is?

Casamiro

Elvileg jónak kell lennie
CMD:parancs(playerid,params[])
{
    new fajl[32];
    format(fajl, sizeof fajl, \"%s.ini\", pName(playerid));
    if(!fexist(fajl) || fexist(fajl) && gettime() > dini_Int(fajl, \"ParancsIdo\"))
    {
        // használhatja
        dini_IntSet(fajl, \"ParancsIdo\", (gettime()+24*3600));
    }
    else
    {
        // nem használhatja
    }
    return 1;
}

TengeriMalac

Idézetet írta: Casamiro date=1351100266\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_TopicElvileg jónak kell lennie
CMD:parancs(playerid,params[])
{
    new fajl[32];
    format(fajl, sizeof fajl, \"%s.ini\", pName(playerid));
    if(!fexist(fajl) || fexist(fajl) && gettime() > dini_Int(fajl, \"ParancsIdo\"))
    {
        // használhatja
        dini_IntSet(fajl, \"ParancsIdo\", (gettime()+24*3600));
    }
    else
    {
        // nem használhatja
    }
    return 1;
}

 

gyakorlatilag is, de minden parancsnál lekérdezni fájlból, illetve beleírni, kicsit laggoltatja azt.

Petrik

Köszönöm a válaszokat, megoldottam a problémát :)