La forma de definir un dialog depende del uso, desde uno por uno a un array, de todas formas el rendimiento no cambia nada.
MAX_PLAYERS conviene definirlo al mбximo de slots de tu servidor, te explico porquй. Si tienes un servidor con 80 jugadores y MAX_PLAYERS en 500, en cuanto hagas un bucle para hacer una verificaciуn la harб 500 veces pero tienes solo 80 jugadores... Si lo pones en 100 que es el mбximo de slots la hace 100 veces, igualmente la diferencia de rendimiento es totalmente imperceptible a menos que sea un gran bucle, asн que no te preocupes por eso! Saludos. |
Coincido contigo, aunque la forma mбs optimizada de hacer un bucle para todos los jugadores hoy en dнa es usar GetPlayerPoolSize()
|
їCual es la diferencia entre: #define SOYUNDIALOGO 1 y #define SOYUNDIALOGO (1)?
|
/* 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.");
}
#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. */
їEsta bien definir MAX_PLAYERS dentro de un GameMode? (Pregunto esto ya que lo he visto definido en el include a_samp....
|
#include <a_samp>
// ---
#undef MAX_PLAYERS
#define MAX_PLAYERS (100)
// ---
/* Otros #include aquн. */
/* 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н. */
}
}