Jump to content

Ban/Kick reasons werken niet lekker


Recommended Posts

Geplaatst:

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;
}

Geplaatst: (bewerkt)

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:

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:

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

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:
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: (bewerkt)

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: (bewerkt)

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

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