[Ayuda] Poner un AntiTeamKill .-.
#1

Hice un pequeсo sistema de minijuego TDM tipo OP7, el sistema funciona perfecto y todo eso, pero quisiera agregarle un antiteamkill para que no se maten entre un mismo equipo, intentй de todo con el SetPlayerTeam, pero no entiendo bien como funciona ps no me sale, a veces se no se podнan matar entre un mismo equipo y al equipo contrario (o sea a nadie), como mismo hay que hacerlo o definirlo? les dejo una parte del sistema, el cmd:


Код:
if(strcmp(cmdtext, "/op7", true) == 0)
	{
        if(SOP7 == 0) return SendClientMessage(playerid,red, "[ERROR]: El evento no estб Activado!");
        if(SinComandoVuelo[playerid]==1)
	    {
	    SendClientMessage(playerid,red,"[ERROR]: El Vuelo estб activado, desactivalo con /svuelo!");
	    return 1;
	    }
        if(Minijuego[playerid] == 1 || InformacionL[playerid][PAR] == 1)
	    {
	    SendClientMessage(playerid, red, "[ERROR]: No puedes usar comandos en Minijuegos o Parkour, usa /kill");
	    return 1;
	    }
	    if(tdmplaying == 1)
	    {
	        SendClientMessage(playerid, red, "[ERROR]: Ya comenzу el Minijuego!");
	        return 1;
	    }
	    if(playerinminigame[playerid] == 1)
	    {
	        SendClientMessage(playerid, red, "[ERROR]: Ya estбs en el Minijuego!");
	        return 1;
	    }
	    if(tdmon == 0)
	    {
	        tdmon = 1;
	        PlayerinTdm[playerid] = 1;
	        playerinminigame[playerid] = 1;
	        tdmrank = 1;
	        TogglePlayerControllable(playerid, 0);
            SetPlayerVirtualWorld(playerid,7);
            if (RushChallenge==1) { new r = random(sizeof(RUSHBLUE)); SetPlayerPos(playerid, RUSHBLUE[r][0], RUSHBLUE[r][1], RUSHBLUE[r][2]); SetPlayerFacingAngle(playerid,0.0000); GameTextForAll("~g~ha comenzado ~n~el Minijuego OP7 ~n~~y~Rush Challenge ~n~~g~tienes 30 segundos ~n~para entrar a ~n~~b~/OP7",10000,3);}
		    else if (DeathSquare==1) { new r = random(sizeof(DEATHBLUE)); SetPlayerPos(playerid, DEATHBLUE[r][0], DEATHBLUE[r][1], DEATHBLUE[r][2]); SetPlayerFacingAngle(playerid,88.1348); GameTextForAll("~g~ha comenzado ~n~el Minijuego OP7 ~n~~y~Death Square ~n~~g~tienes 30 segundos ~n~para entrar a ~n~~b~/OP7",10000,3);}
		    else if (Otro==1) { new r = random(sizeof(OTROBLUE)); SetPlayerPos(playerid, OTROBLUE[r][0], OTROBLUE[r][1], OTROBLUE[r][2]); SetPlayerFacingAngle(playerid,86.9673); GameTextForAll("~g~ha comenzado ~n~el Minijuego OP7 ~n~~y~Terreno Gansters ~n~~g~tienes 30 segundos ~n~para entrar a ~n~~b~/OP7",10000,3);}
	        ResetPlayerWeapons(playerid);
	        GivePlayerWeapon(playerid,1,1);
	        GivePlayerWeapon(playerid,24,50000);
	        GivePlayerWeapon(playerid,31,50000);
	        GivePlayerWeapon(playerid,32,50000);
	        SetPlayerHealth(playerid,100);
	        SetPlayerArmour(playerid,0);
	        SetPlayerColor(playerid,0x0000BBAA);// BLUE
	        GameTextForPlayer(playerid,"~b~Espera a que ~n~comienze!",4000,3);
	        TextDrawHideForPlayer(playerid,ByAnn);
	        blueplayers = 1;
	        redplayers = 0;
	        tdmcolor = 1;
	        startvar[1] = 1;
	        tdmtimer = SetTimer("Starttdm", 31000, 0);
	        format(string2, sizeof(string2), "[OP7]: {ffffff}%s ha comenzado el Minijuego OP7, tienes 30 segundos para entrar a {001EFF}/OP7", pName(playerid));
	        SendClientMessageToAll(0x33AA33AA,string2);
			TextDrawHideForPlayer(playerid,ByAnn);
			EnviarComandoRace2(playerid,"op7");
			return 1;
	        } else if(tdmon == 1 && tdmcolor == 1) {
	        PlayerinTdm[playerid] = 1;
	        playerinminigame[playerid] = 1;
	        tdmrank++;
	        TogglePlayerControllable(playerid, 0);
	        SetPlayerVirtualWorld(playerid,7);
	        if (RushChallenge==1) { new r = random(sizeof(RUSHRED)); SetPlayerPos(playerid, RUSHRED[r][0], RUSHRED[r][1], RUSHRED[r][2]); SetPlayerFacingAngle(playerid,181.9021);}
		    else if (DeathSquare==1) { new r = random(sizeof(DEATHRED)); SetPlayerPos(playerid, DEATHRED[r][0], DEATHRED[r][1], DEATHRED[r][2]); SetPlayerFacingAngle(playerid,271.0580);}
		    else if (Otro==1) { new r = random(sizeof(OTRORED)); SetPlayerPos(playerid, OTRORED[r][0], OTRORED[r][1], OTRORED[r][2]); SetPlayerFacingAngle(playerid,260.8271);}
	        ResetPlayerWeapons(playerid);
	        GivePlayerWeapon(playerid,1,1);
	        GivePlayerWeapon(playerid,24,50000);
	        GivePlayerWeapon(playerid,31,50000);
	        GivePlayerWeapon(playerid,32,50000);
	        SetPlayerHealth(playerid,100);
	        SetPlayerArmour(playerid,0);
	        SetPlayerColor(playerid,0xFF0000AA);// RED
	        GameTextForPlayer(playerid,"~r~Espera a que ~n~comienze!",4000,3);
	        TextDrawHideForPlayer(playerid,ByAnn);
	        redplayers++;
	        tdmcolor = 0;
	        format(string2, sizeof(string2), "[OP7]: {FFFFFF}%s ha entrado al OP7 del equipo {FF0C0C}Rojo!", pName(playerid));//
			SendClientMessageToAll(0x33AA33AA,string2);
			return 1;
	        } else if(tdmon == 1 && tdmcolor == 0) {
	        PlayerinTdm[playerid] = 1;
	        playerinminigame[playerid] = 1;
	        tdmrank++;
	        TogglePlayerControllable(playerid, 0);
            SetPlayerVirtualWorld(playerid,7);
	        if (RushChallenge==1) { new r = random(sizeof(RUSHBLUE)); SetPlayerPos(playerid, RUSHBLUE[r][0], RUSHBLUE[r][1], RUSHBLUE[r][2]); SetPlayerFacingAngle(playerid,0.0000);}
		    else if (DeathSquare==1) { new r = random(sizeof(DEATHBLUE)); SetPlayerPos(playerid, DEATHBLUE[r][0], DEATHBLUE[r][1], DEATHBLUE[r][2]); SetPlayerFacingAngle(playerid,88.1348);}
		    else if (Otro==1) { new r = random(sizeof(OTROBLUE)); SetPlayerPos(playerid, OTROBLUE[r][0], OTROBLUE[r][1], OTROBLUE[r][2]); SetPlayerFacingAngle(playerid,86.9673);}
	        ResetPlayerWeapons(playerid);
	        GivePlayerWeapon(playerid,1,1);
	        GivePlayerWeapon(playerid,24,50000);
	        GivePlayerWeapon(playerid,31,50000);
	        GivePlayerWeapon(playerid,32,50000);
	        SetPlayerHealth(playerid,100);
	        SetPlayerArmour(playerid,0);
	        SetPlayerColor(playerid,0x0000BBAA);// BLUE
	        GameTextForPlayer(playerid,"~b~Espera a que ~n~comienze!",4000,3);
	        TextDrawHideForPlayer(playerid,ByAnn);
	        blueplayers++;
	        tdmcolor = 1;
	        format(string2, sizeof(string2), "[OP7]: {FFFFFF}%s ha entrado al OP7 del equipo {001EFF}Azul!", pName(playerid));//
			SendClientMessageToAll(0x33AA33AA,string2);
			return 1;
	    }
	}
