[Tutorial] Prohibir comandos en ciertas zonas
#1

Bien, para los que no saben como bloquear comandos en ciertas zonas, acб les dejo un tutorial con variables/arrays, quizбs no sea el mбs efectivo, pero es ъtil.

Empezamos definiendo nuestro array con el tag Bool, para obtener mбs info sobre las tag y sus tipos lee Este topic creado por Choaz que explica bastante bien muchas funciones.
  • pawn Код:
    new bool:MiVariable;
Ya tenemos la variable de 2 raizes

Quote:
Originally Posted by the_chaoz
Bool => almacena true o false, verdadero o falso.
Ahora, cuando tengamos creada nuestra zona, si no sabes como, entra a este otro topic creado por mi para llevar a cabo la creaciуn de zonas seguras. colocaremos en el callback la variable en "false"

Un ejemplo:
pawn Код:
public OnPlayerEnterDynamicArea(playerid, areaid)
{
if(areaid == MiZona)
    {
      GameTextForPlayer(playerid, "~w~Has entrado a una zona pacifica, ~r~todas tus armas fueron removidas!", 4000, 3);
      ResetPlayerWeapons(playerid);
      MiVariable[playerid] = false; //Verбs que aquн esta la variable indicando "false"
    }
    return 1;
}
Asн los comandos se bloquearan en esa zona, pero aъn no terminamos, falta indicar QUE comandos NO serбn utilizados, e indicar cuando se pueden usar (salir del area)

Para indicar que al salir del area sean utilizables, le indicaremos en la variable "true" en el callback siguiente, un ejemplo:
  • pawn Код:
    public OnPlayerLeaveDynamicArea(playerid, areaid)
    {
      if(areaid == MiZona)
      {
        GameTextForPlayer(playerid, "~w~Has salido de la zona pacifica, ~b~armas permitidas!", 4000, 3);                  
        MiVariable[playerid] = true; //Acб cambia el valor al salir de la zona
        return 1;
    }
Para restringir comandos, sуlo debes colocar en sus funciones lo siguiente.
  • pawn Код:
    if(MiVariable[playerid] == false)
     {//dentro de la funciуn del comando.
Un ejemplo mбs constructivo.
  • pawn Код:
    if (strcmp("/m4", cmdtext, true, 10) == 0)
        {
            if(MiVariable[playerid] == false)
        {
            SendClientMessage(playerid, Rojo, "Aquн no puedes usar comandos de armas!!");
            return 1;
        }
            GivePlayerWeapon(playerid,31,1000000);
            GivePlayerMoney(playerid, -400);
            return 1;
        }
Si tienen alguna duda, dнganme, si hice algo mal, por favor reporten aquн mismo para editar a la brevedad y asн evitar confusiones en futuras referencias.

Saludos!

Quote:
Originally Posted by Lunnatiicz
Como crear zonas pacificas y usar el streamer

https://sampforum.blast.hk/showthread.php?tid=235097
Reply
#2

Tienes que indicar que OnPlayerEnterDynamicArea es una funcion del plugin de incognito.
Reply
#3

Quote:
Originally Posted by SeQualX
Посмотреть сообщение
Tienes que indicar que OnPlayerEnterDynamicArea es una funcion del plugin de incognito.
Por eso cite el otro post, que ahн lo indica, y como crearlo
Reply
#4

Quote:
Originally Posted by Lunnatiicz
Посмотреть сообщение
Por eso cite el otro post, que ahн lo indica, y como crearlo
watafac, es el streamer o cual plugin
Reply
#5

Quote:
Originally Posted by juansrc
Посмотреть сообщение
watafac, es el streamer o cual plugin
Asн es, mira el otro post (:
Reply
#6

Algunos errores:
pawn Код:
public OnPlayerLeaveDynamicArea(playerid, areaid)
{
  if(areaid == MiZona)
  {
    GameTextForPlayer(playerid, "~w~Has salido de la zona pacifica, ~b~armas permitidas!", 4000, 3);                  
    MiVariable[playerid] = true; //Acб cambia el valor al salir de la zona
    return 1;
    } // < Te falto eso
    return 1;
}
i:
pawn Код:
if(MiVariable[playerid] == false)
    {
        SendClientMessage(playerid, Rojo, "Aquн no puedes usar comandos de armas!!");
        return 0; // Paramos el comando de que continue, y nomas mande ese mensaje ^
    }
Reply
#7

Si usamos return 0; les darб error, despuйs les explico eso xD

Gracias por la observaciуn Lethal
Reply
#8

solo pone return; no tiene xq retornar un valor. podes usar goto o tambien return (codigo del msj), etc.
Reply
#9

Podes hacerlo aun mas fбcil, y sin usar onplayerenterdynamicarea y variables:
PHP код:
if (strcmp("/m4"cmdtexttrue10) == 0)
{
    if(
IsPlayerInDynamicArea(playeridMiZone)) return SendClientMessage(playerid0xFF0000FF"No puedes usar este comando en esta zona."),1;
    
GivePlayerWeapon(playerid,31,1000000);
    
GivePlayerMoney(playerid, -400);
    return 
1;

Reply
#10

Quote:
Originally Posted by anonymousx
Посмотреть сообщение
Podes hacerlo aun mas fбcil, y sin usar onplayerenterdynamicarea y variables:
PHP код:
if (strcmp("/m4"cmdtexttrue10) == 0)
{
    if(
IsPlayerInDynamicArea(playeridMiZone)) return SendClientMessage(playerid0xFF0000FF"No puedes usar este comando en esta zona."),1;
    
GivePlayerWeapon(playerid,31,1000000);
    
GivePlayerMoney(playerid, -400);
    return 
1;

usa [pawn ] y [/pawn], no los de php
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)