PDA

View Full Version : Feature Request Hook function for collisions between players and other players/bullets


froducish
Jun 7, 2025, 10:24 AM
JJ2+'s AngelScript API currently doesn't provide a straight-forward way to determine what to do when collision occurs between players and other players/bullets. The closest to this is onRoast which doesn't cover all cases.

Example of such a hook's function signature:

void onCollide(jjPLAYER@ victim, jjPLAYER@ collider, COLLIDE::Collide collision, jjOBJ@ bullet)

where COLLIDE::Collide is what type of collision it is, and bullet is non-null if collision's value is COLLIDE::BULLET or something.

In fact, I already made a mutator (https://www.jazz2online.com/downloads/9471/playertoplayer-collision-detector-v2) that attempts to do this because I'm working on a script that sometimes needs to decide what to do when specific collisions happen. Even then, my mutator isn't the most elegant solution, so I think this would be better as a native feature if that's feasible.

Violet CLM
Jun 7, 2025, 06:10 PM
This hook would be called near constantly I think. What's the use case here, what do you want to accomplish by having such a hook?

froducish
Jun 8, 2025, 11:15 AM
This hook would be called near constantly I think. What's the use case here, what do you want to accomplish by having such a hook?

With the hook I want to be able to affect players in other ways besides from just being hurt.
[...] because I'm working on a script [...]
To clarify a bit on this, the script involves a player gambling to obtain an effect that's either a benefit or a drawback for them. Some effects will check if the player got hurt (or hurts another player) then based on that will decide to either modify either player's properties or do something else (e.g. spawning an object). This sounds like it could be just onHurt instead but I also want to affect non-enemy players sometimes so I also use onCollide for collisions that would've hurt.
For bullet-based collisions sure I could just override a bullet's behavior but this script I mentioned is designed as carefully as possible to not conflict with custom weapons, so that's not an option for me. I realize this suggestion may be a rather niche use case though