SA-MP Forums Archive
[Tutorial]Activaciуn/Desactivaciуn de funciones con #define - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Tutorial]Activaciуn/Desactivaciуn de funciones con #define (/showthread.php?tid=193645)



[Tutorial]Activaciуn/Desactivaciуn de funciones con #define - Rodro - 26.11.2010

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!


Respuesta: [Tutorial]Activaciуn/Desactivaciуn de funciones con #define - TheChaoz - 27.11.2010

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 '*')


Respuesta: [Tutorial]Activaciуn/Desactivaciуn de funciones con #define - Rodro - 27.11.2010

Errores corregidos, gracias.


Respuesta: [Tutorial]Activaciуn/Desactivaciуn de funciones con #define - MrDeath537 - 27.11.2010

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



Respuesta: [Tutorial]Activaciуn/Desactivaciуn de funciones con #define - TheChaoz - 27.11.2010

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