Jump to content

Cmd pas uitvoeren als je dichtbij iemand staat.


Recommended Posts

Geplaatst:

Hoe kan je een command maken die alleen maar werkt als je dicht bij de speler staat waarop je de command uitvoert.

Zegmaar als je iemand geld wil geven moet je eerst dichtbij diegene staan die je geld wil geven.

Ik heb wel iets gezien over ProxDetector ofzo?

Geplaatst: (bewerkt)

if(strcmp bladiebla) //De command
{
   for(new i = 0; i < GetMaxPlayers(); i++) //Zal alle spelerid's doorlopen
   {
       if(i != playerid) //Als de spelerid een ander id heeft dan jouw kunnen we verder
       {
           new Float:iX, Float:iY, Float:iZ; //Variabelen om de posities in op te slaan van de andere speler
           GetPlayerPos(i, iX, iY, iZ); //De posities ophalen van de andere speler
           if(IsPlayerInRangeOfPoint(playerid, 1.0, iX, iY, iZ)) //Als jij in 1 meter in de buurt bent van de ander (1.0 kan je dus veranderen naar het aantal meters dat tussen jouw en de andere persoon mag zitten)
           {
               GivePlayerMoney(i, 20); //Zal 20 dollar aan degene die dichtbij je staat geven, 20 kan je dus veranderen
               return 1; //De command is geëindigd
           }
           else //Anders, als je niet in de buurt bent van een andere speler
           {
               //Kan je bijvoorbeeld een error bericht senden met SendClientMessage(playerid, kleur, "bericht")
               return 1; //De command is geëindigd
           }
       }
   }
   return 1; //De command is geëindigd
}

Kan je natuurlijk ook nog een multiparam commando van maken, je zou eens de PMTL kunnen bekijken en dan voor DCMD kiezen, waarmee je makkelijk multiparam commando's kan maken.

Bewerkt: door Remi-X
Geplaatst:
if(strcmp(cmd, "/uncuff", true) == 0) //De command

{

if(gTeam[playerid] == TEAM_COP0)

tmp = strtok(cmdtext, idx);

if(!strlen(tmp))

{

SendClientMessage(playerid, 0xFF0000AA, "Use: /cuff [id]");

return 1; //Stopt het commando

}

if(!IsPlayerConnected(giveplayerid))

{

SendClientMessage(playerid, 0xFF0000AA, "Player not online"); return 1;

}

for(new i = 0; i < GetMaxPlayers(); i++) //Zal alle spelerid's doorlopen

{

if(i != playerid) //Als de spelerid een ander id heeft dan jouw kunnen we verder

{

new Float:iX, Float:iY, Float:iZ; //Variabelen om de posities in op te slaan van de andere speler

GetPlayerPos(i, iX, iY, iZ); //De posities ophalen van de andere speler

if(!IsPlayerInRangeOfPoint(playerid, 1.0, iX, iY, iZ)) //Als jij in 1 meter in de buurt bent van de ander (1.0 kan je dus veranderen naar het aantal meters dat tussen jouw en de andere persoon mag zitten)

{

SendClientMessage(playerid, COLOR_RED, "You're not near the player");

return 1; //De command is geëindigd

}

TogglePlayerControllable(i, 1); //

return 1; //De command is geëindigd

}

}

return 1; //De command is geëindigd

}

Is dit een goede command?

Geplaatst:

Nee, dat is het niet. Als je je mode zou compilen zou je errors krijgen, en dus zelf al zien dat er wat fout is.

En plaats je code volgende keer in de code tags, dan is het allemaal wat beter leesbaar. [ code ] en [ /code ] (zonder spaties)

Dat wat jij hebt gedaan heeft trouwens ook helemaal geen nut, voor de manier die ik je gaf hoef je geen ID in te voeren. Ga gewoon behoorlijk dichtbij een ander staan, en typ de command die jij wilt. Maakt niet uit bij wie je staat, je zal geld aan hem geven als je bij een willekeurig persoon in de buurt staat. Als je zelf nog wil kiezen hoeveel geld je hem wilt geven, moet je wel params gaan gebruiken. Maar aan die command van net te zien was dat niet je bedoeling.

if(strcmp(cmd, "/geefgeld", true) == 0)
{
   for(new i = 0; i < GetMaxPlayers(); i++) //Zal alle spelerid's doorlopen
   {
       if(i != playerid) //Als de spelerid een ander id heeft dan jouw kunnen we verder
       {
           new Float:iX, Float:iY, Float:iZ; //Variabelen om de posities in op te slaan van de andere speler
           GetPlayerPos(i, iX, iY, iZ); //De posities ophalen van de andere speler
           if(IsPlayerInRangeOfPoint(playerid, 1.0, iX, iY, iZ)) //Als jij in 1 meter in de buurt bent van de ander (1.0 kan je dus veranderen naar het aantal meters dat tussen jouw en de andere persoon mag zitten)
           {
               GivePlayerMoney(i, 20); //Zal 20 dollar aan degene die dichtbij je staat geven, 20 kan je dus veranderen
               return 1; //De command is geëindigd
           }
           else //Anders, als je niet in de buurt bent van een andere speler
           {
               //Kan je bijvoorbeeld een error bericht senden met SendClientMessage(playerid, kleur, "bericht")
               return 1; //De command is geëindigd
           }
       }
   }
   return 1; //De command is geëindigd
}

Dat is alles dus voor je command.

Geplaatst:

Ok bedankt, ik denk dat het wel gaat lukken. :)

En let op je indentation, dit is zeker voor beginnende scripters belangrijk.

Correcte indentation!

Geloof het of niet: indentation is ongelofelijk belangrijk! Indentation is de uitlijning van jouw script. Kort gezegd: na elke { spring je een tab (of 4 spaties) verder, en na elke } ga je dat weer terug. Dit helpt jouw script veel overzichtelijker te maken. Voorbeeldjes:

Zonder goede indentation

public DelAllVehs()
{
for(new i = 0; i <= MAX_VEHICLES; i++)
{
if(SpawnedCar[i])
{
DestroyVehicle(i);
}
}
}

Met goede indentation

public DelAllVehs()
{
for(new i = 0; i <= MAX_VEHICLES; i++)
{
	if(SpawnedCar[i])
	{
		DestroyVehicle(i);
	}
}
}

Je ziet zelf al wel wat duidelijker is. Dit is makkelijk voor jou, omdat je script overzichtelijker wordt én het debuggen makkelijker.

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