[Duda] Como seleccionar una seria de skins
#1

Hola comunidad, quiero hacer una funciуn para los que tengan una serie de skins, mi pregunta es como puedo escoger los skins que les ocurra esa funciуn, se me ocurriу esto pero no funciona:

Quote:

if(PlayerInfo[playerid][pMember] == 1 || GetPlayerSkin(playerid) ==5 || GetPlayerSkin(playerid) ==3)
{
SetPlayerPos(playerid,0.0,0.0,3.0);
return 0;
}

-Alguien sabrнa como hacer algo asн?
Reply
#2

pawn Код:
if(PlayerInfo[playerid][pMember] == 1 && GetPlayerSkin(playerid) == 5 || GetPlayerSkin(playerid) == 3)
//Chekea si tiene la variable pMember igual a 1 y el  skins 5 o 3
{
    //aca Tu Funcion
}
else
{
    //aca Tu mensaje al no acceder a la funcion
    return 1;
}
Reply
#3

Estoy haciendo un sistema que al subir una altitud te quite la salud en X segundos como simulando ser la falta de oxigeno si no llevas X skin, pero no me compila bien, te dejo lo que he echo:

Код:
public oxigeno(playerid)
{
new oxigeno = GetPlayerAltitude(playerid);
if(oxigeno > 700)
{
if(PlayerInfo[playerid][pMember] == 1 && GetPlayerSkin(playerid) == 5 || GetPlayerSkin(playerid) == 3)
{
SetTimer("oxigeno", 10000, 0);
SetPlayerHealth(playerid, 0);
SendClientMessage(playerid, COLOR_GREEN, "Te estas ahogando, ponte un traje espacial!");
}
else
{
SendClientMessage(playerid, COLOR_GREEN, "oxigeno!");
    return 1;
}
Код:
 forward oxigeno();
Errores que me da:


-PD: Cual es el problema?
Reply
#4

Quote:
Originally Posted by sergios
Посмотреть сообщение
Estoy haciendo un sistema que al subir una altitud te quite la salud en X segundos como simulando ser la falta de oxigeno si no llevas X skin, pero no me compila bien, te dejo lo que he echo:

Код:
public oxigeno(playerid)
{
new oxigeno = GetPlayerAltitude(playerid);
if(oxigeno > 700)
{
if(PlayerInfo[playerid][pMember] == 1 && GetPlayerSkin(playerid) == 5 || GetPlayerSkin(playerid) == 3)
{
SetTimer("oxigeno", 10000, 0);
SetPlayerHealth(playerid, 0);
SendClientMessage(playerid, COLOR_GREEN, "Te estas ahogando, ponte un traje espacial!");
}
else
{
SendClientMessage(playerid, COLOR_GREEN, "oxigeno!");
    return 1;
}
Код:
 forward oxigeno();
Errores que me da:


-PD: Cual es el problema?
pawn Код:
public oxigeno(playerid)
{
    new oxigeno = GetPlayerAltitude(playerid);
    if(oxigeno > 700)
    {
        if(PlayerInfo[playerid][pMember] == 1 && GetPlayerSkin(playerid) == 5 || GetPlayerSkin(playerid) == 3)
        {
            SetTimer("oxigeno", 10000, 0);
            SetPlayerHealth(playerid, 0);
            SendClientMessage(playerid, COLOR_GREEN, "Te estas ahogando, ponte un traje espacial!");
        }
        else
        {
            SendClientMessage(playerid, COLOR_GREEN, "oxigeno!");
        }
    }
    return 1;
}
Reemplaza el tuyo por el que te puse yo.
Reply
#5

Gracias grove ahora si compila, cuando lo pruebe edito y digo si me funciono dentro del server.

EDIT: Parece que no funciona, al subir los 700 de altitud no pasa nada, creo que se tiene que poner en onplayerupdate pero al haber el public oxigeno no me dejara, se te ocurre alguna soluciуn?
Reply
#6

Quote:
Originally Posted by sergios
Посмотреть сообщение
Gracias grove ahora si compila, cuando lo pruebe edito y digo si me funciono dentro del server.

EDIT: Parece que no funciona, al subir los 700 de altitud no pasa nada, creo que se tiene que poner en onplayerupdate pero al haber el public oxigeno no me dejara, se te ocurre alguna soluciуn?
Podria ser en onplayerupdate aunque estarб lag o minimo.

para que pones el timer dentro de oxigeno si nunca llamas a la callback oxigeno?

pawn Код:
public oxigeno(playerid)
{
    new oxigeno = GetPlayerAltitude(playerid);
    if(oxigeno > 700)
    {
        if(PlayerInfo[playerid][pMember] == 1 && GetPlayerSkin(playerid) == 5 || GetPlayerSkin(playerid) == 3)
        {
            SetPlayerHealth(playerid, 0);
            SendClientMessage(playerid, COLOR_GREEN, "Te estas ahogando, ponte un traje espacial!");
        }
        else
        {
            SendClientMessage(playerid, COLOR_GREEN, "oxigeno!");
        }
    }
    return 1;
}
Reemplaza la callback oxigo por la que puse yo.
y agrega en onplayerupdate
oxigeno(playerid);
Reply
#7

El cуdigo que tenйs tiene varios bugs, probб con este.
pawn Код:
SetTimer("oxigeno", 1000, true); //En OnGameModeInit

forward oxigeno();
public  oxigeno()
{
    new altitud;
    new Float:salud__;
    for(new i=0,j=GetMaxPlayers(); i < j; i++) if(IsPlayerConnected(i) && !IsPlayerNPC(i)) {
        altitud = GetPlayerAltitude(i);
        if(altitud > 700)
        {
            if(PlayerInfo[i][pMember] == 1 && (GetPlayerSkin(i) == 5 || GetPlayerSkin(i) == 3))
            {
               SendClientMessage(i, COLOR_GREEN, "oxigeno!");
            }
            else
            {
                GetPlayerHealth(i,salud__);
                if(salud__ < 5) {
                    SetPlayerHealth(i,0.00);
                }
                else {
                    SetPlayerHealth(i, -5.00);
                }
                SendClientMessage(i, COLOR_GREEN, "Te estas ahogando, ponte un traje espacial!");
            }
        }
    }
}
Reply
#8

Daniel hay un problema, no distingue entre skins, me quita la vida a todos sin excepcion, como se haria para que solo quite salud a los que yo diga en este caso el 5 y el 3?
Reply
#9

Quote:
Originally Posted by sergios
Посмотреть сообщение
Estoy haciendo un sistema que al subir una altitud te quite la salud en X segundos como simulando ser la falta de oxigeno si no llevas X skin, pero no me compila bien, te dejo lo que he echo:
aver aver, ahi querias que le quitara salud cuando no llevara los skins X.

ahora dices que quieres que le quite salud cuando lleven el skin X?

No te quitarб vida si eres de la faccion 1 y llevas puesto el skin 3 o el skin 5.
pawn Код:
//con este te quitarб vida si llevas cualquiera de los dos skins
if(PlayerInfo[i][pMember] == 1 && !(GetPlayerSkin(i) == 5 || GetPlayerSkin(i) == 3))
Reply
#10

Daniel, de las 2 maneras me mata con todos los skins, he probado los 2 cуdigos y nada :S
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)