Welcome to Open Carnage

A resource for Halo 1 modding and tech, with unique means of rewarding individual content creation and support. Have a wander to see why we're worth the time! EST. 2012


  • Content count

  • Joined

  • Last visited

  • Raffle Tickets


Everything posted by Devieth

  1. You can only re-name people when they join the server, doing this to a player who is already present will not show on the scoreboard (as there is no way to send packet forcing clients to update the names they see on the scoreboard.) Hence my OnNameRequest script. Changing colors is already a thing, I think? Maybe that was for Phasor but its 100% possible on SAPP.
  2. Took a look at giraffe's geolocation script and though, hey I can make a map downloader that uses the HAC2 Repo with that. This does require the use of wget as well as 7zip. Just like giraffe's script, this one requires that they need to be in the same folder as the dedicated server executable. Pastebin: https://pastebin.com/kdEH3nyB Github: https://github.com/it300/Halo-Lua/blob/master/map_download.lua 7zip_and_wget.zip Search for available maps @ http://maps.halonet.net/maplist.php Commands: map_download <map_name> map_download.map <URL> <map_name.map> map_download.zip <URL> <map_name> repo <url or legacy> Oh yeah since I just added map_download.zip <URL> <map_name>, a side note is that you can use .7z, .rar, or any format 7zip supports for decompression, I think? Also the map_name is only required to also have SAPP load map into the game.
  3. It no longer does since he killed off his website, guess he was hosting his own repo or a mirror that fed off of hac2's? map_query snow Sapp is not connected to the global server! Please try again later. or map_query snow Map query request sent. Select an ID from below: No map matches this expression!
  4. So it was brought to my attention about a month ago that people were using HAC2 and Chimera (-572 and its derivatives, including mine) to cheat by setting their tickrate to 31-35 (30 = default, 36 and above and Halo's built in speed_hack_detection kicks in and ignores packets.) Today an idea popped in my head about a memory location I abused in the past to freeze players, checked the area around and sure enough, a counter that well, counts the number of updates it gets from the client, and my anti-speedhack was born. https://github.com/it300/Halo-Lua/blob/master/anti-speedhack.lua
  5. Nice, I'm signed up. And yeah, can't wait for the "3rd party EULA" to be added to the Steam store...
  6. Hey, I am having trouble reading your script the way you wrote it (not sure how you have everything working, its just confusing to look at in general, how your matching a server bipd to something the client sees I cant warp my head around.) Anyway I'm thinking this might help you out instead of guessing the size of the object table? If not that's cool. Also instead of calling `get_object(i)` a tone of times you could just do a `local object = get_object(i)` local object_table = 0x400506B4 -- 1.10 Client address (Not for use on dedicated server.) local object_count = read_word(object_table + 0x2E) local object_base = read_dword(object_table + 0x34) for i = 0,object_count-1 do local m_object = read_dword(object_base + i * 0xC + 0x8) local m_ObjectID = read_word(object_base + i * 12) * 0x10000 + i if read_word(mobject + 0xB4) == 0 then -- bipd end end -- For the server (sapp) is mostly the same except for the object_table address which is: local object_table = read_dword(read_dword(sig_scan("8B0D????????8B513425FFFF00008D") + 2))
  7. Trying to get matte screen protectors (for glossy devices) could cut the glare (but may also cut the brightness for all devices.) For PC, next time you get something new, try to go for matte finish screens. For your laptop, there is a chance you could get a comparable matte finish screen for it off Ebay or something (but that requires some disassembly to do. More or less depending on the brand of laptop.)
  8. You can do NPC's by looping though the tags when the map loads and save friendly MetaID's to a table. The just do a `if friendly_metaIds[MetaID] then` style check to see if that MetaID is in the friendly_metaIds table.
  9. Yeah that't about it, I went in and make a much bigger change though myself which will make the crosshair color change be a bit more sensitive and accurate. ally_retical_modified_by_devieth.lua Video: Note: I did't add a distance limit here but it would be easy enough to add. Note2: This will also work through walls. IceCrow14, if you would like to look at the changes and officially add this to your script that would be cool.
  10. I was just thinking about righting this, but kept thing "haha ha, I'm to lazy hell no." Really cice, it is a little sensitive though. Update: You could do this btw. local obj_ID = read_dword(dl_player + 0x2F8 + (unit_weap_slot * 0x4)) Instead of what your doing currently with this: local obj_ID = 0 if unit_weap_slot == 0 then obj_ID = read_dword(dl_player + 0x2F8) -- Primary elseif unit_weap_slot == 1 then obj_ID = read_dword(dl_player + 0x2FC) -- Secondary elseif unit_weap_slot == 2 then obj_ID = read_dword(dl_player + 0x300) -- Tertiary elseif unit_weap_slot == 3 then obj_ID = read_dword(dl_player + 0x304) -- Quaternary end
  11. Try again, changed something, you cant use "get_var()" the way i did.
  12. Try it now (updated to api_version = "")
  13. Here: -- Don't touch these. api_version = "" display = {} lines = {} -- Command to trigger text. cmd = "!info" -- line[number] = "text" .. get_var(1, "$global event variable") -- or -- line[number] = "text" lines[1] = "This is line 1" lines[2] = "This is line 2" -- Add more lines as needed function OnScriptLoad() register_callback(cb['EVENT_COMMAND'], "OnEventCommand") register_callback(cb['EVENT_JOIN'], "OnPlayerJoin") register_callback(cb['EVENT_TICK'], "OnEventTick") end function OnEventCommand(PlayerIndex, Command, Enviroment, Password) -- Lets get quotation marks out of our commands. local Command = string.lower(string.gsub(Command, '"', "")) if Command == cmd then -- If they are already set to true then set to false. if display[tonumber(PlayerIndex)] then display[tonumber(PlayerIndex)] = false else -- If they are not true then set to true display[tonumber(PlayerIndex)] = true end return false end end function OnPlayerJoin(PlayerIndex) -- Make sure the default is for this to be truned off. -- Also makes it so the last player in this slot's setting does not carry over. display[tonumber(PlayerIndex)] = false end function OnEventTick() for i = 1,16 do -- Check if the player is in the server. if player_present(i) then -- If they want the display then. if display[i] then -- Spam 26 blank lines (to clear console for ENG and ESP clients.) for j = 0,25 do rprint(i, " ") end -- Print info from all the lines (in order) to the player. for x = 1,#lines do rprint(i, lines[x]) end end end end end function OnScriptUnload() end
  14. You may also want to check that the player's object exists before trying to read their x,y,z (that is if you use the player object.) Alternatively you could use the static player address: local x,y,z = read_vector3d(get_player(index1) + 0xF8) Which wont cause a crash or error even if the player is dead, it will just return their last position where they were alive.
  15. Nice script, but that video's audio is something else...
  16. Its a map converted from CE to PC, just checked halomaps.org and generally the author is stated there. Ex: http://hce.halomaps.org/index.cfm?fid=3426
  17. Sounds like my script, cause that's a known issue with the current release. Sorry haven't posted an updated script yet to resolve that issue.
  18. This is a simple script that modifies the velocity of all weapons that use 'bullets' to travel their entire lifespan after being shot. This can remove that pesky 'lead' in no lead servers using big maps. It can also make the hit-registration feel more responsive. Hopefully this works on custom maps (protected or unprotected) but it relies on the 'hope' that custom mappers kept their custom weapons using Halo's default bullet speeds. Hitscan Script: Pastebin - Hitscan Note: Will not enable the the mod until EVENT_GAME_START is called. You can use "lua_call hitscan EnableHitscan" if you load the script while a game is already running though.
  19. Thank you, I'll have to keep this video saved.
  20. Didn't know if I should post this in modding but, I was wondering if anyone could find the client counterpart (address not sig) to these: stats_header = 0x5BD720 network_struct = read_dword(sig_scan("F3ABA1????????BA????????C740??????????E8????????668B0D") + 3) Asking because I tried myself and had no luck (even tried what giraffe recommended with using olydbg and also had no luck.) Could be that they don't exist on the client but I'm not sure. Edit: Found: client_network_struct = 0x7FC6A0
  21. I am looking for the address of the re-spawn time address for equipment. If anyone could point me the right way that would be great.
  22. init.txt (prevents fall damage) cheat_jetpack 1 events.txt (teleports them up) event_spawn 'm $n 0 0 50'
  23. Reading the table isn't a problem as long as it is saved the way it is shown above. Also SAPP is using LuaJIT 2.1.0-beta2. print(jit.version)
  24. I am in need of a multi-threaded ffi module that can save a Lua table (so that it does not use up HaloCE's thread why saving a large Lua table to a file.) Current Lua code writing the file: https://pastebin.com/s6aVdNkF I need it to save the file formatted like so: return { [1] = { [35] = { [1] = { [1] = "Tooth", [2] = "-1" }, [2] = { [1] = "Donut", [2] = "-1" }, [3] = { [1] = "Hambone", [2] = "-1" }, [4] = { [1] = "Goat", [2] = "-1" } } } }
  25. Update: I am still in need of an ffi module to do this due to the limitations of SAPP's Lua implementation running off of HaloCE's main thread thus causing the server to lock up until the file is finished being saved.