No matarse entre Bandos [Consulta]
#1

Hola amigos del samp, gracias a todos he aprendido de poco en poco el pawno y llegue hacer este minijuego, pero aun me falta mucho por aprender.

Como puedo hacer para que no se maten entre si mismo, osea de la misma banda.
Definн dos grupos: uno de atakers y otro de defensores.

Como quiero: si le dispara a uno de su banda, que lo congele por 3 segundo y le de un mensaje: No puedes matar a tu grupo, de la misma banda

aqui hasta donde he llegado

pawn Код:
#include <a_samp>
#include <streamer>

#define FILTERSCRIPT
#define batalla 4
#define VERDELIMA           0xB1FF07FF

#pragma tabsize 0
#if defined FILTERSCRIPT


new VariableDeBloqueo[MAX_PLAYERS];

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/ad", true))
    {
         ShowPlayerDialog(playerid, batalla, DIALOG_STYLE_LIST, "Atakers vs Defensores", "Atakers\nDefensores\n", "Seleccionar", "Cancelar");
         return 1;
    }

    if(strcmp(cmdtext, "/Salirdm", true) == 0)
    {
        SpawnPlayer(playerid);
        VariableDeBloqueo[playerid] = 0;
        ResetPlayerWeapons(playerid);
        SetPlayerInterior(playerid, 0);
        SetPlayerVirtualWorld(playerid, 0);
        GameTextForPlayer(playerid,"~r~~h~Has salido!",3000,3);
    return 1;
    }

    if (strcmp(cmdtext, "/Kill",true,8) == 0||strcmp("/Morir",cmdtext,true)==0)
    {
        VariableDeBloqueo[playerid] = 0;
        SetPlayerHealth(playerid, 0.0);
        return 1;
    }
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == batalla)
    {
        if(response)
        {
            if(listitem == 0)
            {
                SetPlayerArmour(playerid,100); //le da 100 de Chaleco
                SetPlayerHealth(playerid,100); //le da 100 de Vida
                VariableDeBloqueo[playerid] = 1; //Mini Juego Bloqueo CMD
                SetPlayerPos(playerid,2222.1924,-1150.2314,1025.7969);
                ResetPlayerWeapons(playerid);
                SetPlayerSkin(playerid, 230);
                GivePlayerWeapon(playerid, 30, 9999);
                GivePlayerWeapon(playerid, 25, 9999);
                SetPlayerInterior(playerid,15);
                SetPlayerVirtualWorld(playerid, 3);
                return 1;
            }
        }
            if(listitem == 1)
            {
                SetPlayerArmour(playerid,100); //le da 100 de Chaleco
                SetPlayerHealth(playerid,100); //le da 100 de Vida
                VariableDeBloqueo[playerid] = 1; //Mini Juego Bloqueo CMD
                SetPlayerPos(playerid,2197.4500,-1142.7198,1029.7969);
                ResetPlayerWeapons(playerid);
                SetPlayerSkin(playerid, 285);
                GivePlayerWeapon(playerid, 31, 9999);
                GivePlayerWeapon(playerid, 34, 9999);
                SetPlayerInterior(playerid,15);
                SetPlayerVirtualWorld(playerid, 3);
                return 1;
            }
    }
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    VariableDeBloqueo[playerid] = 0;
    return 1;
}


#endif
saludos
Reply
#2

Hola amigo,

Puedes usar la funciуn SetPlayerTeam para cambiar el equipo de un jugador. Si dos jugadores son parte del mismo equipo, no recibirбn daсo entre si. Puedes encontrar mas documentaciуn en la wiki de SA:MP.

Saludos.
Reply
#3

hay otra manera pero no como la pides

psdi todabia la nesecitas me dises.
Reply
#4

Quote:
Originally Posted by tony204
Посмотреть сообщение
hay otra manera pero no como la pides

psdi todabia la nesecitas me dises.
Puedes decirla, y entre todos poder sacar la funcion que quiere Zodiaco..
Reply
#5

vale esque como es viejo no estaba seguro si todabia nesecita esto por eso pregunto
Reply
#6

Si no quieres usar SetPlayerTeam tambiйn puedes comprobar el team (la variable donde lo almacenas) en OnPlayerTake/GiveDamage, si son del mismo le devuelves el "amount".
Reply
#7

Algo asн:

pawn Код:
static Equipo1[MAX_PLAYERS];
static Equipo2[MAX_PLAYERS];
forward Freeze(playerid);
En el dialog si escogen equipo 1 pone:

pawn Код:
Equipo1[playerid] = 1;
En el dialog si escogen equipo 2 pone:

pawn Код:
Equipo2[playerid] = 1;
pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid, bodypart)
{
if((Equipo1[playerid] == 1 && Equipo1[damagedid] == 1) || (Equipo2[playerid] == 1 && Equipo2[damagedid] == 1))
{
TogglePlayerControllable(playerid, false);
GameTextForPlayer(playerid, "~R~No debes atacar a tu propio equipo.", 3, 3000);
SetTimerEx("Freeze", 3000, false, "d", playerid);
return 0;
}
return 1;
}
pawn Код:
public Freeze(playerid)
{
TogglePlayerControllable(playerid, true);
}
Y al salir del juego o al desconectarse:

pawn Код:
Equipo1[playerid] = 0;
Equipo2[playerid] = 0;
No lo probй y sй que quizб hay otra forma mбs simple aъn, pero deberнa funcionar; suerte
Reply
#8

pawn Код:
if(Equipo[playerid] == Equipo[damagedid])
En todo caso.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)