Definan como se hace, son 2 equipos, al disparar al mismo equipo este no le baje la vida, supongo q es en OnPlayerTakeDamage pero no se como se hace u.u
Si falta algo me dicen..
Reply
#2

SetPlayerTeam. Si dos jugadores tienen el mismo team no se pueden quitar vida entre ellos.
Reply
#3

EnableVehicleFriendlyFire

SetPlayerTeam
Reply
#4

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
SetPlayerTeam. Si dos jugadores tienen el mismo team no se pueden quitar vida entre ellos.
Digamos q al rojo le pongo SetPlayerTeam(playerid, 1); y al azul el SetPlayerTeam(playerid, 2); y al salir SetPlayerTeam(playerid, 255);
Solo eso? no hay q hacer o definir otra cosa? ._.
Reply
#5

Quote:
Originally Posted by dannypanda05
Посмотреть сообщение
Digamos q al rojo le pongo SetPlayerTeam(playerid, 1); y al azul el SetPlayerTeam(playerid, 2); y al salir SetPlayerTeam(playerid, 255);
Solo eso? no hay q hacer o definir otra cosa? ._.
Solo eso. GetPlayerTeam para saber de que team es por si necesitas comprobarlo.
Reply
#6

https://sampforum.blast.hk/showthread.php?tid=278006
Reply
#7

