SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Español/Spanish

 
 
Thread Tools Display Modes
Old 27/02/2010, 08:21 AM   #1
CristianTdj
High-roller
 
CristianTdj's Avatar
 
Join Date: Jul 2009
Location: Andalucía, Spain.
Posts: 1,320
Reputation: 5
Default [TUTORIAL] Crear un servidor TDM

¿Qué es un servidor TDM?

Un servidor TDM "Team Death Match", traducido al castellano como "Combate por equipos" (a mi manera, más fácil de entender), son servidores, como dice su nombre, de combates por equipos.

¿Cómo lo creo?

Si quieres hacer uno y no sabes como, en este tutorial lo aprenderás paso por paso.

1. Definimos lo que nos va a hacer posible poner equipos:

pawn Code:
new gPlayerClass[MAX_PLAYERS];
new gTeam[MAX_PLAYERS];


2. Definimos los equipos:

Pueden ser tantos equipos como quieras, en este caso solo pondré 2.

pawn Code:
#define TEAM_POLICIAS 0
#define TEAM_LADRONEs 1

Ya tenemos todo definido, ahora pasemos a otra cosa.


3. Añadimos los personajes:

pawn Code:
public OnGameModeInit()
{
  //Todas las cosas que hayan...

  AddPlayerClass(skin, coordenadas, arma1, muinición1, arma2, mui2, arma3, mui3); //POLICIA
  AddPlayerClass(skin, coordenadas, arma1, muinición1, arma2, mui2, arma3, mui3); //LADRÓN
  return 1;
}


4. Hacemos que el jugador que haga spawn sea de un equipo u otro:

Esto hace que cuando hagas spawn del jugador Policía o Ladrón, sea un equipo u otro.

pawn Code:
public OnPlayerRequestClass(playerid, classid)
{
  gPlayerClass[playerid] = classid;

  switch (classid)
  {
    case 0:    
    {
      gTeam[playerid] = TEAM_POLICIA;            //Esto comprueba de que equipo es el personaje de antes. En este caso el primer pesonaje es policía.
      GameTextForPlayer(playerid, "~g~Policia", 1000, 6);  //Esto es el texto que aparece. "~g~" es el color (Green - Verde).

    }
    case 1: //Case 1 es el personaje que pusimos antes, el segundo.
    {
      gTeam[playerid] = TEAM_LADRON;            
      GameTextForPlayer(playerid, "~r~Ladron", 1000, 6);   // "~r~" (Red - Rojo)
    }
  }
  //Posiciones en la que se ven los jugadores para hacer spawn.
  SetPlayerPos(playerid, 489.8416,-72.4437,999.2266);
  SetPlayerFacingAngle( playerid, 2.3616 );
  SetPlayerCameraPos(playerid, 491.6849,-72.3607,999.2117);
  SetPlayerCameraLookAt(playerid, 489.8416,-72.4437,999.2266);
  SetPlayerInterior(playerid ,11);
  return 1;
}


5. Ponemos los colores de los quipos:

pawn Code:
public OnPlayerSpawn(playerid)
{
  if(gTeam[playerid] == TEAM_POLICIA)
  {
    SetPlayerColor(playerid, color);
  }
  if(gTeam[playerid] == TEAM_LADRON)
  {
         SetPlayerColor(playerid, color);
  }

  //También podemos añadir un mensaje que informe de que un jugador ha entrado.
 
  new string[64], pName[MAX_PLAYER_NAME];
  if(gTeam[playerid] == gTeam[playerid])
  {
    GetPlayerName(playerid,pNombre,MAX_PLAYER_NAME);
    format(string,sizeof string,"%s se ha unido a la batalla.",pNombre); //Mensaje. Si lo vais a modificar no cambies %s (es el nombre del jugador).
    SendClientMessageToAll(color, string);
  }


6. Modificamos el score del jugador cuando mata a alguien:

pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
  SendDeathMessage(killerid, playerid, reason); //Este es el mensaje que sale a la derecha de la pantalla de este modo: Asesino - Arma - Muerto
  SetPlayerScore(killerid,(GetPlayerScore(killerid))+1); //Esto da al asesino 1 punto de score.
  SetPlayerScore(playerid,(GetPlayerScore(playerid))-1); //Esto quita al muerto 1 punto de score.
 
  //Si el jugador de un equipo mata al mismo miembro de este:
  if(gTeam[playerid] == 1 && gTeam[killerid] == 1)
  {
    SetPlayerScore(killerid,(GetPlayerScore(killerid))-1); //Se le baja -1 al score.
    new string[50];
    format(string, sizeof(string), "~r~No mates a tus aliados"); //Texo, podeis cambiarlo pero no añadais 'ñ' porque no lo lee.
    GameTextForPlayer(killerid, string, 3000, 4);
    PlayerPlaySound(killerid, 1002, 0.0, 0.0, 0.0); //Sonido.
    SetPlayerHealth(killerid, 0.0); //Mata al asesino.
    return true; //Fin.
  }

  //También podemos añadir el mensaje que aparece en el juego GTA San Andreas de "Eliminado".

  new string[50];
  format(string, sizeof(string), "~w~Eliminado");
  GameTextForPlayer(playerid, string, 3000, 2);
  return 1;
}


