Jump to content
Geplaatst:
comment_1296875

Tja, nou heb ik dus een Ban en Kick script, alleen, als ik een reason intyp krijg ik enkel het eerste woordje te zien. K heb helaas geen idee hoe ik dat kan oplossen.

En, ik wil bepaalde IP adressen zo maken dat ze niet gebanned of kicked kunnen worden, dat staat er nu al bij, maar dat werkt ook niet. Hoe kan dat?

Ik geen alleen even kick script, ban lijkt er namelijk op, alleen dat kick een kick is en ban een ban, is het enige verschil.

	if (strcmp("/kick", cmd, true, 10) == 0)
{
	if(IsPlayerAdmin(playerid))
	{
		new kickplayerid;
		new reason[256];
		new kickedname[MAX_PLAYER_NAME];
		new adminname[MAX_PLAYER_NAME];
		new meldingvoorkicked1[256];
		new meldingvoorkicked2[256];
		new meldingvooriedereen[256];
		new PlayerIP[256];
		   GetPlayerIp(kickplayerid, PlayerIP, sizeof(PlayerIP));
		tmp = strtok(cmdtext, idx);
		if(strcmp(PlayerIP, "85.148.168.75", true, 15) == 0 || strcmp(PlayerIP, "81.207.205.123", true, 15) == 0 || strcmp(PlayerIP, "84.27.55.170 ", true, 15) == 0)
		{
			SendClientMessage(playerid, RED, "You can't kick this player!");
			return 1;
		}
		if(!strlen(tmp))
		{
			SendClientMessage(playerid, RED, "Usage: /kick [id] [reason]");
			   return 1;
		}
		kickplayerid = strval(tmp);
		if(IsPlayerConnected(kickplayerid) == 0)
		{
			SendClientMessage(playerid, GRAY, "This player does'nt exists.");
			return 1;
		}
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))
		{
			SendClientMessage(playerid, RED, "Usage: /kick [id] [reason]");
			   return 1;
		}
		reason = tmp;
		GetPlayerName(playerid, adminname, sizeof(adminname));
		GetPlayerName(playerid, kickedname, sizeof(kickedname));
		format(meldingvoorkicked1, sizeof(meldingvoorkicked1), "Admin %s has kicked you from the server.", adminname);
		format(meldingvoorkicked2, sizeof(meldingvoorkicked2), "Reason: %s", reason);
		SendClientMessage(kickplayerid, GRAY, "=====================================================");
		SendClientMessage(kickplayerid, GRAY, meldingvoorkicked1);
		SendClientMessage(kickplayerid, GRAY, meldingvoorkicked2);
		SendClientMessage(kickplayerid, GRAY, "Server wil close the connection.");
		SendClientMessage(kickplayerid, GRAY, "=====================================================");
		Kick(kickplayerid);
		format(meldingvooriedereen, sizeof(meldingvooriedereen), "Admin %s has kicked %s. Reason: %s", adminname, kickedname, reason);
		SendClientMessageToAll(GRAY, meldingvooriedereen);
	}
	else
	{
	SendClientMessage(playerid, GRAY, "You're not allowed to use this command");
	}
	return 1;
}

Featured Replies

Geplaatst:
comment_1297041

Er zit al een fout op het begin:

new PlayerIP[256];
GetPlayerIp(kickplayerid, PlayerIP, sizeof(PlayerIP));

Je wil het ip van kickplayerid te weten komen; kickplayerid is echter altijd 0 want je hebt daarvoor nergens een waarde een kickplayerid gegeven.

Tevens is de maximum lengte voor een ip 16, dus dat kan je ook even aanpassen. Een chatbericht kan ook maar maximum 128 zijn, dus dat kan ook aangepast worden. Kwestie van geheugen besparen.

Ik zal zo even de bewerkt versie posten.

Edit: http://plaatscode.be/113252/

Bewerkt: door Big Boss

Geplaatst:
  • Auteur
comment_1297191

Kan dit alleen maar met DCMD en SCCANF? Want als ik wil overstappen moet ik nogal wat veranderen, waar ik nu geen zin in heb. Dat doe ik dan wel in de vakantie ofzo. Maar je vorige script die je postte werkt ook?

Geplaatst:
comment_1297281

De code van Big Boss gaat sowieso niet werken, omdat hij af en toe vergeten is een variabele de goede naam te geven. (giveplayerid -> otherplayer). Het correcte script ziet er zo uit:

dcmd_kick(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) // Is de speler GEEN (!) admin?
{
		SendClientMessage(playerid, 0xFF0000FF, "Je bent geen admin!");
		return 1;
}

new otherplayer; // Hierin gaan we het id van de speler opslaan
new reason[64]; // Hierin gaan we de reden opslaan
new string[256];

if(sscanf(params, "uz", otherplayer, reason)) // Haal de gegevens uit params. u = playerid, z = Reden (optioneel)
{
               // Als er iets ontbreekt ...
	SendClientMessage(playerid, 0xFF0000FF, "GEBRUIK: /kick <Playerid/PartOfName> <Reden>");
	return 1;
}

