[Ajuda] /curar com tempo
#1

Olб novamente, Gostaria de colocar no cуdigo /curar (abaixo) um comando para que o Player que for receber a Cura, puder aceitar a mesma (/aceitar cura), E tambйm que ele espere 1 minuto atй que a cura esteja concluida.

Alguйm pode me ajudar?

Cуdigo:

PHP код:
    if(strcmp(cmd"/curar"true) == 0)
    {
        if(
IsPlayerConnected(playerid))
        {
            
tmp strtok(cmdtextidx);
            if(!
strlen(tmp))
            {
                
SendClientMessage(playeridCOLOR_GRAD2"ERRO: Digite /curar [id][preзo].");
                return 
1;
            }
            
giveplayerid ReturnUser(tmp);
            
tmp strtok(cmdtextidx);
            if(!
strlen(tmp))
            {
                
SendClientMessage(playeridCOLOR_GRAD2"ERRO: Digite /curar [id] [preзo].");
                return 
1;
            }
            new 
preco strval(tmp);
            new 
carid1 GetPlayerVehicleID(playerid);
            new 
carid2 GetPlayerVehicleID(giveplayerid);
            if(!
IsAAmbu(playerid))
            {
                
SendClientMessage(playeridCOLOR_GRAD2"ERRO: Vocк nгo й um mйdico.");
                return 
1;
            }
            if(!
IsAnAmbulanceCar(carid1))
            {
                
SendClientMessage(playeridCOLOR_GRAD2"ERRO: Vocк nгo estб em uma ambulвncia.");
                return 
1;
            }
             if(!
IsAnAmbulanceCar(carid2))
            {
                
SendClientMessage(playeridCOLOR_GRAD2"ERRO: Seu cliente nгo estб em uma ambulвncia.");
                return 
1;
            }
            if(
preco 50 || preco 150)
                return 
SendClientMessage(playeridCOLOR_GRAD2"ERRO: O preзo deve variar entre $ 50 e $ 150.");
            if(
GetPlayerMoney(giveplayerid) < preco)
            {
                
SendClientMessage(playeridCOLOR_GRAD2"ERRO: Seu cliente nгo tem dinheiro o suficiente");
                
SendClientMessage(giveplayeridCOLOR_GRAD2"ERRO: Vocк nгo tem dinheiro o suficiente para cura.");
                return 
1;
            }
            
SetPlayerHealth(giveplayerid,40);
            
PlayerInfo[giveplayerid][pDoenca] = 0;
            
GivePlayerMoneyEx(giveplayerid,-preco);
            
PlayerInfo[playerid][pSalario] += preco;
            
format(stringsizeof(string), "* Vocк foi curado por $ %d.",preco);
            
SendClientMessage(giveplayeridCOLOR_WHITEstring);
            
format(stringsizeof(string), "* Vocк curou o cliente por $ %d que serгo adicionados ao seu salбrio.",preco);
            
SendClientMessage(playeridCOLOR_LIGHTBLUEstring);
            return 
1;
        }
    } 
Reply
#2

Bom eu fiz do jeito que estб abaixo, Porйm oque estiver dentro de /* */ ou // vocк retira esses sнmbolos da frente. Й porque eles estгo definidos no seu GM e aonde eu compilei eu nгo iria perder meu tempo arrumando as variбveis.

Bom abaixo estб um cуdigo feito por mim, porйm estou morrendo de sono mais tб ai. testa lб.

Ajudei? + Rep

PHP код:
#include <a_samp>
new
    
RecebeuCura[MAX_PLAYERS] = 0,
    
TimerCurando[MAX_PLAYERS],
    
PlayerCurando[MAX_PLAYERS] = 0,
    
QuantasCuras[MAX_PLAYERS] = 0,
    
PrecoCobrado[MAX_PLAYERS] = 0;
enum Cargos{
    
pSalario
}
new 
PlayerInfo[MAX_PLAYERS][Cargos];
forward CuringInjuredPlayer(playerid);
public 
OnPlayerCommandText(playeridcmdtext[])
{
    new 
cmd 255 ], idxtmp[255];
    
