Jump to content
Geplaatst:
comment_1278159

Ik ben al een tijdje bezig met een /disarm command. Deze command mag alleen door Cops, Army en Admins gebruikt worden. Het probleem is dat /disarm alleen de sterkere wapens moet weghalen (denk aan de Assault Rifles, Sniper Rifles, Shotguns). Dus als iemand wapens bezit, en hij wordt gepakt door de politie, dat ie alleen zijn pistool/mp5/tech 9 mag houden en dat de rest verdwijnt. Nou weet ik niet eens of dit wel mogelijk is. Als dat zo is dan post ik hier wel een begin van het script en praten we wel verder ;).

Featured Replies

Geplaatst:
comment_1278235

Het is wel degelijk mogelijk, maar het is niet simpel.

Als eerste moet je alle wapens opslaan d.m.v GetPlayerWeaponData.

Daarna check je of de speler een "verboden" wapen bezit, zoja, dan moeten de wapens gereset worden d.m.v ResetPlayerWeapons.

Vervolgens geef je de speler zijn "normale" wapens terug via GivePlayerWeapon (dat zal je wel een paar keer moeten doen, als de ammo 0 is wordt het wapen toch niet gegeven) met de data die opgeslagen in de variabelen.

Geplaatst:
comment_1278269
if(strcmp(cmd, "/disarm", true)==0)
{
if(IsPlayerAdmin(playerid) || gTeam[playerid] == TEAM_POLICE)
{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)) 
	{
	SendClientMessage(playerid, COLOR_WHITE, "Use: /disarm [playerid]");
	return 1;
	}
giveplayerid = strval(tmp);
	if(!IsPlayerConnected(giveplayerid))
	{
		 SendClientMessage(playerid, COLOR_WHITE, "Player Not Connected");
	 return 1;
	}
	new Weapons[13][2];
	for(new i; i<13; i++)
	{
		GetPlayerWeaponData(giveplayerid, i, Weapons[i][0], Weapons[i][1]);
	}
	ResetPlayerWeapons(giveplayerid);
	GivePlayerWeapon(giveplayerid, Weapons[0][0], Weapon[0][1]);
	GivePlayerWeapon(giveplayerid, Weapons[1][0], Weapon[1][1]);
	GivePlayerWeapon(giveplayerid, Weapons[2][0], Weapon[2][1]);
	GivePlayerWeapon(giveplayerid, Weapons[4][0], Weapon[4][1]);
	GivePlayerWeapon(giveplayerid, Weapons[9][0], Weapon[9][1]);
	GivePlayerWeapon(giveplayerid, Weapons[10][0], Weapon[10][1]);
	GivePlayerWeapon(giveplayerid, Weapons[11][0], Weapon[11][1]);
	SendClientMessage(playerid, 0x00FFFFAA, "Player Disarmed"); 
	return 1;
}
}

Geplaatst:
  • Auteur
comment_1278564
if(strcmp(cmd, "/disarm", true)==0)
{
   if(IsPlayerAdmin(playerid) || gTeam[playerid] == TEAM_POLICE)
   {
       tmp = strtok(cmdtext, idx);
       if(!strlen(tmp)) 
       {
       SendClientMessage(playerid, COLOR_WHITE, "Use: /disarm [playerid]");
       return 1;
       }
   giveplayerid = strval(tmp);
       if(!IsPlayerConnected(giveplayerid))
       {
            SendClientMessage(playerid, COLOR_WHITE, "Player Not Connected");
        return 1;
       }
       new Weapons[13][2];
       for(new i; i<13; i++)
       {
           GetPlayerWeaponData(giveplayerid, i, Weapons[i][0], Weapons[i][1]);
       }
       ResetPlayerWeapons(giveplayerid);
       GivePlayerWeapon(giveplayerid, Weapons[0][0], Weapon[0][1]);
       GivePlayerWeapon(giveplayerid, Weapons[1][0], Weapon[1][1]);
       GivePlayerWeapon(giveplayerid, Weapons[2][0], Weapon[2][1]);
       GivePlayerWeapon(giveplayerid, Weapons[4][0], Weapon[4][1]);
       GivePlayerWeapon(giveplayerid, Weapons[9][0], Weapon[9][1]);
       GivePlayerWeapon(giveplayerid, Weapons[10][0], Weapon[10][1]);
       GivePlayerWeapon(giveplayerid, Weapons[11][0], Weapon[11][1]);
       SendClientMessage(playerid, 0x00FFFFAA, "Player Disarmed"); 
       return 1;
   }
}

