[Ajuda] Curar 50 de vida
#1

Fiz esse comando pra um emprego de mйdico, o mйdico pode curar 50 de vida a sн mesmo ou a outro player que estiver perto com intervalo de 5 minutos pra usar de novo, porйm й meio bugado, as vezes a vida nгo seta 50 e sim 200 ou 300 e o player fica no god mode, qual o problema do comando?
pawn Код:
if(strcmp(cmd, "/curativo", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /curativo [id]");
                return true;
            }
            if(GetTickCount() - aFlood[playerid] < 300000)
            {
                SendClientMessage(playerid,COLOR_GREY,"Vocк jб fez um curativo, espere 5 minutos para fazer de novo!");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            if(IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if(ProxDetectorS(8.0, playerid, giveplayerid))
                    {
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        if(gTeam[playerid] == TEAM_CYAN||PlayerInfo[playerid][pEmpregoVIP] == 1)//model
                        {
                            format(string, sizeof(string), "~y~Voce foi curado ~n~~w~%s~n~~g~", giveplayer);
                            GameTextForPlayer(playerid, string, 5000, 1);
                            new hp = 0;
                            aFlood[playerid] = GetTickCount();
                            ApplyAnimation(playerid,"BOMBER","BOM_Plant",1.0,1,0,0,0,0);
                            SetTimerEx("AnimCurativo", 500, 0, "i", playerid);
                            if(PlayerInfo[playerid][pPainPerk] > 0)
                            {
                                VidaDoCara[giveplayerid] = 2; AXITERCOLETE[giveplayerid] = 3;
                                hp = 50 * PlayerInfo[playerid][pPainPerk]; hp += 50;
                                GivePlayerHealth(giveplayerid, hp);
                            }
                            else
                            {
                                VidaDoCara[giveplayerid] = 2; AXITERCOLETE[giveplayerid] = 3;
                                hp = 50;
                                GivePlayerHealth(giveplayerid, 50);
                            }
                            PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
                            PlayerPlaySound(giveplayerid, 1150, 0.0, 0.0, 0.0);
                            format(string, sizeof(string), "Vocк foi curado, %d de saude.",hp);
                            SendClientMessage(giveplayerid, COLOR_LIGHTBLUE,string);
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GRAD1, "O jogador estб muito longe!");
                        return true;
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GRAD1, " Esse jogador estб offline");
            }
        }
        return true;
    }
Reply
#2

Acho que assim vai funfar :

pawn Код:
if(strcmp(cmd, "/curativo", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /curativo [id]");
                return true;
            }
            if(GetTickCount() - aFlood[playerid] < 300000)
            {
                SendClientMessage(playerid,COLOR_GREY,"Vocк jб fez um curativo, espere 5 minutos para fazer de novo!");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            if(IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if(ProxDetectorS(8.0, playerid, giveplayerid))
                    {  
                        new health;
                        GetPlayerHealth(giveplayerid, health)
                        if(health >= 100)
                        {
                         SendClientMessage(playerid, COLOR_RED, "O jogador jб tem a vida no mбximo");                      
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        }
                        if(gTeam[playerid] == TEAM_CYAN||PlayerInfo[playerid][pEmpregoVIP] == 1)//model
                        {
                            GetPlayerHealth(giveplayerid, health);
                            if(health >= 50);
                            {
                            SetPlayerHealth(giveplayerid, 100);
                            }
                            format(string, sizeof(string), "~y~Voce foi curado ~n~~w~%s~n~~g~", giveplayer);
                            GameTextForPlayer(playerid, string, 5000, 1);
                            new hp = 0;
                            aFlood[playerid] = GetTickCount();
                            ApplyAnimation(playerid,"BOMBER","BOM_Plant",1.0,1,0,0,0,0);
                            SetTimerEx("AnimCurativo", 500, 0, "i", playerid);
                            if(PlayerInfo[playerid][pPainPerk] > 0)
                            {
                                VidaDoCara[giveplayerid] = 2; AXITERCOLETE[giveplayerid] = 3;
                                hp = 50 * PlayerInfo[playerid][pPainPerk]; hp += 50;
                                GivePlayerHealth(giveplayerid, hp);
                            }
                            else
                            {
                                VidaDoCara[giveplayerid] = 2; AXITERCOLETE[giveplayerid] = 3;
                                hp = 50;
                                GivePlayerHealth(giveplayerid, 50);
                            }
                            PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
                            PlayerPlaySound(giveplayerid, 1150, 0.0, 0.0, 0.0);
                            format(string, sizeof(string), "Vocк foi curado, %d de saude.",hp);
                            SendClientMessage(giveplayerid, COLOR_LIGHTBLUE,string);
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GRAD1, "O jogador estб muito longe!");
                        return true;
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GRAD1, " Esse jogador estб offline");
            }
        }
        return true;
    }
Adicionei isso :

pawn Код:
new health;
GetPlayerHealth(giveplayerid, health)
if(health >= 100)
{
SendClientMessage(playerid, COLOR_RED, "O jogador jб tem a vida no mбximo");                       
}
e isso :
pawn Код:
GetPlayerHealth(giveplayerid, health);
if(health >= 50);
{
SetPlayerHealth(giveplayerid, 100);
}
@Edit

Acho que nгo botei no melhor sitio do code , entгo tu dб uma ajeitada .

@Explicaзгo

