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



About Devieth

  • Birthday 04/12/1995

Extra Information

  • Gender
  • Location
    Wisconsin, USA
  • Raffle Victor

Contact Methods

  • Steam
  • Gamertag
  • PSN

Computer Details

  • Central Processor
    Intel i7 8700K @ 4.8Ghz
  • Motherboard
    Asus ROG Z370-H
  • Graphics
    Gigabyte Nvidia GTX 1080 Ti
  • Memory
    16GB DDR4 @ 2400Mhz
  • Storage
    256GB 850 Evo, 520GB Crusial SSD, & 1TB 7200RPM WD Blue
  • Power Supply
    Rosewill Photon 850
  • Case
    NZXT H440 - Red
  • Display
    AOC G2770PQU - 1920x1080 @ 144hz
  • Keyboard
    Rosewill RGB80
  • Mouse
    Razer Deathadder Elite
  • Operating System
    Windows 10 Pro

Recent Profile Visitors

3,179 profile views
  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. 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!
  3. 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.
  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...