cmd strtokcmdtextidx ) ;
    if(
strcmp(cmd"/curar"true) == 0)
    {
        if(
IsPlayerConnected(playerid))
        {
            new 
giveplayerid;
            
tmp strtok(cmdtextidx);
            if(!
strlen(tmp))
            {
                
SendClientMessage(playerid, -1"ERRO: Digite /curar [id][preзo].");
                return 
1;
            }
            
giveplayerid ReturnUser(tmp);
            
tmp strtok(cmdtextidx);
            if(!
strlen(tmp))
            {
                
SendClientMessage(playerid, -1"ERRO: Digite /curar [id] [preзo].");
                return 
1;
            }
            new 
preco strval(tmp);
            
// Retire o /*
            /* if(!IsAAmbu(playerid))
            {
                SendClientMessage(playerid, -1, "ERRO: Vocк nгo й um mйdico.");
                return 1;
            }
            if(!IsAnAmbulanceCar(GetPlayerVehicleID(playerid)))
            {
                SendClientMessage(playerid, -1, "ERRO: Vocк nгo estб em uma ambulвncia.");
                return 1;
            }
            if(!IsAnAmbulanceCar(GetPlayerVehicleID(giveplayerid)))
            {
                SendClientMessage(playerid, -1, "ERRO: Seu cliente nгo estб em uma ambulвncia.");
                return 1;
            } */ // Retire o */
            
if(preco 50 || preco 150)
                return 
SendClientMessage(playerid, -1"ERRO: O preзo deve variar entre $ 50 e $ 150.");
            if(
GetPlayerMoney(giveplayerid) < preco)
            {
                
SendClientMessage(playerid, -1"ERRO: Seu cliente nгo tem dinheiro o suficiente");
                
SendClientMessage(giveplayerid, -1"ERRO: Vocк nгo tem dinheiro o suficiente para cura.");
                return 
1;
            }
            else
            {
                new 
aname[MAX_PLAYER_NAME], string[255];
                
GetPlayerName(playerid,aname,sizeof(aname));
                new 
pname[MAX_PLAYER_NAME];
                
GetPlayerName(playerid,pname,sizeof(pname));
                
format(stringsizeof(string), "[MEDICO] o(a) mйdico(a) %s estб querendo te curar por %d real(ais)."anamepreco);
                
SendClientMessage(giveplayerid, -1string);
                
SendClientMessage(giveplayerid, -1"{00FF7F}[INFO] {FFFFFF}use: {00FF7F}/aceitarcura {FFFFFF}ou {FF0000}/recusarcura");
                
RecebeuCura[giveplayerid] = 1;
                
PlayerCurando[giveplayerid] = playerid;
                
format(stringsizeof(string), "[INFO] Aguarde o(a) player %s aceitar ou recusar a cura..."pname);
                
SendClientMessage(playerid, -1string);
                
PrecoCobrado[giveplayerid] = preco;
                return 
1;
            }
        }
        return 
1;
    }
    if(
strcmp(cmd"/aceitarcura"true) == 0)
    {
        new 
aname[MAX_PLAYER_NAME], string[255];
        
GetPlayerName(playerid,aname,sizeof(aname));
        if(
RecebeuCura[playerid] == 1)
        {
            
RecebeuCura[playerid] = 0;
            
format(stringsizeof(string), "{00FF7F}[INFO] O(A) player %s aceitou a cura, estamos curando ele(a)."aname);
            
SendClientMessage(PlayerCurando[playerid],-1,string);
            
TimerCurando playerid ] = SetTimerEx"CuringInjuredPlayer"1000true"i"playerid ) ;
            
SendClientMessage(playerid, -1"[x] {00FF7F}Vocк estб sendo curado aguarde...");
            
SetPlayerHealth(playerid,5);
            
QuantasCuras[playerid] = 1;
            
TogglePlayerControllable(playerid,0);
        }
        else
        {
            
SendClientMessage(playerid, -1"[x] {FF0000}Vocк nгo recebeu oferta de cura de nenhum player.");
        }
        return 
