I try to create clip based weapon mechanics.
I create every clip as object "class new_clip {definition;}"
If I remember correctly, all objects, thinkers and actors removes from memory after changing map, if such objects, thinkers and actors was created on previous map.
And now I think "how transfer such object between maps?".
Transfer object between maps
Moderator: GZDoom Developers
Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
-
- Posts: 360
- Joined: Mon May 08, 2017 3:23 am
- Graphics Processor: Intel with Vulkan/Metal Support
- Location: The Netherlands
Re: Transfer object between maps
Storing info of the actor in global variable(s) and spawn identical actor again when entering the new level is possible.
-
- Posts: 1605
- Joined: Mon Jun 12, 2017 12:57 am
Re: Transfer object between maps
This is the only way, dance around world load/unload events?
-
- Posts: 360
- Joined: Mon May 08, 2017 3:23 am
- Graphics Processor: Intel with Vulkan/Metal Support
- Location: The Netherlands
Re: Transfer object between maps
If I'm well-informed, the player with his inventory is the only actor that is recreated automatically when crossing a level. All others are history
(except when it's a hub and you go back to the same map, but that's something else).
So I wouldn't know how to do it differently; luckily you can choose between acs global vars and zscript global thinkers (I prefer the latter) to save stuff.

So I wouldn't know how to do it differently; luckily you can choose between acs global vars and zscript global thinkers (I prefer the latter) to save stuff.
-
- Admin
- Posts: 6166
- Joined: Thu Feb 26, 2004 3:02 pm
- Preferred Pronouns: He/Him
Re: Transfer object between maps
Inventory items can have the +INVENTORY.PERSISTENTPOWER flag (explanation: This item is kept when travelling between levels, even outside of a hub). I think ammo and weapons can use this to preserve their custom variables since they're subclasses of Inventory. I use this on the calorie tracker and messkit in HD-Scavenger and it seems to keep everything properly.


-
- Posts: 1605
- Joined: Mon Jun 12, 2017 12:57 am
Re: Transfer object between maps
But it count as object. Пzdoom cant save similar items as separated items, only stacking it up.
I mean, gzdoom store multiple "bullet clip" class as "bullet clip: amount in inventory 3/5/7/167841234346", depending of how much times player picked up such item.
Now I have one inventory "clip dummy" inside of which I store and create all ponters to "actual clip" objects, which then used by weapon for shooting/reloading/etc.
I mean, gzdoom store multiple "bullet clip" class as "bullet clip: amount in inventory 3/5/7/167841234346", depending of how much times player picked up such item.
Now I have one inventory "clip dummy" inside of which I store and create all ponters to "actual clip" objects, which then used by weapon for shooting/reloading/etc.
-
- Posts: 9696
- Joined: Sun Jan 04, 2004 5:37 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): Debian Bullseye
- Location: Gotham City SAR, Wyld-Lands of the Lotus People, Dominionist PetroConfederacy of Saudi Canadia
Re: Transfer object between maps
The way I do it is to have a dynamic array variable on the inventory actor that tracks the amounts on each clip, then create a function that ensures that the dynamic array's size is the same as the actor's amount, then call that function anytime the clip amount information is accessed.
Keep in mind: every inventory on the player is a single actor with an amount defined, so your carrying 1, 20 or 600 cells is just one "Cell" actor that's owned by the player with its "amount" variable set to 1, 20 or 600.
Keep in mind: every inventory on the player is a single actor with an amount defined, so your carrying 1, 20 or 600 cells is just one "Cell" actor that's owned by the player with its "amount" variable set to 1, 20 or 600.
-
- Posts: 1605
- Joined: Mon Jun 12, 2017 12:57 am
Re: Transfer object between maps
Problem is that I try to...too literally transfer clip from real life.
Like, weight, size, volume, density, scrapes and another conditions. Like, some mags wedge after 15 bullets, some can...accommodate 7 bullets, although in technical passport black on white write "capacity eight thousand hundred millions bullets". Plus amount of clip itself, like or ten 30-bullets clip max, or five 50-bullets clip, or one bullet belt with 2000 bullets in it.
I dont know how to check it all from one single item.
Only create hungred of "class clip : base clip.... class clip1 : base clip......" entry in zscript.
Like, weight, size, volume, density, scrapes and another conditions. Like, some mags wedge after 15 bullets, some can...accommodate 7 bullets, although in technical passport black on white write "capacity eight thousand hundred millions bullets". Plus amount of clip itself, like or ten 30-bullets clip max, or five 50-bullets clip, or one bullet belt with 2000 bullets in it.
I dont know how to check it all from one single item.
Only create hungred of "class clip : base clip.... class clip1 : base clip......" entry in zscript.