MohAA V1.12 Patch

Started by Cobra {sfx}, August 09, 2008, 02:32:18 PM

Previous topic - Next topic

Bulldozer {sfx}


Kalti

Perhaps already mentioned but can something be done with the ingame serverbrowser? Filter on Gametype... that sort of stuff.

   

   Thanks guys, you are the best! :yes

James

Sorry for the belated response.

   

   The project is currently on pause, but I am still active in it (the serverside gamex coding) I already managed to get some serverside stuff transfered over from heiko's Linux version, and I also updated the engine functions ALOT.

   

   Currently working on detecting aimbots. Running into a few minor issues, but overall I think I'm getting further than we used to be.

   Going to attempt to get the antichams working along with the STWH.

Kalti

Oki, I hope this attempt pulls through though :D

   

   Let me know if I can help.

James

I could use programming help :P

   

   here is the original script we were working with, however offcourse we didn't continue because it didn't work for each individual user. In gamex it works independently. Through script if 1 person sees another then everyone else is also rendered which is stupid ha.

   

   

   canSee local.player local.obj:
       //original 'can_see' found in mefy's mods
       //http://mefy.planetmedalofhonor.gamespy.com
   
       local.eye = (local.player gettagposition "eyes bone")
       local.eyedir = (angles_toforward local.player.viewangles)
       local.dir = local.obj.origin - (local.eye - (local.eyedir * 30))
       local.dp = vector_dot (vector_normalize local.dir) (vector_normalize local.eyedir)
   
       if (local.dp < 0.5) {
           end 0
       }
   
           //local.traceRes = (trace (local.eye local.obj.origin 1))
           //local.traceRes = sighttrace local.eye local.obj.origin 1
           local.traceRes1 = sighttrace local.eye ((local.obj gettagposition "Bip01 Pelvis") + ( -20 0 0 )) 1
           local.traceRes2 = sighttrace local.eye ((local.obj gettagposition "Bip01 Pelvis") + ( 20 0 0 )) 1
   
           local.traceRes3 = sighttrace local.eye ((local.obj gettagposition "Bip01 L UpperArm") + ( -10 0 0 )) 1
           local.traceRes4 = sighttrace local.eye ((local.obj gettagposition "Bip01 L UpperArm") + ( 10 0 0 )) 1
   
           local.traceRes5 = sighttrace local.eye ((local.obj gettagposition "Bip01 R UpperArm") + ( -10 0 0 )) 1
           local.traceRes6 = sighttrace local.eye ((local.obj gettagposition "Bip01 R UpperArm") + ( 10 0 0 )) 1
   
           local.traceRes7 = sighttrace local.eye ((local.obj gettagposition "Bip01 L Forearm") + ( -10 0 0 )) 1
           local.traceRes8 = sighttrace local.eye ((local.obj gettagposition "Bip01 L Forearm") + ( 10 0 0 )) 1
   
           local.traceRes9 = sighttrace local.eye ((local.obj gettagposition "Bip01 R Forearm") + ( -10 0 0 )) 1
           local.traceRes10 = sighttrace local.eye ((local.obj gettagposition "Bip01 R Forearm") + ( 10 0 0 )) 1
   
           local.traceRes11 = sighttrace local.eye ((local.obj gettagposition "Bip01 Head") + ( -20 0 0 )) 1
           local.traceRes12 = sighttrace local.eye ((local.obj gettagposition "Bip01 Head") + ( 20 0 0 )) 1
   
           local.traceRes13 = sighttrace local.eye ((local.obj gettagposition "Bip01 Head") + ( 0 -20 0 )) 1
           local.traceRes14 = sighttrace local.eye ((local.obj gettagposition "Bip01 Head") + ( 0 20 0 )) 1
   
           local.traceRes15 = sighttrace local.eye ((local.obj gettagposition "Bip01 L Foot") + ( -20 0 0 )) 1
           local.traceRes16 = sighttrace local.eye ((local.obj gettagposition "Bip01 L Foot") + ( 20 0 0 )) 1
   
           local.traceRes17 = sighttrace local.eye ((local.obj gettagposition "Bip01 R Foot") + ( -20 0 0 )) 1
           local.traceRes18 = sighttrace local.eye ((local.obj gettagposition "Bip01 R Foot") + ( 20 0 0 )) 1
   
   
       //if we see at least one part, we see the player
       //for performance reasons one would only continue tracing if no part has been seen yet
       //instead of tracing all parts all the time
           local.traceRes = local.traceRes1 + local.traceRes2 + local.traceRes3 + local.traceRes4 + local.traceRes5 + local.traceRes6 + local.traceRes7 + local.traceRes8 + local.traceRes9 + local.traceRes10 + local.traceRes11 + local.traceRes12 + local.traceRes13 + local.traceRes14 + local.traceRes15 + local.traceRes16 + local.traceRes17 + local.traceRes18
   
       //we want to return only 0/1
           if (local.traceRes != 0)
             local.traceRes = 1
   
       //we try to count for how long a player stares at another player he can't actually see
           if (self.ticks[local.player.entnum] == NIL)
           {
             self.ticks[local.player.entnum] = 0
           }
   
           if (local.dp > 0.998 && local.traceRes == 0) {
             self.ticks[local.player.entnum]++
             iprintln "player looks at unseen player for " self.ticks[local.player.entnum] " ticks"
           }
           else {
             self.ticks[local.player.entnum] = 0
           }
   
   end local.traceRes
   
   
   handlePlayers:
   
     local.frames = 0
     local.antiCheat = 0
   
     while (1) {
   
       //wait for rcon enabling of the protector
       if (local.frames == 0 || local.frames > 120) {
         local.frames = 0
   
         local.antiCheat = int(getcvar "g_anticheat")
         if (local.antiCheat != 1) {
           $player show
   
           iprintln "NOT protecting against see-through"
           wait 5
           continue
         }
   
         iprintln "protecting against see-through"
       }
   
       local.frames++
   
       //estimate all see-connections, i.e. player x sees player y
       //note for wrapper: only trace oponent team members
       for (local.i = 1; local.i <= $player.size; local.i++) {
         for (local.j = 1; local.j <= $player.size; local.j++) {
           if (local.i != local.j && $player[local.i] && $player[local.j] && $player[local.i].dmteam != "spectator") {
             local.sees[local.i][local.j] = waitthread canSee $player[local.i] $player[local.j]
   
           }
           else {
             local.sees[local.i][local.j] = 0
           }
         }
       }
   
       //now check if for any given player x no other player sees him
       //for performance get this into the above loops
       //note for wrapper: do it differently, i.e. if a client does not see a player, than don't transfer that entity
       for (local.j = 1; local.j <= $player.size; local.j++) {
         local.notSeen = 1
         for (local.i = 1; local.notSeen == 1 && local.i <= $player.size; local.i++) {
           if (local.i != local.j && local.sees[local.i][local.j] == 1) {
             local.notSeen = 0
           }
         }
   
         //if the player isn't seen by anybody, hide him
         if ($player.size > 1 && local.notSeen == 1) {
           //iprintln "hiding player in slot " local.j
           $player[local.j] hide
           //$player[local.j] ghost
           //$player[local.j] rendereffects "+dontdraw"
   
       //doesn't work :/
           //$player[local.j].weapon show
   //neverdraw
         }
         //if at least one player sees him, unhide him
         else {
           $player[local.j] show
           //$player[local.j] solid
           //$player[local.j] rendereffects "-dontdraw"
         }
       }
   
       waitframe
     }
   end
   

