internal void invokeColShapeExit(ColShape shape, NetHandle vehicle) { onEntityExitColShape?.Invoke(shape, vehicle); }
public void setPlayerBlip(Client player, NetHandle blip) { API.setEntitySyncedData(player, "PLAYERBLIPS_MAIN_BLIP", blip); }
internal TextLabel(ServerAPI father, NetHandle handle) : base(father, handle) { }
private void API_onPlayerEnterVehicle(Client player, NetHandle vehicle) { UpdateBlipForVehicle(vehicle); }
/// <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))); }
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!"); } } } }
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? }
public void attachTo(NetHandle entity, string bone, Vector3 offset, Vector3 rotation) { Base.attachEntityToEntity(this, entity, bone, offset, rotation); }
internal Entity(ServerAPI father, NetHandle handle) { Base = father; this.handle = handle; }
internal void invokePlayerPickup(Client pickupee, NetHandle pickup) { onPlayerPickup?.Invoke(pickupee, pickup); }
internal void invokePlayerDeath(Client player, NetHandle netHandle, int weapon) { onPlayerDeath?.Invoke(player, netHandle, weapon); }
internal void invokePickupRespawn(NetHandle pickup) { onPickupRespawn?.Invoke(pickup); }
internal void invokePlayerExitVeh(Client player, NetHandle veh) { onPlayerExitVehicle?.Invoke(player, veh); }
internal void invokeVehicleDeath(NetHandle vehicle) { onVehicleDeath?.Invoke(vehicle); }
/// <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))); }
private void API_onPlayerExitVehicle(Client player, NetHandle vehicle) { Anticheat.playerLeftVehicle(player); }
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); }
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(); }
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); }
public bool IsVehicleCoveredByThisLicense(NetHandle vehicleHandle) { Vehicle veh = API.shared.getEntityFromHandle <Vehicle>(vehicleHandle); return(IsVehicleCoveredByThisLicense((VehicleHash)veh.model)); }
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; } }
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); } }
/// <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))); }
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); } } }
/// <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))); }
private void API_onPlayerExitVehicle(Client player, NetHandle vehicle, int seat) { player.seatbelt = false; }
/// <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); }
private void API_onVehicleDoorBreak(NetHandle entity, int index) { API.setVehicleLocked(entity, false); }
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); } }
internal void invokeOnEntityDataChange(NetHandle entity, string key, object oldValue) { onEntityDataChange?.Invoke(entity, key, oldValue); }