ACE Generators: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
ACE Generators | |||
<code> | <code> | ||
28282 Linkable Monster Gen - 10 Sec | 28282 Linkable Monster Gen - 10 Sec | ||
15274 Linkable Monster Gen - 1 Min | 15274 Linkable Monster Gen - 1 Min | ||
24129 Linkable Monster Gen - 2 Min | 24129 Linkable Monster Gen - 2 Min | ||
07923 Linkable Monster Gen - 3 Min | 07923 Linkable Monster Gen - 3 Min | ||
07932 Linkable Monster Gen - 4 Min | 07932 Linkable Monster Gen - 4 Min | ||
07924 Linkable Monster Gen - 5 Min | 07924 Linkable Monster Gen - 5 Min | ||
04219 Linkable Monster Gen - 7 Min | 04219 Linkable Monster Gen - 7 Min | ||
07925 Linkable Monster Gen - 10 Min | 07925 Linkable Monster Gen - 10 Min | ||
03955 Linkable Monster Gen - 15 Min | 03955 Linkable Monster Gen - 15 Min | ||
07926 Linkable Monster Gen - 20 Min | 07926 Linkable Monster Gen - 20 Min | ||
Line 14: | Line 28: | ||
15759 Linkable Item Gen - 10 Sec | 15759 Linkable Item Gen - 10 Sec | ||
05085 Linkable Item Gen - 25 Sec | 05085 Linkable Item Gen - 25 Sec | ||
04142 Linkable Item Gen - 2 Min | 04142 Linkable Item Gen - 2 Min | ||
RipleyToday at 12:03 PM | RipleyToday at 12:03 PM | ||
rate can be increase by enabling the override_encounter_spawn_rates option and then changing encounter_delay and encounter_regen_interval | rate can be increase by enabling the override_encounter_spawn_rates option and then changing encounter_delay and encounter_regen_interval | ||
can try encounter_delay at 300 and encounter_regen_interval at 60 for basically a spawn every 5 mins for the overworld generators | can try encounter_delay at 300 and encounter_regen_interval at 60 for basically a spawn every 5 mins for the overworld generators | ||
Line 32: | Line 50: | ||
so things will take 800 seconds to respawn, but the regen interval provides a small amount of rng/sync to it | so things will take 800 seconds to respawn, but the regen interval provides a small amount of rng/sync to it | ||
with that generator, things will take a minimum of 800 seconds to respawn, and a maximum of 860 seconds | with that generator, things will take a minimum of 800 seconds to respawn, and a maximum of 860 seconds | ||
Line 46: | Line 65: | ||
RipleyToday at 12:37 PM | RipleyToday at 12:37 PM | ||
set to 0 | set to 0 | ||
regen that is | regen that is | ||
whenever you don't want regen, its always 0 | whenever you don't want regen, its always 0 | ||
delay is for how long a profile can hold the slot it spawned after its been killed | delay is for how long a profile can hold the slot it spawned after its been killed | ||
DridToday at 12:41 PM | DridToday at 12:41 PM | ||
noted on that. Ill clean up those other gens | noted on that. Ill clean up those other gens | ||
RipleyToday at 12:41 PM | RipleyToday at 12:41 PM | ||
so you've got 4/4 and you have 5 profiles. each profile is 1/1 with a delay of 300. it will spawn 4 of those profiles and if one of them is killed, the 5th profile won't be immediately selected because the slot is still being held through the delay. once the delay is over, ONE of the two unspawned will be selected | so you've got 4/4 and you have 5 profiles. each profile is 1/1 with a delay of 300. it will spawn 4 of those profiles and if one of them is killed, the 5th profile won't be immediately selected because the slot is still being held through the delay. once the delay is over, ONE of the two unspawned will be selected | ||
Line 58: | Line 85: | ||
GeneratorDestructionType = Generator's destruction | GeneratorDestructionType = Generator's destruction | ||
GeneratorEndDestructionType = Generator's disabled | GeneratorEndDestructionType = Generator's disabled | ||
GeneratorEndDestructionType is fired when Generator is Disabled | GeneratorEndDestructionType is fired when Generator is Disabled | ||
disabling coming via event offs, day/night switches, time end reached | disabling coming via event offs, day/night switches, time end reached | ||
Line 110: | Line 139: | ||
in the above link, the first four are static objects | in the above link, the first four are static objects | ||
they never respawn and were pcapped in the static guid range | they never respawn and were pcapped in the static guid range | ||
the generator of course wasn't pcapped, but those objects following it were, and they were in the dynamic guid range which tells us | the generator of course wasn't pcapped, but those objects following it were, and they were in the dynamic guid range which tells us | ||
that for whatever reason they linked them to a generator.. for the cavern npc and forge npc, they could have been static as well but for the 3 target drudges, | that for whatever reason they linked them to a generator.. for the cavern npc and forge npc, they could have been static as well but for the 3 target drudges, | ||
you want them to respawn when killed | you want them to respawn when killed | ||
so in concept, the use of linkable gens is so you don't have to make new generator objects to spawn one or more objects | so in concept, the use of linkable gens is so you don't have to make new generator objects to spawn one or more objects | ||
if you're not building a generator that is going to be used in lots of places, it makes sense to just setup one or more linkables, | if you're not building a generator that is going to be used in lots of places, it makes sense to just setup one or more linkables, | ||
depending on conditions you want to impose (like 2 min, 5 min, etc), in a landblock, map out where each object is intended | depending on conditions you want to impose (like 2 min, 5 min, etc), in a landblock, map out where each object is intended | ||
to respawn at and then link it back to the generator | to respawn at and then link it back to the generator | ||
the guids for any objects linked is essentially thrown away and never seen by players | the guids for any objects linked is essentially thrown away and never seen by players | ||
the generator uses the link to determine what, where and how many to spawn, using the generator's placeholder object to define the where, how many and under what conditions | the generator uses the link to determine what, where and how many to spawn, using the generator's placeholder object to define the where, how many and under what conditions | ||
https://github.com/ACEmulator/ACE-World-16PY/blob/master/Database/3-Core/9%20WeenieDefaults/SQL/Generic/None/05086%20Linkable%20Monster%20Gen%20-%2030%20sec..sql | https://github.com/ACEmulator/ACE-World-16PY/blob/master/Database/3-Core/9%20WeenieDefaults/SQL/Generic/None/05086%20Linkable%20Monster%20Gen%20-%2030%20sec..sql | ||
guids are always in a specific format, 0x7[LBID]### | guids are always in a specific format, 0x7[LBID]### | ||
lbid is that first four of loc, after that its incremental from 000 | lbid is that first four of loc, after that its incremental from 000 | ||
Ripley12/09/2019 | Ripley12/09/2019 | ||
so if you're in an area that has pcapped existing statics, you start +1 from the highest static | so if you're in an area that has pcapped existing statics, you start +1 from the highest static | ||
if you're in a completely barren area its 000 | if you're in a completely barren area its 000 | ||
so like landblock ABCD is empty, the first guid is 0x7ABCD000 | so like landblock ABCD is empty, the first guid is 0x7ABCD000 | ||
Line 139: | Line 182: | ||
Ripley12/09/2019 | Ripley12/09/2019 | ||
yes, anything in instances is 0x70000000 to 0x7FFFFFFF | yes, anything in instances is 0x70000000 to 0x7FFFFFFF | ||
it is scoped per landblock as Ziang says, so for ABCD, 0x7ABCD000 to 0x7ABCDFFF | it is scoped per landblock as Ziang says, so for ABCD, 0x7ABCD000 to 0x7ABCDFFF | ||
if you get to FFF of a landblock, you've got bigger issues | if you get to FFF of a landblock, you've got bigger issues | ||
Revision as of 17:24, 1 August 2023
ACE Generators
28282 Linkable Monster Gen - 10 Sec
15274 Linkable Monster Gen - 1 Min
24129 Linkable Monster Gen - 2 Min
07923 Linkable Monster Gen - 3 Min
07932 Linkable Monster Gen - 4 Min
07924 Linkable Monster Gen - 5 Min
04219 Linkable Monster Gen - 7 Min
07925 Linkable Monster Gen - 10 Min
03955 Linkable Monster Gen - 15 Min
07926 Linkable Monster Gen - 20 Min
15759 Linkable Item Gen - 10 Sec
05085 Linkable Item Gen - 25 Sec
04142 Linkable Item Gen - 2 Min
RipleyToday at 12:03 PM
rate can be increase by enabling the override_encounter_spawn_rates option and then changing encounter_delay and encounter_regen_interval
can try encounter_delay at 300 and encounter_regen_interval at 60 for basically a spawn every 5 mins for the overworld generators
RegenInterval is the generator "heartbeat"
it's how often the generator checks if things need to respawn
so that generator would check if things are ready to respawn every 60 seconds
delay is what you would probably consider the "real" regen interval
so things will take 800 seconds to respawn, but the regen interval provides a small amount of rng/sync to it
with that generator, things will take a minimum of 800 seconds to respawn, and a maximum of 860 seconds
depending on when the thing died in relation to the generator heartbeat
that method also syncs things up, so if i kill 1 2 3 4 5 monsters, with 10s in between each kill, when they respawn, they arent going to come in 1 at a time, every 10s on the dot
that would be too predictable, and would make the respawn cycles easier to kill
i would be able to kill the respawns without any other adds also attacking me
RipleyToday at 12:37 PM
set to 0
regen that is
whenever you don't want regen, its always 0
delay is for how long a profile can hold the slot it spawned after its been killed
DridToday at 12:41 PM
noted on that. Ill clean up those other gens
RipleyToday at 12:41 PM
so you've got 4/4 and you have 5 profiles. each profile is 1/1 with a delay of 300. it will spawn 4 of those profiles and if one of them is killed, the 5th profile won't be immediately selected because the slot is still being held through the delay. once the delay is over, ONE of the two unspawned will be selected
======
GeneratorDestructionType = Generator's destruction
GeneratorEndDestructionType = Generator's disabled
GeneratorEndDestructionType is fired when Generator is Disabled
disabling coming via event offs, day/night switches, time end reached
GeneratorDestructionType fires when Generator is Destroyed (WorldObject.Destroy)
- Delay in generator "profile" the bottom section is for regen.
WHERE TYPE
Undef = 0x00,
OnTop = 0x01,
Scatter = 0x02,
Specific = 0x04,
Contain = 0x08,
Wield = 0x10,
Shop = 0x20,
Treasure = 0x40,
Checkpoint = Contain | Wield | Shop, // 56
OnTopTreasure = OnTop | Treasure, // 65
ScatterTreasure = Scatter | Treasure, // 66
SpecificTreasure = Specific | Treasure, // 68
ContainTreasure = Contain | Treasure, // 72
WieldTreasure = Wield | Treasure, // 80
ShopTreasure = Shop | Treasure // 96
WHEN TYPE
[Flags]
public enum RegenerationType : uint
{
Undef = 0x0,
Destruction = 0x1,
PickUp = 0x2,
Death = 0x4
}
public enum GeneratorDestruct
{
Undef,
Nothing,
Destroy,
Kill
Linkable Generators for Dungeons
lets look at a very basic layout
in the above link, the first four are static objects
they never respawn and were pcapped in the static guid range
the generator of course wasn't pcapped, but those objects following it were, and they were in the dynamic guid range which tells us
that for whatever reason they linked them to a generator.. for the cavern npc and forge npc, they could have been static as well but for the 3 target drudges,
you want them to respawn when killed
so in concept, the use of linkable gens is so you don't have to make new generator objects to spawn one or more objects
if you're not building a generator that is going to be used in lots of places, it makes sense to just setup one or more linkables,
depending on conditions you want to impose (like 2 min, 5 min, etc), in a landblock, map out where each object is intended
to respawn at and then link it back to the generator
the guids for any objects linked is essentially thrown away and never seen by players
the generator uses the link to determine what, where and how many to spawn, using the generator's placeholder object to define the where, how many and under what conditions
guids are always in a specific format, 0x7[LBID]###
lbid is that first four of loc, after that its incremental from 000
Ripley12/09/2019
so if you're in an area that has pcapped existing statics, you start +1 from the highest static
if you're in a completely barren area its 000
so like landblock ABCD is empty, the first guid is 0x7ABCD000
I just usually search the landblock_instance table for a specific landblock ID, and use +1 the highest GUID for that landblock
and don't use a GUID from the dynamic range, or the object will get culled
It's more or less range specific to the landblock
Ripley12/09/2019
yes, anything in instances is 0x70000000 to 0x7FFFFFFF
it is scoped per landblock as Ziang says, so for ABCD, 0x7ABCD000 to 0x7ABCDFFF
if you get to FFF of a landblock, you've got bigger issues
a thing is entered in to the "spawn map, a concept, not a real thing" and then linked to a linkable generator.. when the server starts up, it collects up those links and uses it to dynamically build a working generator that is not unlike a "completed" generator
last four numbers in loc, W X Y Z.. if X and/or Y are not 0, your char will do very odd things.. most likely applies to most creatures as well</nowiki>