Quote:
Originally Posted by ByMatt20030
їCual es la diferencia entre: #define SOYUNDIALOGO 1 y #define SOYUNDIALOGO (1)?
|
No hay ninguna diferencia, bбsicamente es una costumbre, quizбs es mбs habitual entre los programadores de C/C++.
PHP код:
/* Observa que el resultado del siguiente printf no varia por usar parйntesis. */
printf("VALOR #1: %d | VALORD #2: %d", 10, (10)); // Resultado -> VALOR #1: 10 | VALOR #2: 10
/* La siguiente condiciуn es vбlida de ambas formas. */
if(p_AdminLevel[playerid] == 0)
{
SendClientMessage(playerid, -1, "No eres un administrador.");
}
if(p_AdminLevel[playerid] == (0)) // Incluso puedes aсadir mбs parйntesis ... ((0))
{
SendClientMessage(playerid, -1, "No eres un administrador.");
}
Conviene usar parйntesis en pequeсas funciones definidas mediante macros para seguir el orden de las operaciones, por ejemplo:
PHP код:
#define randomEx(%0,%1) (random(%1 - %0) + %0)
printf("Nъmero aleatorio entre 1 - 10: %d", randomEx(1, 10));
/*
Ejecutando randomEx una vez no hay posibilidad de error dado que primero se ejecuta random(%1 - %0)
y despuйs se suma %0. Quitemos los parйntesis para ver quй ocurre, vamos a modificar el printf tambiйn: */
#define randomEx(%0,%1) random(%1 - %0) + %0
printf("Nъmero aleatorio: %d", randomEx(1, randomEx(69, 80));
/* Bбsicamente el randomEx que se encuentra dentro del primer randomEx darб un valor entre 69 y 80, luego
el primer randomEx darб otro nъmero aleatorio entre 1 y el nъmero obtenido. No funcionarб, veamos: */
randomEx(1, randomEx(69, 80)) /* equivale a */ random( random(80 - 69) + 69 - 1) + 1
/* Si usamos parentesis en el marco cambia el resultado: */
randomEx(0, randomEx(69, 80)) /* equivale a */ (random( (random(80 - 69) + 69) - 1) + 1)
/* Obviamente usar los parйntesis en este caso es lo correcto, para que las operaciones sigan su orden. */
Para aprender mбs sobre constantes te recomiendo el tutorial de mi firma sobre la enumeraciуn.
Quote:
Originally Posted by ByMatt20030
їEsta bien definir MAX_PLAYERS dentro de un GameMode? (Pregunto esto ya que lo he visto definido en el include a_samp....
|
Lo ideal serнa darle el valor de los slots que usas, bбsicamente para ahorrar memoria al compilar el script, dado que las arrays disminuyen su nъmero de celdas si usas menos de 500 slots. Esto es:
PHP код:
#include <a_samp>
// ---
#undef MAX_PLAYERS
#define MAX_PLAYERS (100)
// ---
/* Otros #include aquн. */
Para hacer un bucle lo ideal serнa usar los siguientes mйtodos donde no intervienen MAX_PLAYERS o MAX_VEHICLES:
PHP код:
/* Para jugadores. */
for(new x = 0, t = GetPlayerPoolSize(); x <= t; x++)
{
if(IsPlayerConnected(x))
{
/* Tu script aquн. */
}
}
/* Para vehнculos. */
native IsValidVehicle(vehicleid); /* Aсade esto despuйs de los #include */
for(new v = 1, t = GetVehiclePoolSize(); v <= t; v++)
{
if(IsValidVehicle(v))
{
/* Tu script aquн. */
}
}