Jump to content

tissue901

Member
  • Content Count

    21
  • Joined

  • Last visited

  • Medals

Community Reputation

1 Neutral

About tissue901

  • Rank
    Private First Class

Recent Profile Visitors

1080 profile views
  1. I have a dedicated server running on Windows 2016 server that's hosted in a data center (1 GB line and all not some little server I'm running on my own personal computer). All of my friends can direct connect to the server just fine, but when I enter the IP address it doesn't come up. If I click on the friend's tab I see my server but when connecting it comes back with "Connecting failed." - not very descriptive (BIS please make your error messages more intuitive). The interesting thing is that one of the people I play with is my roommate and he's on the same network, plugged into the same router and he has no problems. Even if he's not connected to the server I cant see it. The weird thing is this has been happening for a few weeks. The first time it happened, I revalidated my game files integrities and could join once but then never again. I just got a new SSD and reinstalled windows from scratch which I thought would for sure fix the issue but its still happening I have also confirmed that the version number of Arma that my roommate is identical to mine. I also have all the same mods as him. I have turned off both my antimalware (Malware Bytes) and turned off my public/private windows firewall to see if that alleviated the problem but it didn't. I have switched between ethernet and wireless to see if that is the issue - nope. Any ideas because I haven't been able to join my server for 3 weeks? I know this topic has been discussed here before but none of the posts worked for me or were even resolved.
  2. tissue901

    Hellcat spotlight

    Ahh yeah, I was trying it during the day but it is static like some of the comments in the bug tracker said. What a shame would be so cool if this actually worked like it should. Also thanks pierremgi, that might work for what I'm trying to do.
  3. Does anyone know if the spotlight on the Hellcat is working? I just tried it and I can see the spotlight moving around but using the option "Searchlight on" there is no light that comes on. I'm looking to make a search mission and this is crucial to that. I've downloaded a few scripts that "mimic" a searchlight but I'm not a fan of how any of them work and most vanilla helicopters spotlights shine directly down and are not visible from the cockpit (my server is strictly first person). I found the bug reports on the Arma tracker and one comment says that they are broken but this was from 1+ years ago. Seems like it would be a simple fix if it is broken... https://feedback.bistudio.com/T68596
  4. This mission generates a RANDOM maze and places enemies guards and other props throughout it so every round is different. Several wall types are used such as concrete, tin and various shoot house walls. It can support anywhere from 1 player up to 21 players, with 1 to 3 teams and scales the size of the maze based on the number of players. There are also other configurable options to make every round unique: - Less Walls: Deletes most of the walls in the maze to make it more of a fun random CQB map. Great for quick games against friends. - No Guards: Turn off the spawning of AI so you and your friends can battle it out - Arsenal: Allow players to select their own loadouts - Pistols Only: Remove players and AI primary weapons - Night Mode: Some guards get flashlights, so do players. - NVGS: Equip players with NVGS - No Camera Task: Last man standing instead of win by getting the camera. Combine any of these options to create unique scenarios. They are used by enabling AI for the option in the multiplayer menu. While this mission can be played by 1 person only, it must be in a multiplayer setting. The basic premise of the mission is you play as one of 3 news organizations: CNN, WSJ or FOX. You must get a camera containing damning footage of PewDiePie at any cost and bring it back to your HQ and ruin his YouTube career. There are AI guards that are protecting the camera and you can spawn as one of them as well. I would like to point out this mission's storyline is a meme and should NOT be taken seriously. It is most fun when played with friends. This is a great training mission or a warmup before a big op. Lots of having to check your corners and being aware of every possible angle you can get shot from. If you have any suggestions let me know, I will be updating this as my squad uses it on a regular basis. Eventually, I may try to generate different stairs to make it multilevel or rooms throughout. Subscribe http://steamcommunity.com/sharedfiles/filedetails/?id=1137970591 More Pictures
  5. Hey Guys, I made a python script to automate updating my server and figured I'd share. I've only tested it on Python 3.6 but I think it would work for any version. Just update the directories and files section to where your stuff is located. The "Steam Workshop IDs.txt" file just contains the workshop item number and a human readable string which automatically gets changed to a lowercase name without spaces. It uses a symbolic link to add the mods to the server's addons folder instead of moving it so updating works without redownloading everything. I know theres a bunch of GUI server managers out there, but I don't like the complexity that adds and this way I can just SSH from any device to update/boot my server. Update.py import os import sys from subprocess import Popen, PIPE, CalledProcessError, DEVNULL, STDOUT, check_call import glob armaServerAppId = "233780" armaClientAppId = "107410" modsDirectory = "C:\\Users\\arma\\Desktop\\Arma\\Master\\addons\\" keysDirectory = "C:\\Users\\arma\\Desktop\\Arma\\Master\\keys\\" armaDirectory = "C:\\Users\\arma\\Desktop\\Arma\\Master" steamCMD = "C:\\Users\\arma\\Desktop\\steamcmd\\steamcmd.exe" steamContentDirectory = "C:\\Users\\arma\\Desktop\\steamcmd\\steamapps\\workshop\\content\\" + armaClientAppId + "\\" steamTempScript = "C:\\Users\\arma\\Desktop\\steamcmd\\tempUpdateScript.txt" steamAuth = "C:\\Users\\arma\\Desktop\\steamcmd\\auth.txt" workshopItems = "C:\\Users\\arma\\Desktop\\Arma\\Steam Workshop IDs.txt" userLogin = "" userPass = "" def updateServer(): print("Updating Server...") # Get the users login checkUserLogin() os.system(steamCMD + ' +login ' + userLogin + ' ' + userPass + ' +force_install_dir ' + armaDirectory + ' "+app_update ' + armaServerAppId + '" validate +quit') def checkUserLogin(): global userLogin global userPass if userLogin == "": userLogin = input("Steam> Username: ") if userPass == "": userPass = input("Steam> Password: ") def copyKeys(): for filename in glob.iglob(modsDirectory+'**\\*.bikey', recursive=True): os.system("xcopy " + filename + " " + keysDirectory + " /s /y") error = "" os.system('cls') try: with open(steamAuth) as f: for line in f: info = line.split(" ") if len(info) == 2: userLogin = info[0] userPass = info[1] except: pass while True: userInput = input("Main Menu \n1. Update Server\n2. Update Mods\n4. Update Keys\n4. Exit\n" + error + ">> ") error = "" if userInput == "1": updateServer() input("Press any key to continue...") os.system('cls') elif userInput == "2": # Get the users login checkUserLogin() # Clear the temp script file = open(steamTempScript, 'w') script = "@ShutdownOnFailedCommand 1\n" script += "@NoPromptForPassword 1\n" script += "login " + userLogin + " " + userPass + "\n" script += "force_install_dir " + armaDirectory + "\n" mods = {} # Loop through each item in the workshop file with open(workshopItems) as f: for line in f: modInfo = line.split(" ", 1) steamWorkshopId = modInfo[0].strip() modName = modInfo[1].strip() modFolder = "@"+modName.replace(" ", "_").lower() mods[steamWorkshopId] = {"name": modName, "folder": modFolder} script += 'workshop_download_item ' + armaClientAppId + ' ' + steamWorkshopId + ' validate\n' # Make a link to the downloaded content (way better than moving...) symLink = modsDirectory + modFolder if not os.path.exists(symLink): os.system('mklink /J ' + symLink + ' ' + steamContentDirectory + steamWorkshopId + '\n') script += "quit" file.write(script) file.close() # Run the script print("\n=====================================\nLogging into Steam...\n=====================================") with Popen(steamCMD + " +runscript " + steamTempScript, stdout=PIPE, bufsize=1, universal_newlines=True) as p: for line in p.stdout: line = line.strip() if line != "": if line.find("Downloading item") != -1: downloadingLine = line.split("Downloading item") if downloadingLine[0]: print(downloadingLine[0]) try: modIdLine = downloadingLine[1].strip().split(" ") steamWorkshopId = modIdLine[0] print("\n=====================================\nDownloading "+mods[steamWorkshopId]["name"] + " ["+str(steamWorkshopId)+"]...\n=====================================") except: pass else: print(line) # Automatically copy bikeys over print("\n=====================================\nCopying addon keys...\n=====================================") copyKeys() input("\nPress any key to continue...") os.system('cls') elif userInput == "3": # Search for any bikeys and copy them into keys folder copyKeys() input("Press any key to continue...") os.system('cls') elif userInput == "4": sys.exit(0) elif userInput == "": os.system('cls') else: error = "[ERROR] Unknown choice. Try again\n" Steam Workshop IDs.txt 450814997 CBA 463939057 ACE 708250744 ACEX 773131200 ACE Compat RHSAFRF 773125288 ACE Compat RHSUSAF 689845793 ACD 853743366 CUP Terrains CWA 583496184 CUP Terrains Core 583544987 CUP Terrains Maps 671539540 EM Buildings 753946944 Murshun Cigs 498740884 Shacktac 698078148 Spec4gear 696177964 VSM WARFIGHTERS ... and so on ...
  6. tissue901

    Arma 3 Units - Feedback thread

    Allow for more than 20 mods to be listed for a unit. We use around 27 and this restriction is pretty annoying. Also if you add more than 20 mods, the error message given back is straight json of all the mods you listed. It should be an error like "To many mods entered". Also if there was a way to link it directly to steam workshop so that you can bulk download mods, that would be awesome!
  7. This was solved. I moved my on kill listener out of the unit init box and into my initPlayerServer.sqf script.
  8. I have an end mission script that is supposed to show statistics on the screen once the mission is over. Ive defined the following function in "initPlayerLocal.sqf": OSAR_fnc_localEndMission = { systemChat "Ending the mission!"; ["End the mission!",0,0,5,1] call BIS_fnc_DynamicText; sleep 6; _this select 1 call BIS_fnc_endMission; }; In "endMission.sqf", which is called on a player killed event, I have the following: if !(isServer) exitWith {}; .. code to make _resultText .. [[_resultsText, _ending],"OSAR_fnc_localEndMission"] call BIS_fnc_MP; Nothing however is displayed. I know its getting to this point where the function should be called because if I substitute that out for this code, I see the systemChat: [{systemChat "End mission!";},"BIS_fnc_spawn",true,true] call BIS_fnc_MP; No errors come up either, just nothing runs. Any idea on why this code isnt running? My only thought is that "OSAR_fnc_localEndMission" isnt actually being defined for some reason for the client, but its in the initPlayerLocal.sqf so it should be available. I was originally trying to modify the BIS_fnc_spawn code but I couldnt figure out how to pass the _resultText to it.
  9. I have placed a billboard in my map and in the init box I put the following command: this setObjectTexture [0,"billboard_1.paa"]; In the editor if I go to "Play -> Play Multiplayer", I can see the texture and everything works. When I export my PBO and transfer it to my dedicated server I get the following error: 6:19:07 Picture billboard_1 not found Is there a special way I have to package my textures with the PBO? Do I need to copy them over to my dedicated server in some way?
  10. I'm really dumb... When I was picking which pistol to give them, I never actually gave them ammo as I tried assigning the pistol as the ammo: _pistol = _gunInfo select 0; _ammo = _gunInfo select 0; This is what you get for trying to code at 4am. Thanks for helping me narrow it down!
  11. Hmm, interesting I give them the same weapon as me then they will fire back so I think you're correct on that. Is there anyway I can disable their decision making of this "hey this other guy has a better gun"? Maybe with disableAI?
  12. Im not spawning them in the civilian group, they are being created under resistance and I just am changing their loadout to look like a civilian. createCenter resistance; _grp = createGroup resistance; Also if I killed 15 of them the other ones just still sit there staring at me... I just don't get what is going on at all. I could upload my mission file if someone with APEX could take a look at it.
  13. I am bluefor. Spawning an independent with a gun through the editor and they will shoot at me, but the civilians will just stare at me: http://zyphox.com/arma/bluefor.png http://zyphox.com/arma/stare.png
  14. Sorry I forgot to mention that I do have them set to enemy. Originally I was setting it in code to change the team relations based on certain events: if([resistance, west] call BIS_fnc_sideIsFriendly) then { resistance setFriend [west, 0]; west setFriend [resistance, 0]; }; Even if I spawn them as EAST, and the player as WEST, they all come up on the WEST team and wont fight me back. Here is my updated code: init.sqf if !(isServer) exitWith {}; NUM_WAYPOINTS = 4; CC_PROBABILITY = 1; CC_MAX_SHOTS = 15; shotsFired = 0; // Specify where spawns are and how many citizens [name, radius, # civs] _civilianSpawn = [["civspawn1",30,20]]; // Setup citizen clothing _cuniforms = ["TRYK_SUITS_BLK_F","U_C_Poor_1","U_PMC_GrnPolo_BgPants","U_PMC_WhtPolo_BgPants","U_PMC_RedPlaidShirt_DenimCords","U_PMC_BrnPolo_BluPants","U_PMC_BluePlaidShirt_BeigeCords","U_PMC_BluTShirt_SJeans","U_PMC_BlckPolo_BluPants","U_PMC_BlckPolo_BgPants","U_PMC_BgPolo_GrnPants","TRYK_SUITS_BR_F","TRYK_U_B_Denim_T_BK","TRYK_U_B_RED_T_BR","TRYK_U_B_BLK_T_BK","TRYK_U_pad_j","TRYK_U_denim_jersey_blk","TRYK_shirts_DENIM_od","TRYK_shirts_DENIM_WHB","TRYK_shirts_DENIM_WH","TRYK_shirts_DENIM_RED2","TRYK_shirts_DENIM_R","TRYK_shirts_DENIM_BWH","TRYK_shirts_DENIM_BK","TRYK_shirts_DENIM_ylb","TRYK_U_B_PCUGs_gry","TRYK_U_B_PCUGs_OD_R","TRYK_U_B_BLK_TAN_2","TRYK_U_B_C02_Tsirt","U_C_Man_casual_5_F","U_C_Man_casual_4_F","U_C_Man_casual_6_F","U_C_man_sport_2_F","U_C_man_sport_3_F","U_C_man_sport_1_F","U_Rangemaster","U_Marshal","U_C_Journalist","U_OrestesBody","U_BG_Guerilla2_3","U_BG_Guerilla2_1","U_BG_Guerilla2_2","U_Competitor","U_C_Poloshirt_tricolour","U_C_Poloshirt_stripped","U_C_Poloshirt_salmon","U_C_Poloshirt_redwhite","U_C_Poloshirt_burgundy","U_C_Poloshirt_blue","U_C_Man_casual_1_F","U_C_Man_casual_3_F","U_C_Man_casual_2_F","U_I_C_Soldier_Bandit_5_F","U_I_C_Soldier_Bandit_2_F","U_I_C_Soldier_Bandit_1_F","U_I_C_Soldier_Bandit_4_F","rhs_uniform_df15_tan","rhs_uniform_df15"]; _cgoggles = ["G_Aviator","murshun_cigs_cig2","G_Shades_Black","G_Shades_Blue","G_Spectacles","G_Sport_Red","G_Sport_Greenblack","G_Squares_Tinted","G_Spectacles_Tinted","TRYK_Beard_BK","TRYK_Beard_BW","TRYK_Beard3"]; _cheadgear = ["VSM_Beanie_Black","VSM_Beanie_OD","VSM_Beanie_Tan","H_Bandanna_gry","H_Bandanna_blu","H_Bandanna_surfer","rhsgref_bcap_specter","H_Capbw_pmc","H_Cap_pmc","H_Booniehat_rgr","H_Booniehat_khk","H_Cap_grn_BI","H_Cap_blk","H_Cap_blu","H_Cap_blk_CMMG","H_Cap_grn","H_Cap_blk_ION","H_Cap_red","H_Cap_surfer","H_Cap_usblack","H_Cap_tan","H_Hat_blue","H_Hat_brown","H_Hat_tan","H_Hat_checker","H_StrawHat","H_Capbw_tan_pmc","TRYK_r_cap_blk_Glasses","TRYK_r_cap_od_Glasses","TRYK_r_cap_tan_Glasses"]; sleep 1; // Ensure all sides are setup createCenter resistance; // Loop through each spawn and create civilians { // Make sure we have 3 parameters if(count _x == 3) then { _spawnName = _x select 0; _spawnRadius = _x select 1; _spawnNumber = _x select 2; for "_civId" from 0 to _spawnNumber do { // Create a new group for every civilian _grp = createGroup resistance; // Make them fire at will _grp setCombatMode "RED"; _isCC = random 1 > 1 - CC_PROBABILITY; _randomSpawnPoint = [getMarkerPos _spawnName, _spawnRadius, random 360] call BIS_fnc_relPos; // Create the unit at the random position on the insurgents side _unitType = if(_isCC) then [{"I_G_Soldier_F"}, {"I_G_Soldier_lite_F"}]; _civilian = _grp createUnit [_unitType, _randomSpawnPoint,[],1,""]; [_civilian] joinSilent _grp; _grp selectLeader _civilian; if(_isCC) then { _civilian setVariable ["_shotsBeforeDrawing", random CC_MAX_SHOTS, true]; }; // Generate some random waypoints so they walk around aimlessly for "_waypointId" from 0 to NUM_WAYPOINTS do { _waypoint = _grp addWaypoint [[_civilian, random _spawnRadius, random 360] call BIS_fnc_relPos,0]; _waypoint setWaypointBehaviour "AWARE"; _waypoint setWaypointSpeed "LIMITED"; _waypoint setWaypointType "MOVE"; if(NUM_WAYPOINTS == _waypointId) then { _waypoint setWaypointType "CYCLE"; } }; // Remove defaults removeAllWeapons _civilian; removeAllItems _civilian; removeAllAssignedItems _civilian; removeUniform _civilian; removeVest _civilian; removeBackpack _civilian; removeHeadgear _civilian; removeGoggles _civilian; // Assign Random Clothes _civilian forceAddUniform selectRandom _cuniforms; if(random 1 > .5) then { _civilian addHeadgear selectRandom _cheadgear; }; if(random 1 > .5) then { _civilian addGoggles selectRandom _cgoggles; }; { _x globalChat format["SPAWN CITIZEN | side %1 faction %2", side _civilian, faction _civilian]; } forEach allPlayers; }; } } forEach _civilianSpawn; if(!isDedicated) then { { _x addEventHandler ["fired", {_this execVM "concealCarry.sqf"}]; } forEach allPlayers; }; concealCarry.sqf if !(isServer) exitWith {}; _player = _this select 0; _list = position _player nearObjects ["I_G_Soldier_F", 25]; _cguns = [["RH_g17","RH_17Rnd_9x19_g17"],["rhsusf_weap_m9","rhsusf_mag_15Rnd_9x19_JHP"],["hgun_Rook40_F","16Rnd_9x21_Mag"],["rhs_weap_makarov_pm","rhs_mag_9x18_8_57N181S"],["RH_p226","RH_15Rnd_9x19_SIG"],["RH_fn57","RH_20Rnd_57x28_FN"]]; if(count _list > 0) then { if([resistance, west] call BIS_fnc_sideIsFriendly) then { resistance setFriend [west, 0]; west setFriend [resistance, 0]; }; { private _shotsBeforeDrawing = _x getVariable "_shotsBeforeDrawing"; if(!isNil "_shotsBeforeDrawing") then { { _x globalChat format["NEAR OBJECTS | side civ %1 faction civ %2 | side player %3 faction player %4", side _x, faction _x, side _player, faction _player]; } forEach allPlayers; if(_shotsBeforeDrawing > 0) then { if(_this select 3 == "Single") then { _x setVariable ["_shotsBeforeDrawing", _shotsBeforeDrawing - .5, true]; } else { _x setVariable ["_shotsBeforeDrawing", _shotsBeforeDrawing - .1, true]; }; } else { _gunInfo = selectRandom _cguns; _pistol = _gunInfo select 0; _ammo = _gunInfo select 0; _x addWeapon _pistol; _x addItemToUniform _ammo; _grp = group _x; { deleteWayPoint _x; } forEach waypoints _grp; _wp = _grp addWaypoint [position _x, 100]; _wp setWaypointType "HOLD"; _wp setWaypointStatements ["true", ""]; _wp setWaypointSpeed "limited"; _wp setWaypointBehaviour "COMBAT"; // Make em a little quicker _x setSkill ["aimingspeed", 0.3]; _x setSkill ["spotdistance", 1]; _x setSkill ["aimingaccuracy", 0.2]; _x setSkill ["aimingshake", 0.1]; _x setSkill ["spottime", 1]; _x setSkill ["commanding", 0.2]; _x setSkill ["general", 1]; _x setSkill ["courage", 1]; _x allowFleeing 0; }; }; } forEach _list; }; Basically this makes civilians have the chance of drawing a pistol if they are shot at enough which is working. Its just they wont fight back and appear to be on my team. In the init.sqf you'll see I have a globalChat call that prints the side of the civilian spawned. Here it is correct: But later on, when I fire my gun it shows that the citizen is on the same team as me, and in the picture he is running away from me. I'm pulling my hair out of this because it doesnt make any sense to me. I can follow them as much as I want and they never fire back.
  15. I have created a script that will randomly spawn units, give them a random spawn point within a radius from a marker, and then add 4 random waypoints to randomly walk around. My issue is that all the units I create are showing to be on the team of the player which makes no sense. I would like them to fight back when I give them a gun. Here is part of my code: // Ensure all sides are setup createCenter resistance; sleep 5; // Loop through each spawn and create civilians { // Make sure we have 3 parameters if(count _x == 3) then { _spawnName = _x select 0; _spawnRadius = _x select 1; _spawnNumber = _x select 2; for "_civId" from 0 to _spawnNumber do { // Create a new group for every civilian _grp = createGroup resistance; // Make them fire at will _grp setCombatMode "RED"; _isCC = random 1 > 1 - CC_PROBABILITY; _randomSpawnPoint = [getMarkerPos _spawnName, _spawnRadius, random 360] call BIS_fnc_relPos; // Create the unit at the random position on the insurgents side _unitType = if(_isCC) then [{"I_G_Soldier_F"}, {"I_G_Soldier_lite_F"}]; _civilian = _grp createUnit [_unitType, _randomSpawnPoint,[],1,""]; [_civilian] join _grp; _grp selectLeader _civilian; if(_isCC) then { _civilian setVariable ["_shotsBeforeDrawing", random CC_MAX_SHOTS, true]; }; // Generate some random waypoints so they walk around aimlessly for "_waypointId" from 0 to NUM_WAYPOINTS do { _waypoint = _grp addWaypoint [[_civilian, random _spawnRadius, random 360] call BIS_fnc_relPos,0]; _waypoint setWaypointBehaviour "AWARE"; _waypoint setWaypointSpeed "LIMITED"; _waypoint setWaypointType "MOVE"; if(NUM_WAYPOINTS == _waypointId) then { _waypoint setWaypointType "CYCLE"; } }; // Remove defaults removeAllWeapons _civilian; removeAllItems _civilian; removeAllAssignedItems _civilian; removeUniform _civilian; removeVest _civilian; removeBackpack _civilian; removeHeadgear _civilian; removeGoggles _civilian; // Assign Random Clothes _civilian forceAddUniform selectRandom _cuniforms; if(random 1 > .5) then { _civilian addHeadgear selectRandom _cheadgear; }; if(random 1 > .5) then { _civilian addGoggles selectRandom _cgoggles; }; { _x globalChat format["side %1 %2", side _civilian]; } forEach allPlayers; }; } } forEach _civilianSpawn; I have a globalPrint statement in here and it seems to report the correct side for the _civilian variable. Issue is later I get all objects in a radius from me, and that shows that they are on my team. I also believe they are on my team because they dont shoot back at me, I can be standing right next to them, and they will just run away. if !(isServer) exitWith {}; _player = _this select 0; _list = position _player nearObjects ["I_G_Soldier_F", 25]; if(count _list > 0) then { { { _x globalChat format["side %1 %2", side _x, side _player]; } forEach allPlayers; } forEach _list; };
×