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] == -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."); } }
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])
|