A Muito tempo vinha pensando em um simples sistema de tivesse vбrios sistema de RP/RPG,muito ъteis a servidores do mesmo.
Pensando nisto desenvolvi um simples sistema de Real RP que estб em constante modificaзгo atй que seja adicionado bastante funзхes.
pawn Код:
#include <a_samp>
#define EncodeDamage(%1,%2,%3,%4) %1 | (%2 << 1) | (%3 << 2) | (%4 << 3)
#define SLOTS 50
#define MAX_SPEED 120
new
bool:Danificado[2000],
bool:NaoCarro[SLOTS],
bool:Cinto[SLOTS],
Float:xaa[SLOTS],
Float:yaa[SLOTS],
Float:zaa[SLOTS],
Float:HealthV,
damage[4]
;
forward CongelarPlayer(playerid);
forward StopAnimes(playerid);
public OnPlayerUpdate(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(GetPlayerVelo(playerid) > MAX_SPEED)
{
new name[24], string[50];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "Patrulha: %s esta na velocidade de %d",name,GetPlayerVelo(playerid));
GameTextForPlayer(playerid,"~r~Parando Carro. Velocidade Elevada",2000,4);
GetPlayerPos(playerid,xaa[playerid],yaa[playerid],zaa[playerid]);
GivePlayerMoney(playerid,GetPlayerMoney(playerid)-700);
SetVehicleVelocity(GetPlayerVehicleID(playerid), 0.0 , 0.0 , 0.0);
for(new i=0;i<SLOTS;i++)
{
if(IsPlayerInRangeOfPoint(i,300.0,xaa[playerid],yaa[playerid],zaa[playerid]))
{
SendClientMessage(i,0xFFFFFFFF,string);
}
}
}
}
return true;
}
public OnPlayerConnect(playerid)
{
ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
return true;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/cinto-on", true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xC9170EFF,"[ERRO] Vocк precisa estar em um carro");
if(Cinto[playerid] == true) return SendClientMessage(playerid,0xC9170EFF,"[ERRO] Vocк jб esta de cinto");
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Vocк colocou cinto de seguranзa,agora nгo morrerб em acidentes");
Cinto[playerid] = true;
return true;
}
if(strcmp(cmdtext, "/cinto-off", true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xC9170EFF,"[INFO] Vocк precisa estar em um carro");
if(Cinto[playerid] == true) return SendClientMessage(playerid,0xC9170EFF,"[ERRO] Vocк jб nгo esta de cinto");
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Vocк tirou cinto de seguranзa,agorapoderб morrer em acidentes");
Cinto[playerid] = false;
return true;
}
return false;
}
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
GetVehicleHealth(vehicleid,HealthV);
if(HealthV > 900) return false;
if(Cinto[playerid] == false && NaoCarro[playerid] == false)
{
RemovePlayerFromVehicle(playerid);
new Float:XD,Float:YD,Float:ZD,Float:ANGLED;
GetPlayerPos(playerid,XD,YD,ZD);
new Float:r;
GetVehicleZAngle(GetPlayerVehicleID(playerid),r);
XD += (10 * floatsin(-r, degrees));
YD += (10 * floatcos(-r, degrees));
GetPlayerFacingAngle(playerid,ANGLED);
SetPlayerPos(playerid,XD,YD,ZD+2);
SetPlayerHealth(playerid,HealthV/20);
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Vocк esta sem cinto de seguranзa cuidado com acidentes");
ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
SetTimerEx("StopAnimes",8000,false,"i",playerid);
SetTimerEx("CongelarPlayer",10000,false,"i",playerid);
NaoCarro[playerid] = true;
}
if(HealthV < 500)
{
GetVehicleDamageStatus(vehicleid, damage[0], damage[1], damage[2], damage[3]);
UpdateVehicleDamageStatus(vehicleid, damage[0], damage[1], damage[2], EncodeDamage(1, 1, 1, 1));
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico antes que sejб tarde");
}
if(HealthV < 400)
{
new Float:XD,Float:YD,Float:ZD;
GetPlayerPos(playerid,XD,YD,ZD);
SetPlayerPos(playerid,XD+1,YD+1,ZD+1);
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico imediatamente");
Danificado[vehicleid] = true;
}
return true;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(Danificado[vehicleid] == true)
{
new Float:XD,Float:YD,Float:ZD;
GetPlayerPos(playerid,XD,YD,ZD);
SetPlayerPos(playerid,XD+1,YD+1,ZD+1);
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico imediatamente");
}
return true;
}
public OnPlayerText(playerid,text[])
{
if(NaoCarro[playerid] == false && !IsPlayerInAnyVehicle(playerid))
{
ApplyAnimation(playerid, "PED", "IDLE_CHAT", 4,0, 0, 0, 0, 0, 0);
SetTimerEx("StopAnimes",2500,false,"i",playerid);
}
return true;
}
public CongelarPlayer(playerid)
{
TogglePlayerControllable(playerid,0);
return true;
}
public StopAnimes(playerid)
{
TogglePlayerControllable(playerid,1);
ClearAnimations(playerid);
NaoCarro[playerid] = false;
ClearAnimations(playerid);
return true;
}
stock GetPlayerVelo(playerid) // [FeK]Kyle - DarK TeaM PT
{
new Float:PosX, Float:PosY,Float:PosZ,Float:PlayerSpeedDistance;
GetVehicleVelocity(GetPlayerVehicleID(playerid), PosX, PosY, PosZ);
PlayerSpeedDistance = floatmul(floatsqroot(floatadd(floatadd(floatpower( PosX, 2), floatpower(PosY, 2)), floatpower(PosZ, 2))), 170.0);
new spe = floatround(PlayerSpeedDistance * 1);
return spe;
}
Ao bater o carro a Animaзгo e Descongelamento do player demora 10 segundos,nгo mude isto
sim Dark,й mais rapido,eu ainda nгo havia achado ele entгo acabei deixando assim mesmo
valeu Badio,vocк sempre me ajudando com elogios.
Mara *-*. pqp mt bom