Y ya así tenemos lo básico para hacer nuestro servidor.


__________________________________________________ ____________________________________

Otras cosas de interés.

» Crear un comando solo para un equipo.

Con esto haríamos un comando en el que un equipo pudiera leerlo y el otro no.
Lo que crearemos será un "Dialog" o menú.



pawn Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
  if(!strcmp(cmdtext, "/policia", true))
  {
    if (gTeam[playerid] == TEAM_POLICIA) //Esto comprueba que el jugador sea de un equipo u otro.
    {
      ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Policías", "Todo lo que querais\n Esta n con el palito hace que cambiemos de renglón.","Aceptar","Cancelar");
    } else {   //Si el jugador es Policía, se muestra el menú, sino:
    SendClientMessage(playerid, 0xFF0000FFF, "Tú no eres Policía.");
  }
  return 0; /* O también podemos poner: return SendClientMessage(playerid, 0xffffffff, "Ese comando no existe."); */
}


» Comandos útiles:

●Radio de equipo.

pawn Code:
//Como es un comando dcmd hay que definir primero dcmd:
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

//Ahora vamos con el comando:

public OnPlayerCommandText(playerid, cmdtext[])
{
  //Todo lo que tengamos...

  dcmd(r, 1, cmdtext);  //Esto define el comando.
  dcmd(radio, 5, cmdtext); //Este es el segundo comando, más largo.
  return 0; /* Como dije antes se puede sustituir por un mensaje. */
}
dcmd_r(playerid, params[])
{
    new text[256], name[60];
    if(sscanf(params, "s", text)) SendClientMessage(playerid, 0xFFFF00FF, "USA: /R <texto>");
    else
    {
      new string[322];
      GetPlayerName(playerid, name, 60);
      format(string, 322, "(%s) (Radio): %s", name, text);
      for(new i=0;i<MAX_PLAYER;i++)
      {
        if(IsPlayerConnected(i))
        {
            if(gTeam[i] == gTeam[playerid])
            {
              SendClientMessage(i, 0xFF0080FF, string);
                }
            }
        }
    }
    return 1;
}

●Mensajes personales.

pawn Code:
//Esto lo podemos poner debajo de dcmd(r, 1, cmdtext);
  dcmd(mp, 2, cmdtext);
  return 0; /* Y sigo diciendo lo mismo sobre esto.*/

dcmd_mp(playerid, params[])
{
    new ID, text[256];
    if(sscanf(params, "is", ID, text)) SendClientMessage(playerid, 0xFFFF00FF, "USA: /MP <id> <texto>");
    else if(IsPlayerConnected(ID) == 0)
    {
      new string[100];
      format(string, 100, "%d no está jugando.", ID);
      SendClientMessage(playerid, 0xFF0000FF, string);
    }
    else
    {
      new string[300], name[60], name2[60];
      GetPlayerName(playerid, name, 60);
      GetPlayerName(ID, name2, 60);
      format(string, 300, "(%s[%d]) (MP): %s", name, playerid, text);
      SendClientMessage(ID, 0xFF8000FF, string);
      format(string, 300, "Has enviado a %s[%d] un mensaje privado: %s", name2, ID, text);
      SendClientMessage(playerid, 0xFF8000FF, string);
    }
    return 1;
}


Espero que os haya servido mucho. NOTA: Seguramente habrá cosas des ordenadas, ordenadlas vosotros porque yo ya no puedo hacer más

