#include <a_samp>
#define red 0xFF0000AA
new Pressedkey[MAX_PLAYERS] = {false, ...};
new jumped[MAX_PLAYERS] = {-1, ...};
new ramped[MAX_PLAYERS];
forward Keys();
forward DeleteRamp(playerid);
forward Float:GetRampDistance(playerid);
forward Float:GetPosInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance);
public OnFilterScriptInit()
{
SetTimer("Keys", 100, 1);
return 1;
}
public Keys()
{
new keys, jump, updown, playerid;
new Float:x, Float:y, Float:z, Float:angle;
for (playerid = 0; playerid < MAX_PLAYERS; playerid++) {
if (IsPlayerConnected(playerid)) {
GetPlayerKeys(playerid, keys, jump, updown);
if(ramped[playerid] == 1)
{
}
else if (keys & KEY_FIRE && IsPlayerInAnyVehicle(playerid)) {{
GetPlayerPos(playerid, x, y, z);
angle = GetPosInFrontOfPlayer(playerid, x, y, GetRampDistance(playerid));
jumped[playerid] = CreateObject(17639, x, y, z - 0.5, 0.0, 0.0, angle);
ramped[playerid] = 1;
SetTimerEx("DeleteRamp", 1000, 0, "d", playerid);
}
}
} else Pressedkey[playerid] = false;
}
}
public DeleteRamp(playerid)
{
if (jumped[playerid] != -1) {
DestroyObject(jumped[playerid]);
jumped[playerid] = -1;
ramped[playerid]=0;
}
}
public OnFilterScriptExit()
{
for (new i=0; i<MAX_PLAYERS; i++)
{
if (jumped[i] != -1) DestroyObject(jumped[i]);
}
}
Float:GetRampDistance(playerid)
{
new ping = GetPlayerPing(playerid), Float:dist;
dist = floatpower(ping, 0.25);
dist = dist*4.0;
dist = dist+5.0;
return dist;
}
Float:GetPosInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetPlayerPos(playerid, x, y, a);
if (IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
else GetPlayerFacingAngle(playerid, a);
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
return a;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
for (new i=0; i<MAX_PLAYERS; i++)
{
if (jumped[i] != -1) DestroyObject(jumped[i]);
}
}
#include <a_samp>
new bool:CreatedRamp[MAX_PLAYERS];
new Ramp;
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Ramp Spawning by [WsR]RyDeR - Loaded -");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
new i = 0;
while(i < MAX_PLAYERS)
{
CreatedRamp[i] = false;
DestroyPlayerObject(i, Ramp);
i++;
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
if(CreatedRamp[playerid] == true) DestroyPlayerObject(playerid, Ramp), CreatedRamp[playerid] = false;
CreatedRamp[playerid] = false;
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (IsPlayerInAnyVehicle(playerid))
{
if(newkeys == KEY_FIRE)
{
if(CreatedRamp[playerid] == true) DestroyPlayerObject(playerid, Ramp), CreatedRamp[playerid] = false;
new Float:pX,Float:pY,Float:pZ,Float:vA, Arabam = GetPlayerVehicleID(playerid);
GetVehiclePos(Arabam, pX, pY, pZ);
GetVehicleZAngle(Arabam, vA);
Ramp = CreatePlayerObject(playerid, 1632, pX + (20.0 * floatsin(-vA, degrees)), pY + (20.0 * floatcos(-vA, degrees)), pZ, 0, 0, vA);
CreatedRamp[playerid] = true;
}
}
return 1;
}
|
Originally Posted by [WsR
RyDeR ]
Take an example of this. I made this months before: Код:
#include <a_samp>
new bool:CreatedRamp[MAX_PLAYERS];
new Ramp;
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Ramp Spawning by [WsR]RyDeR - Loaded -");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
new i = 0;
while(i < MAX_PLAYERS)
{
CreatedRamp[i] = false;
DestroyPlayerObject(i, Ramp);
i++;
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
if(CreatedRamp[playerid] == true) DestroyPlayerObject(playerid, Ramp), CreatedRamp[playerid] = false;
CreatedRamp[playerid] = false;
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (IsPlayerInAnyVehicle(playerid))
{
if(newkeys == KEY_FIRE)
{
if(CreatedRamp[playerid] == true) DestroyPlayerObject(playerid, Ramp), CreatedRamp[playerid] = false;
new Float:pX,Float:pY,Float:pZ,Float:vA, Arabam = GetPlayerVehicleID(playerid);
GetVehiclePos(Arabam, pX, pY, pZ);
GetVehicleZAngle(Arabam, vA);
Ramp = CreatePlayerObject(playerid, 1632, pX + (20.0 * floatsin(-vA, degrees)), pY + (20.0 * floatcos(-vA, degrees)), pZ, 0, 0, vA);
CreatedRamp[playerid] = true;
}
}
return 1;
}
|