Jump to content

/disarm command


JayKay

Recommended Posts

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

Link to comment
Delen op andere websites

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.

Link to comment
Delen op andere websites

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

Link to comment
Delen op andere websites

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

Link to comment
Delen op andere websites

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

Link to comment
Delen op andere websites

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

Link to comment
Delen op andere websites

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.

Link to comment
Delen op andere websites

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.

Link to comment
Delen op andere websites

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