пульсатор
#1

Привет всем. Сижу туплю. как бы сделать пульсатор. который бы каждые 100мсек. отнимал у игрока по 1 хп, а как хп ==1, прибавлял до 100, цикл должен быть бесконечный, вообщем таймер то я поставил, а вот убавлять хп не получается...вот что я написал:

PHP код:
    for(new ii<GetMaxPlayers();)
    {
        new 
PulsHP[100];
        new 
Floathp;
        
        
PulsHP[GetPlayerHealth(i,hp)] -= 1;
        
SetPlayerHealth(i,hp);
    } 
подскажите, как сделать правильно, а то у меня даже этот бред не работает...
Reply
#2

pawn Код:
for ( new i; i < GetMaxPlayers(); i++ )
    {
        new
            Float:hp
        ;
       
        GetPlayerHealth( i, hp );
        if ( hp > 0.0 && hp <= 1.0 )
            SetPlayerHealth( i, 100.0 );
        else
            SetPlayerHealth( i, hp - 1.0 );
    }
Reply
#3

pawn Код:
public pulsar()
{
    static Float:playerHealthKey[MAX_PLAYERS] = {1.0,..};
    for ( new playerid, maxPlayers = GetMaxPlayers(), Float:health; playerid < maxPlayers; playerid++ )
    {
        GetPlayerHealth( playerid, health );
        switch(floatcmp( health, playerHealthKey[playerid]))
        {
            case 1:
            {
                SetPlayerHealth( playerid, health - 1.0 );
            }
            case -1:
            {
                SetPlayerHealth( playerid, health + 1.0 );
            }
            case 0:
            {
                playerHealthKey[playerid] = (!floatcmp(playerHealthKey[playerid], 100.0)) ? 1.0 : 100.0;
            }
        }
    }
}
не проверял
Reply
#4

Quote:

static FloatlayerHealthKey[MAX_PLAYERS] = {1.0,..};

вот здесь error 029

ну вообщем хп у меня убавляется, а вот прибавить неполучается, он у меня умирает и неуспевая заспванится снова умирает. и так бесконечно
Reply
#5

Я думаю так...

В OnPlayerConnect:
PHP код:
SetTimerEx("Pulsator",100,1,"d",playerid); 
В низ мода:
PHP код:
forward Pulsator(playerid);
public 
Pulsator(playerid)
{
    new 
Float:hp;
    
GetPlayerHealht(playeridhp);
    (
hp 1.1) ? SetPlayerHealth(playerid100.0) : SetPlayerHealth(playeridhp 1.0);
    return 
1;

Reply
#6

Quote:
Originally Posted by temka1993
Посмотреть сообщение
вот здесь error 029

ну вообщем хп у меня убавляется, а вот прибавить неполучается, он у меня умирает и неуспевая заспванится снова умирает. и так бесконечно
вместо 2х три точки поставь
pawn Код:
static Float:PlayerHealthKey[MAX_PLAYERS] = {1.0,...};
OKStyle, ему нужно чтобы менялось плавно в обе стороны.
Reply
#7

Делов-то...

PHP код:
public Pulsator(playerid)
{
    new 
Float:hp;
    
GetPlayerHealht(playeridhp);
    if(
GetPVarInt(playerid"Increase") == 1)
    {
        if(
hp 99.1SetPVarInt(playerid,"Increase"0);
        else 
SetPlayerHealth(playeridhp 1.0);
    }
    else if(
GetPVarInt(playerid"Increase") == 0)
    {
        if(
hp 1.1SetPVarInt(playerid,"Increase"1);
        else 
SetPlayerHealth(playeridhp 1.0);
    }
    return 
1;

Reply
#8

срабатывает, но ипользовать может только 1 игрок, второй игрок уже не может...

как сделать отделльно для игроков?

что то вроде

PHP код:
new timer[max_players];
timer[playerid] = SetTimer("PulsatorHealth",1,true); 
не помогает
Reply
#9

Quote:
Originally Posted by temka1993
Посмотреть сообщение
срабатывает, но ипользовать может только 1 игрок, второй игрок уже не может...

как сделать отделльно для игроков?

что то вроде

PHP код:
new timer[max_players];
timer[playerid] = SetTimer("PulsatorHealth",1,true); 
не помогает
ты сейчас про какой из вариантов?
Reply
#10

про вариант OKS'a
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)