Проблема связана со всеми работами которые ездят по меткам а именно, Автобусы и газонокосилка, другие еще не проверял, помогите понять в чем проблема
Сборка shadow
Сборка shadow
C#:
private static void timer_busStop(Player player, int way, int check)
{
NAPI.Task.Run(() =>
{
try
{
NAPI.Data.SetEntityData(player, "BUS_ONSTOP", false);
Notify.Send(player, NotifyType.Info, NotifyPosition.BottomCenter, $"Можете ехать дальше", 3000);
var payment = Convert.ToInt32(BuswaysPayments[way] * Group.GroupPayAdd[Main.Accounts[player].VipLvl] * Main.oldconfig.PaydayMultiplier);
//надбавка с учетом уровня игрока на данной работе
payment += Jobs.WorkManager.PaymentIncreaseAmount[Main.Players[player].WorkID] * Main.Players[player].GetLevelAtThisWork();
//добавление опыта
if (Main.Players[player].AddExpForWork(Main.oldconfig.PaydayMultiplier))
Notify.Alert(player, $"Поздравляем с повышением уровня! Текущий уровень теперь: {Main.Players[player].GetLevelAtThisWork()}");
MoneySystem.Wallet.Change(player, payment);
GameLog.Money($"server", $"player({Main.Players[player].UUID})", payment, $"busCheck");
if (check + 1 != BusWays[way].Count) check++;
else check = 0;
var direction = (check + 1 < BusWays[way].Count) ? BusWays[way][check + 1].Pos - new Vector3(0, 0, 0.12) : BusWays[way][0].Pos - new Vector3(0, 0, 1.12);
var color = (BusWays[way][check].IsStop) ? new Color(255, 255, 255) : new Color(255, 0, 0);
NAPI.ClientEvent.TriggerClientEvent(player, "createCheckpoint", 3, 1, BusWays[way][check].Pos - new Vector3(0, 0, 1.12), 4, 0, color.Red, color.Green, color.Blue, direction);
NAPI.ClientEvent.TriggerClientEvent(player, "createWaypoint", BusWays[way][check].Pos.X, BusWays[way][check].Pos.Y);
NAPI.ClientEvent.TriggerClientEvent(player, "createWorkBlip", BusWays[way][check].Pos);
player.SetData("WORKCHECK", check);
Timers.Stop(player.GetData<string>("BUS_TIMER"));
player.ResetData("BUS_TIMER");
foreach (var p in Main.GetPlayersInRadiusOfPosition(player.Position, 30))
p.SendChatMessage("!{#3ADF00}Автобус отправляется по маршруту " + BusWaysNames[way]);
}
catch (Exception e)
{
Log.Write("EXCEPTION AT \"TIMER_BUS_STOP\":\n" + e.ToString(), nLog.Type.Error);
}
});
}
C#:
private static void busCheckpointEnterWay(ColShape shape, Player player)
{
try
{
if (!NAPI.Player.IsPlayerInAnyVehicle(player)) return;
var vehicle = player.Vehicle;
if (NAPI.Data.GetEntityData(vehicle, "TYPE") != "BUS") return;
if (Main.Players[player].WorkID != 4 || !player.GetData<bool>("ON_WORK") || player.GetData<int>("WORKWAY") != shape.GetData<int>("WORKWAY")) return;
var way = player.GetData<int>("WORKWAY");
if (shape.GetData<int>("NUMBER") != player.GetData<int>("WORKCHECK")) return;
var check = NAPI.Data.GetEntityData(player, "WORKCHECK");
if (player.GetData<bool>("BUS_ONSTOP") == true) return;
if (!BusWays[way][check].IsStop)
{
if (NAPI.Data.GetEntityData(player, "WORKCHECK") != check) return;
if (check + 1 != BusWays[way].Count) check++;
else check = 0;
var direction = (check + 1 != BusWays[way].Count) ? BusWays[way][check + 1].Pos - new Vector3(0, 0, 0.12) : BusWays[way][0].Pos - new Vector3(0, 0, 1.12);
var color = (BusWays[way][check].IsStop) ? new Color(255, 255, 255) : new Color(255, 0, 0);
Trigger.ClientEvent(player, "createCheckpoint", 3, 1, BusWays[way][check].Pos - new Vector3(0, 0, 1.12), 4, 0, color.Red, color.Green, color.Blue, direction);
Trigger.ClientEvent(player, "createWaypoint", BusWays[way][check].Pos.X, BusWays[way][check].Pos.Y);
Trigger.ClientEvent(player, "createWorkBlip", BusWays[way][check].Pos);
NAPI.Data.SetEntityData(player, "WORKCHECK", check);
var payment = Convert.ToInt32(BuswaysPayments[way] * Group.GroupPayAdd[Main.Accounts[player].VipLvl] * Main.oldconfig.PaydayMultiplier);
//надбавка с учетом уровня игрока на данной работе
payment += Jobs.WorkManager.PaymentIncreaseAmount[Main.Players[player].WorkID] * Main.Players[player].GetLevelAtThisWork();
//добавление опыта
if (Main.Players[player].AddExpForWork(Main.oldconfig.PaydayMultiplier))
Notify.Alert(player, $"Поздравляем с повышением уровня! Текущий уровень теперь: {Main.Players[player].GetLevelAtThisWork()}");
MoneySystem.Wallet.Change(player, payment);
GameLog.Money($"server", $"player({Main.Players[player].UUID})", payment, $"busCheck");
}
else
{
if (NAPI.Data.GetEntityData(player, "WORKCHECK") != check) return;
Trigger.ClientEvent(player, "deleteCheckpoint", 3, 0);
Trigger.ClientEvent(player, "deleteWorkBlip");
NAPI.Data.SetEntityData(player, "BUS_ONSTOP", true);
Notify.Send(player, NotifyType.Info, NotifyPosition.BottomCenter, $"Остановка. Через 10 секунд Вы сможете продолжить маршрут", 3000);
player.SetData("BUS_TIMER", Timers.StartOnce(10000, () => timer_busStop(player, way, check)));
foreach (var p in Main.GetPlayersInRadiusOfPosition(player.Position, 30))
p.SendChatMessage("!{#3ADF00}Через 10 секунд отходит автобус, следующий по маршруту " + BusWaysNames[way]);
}
}
catch (Exception ex) { Log.Write("busCheckpointEnterWay: " + ex.Message, nLog.Type.Error); }
}