SA-MP Forums Archive
[ayuda] lo q le falta al TDM - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [ayuda] lo q le falta al TDM (/showthread.php?tid=126009)



[ayuda] lo q le falta al TDM - laborgward - 06.02.2010

bueno mi idea es q el TDM consista en 2 ekipos y un tiempo de 20 min.
el ekipo q en esos 20 min haya logrado mas asesinatos ganara y q salga un msj del ekipo ganador, mientras transcurren esos 20 min aparesca un texto q vaya informando cuantos asesinatos lleva cada ekipo....
intente hacerlo yo mismo pero fracase xD bueno espero puedan ayudarme

PD: y si pueden q los admins puedan restaurar las stats de kada ekipo y el tiempo... nada mas gracias


Re: [ayuda] lo q le falta al TDM - TheChaoz - 06.02.2010

bueno, inicialmente para empezar decime que es lo 1є que fallo en tu GM, o sea lo 1є que no te salio hacer.


Re: [ayuda] lo q le falta al TDM - CristianTdj - 07.02.2010

Queremos ver los errores.


Re: [ayuda] lo q le falta al TDM - laborgward - 07.02.2010

Quote:
Originally Posted by the_chaoz
bueno, inicialmente para empezar decime que es lo 1є que fallo en tu GM, o sea lo 1є que no te salio hacer.
lo habia echo como me habian explikado q lo haga pero salio mal y ya no lo tengo x eso me gustaria q me ayuden a armarlo de nuevo yo ya tengo todo el TDM armado solo me falta un objetivo osea el q explike anteriormente


Re: [ayuda] lo q le falta al TDM - TheChaoz - 07.02.2010

bueno es un poco largo de explicar creo, pero aca te doy un empujon x asi decirlo para que te puedas guiar

si ya tienes los equipos definidos, crea una variable globalos asecinatos de cada equipo y un timer.
una vez que tienes la variable, en el callback OnPlayerDeath, vas a ver de que equipo es cada jugador, lo puedes hacer con un if. y le sumas 1 asecinato al equipo anterior(a la variable).
dentro del timer que va a tener el tiempo que tu elijas mediante un if comparas que equipo tiene mas asecinatos y decides quien es el ganador.
podria quedar algo asi:
pawn Код:
#define EQUIPO1 1  //yo defini el equipo 1 para que te puedas guiar y que no haya nada sin definir dentro de lo q te digo
#define EQUIPO2 2  //IDEM que arriba
new Equipo1Kills;  // variable global para guardar los asecinatos del equipo 1.
new Equipo2Kills;  // variable global para guardar los asecinatos del equipo 2.
new gTeam[MAX_PLAYERS];  //variable para guardar el equipo de cada jugador.

forward Partida();  //forward del timer
pawn Код:
public OnGameModeodeInit()
{
  SetTimer("Partida", 1200000, 0);//timer que determina la duracion de cada partida. (Nota: El timer esta puesto en 20 minutos)
  return 1;
}
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
  if(gTeam[playerid] != gTeam[killerid]){  //si el jugador que murio y el que lo mato no son del mismo equipo...
    if(gTeam[playerid] == EQUIPO1){  //si el jugador que murio es del equipo 1...
      Equipo2Kills++;  //suma 1 a la variable de asecinatos del equipo 2.
    }
    //si solo son 2 equipos usa else, si no usa if.
    else{
      Equipo1Kills++;  //suma 1 a la variable de asecinatos del equipo 1.
    }
  }
  return 1;
}
pawn Код:
public Partida()  //El Timer
{
  if(Equipo1Kills > Equipo2Kills){  //si los asecinatos del equipo 1 son mas que los del equipo 2...
    for(new i=0; i<MAX_PLAYERS; i++){  //variable q almacena todos los id de los jugadores
      if(IsPlayerConnected(i) && gTeam[i] == EQUIPO2){  //si i esta conectado y es miembro del equipo 1...
        GameTextForPlayer(i, "-B-Tu equipo ha Ganado la batalla!", 3000, 3);  //manda un mensaje
      }
    }
  }
  if(Equipo1Kills < Equipo2Kills){  //si los asecinatos del equipo 2 son mas que los del equipo 1...
    for(new i=0; i<MAX_PLAYERS; i++){
      if(IsPlayerConnected(i) && gTeam[i] == EQUIPO2){
        GameTextForPlayer(i, "-B-Tu equipo ha Ganado la batalla!", 3000, 3);
      }
    }
  }
  else{
    for(new i=0; i<MAX_PLAYERS; i++){
      if(IsPlayerConnected(i)){
        GameTextForPlayer(i, "-B-EMPATE!", 3000, 3);
      }
    }
  }
}
Espero que te sirva


