Jump to content

Command + ID


Recommended Posts

Geplaatst:

Hey!

Als ik /hallo <id> typ, wil ik dat er bijv een bericht word verzonden aan alle mensen met deze tekst:

Hallo, <Hier de naam van de gene met dat id>

Maar hoe moet dit?

  • Reacties 49
  • Created
  • Laatste reactie

Top Posters In This Topic

  • Johannetje2

    24

  • GTAguillaume

    12

  • Wanted

    5

  • Freaksken

    4

Geplaatst: (bewerkt)

In OnPlayerCommandText:

if(strcmp(cmdtext, "/hallo", true))
{
new giveplayerid, pName[MAX_PLAYER_NAME], string[50];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
	SendClientMessage(playerid, 0xFF0000AA, "Gebruik: /hallo [id]");
	return 1;
}
giveplayerid = strval(tmp);

GetPlayerName(giveplayerid, pName, sizeof(pName));
format(string, sizeof(string), "Hallo, %s", pName);
SendClientMessageToAll(0xFFFFFFAA, string);
return 1;
}

EDIT: Dit soort vragen horen volgens mij in het Script aanvraag topic.

Bewerkt: door Wanted
Geplaatst:

In OnPlayerCommandText:

if(strcmp(cmdtext, "/hallo", true))
{
new giveplayerid, pName[MAX_PLAYER_NAME], string[50];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
	SendClientMessage(playerid, 0xFF0000AA, "Gebruik: /hallo [id]");
	return 1;
}
giveplayerid = strval(tmp);

GetPlayerName(giveplayerid, pName, sizeof(pName));
format(string, sizeof(string), "Hallo, %s", pName);
SendClientMessageToAll(0xFFFFFFAA, string);
return 1;
}

EDIT: Dit soort vragen horen volgens mij in het Script aanvraag topic.

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(351) : error 017: undefined symbol "tmp"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(351) : error 017: undefined symbol "idx"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(352) : error 017: undefined symbol "tmp"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(357) : error 017: undefined symbol "tmp"

Geplaatst: (bewerkt)

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(351) : error 017: undefined symbol "tmp"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(351) : error 017: undefined symbol "idx"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(352) : error 017: undefined symbol "tmp"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(357) : error 017: undefined symbol "tmp"

Zet bovenaan OnPlayerCommandText:

new tmp[128], idx;

EDIT: Whoops, had de reactie hierboven niet gezien. :$

Bewerkt: door Wanted
Geplaatst:

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(351) : error 017: undefined symbol "tmp"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(351) : error 017: undefined symbol "idx"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(352) : error 017: undefined symbol "tmp"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(357) : error 017: undefined symbol "tmp"

Zet bovenaan OnPlayerCommandText:

new tmp[128], idx;

EDIT: Whoops, had de reactie hierboven niet gezien. :$

Stel je heet ingame killer dan welk id ik ook intyp, er staat altijd: "Hallo, killer"

En waar zijn die getallen voor: new tmp[128], idx;

Geplaatst: (bewerkt)

Stel je heet ingame killer dan welk id ik ook intyp, er staat altijd: "Hallo, killer"

Dat komt waarschijnlijk doordat je een ID hebt ingevoerd van een speler die niet online was. Vervang je command in dit om een melding te krijgen als je een verkeerd ID hebt ingevoerd.

if(strcmp(cmdtext, "/hallo", true))
{
       new giveplayerid, pName[MAX_PLAYER_NAME], string[50];
       tmp = strtok(cmdtext, idx);
       if(!strlen(tmp))
       {
               SendClientMessage(playerid, 0xFF0000AA, "Gebruik: /hallo [id]");
               return 1;
       }
       giveplayerid = strval(tmp);

       if(!IsPlayerConnected(giveplayerid))
       {
               SendClientMessage(playerid, 0xFF0000AA, "Deze speler is niet online!");
               return 1;
       }

       GetPlayerName(giveplayerid, pName, sizeof(pName));
       format(string, sizeof(string), "Hallo, %s", pName);
       SendClientMessageToAll(0xFFFFFFAA, string);
       return 1;
}

En waar zijn die getallen voor: new tmp[128], idx;

Dat is hoeveel karakters de zin maximaal kan hebben. Een command kan maximaal 128 tekens lang zijn, dus vandaar dat daar 128 staat.

Bewerkt: door Wanted
Geplaatst:

Stel je heet ingame killer dan welk id ik ook intyp, er staat altijd: "Hallo, killer"

Dat komt waarschijnlijk doordat je een ID hebt ingevoerd van een speler die niet online was. Vervang je command in dit om een melding te krijgen als je een verkeerd ID hebt ingevoerd.

