[Ayuda] Sistema de daсos
#1

Bien, tengo un sistema de daсos que hizo CaptainMactavish y modifiquй un poco, ahora, el problema es que al golpear con un arma blanca o puсo te mata en seguida, їcuбl es la explicaciуn?

pawn Код:
new TRojo[MAX_PLAYERS];
new TCamara[MAX_PLAYERS];
new Choque[MAX_PLAYERS];
new Si[MAX_PLAYERS];
new Text: flashr;
En OnGameModeInit
pawn Код:
SetPlayerTeam(playerid, 1);//Usado para que el arma no quite el daсo por defecto del singleplayer.
En OnPlayerConnect
pawn Код:
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
pawn Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    static Float:danio, Float:vida, Float:chaleco;//Utilicй 'danio' debido a que no puede ser usada la letra 'с'.
    if(issuerid != INVALID_PLAYER_ID)
    {
        if(amount == 2.64)//Es el daсo por defecto del golpe de culata.
        {
            danio = 10.0;//Es el nuevo daсo asignado por nosotros al golpe de la culata.
        }
        else
                {
                switch(weaponid)
                {
                case 0: danio = 5.0;//Daсo de los puсetazos.
                case 1: danio = 7.0;//Daсo del puсo americano.
                case 2: danio = 10.0;//Daсo del palo de golf.
                case 3: danio = 15.0;//Daсo de la porra policнaca.
                case 4: danio = 30.0;//Daсo de la navaja.
                case 5: danio = 25.0;//Daсo del bate de baseball.
                case 6: danio = 20.0;//Daсo de la pala.
                case 7: danio = 10.0;//Daсo del palo de pool.
                case 8: danio = 35.0;//Daсo de la katana.
                case 9: danio = 10.0;//Daсo de la motosierra.
                case 10: danio = 1.0;//Daсo de dildo.
                case 11: danio = 1.0;//Daсo de dildo.
                case 12: danio = 1.0;//Daсo de dildo.
                case 13: danio = 1.0;//Daсo de dildo.
                case 14: danio = 1.0;//Daсo de ramo de flores.
                case 15: danio = 10.0;//Daсo del bastуn.
                case 22: danio = 40.0;//Daсo de la 9mm.
                case 23: danio = 40.0;//Daсo de la 9mm con silenciador.
                case 24: danio = 70.0;//Daсo de la desert eagle.
                case 25: danio = 80.0;//Daсo de la escopeta normal.
                case 26: danio = 83.0;//Daсo de la escopeta recortada.
                case 27: danio = 85.0;//Daсo de la escopeta de combate.
                case 28: danio = 20.0;//Daсo de la uzi.
                case 29: danio = 40.0;//Daсo de la mp5.
                case 30: danio = 45.0;//Daсo de la ak47.
                case 31: danio = 44.0;//Daсo de la m4.
                case 32: danio = 20.0;//Daсo de la tec-9.
                case 33: danio = 25.0;//Daсo del rifle de caza.
                case 34: danio = 80.0;//Daсo del rifle de francotirador (sniper).
                case 41: danio = 1.0;//Daсo del spray.
                case 42: danio = 1.0;//Daсo del matafuegos.
                }
        }
        SetPlayerDrunkLevel(playerid, 20000);//Tiempo de duraciуn del mareo en milisegundos (1 minuto).
        SetPlayerDrunkLevel(playerid, 500000);
        TextDrawShowForPlayer(playerid, flashr);
        GetPlayerHealth(playerid, vida);
        GetPlayerArmour(playerid, chaleco);
        TRojo[playerid] = SetTimerEx("Rojo", 250, 1, "i", playerid);
        TCamara[playerid] = SetTimerEx("Camara", 10000, 1, "i", playerid);
        if(chaleco)
        {
            if(chaleco > danio) SetPlayerArmour(playerid, chaleco-danio);
            else
            {
                SetPlayerArmour(playerid, 0.0);
                chaleco = danio-chaleco;
                if(chaleco >= vida) SetPlayerHealth(playerid, 0.0);
                else SetPlayerHealth(playerid, vida-chaleco);
            }
        }
        else
        {
            if(vida > danio) SetPlayerHealth(playerid, vida-danio);
            else SetPlayerHealth(playerid, 0.0);
        }
    }
    return 1;
}
pawn Код:
public Rojo(playerid)
{
    TextDrawHideForPlayer(playerid, flashr);
    return 1;
}

public Camara(playerid)
{
    KillTimer(TCamara[playerid]);
    SetPlayerDrunkLevel(playerid, 0);
    return 1;
}
Reply
#2

