Skip to content
Bekijk in de app

Een betere weg om onze GTA community te volgen. Leer meer.

GTAGames.nl - De Nederlandse Grand Theft Auto Community!

Een volledig scherm app op het beginscherm inclusief notificaties, badges en meer.

Om deze app op je iPhone en iPad te installeren
  1. Druk op het icoon in Safari
  2. Scroll in het menu en druk op Zet op beginscherm.
  3. Druk op Voeg toe rechts bovenaan.
Om deze app op je Android toe te voegen
  1. Druk op het 3-punten menu (⋮) rechts bovenaan in de browser.
  2. Druk op Toevoegen aan beginscherm of Installeer app.
  3. Druk op Toevoegen om te bevestigen.

Ban/Kick reasons werken niet lekker

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

Featured Replies

Geplaatst:

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:

Je kan niet met strtok een reason maken omdat strtok de ingevoerde tekst scheidt bij de spaties. Vandaar krijg je alleen het eerste woord.

Ik denk dat dit wel werkt:

http://plaatscode.be/113261/

Geplaatst:

Die code van jou is nog steeds fout, en wel om de reden die ik hierboven aangaf.

Als alternatief kan je wel dit gebruiken:

http://www.plaatscode.be/109328/

Vereist dcmd en sccanf. Info hoe dat werkt kan je hier vinden.

Geplaatst:
  • Auteur

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

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:
  • Auteur
Geplaatst:

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:

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.

Account

Navigatie

Zoeken

Zoeken

Configureer push berichten

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.