コード例 #1
0
ファイル: API.cs プロジェクト: Landrut/CherryMP
 internal void invokeColShapeExit(ColShape shape, NetHandle vehicle)
 {
     onEntityExitColShape?.Invoke(shape, vehicle);
 }
コード例 #2
0
 public void setPlayerBlip(Client player, NetHandle blip)
 {
     API.setEntitySyncedData(player, "PLAYERBLIPS_MAIN_BLIP", blip);
 }
コード例 #3
0
 internal TextLabel(ServerAPI father, NetHandle handle) : base(father, handle)
 {
 }
コード例 #4
0
 private void API_onPlayerEnterVehicle(Client player, NetHandle vehicle)
 {
     UpdateBlipForVehicle(vehicle);
 }
コード例 #5
0
 /// <summary>
 /// 客户端向服务器进行异步请求,请求字节数据
 /// </summary>
 /// <param name="customer">用户的指令头</param>
 /// <param name="send">发送的字节内容</param>
 /// <returns>带返回消息的结果对象</returns>
 public Task <OperateResult <byte[]> > ReadFromServerAsync(NetHandle customer, byte[] send)
 {
     return(Task.Run(() => ReadFromServer(customer, send)));
 }
コード例 #6
0
        private void OnClientEventTrigger(Client sender, string eventName, params object[] arguments)
        {
            if (eventName == "menu_handler_select_item")
            {
                if ((int)arguments[0] == 132)
                {
                    if (API.hasEntityData(sender, "InventoryHolder"))
                    {
                        InventoryHolder ih   = API.getEntityData(sender, "InventoryHolder");
                        var             item = ih.Inventory[(int)arguments[1]];
                        API.setEntityData(sender, "LastSelectedItem", item);
                        List <String> Actions = new List <string>();
                        Actions.Add("Utiliser /Equiper");
                        Actions.Add("Description");
                        Actions.Add("Donner");
                        Actions.Add("Ranger dans le coffre");
                        Actions.Add("Jeter");
                        API.triggerClientEvent(sender, "bettermenuManager", 133, API.getEntitySyncedData(sender, "Nom_Prenom"), "Selectionner l'item :               Poids : " + API.getEntityData(sender.handle, "weight") + " / " + API.getEntityData(sender.handle, "weight_max"), false, Actions);
                    }
                }
                if ((int)arguments[0] == 133)
                {
                    // Utilise Equiper
                    InventoryItem item = API.getEntityData(sender, "LastSelectedItem");
                    if ((int)arguments[1] == 0)
                    {
                        item.Details.Use(sender);
                        API.resetEntityData(sender, "LastSelectedItem");
                    }
                    // Description
                    if ((int)arguments[1] == 1)
                    {
                        object[] ar = new object[2];
                        ar[0] = item.Details.Description;
                        ar[1] = 2000;
                        API.triggerClientEvent(sender, "display_subtitle", ar);
                    }
                    // Donner au joueur
                    if ((int)arguments[1] == 2)
                    {
                        var peopleNearby = API.getPlayersInRadiusOfPlayer(4, sender);
                        peopleNearby.Remove(sender);
                        API.setEntityData(sender, "NearbyList", peopleNearby);
                        List <String> Actions = new List <string>();
                        foreach (Client player in peopleNearby)
                        {
                            Actions.Add(API.getEntitySyncedData(player, "Nom_Prenom"));
                        }
                        API.triggerClientEvent(sender, "bettermenuManager", 134, API.getEntitySyncedData(sender, "Nom_Prenom"), "Donner l'object au ~g~joueur:", false, Actions);
                    }
                    //Mettre en coffre
                    if ((int)arguments[1] == 3)
                    {
                        API.shared.triggerClientEvent(sender, "get_user_input", 137, "", 3, null);
                    }
                    if ((int)arguments[1] == 4)
                    {
                        var itemS = API.getEntityData(sender, "LastSelectedItem");
                        Items.Items.InventoryHolder invplayer = API.getEntityData(sender, "InventoryHolder");
                        invplayer.RemoveItemFromInventory(item.Details, 1);
                        API.resetEntityData(sender, "LastSelectedItem");
                    }
                }
                // QUANTITE à Donner au Joueur
                if ((int)arguments[0] == 134)
                {
                    API.shared.triggerClientEvent(sender, "get_user_input", 135, "", 3, (int)arguments[1]);
                }
            }

            if (eventName == "menu_handler_user_input")
            {
                // Donner au Joueur VALIDATION
                if ((int)arguments[0] == 135)
                {
                    var item       = API.getEntityData(sender, "LastSelectedItem");
                    var nearbylist = API.getEntityData(sender, "NearbyList");
                    var reciever   = nearbylist[(int)arguments[2]];


                    bool result = Int32.TryParse(arguments[1].ToString(), out int number);
                    if (!result)
                    {
                        API.sendNotificationToPlayer(sender, "Vous devez rentrer exlusivement un nombre."); return;
                    }

                    InventoryHolder invplayer   = API.getEntityData(sender, "InventoryHolder");
                    InventoryHolder invreciever = API.getEntityData(reciever, "InventoryHolder");

                    var itemplayerqty = item.Quantity;
                    if (qty <= itemplayerqty)
                    {
                        if (invreciever.CheckWeightInventory(item.Details, qty))
                        {
                            invplayer.RemoveItemFromInventory(item.Details, qty);
                            invreciever.AddItemToInventory(item.Details, qty);

                            API.sendNotificationToPlayer(sender, "Vous avez donner " + qty.ToString() + " " + item.Details.Name + " à " + (API.getEntitySyncedData(reciever, "Nom_Prenom")).ToString());
                            API.sendNotificationToPlayer(reciever, "Vous avez reçu " + qty.ToString() + " " + item.Details.Name + " de " + (API.getEntitySyncedData(sender, "Nom_Prenom")).ToString());
                            UpdatePlayerInfo(sender);
                            UpdatePlayerInfo(reciever);
                            API.resetEntityData(sender, "LastSelectedItem");
                            API.resetEntityData(sender, "NearbyList");
                        }
                        else
                        {
                            API.sendNotificationToPlayer(sender, (API.getEntitySyncedData(reciever, "Nom_Prenom")).ToString() + " n'a pas la place dans sont inventaire");
                        }
                    }
                    else
                    {
                        API.sendNotificationToPlayer(sender, "Vous en avez pas autant sur vous");
                    }
                }
                // Mettre en coffre VALIDATION
                if ((int)arguments[0] == 137)
                {
                    try
                    {
                        InventoryItem item     = API.getEntityData(sender, "LastSelectedItem");
                        NetHandle     reciever = Vehicles.Vehicle.GetVehicleInRange(sender, 3f);

                        if (Vehicles.Vehicle.LockVehicleState(reciever))
                        {
                            API.sendNotificationToPlayer(sender, "Le véhicule est fermer!");
                            return;
                        }

                        if (item == null || reciever == null)
                        {
                            API.sendNotificationToPlayer(sender, "~r~[ERROR]"); return;
                        }
                        if (API.getEntitySyncedData(reciever, "Locked") == true)
                        {
                            API.sendNotificationToPlayer(sender, "Le véhicule est fermer!");
                        }
                        else
                        {
                            Items.Items.InventoryHolder invplayer   = API.getEntityData(sender, "InventoryHolder");
                            Items.Items.InventoryHolder invreciever = API.getEntityData(reciever, "InventoryHolder");
                            string plate = API.getEntitySyncedData(reciever, "Plate");
                            qty = Convert.ToInt32(arguments[1]);
                            if (qty <= 0)
                            {
                                API.sendNotificationToPlayer(sender, "ERREUR!"); return;
                            }
                            var itemplayerqty = item.Quantity;
                            if (qty <= itemplayerqty)
                            {
                                if (invreciever.CheckWeightInventory(item.Details, qty))
                                {
                                    invplayer.RemoveItemFromInventory(item.Details, qty);
                                    invreciever.AddItemToInventory(item.Details, qty);

                                    API.sendNotificationToPlayer(sender, "Vous avez mis  ~r~" + qty.ToString() + " " + item.Details.Name + " ~s~dans le coffre du véhicule: " + plate);
                                }
                                else
                                {
                                    API.sendNotificationToPlayer(sender, plate + " n'a pas la place dans le coffre.");
                                }
                            }
                            else
                            {
                                API.sendNotificationToPlayer(sender, "Vous en avez pas autant sur vous");
                            }
                            API.resetEntityData(sender, "LastSelectedItem");
                            API.resetEntityData(sender, "NearbyList");
                            UpdatePlayerInfo(sender);
                        }
                    }
                    catch (FormatException)
                    {
                        API.sendNotificationToPlayer(sender, "ERREUR!");
                    }
                }
            }
        }
