propje400 Geplaatst: 8 oktober 2009 Rapport Geplaatst: 8 oktober 2009 Hoi, ik heb een klein vraagje, hoe kan ik de cmds van een spelers blokeren als hij naar een deathmatch zone teleporteert? dat hij alleen met /exit de DM kan verlaten? En ik snap dat je dat kunt doen door bij elk cmd iets toe tevoegen, maar dat kan niet. dus het liefts met OnPlayerText ook zou ik het handig vinden om te weten hoe ik SetPlayerBound....... aan kan zetten als hij in het DM gebied komt, en ook weer uit? alvast bedankt Reageren
Remi-X Geplaatst: 8 oktober 2009 Rapport Geplaatst: 8 oktober 2009 1: Kan je op 2 manieren doen. Met de eerste zal je geen foutmelding kunnen maken, met de ander wel. Zet sowieso dit bovenaan je script: new bool: IsCMDEnabledForPlayer[MAX_PLAYERS]; // Of een naam die je zelf wilt :P Manier 1: public OnPlayerCommandText(playerid, cmdtext) { if(IsCMDEnabledForPlayer[playerid] == true) { //Commands, als de bool aan staat } else { //Als de bool niet aan staat } //Hier kan je ook commands plaatsen, waar het niet uit maakt of de bool aan of uit staat. return 1; } Manier 2: public OnPlayerCommandText(playerid) { if(strcmp("/command", cmdtext, true, 10) == 0) { if(IsCMDEnabledForPlayer[playerid] == true) { //Als de bool dus aan staat, doen wat je wilt } else { //Weer wat je wilt, bijvoorbeeld een error message } //Dit gebeurt weer altijd } return 1; } 2: Een SetPlayerWut? SetPlayerWorldBounds denk ik dat je bedoelt. Die kan je aan zetten, maar dan niet meer uit. Daarom denk ik dat je beter IsPlayerInRangeOfPoint kan gebruiken. Gewoon het middelpunt nemen van de zone die je wilt gebruiken in die functie zetten. Dat is de snelste methode die SA:MP heeft. Als je ongelimiteerd in de hoogte wilt gaan, zal ik voor IsPlayerInArea gaan, wat helaas wel trager is dan IsPlayerInRangeOfPoint. Reageren
propje400 Geplaatst: 8 oktober 2009 Auteur Rapport Geplaatst: 8 oktober 2009 Thanks man, ik zal kijken of het lukt Reageren
Big Boss Geplaatst: 8 oktober 2009 Rapport Geplaatst: 8 oktober 2009 Hmm, dat kan veel simpeler lijkt me. stock IsPlayerInDeathMatchArea(playerid) { if(IsPlayerInArea(playerid, xmin, ymin, xmax, ymax)) return 1; // coords dm zone 1 if(IsPlayerInArea(playerid, xmin, ymin, xmax, ymax)) return 1; // coords dm zone 2 // etc. return 0; } public OnPlayerCommandText(playerid, cmdtext[]) { // hier je /exit cmd if(!IsPlayerInDeathMatchArea(playerid)) // Als speler niet (!) in dm zone is ... { // hier de rest van je cmds } return 0; } Reageren
propje400 Geplaatst: 13 oktober 2009 Auteur Rapport Geplaatst: 13 oktober 2009 (bewerkt) dat had ik al gedaan alleen waneer ik naar een jump teleporte zegt hij ook dah hij in die zone is, terwel het er niet eens bij in de buurt is, het is wel heel hoog maar niet in dat gebied?:O ik heb het wel anders:\ IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > minx && x < maxx && y > miny && y < maxy) return 1; return 0; } bijvoorbeeld dit if(IsPlayerInArea(playerid, -105.1009, 1623.225, 432.0814, 2148.729) == 1) { SendDeathMessage(killerid, playerid, reason); SetPlayerArmour(killerid, 10.0); GivePlayerMoney(killerid, 5000); SendClientMessage(killerid, 0xFFFFFFAA, "More armour and got some free cash!"); GameTextForPlayer(playerid,"~R~ FAILED ",2000,5); } Bewerkt: 14 oktober 2009 door propje400 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.