/// <summary> /// Завершение рабочего дня /// </summary> public void JobGryzYval(Client player) { PlayerInfo pInfo = API.getEntityData(player.handle, Constants.PlayerAccount); if (pInfo.Job == (int)Jobs.JOB_JOBGRYZ_ONE) { var myBox = GryzBoxes.Where(i => i.Player == player).FirstOrDefault(); if (myBox != null) { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Сначала отнесите ящик на склад."); return; } API.sendNativeToPlayer(player, Hash.DO_SCREEN_FADE_OUT, 200); API.delay(200, true, () => { pInfo.Job = (int)Jobs.NULL; API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы закончили рабочий день."); API.clearPlayerAccessory(player, 0); // удаляем аксесуары с головы pInfo.UpdateDress(); // меняем одежду на пользовательскую pInfo.money = pInfo.money + pInfo.jobMoney; pInfo.jobMoney = 0; pInfo.UpdateBD(); var Markers = pInfo.playerEntity.Where(x => x.Key == Constants.Marker); // Удаляем все пользовательские маркеры связанные с работой foreach (var Marker in Markers.ToArray()) { MarkerInfo bi = Marker.Value; if (bi.Job == Jobs.JOB_JOBGRYZ_ONE) { bi.DeleteMarker(); } } var Blips = pInfo.playerEntity.Where(x => x.Key == Constants.Blip); // Удаляем все пользовательские блипы связанные с работой foreach (var Blip in Blips.ToArray()) { BlipInfo bi = Blip.Value; if (bi.Job == Jobs.JOB_JOBGRYZ_ONE) { bi.DeleteBlip(); } } API.sendNativeToPlayer(player, Hash.DO_SCREEN_FADE_IN, 750); }); } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы здесь не работаете."); } }
/// <summary> /// Выход из маркера /// </summary> private void onMarkerExit(ColShape colshape, NetHandle entity) { if (colshape.hasData(Constants.MarkerClass)) { MarkerInfo mInfo = colshape.getData(Constants.MarkerClass); Client player; int type = (int)API.getEntityType(entity); if (type == 6) { player = API.getPlayerFromHandle(entity); } else { return; } if (mInfo.local && mInfo.player != player) { return; } if (mInfo.Job == Jobs.JOB_JOBGRYZ_ONE) { if (mInfo.HasData("JobGryzAction")) { switch ((int)mInfo.GetData("JobGryzAction")) { case 0: mInfo.DeleteMarker(); break; case 1: mInfo.DeleteMarker(); break; } } else if (mInfo.HasData("JobGryzZone")) // Работник пытается украсть ящик. { PlayerInfo pInfo = API.getEntityData(player.handle, Constants.PlayerAccount); if (pInfo.Job == (int)Jobs.JOB_JOBGRYZ_ONE) { pInfo.Job = (int)Jobs.NULL; API.sendNativeToPlayer(player, Hash.DO_SCREEN_FADE_OUT, 200); API.delay(200, true, () => { var myBox = GryzBoxes.Where(i => i.Player == player).FirstOrDefault(); if (myBox != null) { //Удаляем украденный ящик API.detachEntity(myBox.Object); API.setEntityPosition(myBox.Object, new Vector3(55.31, -1259.78, -10.0)); API.deleteEntity(myBox.Object); GryzBoxes.Remove(myBox); API.stopPlayerAnimation(player); API.sendChatMessageToPlayer(player, "~y~[Server] ~r~Вы пытались украсть груз."); API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Ваш рабочий день окончен."); API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы ни чего не получите за работу."); API.clearPlayerAccessory(player, 0); // удаляем аксесуары с головы pInfo.UpdateDress(); // меняем одежду на пользовательскую pInfo.jobMoney = 0; } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы покинули зону. Ваш рабочий день окончен."); API.clearPlayerAccessory(player, 0); // удаляем аксесуары с головы pInfo.UpdateDress(); // меняем одежду на пользовательскую pInfo.money = pInfo.money + pInfo.jobMoney; pInfo.jobMoney = 0; pInfo.UpdateBD(); } var Markers = pInfo.playerEntity.Where(x => x.Key == Constants.Marker); // Удаляем все пользовательские маркеры связанные с работой foreach (var Marker in Markers.ToArray()) { MarkerInfo bi = Marker.Value; if (bi.Job == Jobs.JOB_JOBGRYZ_ONE) { bi.DeleteMarker(); } } var Blips = pInfo.playerEntity.Where(x => x.Key == Constants.Blip); // Удаляем все пользовательские блипы связанные с работой foreach (var Blip in Blips.ToArray()) { BlipInfo bi = Blip.Value; if (bi.Job == Jobs.JOB_JOBGRYZ_ONE) { bi.DeleteBlip(); } } API.sendNativeToPlayer(player, Hash.DO_SCREEN_FADE_IN, 750); }); } } else { API.triggerClientEvent(player, "JobGryzOff"); } } } else { API.deleteColShape(colshape); } }
private void onMarkerEnter(ColShape colshape, NetHandle entity) { if (colshape.hasData(Constants.MarkerClass)) { MarkerInfo mInfo = colshape.getData(Constants.MarkerClass); Client player; int type = (int)API.getEntityType(entity); if (type == 6) { player = API.getPlayerFromHandle(entity); } else { return; } if (mInfo.local && mInfo.player != player) { return; } PlayerInfo pInfo = API.getEntityData(player.handle, Constants.PlayerAccount); if (mInfo.HasData("JOB_IMMIGRANT_SEARCH")) { var percent = ((pInfo.Bottles * 0.1 + pInfo.Paper + pInfo.Cabel) / 40) * 100; if (percent > 100) { API.sendChatMessageToPlayer(player, "~y~[Server] ~r~Рюкзак переполнен!"); API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Сдайте ваш инвентарь на завод!"); return; } API.setEntityRotation(player, new Vector3(0, 0, -90)); API.playPlayerAnimation(player, 0, "timetable@maid@cleaning_surface@idle_a", "idle_a"); byte bottles = (byte)SuperRandom.Next(1, 5); pInfo.Bottles += bottles; byte paper = (byte)SuperRandom.Next(0, 3); pInfo.Paper += paper; byte cabel = (byte)SuperRandom.Next(0, 3); pInfo.Cabel += cabel; lifeRP_GM.mainClass.Stream(4500, () => { API.triggerClientEvent(player, "SEND_BOMJ_DATA", pInfo.Bottles.ToString(), pInfo.Paper.ToString(), pInfo.Cabel.ToString()); API.sendChatMessageToPlayer(API.getPlayerFromHandle(entity), string.Format("~y~Вы нашли:\r\nБутылок - {0} шт.!\r\nБумаги - {1} кг.!\r\nЦветного металла - {2} кг.!", bottles, paper, cabel)); }); var binfo = mInfo.GetData("JOB_IMMIGRANT_SEARCH"); mInfo.DeleteMarker(); if (binfo != null) { binfo.DeleteBlip(); } } else if (mInfo.HasData("JOB_IMMIGRANT_CVETMET")) { if (pInfo.Job == (int)Jobs.NULL) { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~У вас нету рюкзака для продажи."); } else if (pInfo.Job == (int)Jobs.JOB_IMMIGRANT) { if (pInfo.Cabel != 0) { int CabelMoney = pInfo.Cabel * CabelCost; pInfo.money += CabelMoney; pInfo.Cabel = 0; pInfo.UpdateBD(); API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы продали цветной металл на: ~r~$" + CabelMoney.ToString()); API.triggerClientEvent(player, "SEND_BOMJ_DATA", pInfo.Bottles.ToString(), pInfo.Paper.ToString(), pInfo.Cabel.ToString()); if (pInfo.Bottles == 0 && pInfo.Cabel == 0 && pInfo.Paper == 0) { JobImmigrantYval(player); } } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~У вас нету цвет. металла!"); } } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Сначала завершите старую работу."); } return; } else if (mInfo.HasData("JOB_IMMIGRANT_STEKLO")) { if (pInfo.Job == (int)Jobs.NULL) { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~У вас нету рюкзака для продажи."); } else if (pInfo.Job == (int)Jobs.JOB_IMMIGRANT) { if (pInfo.Bottles != 0) { int BottlesMoney = pInfo.Bottles * BottleCost; pInfo.money += BottlesMoney; pInfo.Bottles = 0; pInfo.UpdateBD(); API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы продали бутылки на: ~r~$" + BottlesMoney.ToString()); API.triggerClientEvent(player, "SEND_BOMJ_DATA", pInfo.Bottles.ToString(), pInfo.Paper.ToString(), pInfo.Cabel.ToString()); if (pInfo.Bottles == 0 && pInfo.Cabel == 0 && pInfo.Paper == 0) { JobImmigrantYval(player); } } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~У вас нету бутылок!"); } } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Сначала завершите старую работу."); } return; } else if (mInfo.HasData("JOB_IMMIGRANT_BUMAGA")) { if (pInfo.Job == (int)Jobs.NULL) { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~У вас нету рюкзака для продажи."); } else if (pInfo.Job == (int)Jobs.JOB_IMMIGRANT) { if (pInfo.Paper != 0) { int PaperMoney = pInfo.Paper * PaperCost; pInfo.money += PaperMoney; pInfo.Paper = 0; pInfo.UpdateBD(); API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы продали бумагу на: ~r~$" + PaperMoney.ToString()); API.triggerClientEvent(player, "SEND_BOMJ_DATA", pInfo.Bottles.ToString(), pInfo.Paper.ToString(), pInfo.Cabel.ToString()); if (pInfo.Bottles == 0 && pInfo.Cabel == 0 && pInfo.Paper == 0) { JobImmigrantYval(player); } } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~У вас нету бумаги!"); } } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Сначала завершите старую работу."); } return; } else if (mInfo.HasData("JOB_IMMIGRANT")) { if (pInfo.Job == (int)Jobs.NULL) { for (byte i = 0; i < TrashCoords.Length; i++) { var mark = new MarkerInfo(player, 1, new Vector3(TrashCoords[i].X, TrashCoords[i].Y, TrashCoords[i].Z), new Vector3(1, 1, 1), new Vector3(35.5, 1, 1), new Vector3(1.5, 1.5, 1), 100, 236, 147, 89, 1, 1, Jobs.JOB_IMMIGRANT); var blip = new BlipInfo(player, new Vector3(TrashCoords[i].X, TrashCoords[i].Y, TrashCoords[i].Z), 1, 17, true, 0, "Мусорный ящик", Jobs.JOB_IMMIGRANT); mark.SetData("JOB_IMMIGRANT_SEARCH", blip); } new MarkerInfo(player, 1, new Vector3(1083.46, -1974.33, 30.0165), new Vector3(1, 1, 1), new Vector3(35.5, 1, 1), new Vector3(1.5, 1.5, 2), 100, 236, 147, 89, 1, 2, Jobs.JOB_IMMIGRANT).SetData("JOB_IMMIGRANT_CVETMET", 1); new MarkerInfo(player, 1, new Vector3(1137.99, -2046.25, 30.0165), new Vector3(1, 1, 1), new Vector3(35.5, 1, 1), new Vector3(1.5, 1.5, 2), 100, 236, 147, 89, 1, 2, Jobs.JOB_IMMIGRANT).SetData("JOB_IMMIGRANT_STEKLO", 1); new MarkerInfo(player, 1, new Vector3(1070.04, -1971.78, 30.0321), new Vector3(1, 1, 1), new Vector3(35.5, 1, 1), new Vector3(1.5, 1.5, 2), 100, 236, 147, 89, 1, 2, Jobs.JOB_IMMIGRANT).SetData("JOB_IMMIGRANT_BUMAGA", 1); new BlipInfo(player, new Vector3(1083.46, -1974.33, 30.0165), 440, 17, true, 0, "Пункт приема цветного металла", Jobs.JOB_IMMIGRANT); new BlipInfo(player, new Vector3(1137.99, -2046.25, 30.0165), 440, 17, true, 0, "Пункт приема стеклотары", Jobs.JOB_IMMIGRANT); new BlipInfo(player, new Vector3(1070.04, -1971.78, 30.0321), 440, 17, true, 0, "Пункт приема бумаги", Jobs.JOB_IMMIGRANT); new TLabelInfo(player, "Пункт приема цветного металла", new Vector3(1083.46, -1974.33, 31.0165), 25, 1, false, 0, Jobs.JOB_IMMIGRANT); new TLabelInfo(player, "Пункт приема стеклотары", new Vector3(1137.99, -2046.25, 31.0165), 25, 1, false, 0, Jobs.JOB_IMMIGRANT); new TLabelInfo(player, "Пункт приема бумаги", new Vector3(1070.04, -1971.78, 31.0321), 25, 1, false, 0, Jobs.JOB_IMMIGRANT); pInfo.PISUN = API.createObject(-2137120552, new Vector3(806.8278, -809.9581, 25.2029), new Vector3(0, 0, 0)); API.sendChatMessageToPlayer(player, "~y~[Server] ~g~Вы устроились на работу."); pInfo.Job = (int)Jobs.JOB_IMMIGRANT; API.attachEntityToEntity(pInfo.PISUN, player.handle, "SKEL_Spine2", new Vector3(0.15, -0.25, 0), new Vector3(-180, -90, -180)); new ServerWayPoint().CreateWayPoint(player, 1073, -1965); pInfo.Bottles += 1; pInfo.Paper += 1; pInfo.Cabel += 1; API.playPlayerAnimation(player, 0, "timetable@maid@cleaning_surface@idle_a", "idle_a"); API.triggerClientEvent(player, "OPEN_TEST_BAG"); lifeRP_GM.mainClass.Stream(4500, () => { API.sendChatMessageToPlayer(player, string.Format("~y~Вы нашли:\r\nБутылок - {0} шт.!\r\nБумаги - {1} кг.!\r\nЦветного металла - {2} кг.!", 1, 1, 1)); API.triggerClientEvent(player, "SEND_BOMJ_DATA", pInfo.Bottles.ToString(), pInfo.Paper.ToString(), pInfo.Cabel.ToString()); }); } else if (pInfo.Job == (int)Jobs.JOB_IMMIGRANT) { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Сдайте ваш инвентарь на завод!"); } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Сначала завершите старую работу."); } return; } } }