Jump to content
Geplaatst:
comment_1813717

Hoi,

Ik probeer zegmaar een systeem te maken, waardoor je iets kan shouten door de chat, bijvoorbeeld een teleport ofzo.

Alleen het lukt nog niet helemaal :puh: Ik heb nu dit:

if(strcmp(cmd, "/shoutmessage", true) == 0) {
   new Index;
   new tmp[256];  tmp  = strtok(params,Index);
   new tmp2[256]; tmp2 = strtok(params,Index);
   new str[128];
   new pname[24];

   GetPlayerName(playerid, pname, sizeof(pname));
   format(str, sizeof (str), "-!!- %s Have Shouted: {E3F211}%s -!!-",pname, params[1+strlen(tmp)]);
   SetPlayerScore(playerid, - 2000)
   SendClientMessageToAll(COLOR_RED, str);

Dit heeft 12 errors...

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(161) : error 079: inconsistent return types (array & non-array)

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(164) : error 017: undefined symbol "cmd"

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(166) : error 079: inconsistent return types (array & non-array)

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(168) : warning 225: unreachable code

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(168) : error 017: undefined symbol "cmd"

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(170) : error 017: undefined symbol "strtok"

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(170) : error 033: array must be indexed (variable "tmp")

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(171) : error 017: undefined symbol "strtok"

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(171) : error 033: array must be indexed (variable "tmp2")

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(176) : error 017: undefined symbol "params"

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(176) : warning 215: expression has no effect

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(176) : error 001: expected token: ";", but found "]"

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(176) : error 029: invalid expression, assumed zero

C:\Documents and Settings\Calvin\Bureaublad\Server Folders\pawno\Gamemode.pwn(176) : fatal error 107: too many error messages on one line

Hoe zou ik deze kunnen verhelpen? xD

Ik wil ook, zegmaar dat het wel checkt, of je 2000 score hebt. Hoe zou ik dit kunnen doen?

Ook nog (Sorry :puh:) wil ik een anti spam maken, zodat je alleen maar 1x in de 2 minuten kan shouten. Heeft iemand een idee hoe dit kan?

Ik heb al een tijdje lopen zoeken, proberen, maar het is me niet gelukt. Alvast bedankt voor alle hulp :-)

Penait1

Featured Replies

  • 1 maand later...
Geplaatst:
  • Auteur
comment_1834871

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:
comment_1836731

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...

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.