Beispiel #1
0
        /// <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~Вы здесь не работаете.");
            }
        }
Beispiel #2
0
        /// <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;
                }
            }
        }