Yannick(NL) Geplaatst: 13 november 2009 Rapport Geplaatst: 13 november 2009 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? Reageren
Remi-X Geplaatst: 13 november 2009 Rapport Geplaatst: 13 november 2009 (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: 13 november 2009 door Remi-X Reageren
Yannick(NL) Geplaatst: 14 november 2009 Auteur Rapport Geplaatst: 14 november 2009 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? Reageren
Remi-X Geplaatst: 14 november 2009 Rapport Geplaatst: 14 november 2009 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. Reageren
Yannick(NL) Geplaatst: 14 november 2009 Auteur Rapport Geplaatst: 14 november 2009 Ok bedankt, ik denk dat het wel gaat lukken. Reageren
David22 Geplaatst: 14 november 2009 Rapport Geplaatst: 14 november 2009 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. Reageren
Recommended Posts
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.