[KC]Murdock

But the idea of checking how long a player looks at an unseen player is a good idea. Maybe report this info only to an admin in the server would be a good idea?

Soldier Of Ra

Because scripting is serverside, therefor you cannot hide things from 1 specific player.

   The wrappers on the other hand is clientside.

James

Which is odd because gamex86 is only loaded server side not client side. The fix that heiko originally wrote has nothing to do with client side at all. It just has more freedom and can check individual things in a client which scripts for whatever reason can't do. I'm not sure why or how it works exactly, but my guess is since I'm modifying the game content directly it is alot more universal & direct. Any changes that are done can be done to any & every client at any point in the game.

   

   I was just informed by heiko that I also have to do additional work to the MOHAA.exe which is where I will have a difficult time. I need to hook "SV_AddEntitiesVisibleFromPoint" which is in the executable and not the dll, so therefore I will have to hook that function & then write additional bytes to it using asm, and well asm isn't my strongest point argh..

Soldier Of Ra

Well that's the thing isn't it. You can check almost everything in a wrapper. Well I'm guessing, as unlogical as it may sound, that even the serverside wrapper is "clientside" in the meaning that it processes all clients individually and constantly sends packages of information (including commands) to the client's wrapper.

Bulldozer {sfx}

I'd like to get acces for this site "http://www.mohaa-reloaded.com/"; to rebuilt it. I dunno whose that webpage, please let me know. I want to submit fresh news on this site, later upload videos&pictures too. I'd like to demonstrate the patch hasn't dead.