コード例 #7
0
ファイル: deathmatch.cs プロジェクト: ithr0n/ExampleResources
    public void PlayerKilled(Client player, NetHandle reason, int weapon)
    {
        Client killer = null;

        if (!reason.IsNull)
        {
            var players = API.getAllPlayers();
            for (var i = 0; i < players.Count; i++)
            {
                if (players[i].handle == reason)
                {
                    killer = players[i];
                    break;
                }
            }
        }

        API.setEntitySyncedData(player.handle, "dm_score", API.getEntitySyncedData(player.handle, "dm_score") - 1);
        API.setEntitySyncedData(player.handle, "dm_deaths", API.getEntitySyncedData(player.handle, "dm_deaths") + 1);

        API.setEntitySyncedData(player.handle, "dm_kdr", API.getEntitySyncedData(player.handle, "dm_kills") / (float)API.getEntitySyncedData(player.handle, "dm_deaths"));

        UpdateScoreboardData(player);

        if (killer != null)
        {
            API.setEntitySyncedData(killer.handle, "dm_kills", API.getEntitySyncedData(killer.handle, "dm_kills") + 1);
            API.setEntitySyncedData(killer.handle, "dm_score", API.getEntitySyncedData(killer.handle, "dm_score") + 1);
            if (API.getEntitySyncedData(killer.handle, "dm_deaths") != 0)
            {
                API.setEntitySyncedData(killer.handle, "dm_kdr", API.getEntitySyncedData(killer.handle, "dm_kills") / (float)API.getEntitySyncedData(killer.handle, "dm_deaths"));
            }

            UpdateScoreboardData(killer);

            /*if (API.getEntitySyncedData(killer.handle, "dm_kills") >= killTarget)
             * {
             *  API.sendChatMessageToAll("~b~~h~" + killer.name + "~h~~w~ has won the round with " + killTarget + " kills and " + API.getEntitySyncedData(player.handle, "dm_deaths") + " deaths!");
             *  API.exported.mapcycler.endRound();
             * }
             */
            if (Killstreaks.ContainsKey(killer))
            {
                Killstreaks[killer]++;
                if (Killstreaks[killer] >= 3)
                {
                    var kBlip = API.exported.playerblips.getPlayerBlip(killer);

                    API.sendChatMessageToAll("~b~" + killer.name + "~w~ is on a killstreak! ~r~" + Killstreaks[killer] + "~w~ kills and counting!");
                    API.setBlipSprite(kBlip, 303);
                    API.setBlipColor(kBlip, 1);

                    if (Killstreaks[killer] == 4)
                    {
                        API.setPlayerHealth(killer, (int)Math.Min(100, API.getPlayerHealth(killer) + 25));
                        API.sendChatMessageToPlayer(killer, "~g~Health bonus!");
                    }
                    else if (Killstreaks[killer] == 6)
                    {
                        API.setPlayerHealth(killer, (int)Math.Min(100, API.getPlayerHealth(killer) + 50));
                        API.sendChatMessageToPlayer(killer, "~g~Health bonus!");
                    }
                    else if (Killstreaks[killer] == 8)
                    {
                        API.setPlayerHealth(killer, (int)Math.Min(100, API.getPlayerHealth(killer) + 75));
                        API.setPlayerArmor(killer, (int)Math.Min(100, API.getPlayerArmor(killer) + 25));
                        API.sendChatMessageToPlayer(killer, "~g~Health and armor bonus!");
                    }
                    else if (Killstreaks[killer] == 12)
                    {
                        API.setPlayerHealth(killer, (int)Math.Min(100, API.getPlayerHealth(killer) + 75));
                        API.setPlayerArmor(killer, (int)Math.Min(100, API.getPlayerArmor(killer) + 50));
                        API.sendChatMessageToPlayer(killer, "~g~Health and armor bonus!");
                    }
                    else if (Killstreaks[killer] >= 16 && Killstreaks[killer] % 4 == 0)
                    {
                        API.setPlayerHealth(killer, (int)Math.Min(100, API.getPlayerHealth(killer) + 75));
                        API.setPlayerArmor(killer, (int)Math.Min(100, API.getPlayerArmor(killer) + 75));
                        API.sendChatMessageToPlayer(killer, "~g~Health and armor bonus!");
                    }
                }
            }
            else
            {
                Killstreaks.Add(killer, 1);
            }
        }

        var pBlip = API.exported.playerblips.getPlayerBlip(player);

        if (Killstreaks.ContainsKey(player))
        {
            if (Killstreaks[player] >= 3 && killer != null)
            {
                API.sendChatMessageToAll("~b~" + killer.name + "~w~ ruined ~r~" + player.name + "~w~'s killstreak!");
                API.setBlipColor(pBlip, 0);
                API.setBlipSprite(pBlip, 1);
            }
            Killstreaks[player] = 0;
        }
        else
        {
            Killstreaks.Add(player, 0);
        }

        //API.setBlipSprite(pBlip, 274); // why is it here?
    }