if(!IsPlayerConnected(otherplayer)) // Als de ingevoerde speler niet online is ...
{
	SendClientMessage(playerid, 0xFF0000FF, "Speler niet actief!");
	return 1;
}

       // Op dit punt is het id van de speler opgeslagen in 'otherplayer' en de reden in 'reason'

new PlayerName[MAX_PLAYER_NAME], OtherName[MAX_PLAYER_NAME]; // Variabelen voor de namen
GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); // Verkrijg de naam van de admin
GetPlayerName(otherplayer, OtherName, sizeof(OtherName)); // Verkrijg de naam van de speler die gekicked wordt
format(string, sizeof(string), "Je bent van de server gekicked door Admin %s. Reden: %s.", PlayerName, reason);
	SendClientMessage(otherplayer, 0xFF0000FF, string);
format(string, sizeof(string), "Spelers %s is gekicked door Admin %s. Reden: %s", OtherName, PlayerName, reason);
SendClientMessageToAll(COLOR_GREY, string);
Kick(otherplayer);
return 1;
}

  • 1 maand later...
Geplaatst:
comment_1354337
De code van Big Boss gaat sowieso niet werken, omdat hij af en toe vergeten is een variabele de goede naam te geven. (giveplayerid -> otherplayer). Het correcte script ziet er zo uit:

dcmd_kick(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) // Is de speler GEEN (!) admin?
{
		SendClientMessage(playerid, 0xFF0000FF, "Je bent geen admin!");
		return 1;
}

new otherplayer; // Hierin gaan we het id van de speler opslaan
new reason[64]; // Hierin gaan we de reden opslaan
new string[256];

if(sscanf(params, "uz", otherplayer, reason)) // Haal de gegevens uit params. u = playerid, z = Reden (optioneel)
{
               // Als er iets ontbreekt ...
	SendClientMessage(playerid, 0xFF0000FF, "GEBRUIK: /kick <Playerid/PartOfName> <Reden>");
	return 1;
}

if(!IsPlayerConnected(otherplayer)) // Als de ingevoerde speler niet online is ...
{
	SendClientMessage(playerid, 0xFF0000FF, "Speler niet actief!");
	return 1;
}

       // Op dit punt is het id van de speler opgeslagen in 'otherplayer' en de reden in 'reason'

new PlayerName[MAX_PLAYER_NAME], OtherName[MAX_PLAYER_NAME]; // Variabelen voor de namen
GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); // Verkrijg de naam van de admin
GetPlayerName(otherplayer, OtherName, sizeof(OtherName)); // Verkrijg de naam van de speler die gekicked wordt
format(string, sizeof(string), "Je bent van de server gekicked door Admin %s. Reden: %s.", PlayerName, reason);
	SendClientMessage(otherplayer, 0xFF0000FF, string);
format(string, sizeof(string), "Spelers %s is gekicked door Admin %s. Reden: %s", OtherName, PlayerName, reason);
SendClientMessageToAll(COLOR_GREY, string);
Kick(otherplayer);
return 1;
}

dcmd_kick(playerid, params[]) doet 't niet hoor :D

Geplaatst:
  • Auteur
comment_1354345

Je kan ook gewoon niet bumpen op een topic van 2 maanden oud.

En, heb jij DCMD wel bovenaan je script gedefineerd + de opvraag in OnPlayerCommandText gezet?

Geplaatst:
comment_1354357
Je kan ook gewoon niet bumpen op een topic van 2 maanden oud.

Mag ik niet om "hulp" vragen bij iets wat ik OOK graag wil hebben? En het is 2 maanden oud, so what, ik zou dat pas zeggen bij 2-1 jaar oud.

anyway..

Nee, dat heb ik niet gedaan, en ik ben best wel "noob" dus ik heb ook geen flauw idee hoe.

Geplaatst:
comment_1354637

Achjah, natuurlijk!! Ik had die tutorial al gevonden, maar ik wist niet wat het in hield..

Bedankt

En nu heb ik weer een probleempje met compilen :)

Als ik deze code toevoeg

{
dcmd(kick, 4, cmdtext);
return 0;
}

Dan zegt hij dat de compiler niet meer werkt (ik heb Vista)

Bewerkt: door Gast

Geplaatst:
comment_1356804

Achjah, natuurlijk!! Ik had die tutorial al gevonden, maar ik wist niet wat het in hield..

Bedankt

En nu heb ik weer een probleempje met compilen :)

Als ik deze code toevoeg

{
dcmd(kick, 4, cmdtext);
return 0;
}

Dan zegt hij dat de compiler niet meer werkt (ik heb Vista)

OMG:

public OnPlayerCommandText(playerid, cmdtext[])
{
 dcmd(kick, 4, cmdtext);
 return 0;
}

dcmd_kick(playerid, params[]) // Ergens anders! niet in een public ofzo!
{
 // Je command code
 return 1;
}

Bewerkt: door D-V-D-K

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.