[Tutorial]Activaciуn/Desactivaciуn de funciones con #define
#1

La verdad no se me ocurria que nombre ponerle al tutorial. Por si no entienden, lo que harнa es lo siguiente:
Habran visto en FS's como LuxAdmin lo siguiente:
pawn Код:
#define EnablePM_Cmd 1    // Enable/Disable PM Command [1= Enabled - 0=Disabled]
Cambiando el "1" por "0", podemos desactivar los PMs, y viceversa. Este tutorial se tratara de eso.

Primero, vamos a definir lo que queremos que se desactive/active. En este caso sera un simple comando.
pawn Код:
#define ComandoMensaje 1 //Cambia el "1" por "0" para desactivar el ComandoMensaje
Digamos que el comando es asi:
pawn Код:
if(strcmp(cmdtext, "/mensaje", true) == 0)
{
 SendClientMessage(playerid,COLOR,"Este es el mensaje");
 return 1;
}
Para agregarle la funciуn de activacion/desactivaciуn, hacemos le agregamos luego del { :
pawn Код:
#if ComandoMensaje == 1 //
Y al final del comando:
pawn Код:
#endif
Quedaria asi:
pawn Код:
if(strcmp(cmdtext, "/mensaje", true) == 0)
{
 #if  ComandoMensaje == 1
 SendClientMessage(playerid,COLOR,"Este es el mensaje");
 #endif
 return 1;
}
Ahora agregaremos un else, que es la contradiccion de un if. Para ponerlo, debemos eliminar el #endif y colocarlo al final de la funcion.
pawn Код:
#else
SendClientMessage(playerid,COLOR,"El mensaje esta desactivado");
#endif
Quedaria asi:
pawn Код:
if(strcmp(cmdtext, "/mensaje", true) == 0)
{
 #if ComandoMensaje == 1
 SendClientMessage(playerid,COLOR,"Este es el mensaje");
 #else
SendClientMessage(playerid,COLOR,"El mensaje esta desactivado");
#endif
 return 1;
}
Esto no solo puede usarse en comandos, sinу en funciones mas complejas, como un Anti DriveBy. Ejemplo:
pawn Код:
#define AntiDriveBy 1
pawn Код:
#if AntiDriveBy == 1
 if(newstate == PLAYER_STATE_DRIVER)
 {
  for (new i = 0; i<13; i++)
  {
   GetPlayerWeaponData(playerid, i, ArmasJugador[playerid][i], MunicionJugador[playerid][i]);
  }
  ResetPlayerWeapons(playerid);
 }
 if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
 {
  for(new i=0;i<13;i++)
  {
   GivePlayerWeapon(playerid,ArmasJugador[playerid][i],MunicionJugador[playerid][i]);
  }
 }
 #endif
Bueno, eso es todo. Espero que les sirva
Saludos!
Reply
#2

un par de cosas

si vas a usar
pawn Код:
#else
no uses antes del mismo
pawn Код:
#endif

se llaman macros

los codigos ponelos entre [pawn*] y [/pawn*] (sin los '*')
Reply
#3

Errores corregidos, gracias.
Reply
#4

Tambiйn se puede hacer de la siguiente forma:

pawn Код:
#define MENSAJE

// OnPlayerCommandText
if (!strcmp(cmdtext, "/test", true))
{
    #if defined MENSAJE
        SendClientMessage(playerid, 0xFFFFFFFF, "Mensaje.");
    #endif
    return 1;
}
Reply
#5

Quote:
Originally Posted by MrDeath
Посмотреть сообщение
Tambiйn se puede hacer de la siguiente forma:

pawn Код:
#define MENSAJE

// OnPlayerCommandText
if (!strcmp(cmdtext, "/test", true))
{
    #if defined MENSAJE
        SendClientMessage(playerid, 0xFFFFFFFF, "Mensaje.");
    #endif
    return 1;
}
hay infinidad de formas de hacerlo. tambien lo podes hacer x funciones o integers comunes. x archivos. x db. x tantos metodos
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)