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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: Petrik - 2012. október 23. - 19:58:45

Cím: Egy parancs napi 1x
Írta: Petrik - 2012. október 23. - 19:58:45
Sziasztok.
Egy olyan scriptet szeretnék kérni tõletek, ami azt csinálja, hogy egy megadott parancsot egy játékos csak napi egyszer tud elvégezni. Szóval ha másodjára próbálja 24 órán belül, akkor kiírná: Te már használtad ezt a parancsot ma! -  :)
Cím: Egy parancs napi 1x
Írta: ZyZu. - 2012. október 23. - 21:02:57
Ha beírja a játékos azt a parancsot akkor inditol egy timert.. ami 24 órás és az ha letelik akkor tudja haszálni itt egy kis leírás a SetTimer illetve a SetTimerEx haszálatáról! http://wiki.sa-mp.com/wiki/SetTimer
Cím: Egy parancs napi 1x
Írta: Petrik - 2012. október 23. - 21:31:28
Idézetet írta: ZyZu date=1351018977\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_Topic
Ha beírja a játékos azt a parancsot akkor inditol egy timert.. ami 24 órás és az ha letelik akkor tudja haszálni itt egy kis leírás a SetTimer illetve a SetTimerEx haszálatáról! http://wiki.sa-mp.com/wiki/SetTimer
 
Lehet, én vagyok a hülye, de ezt nem tudom hova kell tenni... Tudnál írni egy példát?
Cím: Egy parancs napi 1x
Írta: timbaland10 - 2012. október 23. - 21:35:09
Nézd át amit ZyZu küldött. Ha nem értesz a timerekhez:
http://sampforum.hu/index.php?topic=6468.0
Cím: Egy parancs napi 1x
Írta: ZyZu. - 2012. október 23. - 21:51:37
Most ebben az a nehéz, hogy a timert kell menteni vagyis ha lelép a szerverrõl akkor mentse le azt az idõt amennyi lement neki.. de holnap írok neked egy példát akár másat is :D
Cím: Egy parancs napi 1x
Írta: Johnies00 - 2012. október 23. - 22:10:27
Idézetet írta: ZyZu date=1351021897\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_Topic
Most ebben az a nehéz, hogy a timert kell menteni vagyis ha lelép a szerverrõl akkor mentse le azt az idõt amennyi lement neki.. de holnap írok neked egy példát akár másat is :D
 
Az odáig rendbe van hogy lementi a timert, viszont:

Beírja a parancsot -> Eltelik pl 1 óra -> Lelép -> Másnap feljön hogy beírja még várnia kell 23 órát online..  :D
Cím: Egy parancs napi 1x
Írta: Petrik - 2012. október 24. - 17:22:19
Idézetet írta: ZyZu date=1351021897\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_Topic
Most ebben az a nehéz, hogy a timert kell menteni vagyis ha lelép a szerverrõl akkor mentse le azt az idõt amennyi lement neki.. de holnap írok neked egy példát akár másat is :D
 
Akkor tudsz írni? :D Mert én így, új funkciót látatlanba nem igazán tudok megérteni. Oké, ott van a magyarázás, de nincs köztük az, amit én szeretnék   ::|
Cím: Egy parancs napi 1x
Írta: timbaland10 - 2012. október 24. - 17:26:43
Egyáltalán az lehetséges? Ha offline a srác akkor is menjen a timer-je?
Cím: Egy parancs napi 1x
Írta: bendor - 2012. október 24. - 17:30:26
Én egészen másképp oldanám meg. Lementeném fájlba,az idõpontot amikor használta,és ha min. 24 óra az eltérés használhatja.
Pár perc és megcsinálom.
Cím: Egy parancs napi 1x
Írta: Kovacs_Richard - 2012. október 24. - 17:33:36
elég hülye ötlet szerintem a timeres megoldás...van egy sokkal egyszerûbb megoldás...eltárolod mikor írta be utoljára a parancsot és csak akkor engeded meg lefuttatni ha eltelt 24 óra...de itt is 2 megoldás van...lehet szószerint 24 óra és lehet naponta 1x beírható...ez már csak rajtad áll...
Cím: Egy parancs napi 1x
Írta: bendor - 2012. október 24. - 17:40:07
CMD:kuki(playerid,params[])
{
new File[128],hour, minutes;
GetPlayerTime(playerid, hour, minutes);
format(File, sizeof(File), \"User/%s.ini\", Nev(playerid));
if(dini_Int(File,\"CommandTime\")+24 <= hour)
{
SendClientMessage(playerid,0xffffffaa,\"PARI\");
}
else
{
if(!fexist(File))
{
dini_Create(File);
dini_IntSet(File, \"CommandTime\",hour);
}
else
{
dini_IntSet(File, \"CommandTime\",hour);
}
}
return 1;
}
stock Nev(playerid)
{
        new Neve[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Neve, sizeof(Neve));
        return Neve;
}

 
Nem teszteltem,de jónak kéne lennie.
Cím: Egy parancs napi 1x
Írta: Petrik - 2012. október 24. - 18:02:37
Idézetet írta: Bendor date=1351093207\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_Topic

CMD:kuki(playerid,params[])
{
new File[128],hour, minutes;
GetPlayerTime(playerid, hour, minutes);
format(File, sizeof(File), \"User/%s.ini\", Nev(playerid));
if(dini_Int(File,\"CommandTime\")+24 <= hour)
{
SendClientMessage(playerid,0xffffffaa,\"PARI\");
}
else
{
if(!fexist(File))
{
dini_Create(File);
dini_IntSet(File, \"CommandTime\",hour);
}
else
{
dini_IntSet(File, \"CommandTime\",hour);
}
}
return 1;
}
stock Nev(playerid)
{
        new Neve[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Neve, sizeof(Neve));
        return Neve;
}

 
Nem teszteltem,de jónak kéne lennie.
 
Nincs nagyon kedve mûködni :D Errort ír.
Cím: Egy parancs napi 1x
Írta: bendor - 2012. október 24. - 18:08:06
Másold be.
Cím: Egy parancs napi 1x
Írta: Petrik - 2012. október 24. - 18:26:37
Idézetet írta: Bendor date=1351094886\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_Topic
Másold be.
 
26 error  :-[
Cím: Egy parancs napi 1x
Írta: bendor - 2012. október 24. - 18:29:49
Nem baj,
 

közé tedd
Cím: Egy parancs napi 1x
Írta: TengeriMalac - 2012. október 24. - 18:46:56
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.
Cím: Egy parancs napi 1x
Írta: bendor - 2012. október 24. - 19:29:08
Idézetet írta: TengeriMalac date=1351097216\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_Topic
GetPlayerTime 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?
Cím: Egy parancs napi 1x
Írta: Casamiro - 2012. október 24. - 19:37:46
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;
}
Cím: Egy parancs napi 1x
Írta: TengeriMalac - 2012. október 24. - 20:14:43
Idézetet írta: Casamiro date=1351100266\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28977\" data-ipsquote-contentclass=\"forums_Topic
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;
}

 

gyakorlatilag is, de minden parancsnál lekérdezni fájlból, illetve beleírni, kicsit laggoltatja azt.
Cím: Egy parancs napi 1x
Írta: Petrik - 2012. október 25. - 19:23:03
Köszönöm a válaszokat, megoldottam a problémát :)