rendered paste body#include <a_samp>
new Incamper[MAX_PLAYERS];
new Float:camperPos[MAX_VEHICLES][3];
new sExplode[MAX_VEHICLES], tCount[MAX_VEHICLES];
new Float:difc[14][4] = { //abstand vom standartobject (beginnend bei 0)
{-6.973633, -1.118774, 1.992187, 90.0}, //{x, y, z, roat:z}
{-6.973633, -2.635498, 1.992187, 90.0},
{2.689453, -1.699951, 1.992187, 270.0},
{2.689453, 1.042969, 1.992187, 270.0},
{-3.024659, -1.765014, 1.571715, 0.0},
{-3.910645, 2.677857, 1.992187, 0.0},
{-1.936768, 2.677857, 1.992187, 0.0},
{-0.936768, 2.477857, 1.992187, 0.0},
{-6.773633, -0.70813, 2.0, 90.0},
{-0.07251, 2.677857, 2.1, 0.0},
{0.843994, -2.640625, 1.992187, 180.0},
{2.363525, -2.940918, 1.992187, 180.0},
{-0.73584, -1.259179, 1.992187, 0.0},
{-0.6, -2.27, 4.14, 90.0}
};
public OnFilterScriptInit()
{
print("------------------------------------------");
print("Camper int FS");
print("------- v1.0 by St3v3 (c) 2008 -------");
print("------------------------------------------");
return 1;
}
forward Explodecamper(vehicleid);
stock CreatecamperInt(vehicleid, Float:X, Float:Y, Float:Z)
{
CreateObject(10148, X, Y, Z, 0.0, 0.0, 90.0); // standart object
CreateObject(2395, floatadd(X, difc[0][0]), floatadd(Y, difc[0][1]), floatsub(Z, difc[0][2]), 0.0, 0.0, difc[0][3]); // weitere objecte (erste zahl = Reihe bei [new Float:difc[13][4]]; 2te Zahl = Spalte)
CreateObject(2395, floatadd(X, difc[1][0]), floatadd(Y, difc[1][1]), floatsub(Z, difc[1][2]), 0.0, 0.0, difc[1][3]);
CreateObject(1745, floatadd(X, difc[2][0]), floatadd(Y, difc[2][1]), floatsub(Z, difc[2][2]), 0.0, 0.0, difc[2][3]); // weitere objecte (erste zahl = Reihe bei [new Float:difc[13][4]]; 2te Zahl = Spalte)
CreateObject(1745, floatadd(X, difc[3][0]), floatadd(Y, difc[3][1]), floatsub(Z, difc[3][2]), 0.0, 0.0, difc[3][3]);
CreateObject(643, floatadd(X, difc[4][0]), floatadd(Y, difc[4][1]), floatsub(Z, difc[4][2]), 0.0, 0.0, difc[4][3]);
CreateObject(2013, floatadd(X, difc[5][0]), floatadd(Y, difc[5][1]), floatsub(Z, difc[5][2]), 0.0, 0.0, difc[5][3]); // weitere objecte (erste zahl = Reihe bei [new Float:difc[13][4]]; 2te Zahl = Spalte)
CreateObject(2017, floatadd(X, difc[6][0]), floatadd(Y, difc[6][1]), floatsub(Z, difc[6][2]), 0.0, 0.0, difc[6][3]);
CreateObject(2147, floatadd(X, difc[7][0]), floatadd(Y, difc[7][1]), floatsub(Z, difc[7][2]), 0.0, 0.0, difc[7][3]); // weitere objecte (erste zahl = Reihe bei [new Float:difc[13][4]]; 2te Zahl = Spalte)
CreateObject(2296, floatadd(X, difc[8][0]), floatadd(Y, difc[8][1]), floatsub(Z, difc[8][2]), 0.0, 0.0, difc[8][3]);
CreateObject(2336, floatadd(X, difc[9][0]), floatadd(Y, difc[9][1]), floatsub(Z, difc[9][2]), 0.0, 0.0, difc[9][3]);
//neues
CreateObject(2525, floatadd(X, difc[10][0]), floatadd(Y, difc[10][1]), floatsub(Z, difc[10][2]), 0.0, 0.0, difc[10][3]); // weitere objecte (erste zahl = Reihe bei [new Float:difc[13][4]]; 2te Zahl = Spalte)
CreateObject(2524, floatadd(X, difc[11][0]), floatadd(Y, difc[11][1]), floatsub(Z, difc[11][2]), 0.0, 0.0, difc[11][3]);
CreateObject(2818, floatadd(X, difc[12][0]), floatadd(Y, difc[12][1]), floatsub(Z, difc[12][2]), 0.0, 0.0, difc[12][3]);
camperPos[vehicleid][0] = X, camperPos[vehicleid][1] = Y, camperPos[vehicleid][2] = Z;
}
stock SetPlayerPosIncamper(playerid, camperid) //position beim einsteigen in camper
{
SetPlayerPos(playerid, camperPos[camperid][0],
floatsub(camperPos[camperid][1], 0.0), //genaue position
floatsub(camperPos[camperid][2], 0.0)); // genaue Position
SetPlayerFacingAngle(playerid, 0.0); // FacingAngel
SetCameraBehindPlayer(playerid); // Camera Position
}
stock camperExists(vehicleid) //position beim verlassen des Campers
{
if (floatsqroot(floatadd(camperPos[vehicleid][0], floatadd(camperPos[vehicleid][1], camperPos[vehicleid][2]))))
{
return 1;
}
return 0;
}
stock randomEx(randval)
{
new rand1 = random(2), rand2;
if (!rand1) rand2 -= random(randval);
else rand2 += random(randval);
return rand2;
}
public OnPlayerConnect(playerid)
{
Incamper[playerid] = 0;
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if (GetVehicleModel(vehicleid) == 508 && ispassenger)
{
if (!camperExists(vehicleid))
{
CreatecamperInt(vehicleid, float(randomEx(3000)), float(randomEx(3000)), float(random(100)+800));
}
SetPlayerPosIncamper(playerid, vehicleid);
Incamper[playerid] = vehicleid;
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys & 16 && Incamper[playerid])
{
new Float:X, Float:Y, Float:Z, Float:A;
GetVehiclePos(Incamper[playerid], X, Y, Z);
GetVehicleZAngle(Incamper[playerid], A);
X += (5 * floatsin(-floatsub(A, 45.0), degrees)),
Y += (5 * floatcos(-floatsub(A, 45.0), degrees));
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, X, Y, floatsub(Z, 0.0));
SetPlayerFacingAngle(playerid, A);
SetCameraBehindPlayer(playerid);
Incamper[playerid] = 0;
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
Incamper[playerid] = 0;
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
if (GetVehicleModel(vehicleid) == 508 && camperExists(vehicleid))
{
CreateExplosion(camperPos[vehicleid][0], camperPos[vehicleid][1], camperPos[vehicleid][2], 2, 15.0);
sExplode[vehicleid] = SetTimerEx("Explodecamper", 700, 1, "d", vehicleid);
tCount[vehicleid] = true;
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
tCount[vehicleid] = false;
return 1;
}
public Explodecamper(vehicleid)
{
KillTimer(sExplode[vehicleid]);
if (tCount[vehicleid])
{
CreateExplosion(camperPos[vehicleid][0], camperPos[vehicleid][1], camperPos[vehicleid][2], 2, 15.0);
sExplode[vehicleid] = SetTimerEx("Explodecamper", random(1300)+100, 1, "d", vehicleid);
}
}