adolif2 has contributed to 44 posts out of 466505 total posts
(.01%) in 2,554 days (.02 posts per day).
20 Most recent posts:
Thank you. That's all I wanted to know.
When a batch of maps are accepted by the site, are the non-rejected maps released all at once? Or are they released in sub-batches? I feel bad for whoever looks through the map files right now and don't want to upload a duplicate if my map is just stuck "in traffic".
(My map hasn't appeared)
Oh, and is there a direct way to know WHY a map was rejected? I'd be more than happy to re-compile my map if it somehow broke the rules.
Thank you! :)
Okay, for you engine hackers and programmers out there who work on Opensauce, etc, I need help with finding an address.
See, I re-continued a formerly cancelled project named Netmerk, which is designed to sync ai through memory hacking and a separate, parallel connection to that of Halo multiplayer.
My biggest issue is management of Halo's "objects". Starting at a fixed memory address, Halo stores a huge array of data chunks which hold information for things like vehicles, bipeds, scenery, machines, etc, that are placed in the map. The age-old problem is that I can only modify certain things like coordinates of objects, the animation state, health, etc. Adding or removing objects from this array crashes the game. Touching certain parts of these data chunks also crashes the game. I'm looking for maybe a function or two in the engine itself that I can call from Netmerk - ones that will better allow me to keep track of, remove, and add objects.
I already looked at the source code for Opensauce, and seeing as to how it's pretty much undocumented, it wasn't much help.
Thanks in advance!
Maybe I should continue my development of AI syncing via programming, seeing as to how there is still demand for it. There is no excuse to have coop unavailable today because of a limitation that existed ten years ago. Now if I could only stop the gathering exception data errors...
I think I'm going to start a new thread to ask for some help. :)
I made it possible. Yet, nobody was willing to give AI syncing a chance, even in the form of an engine extension or trainer. Hence, I lost interest in developing NetMerk.
Here is my last source code. It compiles with Visual Studio 2010 Professional Edition, as long as you manage to add a library search path to the folder containing 39dllVStudio.lib. I give full permission to merge it into other projects. Also note that this is the UDP version of the program, so everybody needs to forward their ports when playing online.
If somebody becomes tempted to continue where I left off, there is something to point out.
Netmerk won't sync ai in just any map, because of two factors:
-It exploits the "lifeless" AI duplicates that are created on the client computers.
-It isn't designed for handling syncing when the computers have different numbers of AI.
This means that the map must somehow determine who the host is, and only spawn the AI on that computer. Since the duplicates are created on the client computers no matter what, the method ensures that all computers have the same number of bipeds. I personally used menu widgets and scripts to get the job done, but you could also try using Opensauce script functions.
Also, AI in vehicles haven't been tested. At all.
Here you go:
Edited by adolif2 on May 14, 2012 at 06:05 PM
Different animations link the main gun node to different bones. Usually, the animations link the gun node to the right wrist. It's not uncommon, however, for animations to link the node to "frame bone24."
Try studying the animation's bone structure in Guerilla. Make sure the bones are linked the same way in the max scene as they are in the animations tag, and then try importing again.
You don't close things that aren't script names, global names, or function names in parentheses. Instead, use quotation marks.
(script startup tele
(sleep_until (volume_test_objects "bsp 0,1" (players)) 15)
(volume_teleport_players_not_inside "bsp 0,1" "0,1 flag")
Quote: --- Original message by: OpsY
Are you trying to get Single player maps to work over the internet? Nice thing if it works. You have a long road ahead however... SP is alot more complex than MP. You might need some external scripting help too.
The overall goal is to make all objects sync in multiplayer, including AI. I'm not adding support for scripts, so single player maps would be difficult to work with.
Edited by adolif2 on Mar 4, 2012 at 09:15 AM
Thank you. It might be awhile before this is fully working, though. It can't seem to handle objects that die (AI) very well.
Quote: --- Original message by: Maniac1000
You should use something other than a warthog in your example, those sync already.
It was running in single player mode. Anyways, can do! :) I'll make another video really quick.
Edited by adolif2 on Feb 25, 2012 at 10:22 PM
Hello. I've made a small app which syncs bipeds (even AI) between two running copies of Halo CE (on separate computers). It now works in multiplayer servers wih up to two players.
What it does:
-Syncs biped object memory between two copies of Halo CE.
-Allows for a toggle to toggle syncing.
What it doesn't do:
-Sync AI weapons.
-Sync AI in vehicles. Don't even try it.
-Work correctly with maps that aren't properly designed for it. Maps should use scripts and/or my included ui widget tags to determine who the host is and spawn ai on his or her computer only. The programs exploit the biped duplicates that are created on the client computer.
-Toggling the sync off breaks the connection the second time you do it (Fixed?)
Problems that need to be addressed, but aren't bugs:
-Players must BOTH be in the exact same map when sync is enabled, or else crashes will happen.
There are still problems, but all is going better than expected.
AI bipeds now sync almost flawlessly according to my tests.
All tests were done over lan, so a really good internet speed is most likely required.
Video of it in action:
Current Version: Beta 6
Download for brave beta testers:
(Comes with an example map, example ui widget tags, an example scenario tag, and an example ai spawning script.)
Place the apps in the same folder as HaloCE.exe, and make sure to fill out the other person's IP in ip_config.txt. Have the host run Server.exe first, and then have the client run Client.exe.
Both the server and client will be prompted (with a gui) for two files. First, choose the player biped configuration file. Next, choose the indent list configuration file. These are map specific! Use the configuration generator that is included with the apps (it's still being tested for bugs, so don't be surprised if it does something really odd).
The apps will automatically start Halo once all of these tasks are complete.
Numpad0 = Disable Sync
Numpad1 = Enable Sync
Make sure to have Numlock on.
Port Number = 14804
Screenshot of the configuration utility:
Edited by adolif2 on Mar 8, 2012 at 12:03 AM
Before anybody chooses to get frustrated and flame me, keep aware that I'm perfectly aware of the engine's inability to sync AI. The context of this post takes external applications into consideration.
Here I go:
I once made an application/program that could limitedly sync AI.
It worked as so:
It was limited to two players. A server and a client. It would read coordinate data (x,y,z,yaw) of the bipeds from HaloCE's process memory, send it over the network, and if the same application was running on the other computer, it would inject those values into the process memory of HaloCE on that computer.
I never finished the application, for one major reason:
I can't seem to find any documentation on how objects in general (vehicles, bipeds, scenery, weapons, etc etc etc) are stored in Halo's memory.
Any chance that a very very very advanced modder could help me, or at least somebody point me to some documentation on HaloCE's memory?
Thanks in advance! :)
Hello everyone! :)
How would I go about making new tag-types/tag-classes with Opensauce? I'm getting the impression that Opensauce is extendable, which is why I'm asking.
I'm a pretty good programmer, so I just need a general idea of what I have to modify, and I can figure out the rest on my own.
Thanks in advance.
I got "Regret" working in multiplayer mode (as in, the MP engine mode), at least until AI tried to spawn.
Is there another memory address that needs editing? I can get AI to spawn in multiplayer without scripts, but scripted ai spawns (such as those in SP) cause the game to crash.
When then, I stand corrected, lol.
There is a major problem with that method.
Using those two options together makes it so that you can't drop, swap, or change the weapon once you pick it up. If you have more than one kind of weapon in the map with those options enabled, then it's pretty darn easy to use up all of your weapon slots without being able to swap the weapons (bipeds are limited to four weapon slots, so you can't just keep picking up more and more weapons).
When it comes to having one or the other set, rather than having both set, using the "doesn't count toward maximum" flag chews up weapon slots, and the "must be picked up" flag forces you to pick up any weapons you walk over.
They may not be *so* bad in single player, but they're very harmful in multiplayer. The oddballs and flags take up weapon slots, so if all four weapon slots are in use, you can't pick up an oddball or flag (they use the "must be picked up" flag, so you can't pick them up the normal way).
Long story short, if you're holding 4 weapons, two normal and two "additional" ones, then you can't pick up the oddballs or flags.
It may be possible to drop the weapons if you get into a vehicle when the "must be readied" option is checked....but why bother?
Edited by adolif2 on Feb 15, 2012 at 08:25 AM
This may be considered bumping, but it's only the 15th and the question remains unsolved.
Anyway, many games make grenades in the same category as weapons. Doom 3 is a good example.
To add a new grenade type without removing weapon slots, try this:
If it's a single player map, remove all instances of "player starting profiles" from the scenario. This forces the map to load weapons from the player biped. Be aware, two of the default single player maps require you to recompile the scripts from Zteam's source when you do this.
If it's a multiplayer map, remove all instances of "starting equipment" from the scenario. This also forces the map to load weapons from the player biped.
Then, edit the player biped to add an extra weapon (bipeds can hold up to four weapons).
The extra weapon you add can then be a grenade launcher/thrower weapon with a limit of four rounds.
I know, I create way too many threads in this forum, lol.
Anyway, here I go.
These are two experimental trainers that I made. Credit for finding the memory addresses goes to Kantanomo, the creator of Ambiguous.
Although they may seem redundant, there are two main reasons I made these apps:
-They work without minimizing Halo 2.
-They constantly update the memory addresses, rather than doing so once. This means that the Halo 2 engine can't undo the changes without your say-so.
COOP_Enabler switches the engine to single player mode and enables AI when you press the Numpad1 key. Press Numpad0 to disable.
VERY important: It should be noted that you MUST press the Numpad1 key during the loading screen, when the glowing light is moving across the screen. Also, you need a special mainmenu.map which adds the single player levels to the multiplayer maps list. This app doesn't really improve upon the co-op limitations of the past, so dying is still an issue.
AI_Enabler is even more untested, though it may work with properly made multiplayer maps. It does the same exact thing as COOP_Enabler, except that it doesn't switch the engine mode.
To use, just place these apps in the Halo 2 Vista install folder and run one of them. They start Halo 2 automatically.
Edited by adolif2 on Feb 13, 2012 at 08:09 PM
Thank you. See, I'm not sure what's going on, but I think it's AI-related. I start up the map in multiplayer mode and enable AI in Ambiguous.
The map is Regret. As soon as I reach the first door to the outside, it freezes, despite the setting made in Ambiguous. I'm assuming that Ambiguous isn't applying the change properly in multiplayer mode for the mod to work.
However, it could be that Ambiguous is only performing the value change once, and that the value is reverting. I'm thinking that maybe a trainer would work better when it injects the value continuously.
Again, this is all just speculation.
Sorry for being so stupid about that, lol. May I ask who created Ambiguous? I would like to only take a quick peak at the source code so I could get the AI-enabler memory address.
I got a single player map working in multiplayer without using any memory hacks, but it crashes when AI try to spawn.