Re: [ayuda] lo q le falta al TDM - laborgward - 08.02.2010

bn escucha the_chaoz, en este momento no tengo mi sv x problemas con mi PC pero en un par de dias lo utilizare y te avisare cual fue el resultado pero creo q va a funcionar,,, oye pero en ves de q a cada ekipo ganador le salga un msj no se puede hacer q directamente salga un msj para todos diciendo q equipo gano creo q estoy pidiendo mucho pero asi voy a aprender bien jeje desde ya muchas gracias ya lo probare y te avisare cual fue el resultado amigaso no re vemo


Re: [ayuda] lo q le falta al TDM - TheChaoz - 08.02.2010

si usa format


Re: [ayuda] lo q le falta al TDM - laborgward - 08.02.2010

format.... no entendi xD


Re: [ayuda] lo q le falta al TDM - TheChaoz - 08.02.2010

perdon format no sirve en este caso xD.
segun lo q entendi
lo que tienes q cambiar es:
pawn Код:
public Partida()  //El Timer
{
  if(Equipo1Kills > Equipo2Kills){  //si los asecinatos del equipo 1 son mas que los del equipo 2...
    for(new i=0; i<MAX_PLAYERS; i++){  //variable q almacena todos los id de los jugadores
      if(IsPlayerConnected(i)){  //si i esta conectado...
        GameTextForPlayer(i, "-B-El equipo 1 ha Ganado la batalla!", 3000, 3);  //manda un mensaje
      }
    }
  }
  if(Equipo1Kills < Equipo2Kills){  //si los asecinatos del equipo 2 son mas que los del equipo 1...
    for(new i=0; i<MAX_PLAYERS; i++){
      if(IsPlayerConnected(i)){
        GameTextForPlayer(i, "-B-El equipo 2 ha Ganado la batalla!", 3000, 3);
      }
    }
  }
  else{
    for(new i=0; i<MAX_PLAYERS; i++){
      if(IsPlayerConnected(i)){
        GameTextForPlayer(i, "-B-EMPATE!", 3000, 3);
      }
    }
  }
}
y de esta forma el mensaje lo mandaria a todos


Re: [ayuda] lo q le falta al TDM - laborgward - 08.02.2010

Quote:
Originally Posted by the_chaoz
perdon format no sirve en este caso xD.
segun lo q entendi
lo que tienes q cambiar es:
pawn Код:
public Partida()  //El Timer
{
  if(Equipo1Kills > Equipo2Kills){  //si los asecinatos del equipo 1 son mas que los del equipo 2...
    for(new i=0; i<MAX_PLAYERS; i++){  //variable q almacena todos los id de los jugadores
      if(IsPlayerConnected(i)){  //si i esta conectado...
        GameTextForPlayer(i, "-B-El equipo 1 ha Ganado la batalla!", 3000, 3);  //manda un mensaje
      }
    }
  }
  if(Equipo1Kills < Equipo2Kills){  //si los asecinatos del equipo 2 son mas que los del equipo 1...
    for(new i=0; i<MAX_PLAYERS; i++){
      if(IsPlayerConnected(i)){
        GameTextForPlayer(i, "-B-El equipo 2 ha Ganado la batalla!", 3000, 3);
      }
    }
  }
  else{
    for(new i=0; i<MAX_PLAYERS; i++){
      if(IsPlayerConnected(i)){
        GameTextForPlayer(i, "-B-EMPATE!", 3000, 3);
      }
    }
  }
}
y de esta forma el mensaje lo mandaria a todos
gracias kpo ya lo probare y te avisare si funciona o no en caso de no funcionar posteare los errores ok no re vemo...