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: bruti1999 - 2012. augusztus 25. - 22:39:47

Cím: GMX
Írta: bruti1999 - 2012. augusztus 25. - 22:39:47
Sziasztok!
Egy olyan gmxet szeretnék kérni amit ha beírok akkor elkezd visszafele számolni 10-tõl és ha lejárt a 10másodperc akkor lesz restart
Cím: GMX
Írta: ZeRo - 2012. augusztus 25. - 23:28:09

public OnPlayerCommandText( playerid, cmdtext[  ] ) {
if( !strcmp( \"/gmx\", cmdtext, true ) ) {
    SetTimer( \"DoGmx\", 10000, false );
    SendClientMessageToAll( 0xFF9100AA, \">> 10 másodperc múlva a szerver újraindul! <<\" );
    return 1;
}
return 0;
}
public DoGmx(  );
public DoGmx(  ) { SendRconCommand( \"gmx\" ); }

 
Esetleg beleírhatod, hogy csak admin tudja használni, meg ilyesmi.
Cím: GMX
Írta: Gentleman - 2012. augusztus 25. - 23:32:38
10 darab timer? Egy is simán megoldja:
 

new szamok;
 
COMMAND:restart(playerid)
{
   if(!IsPlayerAdmin(playerid))
   {
       SendClientMessage(playerid, -1, \"Nem vagy admin \");
       return 1;
    }
    szamok = 10;
    SetTimer(\"Visszaszamlalas\", 1*1000, true);
    GameTextForAll(\"~r~A szerver hamarosan ujraindul!\",1000,2);
   return 1;
}
forward Visszaszamlalas();
public Visszaszamlalas()
{
   szamok --;
   if(szamok > 0)
   {
       new szoveg[15];
       format(szoveg, 15, \"~r~%d\", szamok);
       GameTextForAll(szoveg,1000,2);
   
    }
    else
    {
       SendRconCommand(\"gmx\");
       //A timert nem szükséges változóra kötni majd killtimerezni ugyanis a restart megteszi ezt nekünk :)
    }
    return 1;
}
Cím: GMX
Írta: Walaky - 2012. augusztus 26. - 10:35:54
Ebben az esetben szerintem teljesen mindegy, hogy hány timer, mert restart után már úgy sem \"emlékszik\" a szerver arra, hogy hány timer volt elõtte.
Cím: GMX
Írta: Gentleman - 2012. augusztus 26. - 11:10:10
Idézetet írta: Walaky date=1345970154\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"26870\" data-ipsquote-contentclass=\"forums_Topic
Ebben az esetben szerintem teljesen mindegy, hogy hány timer, mert restart után már úgy sem \"emlékszik\" a szerver arra, hogy hány timer volt elõtte.
 
Nem lenne jó ha pont elõtte fagyna be az egész nem? Restartig el is kell jutni.
Cím: GMX
Írta: Walaky - 2012. augusztus 26. - 12:15:37
Normális esetben nem fagy be, ha még is, akkor ott más javítanivaló is van.
Cím: GMX
Írta: _I[TM]I_Dexter[CL] - 2012. augusztus 26. - 14:11:14
Idézetet írta: Gentleman date=1345930358\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"26870\" data-ipsquote-contentclass=\"forums_Topic
10 darab timer? Egy is simán megoldja:
 

new szamok;
 
COMMAND:restart(playerid)
{
   if(!IsPlayerAdmin(playerid))
   {
       SendClientMessage(playerid, -1, \"Nem vagy admin \");
       return 1;
    }
    szamok = 10;
    SetTimer(\"Visszaszamlalas\", 1*1000, true);
    GameTextForAll(\"~r~A szerver hamarosan ujraindul!\",1000,2);
   return 1;
}
forward Visszaszamlalas();
public Visszaszamlalas()
{
   szamok --;
   if(szamok > 0)
   {
       new szoveg[15];
       format(szoveg, 15, \"~r~%d\", szamok);
       GameTextForAll(szoveg,1000,2);
   
    }
    else
    {
       SendRconCommand(\"gmx\");
       //A timert nem szükséges változóra kötni majd killtimerezni ugyanis a restart megteszi ezt nekünk :)
    }
    return 1;
}

 

Ez a jó megoldás.
Én ezt használnám a kérdezõ helyében.
Gentle: Adtam rá 1 pluszt :)
Kérdezõ: Szerintem ezt használd! Ez a legjobb megoldás.
[ Bocs az offért :D ]
Dexter
Cím: GMX
Írta: bruti1999 - 2012. augusztus 26. - 14:52:51
Köszi!
Zárok.