Portal SAMP
[Ajuda] Três cmds em um - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Três cmds em um (/showthread.php?tid=1341)



Três cmds em um - LeleziiN - 02/07/2021

Bom pessoal queria saber como posso fazer para por esses três comandos em uma só tecla
Código PHP:
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && (newkeys == KEY_WALK))//Aperta a tecla ALT
    
{
    
    if(Profissao[playerid] == Lenhador || VerificarADM(playerid) == 1)
        {
    
           if(CarryingLog[playerid]) return Player_DropLog(playerid);
    
           if(GetPlayerWeapon(playerid) == WEAPON_CHAINSAW && CuttingTreeID[playerid] == -&& !CarryingLog[playerid])
        
    {
            
    new id GetClosestTree(playerid);
            
    if(id != -1)
            
    {
            
        if(!Tree_BeingEdited(id) && !TreeData[id][treeGettingCut] && TreeData[id][treeSeconds] < 1)
                    {
                        RemovePlayerMapIcon(playerid49);
            
            SetPlayerLookAt(playeridTreeData[id][treeX], TreeData[id][treeY]);
            
            Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABELTreeData[id][treeLabel], E_STREAMER_COLOR0xE74C3CFF);
            
            CuttingTimer[playerid] = SetTimerEx("CutTree"1000true"i"playerid);
                        
CuttingTreeID[playerid] = id;
                        
SetPlayerProgressBarValue(playeridCuttingBar[playerid], 0.0);
                        
ShowPlayerProgressBar(playeridCuttingBar[playerid]);
                        
TogglePlayerControllable(playerid1);//0
                        
SetPlayerArmedWeapon(playeridWEAPON_CHAINSAW);
                        
ApplyAnimation(playerid"CHAINSAW""WEAPON_csaw"4.1100101);
                        
TreeData[id][treeGettingCut] = true;
                    }
        
        }
        
    }
    
    }
    }
    if(
newkeys == KEY_NO)//Aperta a tecla N
    
{
    
    if(Profissao[playerid] == Lenhador || VerificarADM(playerid) == 1)
        {
        
    //Catando o tronco cortado
    
        if(CarryingLog[playerid]) return SendClientMessage(playeridCORX1"| ERRO | Você já está carregando um tronco.");
               new id GetClosestTree(playerid);
               if(id == -1) return SendClientMessage(playeridCORX1"| ERRO | Você não está perto de uma árvore.");
               if(TreeData[id][treeSeconds] < 1) return SendClientMessage(playeridCORX1"| ERRO | Esta árvore não foi cortada.");
              if(TreeData[id][treeLogs] < 1) return SendClientMessage(playeridCORX1"| ERRO | Esta árvore não tem nenhum registro.");
               TreeData[id][treeLogs]--;
               Tree_UpdateLogLabel(id);
               Player_GiveLog(playerid);
               SendClientMessage(playeridCOR_ORKUT"| INFO | Você pegou um tronco. Vá atrás do veículo para carrega-lo!");
        }
       }
    if(newkeys == KEY_CTRL_BACK)//Aperta a tecla H
    
{
    
    if(Profissao[playerid] == Lenhador || VerificarADM(playerid) == 1)
        {
            // pondo o tronco no veículo
        
    if(!CarryingLog[playerid]) return SendClientMessage(playeridCORX1"| ERRO | Você não está carregando um tronco.");
            new 
id GetNearestVehicle(playerid);
            if(
GetVehicleModel(id) != 554) return SendClientMessage(playeridCORX1"| ERRO | Você não está perto de um veículo da profissão.");
            new 
FloatxFloatyFloatz;
    
        GetVehicleBoot(idxyz);
    
        if(!IsPlayerInRangeOfPoint(playerid3.0xyz)) return SendClientMessage(playeridCORX1"| ERRO | Você não está atrás de um veículo da profissão.");
    
        if(Vehicle_LogCount(id) >= LOG_LIMIT) return SendClientMessage(playeridCORX1"| ERRO | Você não pode carregar mais registros para este veículo.");
    
        for(new iLOG_LIMITi++)
    
        {
    
            if(!IsValidDynamicObject(LogObjects[id][i]))
    
            {
    
                LogObjects[id][i] = CreateDynamicObject(197930.00.00.00.00.00.0);
    
                AttachDynamicObjectToVehicle(LogObjects[id][i], idLogAttachOffsets[i][0], LogAttachOffsets[i][1], LogAttachOffsets[i][2], 0.00.0LogAttachOffsets[i][3]);
    
                break;
    
            }
    
        }
    
        Streamer_Update(playerid);
    
        Player_RemoveLog(playerid);
    
        SendClientMessage(playeridCOR_ORKUT"| INFO | Você colocou um tronco de árvore no veículo.");
        }
    } 

Tipo por os 3 para a tecla "ALT" como posso fazer isso?


RE: Três cmds em um - xbruno1000x - 03/07/2021

É possível. Ex:   
Código:
if(newkeys == KEY_WALK && Profissao[playerid] == Lenhador)

Adicione as teclas e depois &&. Assim você faz com que a função só seja executada nos cenários onde ambas coisas ocorram. Você pode adicionar mais condições para funcionar melhor.


RE: Três cmds em um - LeleziiN - 03/07/2021

