Primero explica un poco cуmo es el sistema. Una vez el usuario se conecta elige el equipo o cуmo? Lo queGAlvaro14 te estб mostrando es lo siguiente (y con el permiso de GAlvaro14 me baso en su cуdigo):
El cуdigo estб basado en que cuando te conectes al servidor, eligas un bando. Cуmo? con los comandos que creу Бlvaro (/serhumano o /serzombie). Una vez escribes el comando deseado te aсade al equipo. Si el equipo estб lleno no hace absoluutamente nada, no te aсade a ningъn equipo.
Код:
#define MAX_HUMANOS 5
#define MAX_ZOMBIES 5
#define HUMANO 1
#define ZOMBIE 2
Aquн bбsicamente decides cuбntos players por team quieres, como lo quieres parejo йl te puso de ejemplo 5 y 5 como mбximo (por equipo). Йste cуdigo tiene que estar arriba del todo, fuera de cualquier funciуn. Supongo que tendrбs algъn #define mбs creado, ponlo a continuaciуn. Modifica el 5 por el mбximo de players que quieras en cada equipo, es decir si quieres que el mбximo de humanos sea 10 pon #define HUMANO 10 y asн.
Lo mismo con HUMANO 1 y ZOMBIE 2, es la forma de identificar de forma sencilla el equipo al que el player pertenece. 1 serнa "Team Humano" y 2 serнa "Team Zombie".
Код:
new humanos;
new zombies;
new Tipo[MAX_PLAYERS];
Aquн bбsciamente estбs creando las variables "humanos", "zombies" y Tipo[id]. Las revisaremos mбs adelante, йste cуdigo debe ir despuйs de los define, por ejemplo, pero siempre fuera de cualquier funciуn.
Код:
zcmd(serhumano, playerid, params[]) {
if (humanos < MAX_HUMANOS) {
RegistrarHumano(playerid);
humanos++;
}
return 1:
}
zcmd(serzombie, playerid, params[]) {
if (zombies < MAX_ZOMBIES) {
RegistrarZombie(playerid);
zombies++;
}
return 1;
}
Йstos son los comandos /serhumano y /serzombie. Para poder ejecutar йstos comandos debes tener zcmd como include en tu GM (o Filterscript segъn uses). Aquн te dejo el enlace del Include y las instrucciones para instalarlo:
https://sampforum.blast.hk/showthread.php?tid=91354
Son "funciones" extra, agrйgalas tal cual. El funcionamiento es simple,en los dos casos es igual asн que te lo explico en uno sуlo lнnea a lнnea:
Код:
zcmd(serzombie, playerid, params[]) { // Es la forma de definir un comando en ZCMD.
if (zombies < MAX_ZOMBIES) { // Si la variable zombies es mбs pequeсo que la variable mбximo de players por equipo de zombies (definido todo al principio)
RegistrarZombie(playerid); // Llamamos a la funciуn para meter al player en el equipo zombie y le pasamos la id del player.
zombies++; // a la variable zombies le agregamos 1, ya que el player ha entrado en el equipo
}
return 1; // devolvemos el comando correctamente
}
Cuando se desconecta el player, Бlvaro ha modificado la funciуn existente en SAMP para ajustarla al sistema. Te la dejo comentada y explicada:
Код:
public OnPlayerDisconnect(playerid, reason) // Funcion de samp
{
if (Tipo[playerid] != 0) { // Si el tipo de player no es igual a 0 (es decir, zombie o humano)
if (Tipo[playerid] == HUMANO) humanos--; // Si es humano, restamos 1 humano a la cuenta del equipo
else zombies--; // Si es zombie, hacemos lo mismo
Tipo[playerid] = 0; // Dejamos la variable a 0 para el siguiente player que use la ID. Esto es muy importante!!
}
return 1; // Desconectamos al usuario con йxito
}
Aquн tienes las funciones para agregar al usuario al equipo, son muy sencillas. Me baso en una para explicarte la funciуn.
Код:
stock RegistrarHumano(playerid)
{
Tipo[playerid] = HUMANO); // Tipo[id del jugador a unirse] es igual a Humano. Lo mismo con Zombie
}