1;
    }
    if(
strcmp(cmd"/recusarcura"true) == 0)
    {
        new 
aname[MAX_PLAYER_NAME], string[255];
        
GetPlayerName(playerid,aname,sizeof(aname));
        if(
RecebeuCura[playerid] == 1)
        {
            
RecebeuCura[playerid] = 0;
            
format(stringsizeof(string), "{00FF7F}[INFO] O(A) player %s recusou a cura."aname);
            
SendClientMessage(PlayerCurando[playerid],-1,string);
            
SendClientMessage(playerid, -1"[x] {FF0000}Vocк recusou a cura.");
            
PlayerCurando[playerid] = 0;
        }
        else
        {
            
SendClientMessage(playerid, -1"[x] {FF0000}Vocк nгo recebeu oferta de cura de nenhum player.");
        }
        return 
1;
    }
    return 
0;
}
public 
CuringInjuredPlayer(playerid)
{
    new 
Float:health;
    
GetPlayerHealth(playerid,health);
    if(
health 100.0)
    {
        if(
QuantasCuras[playerid] < 19)
        {
            
SetPlayerHealth(playeridhealth+5);
            
QuantasCuras[playerid]++;
        }
        else
        {
            
KillTimerTimerCurando playerid ] );
            
SendClientMessage(playerid,-1,"{00FF7F}[INFO] Vocк foi curado com sucesso!");
            
//Retire os // abaixo
            //PlayerInfo[playerid][pDoenca] = 0;
            //GivePlayerMoneyEx(playerid,-PrecoCobrado[playerid]);
            
PlayerInfo[PlayerCurando[playerid]][pSalario] += PrecoCobrado[playerid];
            
QuantasCuras[playerid] = 0;
            
RecebeuCura[playerid] = 0;
            
PlayerCurando[playerid] = 0;
            
TogglePlayerControllable(playerid,1);
        }
    }
    return 
1;
}
strtok( const string [ ], &index )
{
    new 
length strlen( string ) ;
    while ( ( 
index length )  && ( string index ] <= ' ' ) )
    {
        
index++;
    }
    new 
offset index;
    new 
result 20 ];
    while ( ( 
index length )  && ( string index ] > ' ' )  && ( ( index offset )  < ( sizeofresult )  - ) ) )
    {
        
result index offset ] = string index ];
        
index++;
    }
    
result index offset ] = EOS;
    return 
result;
}
ReturnUser(text[], playerid INVALID_PLAYER_ID)
{
    new 
pos 0;
    while (
text[pos] < 0x21)
    {
        if (
text[pos] == 0) return INVALID_PLAYER_ID;
        
pos++;
    }
    new 
userid INVALID_PLAYER_ID;
    if (
IsNumeric(text[pos])
    {
        
        
userid strval(text[pos]);
        if (
userid >=&& userid MAX_PLAYERS)
        {
            if(!
IsPlayerConnected(userid))
            {
                if (
playerid != INVALID_PLAYER_ID)
                {
                    
SendClientMessage(playerid0xFF0000AA"User not connected");
                }
                
userid INVALID_PLAYER_ID;
            }
            else
            {
                return 
userid
            }
        }
        else
        {
            if (
playerid != INVALID_PLAYER_ID)
            {
                
SendClientMessage(playerid0xFF0000AA"Invalid user ID");
            }
            
userid INVALID_PLAYER_ID;
        }
        return 
userid;
    }
    
    new 
len strlen(text[pos]);
    new 
count 0;
    new 
name[MAX_PLAYER_NAME];
    for (new 
0MAX_PLAYERSi++)
    {
        if (
IsPlayerConnected(i))
        {
            
GetPlayerName(inamesizeof (name));
            if (
strcmp(nametext[pos], truelen) == 0)
            {
                if (
len == strlen(name))
                {
                    return 
i;
                }
                else
                {
                    
count++;
                    
userid i;
                }
            }
        }
    }
    if (
count != 1)
    {
        if (
playerid != INVALID_PLAYER_ID)
        {
            if (
count)
            {
                
SendClientMessage(playerid0xFF0000AA"Multiple users found, please narrow earch");
            }
            else
            {
                
SendClientMessage(playerid0xFF0000AA"No matching user found");
            }
        }
        
userid INVALID_PLAYER_ID;
    }
    return 
userid;
}
IsNumeric(const string[])
{
    for (new 
0strlen(string); ji++)
    {
        if (
string[i] > '9' || string[i] < '0') return 0;
    }
    return 
1;

Reply
#3

Apenas precisa criar uma variбvel e um settimerex... Apenas isso nao e tao difнcil, recomendo que seja uma variбvel boolena.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)