コード例 #8
0
ファイル: Entity.cs プロジェクト: Landrut/CherryMP
 public void attachTo(NetHandle entity, string bone, Vector3 offset, Vector3 rotation)
 {
     Base.attachEntityToEntity(this, entity, bone, offset, rotation);
 }
コード例 #9
0
ファイル: Entity.cs プロジェクト: Landrut/CherryMP
 internal Entity(ServerAPI father, NetHandle handle)
 {
     Base        = father;
     this.handle = handle;
 }
コード例 #10
0
ファイル: API.cs プロジェクト: Landrut/CherryMP
 internal void invokePlayerPickup(Client pickupee, NetHandle pickup)
 {
     onPlayerPickup?.Invoke(pickupee, pickup);
 }
コード例 #11
0
ファイル: API.cs プロジェクト: Landrut/CherryMP
 internal void invokePlayerDeath(Client player, NetHandle netHandle, int weapon)
 {
     onPlayerDeath?.Invoke(player, netHandle, weapon);
 }
コード例 #12
0
ファイル: API.cs プロジェクト: Landrut/CherryMP
 internal void invokePickupRespawn(NetHandle pickup)
 {
     onPickupRespawn?.Invoke(pickup);
 }
コード例 #13
0
ファイル: API.cs プロジェクト: Landrut/CherryMP
 internal void invokePlayerExitVeh(Client player, NetHandle veh)
 {
     onPlayerExitVehicle?.Invoke(player, veh);
 }
