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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Samp2022 - 2022. Július 11. - 00:52:10

Cím: Parancs spam
Írta: Samp2022 - 2022. Július 11. - 00:52:10
Sziasztok

Segitséget szeretnék kérni.

Van egy parancs, amit akárhányszor belehet írni, és lényegében bespameled vele a chatet, és abban kérnék segítséget, hogy lehetne megcsinálni hogy ha pl 1 parancsot már 1x beírtunk, akkor 5 másodpercig ne lehessen újra beírni?


CMD:kickdoor(playerid, params[])
{
   static
       id = -1;

   if (GetFactionType(playerid) != FACTION_POLICE)
       return SendErrorMessage(playerid, "Nem vagy Rendőr.");

   if ((id = House_Nearest(playerid)) != -1)
   {
       if (!HouseData[id][houseLocked])
           return SendErrorMessage(playerid, "Ez a ház nyitva van.");

       ApplyAnimation(playerid, "POLICE", "Door_Kick", 4.0, 0, 0, 0, 0, 0);

      SendNearbyMessage(playerid, 10.0, COLOR_PURPLE, "** %s teljesen erővel az ajtóba rúg, abban reménykedve hogy betöri.", ReturnName(playerid, 0));
       SetTimerEx("KickHouse", 2500, false, "dd", playerid, id);
   }
   else if ((id = Business_Nearest(playerid)) != -1)
   {
      if (!BusinessData[id][bizLocked])
          return SendErrorMessage(playerid, "Ez a üzlet nyitva van.");

        ApplyAnimation(playerid, "POLICE", "Door_Kick", 4.0, 0, 0, 0, 0, 0);

      SendNearbyMessage(playerid, 10.0, COLOR_PURPLE, "** %s teljesen erővel az ajtóba rúg, abban reménykedve hogy betöri.", ReturnName(playerid, 0));
       SetTimerEx("KickBusiness", 2500, false, "dd", playerid, id);
   }
   else {
      SendErrorMessage(playerid, "Nem vagy üzlet és ház közelébe.");
   }
   return 1;
}
Cím: Re:Parancs spam
Írta: gbr333 - 2022. Július 11. - 19:10:35
Szia!

Én erre a GetTickCount (https://open.mp/docs/scripting/functions/GetTickCount) függvényt használtam anno.
Ez lekéri, hogy hány milliszekundum telt el a szerver indítása óta. Egy kicsit számolgatva vele simán megoldható, amit szeretnél.

new gLastDoorKick[MAX_PLAYERS] = 0;  //Ide tárolod el, hogy ki, mikor használta ezt a parancsot utoljára.

CMD:kickdoor(playerid, params[])
{

if(gLastDoorKick[playerid] > GetTickCount() - 5000)  // Ha az utolsó használat ideje nagyobb, mint a jelenlegi idő - 5 másodperc (5000ms), azaz nem telt még el 5 másodperc az utolsó használat óta.
return SendErrorMessage(playerid, "Csak 5 másodpercenként használhatod ezt a parancsot!");

static
id = -1;

if (GetFactionType(playerid) != FACTION_POLICE)
return SendErrorMessage(playerid, "Nem vagy Rendőr.");

if ((id = House_Nearest(playerid)) != -1)
{
if (!HouseData[id][houseLocked])
return SendErrorMessage(playerid, "Ez a ház nyitva van.");

ApplyAnimation(playerid, "POLICE", "Door_Kick", 4.0, 0, 0, 0, 0, 0);
SendNearbyMessage(playerid, 10.0, COLOR_PURPLE, "** %s teljesen erővel az ajtóba rúg, abban reménykedve hogy betöri.", ReturnName(playerid, 0));
SetTimerEx("KickHouse", 2500, false, "dd", playerid, id);
gLastDoorKick[playerid] = GetTickCount(); //Itt regisztrálod, hogy mikor használta utóljára. 
}
else if ((id = Business_Nearest(playerid)) != -1)
{
if (!BusinessData[id][bizLocked])
return SendErrorMessage(playerid, "Ez a üzlet nyitva van.");

ApplyAnimation(playerid, "POLICE", "Door_Kick", 4.0, 0, 0, 0, 0, 0);

SendNearbyMessage(playerid, 10.0, COLOR_PURPLE, "** %s teljesen erővel az ajtóba rúg, abban reménykedve hogy betöri.", ReturnName(playerid, 0));
SetTimerEx("KickBusiness", 2500, false, "dd", playerid, id);
gLastDoorKick[playerid] = GetTickCount();
}
else {
SendErrorMessage(playerid, "Nem vagy üzlet és ház közelébe.");
}
return 1;
}

Cím: Re:Parancs spam
Írta: Samp2022 - 2022. Július 11. - 22:40:11
Nagyon szépen köszönöm, minden tökéletesen müködik.