242 lines
8.4 KiB
C#
242 lines
8.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using GTANetworkAPI;
|
|
using reallife_gamemode.Server.Events;
|
|
using reallife_gamemode.Server.Extensions;
|
|
using reallife_gamemode.Server.Services;
|
|
using reallife_gamemode.Server.Util;
|
|
|
|
/**
|
|
* @overview Life of German Reallife - Admin Commands (Admin.cs)
|
|
* @author VegaZ, hydrant
|
|
* @copyright (c) 2008 - 2018 Life of German
|
|
*/
|
|
|
|
namespace reallife_gamemode.Server.Commands
|
|
{
|
|
public class Admin : Script
|
|
{
|
|
[Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)]
|
|
public void CmdAdminO(Client player, string message)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
string publicMessage = "~b~(( " + player.Name + ": " + message + " ))";
|
|
NAPI.Chat.SendChatMessageToAll(publicMessage);
|
|
}
|
|
|
|
[Command("veh", "~m~Benutzung: ~s~/veh [Fahrzeug] (Farbe 1) (Farbe 2)")]
|
|
public void CmdAdminVeh(Client player, VehicleHash hash, int color1 = 111, int color2 = 111)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
if (player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs)
|
|
{
|
|
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan schon in einem Fahrzeug.");
|
|
return;
|
|
}
|
|
|
|
Vehicle v = NAPI.Vehicle.CreateVehicle(hash, player.Position, player.Rotation.Z, color1, color2);
|
|
|
|
player.SetIntoVehicle(v.Handle, -1);
|
|
}
|
|
|
|
[Command("fixveh")]
|
|
public void CmdAdminFixveh(Client player)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
if (!player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs)
|
|
{
|
|
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug.");
|
|
return;
|
|
}
|
|
|
|
player.Vehicle.Repair();
|
|
}
|
|
|
|
[Command("delveh")]
|
|
public void CmdAdminDelveh(Client player)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
if (!player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs)
|
|
{
|
|
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug.");
|
|
return;
|
|
}
|
|
|
|
/* TODO: Checken, ob das Fahrzeug in einem System genutzt wird (Fraktions-Autos / Spieler-Auto)
|
|
* Wenn Ja: Abbrechen und mitteilen, dass man den System-spezifischen Befehl zu nutzen hat */
|
|
|
|
player.Vehicle.Delete();
|
|
}
|
|
|
|
[Command("goto", "~m~Benutzung: ~s~/goto [Name]")]
|
|
public void CmdAdminGoto(Client player, string name)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
Client target = ClientService.GetClientByName(name);
|
|
|
|
if (target == null)
|
|
{
|
|
ChatService.PlayerNotFound(player);
|
|
return;
|
|
}
|
|
|
|
player.Position = target.Position;
|
|
}
|
|
|
|
[Command("gotoxyz", "~m~Benutzung: ~s~/gotoxyz [X] [Y] [Z]")]
|
|
public void CmdAdminGotoxyz(Client player, float x, float y, float z)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
player.Position = new Vector3(x, y, z);
|
|
}
|
|
|
|
[Command("gethere", "~m~Benutzung: ~s~/goto [Name]")]
|
|
public void CmdAdminGethere(Client player, string name)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
Client target = ClientService.GetClientByName(name);
|
|
|
|
if (target == null)
|
|
{
|
|
ChatService.PlayerNotFound(player);
|
|
return;
|
|
}
|
|
|
|
target.Position = player.Position;
|
|
}
|
|
|
|
[Command("ipl", "~m~Benutzung: ~s~/ipl [Load / Remove] [Name]")]
|
|
public void CmdAdminIpl(Client player, string option, string name)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
option = option.ToLower();
|
|
|
|
if (option == "load")
|
|
{
|
|
NAPI.World.RequestIpl(name);
|
|
player.SendChatMessage("~g~Das IPL ~s~" + name + " ~g~wurde erfolgreich geladen");
|
|
}
|
|
else if (option == "remove")
|
|
{
|
|
NAPI.World.RemoveIpl(name);
|
|
player.SendChatMessage("~g~Das IPL ~s~" + name + " ~g~wurde erfolgreich entladen");
|
|
}
|
|
else
|
|
{
|
|
player.SendChatMessage("~m~Benutzung: ~s~/ipl [Load / Remove] [Name]");
|
|
}
|
|
}
|
|
|
|
[Command("giveweapon", "~m~Benutzung: ~s~/giveweapon [Spieler] [Waffe] [Munition]")]
|
|
public void CmdAdminGiveweapon(Client player, string name, string weapon, int ammo)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
|
|
if (ammo <= 0)
|
|
{
|
|
player.SendChatMessage("~r~[FEHLER]~s~ Es muss mindestens 1 Munition vergeben werden.");
|
|
return;
|
|
}
|
|
|
|
Client target = ClientService.GetClientByName(name);
|
|
if (target == null)
|
|
{
|
|
ChatService.PlayerNotFound(target);
|
|
return;
|
|
}
|
|
|
|
WeaponHash wHash = NAPI.Util.WeaponNameToModel(weapon);
|
|
|
|
if (wHash == default(WeaponHash))
|
|
{
|
|
player.SendChatMessage("~r~[FEHLER]~s~ Diese Waffe existiert nicht.");
|
|
return;
|
|
}
|
|
|
|
target.GiveWeapon(wHash, ammo);
|
|
}
|
|
|
|
[Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle")]
|
|
public void CmdAdminSave(Client player, string typ)
|
|
{
|
|
if (ChatService.PlayerLoggedIn(player) == false) return;
|
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
|
{
|
|
ChatService.NotAuthorized(player);
|
|
return;
|
|
}
|
|
switch (typ)
|
|
{
|
|
case "Blip":
|
|
player.TriggerEvent("saveBlip");
|
|
break;
|
|
case "Vehicle":
|
|
if (player.IsInVehicle)
|
|
{
|
|
Vehicle vehicle = player.Vehicle;
|
|
SaveData.SaveVehicleData((VehicleHash) vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
|
|
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension));
|
|
}
|
|
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|