30/05/2024 12:41
(30/05/2024 09:36)BitSain Escreveu:Código PHP:CMD:pegarlixo(playerid) {
if(PlayerInfo[playerid][pProfissao] == GARI) {
if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, vermelho, "| ERRO | Você não pode usar esse comando em um veículo.");
new vehicleid = GetPVarInt(playerid, "LastVehicleID");
if(GetVehicleModel(vehicleid) != 408) return SendClientMessage(playerid, vermelho, "| ERRO | Você precisa utilizar o veículo trashmaster!");
if(HasTrash[playerid]) return SendClientMessage(playerid, vermelho, "| ERRO | Você já está carregando um Saco de Lixo.");
new id = Trash_Closest(playerid);
new casaid = GetPlayerClosestCasa(playerid);
if(id > 0) {
if(!TrashData[id][TrashLevel])
return SendClientMessage(playerid, vermelho, "| ERRO | Não tem nenhum lixo aqui!");
new Float: x, Float: y, Float: z;
GetVehicleBoot(vehicleid, x, y, z);
if(GetPlayerDistanceFromPoint(playerid, x, y, z) >= 30.0)
return SendClientMessage(playerid, vermelho, "| ERRO | Você não esta perto do seu veículo Trashmaster.");
TrashData[id][TrashLevel] --;
KillTimer(TrashData[id][TrashTimer]);
TrashData[id][TrashTimer] = SetTimerEx("FillTrash", REFILL_TIME * 1000, false, "i", id);
TrashCP[playerid] = CreateDynamicCP(x, y, z, 1.0, .playerid = playerid);
HasTrash[playerid] = true;
ApplyAnimation(playerid, "CARRY", "liftup105", 4.1, 0, 0, 0, 0, 0);
SetPlayerAttachedObject(playerid, ATTACHMENT_INDEX, 1264, 6, 0.222, 0.024, 0.128, 1.90, -90.0, 0.0, 0.5, 0.5, 0.5);
Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL, TrashData[id][TrashLabel], E_STREAMER_COLOR, (TrashData[id][TrashLevel] == 0) ? 0xE74C3CFF : 0xF39C12FF);
}
Loop(i, MAX_CASAS) {
if(IsPlayerInRangeOfPoint(playerid, 2.0, CasaInfo[i][ca_X],CasaInfo[i][ca_Y], CasaInfo[i][ca_Z])){
if(!CasaInfo[i][CasaLixoFora]) return SendClientMessage(playerid, vermelho, "| ERRO | Não tem nenhum lixo nessa casa!");
else if(CasaInfo[i][CasaLixoFora] > 0) {
new Float: x, Float: y, Float: z;
GetVehicleBoot(vehicleid, x, y, z);
if(GetPlayerDistanceFromPoint(playerid, x, y, z) >= 30.0)
return SendClientMessage(playerid, vermelho, "| ERRO | Você não esta perto do seu veículo Trashmaster.");
CasaInfo[i][CasaLixoFora] --;
KillTimer(TrashData[id][TrashTimer]);
TrashData[id][TrashTimer] = SetTimerEx("FillTrash", REFILL_TIME * 1000, false, "i", id);
TrashCP[playerid] = CreateDynamicCP(x, y, z, 1.0, .playerid = playerid);
HasTrash[playerid] = true;
ApplyAnimation(playerid, "CARRY", "liftup105", 4.1, 0, 0, 0, 0, 0);
SetPlayerAttachedObject(playerid, ATTACHMENT_INDEX, 1264, 6, 0.222, 0.024, 0.128, 1.90, -90.0, 0.0, 0.5, 0.5, 0.5);
//
SalvarCasa(i);
AtualizarCasa(i);
}
return true;
}
}
return SendClientMessage(playerid, vermelho, "| ERRO | Você não está próximo de nenhuma casa.");
}
else {
return SendClientMessage(playerid, vermelho, "| ERRO | Você não tem permissão!");
}
}
Comparando os dois códigos, algumas mudanças podem ser observadas:
1. Correção de um possível bug: No código antigo, há uma condição "if" para verificar se há lixo em uma casa específica, mas dentro dessa condição, há outra verificação que deveria estar dentro de um bloco "else if". Isso poderia causar um bug potencial. No código atualizado, essa estrutura foi corrigida.
2. Melhorias na legibilidade / Estrutura do código: O código atualizado parece ter uma melhor formatação e legibilidade, com a adição de mais espaços e indentação adequada em comparação com o código anterior.
3. Adicionado um novo valor de retorno: Após o loop das casas, adicionei uma mensagem que informa que o jogador não está próximo da casa, também adicionei um retorno, pra quando o jogador está próximo da casa, não faz sentido ele fazer o loop em todas as casas do servidor se ele está próximo de apenas uma. (Também pra não ter "conflito" com a mensagem de não está próximo da casa)
Eu testei aqui e continua dando o mesmo erro.
SERVER: Unknown command.