コード例 #14
0
ファイル: API.cs プロジェクト: Landrut/CherryMP
 internal void invokeVehicleDeath(NetHandle vehicle)
 {
     onVehicleDeath?.Invoke(vehicle);
 }
コード例 #15
0
 /// <summary>
 /// 客户端向服务器进行请求,请求字符串数据,并返回状态信息,加密数据
 /// </summary>
 /// <param name="customer">用户的指令头</param>
 /// <param name="send">发送数据</param>
 /// <returns>带返回消息的结果对象</returns>
 public OperateResult <NetHandle, byte[]> ReadCustomerFromServer(NetHandle customer, byte[] send)
 {
     return(ReadCustomerFromServerBaseInstructionsFirstEnDe(InsideProtocol.CommandBytes(customer, Token, send)));
 }
コード例 #16
0
ファイル: ExitVehicle.cs プロジェクト: shotaxx/Essence
 private void API_onPlayerExitVehicle(Client player, NetHandle vehicle)
 {
     Anticheat.playerLeftVehicle(player);
 }
コード例 #17
0
ファイル: deathmatch.cs プロジェクト: millerp/WiredPlayers-RP
    public void OnPlayerDeath(Client player, NetHandle entitykiller, uint weapon)
    {
        Client killer = null;

        if (!entitykiller.IsNull)
        {
            foreach (var ply in NAPI.Pools.GetAllPlayers())
            {
                if (ply.Handle != entitykiller)
                {
                    continue;
                }
                killer = ply;
                break;
            }
        }

        NAPI.Data.SetEntityData(player.Handle, "dm_score", NAPI.Data.GetEntitySharedData(player.Handle, "dm_score") - 1);
        NAPI.Data.SetEntityData(player.Handle, "dm_deaths", NAPI.Data.GetEntitySharedData(player.Handle, "dm_deaths") + 1);
        NAPI.Data.SetEntityData(player.Handle, "dm_kdr", NAPI.Data.GetEntitySharedData(player.Handle, "dm_kills") / (float)NAPI.Data.GetEntitySharedData(player.Handle, "dm_deaths"));

        if (killer != null)
        {
            NAPI.Data.SetEntityData(killer.Handle, "dm_kills", NAPI.Data.GetEntitySharedData(killer.Handle, "dm_kills") + 1);
            NAPI.Data.SetEntityData(killer.Handle, "dm_score", NAPI.Data.GetEntitySharedData(killer.Handle, "dm_score") + 1);
            if (NAPI.Data.GetEntitySharedData(killer.Handle, "dm_deaths") != 0)
            {
                NAPI.Data.SetEntityData(killer.Handle, "dm_kdr", NAPI.Data.GetEntitySharedData(killer.Handle, "dm_kills") / (float)NAPI.Data.GetEntitySharedData(killer.Handle, "dm_deaths"));
            }

            if (NAPI.Data.GetEntitySharedData(killer.Handle, "dm_kills") >= KillTarget)
            {
                NAPI.Chat.SendChatMessageToAll($"~b~~h~{killer.Name}~h~~w~ has won the round with ~h~{KillTarget}~h~ kills and {NAPI.Data.GetEntitySharedData(player.Handle, "dm_deaths")} deaths!");
                //API.Exported.mapcycler.endRound();
            }

            if (Killstreaks.ContainsKey(killer))
            {
                Killstreaks[killer]++;
                if (Killstreaks[killer] >= 3)
                {
                    var kBlip = NAPI.Exported.playerblips.getPlayerBlip(killer);
                    NAPI.Blip.SetBlipSprite(kBlip, 303);
                    NAPI.Blip.SetBlipColor(kBlip, 1);

                    NAPI.Chat.SendChatMessageToAll($"~b~{killer.Name}~w~ is on a killstreak! ~r~{Killstreaks[killer]}~w~ kills and counting!");
                    switch (Killstreaks[killer])
                    {
                    case 4:
                        NAPI.Player.SetPlayerHealth(killer, Math.Min(100, NAPI.Player.GetPlayerHealth(killer) + 25));
                        NAPI.Chat.SendChatMessageToPlayer(killer, "~g~Health bonus!");
                        break;

                    case 6:
                        NAPI.Player.SetPlayerHealth(killer, Math.Min(100, NAPI.Player.GetPlayerHealth(killer) + 50));
                        NAPI.Chat.SendChatMessageToPlayer(killer, "~g~Health bonus!");
                        break;

                    case 8:
                        NAPI.Player.SetPlayerHealth(killer, Math.Min(100, NAPI.Player.GetPlayerHealth(killer) + 75));
                        NAPI.Player.SetPlayerArmor(killer, Math.Min(100, NAPI.Player.GetPlayerArmor(killer) + 25));
                        NAPI.Chat.SendChatMessageToPlayer(killer, "~g~Health and armor bonus!");
                        break;

                    case 12:
                        NAPI.Player.SetPlayerHealth(killer, Math.Min(100, NAPI.Player.GetPlayerHealth(killer) + 75));
                        NAPI.Player.SetPlayerArmor(killer, Math.Min(100, NAPI.Player.GetPlayerArmor(killer) + 50));
                        NAPI.Chat.SendChatMessageToPlayer(killer, "~g~Health and armor bonus!");
                        break;

                    default:
                        if (Killstreaks[killer] >= 16 && Killstreaks[killer] % 4 == 0)
                        {
                            NAPI.Player.SetPlayerHealth(killer, Math.Min(100, NAPI.Player.GetPlayerHealth(killer) + 75));
                            NAPI.Player.SetPlayerArmor(killer, Math.Min(100, NAPI.Player.GetPlayerArmor(killer) + 75));
                            NAPI.Chat.SendChatMessageToPlayer(killer, "~g~Health and armor bonus!");
                        }
                        break;
                    }
                }
            }
            else
            {
                Killstreaks.Add(killer, 1);
            }
        }

        var pBlip = NAPI.Exported.playerblips.getPlayerBlip(player);

        if (Killstreaks.ContainsKey(player))
        {
            if (Killstreaks[player] >= 3 && killer != null)
            {
                NAPI.Chat.SendChatMessageToAll($"~b~{killer.Name}~w~ ruined ~r~{player.Name}~w~'s killstreak!");
                NAPI.Blip.SetBlipColor(pBlip, 0);
                NAPI.Blip.SetBlipSprite(pBlip, 1);
            }
            Killstreaks[player] = 0;
        }
        else
        {
            Killstreaks.Add(player, 0);
        }

        NAPI.Blip.SetBlipSprite(pBlip, 274);
        Spawn(player);
    }