if(strcmp(cmdtext, "/hallo", true))
{
       new giveplayerid, pName[MAX_PLAYER_NAME], string[50];
       tmp = strtok(cmdtext, idx);
       if(!strlen(tmp))
       {
               SendClientMessage(playerid, 0xFF0000AA, "Gebruik: /hallo [id]");
               return 1;
       }
       giveplayerid = strval(tmp);

       if(!IsPlayerConnected(giveplayerid))
       {
               SendClientMessage(playerid, 0xFF0000AA, "Deze speler is niet online!");
               return 1;
       }

       GetPlayerName(giveplayerid, pName, sizeof(pName));
       format(string, sizeof(string), "Hallo, %s", pName);
       SendClientMessageToAll(0xFFFFFFAA, string);
       return 1;
}

En waar zijn die getallen voor: new tmp[128], idx;

Dat is hoeveel karakters de zin maximaal kan hebben. Een command kan maximaal 128 tekens lang zijn, dus vandaar dat daar 128 staat.

Ik kreeg weer die error en heb: new tmp[128], idx; er neergezet, maar nogsteeds een error:

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(352) : error 047: array sizes do not match, or destination array is too small

Geplaatst:

Als ik die met 128 heb dan krijg ik dit:

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(352) : error 047: array sizes do not match, or destination array is too small

En als ik die van 256 heb dan krijg ik bij elk id:

Hallo, killer

Geplaatst: (bewerkt)

cmd = strtok(cmdtext, idx);

dit gans vanvoor aan OnPlayerCommand en dan:

if(strcmp(cmdtext, "/hallo", true))

Vervangen door:

if(strcmp(cmd, "/hallo", true))

Bewerkt: door GTAguillaume
Geplaatst:

Ja, hallo mensen! :bonk:

Geef me nou eens die goede code!!

Iedereen zegt steeds weer iets anders dan moet dat getal 128 zijn en dan 256 en dan de commando regel aanpassen!?

Ik zit heel die gamemode hier te *********!

Dit heb ik nou:

if(strcmp(cmd, "/hallo", true))
{
       new giveplayerid, pName[MAX_PLAYER_NAME], string[50];
       new idx, tmp[256];
       cmd = strtok(cmdtext, idx);
       if(!strlen(tmp))
       {
               SendClientMessage(playerid, 0xFF0000AA, "Gebruik: /hallo [id]");
               return 1;
       }
       giveplayerid = strval(tmp);

       if(!IsPlayerConnected(giveplayerid))
       {
               SendClientMessage(playerid, 0xFF0000AA, "Deze speler is niet online!");
               return 1;
       }

       GetPlayerName(giveplayerid, pName, sizeof(pName));
       format(string, sizeof(string), "Hallo, %s", pName);
       SendClientMessageToAll(0xFFFFFFAA, string);
       return 1;
}

Geplaatst: (bewerkt)

Dat ziet er nogtans op het eerste gezicht goed uit, maar wat is nu eigelijk het probleem??

EDIT:

       new idx, cmd[256];
       cmd = strtok(cmdtext, idx);

Dit moet gangs vanvoor aan OnPlayerCommand staan en

tmp = strtok(cmdtext, idx);

moet onder

if(strcmp(cmd, "/hallo", true))
{

staan...

Bewerkt: door GTAguillaume
Geplaatst:

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(350) : error 017: undefined symbol "cmd"

C:\Users\Johan Wenting\Documents\Server\gamemodes\NL2.pwn(354) : error 017: undefined symbol "cmd"

En als het getal 256 is, ookal vul ik dit in: /hallo 100000000000 dan staat er nogsteeds:

Hallo, killer

Geplaatst:

Aha, fout gevonden.

if(strcmp(cmd, "/hallo", true))
{
       new giveplayerid, pName[MAX_PLAYER_NAME], string[50];
       new idx, tmp[256];
       tmp = strtok(cmdtext, idx);
       if(!strlen(tmp))
       {
               SendClientMessage(playerid, 0xFF0000AA, "Gebruik: /hallo [id]");
               return 1;
       }
       giveplayerid = strval(tmp);

       if(!IsPlayerConnected(giveplayerid))
       {
               SendClientMessage(playerid, 0xFF0000AA, "Deze speler is niet online!");
               return 1;
       }

       GetPlayerName(giveplayerid, pName, sizeof(pName));
       format(string, sizeof(string), "Hallo, %s", pName);
       SendClientMessageToAll(0xFFFFFFAA, string);
       return 1;
}

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