Ragemp-roleplay-skript/Jobs/LifeGuard/LifeGuard.cs
2019-04-16 13:59:07 +02:00

197 lines
8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GrandTheftMultiplayer.Server.API;
using GrandTheftMultiplayer.Server.Constant;
using GrandTheftMultiplayer.Server.Elements;
using GrandTheftMultiplayer.Server.Managers;
using GrandTheftMultiplayer.Shared;
using GrandTheftMultiplayer.Shared.Math;
namespace Roleplay.Jobs.LifeGuard
{
class LifeGuard : Script
{
public LifeGuard()
{
API.onEntityEnterColShape += onColShapeHandler;
API.onClientEventTrigger += onTrigger;
API.onPlayerExitVehicle += oNCancel;
setupJob();
}
List<ColShape> colshapes = new List<ColShape>();
public const int totalmarkers = 5;
public void setupJob()
{
API.createPed(PedHash.Baywatch01SMY, new Vector3(-1560.118, -1154.862, 3.911212), 180, 0);
RAPI.Marker.createMarker(1, new Vector3(-1559.363, -1156.3, 2.911212), 1, 0, 255, 0, "job:LifeGuard", 0, 185, "LifeGuard", 0);
RAPI.Marker.createMarker(0, new Vector3(-1555.363, -1156.3, 1.911212), 1, 0, 255, 0, "Lifeguardabgeben", 0, 185, "Auto Einlagern", 0);
colshapes.Add(API.createCylinderColShape(new Vector3(-1518.49, -1272.849, 3.459243), 1, 2));
colshapes.Add(API.createCylinderColShape(new Vector3(-1466.786, -1388.963, 4.138116), 1, 2));
colshapes.Add(API.createCylinderColShape(new Vector3(-1431.199, -1508.964, 3.710496), 1, 2));
colshapes.Add(API.createCylinderColShape(new Vector3(-1372.829, -1624.367, 3.725401), 1, 2));
colshapes.Add(API.createCylinderColShape(new Vector3(-1290.279, -1752.955, 3.71381), 1, 2));
Blip blip = API.createBlip(new Vector3(-1560.118, -1154.862, 3.911212), 0);
blip.sprite = 377;
foreach(ColShape col in colshapes)
{
col.setData("ID", colshapes.IndexOf(col) + 1);
}
}
public void startMarker(Client player)
{
API.triggerClientEvent(player, "job:generate:marker", 1);
API.setEntityData(player, "job:LifeGuard:next", 1);
}
public int getCurrentId(Client player)
{
if (API.hasEntityData(player, "job:LifeGuard:next") == true && API.getEntityData(player, "job:LifeGuard:next") != null)
{
return API.getEntityData(player, "job:LifeGuard:next");
} else
{
return 0;
}
}
public void nextMarker(Client player)
{
if (API.hasEntityData(player, "job:LifeGuard:next") == true)
{
int current = API.getEntityData(player, "job:LifeGuard:next");
if (current >= 4)
{
API.triggerClientEvent(player, "destroyMarker");
API.triggerClientEvent(player, "job:generate:marker", 1);
API.setEntityData(player, "job:LifeGuard:next", 1);
}
else
{
API.triggerClientEvent(player, "destroyMarker");
API.triggerClientEvent(player, "job:generate:marker", current + 1);
API.setEntityData(player, "job:LifeGuard:next", current + 1);
}
} else
{
API.triggerClientEvent(player, "destroyMarker");
API.triggerClientEvent(player, "job:generate:marker", 1);
API.setEntityData(player, "job:LifeGuard:next", 1);
}
}
private void onTrigger(Client sender, string eventName, object[] arguments)
{
if (eventName == "triggerBackFromClient")
{
string job = (string)arguments[0];
if (job == "job:start:" + Jobmanager.Jobnames.LifeGuard[0])
{
if (Jobmanager.getJob(sender) == Jobmanager.Jobnames.LifeGuard[0])
{
API.sendNotificationToPlayer(sender, "~g~Job gestartet!");
Vehicle veh = RAPI.MainAPI.createRolePlayVehicle(VehicleHash.Lguard, new Vector3(-1575.387, -1158.269, 2.133404), new Vector3(0, 0, -147), 0, 100, 0, 0, 255, 0, "System");
API.setPlayerIntoVehicle(sender, veh, -1);
API.setVehicleLocked(veh, true);
API.setEntityData(veh, "job:LifeGuard:Lguard", true);
API.setEntityData(sender,"job:LifeGuard",true);
API.setEntityData(sender, "job:LifeGuard:next", 1);
API.triggerClientEvent(sender, "job:generate:marker", 1);
}
else
{
API.sendNotificationToPlayer(sender, "~r~Du musst den Job erstmal annehmen!");
}
}
}
}
private void onColShapeHandler(ColShape colshape, NetHandle entity)
{
if (entity != null && colshape != null)
{
if (colshape.hasData("job:LifeGuard") == true && colshape.getData("job:LifeGuard") == true)
{
Client player = API.getPlayerFromHandle(entity);
if (player != null)
{
Jobmanager.acceptFenster(player, Jobmanager.Jobnames.LifeGuard, 0);
}
}
else if (colshape.hasData("ID") == true)
{
Client player = API.getPlayerFromHandle(entity);
if (player != null)
{
if (player.isInVehicle != true)
{
int colshapeid = colshape.getData("ID");
if (colshapeid == getCurrentId(player))
{
if (colshapeid == 4)
{
API.triggerClientEvent(player, "destroyMarker");
}
nextMarker(player);
API.playPlayerScenario(player, "WORLD_HUMAN_BINOCULARS");
API.delay(1000 * 10, true, () =>
{
API.stopPlayerAnimation(player);
Jobmanager.addPayDayMoney(player, 500);
Levelsystem.addPlayerLevelFortschritt(player,1,API);
});
}
}
else
{
API.sendNotificationToPlayer(player, "Du musst absteigen!");
}
}
}else if(colshape.hasData("Lifeguardabgeben") == true){
Client player = API.getPlayerFromHandle(entity);
if(player != null && player.isInVehicle == true){
Vehicle veh = player.vehicle;
if(veh != null)
{
if(API.hasEntityData(veh, "job:LifeGuard:Lguard") == true)
{
if (Jobmanager.getJob(player) == Jobmanager.Jobnames.LifeGuard[0])
{
veh.delete();
API.sendNotificationToPlayer(player, "Du hast das Fahrzeug abgegeben!");
}else{
API.sendNotificationToPlayer(player, "Du hast nicht den richtigen Job!");
}
}
}
}
}
}
}
private void oNCancel(Client player, NetHandle vehicle, int x)
{
if (API.getEntityData(vehicle, "job:LifeGuard:mower") == true)
{
//API.delay(1000 * 60, true, () =>
//{
// if(player.isInVehicle != true)
// {
// API.deleteEntity(vehicle);
// API.triggerClientEvent(player, "destroyMarker");
// }
//});
}
}
}
}