Jump to content
Geplaatst:
comment_1022473

Kan iemand mij hier mee helpen ik probeer dus een command te maken /setlevel [id] [level]

maar hoe werkt dat ik heb hier al gekeken en op wiki en op sa-mp.com maar ik snap er nog niks van kan iemand mij uitleggen hoe strtok werkt?

Featured Replies

Geplaatst:
comment_1024332

Je kunt geen Engels zeker. Nou ik zal het even uitleggen.

Ga naar de

public OnPlayerCommandText(playerid, cmdtext[])

regel.

Zet dit onder de eerste { :

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

Dan zet je daaronder je cmd bijv dit:

if(strcmp(cmd, "/sayhello", true) == 0)

Daar zet je dit onder.

{
	new tmp[30];
	tmp = strtok(cmdtext, idx);
	new anderespeler = strval(tmp);

En dan zet je eronder

		}
	return 1;
}
return 0;
}

Dan krijg je dit:

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[30];
new idx;
cmd = strtok(cmdtext, idx);

if(strcmp(cmd, "/sayhello", true) == 0)
{
	new tmp[30];
	tmp = strtok(cmdtext, idx);
	new anderespeler = strval(tmp);

//Hier is nu otherplayer de speler van het id wat iemand in 
//het spel achter /sayhello zet. En playerid degene die /sayhello in typt. 
//Hier kun je dus iets gaan doen met otherplayer en playerid

return 1;
}
return 0;
}

Ik hoop dat je het nu snapt.

En voor de duidelijkheid nog even een voorbeeld om iemand anders te vermoorden d.m.v. een cmd:

By =>Sandra<=:

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[30];
new idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/kill", true) == 0)
{
	new tmp[30];
	tmp = strtok(cmdtext, idx);
	new anderespeler = strval(tmp);
	new pname[MAX_PLAYER_NAME], aname[MAX_PLAYER_NAME];
	GetPlayerName(playerid, pname, sizeof(pname));
	GetPlayerName(anderespeler, aname, sizeof(aname));
	if(IsPlayerConnected(anderespeler))
	{
		new string[128],
		SetPlayerHealth(anderespeler, 0);
		format(string, sizeof(string), "%s has killed you!", pname);
		SendClientMessage(anderespeler, 0xE21D2CFF, string);
		format(string, sizeof(string), "You've killed %s!", aname);
		SendClientMessage(playerid, 0xE21D2CFF, string);
		format(string, sizeof(string), "%s has killed %s!", pname, aname);
		SendClientMessageToAll(0xE21D2CFF, string);
	}
	else
	{
		SendClientMessage(playerid, 0xFF0000AA, "This player is not online!");
	}
	return 1;
}
return 0;
}

Bewerkt: door Juwayri

Geplaatst:
comment_1024759

Hier de code van hierboven, alleen dan zonder foutjes zover ik kon zien :puh:

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[30];
new idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/kill", true) == 0)
{
	new tmp[30];
	tmp = strtok(cmdtext, idx);
	new anderespeler = strval(tmp);
	new pname[MAX_PLAYER_NAME], aname[MAX_PLAYER_NAME];
	GetPlayerName(playerid, pname, sizeof(pname)); 
	GetPlayerName(anderespeler, aname, sizeof(aname)); 
	if(IsPlayerConnected(anderespeler))
	{
		new string[128],
		SetPlayerHealth(anderespeler, 0);
		format(string, sizeof(string), "%s has killed you!", pname);
		SendClientMessage(anderespeler, 0xE21D2CFF, string);
		format(string, sizeof(string), "You've killed %s!", aname);
		SendClientMessage(playerid, 0xE21D2CFF, string);
		format(string, sizeof(string), "%s has killed %s!", pname, aname);
		SendClientMessageToAll(0xE21D2CFF, string);
	}
	else
	{
		SendClientMessage(playerid, 0xFF0000AA, "This player is not online!");
	}
	return 1;
}
return 0;
}

Geplaatst:
comment_1027432
ik kan wel engels

maar ik heb daar niks aan

want ik wil zo'n command /setlevel (id) (level)

en niet allen /heal {id}

Ik weet niet zeker hoor. Maar dan moet je geloof ik strok 2x gebruiken en dan moet je de variablen een andere naam geven.

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.