public static void Open(Client client, Menu menu, bool force = false) { try { if (Menus.ContainsKey(client.Handle)) { Log.Debug($"Client already have opened Menu! id:{Menus[client.Handle].ID}", nLog.Type.Warn); if (!force) { return; } Menus.Remove(client.Handle); } Menus.Add(client.Handle, menu); //string data = JsonConvert.SerializeObject(menu); string data = menu.getJsonStr(); if (!client.HasData("Phone")) { Trigger.ClientEvent(client, "phoneShow"); client.SetData("Phone", true); } Trigger.ClientEvent(client, "phoneOpen", data); } catch (Exception e) { Log.Write("EXCEPTION AT \"MENUCONTROL_OPEN\":\n" + e.ToString(), nLog.Type.Error); } }
public static void Event_Passport(Client player, params object[] arguments) { try { Client to = (Client)arguments[0]; Log.Debug(to.Name.ToString()); Passport(player, to); } catch (Exception e) { Log.Write("EXCEPTION AT \"EVENT_PASSPORT\":\n" + e.ToString(), nLog.Type.Error); } }
public void ReportTake(Client client, int id, bool retrn = false) { if (Main.Players[client].AdminLVL <= 0) { return; } Log.Debug($"Report take: {id} {retrn}"); if (!Reports.ContainsKey(id)) { Remove(id, client); return; } if (Reports[id].Status) { Remove(id, client); return; } foreach (Client target in NAPI.Pools.GetAllPlayers()) { if (!Main.Players.ContainsKey(target)) { continue; } if (Main.Players[target].AdminLVL < adminLvL) { continue; } if (retrn) { Trigger.ClientEvent(target, "setreport", id, ""); } else { Trigger.ClientEvent(target, "setreport", id, client.Name); } } }
public static void AtmBizGen(Client player) { var acc = Main.Players[player]; Log.Debug("Biz count : " + acc.BizIDs.Count); if (acc.BizIDs.Count > 0) { List <string> data = new List <string>(); foreach (int key in acc.BizIDs) { Business biz = BusinessManager.BizList[key]; string name = BusinessManager.BusinessTypeNames[biz.Type]; data.Add($"{name}"); } Trigger.ClientEvent(player, "atmOpenBiz", JsonConvert.SerializeObject(data), ""); } else { Trigger.ClientEvent(player, "atmOpen", "[1,0,0]"); Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "У вас нет бизнеса!", 3000); } }
public static uint RequestPrivateDimension(Client requester) { int firstUnusedDim = 10000; lock (DimensionsInUse) { while (DimensionsInUse.ContainsKey(--firstUnusedDim)) { } DimensionsInUse.Add(firstUnusedDim, requester.Handle); } Log.Debug($"Dimension {firstUnusedDim.ToString()} is registered for {requester.Name}."); return((uint)firstUnusedDim); }
private void timer_playerExitWorkVehicle(Client player, Vehicle vehicle) { NAPI.Task.Run(() => { try { if (!player.HasData("WORK_CAR_EXIT_TIMER")) { return; } if (NAPI.Data.GetEntityData(player, "IN_WORK_CAR")) { // Main.StopT(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"), "timer_16"); Timers.Stop(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER")); NAPI.Data.ResetEntityData(player, "WORK_CAR_EXIT_TIMER"); Log.Debug("Player exit work vehicle timer was stoped"); return; } if (NAPI.Data.GetEntityData(player, "CAR_EXIT_TIMER_COUNT") > 180) { respawnCar(vehicle); Notify.Send(player, NotifyType.Info, NotifyPosition.BottomCenter, $"Вы закончили рабочий день", 3000); NAPI.Data.SetEntityData(player, "PAYMENT", 0); NAPI.Data.SetEntityData(player, "ON_WORK", false); NAPI.Data.SetEntityData(player, "WORK", null); NAPI.ClientEvent.TriggerClientEvent(player, "deleteCheckpoint", 16, 0); NAPI.ClientEvent.TriggerClientEvent(player, "deleteWorkBlip"); //Main.StopT(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"), "timer_17"); Timers.Stop(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER")); NAPI.Data.ResetEntityData(player, "WORK_CAR_EXIT_TIMER"); Customization.ApplyCharacter(player); if (player.HasData("WORKOBJECT")) { BasicSync.DetachObject(player); player.ResetData("WORKOBJECT"); } return; } NAPI.Data.SetEntityData(player, "CAR_EXIT_TIMER_COUNT", NAPI.Data.GetEntityData(player, "CAR_EXIT_TIMER_COUNT") + 1); } catch (Exception e) { Log.Write("Timer_PlayerExitWorkVehicle_Collector:\n" + e.ToString(), nLog.Type.Error); } }); }
private static void Remove(int ID_, Client someone = null) { try { Log.Debug($"Remove {ID_}"); if (someone == null) { foreach (Client target in NAPI.Pools.GetAllPlayers()) { if (!Main.Players.ContainsKey(target)) { continue; } if (Main.Players[target].FractionID != 15) { continue; } Trigger.ClientEvent(target, "deladvert", ID_); } } else { if (!Main.Players.ContainsKey(someone)) { return; } if (Main.Players[someone].FractionID != 15) { return; } Trigger.ClientEvent(someone, "deladvert", ID_); } Adverts.Remove(ID_); } catch (Exception e) { Log.Write(e.ToString(), nLog.Type.Error); } }
private void timer_playerExitWorkVehicle(Client player, Vehicle vehicle) { NAPI.Task.Run(() => { try { if (!player.HasData("WORK_CAR_EXIT_TIMER")) { return; } if (NAPI.Data.GetEntityData(player, "IN_WORK_CAR")) { //Main.StopT(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"), "timer_5"); Timers.Stop(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER")); NAPI.Data.ResetEntityData(player, "WORK_CAR_EXIT_TIMER"); Log.Debug("Player exit work vehicle timer was stoped"); return; } if (NAPI.Data.GetEntityData(player, "CAR_EXIT_TIMER_COUNT") > 60) { respawnCar(vehicle); NAPI.Data.SetEntityData(player, "ON_WORK", false); NAPI.Data.SetEntityData(player, "WORK", null); Notify.Send(player, NotifyType.Info, NotifyPosition.BottomCenter, $"Вы закончили рабочий день", 3000); Trigger.ClientEvent(player, "deleteCheckpoint", 4, 0); //Main.StopT(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"), "timer_6"); Timers.Stop(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER")); NAPI.Data.ResetEntityData(player, "WORK_CAR_EXIT_TIMER"); Customization.ApplyCharacter(player); return; } NAPI.Data.SetEntityData(player, "CAR_EXIT_TIMER_COUNT", NAPI.Data.GetEntityData(player, "CAR_EXIT_TIMER_COUNT") + 1); } catch (Exception e) { Log.Write("Timer_PlayerExitWorkVehicle_Lawnmower: " + e.Message, nLog.Type.Error); } }); }
private static void Worker() { string CMD = ""; try { Log.Debug("Worker started"); while (true) { if (queue.Count < 1) { continue; } else { MySQL.Query(queue.Dequeue()); } } } catch (Exception e) { Log.Write($"{e.ToString()}\n{CMD}", nLog.Type.Error); } }
public static void checkWantedList(Client sender, params object[] arguments) { try { List <string> list = new List <string>(); foreach (var p in NAPI.Pools.GetAllPlayers()) { if (!Main.Players.ContainsKey(p)) { continue; } var acc = Main.Players[p]; var wantedLvl = (acc.WantedLVL == null) ? 0 : acc.WantedLVL.Level; if (wantedLvl != 0) { list.Add($"{acc.FirstName} {acc.LastName} - {wantedLvl}*"); } } var json = JsonConvert.SerializeObject(list); Log.Debug(json); Trigger.ClientEvent(sender, "executeWantedList", json); } catch (Exception e) { Log.Write("checkWantedList: " + e.Message, nLog.Type.Error); } }
private static void Tick(object state) { try { Log.Debug("Donate time"); using (MySqlConnection connection = new MySqlConnection(Connection)) { connection.Open(); MySqlCommand command = new MySqlCommand(); command.Connection = connection; while (toChange.Count > 0) { KeyValuePair <string, string> kvp = toChange.Dequeue(); command.CommandText = string.Format(CHNGSTR, kvp.Value, kvp.Key, Main.oldconfig.ServerNumber); command.ExecuteNonQuery(); } while (newNames.Count > 0) { string nickname = newNames.Dequeue(); command.CommandText = string.Format(NEWNSTR, Main.oldconfig.ServerNumber, nickname); command.ExecuteNonQuery(); } command.CommandText = SYNCSTR; MySqlDataReader reader = command.ExecuteReader(); DataTable result = new DataTable(); result.Load(reader); reader.Close(); foreach (DataRow Row in result.Rows) { int id = Convert.ToInt32(Row["id"]); string name = Convert.ToString(Row["account"]).ToLower(); long reds = Convert.ToInt64(Row["amount"]); try { if (Main.oldconfig.DonateSaleEnable) { reds = SaleEvent(reds); } if (!Main.Usernames.Contains(name)) { Log.Write($"Can't find registred name for {name}!", nLog.Type.Warn); continue; } var client = Main.Accounts.FirstOrDefault(a => a.Value.Login == name).Key; if (client == null || client.IsNull || !Main.Accounts.ContainsKey(client)) { MySQL.Query($"update `accounts` set `redbucks`=`redbucks`+{reds} where `login`='{name}'"); } else { lock (Main.Players) { Main.Accounts[client].RedBucks += reds; } NAPI.Task.Run(() => { try { if (!Main.Accounts.ContainsKey(client)) { return; } Notify.Send(client, NotifyType.Success, NotifyPosition.BottomCenter, $"Вам пришли {reds} Redbucks", 3000); Trigger.ClientEvent(client, "starset", Main.Accounts[client].RedBucks); } catch { } }); } //TODO: новый лог денег //GameLog.Money("donate", $"player({Main.PlayerUUIDs[name]})", +stars); GameLog.Money("server", name, reds, "donateRed"); command.CommandText = $"delete from completed where id={id}"; command.ExecuteNonQuery(); } catch (Exception e) { Log.Write($"Exception At Tick_Donations on {name}:\n" + e.ToString(), nLog.Type.Error); } } connection.Close(); } } catch (Exception e) { Log.Write("Exception At Tick_Donations:\n" + e.ToString(), nLog.Type.Error); } }
public void onPlayerDeathHandler(Client player, Client entityKiller, uint weapon) { try { if (!Main.Players.ContainsKey(player)) { return; } Log.Debug($"{player.Name} is died by {weapon}"); FractionCommands.onPlayerDeathHandler(player, entityKiller, weapon); SafeMain.onPlayerDeathHandler(player, entityKiller, weapon); Weapons.Event_PlayerDeath(player, entityKiller, weapon); Army.Event_PlayerDeath(player, entityKiller, weapon); Police.Event_PlayerDeath(player, entityKiller, weapon); Houses.HouseManager.Event_OnPlayerDeath(player, entityKiller, weapon); Jobs.Collector.Event_PlayerDeath(player, entityKiller, weapon); Jobs.Gopostal.Event_PlayerDeath(player, entityKiller, weapon); VehicleManager.WarpPlayerOutOfVehicle(player); Main.Players[player].IsAlive = false; if (player.HasData("AdminSkin")) { player.ResetData("AdminSkin"); player.SetSkin((Main.Players[player].Gender) ? PedHash.FreemodeMale01 : PedHash.FreemodeFemale01); Customization.ApplyCharacter(player); } Trigger.ClientEvent(player, "screenFadeOut", 2000); var dimension = player.Dimension; if (Main.Players[player].DemorganTime != 0 || Main.Players[player].ArrestTime != 0) { player.SetData("IS_DYING", true); } if (!player.HasData("IS_DYING")) { if ((Manager.FractionTypes[Main.Players[player].FractionID] == 0 && (MafiaWars.warIsGoing || MafiaWars.warStarting)) || (Manager.FractionTypes[Main.Players[player].FractionID] == 1 && (GangsCapture.captureIsGoing || GangsCapture.captureStarting))) { player.SetSharedData("InDeath", true); DeathConfirm(player, false); } else { player.SetSharedData("InDeath", true); var medics = 0; foreach (var m in Manager.Members) { if (m.Value.FractionID == 8) { medics++; } } Trigger.ClientEvent(player, "openDialog", "DEATH_CONFIRM", $"Вы хотите вызвать медиков ({medics} в сети)?"); } } else { NAPI.Task.Run(() => { try { if (!Main.Players.ContainsKey(player)) { return; } if (player.HasData("DYING_TIMER")) { //Main.StopT(player.GetData("DYING_TIMER"), "timer_9"); Timers.Stop(player.GetData("DYING_TIMER")); player.ResetData("DYING_TIMER"); } if (player.HasData("CALLEMS_BLIP")) { NAPI.Entity.DeleteEntity(player.GetData("CALLEMS_BLIP")); player.ResetData("CALLEMS_BLIP"); } if (player.HasData("CALLEMS_COL")) { NAPI.ColShape.DeleteColShape(player.GetData("CALLEMS_COL")); player.ResetData("CALLEMS_COL"); } Trigger.ClientEvent(player, "DeathTimer", false); player.SetSharedData("InDeath", false); var spawnPos = new Vector3(); if (Main.Players[player].DemorganTime != 0) { spawnPos = Admin.DemorganPosition + new Vector3(0, 0, 1.12); dimension = 1337; } else if (Main.Players[player].ArrestTime != 0) { spawnPos = Police.policeCheckpoints[4]; } else if (Main.Players[player].FractionID == 14) { spawnPos = Fractions.Manager.FractionSpawns[14] + new Vector3(0, 0, 1.12); } else { player.SetData("IN_HOSPITAL", true); spawnPos = emsCheckpoints[2]; } NAPI.Player.SpawnPlayer(player, spawnPos); NAPI.Player.SetPlayerHealth(player, 20); player.ResetData("IS_DYING"); Main.Players[player].IsAlive = true; Main.OffAntiAnim(player); NAPI.Entity.SetEntityDimension(player, dimension); } catch { } }, 4000); } } catch (Exception e) { Log.Write("PlayerDeath: " + e.Message, nLog.Type.Error); } }
public static Hash GetHash(string name) { Log.Debug($"{name} {Convert.ToString((Hash)Enum.Parse(typeof(Hash), name))}"); return((Hash)Enum.Parse(typeof(Hash), name)); }
public async Task Load(Client player, int uuid) { try { if (Main.Players.ContainsKey(player)) { Main.Players.Remove(player); } DataTable result = await MySQL.QueryReadAsync($"SELECT * FROM `characters` WHERE uuid={uuid}"); if (result == null || result.Rows.Count == 0) { return; } foreach (DataRow Row in result.Rows) { UUID = Convert.ToInt32(Row["uuid"]); FirstName = Convert.ToString(Row["firstname"]); LastName = Convert.ToString(Row["lastname"]); Gender = Convert.ToBoolean(Row["gender"]); Health = Convert.ToInt32(Row["health"]); Armor = Convert.ToInt32(Row["armor"]); LVL = Convert.ToInt32(Row["lvl"]); EXP = Convert.ToInt32(Row["exp"]); Money = Convert.ToInt64(Row["money"]); Bank = Convert.ToInt32(Row["bank"]); WorkID = Convert.ToInt32(Row["work"]); FractionID = Convert.ToInt32(Row["fraction"]); FractionLVL = Convert.ToInt32(Row["fractionlvl"]); ArrestTime = Convert.ToInt32(Row["arrest"]); DemorganTime = Convert.ToInt32(Row["demorgan"]); WantedLVL = JsonConvert.DeserializeObject <WantedLevel>(Row["wanted"].ToString()); BizIDs = JsonConvert.DeserializeObject <List <int> >(Row["biz"].ToString()); AdminLVL = Convert.ToInt32(Row["adminlvl"]); Licenses = JsonConvert.DeserializeObject <List <bool> >(Row["licenses"].ToString()); Unwarn = ((DateTime)Row["unwarn"]); Unmute = Convert.ToInt32(Row["unmute"]); Warns = Convert.ToInt32(Row["warns"]); LastVeh = Convert.ToString(Row["lastveh"]); OnDuty = Convert.ToBoolean(Row["onduty"]); LastHourMin = Convert.ToInt32(Row["lasthour"]); HotelID = Convert.ToInt32(Row["hotel"]); HotelLeft = Convert.ToInt32(Row["hotelleft"]); Contacts = JsonConvert.DeserializeObject <Dictionary <int, string> >(Row["contacts"].ToString()); Achievements = JsonConvert.DeserializeObject <List <bool> >(Row["achiev"].ToString()); if (Achievements == null) { Achievements = new List <bool>(); for (uint i = 0; i != 401; i++) { Achievements.Add(false); } } Sim = Convert.ToInt32(Row["sim"]); PetName = Convert.ToString(Row["PetName"]); CreateDate = ((DateTime)Row["createdate"]); SpawnPos = JsonConvert.DeserializeObject <Vector3>(Row["pos"].ToString()); if (Row["pos"].ToString().Contains("NaN")) { Log.Debug("Detected wrong coordinates!", nLog.Type.Warn); if (LVL <= 1) { new Vector3(-1037.42, -2738.239, 19.04929); // На спавне новичков } else { SpawnPos = new Vector3(-1037.42, -2738.239, 19.04929); // У мэрии LS Aero end 1 } } } player.Name = FirstName + "_" + LastName; Main.Players.Add(player, this); CheckAchievements(player); GameLog.Connected(player.Name, UUID, player.GetData("RealSocialClub"), player.GetData("RealHWID"), player.Value, player.Address); Spawn(player); } catch (Exception e) { Log.Write("EXCEPTION AT \"Load\":\n" + e.ToString()); } }