28.08.2016, 17:59
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.
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".
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.
Й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:
Cuando se desconecta el player, Бlvaro ha modificado la funciуn existente en SAMP para ajustarla al sistema. Te la dejo comentada y explicada:
Aquн tienes las funciones para agregar al usuario al equipo, son muy sencillas. Me baso en una para explicarte la funciуn.
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
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];
Код:
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; }
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 }
Код:
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 }
Код:
stock RegistrarHumano(playerid) { Tipo[playerid] = HUMANO); // Tipo[id del jugador a unirse] es igual a Humano. Lo mismo con Zombie }