07.04.2011, 23:02
(
Последний раз редактировалось Miguel; 08.04.2011 в 12:33.
)
Introducciуn
Hola, este tutorial es realmente simple, aunque lo que voy a explicar aquн todavнa no lo he intentado. En la mayorнa de los servidores de duelos, peleas, tiroteos o como quieran llamarlos, se busca que en algunos interiores no se pueda matar. El problema viene al buscar una forma de que las personas no se maten, casi siempre hay que buscar un sistema muy complicado que por ejemplo, le quite las armas al jugador, lo vuelva invulnerable, etc.
Sin embargo, hay una soluciуn muy simple a este problema, no necesitamos usar timers, chequeo de бreas; nada de eso, solamente una funciуn, con ayuda de un callback y uno o dos definiciones constantes para no tener que recordar valores en nuestra mente.
їQuй funciуn evita que un jugador mate a otro?
Muy fбcil, solo basta jugar en un servidor de guerra en equipo para saberlo. Si, es SetPlayerTeam, la cual cambia el equipo del jugador al que nosotros decidamos. Pero, їcuбl es el truco? El truco es, poner en el mismo equipo a todos los jugadores que entren a un interior. Es necesario usar un equipo que no sea utilizado por el servidor en ningъn otro caso, para evitar errores.
Pero, їcуmo se cuando el jugador entra a un interior? Muy fбcil, con el callback OnPlayerInteriorChange, el cual tiene dos parбmetros los cuales nos indican en que interior pasу el jugador, y en que interior estaba antes de cambiar al actual.
Eres un idiota, Ўno entendн nada!
Eso significa que es hora de ver un ejemplo de nuestro sistema. Lo primero que necesitamos es una constante que nos quite el trabajo de tener que recordar el nъmero del equipo. Yo la llamarй “EQUIPO_PARA_INTERIORES”.
Esa constante la vamos a usar para aplicarle el equipo 64 al jugador, en vez de tener que recordar que el nъmero es 64, simplemente pongo la constante en lugar del nъmero. Ademбs si me da la gana de cambiar el nъmero, simplemente lo hago en la constante, y no donde la utilicй.
Ahora tenemos que hacer que cuando el jugador cambie de interior, entre en el equipo de los perdedores.
Como podemos ver, no solo hay que cambiar su equipo cuando entra en un interior, sino tambiйn cuando su interior cambia al del mundo externo (nъmero 0). Asн de simple es lograr que no haya muertes en los interiores. Para que las muertes se permitan en algunos interiores y otros no, usen las condiciones (if, else if, else, switch, etc).
ЎPor favor, limitarse a hacer preguntas o corregir algo!
ЎNo respondas simplemente con un "buen tutorial" o algo parecido!
Hola, este tutorial es realmente simple, aunque lo que voy a explicar aquн todavнa no lo he intentado. En la mayorнa de los servidores de duelos, peleas, tiroteos o como quieran llamarlos, se busca que en algunos interiores no se pueda matar. El problema viene al buscar una forma de que las personas no se maten, casi siempre hay que buscar un sistema muy complicado que por ejemplo, le quite las armas al jugador, lo vuelva invulnerable, etc.
Sin embargo, hay una soluciуn muy simple a este problema, no necesitamos usar timers, chequeo de бreas; nada de eso, solamente una funciуn, con ayuda de un callback y uno o dos definiciones constantes para no tener que recordar valores en nuestra mente.
їQuй funciуn evita que un jugador mate a otro?
Muy fбcil, solo basta jugar en un servidor de guerra en equipo para saberlo. Si, es SetPlayerTeam, la cual cambia el equipo del jugador al que nosotros decidamos. Pero, їcuбl es el truco? El truco es, poner en el mismo equipo a todos los jugadores que entren a un interior. Es necesario usar un equipo que no sea utilizado por el servidor en ningъn otro caso, para evitar errores.
Pero, їcуmo se cuando el jugador entra a un interior? Muy fбcil, con el callback OnPlayerInteriorChange, el cual tiene dos parбmetros los cuales nos indican en que interior pasу el jugador, y en que interior estaba antes de cambiar al actual.
Eres un idiota, Ўno entendн nada!
Eso significa que es hora de ver un ejemplo de nuestro sistema. Lo primero que necesitamos es una constante que nos quite el trabajo de tener que recordar el nъmero del equipo. Yo la llamarй “EQUIPO_PARA_INTERIORES”.
pawn Код:
// Generalmente esto se pone donde estбn las otras definiciones.
#define EQUIPO_PARA_INTERIORES 64
// Nъmero 64 porque nunca voy a usar ese equipo para otra cosa.
Ahora tenemos que hacer que cuando el jugador cambie de interior, entre en el equipo de los perdedores.
pawn Код:
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
// newinteriorid es el interior al que el jugador acaba de entrar.
// oldinteriorid es el interior donde estaba el jugador antes de entrar al actual.
if(newinteriorid != 0)
SetPlayerTeam(playerid, EQUIPO_PARA_INTERIORES); // Esta es la bendita funciуn.
else SetPlayerTeam(playerid, 255);
// 255 es el equipo en el que estб el jugador por defecto, en el SI se pueden matar.
return 1;
}
ЎPor favor, limitarse a hacer preguntas o corregir algo!
ЎNo respondas simplemente con un "buen tutorial" o algo parecido!