Jump to content

Shout systeem...


Recommended Posts

Geplaatst:

Om dat met een timer te doen, kun je het zo doen:

Bovenaan bij je defines zet je:

new ShoutToegestaan = 1;
new Timer1;

Je shout command verander je nu zo:

dcmd_shout(playerid, params[])
{
   #pragma unused params
   if(ShoutToegestaan == 1)
   {
       new PlayerName[MAX_PLAYER_NAME];
       new reason[64];
       GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
       format(string, sizeof(string), "%s Shouted: %z", PlayerName, reason);
       SendClientMessageToAll(0xFF0000FF, string);
       SetPlayerScore(playerid, GetPlayerScore(playerid) - 5000);
       PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
       Timer1 = SetTimer("antishoutspam",120000,false); // 2 minuten is 120 seconden, dus 120000 milliseconden
       ShoutToegestaan = 0;
   }
   else if(ShoutToegestaan == 0)
   {
       SendClientMessage(playerid, COLOR_LIGHTBLUE, "SERVER: You need to wait 2 minuts before you can shout again! Take a Cup of Thea and try again.");
   }
   return 1;
}

De public antishoutspam, moet nu zo worden:

public antishoutspam(playerid)
{
   ShoutToegestaan = 1;
   KillTimer(Timer1);
   return 1;

}

De disableantishoutspam, kun je weghalen

Als het goed is moet het werken. Zo niet, verbeter me maar :)

Harstikke bedankt, het werkt! :D

Maar, (altijd een maar.. -,- xD)

Hoe kan ik checken of de speler wel 5000 score heeft?

  • 1 maand later...
Geplaatst:

Hallo, ik wil weer iets verbeteren :D

Ik wil nu zegmaar dat de timer ALLEEN start voor 1 speler. Want nu als 1 iemand /shout doet, komt er bij iedereen te staan als je binnen 2 minuten /shout doet, dat je 2 minuten moet wachten, terwijl die eht nog niet hebben getypt :D

Ik heb nu dit:

dcmd_shout(playerid, params[])
   {
   #pragma unused params
if(GetPlayerScore(playerid) <= 5000) SendClientMessage(playerid, COLOR_LIGHTBLUE, "You need 5000 score ore more! Try to get 5000 score, and try again.");
else if(ShoutToegestaan == 0) SendClientMessage(playerid, COLOR_LIGHTBLUE, "SERVER: You need to wait 2 minuts before you can shout again! Take a Cup of Tea and try again.");
else if(!strlen(params))  SendClientMessage(playerid, 0xFF0000AA, "ERROR: Use: /Shout [Message] - Try again!");
else 
   {
   new PlayerName[MAX_PLAYER_NAME];
   GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
   format(string, sizeof(string), "{AD2FA5}%s Shouted: {F0FC03}%s!", PlayerName, params);
   SendClientMessageToAll(0xFF0000FF, string);
   SetPlayerScore(playerid, GetPlayerScore(playerid) - 5000);
   PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
   Timer1 = SetTimer("antishoutspam",120000,false);
   ShoutToegestaan = 0;
   GameTextForAll("-!!- Theres a new shout -!!-",2000,1);
  	}
return 1;
}

Hoe kan ik zorgen dat IEDERE speler 1x mag shouten in 2 minuten, terwijl een andere speler al geshout kan hebben?

Geplaatst: (bewerkt)

Hmmhmm, en je hebt wel door dat jou server de grootste ram vreter is die er is?

new string [265];

Y_Less: Why you shouldn't make your strings 256 cells big

een speler naam is maximaal 24 tekens.

het maximale wat een speler in de chat kan invullen is 128 tekens.

het maximale wat de chat kan weergeven is 128 tekens

dus = naam + tekst = 24 + 104 (is totaal 128 tekens)

-----------------------------------------------------------------------------------

Tada, zo ist goed :).

new HasShouted[MAX_PLAYERS char];

dcmd_shout(playerid, params[])
{
if(GetPlayerScore(playerid) <= 5000) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "You need 5000 score ore more! Try to get 5000 score, and try again.");
if(HasShouted[playerid]) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "SERVER: You need to wait 2 minuts before you can shout again! Take a Cup of Tea and try again.");
if(!strlen(params)) return  SendClientMessage(playerid, 0xFF0000AA, "ERROR: Use: /Shout [Message] - Try again!");

   new PlayerName[MAX_PLAYER_NAME];
   GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
   format(string, sizeof(string), "{AD2FA5}%s Shouted: {F0FC03}%s!", PlayerName, params);
   SendClientMessageToAll(0xFF0000FF, string);
   SetPlayerScore(playerid, GetPlayerScore(playerid) - 5000);
   PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
   GameTextForAll("-!!- Theres a new shout -!!-",2000,1);

   SetTimerEx("antishoutspam",120000,false,"i",playerid);
   HasShouted[playerid] = true;
return 1;
}

public antishoutspam(playerid)
{
	HasShouted[playerid] = false;
}

Bewerkt: door Crusher!!

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...