Aussie Cleetus
Members-
Content Count
138 -
Joined
-
Last visited
Everything posted by Aussie Cleetus
-
Neither of these are basic requests, despite them seeming to be. For Teleporting, you'll probably want the upcoming release of AdminTool which handles teleporting and much more (there are other versions out there, but the new release is quite nicely polished and easy to install). For the UI, that requires knowing how to create a client-side mod as well as a server-side mod. There is no easy way to do this.
-
the Server Documentation was updated, there is a line for steamQueryPort. It would be a good idea to add that field for people. This is the one that allows the server to be seen in the Game Browser.
-
For basic features, yes, but not for kill feed. Which is moot now anyway with so many alternatives available. I also had a good conversation with the creator about how he could even possibly implement a more secure way to provide that without needing the ftp option. Please don't think I'm ragging on it, as I expressed to Phillip, it's not him or the tool itself I don't trust in a scenario like that, it's the people who might attack his tool to gain back-door access to the servers. Again, yes I understand that is only required for a single feature, but that, to me, alone is enough to not use it. I would also advise others to not use that method, but if they choose to use the tools, I hope it works nicely for them :) I don't want to see admins having such a hard time doing basic things. So I applaud the efforts of everyone. I just think that some are overlooking security in haste of releasing.
-
It's not as if beguid to steamid online tools are available *sarcasm*. steamid (which is what plainID gives), is actually public information from a Steam account. It is your community url by default until you change it, so there is definitely no privacy issue if plainID is in logs.
-
I'm excited to see the work everyone is doing, but I'm against the FTP idea. Always will be just for security alone, there are alternate methods of getting the data from the server machine without needing FTP (even moreso if the server-side stuff is all open-source so anyone can see exactly what is going on for their own peace of mind - the server side can have plenty of filters and checks to prevent abuse of bad data sends). coreyhun, keep it up man! It's good to see so many different ways to approach things. It will be even better once they get through this stress test and eventually release the vehicles (beyond today's stress test). Fester808 - #4 is an excellent idea! (not that the others aren't, they are indeed great ideas too, but #4 especially)
-
So far, that specific code is being kept close to the chest of the creators. There are only a select handful of servers who have it, and I believe they are riding out the time a little bit before releasing, as it is a feature that helps drive users to their servers. Your best bet, is to do what they did. Spend hours going through the files and figuring it out.
-
There are a lot of people who don't trust cftools, so an alternative is not a bad thing to have out there. Especially if he is wise enough to NOT require an open FTP directly into your server root directory (the entire reason I made DaRT with ADM file reader). More options is good for everybody. There's no reason to stifle the guy from producing his own.
-
Need help with adding new structures
Aussie Cleetus replied to meninoaloprado's topic in General Discussion
cast the object with a name Object myObject; myObject = GetGame().CreateObject(..... myObject.SetRotation("0 0 0"); // Rotation is a Vector -
that's because in all programming in the history of programming, you cannot have 2 variables with the same name without major consequences. The easiest way to do multiples with above statement is to remove the vector spawnPos and manually add those into the CreateObject method, though that might get tedious. Bouncing an idea here: // THIS IS A THEORY, UNTESTED AND MAY NOT WORK. Object[] myBuildings; void CustomSpawnBuilding(string buildingName, vector buildingLocation, vector buildingRotation, int index) { myBuildings[index] = GetGame().CreateObject(buildingName, buildingLocation, false); myBuildings[index].SetRotation(buildingRotation); } // Usage: // CustomSpawnBuilding("Land_Wreck_Volha_Grey", "10719 6.7829 2450.65", "14.6 0 0", 0); // CustomSpawnBuilding("Land_Wreck_Volha_Grey", "10719 6.7829 2450.65", "41.2 0 0", 1); // CustomSpawnBuilding("Land_Wreck_Volha_Grey", "10719 6.7829 2450.65", "12.3 0 0", 2); // CustomSpawnBuilding("Land_Wreck_Volha_Grey", "10719 6.7829 2450.65", "2.2 0 0", 3); // CustomSpawnBuilding("Land_Wreck_Volha_Grey", "10719 6.7829 2450.65", "10.9 0 0", 4);
-
There is a detailed post already with almost the same title.. did you even look?
-
Sucks that you need to own A3 to get the tools
-
Sqlite files are locked to a single program when being used by the server. If you use both servers on the same file as suggested, only one server can access the database file. But through my thorough testing, it actually can cause loss if data on both servers. It is not coded to handle this scenario.
-
you should idiot-proof that by running a check on the input string to see if the final character is a backslash, if not, add it
-
!!! [CE][Hive] :: DB is not responding too long.
Aussie Cleetus replied to Mauricio Britto's topic in Servers
they are using SQL... just not MySQL, it's SQLite, a local light-weight counterpart. This error is generally cause either by something else trying to access the file (ie. using a bad method going around these forums to "hive" multiple servers together), or possibly a terribly slow hard drive? -
in the override of the init, would you not want to call super.OnInit()?
-
John, right now, there is not a supported or viable method of producing a Hive at the moment. The method that you are being recommended, is wildly outrageous and a terrible risk for one server or the other not working properly.
-
You really should stop suggesting people do this, it causes errors in the database.
-
// New Additional method to accompany my addItem method // Usage: AddPlayerClothes(player, "HelmetName", "GlassesName", "MaskName", "ShirtName", "VestName", "BeltName", "PantsName", "BootsName", "BackPackName", itemBs, itemEnt); // To not send an item to the player, make the string empty: "" (make sure to keep both quotes) void AddPlayerClothes(Playerbase _player=null, string _helmet="", string _glasses="", string _mask="", string _shirt="", string _vest="", string _belt="", string _pants="", string _boots="", string _backpack="", ItemBase _itemBs=null, EntityAI _itemEnt=null) { if (player != null && itemBs != null && itemEnt != null) { if (_helmet != "") { addItem(_itemEnt, _itemBs, _player, _helmet, 1, 0, -1); } if (_glasses != "") { addItem(_itemEnt, _itemBs, _player, _glasses, 1, 0, -1); } if (_mask != "") { addItem(_itemEnt, _itemBs, _player, _mask, 1, 0, -1); } if (_shirt != "") { addItem(_itemEnt, _itemBs, _player, _shirt, 1, 0, -1); } if (_vest != "") { addItem(_itemEnt, _itemBs, _player, _vest, 1, 0, -1); } if (_belt != "") { addItem(_itemEnt, _itemBs, _player, _belt, 1, 0, -1); } if (_pants != "") { addItem(_itemEnt, _itemBs, _player, _pants, 1, 0, -1); } if (_boots != "") { addItem(_itemEnt, _itemBs, _player, _boots, 1, 0, -1); } if (_backpack != "") { addItem(_itemEnt, _itemBs, _player, _backpack, 1, 0, -1); } } } void addItem(EntityAI itemEnt=null, ItemBase itemBs=null, PlayerBase player=null, string item_name="", int count=0, int stackSize=0, int invSlot=-1) { if (player != null && itemBs != null && itemEnt != null && item_name != "") { for (int i = 0; i < count; i++) { itemEnt = player.GetInventory().CreateInInventory(item_name); itemBs = ItemBase.Cast(itemEnt); if (stackSize > 0) { itemBs.SetQuantity(stackSize); } if (invSlot >= 0 || invSlot <= 9) { player.SetQuickBarEntityShortcut(itemEnt, invSlot, true); } } } } This may help some people. I've tried to add some defaults for fields and some basic fool-proofing.
-
yes, the XXXXXXXX is the steam64id to be completely honest, I doubt Bohemia put in multiple allowed case choices per option. If there is a common loadout, I would wrap that loadout in a method and then call the method for each of the players' steam64id case.
-
class CustomMission: MissionServer { override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { Entity playerEnt; playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player Class.CastTo(m_player, playerEnt); GetGame().SelectPlayer(identity, m_player); return m_player; } void CustomMission() { } override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { EntityAI primary; EntityAI itemEnt; EntityAI gun; ItemBase itemBs; EntityAI optic_attach; switch(player.GetIdentity().GetPlainId()) { // Admin 1 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "TTsKOJacket_Camo", 1, 0, -1); addItem(itemEnt, itemBs, player, "TTSKOPants", 1, 0, -1); addItem(itemEnt, itemBs, player, "JungleBoots_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "BallisticHelmet_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "ThinFramesGlasses", 1, 0, -1); addItem(itemEnt, itemBs, player, "SmershVestBackpack", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "TacticalGloves_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "TortillaBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 10, 0, -1); addItem(itemEnt, itemBs, player, "CombatKnife", 1, 0, -1); addItem(itemEnt, itemBs, player, "Rag", 3, 6, -1); addItem(itemEnt, itemBs, player, "Pot", 1, 2000, -1); addItem(itemEnt, itemBs, player, "BloodTestKit", 1, 0, -1); addItem(itemEnt, itemBs, player, "FirefighterAxe_Green", 1, 0, 0); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Green", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Green", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Green", 1, 1, 4); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Green", 1, 1, -1); addItem(itemEnt, itemBs, player, "Ammo_762x39", 1, 1, -1); addItem(itemEnt, itemBs, player, "KobraOptic", 1, 0, -1); addItem(itemEnt, itemBs, player, "Battery9V", 2, 0, -1); addItem(itemEnt, itemBs, player, "Matchbox", 1, 0, -1); primary = akmClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 1, true); break; // Admin 2 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "USMCJacket_Woodland", 1, 0, -1); addItem(itemEnt, itemBs, player, "USMCPants_Woodland", 1, 0, -1); addItem(itemEnt, itemBs, player, "JungleBoots_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "CowboyHat_green", 1, 0, -1); addItem(itemEnt, itemBs, player, "DesignerGlasses", 1, 0, -1); addItem(itemEnt, itemBs, player, "SmershVestBackpack", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "TacticalGloves_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "AssaultBag_Ttsko", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 10, 0, -1); addItem(itemEnt, itemBs, player, "CombatKnife", 1, 0, -1); addItem(itemEnt, itemBs, player, "Rag", 3, 6, -1); addItem(itemEnt, itemBs, player, "Pot", 1, 2000, -1); addItem(itemEnt, itemBs, player, "BloodTestKit", 1, 0, -1); addItem(itemEnt, itemBs, player, "FirefighterAxe_Green", 1, 0, 1); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 4); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 5); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 6); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, 7); addItem(itemEnt, itemBs, player, "Mag_AKM_30Rnd", 1, 1, -1); addItem(itemEnt, itemBs, player, "Ammo_762x39", 1, 1, -1); addItem(itemEnt, itemBs, player, "KobraOptic", 1, 0, -1); addItem(itemEnt, itemBs, player, "Battery9V", 1, 0, -1); addItem(itemEnt, itemBs, player, "Matchbox", 1, 0, -1); primary = akmClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 0, true); break; // Admin 3 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "M65Jacket_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "CargoPants_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "JungleBoots_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "BallisticHelmet_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "DesignerGlasses", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "HighCapacityVest_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "TacticalGloves_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "AliceBag_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 10, 0, -1); addItem(itemEnt, itemBs, player, "CombatKnife", 1, 0, -1); addItem(itemEnt, itemBs, player, "Rag", 3, 6, -1); addItem(itemEnt, itemBs, player, "Pot", 1, 2000, -1); addItem(itemEnt, itemBs, player, "BloodTestKit", 1, 0, -1); addItem(itemEnt, itemBs, player, "FirefighterAxe", 1, 0, 1); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Black", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Black", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_AKM_Drum75Rnd_Black", 1, 1, 4); addItem(itemEnt, itemBs, player, "Ammo_762x39", 1, 1, -1); addItem(itemEnt, itemBs, player, "KobraOptic", 1, 0, -1); addItem(itemEnt, itemBs, player, "Battery9V", 1, 0, -1); addItem(itemEnt, itemBs, player, "Matchbox", 1, 0, -1); primary = akmClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 0, true); break; // Admin 4 Loadout case "XXXXXXXX": addItem(itemEnt, itemBs, player, "SmershBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 2, 0, -1); addItem(itemEnt, itemBs, player, "StoneKnife", 1, 0, 1); addItem(itemEnt, itemBs, player, "Rag", 1, 6, 2); addItem(itemEnt, itemBs, player, "WoodAxe", 1, 0, 0); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, 0); break; // Admin 5 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "TacticalShirt_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "CargoPants_Green", 1, 0, -1); addItem(itemEnt, itemBs, player, "CombatBoots_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "BaseballCap_CMMG_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "DesignerGlasses", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "SmershVestBackpack", 1, 0, -1); addItem(itemEnt, itemBs, player, "HuntingBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "TacticalGloves_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 10, 0, -1); addItem(itemEnt, itemBs, player, "CombatKnife", 1, 0, -1); addItem(itemEnt, itemBs, player, "Rag", 1, 6, -1); addItem(itemEnt, itemBs, player, "FirefighterAxe_Green", 1, 0, 0); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "Compass", 1, 0, -1); addItem(itemEnt, itemBs, player, "OrienteeringCompass", 1, 0, -1); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 4); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 5); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 6); primary = usgClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 1, true); break; // Admin 6 Loadout case "XXXXXXXX": player.RemoveAllItems(); addItem(itemEnt, itemBs, player, "LeatherJacket_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "LeatherPants_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "HikingBoots_Brown", 1, 0, -1); addItem(itemEnt, itemBs, player, "LeatherStorageVest_Black", 1, 0, -1); addItem(itemEnt, itemBs, player, "Armband_Blue", 1, 0, -1); addItem(itemEnt, itemBs, player, "CowboyHat_darkBrown", 1, 0, -1); addItem(itemEnt, itemBs, player, "WorkingGloves_Brown", 1, 0, -1); addItem(itemEnt, itemBs, player, "FurImprovisedBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 2, 0, -1); addItem(itemEnt, itemBs, player, "StoneKnife", 1, 0, 1); addItem(itemEnt, itemBs, player, "Rag", 1, 6, 2); addItem(itemEnt, itemBs, player, "WoodAxe", 1, 0, 0); addItem(itemEnt, itemBs, player, "Compass", 1, 0, -1); addItem(itemEnt, itemBs, player, "OrienteeringCompass", 1, 0, -1); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 2); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 3); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 4); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 5); addItem(itemEnt, itemBs, player, "Mag_UMP_25Rnd", 1, 1, 6); primary = usgClass(player, itemBs, gun, itemEnt, optic_attach); itemBs = ItemBase.Cast(primary); player.SetQuickBarEntityShortcut(primary, 1, true); break; // Default Player Loadout default: addItem(itemEnt, itemBs, player, "SmershBag", 1, 0, -1); addItem(itemEnt, itemBs, player, "Pear", 2, 0, -1); addItem(itemEnt, itemBs, player, "StoneKnife", 1, 0, 1); addItem(itemEnt, itemBs, player, "Rag", 1, 6, 2); addItem(itemEnt, itemBs, player, "WoodAxe", 1, 0, 0); break; } } void addItem(EntityAI itemEnt, ItemBase itemBs, PlayerBase player, string item_name, int count, int stackSize, int invSlot) { for (int i = 0; i < count; i++) { itemEnt = player.GetInventory().CreateInInventory(item_name); itemBs = ItemBase.Cast(itemEnt); if (stackSize > 0) { itemBs.SetQuantity(stackSize); } if (invSlot >= 0 || invSlot <= 9) { player.SetQuickBarEntityShortcut(itemEnt, invSlot, true); } } } EntityAI akmClass(PlayerBase player, ItemBase itemBs, EntityAI gun, EntityAI itemEnt, EntityAI optic_attach) { gun = player.GetHumanInventory().CreateInHands("AKM"); gun.GetInventory().CreateAttachment("AK_WoodHndgrd"); gun.GetInventory().CreateAttachment("AK_Woodbttstck"); gun.GetInventory().CreateAttachment("AK_Suppressor"); optic_attach = gun.GetInventory().CreateAttachment("PSO1Optic"); optic_attach.GetInventory().CreateAttachment("Battery9V"); itemBs = ItemBase.Cast(gun); return gun; } EntityAI m4a1Class(PlayerBase player, ItemBase itemBs, EntityAI gun, EntityAI itemEnt, EntityAI optic_attach) { gun = player.GetHumanInventory().CreateInHands("M4A1_Green"); gun.GetInventory().CreateAttachment("M4_PlasticHndgrd"); gun.GetInventory().CreateAttachment("M4_OEBttstck"); gun.GetInventory().CreateAttachment("M4_Suppressor"); optic_attach = gun.GetInventory().CreateAttachment("ACOGOptic"); itemBs = ItemBase.Cast(gun); return gun; } EntityAI usgClass(PlayerBase player, ItemBase itemBs, EntityAI gun, EntityAI itemEnt, EntityAI optic_attach) { gun = player.GetHumanInventory().CreateInHands("UMP45"); gun.GetInventory().CreateAttachment("PistolSuppressor"); optic_attach = gun.GetInventory().CreateAttachment("M68Optic"); optic_attach.GetInventory().CreateAttachment("Battery9V"); itemBs = ItemBase.Cast(gun); return gun; } } void main() { Hive ce = CreateHive(); if ( ce ) ce.InitOffline(); Weather weather = g_Game.GetWeather(); weather.GetOvercast().SetLimits(0, 0); weather.GetRain().SetLimits(0, 0); weather.GetFog().SetLimits(0, 0); weather.GetOvercast().SetForecastChangeLimits(0, 0); weather.GetRain().SetForecastChangeLimits(0, 0); weather.GetFog().SetForecastChangeLimits(0, 0); weather.GetOvercast().SetForecastTimeLimits(0, 0); weather.GetRain().SetForecastTimeLimits(0, 0); weather.GetFog().SetForecastTimeLimits(0, 0); weather.GetOvercast().Set(0, 0, 0); weather.GetRain().Set(0, 0, 0); weather.GetFog().Set(0, 0, 0); weather.SetWindMaximumSpeed(15); weather.SetWindFunctionParams(0.1, 0.3, 50); } Mission CreateCustomMission(string path) { return new CustomMission(); } Added bonus in here is my (until now) unreleased AddItem Function to make it easier to add items to players. Allows choosing: number of stacks number of items per stack hotkey assignment for item (requires adding a single item instance for each hotkey desired - see how Magazines are added in the Admin Loadouts)
-
You're not emptying the person of gear before trying to add clothes. That alone will cause problems. When I get to my computer, I'll post an example of how I do custom loadouts for players based on their steam64id.
-
I personally use it for personalized spawn loadouts for Admins (including their identifying armband). This way if someone is on the coast and they are out West, they can take a quick trip to the coast to deal with the situation. As a PvE server, I find that it's important for admins to be able to quickly and relatively painlessly do so.
-
If you use BEC, there is config options for setting anyone in the Admins.xml file as priority to be able to login. All you would need to do is set them into that file and change the config. It might not allow all slots to be used when the VIPs are not around, but it guarantees they can get on.
-
if you try to use "name", the player has to set their name using Launch Parameters in Steam to the right things. Switch(player.GetIdentity().GetName()){ case "Redteam": //this player's name is "Redteam" so assign them to red team break; case "Blueteam": //this player's name is "Blueteam" so assign them to blue team break; default: //this player's name is not set in Steam Launch Parameters, we should probably assign a random team to them break; }