コード例 #18
0
        public void startChopShopJob(Client player, params object[] arguments)
        {
            if (player.position.DistanceTo(startPoint) >= 5)
            {
                return;
            }

            Mission mission;

            if (API.hasEntityData(player, "Mission"))
            {
                mission = API.getEntityData(player, "Mission");
                if (mission.MissionObjectiveCount > 0)
                {
                    API.sendChatMessageToPlayer(player, "~r~You seem to already have a mission running.");
                    return;
                }
                API.setEntitySyncedData(player, "Mission_New_Instance", true);
                API.setEntityData(player, "Mission", mission);
                mission.addPlayer(player);
            }
            else
            {
                mission = new Mission();
                API.setEntitySyncedData(player, "Mission_New_Instance", true);
                API.setEntityData(player, "Mission", mission);
                mission.addPlayer(player);
            }

            // Basic Setup.
            mission.useTimer();
            mission.MissionTime              = 60 * 5;
            mission.MissionReward            = reward;
            mission.MissionTitle             = "Chop Shop";
            mission.RemoveFromMissionOnDeath = true;

            StashInfo stash = StashManager.getStashInfoByID(1);

            if (stash == null)
            {
                API.sendChatMessageToPlayer(player, "~r~Something went wrong with stashes. Contact an administrator.");
                return;
            }

            mission.AttachStashInfo = stash;

            // Setup a unique ID for the vehicle we'll be using.
            int uniqueID = new Random().Next(1, 50000);
            // == First Major Objective
            // = Create an empty objective to house information. Create an empty ObjectiveInfo Add our first objective, and associate the Vehicle ID with our objective.
            Objective     objective     = mission.addEmptyObjective(mission);
            ObjectiveInfo objectiveInfo = objective.addEmptyObjectiveInfo();

            objectiveInfo.Location = midPoint;
            objectiveInfo.Type     = Objective.ObjectiveTypes.Location;
            objectiveInfo.Lockpick = new minigames.Lockpick();

            // == Second Major Objective
            int     missionIndex = new Random().Next(0, locations.Count);
            int     carIndex     = new Random().Next(0, vehicleList.Count);
            Vector3 location     = locations[missionIndex].Location;
            Vector3 rotation     = locations[missionIndex].Rotation;

            objective              = mission.addEmptyObjective(mission);
            objectiveInfo          = objective.addEmptyObjectiveInfo();
            objectiveInfo.Location = location;
            objectiveInfo.Type     = Objective.ObjectiveTypes.BreakIntoVehicle;
            objectiveInfo.Lockpick = new minigames.Lockpick();
            NetHandle vehicle = objective.addObjectiveVehicle(mission, location.Add(new Vector3(0, 0, 0.2)), API.vehicleNameToModel(vehicleList[carIndex]), rotation, uniqueID);

            API.setVehiclePrimaryColor(vehicle, new Random().Next(0, 159));
            API.setVehicleSecondaryColor(vehicle, new Random().Next(0, 159));

            API.setEntityPositionFrozen(vehicle, true);
            API.delay(5000, true, () =>
            {
                API.setVehicleLocked(vehicle, true);
                API.setVehicleEngineStatus(vehicle, false);
                API.setEntityPositionFrozen(vehicle, false);
            });

            // == Third Major Objective - Take Vehicle
            objective                     = mission.addEmptyObjective(mission);
            objectiveInfo                 = objective.addEmptyObjectiveInfo();
            objectiveInfo.Location        = location;
            objectiveInfo.Type            = Objective.ObjectiveTypes.RetrieveVehicle;
            objectiveInfo.UniqueVehicleID = uniqueID;
            objectiveInfo                 = objective.addEmptyObjectiveInfo();
            objectiveInfo.Type            = Objective.ObjectiveTypes.UnlockVehicles;
            objectiveInfo.Location        = new Vector3();
            objectiveInfo.UniqueVehicleID = uniqueID;

            // == Parse End Point
            objective                     = mission.addEmptyObjective(mission);
            objectiveInfo                 = objective.addEmptyObjectiveInfo();
            objectiveInfo.Location        = endPoint;
            objectiveInfo.Type            = Objective.ObjectiveTypes.VehicleLocation;
            objectiveInfo.UniqueVehicleID = uniqueID;

            // == Start Mission

            mission.startMission();
        }