Acabo de probarlo en un GM limpio y me anda perfecto, no serб un problema tuyo?
Reply
#3

Funciona perfectamente, excepto en las armas blancas, si uno recibe un golpe muere, їpero cуmo? si yo fijй 5 de daсo, espera, estoy empezando a pensar que tiene que ver con mi sistema de headshot..

Es muy bбsico, lo hice sin vectores porque no me salen, es con animaciones de headshot;

OnGameModeInit;
pawn Код:
MaximosJugadores = GetMaxPlayers();
SetTimer("ComprobarHeadShot", TIMER_INTERVAL, 1);
pawn Код:
forward ComprobarHeadShot();
public ComprobarHeadShot()
{
    new index;
    for(new playerid; playerid < MaximosJugadores; playerid++)
    {
        if(IsPlayerConnected(playerid))
        {
        index = GetPlayerAnimationIndex(playerid);
        if(index == 1173 || index == 1175 || index == 1177 || index == 1178)//Detecta que el jugador que recibe el disparo realice la animaciуn de headshot debido a que el disparу se efectuу en la cabeza.
        {
                SetPlayerHealth(playerid, 0.0);//No baja 0 de hp la vida del jugador, si no que la setea a 0 hp, ocasionбndole su muerte.
            }
        }
    }
    return 1;
}
Reply
#4

ComprobarHeadShot esta comprobando siempre ke cuando hace la animaciones esas lo deja con vida 0, ponle alguna variable para identificar ke fue disparado el HeadShot y hazlo con time SetTimerEx
Reply
#5

Definitivamente es el sistema de headshots porque al pegarle con un arma blanca hace la "animaciуn del headshot", la soluciуn serнa sacarlo o chequear la animaciуn cuando el jugador sufre ese daсo con un arma de fuego.
Reply
#6

Quote:
Originally Posted by CaptainMactavish
Посмотреть сообщение
Definitivamente es el sistema de headshots porque al pegarle con un arma blanca hace la "animaciуn del headshot", la soluciуn serнa sacarlo o chequear la animaciуn cuando el jugador sufre ese daсo con un arma de fuego.
¬¬ y yo ke le dije -_-
Reply
#7

EDIT: fail, iba a editar el anterior, me ekivoke. sorry..

@DeadSkyTkb

pawn Код:
SetPVarInt(playerid,"headshot",1); //PARA ACTIVARLO

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    if(GetPVarInt(issuerid,"headshot") == 1 && GetPlayerWeapon(issuerid) == IDDELARMA)
    {
        switch(GetPlayerAnimationIndex(playerid))
        {
            case 1173,1175,1177,1178: SetPlayerHealth(playerid, 0.0);
        }
    }
    return 1;
}
Reply
#8

Donde dice IDDELARMA, їcуmo podrнa ir poniendo una por una?

Otra cosa, їestб bien que quede asн el public?

pawn Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    if(GetPVarInt(issuerid,"headshot") == 1 && GetPlayerWeapon(issuerid) == IDDELARMA)
    {
        switch(GetPlayerAnimationIndex(playerid))
        {
            case 1173,1175,1177,1178: SetPlayerHealth(playerid, 0.0);
        }
    }
    return 1;
   
    static Float:danio, Float:vida, Float:chaleco;//Utilicй 'danio' debido a que no puede ser usada la letra 'с'.
    if(issuerid != INVALID_PLAYER_ID)
    {
        if(amount == 2.64)//Es el daсo por defecto del golpe de culata.
        {
            danio = 10.0;//Es el nuevo daсo asignado por nosotros al golpe de la culata.
        }
        else
        {
            switch(weaponid)
            {
                case 22: danio = 40.0;//Daсo de la 9mm.
                case 23: danio = 40.0;//Daсo de la 9mm con silenciador.
                case 24: danio = 70.0;//Daсo de la desert eagle.
                case 25: danio = 80.0;//Daсo de la escopeta normal.
                case 26: danio = 83.0;//Daсo de la escopeta recortada.
                case 27: danio = 85.0;//Daсo de la escopeta de combate.
                case 28: danio = 20.0;//Daсo de la uzi.
                case 29: danio = 40.0;//Daсo de la mp5.
                case 30: danio = 45.0;//Daсo de la ak47.
                case 31: danio = 44.0;//Daсo de la m4.
                case 32: danio = 20.0;//Daсo de la tec-9.
                case 33: danio = 25.0;//Daсo del rifle de caza.
                case 34: danio = 80.0;//Daсo del rifle de francotirador (sniper).
            }
        }
        SetPlayerDrunkLevel(playerid, 500000);
        TextDrawShowForPlayer(playerid, flashr);
        GetPlayerHealth(playerid, vida);
        GetPlayerArmour(playerid, chaleco);
        TRojo[playerid] = SetTimerEx("Rojo", 250, 1, "i", playerid);
        TCamara[playerid] = SetTimerEx("Camara", 10000, 1, "i", playerid);
        if(chaleco)
        {
            if(chaleco > danio) SetPlayerArmour(playerid, chaleco-danio);
            else
            {
                SetPlayerArmour(playerid, 0.0);
                chaleco = danio-chaleco;
                if(chaleco >= vida) SetPlayerHealth(playerid, 0.0);
                else SetPlayerHealth(playerid, vida-chaleco);
            }
        }
        else
        {
            if(vida > danio) SetPlayerHealth(playerid, vida-danio);
            else SetPlayerHealth(playerid, 0.0);
        }
    }
    return 1;
}
Reply
#9