Uitleg misschien erbij :7

Geplaatst:
comment_1278608
code...

Uitleg misschien erbij :7

Het mag dan niet mijn code zijn, maar ik heb wel even commentaar toegevoegd:

if(strcmp(cmd, "/disarm", true)==0) //als het commando wordt ingetypt:
{
if(IsPlayerAdmin(playerid) || gTeam[playerid] == TEAM_POLICE) // controleren of de speler een admin is of lid is van het team politie
{
	tmp = strtok(cmdtext, idx); // kijken wat er achter /disarm staat
	if(!strlen(tmp)) // als de speler niets achter /disarm staat:
	{
	SendClientMessage(playerid, COLOR_WHITE, "Use: /disarm [playerid]"); // de speler vertellen dat er een spelerid achter /disarm moet staan.
	return 1; //de funtie beëindigen
	}
giveplayerid = strval(tmp); // het id wat achter /disarm staat opslaan in giveplayerid
	if(!IsPlayerConnected(giveplayerid)) //als de speler die achter /disarm staat niet online is:
	{
		 SendClientMessage(playerid, COLOR_WHITE, "Player Not Connected"); //vertellen dat de speler niet online is
	 return 1; //de funtie beëindingen
	}
	new Weapons[13][2];
	for(new i; i<13; i++)
	{
		GetPlayerWeaponData(giveplayerid, i, Weapons[i][0], Weapons[i][1]); //kijken welke wapens + ammo de ingetypte speler heeft
	}
	ResetPlayerWeapons(giveplayerid); //alle wapens van de ingetypte speler verwijderen
	GivePlayerWeapon(giveplayerid, Weapons[0][0], Weapon[0][1]); //de niet-verboden wapens terugzetten
	GivePlayerWeapon(giveplayerid, Weapons[1][0], Weapon[1][1]);
	GivePlayerWeapon(giveplayerid, Weapons[2][0], Weapon[2][1]);
	GivePlayerWeapon(giveplayerid, Weapons[4][0], Weapon[4][1]);
	GivePlayerWeapon(giveplayerid, Weapons[9][0], Weapon[9][1]);
	GivePlayerWeapon(giveplayerid, Weapons[10][0], Weapon[10][1]);
	GivePlayerWeapon(giveplayerid, Weapons[11][0], Weapon[11][1]);
	SendClientMessage(playerid, 0x00FFFFAA, "Player Disarmed"); //een melding geven dat de functie is uitgevoerd.
	return 1;
}
}

Geplaatst:
comment_1278640
code...

Uitleg misschien erbij :7

Het mag dan niet mijn code zijn, maar ik heb wel even commentaar toegevoegd:

if(strcmp(cmd, "/disarm", true)==0) //als het commando wordt ingetypt:
{
if(IsPlayerAdmin(playerid) || gTeam[playerid] == TEAM_POLICE) // controleren of de speler een admin is of lid is van het team politie
{
	tmp = strtok(cmdtext, idx); // kijken wat er achter /disarm staat
	if(!strlen(tmp)) // als de speler niets achter /disarm staat:
	{
	SendClientMessage(playerid, COLOR_WHITE, "Use: /disarm [playerid]"); // de speler vertellen dat er een spelerid achter /disarm moet staan.
	return 1; //de funtie beëindigen
	}
giveplayerid = strval(tmp); // het id wat achter /disarm staat opslaan in giveplayerid
	if(!IsPlayerConnected(giveplayerid)) //als de speler die achter /disarm staat niet online is:
	{
		 SendClientMessage(playerid, COLOR_WHITE, "Player Not Connected"); //vertellen dat de speler niet online is
	 return 1; //de funtie beëindingen
	}
	new Weapons[13][2];
	for(new i; i<13; i++)
	{
		GetPlayerWeaponData(giveplayerid, i, Weapons[i][0], Weapons[i][1]); //kijken welke wapens + ammo de ingetypte speler heeft
	}
	ResetPlayerWeapons(giveplayerid); //alle wapens van de ingetypte speler verwijderen
	GivePlayerWeapon(giveplayerid, Weapons[0][0], Weapon[0][1]); //de niet-verboden wapens terugzetten
	GivePlayerWeapon(giveplayerid, Weapons[1][0], Weapon[1][1]);
	GivePlayerWeapon(giveplayerid, Weapons[2][0], Weapon[2][1]);
	GivePlayerWeapon(giveplayerid, Weapons[4][0], Weapon[4][1]);
	GivePlayerWeapon(giveplayerid, Weapons[9][0], Weapon[9][1]);
	GivePlayerWeapon(giveplayerid, Weapons[10][0], Weapon[10][1]);
	GivePlayerWeapon(giveplayerid, Weapons[11][0], Weapon[11][1]);
	SendClientMessage(playerid, 0x00FFFFAA, "Player Disarmed"); //een melding geven dat de functie is uitgevoerd.
	return 1;
}
}

