Destructible bases in MP
-
first of all there are no npc’s where no player is meaning the cpu does not care about something you can’t see/do not recieve.
also you can make some invisible and hitboxless base that has docking points and is stationed just inside the visual shape. the visual shape you make a child of the invisible part so you can destroy the base and make it disappear but certain starships still can dock with the base using the invisible part with its docking HPs.
ofc this workaround creates only a visual effect while the base remains. therefore neither issues appear nor hacks are needed. -
About patrol crash:
Raise this value(and no crashes should happen):25000000f in content.dll, 0x??????, 0x1195D4 = square of the distance from the end of the patrol_path to the object over which patrol_path NPCs won't dock with it (so far tested only with jumpgates; raising this may prevent PP crashes?)
Using FLHook I guess it’s quite possible to prevent player undock from a destroyed base crash.
The problem: after an object that has destroy_root = true line in fuse code is destroyed, it will immediately reappear and will be invincible for the player who has just logged in or for you if you try to respawn.
-
Looks like completely works at the server-side
Details later -
Works totally at the server side!
No client modding
Change code of your system ini file, for example st04.ini:; Our total destructible base :) [Object] nickname = ST04_02 pos = -6560, 0, -2900 ids_name = 501054 ids_info = 501055 dock_with = ST04_02_Base base = ST04_02_Base rotate = 0, 90, 0 reputation = gd_z_grp archetype = gas_miner_old ; unique archetype, or players may crash server from other systems behavior = NOTHING voice = atc_leg_m01 space_costume = br_brighton_head, pl_male1_peasant_body difficulty_level = 19 loadout = gas_miner_old_co_01 ; loadout must be from unique archetype gas_miner_old or server will crash pilot = pilot_solar_hardest ; This section must be after your Base section ; or player will spawn always at the planet [Object] nickname = ST04_planet_1 ids_name = 501001 ids_info = 525186 spin = 0, 0.001000, 0 rotate = 0, 0, 0 pos = 11462, 0, 18763 archetype = planet_desored_1500 atmosphere_range = 1800 burn_color = 255, 222, 160 archetype = depot ; dockable arhectype base = ST04_02_Base ; we will respawn from this planet after the base total destruction dock_with = ST04_02_Base ; tells to the server the base is still dockable ;) ; You may destroy all bases in system, so simply add oter bases in the list ; base = ST04_nX_base ; dock_with = ST04_nX_base ; base = ST04_nY_base ; dock_with = ST04_nY_base ; base = ST04_nZ_base ; dock_with = ST04_nZ_base ;..... ; base = ST04_nN_base ; dock_with = ST04_nN_base
-
Archetype must have cmp with dockable hardpoint.
Fuse must have death fuse and destroy root.
Respawn only after server restart (with Flak FLHook - dunno)Better to use unique archetype, for example gas_miner_old
In solararch.ini it looks like
nickname = gas_miner_old ... blahblahblah ... docking_sphere = jump, HpDockMountC, 205.500000 ; for all types of ships docking_sphere = jump, HpDockMountD, 205.500000 ; -//- docking_sphere = jump, HpDockMountE, 205.500000 ; -//- docking_sphere = jump, HpDockMountF, 205.500000 ; -//- docking_sphere = jump, HpDockMountG, 205.000000 ; -//- hit_pts = 3500000 ; it must be good for caps :) fuse = fuse_docking_ring, 0.000000, 1 ; death fuse with destroy root explosion_arch = explosion_docking_ring ; simple explosion
I have updated the code to the better version
-
Don’t these bases stay destroyed, and get reconstructed when FLServer is restarted?
-
Vital wrote:
And what about those players who logs in after base destruction?Will the base be indestructible for them?
How did you manage to solve this problem?
Yep, indestructible red base not working for dock and undock and did not shoot - immediately obvious that it was dead.
For full mod need to programm client-server hook.
Don’t these bases stay destroyed, and get reconstructed when FLServer is restarted?
That is what I’m trying to Vital to say
-
Last server-side research:
- “docking_fixture” is better
- Flak’s FLHook regenerates destroyed base earlier than server restart
-
seems wee have that problem to
you kill the base and then no one can dock
i have the settings in hook to regen them
but seems that something not working right
i talked with motah about it but he dosent know why ethier
seems when you shoot the base it blows up insted of just blowing out smoke and and doing the sound efects
so enyone ealse found a fix ??? -
Partial variant, without destroy_root:
Works at server side tooSystem:
[Object] nickname = ST04_02 pos = -6560, 0, -2900 ids_name = 501054 ids_info = 501055 dock_with = ST04_02_Base base = ST04_02_Base rotate = 0, 90, 0 reputation = gd_z_grp archetype = space_freeport01 behavior = NOTHING voice = atc_leg_m01 space_costume = br_brighton_head, pl_male1_peasant_body difficulty_level = 19 loadout = space_freeport01_co_03 pilot = pilot_solar_hardest
SolarArch:
[Solar] nickname = space_freeport01 ... blahblahblah ... type = STATION ... blahblahblah ... destructible = true hit_pts = 3500000 fuse = fuse_gas_collector_burning, 0.000000, 17325 ; fuses without destroy_root fuse = miningbase_small_ice_burning_fuse, 0, 1 ; -//- fuse = station_burning_fuse, 0.000000, 17325 ; -//- fuse = fuse_suprise_drop_loot, 0.000000, 3590 ; -//- fuse = fuse_gas_miner_burning, 0.000000, 17325 ; -//- fuse = fuse_space_arch_burning, 0.000000, 1 ; -//- fuse = freeport7_main_fuse1, 0.000000, 1 ; -//-
-
oops found a bug once the base has been destroyed
and on the rapair mode it dosent reset when its hit again
so im geting multiple console messages
saying the base has been destroyed
need to put a reset in there
have to wait on motah see whats the best way -
Repair mode = repair gun? Respawn timeout?
-
its needing to default back to that
AlternateRepairTime=360
if it repairing and it get hit again
othere wise it continuse to repair
and you get multiple killswchar_t wszBuf2[1024]; wstring Basename = HkGetWStringFromIDS(Universe::get_base(iID)->iBaseIDS); wstring Playername = Players.GetActiveCharacterName(iClientIDBy); swprintf(wszBuf2, L"basedestroyed=%s by=%s",(Basename).c_str() ,(Playername).c_str()); HkMsgU(wszBuf2);
add that to the end of void BaseDestroyed
im using 1.6.7
when it starts to repair shoot in you see what i mean -
Which is your serv - i wanna play :)))