pawn Код:
stock GetPlayerWeaponHeadshot(playerid)
{
    switch(GetPlayerWeapon(playerid))
    {
        case 22: return 1; //Daсo de la 9mm.
        case 23: return 1; //Daсo de la 9mm con silenciador.
        case 24: return 1; //Daсo de la desert eagle.
        case 25: return 1; //Daсo de la escopeta normal.
        case 26: return 1; //Daсo de la escopeta recortada.
        case 27: return 1; //Daсo de la escopeta de combate.
        case 28: return 1; //Daсo de la uzi.
        case 29: return 1; //Daсo de la mp5.
        case 30: return 1; //Daсo de la ak47.
        case 31: return 1; //Daсo de la m4.
        case 32: return 1; //Daсo de la tec-9.
        case 33: return 1; //Daсo del rifle de caza.
        case 34: return 1; //Daсo del rifle de francotirador (sniper).
    }
    return 0;
}

stock DaсoWeapon(weaponid, danio)
{
    switch(weaponid)
    {
        case 22: danio = 40.0;//Daсo de la 9mm.
        case 23: danio = 40.0;//Daсo de la 9mm con silenciador.
        case 24: danio = 70.0;//Daсo de la desert eagle.
        case 25: danio = 80.0;//Daсo de la escopeta normal.
        case 26: danio = 83.0;//Daсo de la escopeta recortada.
        case 27: danio = 85.0;//Daсo de la escopeta de combate.
        case 28: danio = 20.0;//Daсo de la uzi.
        case 29: danio = 40.0;//Daсo de la mp5.
        case 30: danio = 45.0;//Daсo de la ak47.
        case 31: danio = 44.0;//Daсo de la m4.
        case 32: danio = 20.0;//Daсo de la tec-9.
        case 33: danio = 25.0;//Daсo del rifle de caza.
        case 34: danio = 80.0;//Daсo del rifle de francotirador (sniper).
    }
    return 0;
}

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    if(GetPVarInt(issuerid,"headshot") == 1 && GetPlayerWeaponHeadshot(issuerid))
    {
        switch(GetPlayerAnimationIndex(playerid))
        {
            case 1173,1175,1177,1178: SetPlayerHealth(playerid, 0.0);
        }
        return 1;
    }

    static Float:danio, Float:vida, Float:chaleco;//Utilicй 'danio' debido a que no puede ser usada la letra 'с'.
    if(issuerid != INVALID_PLAYER_ID)
    {
        if(amount == 2.64) danio = 10.0; //Es el daсo por defecto del golpe de culata.
        else DaсoWeapon(weaponid, danio);
       
        SetPlayerDrunkLevel(playerid, 500000);
        TextDrawShowForPlayer(playerid, flashr);
        GetPlayerHealth(playerid, vida);
        GetPlayerArmour(playerid, chaleco);
        TRojo[playerid] = SetTimerEx("Rojo", 250, 1, "i", playerid);
        TCamara[playerid] = SetTimerEx("Camara", 10000, 1, "i", playerid);
        if(chaleco)
        {
            if(chaleco > danio) SetPlayerArmour(playerid, chaleco-danio);
            else
            {
                SetPlayerArmour(playerid, 0.0);
                chaleco = danio-chaleco;
                if(chaleco >= vida) SetPlayerHealth(playerid, 0.0);
                else SetPlayerHealth(playerid, vida-chaleco);
            }
        }
        else
        {
            if(vida > danio) SetPlayerHealth(playerid, vida-danio);
            else SetPlayerHealth(playerid, 0.0);
        }
        return 1;
    }
   
    return 1;
}
Reply
#10

