Jump to content

unable cmds?


Recommended Posts

Geplaatst:

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

Geplaatst:

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.

Geplaatst:

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

Geplaatst: (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: door propje400

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