Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #include <streamer>
- #include <foreach>
- #include <zcmd>
- #define AMOUNT 90 //Do not change it
- #define MAX_PORTALS 20 //Increase it for more portals
- new Portals[MAX_PLAYERS][6];
- new Float:PortalCordsGreen[MAX_PLAYERS][5];
- new Float:PortalCordsOrange[MAX_PLAYERS][5];
- new PortalCount;
- new nkey;
- public OnPlayerDisconnect(playerid, reason)
- {
- if(PortalCount > 0)
- {
- if(Portals[playerid][0] == 1)
- {
- PortalCount--;
- DestroyDynamicObject(Portals[playerid][2]);
- DestroyDynamicObject(Portals[playerid][3]);
- PortalCordsGreen[playerid][0] = 0.0;
- PortalCordsGreen[playerid][1] = 0.0;
- PortalCordsGreen[playerid][2] = 0.0;
- PortalCordsGreen[playerid][3] = 0.0;
- PortalCordsGreen[playerid][4] = 0.0;
- Portals[playerid][0] = 0;
- }
- if(Portals[playerid][1] == 1)
- {
- PortalCount--;
- DestroyDynamicObject(Portals[playerid][4]);
- DestroyDynamicObject(Portals[playerid][5]);
- PortalCordsOrange[playerid][0] = 0.0;
- PortalCordsOrange[playerid][1] = 0.0;
- PortalCordsOrange[playerid][2] = 0.0;
- PortalCordsOrange[playerid][3] = 0.0;
- PortalCordsOrange[playerid][4] = 0.0;
- Portals[playerid][1] = 0;
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- nkey = newkeys;
- if(newkeys == 132)
- {
- if(PortalCount < MAX_PORTALS)
- {
- if(GetPlayerWeapon(playerid) == 35)
- {
- if(Portals[playerid][0] == 0)
- {
- new Float: PX, Float: PY, Float: PZ, Float:FY, Float:FX, Float: FZ;
- new Float: X, Float: Y, Float: Z, Float: ROT;
- GetPlayerCameraPos(playerid, PX, PY, PZ);
- GetPlayerCameraFrontVector(playerid, FX, FY, FZ);
- GetPlayerFacingAngle(playerid, ROT);
- X = PX + floatmul(FX, 5)*2;
- Y = PY + floatmul(FY, 5)*2;
- Z = PZ + floatmul(FZ, 5);
- Portals[playerid][2] = CreateDynamicObject(18649, X, Y, Z+2, 0, 0, ROT+90);
- Portals[playerid][3] = CreateDynamicObject(18649, X, Y, Z-1, 0, 0, ROT+90);
- PortalCordsGreen[playerid][0] = X;
- PortalCordsGreen[playerid][1] = Y;
- PortalCordsGreen[playerid][2] = Z-1;
- PortalCordsGreen[playerid][3] = ROT+180;
- PortalCordsGreen[playerid][4] = GetPlayerInterior(playerid);
- Portals[playerid][0] = 1;
- PortalCount++;
- }
- else if(Portals[playerid][1] == 0)
- {
- new Float: PX, Float: PY, Float: PZ, Float:FY, Float:FX, Float: FZ;
- new Float: X, Float: Y, Float: Z, Float: ROT;
- GetPlayerCameraPos(playerid, PX, PY, PZ);
- GetPlayerCameraFrontVector(playerid, FX, FY, FZ);
- GetPlayerFacingAngle(playerid, ROT);
- X = PX + floatmul(FX, 5)*2;
- Y = PY + floatmul(FY, 5)*2;
- Z = PZ + floatmul(FZ, 5);
- Portals[playerid][4] = CreateDynamicObject(18650, X, Y, Z+2, 0, 0, ROT+90);
- Portals[playerid][5] = CreateDynamicObject(18650, X, Y, Z-1, 0, 0, ROT+90);
- PortalCordsOrange[playerid][0] = X;
- PortalCordsOrange[playerid][1] = Y;
- PortalCordsOrange[playerid][2] = Z-0.5;
- PortalCordsOrange[playerid][3] = ROT+180;
- PortalCordsOrange[playerid][4] = GetPlayerInterior(playerid);
- Portals[playerid][1] = 1;
- PortalCount++;
- }
- }
- }
- else
- {
- SendClientMessage(playerid, 0xF0F0F0FF, "Maximun portals reached, please wait!");
- }
- }
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- foreach(Player, p)
- {
- if(Portals[p][0] == 1 && Portals[p][1] == 1)
- {
- new Float: ROT;
- if(IsPlayerInAnyVehicle(playerid))
- {
- if(nkey == 32)
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), ROT);
- ROT = (ROT+180 > 360 ? ROT-360+180 : ROT+180);
- }
- else
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), ROT);
- }
- }
- else
- {
- GetPlayerFacingAngle(playerid, ROT);
- }
- if(IsPlayerInRangeOfPoint(playerid, 1.8, PortalCordsGreen[p][0], PortalCordsGreen[p][1], PortalCordsGreen[p][2]))
- {
- if(ROT <= (PortalCordsGreen[p][3]-180 < 0 ? PortalCordsGreen[p][3]+360-180 : PortalCordsGreen[p][3]-180)+AMOUNT && ROT >= (PortalCordsGreen[p][3]-180 < 0 ? PortalCordsGreen[p][3]+360-180 : PortalCordsGreen[p][3]-180)-AMOUNT)
- {
- new Float: X, Float: Y, Float: Z;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
- SetVehiclePos(GetPlayerVehicleID(playerid), PortalCordsOrange[p][0]+(floatmul(floatsin(-PortalCordsOrange[p][3], degrees), 3)), PortalCordsOrange[p][1]+(floatmul(floatcos(-PortalCordsOrange[p][3], degrees), 3)), PortalCordsOrange[p][2]);
- SetVehicleZAngle(GetPlayerVehicleID(playerid), PortalCordsOrange[p][3]);
- SetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
- LinkVehicleToInterior(GetPlayerVehicleID(playerid), FloatToInt(PortalCordsOrange[p][4]));
- SetPlayerInterior(playerid, FloatToInt(PortalCordsOrange[p][4]));
- }
- else
- {
- GetPlayerVelocity(playerid, X, Y, Z);
- SetPlayerPos(playerid, PortalCordsOrange[p][0]+(floatmul(floatsin(-PortalCordsOrange[p][3], degrees), 2.1)), PortalCordsOrange[p][1]+(floatmul(floatcos(-PortalCordsOrange[p][3], degrees), 2.1)), PortalCordsOrange[p][2]);
- SetPlayerFacingAngle(playerid, PortalCordsOrange[p][3]);
- SetPlayerVelocity(playerid, X, Y, Z);
- SetPlayerInterior(playerid, FloatToInt(PortalCordsOrange[playerid][4]));
- }
- }
- }
- if(IsPlayerInRangeOfPoint(playerid, 1.8, PortalCordsOrange[p][0], PortalCordsOrange[p][1], PortalCordsOrange[p][2]))
- {
- if(ROT <= (PortalCordsOrange[p][3]-180 < 0 ? PortalCordsOrange[p][3]+360-180 : PortalCordsOrange[p][3]-180)+AMOUNT && ROT >= (PortalCordsOrange[p][3]-180 < 0 ? PortalCordsOrange[p][3]+360-180 : PortalCordsOrange[p][3]-180)-AMOUNT)
- {
- new Float: X, Float: Y, Float: Z;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
- SetVehiclePos(GetPlayerVehicleID(playerid), PortalCordsGreen[p][0]+(floatmul(floatsin(-PortalCordsGreen[p][3], degrees), 3)), PortalCordsGreen[p][1]+(floatmul(floatcos(-PortalCordsGreen[p][3], degrees), 3)), PortalCordsGreen[p][2]);
- SetVehicleZAngle(GetPlayerVehicleID(playerid), PortalCordsGreen[p][3]);
- SetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
- LinkVehicleToInterior(GetPlayerVehicleID(playerid), FloatToInt(PortalCordsGreen[p][4]));
- SetPlayerInterior(playerid, FloatToInt(PortalCordsGreen[p][4]));
- }
- else
- {
- GetPlayerVelocity(playerid, X, Y, Z);
- SetPlayerPos(playerid, PortalCordsGreen[p][0]+(floatmul(floatsin(-PortalCordsGreen[p][3], degrees), 2.1)), PortalCordsGreen[p][1]+(floatmul(floatcos(-PortalCordsGreen[p][3], degrees), 2.1)), PortalCordsGreen[p][2]);
- SetPlayerFacingAngle(playerid, PortalCordsGreen[p][3]);
- SetPlayerVelocity(playerid, X, Y, Z);
- SetPlayerInterior(playerid, FloatToInt(PortalCordsGreen[p][4]));
- }
- }
- }
- }
- }
- return 1;
- }
- COMMAND:resetp(playerid, params[])
- {
- if(PortalCount > 0)
- {
- if(Portals[playerid][0] == 1)
- {
- PortalCount--;
- DestroyDynamicObject(Portals[playerid][2]);
- DestroyDynamicObject(Portals[playerid][3]);
- PortalCordsGreen[playerid][0] = 0.0;
- PortalCordsGreen[playerid][1] = 0.0;
- PortalCordsGreen[playerid][2] = 0.0;
- PortalCordsGreen[playerid][3] = 0.0;
- PortalCordsGreen[playerid][4] = 0.0;
- Portals[playerid][0] = 0;
- }
- if(Portals[playerid][1] == 1)
- {
- PortalCount--;
- DestroyDynamicObject(Portals[playerid][4]);
- DestroyDynamicObject(Portals[playerid][5]);
- PortalCordsOrange[playerid][0] = 0.0;
- PortalCordsOrange[playerid][1] = 0.0;
- PortalCordsOrange[playerid][2] = 0.0;
- PortalCordsOrange[playerid][3] = 0.0;
- PortalCordsOrange[playerid][4] = 0.0;
- Portals[playerid][1] = 0;
- }
- SendClientMessage(playerid, 0xF0F0F0FF, "Portals resseted.");
- }
- return 1;
- }
- stock FloatToInt(Float:float)
- {
- new _str[16];
- format(_str, 16, "%f", float);
- return strval(_str);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement