sistema de warnings para teamkills
#1

bueno esto lo hago a pedido de un amigo y a lo mejor le sirva a alguien mas

es un simple sistema de warning para evitar el teamkill

si x algo esta mal me avisan...

en fin arriba de todo colocamos lo siguiente
pawn Код:
static teamkills[MAX_PLAYERS];
static tknow[MAX_PLAYERS];

forward teamkill(playerid);
ahora en OnPlayerDeath

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
  new name[MAX_PLAYER_NAME];
    new warning[256];
    if (gTeam[playerid] == gTeam[killerid]) { //modificamos gTeam x su definicion de equipos,en caso de ser esta lo dejamos asi
    GivePlayerMoney(killerid, -1000); //esto es dinero q se le descontara al q mato al compaсero, pueden modificarlo a su gusto o eliminarlo
    if (teamkills[killerid] == 0) {
          format(warning, sizeof(warning), "Mataste un compaсero de equipo! %s. 1/3", name); //primer warn sale solo un mensaje q pueden modificar
                SendClientMessage(killerid, 0xFFFF00AA, warning);
            } else if (teamkills[killerid] == 1) {
                SetPlayerInterior(killerid,6);
          SetPlayerPos(killerid,264.6296,77.1372,1001.0390);
                ResetPlayerWeapons(killerid);
                SendClientMessage(killerid, 0xFFFF00AA, "Fuiste preso por matar un compaсero de equipo 2/3"); //segundo warn el q hace 2 teamkill sale en mensaje y va a la carcel
                SetTimer("RescueTK", 120000, 1); //esto es el tiempo q el jugador estara en la carcel, pueden modificarlo a su gusto
                tknow[killerid]=1;
} else {
                SendClientMessage(killerid, 0xFFFF00AA, "Fuiste autokickeado por matar un compaсero de equipo 3/3"); //tercer warn el q hace x tercera vez teamkill es automaticamente kickeado del server xq se ve q no entiende xD
                Kick(killerid);
  }
  }
en caso de querer hacer un comando para q los player puedan salir de la carcel con dinero colocamos lo siguiente en OnPlayerCommandText

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
else if (strfind(cmdtext,"/rescate",false,0) == 0) {
   
      if (tknow[playerid] == 0) {
            SendClientMessage(playerid, COLOR_COMMAND, "No estas en la carcel."); //pueden modificar el texto si haci lo desean
            return 1;
      }
        if (GetPlayerMoney(playerid) < 5000) { //es el monto q debera pagar el player para salir de lacarcel , el cual pueden modificar
            SendClientMessage(playerid, COLOR_COMMAND, "No te alcanza.");
            return 1;
        }
        SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,1553.0318,-1675.4394,16.1953);
        GivePlayerMoney(playerid,-5000); //si modifican el monto deben modificarlo aqui tambien, ya q es el dinero q se le descuenta al jugador
        tknow[playerid]=0;
        return 1;
    } else {
      return 0;
    }
    return 1;
}

bien eso es todo espero q les sirva

NOTA: avisen cualquier error y los ayudare a corregirlos

suerte salu2

Reply
#2

Muy bueno el sistema Laborg!

Gracias
Reply
#3

lo tengo haci pero nada mas manda el primer aviso y de ahi no si vuelve a matar a uno de su equipo le vuelve a mandar el mismo mensaje y jamas lo manda ala carcel

pawn Код:
new name[MAX_PLAYER_NAME];
    new warning[256];
    if (gTeam[playerid] == gTeam[killerid]) { //modificamos gTeam x su definicion de equipos,en caso de ser esta lo dejamos asi
    GivePlayerMoney(killerid, -5000); //esto es dinero q se le descontara al q mato al compaсero, pueden modificarlo a su gusto o eliminarlo
    if (teamkills[killerid] == 0) {
          format(warning, sizeof(warning), "***Administrator te a Dado warning (razon: Team Kill Matar un integrante de equipo! %s.(1/3***)", name); //primer warn sale solo un mensaje q pueden modificar
                SendClientMessage(killerid, 0xFFFF00AA, warning);
            } else if (teamkills[killerid] == 1) {
                SetPlayerInterior(killerid,6);
                SetPlayerPos(killerid,264.6296,77.1372,1001.0390);
                ResetPlayerWeapons(killerid);
                SendClientMessage(killerid, 0xFFFF00AA, "***Administrator te a Dado warning y has sido encarcelado (razon: Team Kill Matar un integrante de equipo! (2/3***"); //segundo warn el q hace 2 teamkill sale en mensaje y va a la carcel
                SetTimer("RescueTK", 120000, 1); //esto es el tiempo q el jugador estara en la carcel, pueden modificarlo a su gusto
                tknow[killerid]=1;
            } else {
                SendClientMessage(killerid, 0xFFFF00AA, "Fuiste autokickeado por matar un compaсero de equipo 3/3"); //tercer warn el q hace x tercera vez teamkill es automaticamente kickeado del server xq se ve q no entiende xD
                Kick(killerid);
  }
  }

Quiero saber si el tiempo esta en segundos??
Reply
#4

Este post fue hace mas de 1 aсo. El autor del post no se conecto nunca mбs (xq lo conozco xd).
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)