Puedes hacerlo como dice Blackazur, pero si quieres ahorrarte el include puedes usarlo asн:

pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    if(GetPlayerTeam(playerid) == GetPlayerTeam(damagedid))
    {
        new Float:P_Health;
        GetPlayerHealth(damagedid, P_Health);
        SetPlayerHealth(damagedid, P_Health + amount);
        SendClientMessage(playerid, -1, "No dispares a los de tu propio equipo!"); // Opcional
        return 1;
    }
    return 1;
}
Reply
#8

Код:
if(strcmp(cmdtext, "/op7", true) == 0)
	{
        if(SOP7 == 0) return SendClientMessage(playerid,red, "[ERROR]: El evento no estб Activado!");
        if(SinComandoVuelo[playerid]==1)
	    {
	    SendClientMessage(playerid,red,"[ERROR]: El Vuelo estб activado, desactivalo con /svuelo!");
	    return 1;
	    }
        if(Minijuego[playerid] == 1 || InformacionL[playerid][PAR] == 1)
	    {
	    SendClientMessage(playerid, red, "[ERROR]: No puedes usar comandos en Minijuegos o Parkour, usa /kill");
	    return 1;
	    }
	    if(tdmplaying == 1)
	    {
	        SendClientMessage(playerid, red, "[ERROR]: Ya comenzу el Minijuego!");
	        return 1;
	    }
	    if(playerinminigame[playerid] == 1)
	    {
	        SendClientMessage(playerid, red, "[ERROR]: Ya estбs en el Minijuego!");
	        return 1;
	    }
	    if(tdmon == 0)
	    {
	        tdmon = 1;
	        PlayerinTdm[playerid] = 1;
	        playerinminigame[playerid] = 1;
	        tdmrank = 1;
	        TogglePlayerControllable(playerid, 0);
            SetPlayerVirtualWorld(playerid,7);
            if (RushChallenge==1) { new r = random(sizeof(RUSHBLUE)); SetPlayerPos(playerid, RUSHBLUE[r][0], RUSHBLUE[r][1], RUSHBLUE[r][2]); SetPlayerFacingAngle(playerid,0.0000); GameTextForAll("~g~ha comenzado ~n~el Minijuego OP7 ~n~~y~Rush Challenge ~n~~g~tienes 30 segundos ~n~para entrar a ~n~~b~/OP7",10000,3);}
		    else if (DeathSquare==1) { new r = random(sizeof(DEATHBLUE)); SetPlayerPos(playerid, DEATHBLUE[r][0], DEATHBLUE[r][1], DEATHBLUE[r][2]); SetPlayerFacingAngle(playerid,88.1348); GameTextForAll("~g~ha comenzado ~n~el Minijuego OP7 ~n~~y~Death Square ~n~~g~tienes 30 segundos ~n~para entrar a ~n~~b~/OP7",10000,3);}
		    else if (Otro==1) { new r = random(sizeof(OTROBLUE)); SetPlayerPos(playerid, OTROBLUE[r][0], OTROBLUE[r][1], OTROBLUE[r][2]); SetPlayerFacingAngle(playerid,86.9673); GameTextForAll("~g~ha comenzado ~n~el Minijuego OP7 ~n~~y~Terreno Gansters ~n~~g~tienes 30 segundos ~n~para entrar a ~n~~b~/OP7",10000,3);}
	        ResetPlayerWeapons(playerid);
	        GivePlayerWeapon(playerid,1,1);
	        GivePlayerWeapon(playerid,24,50000);
	        GivePlayerWeapon(playerid,31,50000);
	        GivePlayerWeapon(playerid,32,50000);
	        
	        SetTimerEx("AntiTeamKILL",10,1,"d",playerid); ///////////////////////////////////////
	        SetPlayerTeam(playerid, AZULES);
	        
	        SetPlayerHealth(playerid,100);
	        SetPlayerArmour(playerid,0);
	        SetPlayerColor(playerid,0x0000BBAA);// BLUE
	        GameTextForPlayer(playerid,"~b~Espera a que ~n~comienze!",4000,3);
	        TextDrawHideForPlayer(playerid,ByAnn);
	        blueplayers = 1;
	        redplayers = 0;
	        tdmcolor = 1;
	        startvar[1] = 1;
	        tdmtimer = SetTimer("Starttdm", 31000, 0);
	        format(string2, sizeof(string2), "[OP7]: {ffffff}%s ha comenzado el Minijuego OP7, tienes 30 segundos para entrar a {001EFF}/OP7", pName(playerid));
	        SendClientMessageToAll(0x33AA33AA,string2);
			TextDrawHideForPlayer(playerid,ByAnn);
			EnviarComandoRace2(playerid,"op7");
			return 1;
	        } else if(tdmon == 1 && tdmcolor == 1) {
	        PlayerinTdm[playerid] = 1;
	        playerinminigame[playerid] = 1;
	        tdmrank++;
	        TogglePlayerControllable(playerid, 0);
	        SetPlayerVirtualWorld(playerid,7);
	        if (RushChallenge==1) { new r = random(sizeof(RUSHRED)); SetPlayerPos(playerid, RUSHRED[r][0], RUSHRED[r][1], RUSHRED[r][2]); SetPlayerFacingAngle(playerid,181.9021);}
		    else if (DeathSquare==1) { new r = random(sizeof(DEATHRED)); SetPlayerPos(playerid, DEATHRED[r][0], DEATHRED[r][1], DEATHRED[r][2]); SetPlayerFacingAngle(playerid,271.0580);}
		    else if (Otro==1) { new r = random(sizeof(OTRORED)); SetPlayerPos(playerid, OTRORED[r][0], OTRORED[r][1], OTRORED[r][2]); SetPlayerFacingAngle(playerid,260.8271);}
	        ResetPlayerWeapons(playerid);
	        GivePlayerWeapon(playerid,1,1);
	        GivePlayerWeapon(playerid,24,50000);
	        GivePlayerWeapon(playerid,31,50000);
	        GivePlayerWeapon(playerid,32,50000);
	        
	        SetTimerEx("AntiTeamKILL",10,1,"d",playerid); /////////////////////////////////////////
	        SetPlayerTeam(playerid, ROJOS);
	        
	        SetPlayerHealth(playerid,100);
	        SetPlayerArmour(playerid,0);
	        SetPlayerColor(playerid,0xFF0000AA);// RED
	        GameTextForPlayer(playerid,"~r~Espera a que ~n~comienze!",4000,3);
	        TextDrawHideForPlayer(playerid,ByAnn);
	        redplayers++;
	        tdmcolor = 0;
	        format(string2, sizeof(string2), "[OP7]: {FFFFFF}%s ha entrado al OP7 del equipo {FF0C0C}Rojo!", pName(playerid));//
			SendClientMessageToAll(0x33AA33AA,string2);
			return 1;
	        } else if(tdmon == 1 && tdmcolor == 0) {
	        PlayerinTdm[playerid] = 1;
	        playerinminigame[playerid] = 1;
	        tdmrank++;
	        TogglePlayerControllable(playerid, 0);
            SetPlayerVirtualWorld(playerid,7);
	        if (RushChallenge==1) { new r = random(sizeof(RUSHBLUE)); SetPlayerPos(playerid, RUSHBLUE[r][0], RUSHBLUE[r][1], RUSHBLUE[r][2]); SetPlayerFacingAngle(playerid,0.0000);}
		    else if (DeathSquare==1) { new r = random(sizeof(DEATHBLUE)); SetPlayerPos(playerid, DEATHBLUE[r][0], DEATHBLUE[r][1], DEATHBLUE[r][2]); SetPlayerFacingAngle(playerid,88.1348);}
		    else if (Otro==1) { new r = random(sizeof(OTROBLUE)); SetPlayerPos(playerid, OTROBLUE[r][0], OTROBLUE[r][1], OTROBLUE[r][2]); SetPlayerFacingAngle(playerid,86.9673);}
	        ResetPlayerWeapons(playerid);
	        GivePlayerWeapon(playerid,1,1);
	        GivePlayerWeapon(playerid,24,50000);
	        GivePlayerWeapon(playerid,31,50000);
	        GivePlayerWeapon(playerid,32,50000);
	        
	        SetTimerEx("AntiTeamKILL",10,1,"d",playerid); /////////////////////////////////
	        SetPlayerTeam(playerid, AZULES);
	        
	        SetPlayerHealth(playerid,100);
	        SetPlayerArmour(playerid,0);
	        SetPlayerColor(playerid,0x0000BBAA);// BLUE
	        GameTextForPlayer(playerid,"~b~Espera a que ~n~comienze!",4000,3);
	        TextDrawHideForPlayer(playerid,ByAnn);
	        blueplayers++;
	        tdmcolor = 1;
	        format(string2, sizeof(string2), "[OP7]: {FFFFFF}%s ha entrado al OP7 del equipo {001EFF}Azul!", pName(playerid));//
			SendClientMessageToAll(0x33AA33AA,string2);
			return 1;
	    }
	}
	
	forward AntiTeamKILL();
public AntiTeamKILL()
{
for(new playerid; playerid < 200; playerid++)
SetPlayerTeam(playerid, Equipo[playerid]); //El "Equipo" es la variable general de los 2 equipos (AZULES, ROJOS)... se define con un new:  -| new Equipo[MAX_PLAYERS]; |- EQUIPOS:
return 1;
}


// equipos: //

#define AZULES 0
#define ROJOS 1
Reply
#9

Sip, ya me funcionу bien tal como me dijo GROVE22 y gracias a todos x ayudarme :3
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)