SA-MP Forums Archive
[Pedido] SetPlayerColor - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Pedido] SetPlayerColor (/showthread.php?tid=396853)



SetPlayerColor - hbzi - 02.12.2012

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


Re: SetPlayerColor - @Riichard - 02.12.2012

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.


Re: SetPlayerColor - Schocc - 02.12.2012

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?


Re: SetPlayerColor - hbzi - 02.12.2012

Й 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


Re: SetPlayerColor - Schocc - 02.12.2012

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;
}



Re: SetPlayerColor - steki. - 02.12.2012

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;
}