(03/07/2021 00:43)xbruno1000x Escreveu: É possível. Ex:   
Código:
if(newkeys == KEY_WALK && Profissao[playerid] == Lenhador)

Adicione as teclas e depois &&. Assim você faz com que a função só seja executada nos cenários onde ambas coisas ocorram. Você pode adicionar mais condições para funcionar melhor.

E no caso como ficaria mano
Código:
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && (newkeys == KEY_WALK))//Aperta a tecla ALT
    {
        if(Profissao[playerid] == Lenhador || VerificarADM(playerid) == 1)
        {
               if(CarryingLog[playerid]) return Player_DropLog(playerid);
               if(GetPlayerWeapon(playerid) == WEAPON_CHAINSAW && CuttingTreeID[playerid] == -1 && !CarryingLog[playerid])
            {
                new id = GetClosestTree(playerid);
                if(id != -1)
                {
                    if(!Tree_BeingEdited(id) && !TreeData[id][treeGettingCut] && TreeData[id][treeSeconds] < 1)
                    {
                        RemovePlayerMapIcon(playerid, 49);
                        SetPlayerLookAt(playerid, TreeData[id][treeX], TreeData[id][treeY]);
                        Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL, TreeData[id][treeLabel], E_STREAMER_COLOR, 0xE74C3CFF);
                        CuttingTimer[playerid] = SetTimerEx("CutTree", 1000, true, "i", playerid);
                        CuttingTreeID[playerid] = id;
                        SetPlayerProgressBarValue(playerid, CuttingBar[playerid], 0.0);
                        ShowPlayerProgressBar(playerid, CuttingBar[playerid]);
                        TogglePlayerControllable(playerid, 1);//0
                        SetPlayerArmedWeapon(playerid, WEAPON_CHAINSAW);
                        ApplyAnimation(playerid, "CHAINSAW", "WEAPON_csaw", 4.1, 1, 0, 0, 1, 0, 1);
                        TreeData[id][treeGettingCut] = true;
                    }
                }
            }
        }
    }
    if(newkeys == KEY_NO)//Aperta a tecla N
    {
        if(Profissao[playerid] == Lenhador || VerificarADM(playerid) == 1)
        {
            //Catando o tronco cortado
            if(CarryingLog[playerid]) return SendClientMessage(playerid, CORX1, "| ERRO | Você já está carregando um tronco.");
               new id = GetClosestTree(playerid);
               if(id == -1) return SendClientMessage(playerid, CORX1, "| ERRO | Você não está perto de uma árvore.");
               if(TreeData[id][treeSeconds] < 1) return SendClientMessage(playerid, CORX1, "| ERRO | Esta árvore não foi cortada.");
              if(TreeData[id][treeLogs] < 1) return SendClientMessage(playerid, CORX1, "| ERRO | Esta árvore não tem nenhum registro.");
               TreeData[id][treeLogs]--;
               Tree_UpdateLogLabel(id);
               Player_GiveLog(playerid);
               SendClientMessage(playerid, COR_ORKUT, "| INFO | Você pegou um tronco. Vá atrás do veículo para carrega-lo!");
        }
       }
    if(newkeys == KEY_CTRL_BACK)//Aperta a tecla H
    {
        if(Profissao[playerid] == Lenhador || VerificarADM(playerid) == 1)
        {
            // pondo o tronco no veículo
            if(!CarryingLog[playerid]) return SendClientMessage(playerid, CORX1, "| ERRO | Você não está carregando um tronco.");
            new id = GetNearestVehicle(playerid);
            if(GetVehicleModel(id) != 554) return SendClientMessage(playerid, CORX1, "| ERRO | Você não está perto de um veículo da profissão.");
            new Float: x, Float: y, Float: z;
            GetVehicleBoot(id, x, y, z);
            if(!IsPlayerInRangeOfPoint(playerid, 3.0, x, y, z)) return SendClientMessage(playerid, CORX1, "| ERRO | Você não está atrás de um veículo da profissão.");
            if(Vehicle_LogCount(id) >= LOG_LIMIT) return SendClientMessage(playerid, CORX1, "| ERRO | Você não pode carregar mais registros para este veículo.");
            for(new i; i < LOG_LIMIT; i++)
            {
                if(!IsValidDynamicObject(LogObjects[id][i]))
                {
                    LogObjects[id][i] = CreateDynamicObject(19793, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
                    AttachDynamicObjectToVehicle(LogObjects[id][i], id, LogAttachOffsets[i][0], LogAttachOffsets[i][1], LogAttachOffsets[i][2], 0.0, 0.0, LogAttachOffsets[i][3]);
                    break;
                }
            }
            Streamer_Update(playerid);
            Player_RemoveLog(playerid);
            SendClientMessage(playerid, COR_ORKUT, "| INFO | Você colocou um tronco de árvore no veículo.");
        }
    }



RE: Três cmds em um - xbruno1000x - 03/07/2021

Vou fazer uma de exemplo para te ajudar. Você só precisar adicionar condições que são capazes de diferenciar uma ação da outra. Nesse caso o ALT só irá executar a função caso o player esteja carregando um tronco.

Código:
if(newkeys == KEY_WALK && CarryingLog[playerid])