Seguid colaborando, comed sano, haced deporte y jugad mucho a Sa-mp ^^



__________________

CristianTdj is offline  
Old 27/02/2010, 10:01 AM   #2
MrDeath537
High-roller
 
Join Date: Nov 2009
Location: Argentina
Posts: 2,007
Reputation: 29
Default Re: [TUTORIAL] Crear un servidor TDM

Util para los nuevos. Buen aporte
__________________
Sometimes I return.
MrDeath537 is offline  
Old 03/03/2010, 02:29 PM   #3
CristianTdj
High-roller
 
CristianTdj's Avatar
 
Join Date: Jul 2009
Location: Andalucía, Spain.
Posts: 1,320
Reputation: 5
Default Re: [TUTORIAL] Crear un servidor TDM

Quote:
Originally Posted by MrDeath
Util para los nuevos. Buen aporte
__________________

CristianTdj is offline  
Old 03/03/2010, 02:40 PM   #4
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: [TUTORIAL] Crear un servidor TDM

esta muy bueno el tuto xDD lo sacastes de tu gm jejeje xD
__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
Old 03/03/2010, 06:42 PM   #5
CristianTdj
High-roller
 
CristianTdj's Avatar
 
Join Date: Jul 2009
Location: Andalucía, Spain.
Posts: 1,320
Reputation: 5
Default Re: [TUTORIAL] Crear un servidor TDM

Quote:
Originally Posted by xenowort
esta muy bueno el tuto xDD lo sacastes de tu gm jejeje xD
Sí, mi Gm, y NO me lo bajé, lo hice yo solo
__________________

CristianTdj is offline  
Old 03/03/2010, 07:56 PM   #6
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: [TUTORIAL] Crear un servidor TDM

Quote:
Originally Posted by CristianTdj
Quote:
Originally Posted by xenowort
esta muy bueno el tuto xDD lo sacastes de tu gm jejeje xD
Sí, mi Gm, y NO me lo bajé, lo hice yo solo
XDDDD esta bien
__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
Old 24/03/2010, 04:13 AM   #7
SenseiRD
Little Clucker
 
Join Date: Mar 2010
Posts: 8
Reputation: 0
Default Re: [TUTORIAL] Crear un servidor TDM

Buen aporte, Bastante util para aquellos que estan comenzando a crear un GM.
SenseiRD is offline  
Old 24/03/2010, 10:01 AM   #8
CristianTdj
High-roller
 
CristianTdj's Avatar
 
Join Date: Jul 2009
Location: Andalucía, Spain.
Posts: 1,320
Reputation: 5
Default Re: [TUTORIAL] Crear un servidor TDM

Quote:
Originally Posted by SenseiRD
Buen aporte, Bastante util para aquellos que estan comenzando a crear un GM.
Gracias, lo hice especialmente para esas personas
__________________

CristianTdj is offline  
Old 25/03/2010, 03:11 AM   #9
Nruluis
Little Clucker
 
Join Date: Mar 2010
Posts: 42
Reputation: 0
Default Re: [TUTORIAL] Crear un servidor TDM

Tengo una duda

Como pongo las cordenadas XDesq soy nuevo mira por ejemplo quiero q de los ladrones la posision sea
x 1998 z 22 y 1668 a 97 namas ocupo q me digan asi por ejemplo

aki es x,aki es z,aki es y,aki es a

asi segun el orden
Nruluis is offline  
Old 25/03/2010, 08:57 AM   #10
CristianTdj
High-roller
 
CristianTdj's Avatar
 
Join Date: Jul 2009
Location: Andalucía, Spain.
Posts: 1,320
Reputation: 5
Default Re: [TUTORIAL] Crear un servidor TDM

Quote:
Originally Posted by Nruluis
Tengo una duda

Como pongo las cordenadas XDesq soy nuevo mira por ejemplo quiero q de los ladrones la posision sea
x 1998 z 22 y 1668 a 97 namas ocupo q me digan asi por ejemplo

aki es x,aki es z,aki es y,aki es a

asi segun el orden
Entra en un servidor y ve a la posición donde quieres que salgan, entonces escribe /Save <comentario>.
Ej: /Save SpawnLadrones

Además te falta la posición A.
__________________

CristianTdj is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 04:17 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.