1Є - O que fiz , foi detectar se o jogador tinha vida superior ou igual a 100 e se o tivesse nгo dava para curar .
2Є - O que eu fiz , й que caso ele tenha vida superior ou igual a 50 , em vez de acrescentar 50 apenas seta 100.
Reply
#3

Quote:
Originally Posted by Tugamars
Посмотреть сообщение
Acho que assim vai funfar :

pawn Код:
if(strcmp(cmd, "/curativo", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /curativo [id]");
                return true;
            }
            if(GetTickCount() - aFlood[playerid] < 300000)
            {
                SendClientMessage(playerid,COLOR_GREY,"Vocк jб fez um curativo, espere 5 minutos para fazer de novo!");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            if(IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if(ProxDetectorS(8.0, playerid, giveplayerid))
                    {  
                        new health;
                        GetPlayerHealth(giveplayerid, health)
                        if(health >= 100)
                        {
                         SendClientMessage(playerid, COLOR_RED, "O jogador jб tem a vida no mбximo");                      
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        }
                        if(gTeam[playerid] == TEAM_CYAN||PlayerInfo[playerid][pEmpregoVIP] == 1)//model
                        {
                            GetPlayerHealth(giveplayerid, health);
                            if(health >= 50);
                            {
                            SetPlayerHealth(giveplayerid, 100);
                            }
                            format(string, sizeof(string), "~y~Voce foi curado ~n~~w~%s~n~~g~", giveplayer);
                            GameTextForPlayer(playerid, string, 5000, 1);
                            new hp = 0;
                            aFlood[playerid] = GetTickCount();
                            ApplyAnimation(playerid,"BOMBER","BOM_Plant",1.0,1,0,0,0,0);
                            SetTimerEx("AnimCurativo", 500, 0, "i", playerid);
                            if(PlayerInfo[playerid][pPainPerk] > 0)
                            {
                                VidaDoCara[giveplayerid] = 2; AXITERCOLETE[giveplayerid] = 3;
                                hp = 50 * PlayerInfo[playerid][pPainPerk]; hp += 50;
                                GivePlayerHealth(giveplayerid, hp);
                            }
                            else
                            {
                                VidaDoCara[giveplayerid] = 2; AXITERCOLETE[giveplayerid] = 3;
                                hp = 50;
                                GivePlayerHealth(giveplayerid, 50);
                            }
                            PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
                            PlayerPlaySound(giveplayerid, 1150, 0.0, 0.0, 0.0);
                            format(string, sizeof(string), "Vocк foi curado, %d de saude.",hp);
                            SendClientMessage(giveplayerid, COLOR_LIGHTBLUE,string);
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GRAD1, "O jogador estб muito longe!");
                        return true;
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GRAD1, " Esse jogador estб offline");
            }
        }
        return true;
    }
Adicionei isso :

pawn Код:
new health;
GetPlayerHealth(giveplayerid, health)
if(health >= 100)
{
SendClientMessage(playerid, COLOR_RED, "O jogador jб tem a vida no mбximo");                       
}
e isso :
pawn Код:
GetPlayerHealth(giveplayerid, health);
if(health >= 50);
{
SetPlayerHealth(giveplayerid, 100);
}
@Edit

Acho que nгo botei no melhor sitio do code , entгo tu dб uma ajeitada .

@Explicaзгo

1Є - O que fiz , foi detectar se o jogador tinha vida superior ou igual a 100 e se o tivesse nгo dava para curar .
2Є - O que eu fiz , й que caso ele tenha vida superior ou igual a 50 , em vez de acrescentar 50 apenas seta 100.
deu aviso de tag mismatch e erro de empty statement nas modificaзхes que fizeste.

o aviso de tag mismatch resolvi substituindo o new health por new Float:health;
mas o erro continua.
Reply
#4

Quote:
Originally Posted by bombomloko
Посмотреть сообщение
deu aviso de tag mismatch e erro de empty statement nas modificaзхes que fizeste.

o aviso de tag mismatch resolvi substituindo o new health por new Float:health;
mas o erro continua.
Aquilo й sу uma base .

Em que linha deu o erro ?
Reply
#5

Porque em vez de ficar colocando ''GivePlayerHealth(giveplayerid, hp);'' nгo coloca ''GivePlayerHealth(giveplayerid, 100);'' ?
Reply
#6

Quote:
Originally Posted by Tugamars
Посмотреть сообщение
Aquilo й sу uma base .

Em que linha deu o erro ?
em if(health >= 50); e if(health >= 100);

mas o erro tava que essas linhas nгo podem ter ; no final, foi sу falta de atenзгo. Obrigado a todosm acho que agora vai dar.
Reply
#7

Quote:
Originally Posted by bombomloko
Посмотреть сообщение
em if(health >= 50); e if(health >= 100);

mas o erro tava que essas linhas nгo podem ter ; no final, foi sу falta de atenзгo. Obrigado a todosm acho que agora vai dar.
Realmente nem reparei .

Mas o que interressa nгo й sу se estб a dar , tu tens de entender porque й que se fez isso.
Reply
#8

A primeira parte coloca logo asseguir a isso :

pawn Код:
if(GetTickCount() - aFlood[playerid] < 300000)
 {
SendClientMessage(playerid,COLOR_GREY,"Vocк jб fez um curativo, espere 5 minutos para fazer de novo!");
return 1;
 }
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)