[Pedido] SetPlayerColor
#1

Bom dia.
Gostaria que alguйm me arranjasse o cуdigo para fazer com que o нcone de um jogador no minimap (SetPlayerColor) piscasse com uma diferenзa de 1 segundo entre as cores D9D919 e FFFFFF.
Jб tentei dar voltas aqui а cabeзa e nгo sei como fazer.

Obrigado desde jб.

hbzi
Reply
#2

Da para usar por um timer ou pela public OnPlayerUpdate...


SetTimerEx

pawn Код:
// Topo
new
    pCor[MAX_PLAYERS]
;

// OnPlayerConnect

SetTimerEx("AlterarCor", 1000, true, "d", playerid);
pCor[playerid] = 0;



// Fora de publics/comandos

forward AlterarCor(playerid);
public AlterarCor(playerid)
{
    if(pCor[playerid] == 0)
    {
        SetPlayerColor(playerid, /* COR */);
        pCor[playerid] = 1;
    }
    if(pCor[playerid] == 1)
    {
        SetPlayerColor(playerid, /* COR */);
        pCor[playerid] = 0;
    }
    return 1;
}
OnPlayerUpdate

pawn Код:
// Topo
new
    pCor[MAX_PLAYERS]
;

// OnPlayerConnect

pCor[playerid] = 0;



// Fora de publics/comandos

public OnPlayerUpdate(playerid)
{
    if(pCor[playerid] == 0)
    {
        SetPlayerColor(playerid, /* COR */);
        pCor[playerid] = 1;
    }
    if(pCor[playerid] == 1)
    {
        SetPlayerColor(playerid, /* COR */);
        pCor[playerid] = 0;
    }
    return 1;
}
Й melhor usar por timer, pуis OnPlayerUpdate й carregado em menos de 1 segundo..

Agora sу fazer sua escolha, e adaptar ao seu GameMode.
Reply
#3

Poste o Cуdigo que vc esta usando para nois te ajudar

@edit Se entendi bem vc quйr que

A cor do Player No Mini/Map fique alterando a cada 1 segundo de uma cor para outra ? й isso?
Reply
#4

Й isto mesmo. Obrigado @Riichard

Sу fiz uma mudanзa:

pawn Код:
if(pCor[playerid] == 0)
{
    SetPlayerColor(playerid, /* COR */);
    pCor[playerid] = 1;
}
else
{
    SetPlayerColor(playerid, /* COR */);
    pCor[playerid] = 0;
}
Assim troca as cores de 1 em 1 segundo. Como estava ele sу ficava com a 2Є cor porque depois do primeiro if ele entrava logo no segundo if. Assim ele entra no primeiro if, sai da funзгo, volta a funзгo e faz o else e assim sucessivamente
Reply
#5

Quote:
Originally Posted by hbzi
Посмотреть сообщение
Й isto mesmo. Obrigado @Riichard

Sу fiz uma mudanзa:

pawn Код:
if(pCor[playerid] == 0)
{
    SetPlayerColor(playerid, /* COR */);
    pCor[playerid] = 1;
}
else
{
    SetPlayerColor(playerid, /* COR */);
    pCor[playerid] = 0;
}
Assim troca as cores de 1 em 1 segundo. Como estava ele sу ficava com a 2Є cor porque depois do primeiro if ele entrava logo no segundo if. Assim ele entra no primeiro if, sai da funзгo, volta a funзгo e faz o else e assim sucessivamente
Quase la mais o certo nгo й setar mais Sim Aumentar o valor da variavel
pawn Код:
public UpdateColor( playerid )
{
    switch( pCor[ playerid ] )
    {
        case 0: SetPlayerColor( playerid,   cor 1   ),   pCor[ playerid ]++;
        case 1:
        {
            SetPlayerColor( playerid,   cor 2   ),       pCor[ playerid ] = 0;
        }
    }
    pCor[ playerid ]++;
    return 1;
}
Reply
#6

Quote:
Originally Posted by Schocc
Посмотреть сообщение
Quase la mais o certo nгo й setar mais Sim Aumentar o valor da variavel
pawn Код:
public UpdateColor( playerid )
{
    switch( pCor[ playerid ] )
    {
        case 0: SetPlayerColor( playerid,   cor 1   ),   pCor[ playerid ]++;
        case 1:
        {
            SetPlayerColor( playerid,   cor 2   ),       pCor[ playerid ] = 0;
        }
    }
    pCor[ playerid ]++;
    return 1;
}
Nгo, nгo й o certo.
O ideal seria um timer (pelo amor de deus. nгo usem OnPlayerUpdate pra isso) e aumentando e diminuindo a variбvel.

Ex:
pawn Код:
new gPlayerBlink[MAX_PLAYERS];
enum {
    PLAYER_BLINK_OFF,
    PLAYER_BLINK_FIRST,
    PLAYER_BLINK_SECOND
    // ...
}

new const
    blinkColors[] = {
        0xFFFFFFFF,
        0xFFFFFFFF,
        0xA3A3A3FF
    }
;
forward BlinkProcess();

// OnGameModeInit
// SetTimer BlinkProcess, 1000

public BlinkProcess() {
    for(new i, k = GetMaxPlayers(); i < k; i++) {
        if(IsPlayerConnected(playerid)) {
            if(gPlayerBlink[playerid]) {
                if(gPlayerBlink[playerid] == 2) { // 2 sendo a ъltima cor de piscar
                    gPlayerBlink[playerid] = 1; // sendo 1 a primeira cor
                    SetPlayerColor(playerid, blinkColors[gPlayerBlink[playerid]]);
                    continue;
                }
                gPlayerBlink[playerid]++;
                SetPlayerColor(playerid, blinkColors[gPlayerBlink[playerid]]);
            }
        }
    }
    return 1;
}

stock SetPlayerBlinking(playerid) {
    gPlayerBlink[playerid] = PLAYER_BLINK_SECOND;
    return 1;
}
stock DisablePlayerBlinking(playerid) {
    gPlayerBlink[playerid] = PLAYER_BLINK_OFF;
    SetPlayerColor(playerid, blinkColors[0]);
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)