05.03.2019, 01:46
Bom, eu estava precisando um sistema de chaves, nem que for ''pelomenos'' para os veнculos de profissхes, que sгo os mais importantes.
Pessoal, use o comando: /comandos para vocкs verem os comandos que fiz para teste.
Alguma coisa errada, me corrigem.
Pessoal, use o comando: /comandos para vocкs verem os comandos que fiz para teste.
PHP Code:
/* Chaves Veнculos */
#include <a_samp>
#include <ZCMD>
#include <sscanf2>
enum pInfo
{
KeyProfissao,
}
new PlayerData[MAX_PLAYERS][pInfo];
CMD:pegarchaves(playerid, params[])
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, 0.0, 0.0, 0.0)) return 1; // Estб no lugar de pegar as chaves
new vehicleid;
if(sscanf(params, "d", vehicleid))
return SendClientMessage(playerid, -1, "Uso: /pegarchaves [vehicleid] - veja o id do veiculo no /dl");
if(vehicleid < 1 || vehicleid > MAX_VEHICLES)
return SendClientMessage(playerid, -1, "Valor de Chave invбlido.");
if(ChaveEmUso(vehicleid))
return SendClientMessage(playerid, -1, "Essa chave jб estб sendo usado por outra pessoa.");
new Float:cPos[3];
GetVehiclePos(vehicleid, cPos[0], cPos[1], cPos[2]);
if(cPos[0] == 0.000)
return SendClientMessage(playerid, -1, "Esse veнculo nгo existe.");
PlayerData[playerid][KeyProfissao] = vehicleid;
SendClientMessage(playerid, -1, "Vocк pegou a chave desse carro/caminhгo.");
return 1;
}
CMD:deixarchave(playerid)
{
if(PlayerData[playerid][KeyProfissao] == 0)
return SendClientMessage(playerid, -1, "Vocк nгo tem nenhuma chave nas mгos!");
PlayerData[playerid][KeyProfissao] = 0;
SendClientMessage(playerid, -1, "Vocк deixou as chaves do veнculo aqui.");
return 1;
}
CMD:motor(playerid)
{
if(!IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, -1, "Vocк nгo estб em um veнculo para ligar o motor.");
new vehicleid = GetPlayerVehicleID(playerid);
if(PlayerData[playerid][KeyProfissao] == vehicleid)
{
// Liberado para digirir.");
}
else SendClientMessage(playerid, -1, "Vocк nгo tem as chaves desse veнculo.");
return 1;
}
CMD:darchave(playerid, params[])
{
new
id, chave;
if(sscanf(params, "ud", id, chave))
return SendClientMessage(playerid, -1, "Digite: /darchave [id player] [chave id]");
if(PlayerData[playerid][KeyProfissao] == 0)
return SendClientMessage(playerid, -1, "Vocк nгo tem uma chave para dar para esse jogador.");
if(PlayerData[id][KeyProfissao] > 0)
return SendClientMessage(playerid, -1, "Esse jogador jб tem uma chave.");
SendClientMessage(playerid, -1, "Vocк deu a sua chave para esse jogador.");
SendClientMessage(id, -1, "Um jogador te deu uma chave de um carro.");
PlayerData[id][KeyProfissao] = PlayerData[playerid][KeyProfissao];
PlayerData[playerid][KeyProfissao] = 0;
return 1;
}
CMD:abrircarro(playerid) // Comando para abrir o carro, para abrir as portas, й claro.
{
if(PlayerData[playerid][KeyProfissao] == 0)
return SendClientMessage(playerid, -1, "Vocк nгo tem a chave de um carro para abrir o mesmo.");
if(IsPlayerNearTheVehicle(playerid, PlayerData[playerid][KeyProfissao]))
{
SendClientMessage(playerid, -1, "Seu carro foi aberto.");
//Cуdigo abaixo
}
else SendClientMessage(playerid, -1, "Vocк nгo estб perto do seu carro.");
return 1;
}
CMD:comandos(playerid)
{
SendClientMessage(playerid, -1, "/pegarchaves [veiculoid] • /deixarchave • /motor • /darchave [playerid] [chaveid]");
return 1;
}
stock IsPlayerNearTheVehicle(playerid, vehicleid, Float: Radius = 3.0)
{
new Float:vPos[3];
GetVehiclePos(vehicleid, vPos[0], vPos[1], vPos[2]);
if(IsPlayerInRangeOfPoint(playerid, Radius, vPos[0], vPos[1], vPos[2])) return true;
else return false;
}
stock ChaveEmUso(chaveid)
{
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerData[i][KeyProfissao] == chaveid) return true;
else return false;
}
}
return -1;
}
public OnPlayerDisconnect(playerid, reason)
{
PlayerData[playerid][KeyProfissao] = 0;
return 1;
}