echter nadat hij de wapens heeft afgepakt, geeft hij ze weer terug. dus hij is niet disarmed dan moet je giveplayerweapon even verwijderen :) en dan in een andere functie terug geven

Geplaatst:
comment_1278808

Kijk nou eens even goed ...

De wapens in de slots 3, 5, 6, 7, 8 en 12 worden niet teruggegeven.

In de het Nederlands betekent dat zoveel als: Shotguns, Assault Rifles (AK47, ...), Rifles (Sniper, ...), en Heavy Assault (Rocket Launcher, Minigun) worden niet teruggegeven.

Geplaatst:
  • Auteur
comment_1279095
code...

Uitleg misschien erbij :7

Het mag dan niet mijn code zijn, maar ik heb wel even commentaar toegevoegd:

if(strcmp(cmd, "/disarm", true)==0) //als het commando wordt ingetypt:
{
if(IsPlayerAdmin(playerid) || gTeam[playerid] == TEAM_POLICE) // controleren of de speler een admin is of lid is van het team politie
{
	tmp = strtok(cmdtext, idx); // kijken wat er achter /disarm staat
	if(!strlen(tmp)) // als de speler niets achter /disarm staat:
	{
	SendClientMessage(playerid, COLOR_WHITE, "Use: /disarm [playerid]"); // de speler vertellen dat er een spelerid achter /disarm moet staan.
	return 1; //de funtie beëindigen
	}
giveplayerid = strval(tmp); // het id wat achter /disarm staat opslaan in giveplayerid
	if(!IsPlayerConnected(giveplayerid)) //als de speler die achter /disarm staat niet online is:
	{
		 SendClientMessage(playerid, COLOR_WHITE, "Player Not Connected"); //vertellen dat de speler niet online is
	 return 1; //de funtie beëindingen
	}
	new Weapons[13][2];
	for(new i; i<13; i++)
	{
		GetPlayerWeaponData(giveplayerid, i, Weapons[i][0], Weapons[i][1]); //kijken welke wapens + ammo de ingetypte speler heeft
	}
	ResetPlayerWeapons(giveplayerid); //alle wapens van de ingetypte speler verwijderen
	GivePlayerWeapon(giveplayerid, Weapons[0][0], Weapon[0][1]); //de niet-verboden wapens terugzetten
	GivePlayerWeapon(giveplayerid, Weapons[1][0], Weapon[1][1]);
	GivePlayerWeapon(giveplayerid, Weapons[2][0], Weapon[2][1]);
	GivePlayerWeapon(giveplayerid, Weapons[4][0], Weapon[4][1]);
	GivePlayerWeapon(giveplayerid, Weapons[9][0], Weapon[9][1]);
	GivePlayerWeapon(giveplayerid, Weapons[10][0], Weapon[10][1]);
	GivePlayerWeapon(giveplayerid, Weapons[11][0], Weapon[11][1]);
	SendClientMessage(playerid, 0x00FFFFAA, "Player Disarmed"); //een melding geven dat de functie is uitgevoerd.
	return 1;
}
}

Ok, bedankt. Ik ga wel ff kijken of dit goed gaat werken.

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.