コード例 #19
0
    public bool isPlayerFaceValid(NetHandle ent)
    {
        if (!API.hasEntitySyncedData(ent, "GTAO_SHAPE_FIRST_ID"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_SHAPE_SECOND_ID"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_SKIN_FIRST_ID"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_SKIN_SECOND_ID"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_SHAPE_MIX"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_SKIN_MIX"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_HAIR_COLOR"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_HAIR_HIGHLIGHT_COLOR"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_EYE_COLOR"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_EYEBROWS"))
        {
            return(false);
        }
        //if (!API.hasEntitySyncedData(ent, "GTAO_MAKEUP")) return false; // Player may have no makeup
        //if (!API.hasEntitySyncedData(ent, "GTAO_LIPSTICK")) return false; // Player may have no lipstick
        if (!API.hasEntitySyncedData(ent, "GTAO_EYEBROWS_COLOR"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_MAKEUP_COLOR"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_LIPSTICK_COLOR"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_EYEBROWS_COLOR2"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_MAKEUP_COLOR2"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_LIPSTICK_COLOR2"))
        {
            return(false);
        }
        if (!API.hasEntitySyncedData(ent, "GTAO_FACE_FEATURES_LIST"))
        {
            return(false);
        }

        return(true);
    }
コード例 #20
0
        public bool IsVehicleCoveredByThisLicense(NetHandle vehicleHandle)
        {
            Vehicle veh = API.shared.getEntityFromHandle <Vehicle>(vehicleHandle);

            return(IsVehicleCoveredByThisLicense((VehicleHash)veh.model));
        }
コード例 #21
0
        private void UpdateBlipForVehicle(NetHandle vehicle)
        {
            if (vehicle.IsNull)
            {
                return;
            }

            var clients = API.getVehicleOccupants(vehicle);

            Client driver = null;

            foreach (var client in clients)
            {
                if (API.getPlayerVehicleSeat(client) == -1)
                {
                    driver = client;
                    break;
                }
            }

            if (driver == null)
            {
                // As a fallback, just make everyone visible
                foreach (var client in clients)
                {
                    var blip = GetBlipForPlayer(client);
                    // WORKAROUND: Disconnected players are still returned by getVehicleOccupants.
                    // Bug reported here: https://forum.gtanet.work/index.php?threads/getvehicleoccupants-returns-disconnected-players.1473/
                    if (blip == null)
                    {
                        continue;
                    }
                    blip.transparency = 255;
                }
                return;
            }

            var driverBlip = GetBlipForPlayer(driver);

            if (driverBlip == null)
            {
                // This maybe happens rarely?
                return;
            }

            // Show number on blip for driver
            if (clients.Length > 1)
            {
                API.sendNativeToAllPlayers(Hash.SHOW_NUMBER_ON_BLIP, driverBlip.handle, clients.Length);
            }
            else
            {
                API.sendNativeToAllPlayers(Hash.HIDE_NUMBER_ON_BLIP, driverBlip.handle);
            }

            // Hide blips for occupants
            foreach (var client in clients)
            {
                if (client == driver)
                {
                    continue;
                }
                var blip = GetBlipForPlayer(client);
                blip.transparency = 0;
            }
        }
コード例 #22
0
 private void SimplifyServer_ReceiveStringEvent(HslCommunication.Core.Net.AppSession arg1, NetHandle handle, string msg)
 {
     if (handle == 1)
     {
         simplifyServer.SendMessage(arg1, handle, version.ToString( ));
         string address = GetAddressByIp(arg1.IpAddress);
         lognet.WriteInfo($"{arg1.IpAddress.PadRight( 15 )} [{msg.PadRight( 8 )}] [{address}] Demo");
         AddDict(address);
     }
     else if (handle == 2)
     {
         simplifyServer.SendMessage(arg1, random.Next(10000), "这是一条测试的数据:" + random.Next(10000).ToString( ));
     }
     else if (handle == 100)
     {
         simplifyServer.SendMessage(arg1, handle, version2.ToString( ));
         string address = GetAddressByIp(arg1.IpAddress);
         lognet.WriteInfo($"{arg1.IpAddress.PadRight( 15 )} [{msg.PadRight( 8 )}] [{address}] Controls");
         AddDict(address);
     }
     else if (handle == 1000)
     {
         // 返回统计信息
         simplifyServer.SendMessage(arg1, handle, GetData( ));
     }
     else
     {
         simplifyServer.SendMessage(arg1, handle, msg);
     }
 }
コード例 #23
0
 /// <summary>
 /// 客户端向服务器进行异步请求,请求字符串数据
 /// </summary>
 /// <param name="customer">用户的指令头</param>
 /// <param name="send">发送数据</param>
 public Task <OperateResult <string> > ReadFromServerAsync(NetHandle customer, string send = null)
 {
     return(Task.Run(() => ReadFromServer(customer, send)));
 }
コード例 #24
0
        public void RespawnVehicles(NetHandle Vehicular)
        {
            var Respawnable       = API.getEntityData(Vehicular, "RESPAWNABLE");
            var vehicleSpawnPos   = API.getEntityData(Vehicular, "SPAWN_POS");
            var vehicleType       = API.getEntityData(Vehicular, "VehicleType");
            var vehicleCurrentPos = API.getEntityPosition(Vehicular);
            var Occupied          = API.getVehicleOccupants(Vehicular);

            if (Occupied.Length == 0 || Occupied == null)
            {
                if (Respawnable == true)
                {
                    int    model = API.getEntityModel(Vehicular);
                    string name  = API.getVehicleDisplayName((VehicleHash)model);

                    var spawnPos = API.getEntityData(Vehicular, "SPAWN_POS");
                    var spawnH   = API.getEntityData(Vehicular, "SPAWN_ROT");

                    API.deleteEntity(Vehicular);

                    if (vehicleType == "Police")
                    {
                        Vehicle respawnCar = API.createVehicle((VehicleHash)model, spawnPos, spawnH, 111, 0);

                        // You can also add more things, like vehicle modifications, number plate, etc.
                        API.setEntityData(respawnCar, "RESPAWNABLE", true);
                        API.setEntityData(respawnCar, "SPAWN_POS", spawnPos);
                        API.setEntityData(respawnCar, "SPAWN_ROT", spawnH);
                        API.setEntityData(respawnCar, "VehicleType", "Police");
                        API.consoleOutput(name + " Respawned at: " + spawnPos);

                        API.setEntityData(respawnCar, "timerActive", false);
                        return;
                    }
                    else if (vehicleType == "Firetruck")
                    {
                        Vehicle respawnCar = API.createVehicle((VehicleHash)model, spawnPos, spawnH, 134, 28);

                        // You can also add more things, like vehicle modifications, number plate, etc.
                        API.setEntityData(respawnCar, "RESPAWNABLE", true);
                        API.setEntityData(respawnCar, "SPAWN_POS", spawnPos);
                        API.setEntityData(respawnCar, "SPAWN_ROT", spawnH);
                        API.setEntityData(respawnCar, "VehicleType", "Firetruck");
                        API.consoleOutput(name + " Respawned at: " + spawnPos);

                        API.setEntityData(respawnCar, "timerActive", false);
                        return;
                    }
                    else if (vehicleType == "Car")
                    {
                        Vehicle respawnCar = API.createVehicle((VehicleHash)model, spawnPos, spawnH, Colour1(), Colour2());

                        // You can also add more things, like vehicle modifications, number plate, etc.
                        API.setEntityData(respawnCar, "RESPAWNABLE", true);
                        API.setEntityData(respawnCar, "SPAWN_POS", spawnPos);
                        API.setEntityData(respawnCar, "SPAWN_ROT", spawnH);
                        API.setEntityData(respawnCar, "VehicleType", "Car");
                        API.consoleOutput(name + " Respawned at: " + spawnPos);

                        API.setEntityData(respawnCar, "timerActive", false);
                        return;
                    }
                    else if (vehicleType == "Boat")
                    {
                        Vehicle respawnCar = API.createVehicle((VehicleHash)model, spawnPos, spawnH, Colour1(), Colour2());

                        // You can also add more things, like vehicle modifications, number plate, etc.
                        API.setEntityData(respawnCar, "RESPAWNABLE", true);
                        API.setEntityData(respawnCar, "SPAWN_POS", spawnPos);
                        API.setEntityData(respawnCar, "SPAWN_ROT", spawnH);
                        API.setEntityData(respawnCar, "VehicleType", "Boat");
                        API.consoleOutput(name + " Respawned at: " + spawnPos);

                        API.setEntityData(respawnCar, "timerActive", false);
                        return;
                    }
                    else if (vehicleType == "Aircraft")
                    {
                        Vehicle respawnCar = API.createVehicle((VehicleHash)model, spawnPos, spawnH, Colour1(), Colour2());

                        // You can also add more things, like vehicle modifications, number plate, etc.
                        API.setEntityData(respawnCar, "RESPAWNABLE", true);
                        API.setEntityData(respawnCar, "SPAWN_POS", spawnPos);
                        API.setEntityData(respawnCar, "SPAWN_ROT", spawnH);
                        API.setEntityData(respawnCar, "VehicleType", "Aircraft");
                        API.setEntitySyncedData(respawnCar, "Tailnumber", RandomString(4));
                        API.consoleOutput(name + " Respawned at: " + spawnPos);

                        API.setEntityData(respawnCar, "timerActive", false); return;
                    }
                    else if (vehicleType == null)
                    {
                        API.deleteEntity(Vehicular);
                    }
                }
                else
                {
                    API.deleteEntity(Vehicular);
                }
            }
        }
コード例 #25
0
 /// <summary>
 /// 客户端向服务器进行请求,请求字节数据
 /// </summary>
 /// <param name="customer">用户的指令头</param>
 /// <param name="send">发送的字节内容</param>
 /// <returns>带返回消息的结果对象</returns>
 public OperateResult <byte[]> ReadFromServer(NetHandle customer, byte[] send)
 {
     return(ReadFromServerBase(HslProtocol.CommandBytes(customer, Token, send)));
 }
コード例 #26
0
ファイル: VehicleManager.cs プロジェクト: enisn/TecoRP_GTMP
 private void API_onPlayerExitVehicle(Client player, NetHandle vehicle, int seat)
 {
     player.seatbelt = false;
 }
コード例 #27
0
 /// <summary>
 /// 发送字符串数据到服务器
 /// </summary>
 /// <param name="customer">用户自定义的标记数据</param>
 /// <param name="data">字符串数据</param>
 /// <exception cref="ArgumentNullException"></exception>
 /// <exception cref="SocketException"></exception>
 /// <exception cref="ObjectDisposedException"></exception>
 public void SendMessage(NetHandle customer, string data)
 {
     CoreSocket.SendTo(HslProtocol.CommandBytes(customer, Token, data), ServerEndPoint);
 }
コード例 #28
0
ファイル: VehicleManager.cs プロジェクト: enisn/TecoRP_GTMP
 private void API_onVehicleDoorBreak(NetHandle entity, int index)
 {
     API.setVehicleLocked(entity, false);
 }
コード例 #29
0
ファイル: hunter.cs プロジェクト: sLaiN1/ExampleResources
    public void roundstart()
    {
        var players = API.GetAllPlayers();

        if (players.Count == 0)
        {
            return;
        }

        API.DeleteEntity(breadcrumb);
        API.DeleteEntity(_quad);

        foreach (var c in _checkpoints)
        {
            API.DeleteEntity(c);
        }

        foreach (var c in _checkpointBlips)
        {
            API.DeleteEntity(c);
        }

        _checkpoints.Clear();
        _checkpointBlips.Clear();

        for (int i = 0; i < _checkpointPoses.Count; i++)
        {
            _checkpoints.Add(API.CreateMarker(1, _checkpointPoses[i], new Vector3(), new Vector3(),
                                                  /*new Vector3(10f, 10f, 3f)*/
                                              10f // TODO: Fix scales?
                                              , new Color(200, 255, 255, 0)));
            var b = API.CreateBlip(_checkpointPoses[i]);
            API.SetBlipColor(b, 66);
            _checkpointBlips.Add(b);
        }

        _quad = API.CreateVehicle(VehicleHash.Blazer, _quadSpawn, 0, 0, 0);

        animal = players[r.Next(players.Count)];
        var aBlip = API.Exported.playerblips.getPlayerBlip(animal);

        API.SetPlayerSkin(animal, PedHash.Deer);
        API.SetPlayerTeam(animal, TEAM_ANIMAL);
        API.SetBlipTransparency(aBlip, 0);
        API.SetEntityInvincible(animal, false);
        var spawnp = _animalSpawnpoints[r.Next(_animalSpawnpoints.Count)];

        API.SetEntityPosition(animal.Handle, spawnp);
        API.SetBlipSprite(aBlip, 141);
        API.SetBlipColor(aBlip, 1);

        API.SendChatMessageToPlayer(animal, "You are the animal! Collect all the checkpoints to win!");

        roundStart       = Environment.TickCount;
        lastIdleCheck    = Environment.TickCount;
        lastBreadcrumb   = Environment.TickCount;
        roundstarted     = true;
        lastIdlePosition = spawnp;

        if (players.Count > 3)
        {
            do
            {
                hawk = players[r.Next(players.Count)];
            } while (hawk == animal);
        }
        foreach (var p in players)
        {
            if (p == animal)
            {
                continue;
            }

            Spawn(p, p == hawk);
        }
    }
コード例 #30
0
ファイル: API.cs プロジェクト: Landrut/CherryMP
 internal void invokeOnEntityDataChange(NetHandle entity, string key, object oldValue)
 {
     onEntityDataChange?.Invoke(entity, key, oldValue);
 }