Runt


Bulldozer {sfx}

yes it's basically dead, but I want to revive it as MOHAA 1.12 Unofficial patch. reloaded domain is good for it i think

Bulldozer {sfx}

PLEASE restore the project tracker & continue the development

Thorongil {sfx}

Patch 1.12 - The Wrap Up!

   

   Patchnotes

   

   Make an sticky topic with patch notes like Blizzard does with their patchnotes (Look at the image below) .

   I notice with responses like this one "pff so many bugs to go"

   that you don't get that feeling that there is an progress going on.

   

   This is normal you see this often with students. This is solvable for both modders & guests.

   Structure is nothing more than to bringing order to chaos. For exmple put bugfixes in groups maybe some subgroups.

   

   http://www.blogcdn.com/www.wow.com/media/2008/06/ah061808patch243notes.jpg" alt="" />

   Blizzard seem to know how to handle patching quiet well. ( sinds 2005 ten million subscribers worldwide)

   

   

   Wrap wrap wrap

   

   Wrap those wonders(bugfixes) you allready have together.  

   Put all the bugfixes together to get the "WOW, Look what we have allready!".

   

   Add a copy of the patchnotes in txt to the package.  

   I studied graphic design one thing we learn there is this KISS = Keep It Simple Stupid.

   Look at the patchnotes of blizzard (not too long yet understandable)

   

   

   Offline BBCodeWriter

   

   You should use an offline bbcodewriter in my case I use AHK BBCodeWriter 7.02.

   A simple tool that will improve speed in making nice posts. (Usefull for the patchnotes post, Forum/clan rules in other cases)

   

   

   1.10 1.11 1.12 whaa?

   

   When thinking logical, people with other different versions can't play along that would bring in more trouble.

   

   NO 1.00 > 1.11 | 1.11 > 1.00

   

   NO 1.00 > 1.12 | 1.12 > 1.00

   

   NO 1.11 > 1.12 | 1.12 > 1.11


   

   YES!         1.12 > 1.12

   

   

   

   Language

   

   The standard language is English. You shouldn't care much about translations at all.  

   People will create translations theirselfs since that's instinctive to support your country somehow .

   

   

   Reloaded files I still have

   

   Reloaded-Pak0.pk3   (Spearhead player Models)

   Reloaded-Pak1.pk3   (Spearhead DM maps)

   Reloaded-Pak2.pk3   (Bash with all weapons except Bazooka)

   

   

   Aim big

   

   Adding add-ons narrows down the target group.

   

   Give the sense that using the 1.12 patch will help us stop cheaters. That will cuase a large amount of irritated clans, admins, regular gamers to make use patch 1.12.

   When you can acomplish this no doubt the 1.11 version will be like the 1.00 version.

   

   Add-ons

   Don't add these to the project. See these add-ons eatch as their own products. Create add-ons in your 'spare time'.  When you finished your 1.12 Patch job (It would surprice me cause you make it too chaotic for yourself).

   

   
    Medic mod

       Spearhead maps

       Spearhead skins

       Community skins

       ...and.so.on...

   

   Wrap wrap wrap ! wrap wrap wrap!

   My regards

   Mathias
[ Signature ]
" A big shot is a little shot that kept shooting. " - Anonymous

Razorapid

I'd like to say HI to everyone and let you know that Patch 1.12 isn't dead!

   

   Please visit:

   http://www.modtheater.com/forum/showthread.php?t=37384">http://www.modtheater.com/forum/showthread.php?t=37384

   

   We've currently released test win and linux versions of patch. Soon we'll have our own website for this project.

   

   We have already done:

   

   1. anti-norecoil (detection and emulation) server-side

   2. anti-stwh (detection and prevention) server-side

   3. anti-wh (prevention) server-side

   3. black windows fix server-side

   

   for both win and linux

   

   and we've got more to come