Код:
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(2403) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(34816) : warning 202: number of arguments does not match definition
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(35169) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(35169) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(35176) : warning 202: number of arguments does not match definition
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(35176) : warning 202: number of arguments does not match definition
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(35176) : warning 202: number of arguments does not match definition
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37387) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37388) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37389) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37390) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37391) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37392) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37393) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37394) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37395) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37396) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37397) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37398) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37399) : warning 213: tag mismatch
C:\Users\Dead von.PERSONAL\Desktop\LS-RG\gamemodes\lsrg.pwn(37399) : warning 204: symbol is assigned a value that is never used: "danio"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase

Header size:          19528 bytes
Code size:          3134864 bytes
Data size:          6862184 bytes
Stack/heap size:      16384 bytes; estimated max. usage=2974 cells (11896 bytes)
Total requirements:10032960 bytes

21 Warnings.
pawn Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    if(GetPVarInt(issuerid,"headshot") == 1 && GetPlayerWeaponHeadshot(issuerid))
    {
        switch(GetPlayerAnimationIndex(playerid))
        {
            case 1173,1175,1177,1178: SetPlayerHealth(playerid, 0.0);
        }
        return 1;
    }

    static Float:danio, Float:vida, Float:chaleco;//Utilicй 'danio' debido a que no puede ser usada la letra 'с'.
    if(issuerid != INVALID_PLAYER_ID)
    {
        if(amount == 2.64) danio = 10.0; //Es el daсo por defecto del golpe de culata.
        else DanioWeapon(weaponid, danio); //LНNEA 2403

        SetPlayerDrunkLevel(playerid, 500000);
        TextDrawShowForPlayer(playerid, flashr);
        GetPlayerHealth(playerid, vida);
        GetPlayerArmour(playerid, chaleco);
        TRojo[playerid] = SetTimerEx("Rojo", 250, 1, "i", playerid);
        TCamara[playerid] = SetTimerEx("Camara", 10000, 1, "i", playerid);
        if(chaleco)
        {
            if(chaleco > danio) SetPlayerArmour(playerid, chaleco-danio);
            else
            {
                SetPlayerArmour(playerid, 0.0);
                chaleco = danio-chaleco;
                if(chaleco >= vida) SetPlayerHealth(playerid, 0.0);
                else SetPlayerHealth(playerid, vida-chaleco);
            }
        }
        else
        {
            if(vida > danio) SetPlayerHealth(playerid, vida-danio);
            else SetPlayerHealth(playerid, 0.0);
        }
        return 1;
    }

    return 1;
}
pawn Код:
stock GetPlayerWeaponHeadshot(playerid)
{
    switch(GetPlayerWeapon(playerid))
    {
        case 22: return 1; //Daсo de la 9mm.
        case 23: return 1; //Daсo de la 9mm con silenciador.
        case 24: return 1; //Daсo de la desert eagle.
        case 25: return 1; //Daсo de la escopeta normal.
        case 26: return 1; //Daсo de la escopeta recortada.
        case 27: return 1; //Daсo de la escopeta de combate.
        case 28: return 1; //Daсo de la uzi.
        case 29: return 1; //Daсo de la mp5.
        case 30: return 1; //Daсo de la ak47.
        case 31: return 1; //Daсo de la m4.
        case 32: return 1; //Daсo de la tec-9.
        case 33: return 1; //Daсo del rifle de caza.
        case 34: return 1; //Daсo del rifle de francotirador (sniper).
    }
    return 0;
}

stock DanioWeapon(weaponid, danio)
{
    switch(weaponid)
    {
        case 22: danio = 40.0;//Daсo de la 9mm.   LНNEA 37387
        case 23: danio = 40.0;//Daсo de la 9mm con silenciador.
        case 24: danio = 70.0;//Daсo de la desert eagle.
        case 25: danio = 80.0;//Daсo de la escopeta normal.
        case 26: danio = 83.0;//Daсo de la escopeta recortada.
        case 27: danio = 85.0;//Daсo de la escopeta de combate.
        case 28: danio = 20.0;//Daсo de la uzi.
        case 29: danio = 40.0;//Daсo de la mp5.
        case 30: danio = 45.0;//Daсo de la ak47.
        case 31: danio = 44.0;//Daсo de la m4.
        case 32: danio = 20.0;//Daсo de la tec-9.
        case 33: danio = 25.0;//Daсo del rifle de caza.
        case 34: danio = 80.0;//Daсo del rifle de francotirador (sniper).
    }
    return 0;
}
Mбs allб de los warning, cuando disparo a alguien le baja la vida y le sube al instante, por mбs que de en la cabeza o no.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)