
Originally Posted by
DatCoder
Did you try with "Quiet"?
@
Cyeclops There is a far easier method to find the client side condition effects: open the com/company/assembleegameclient/util/ConditionEffect.class.asasm and there you will find the static variables of every condition effects:
Code:
dup
pushbyte 8
getlocal0
pushstring "Blind"
getlex QName(PackageNamespace("", "#0"), "_-0vb")
pushbyte 41
newarray 1
getlex QName(PackageNamespace("_-0lp"), "_-lw")
getproperty QName(PackageNamespace("", "#0"), "_-Xh")
construct 4
setproperty MultinameL([PackageNamespace("", "#0")])
dup
pushbyte 9
getlocal0
pushstring "Hallucinating"
getlex QName(PackageNamespace("", "#0"), "_-s8")
pushbyte 42
newarray 1
getlex QName(PackageNamespace("_-0lp"), "_-lw")
getproperty QName(PackageNamespace("", "#0"), "_-1NP")
construct 4
setproperty MultinameL([PackageNamespace("", "#0")])
dup
pushbyte 10
getlocal0
pushstring "Drunk"
getlex QName(PackageNamespace("", "#0"), "_-0LN")
pushbyte 43
newarray 1
getlex QName(PackageNamespace("_-0lp"), "_-lw")
getproperty QName(PackageNamespace("", "#0"), "_-vu")
construct 4
setproperty MultinameL([PackageNamespace("", "#0")])
dup
pushbyte 11
getlocal0
pushstring "Confused"
getlex QName(PackageNamespace("", "#0"), "_-0UM")
pushbyte 2
newarray 1
getlex QName(PackageNamespace("_-0lp"), "_-lw")
getproperty QName(PackageNamespace("", "#0"), "_-0mG")
construct 4
setproperty MultinameL([PackageNamespace("", "#0")])
etc..
Now open the GameObject.class.asasm from the objects package, you will find these variables in the respective methods:
Blind: QName(PackageNamespace("", "#0"), "_-0vb")
Code:
trait method QName(PackageNamespace("", "#0"), "isBlind")
method
refid "com.company.assembleegameclient.objects:GameObject/instance/isBlind"
returns QName(PackageNamespace("", "#0"), "Boolean")
body
maxstack 4
localcount 3
initscopedepth 5
maxscopedepth 6
code
pushfalse
returnvalue
pushfalse
pushtrue
swap
jump L10
pushnan
increment
strictequals
multiply
convert_b
setlocal3
L10:
setlocal1
setlocal2
getlocal0
pushscope
getlocal0
getproperty QName(PackageNamespace("", "#0"), "condition_")
getlex QName(PackageNamespace("com.company.assembleegameclient.util"), "ConditionEffect")
getproperty QName(PackageNamespace("", "#0"), "_-0vb")
bitand
pushbyte 0
equals
getlocal2
dup
iftrue L27
pop
getlocal0
convert_b
L27:
iffalse L29
not
L29:
returnvalue
Hallucinating: QName(PackageNamespace("", "#0"), "_-s8")
Code:
trait method QName(PackageNamespace("", "#0"), "_-0ks")
method
refid "com.company.assembleegameclient.objects:GameObject/instance/_-0ks"
returns QName(PackageNamespace("", "#0"), "Boolean")
body
maxstack 4
localcount 3
initscopedepth 5
maxscopedepth 6
code
pushfalse
returnvalue
pushfalse
pushtrue
setlocal1
jump L10
lessthan
convert_b
bitxor
nextvalue
lshift
convert_d
L10:
setlocal2
getlocal0
pushscope
getlocal0
getproperty QName(PackageNamespace("", "#0"), "condition_")
getlex QName(PackageNamespace("com.company.assembleegameclient.util"), "ConditionEffect")
getproperty QName(PackageNamespace("", "#0"), "_-s8")
bitand
pushbyte 0
equals
getlocal1
iffalse L23
not
L23:
returnvalue
And so on..
Scroll down in the code a little bit if you haven't done yet, so you will see what to look for. It quite strightforward, it looks for the variable we found in the ConditionEffect class.
I didnt implement "quiet", "Armor Broken", or "Bleeding" because I wanted something left to show above our heads and keep some kind of challenge in the gameplay, if we take everything away, what is the point of playing anymore? this is why I have steared away from using clients and just mess around doing this type of thing in spare time. Also running an Oryx you have alot of quiet bombs, way too many to be able to dodge each and every time you do an Oryx run, in Manor there are quite a few Wolves which deal Bleeding, and Cemetery which does a bit of all.
I never knew about the condition effects, that speeds things up some lol I'm such a dumbass, but in the end its been working. Thanks DatCoder, so sure you must get sick of seeing the errors of my ways hahaha :P
---------- Post added at 12:43 PM ---------- Previous post was at 11:26 AM ----------

Originally Posted by
JustAnoobROTMG
Is it possible to explain to people why did you choosed this particular line or this one to place the code of the "Serverside anti debuff" ?
Because it will help updating.
http://www.mpgh.net/forum/599-realm-...ml#post7762115
Code:
L496:
getlocal 6
getlocal 7
ifne L525
;-------------------------------------------------------------------------------------------------------------------------
;<-- Here goes the code, get local 6, 7 to check if the target that was hit is the player then if necessary skip this code
;-------------------------------------------------------------------------------------------------------------------------
getlex QName(PackageNamespace("", "#0"), "map_")
getproperty QName(PackageNamespace("", "#0"), "gs_")
getproperty QName(PackageNamespace("", "#0"), "gsc_")
getlocal0
getproperty QName(PackageNamespace("", "#0"), "bulletId_")
getlocal0
getproperty QName(PackageNamespace("", "#0"), "ownerId_")
callpropvoid QName(PackageNamespace("", "#0"), "playerHit"), 2
getlocal 6
getlocal0
getproperty QName(PackageNamespace("", "#0"), "containerType_")
getlocal 11
getlocal0
getproperty QName(PackageNamespace("", "#0"), "_-0Un")
getproperty QName(PackageNamespace("", "#0"), "effects_")
pushfalse
getlocal0
callpropvoid QName(PackageNamespace("", "#0"), "damage"), 5
;-----------------------------------------------------------------------------------------
;<-- You want to skip to here if you don't want the enemy to hit you, just before the jump
;-----------------------------------------------------------------------------------------
jump L595
Always in Projectile.class.asasm
Search for "
update" trait
change the 'localcount' from 15 to
18
To find where to place the code I always look for the following pattern: towards the end of the "update" trait:
Code:
findpropstrict QName(PackageNamespace("com.company.assembleegamec lient.tutorial"), "doneAction")
getlex QName(PackageNamespace(""), "map_")
getproperty QName(PackageNamespace(""), "gs_")
getlex QName(PackageNamespace("com.company.assembleegamec lient.tutorial"), "Tutorial")
getproperty QName(PackageNamespace(""), "_-1Zx")
callpropvoid QName(PackageNamespace("com.company.assembleegamec lient.tutorial"), "doneAction"), 2
Below here you should find your getlocal 6 and getlocal 7 as stated above
And if updating the codes, there are 3 to do.
First is not far under these lines: lol again there may be another easier method for searching these codes, since i like doing things the hard way
Code:
getlocal 6
getlocal0
getproperty QName(PackageNamespace(""), "containerType_")
getlocal 11
getlocal0
getproperty QName(PackageNamespace(""), "_-f8") <<<===14.0 this is your first code to update = _-f8
getproperty QName(PackageNamespace(""), "effects_")
pushfalse
getlocal0
callpropvoid QName(PackageNamespace(""), "damage"), 5
In the hack..
Code:
;----No ServerSide Debuffs----
getlocal0
getproperty QName(PackageNamespace("", "#0"), "_-pI") <<<=== this is where you will replace the code with updated code
getproperty QName(PackageNamespace("", "#0"), "effects_")
dup
setlocal 15
pushnull
ifeq TAKE_HIT
The other 2 I get from Player.class. just down from the top:
There are several
getproperty Multiname at the start of this code, for Attack, Defence, Speed etc all with double lines, at the end of these lines, we keep the last 2 codes:
getproperty Multiname("Attack",... blah blah ProtectedNamespace("X"), StaticProtectedNs("X"), StaticProtectedNs("X"), StaticProtectedNs("
This one"), StaticProtectedNs("
And this one")]) <<<=== 14.0 these are
_-1OQ and
_-cQ
In the hack, the first is placed in the first 2 instances, and the second is placed at the end:
Code:
LOOP_BEGIN:
label
getlex QName(PackageNamespace("com.company.assembleegameclient.util"), "ConditionEffect")
getproperty QName(PackageNamespace("", "#0"), "effects_")
getlocal 17
getlocal 16
nextvalue
convert_u
getproperty MultinameL([PrivateNamespace("*", "com.company.assembleegameclient.objects:GameObject"), StaticProtectedNs("_-1OQ"), PackageNamespace("", "#0"), PackageNamespace("com.company.assembleegameclient.objects"), ProtectedNamespace("_-1OQ"), PrivateNamespace("*", "com.company.assembleegameclient.objects:GameObject/instance"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), StaticProtectedNs("_-cQ")])
Apart from "slow" the pattern for adding extra effects is the same
Code:
getlocal 15
pushstring "effect here"
ifeq DONT_TAKE_HIT
So if I were to add all debuffs to this code (NOT RECOMMENDED) it would look something like this::
Code:
;----No ServerSide Debuffs----
getlocal0
getproperty QName(PackageNamespace("", "#0"), "_-pI")
getproperty QName(PackageNamespace("", "#0"), "effects_")
dup
setlocal 15
pushnull
ifeq TAKE_HIT
pushint 0
setlocal 16
getlocal 15
kill 15
coerce_a
setlocal 17
jump LOOP_END
LOOP_BEGIN:
label
getlex QName(PackageNamespace("com.company.assembleegameclient.util"), "ConditionEffect")
getproperty QName(PackageNamespace("", "#0"), "effects_")
getlocal 17
getlocal 16
nextvalue
convert_u
getproperty MultinameL([PrivateNamespace("*", "com.company.assembleegameclient.objects:GameObject"), StaticProtectedNs("_-0bM"), PackageNamespace("", "#0"), PackageNamespace("com.company.assembleegameclient.objects"), ProtectedNamespace("_-0bM"), PrivateNamespace("*", "com.company.assembleegameclient.objects:GameObject/instance"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), StaticProtectedNs("_-1ZB")])
coerce QName(PackageNamespace("com.company.assembleegameclient.util"), "ConditionEffect")
getproperty QName(PackageNamespace("", "#0"), "name_")
setlocal 15
getlocal 15
pushstring "Dead"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Quiet"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Weak"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Slowed"
ifne NOT_SLOWED
getlocal0
getproperty QName(PackageNamespace(""), "map_")
getproperty QName(PackageNamespace(""), "name_")
pushstring "Sprite World"
ifne DONT_TAKE_HIT
NOT_SLOWED:
getlocal 15
pushstring "Sick"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Dazed"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Bleeding"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Armor Broken"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Stunned"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Blind"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Hallucinating"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Drunk"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Confused"
ifeq DONT_TAKE_HIT
getlocal 15
pushstring "Paralyzed"
ifeq DONT_TAKE_HIT
LOOP_END:
hasnext2 17, 16
iftrue LOOP_BEGIN
TAKE_HIT:
AND FINALLY: We need to add DONT_TAKE_HIT: <<== where this goes is stated at the start, in the first code.
Code:
L496:
getlocal 6
getlocal 7
ifne L525
;-------------------------------------------------------------------------------------------------------------------------
;ADD YOUR NO SERVERSIDE HACKS HERE
;-------------------------------------------------------------------------------------------------------------------------
getlex QName(PackageNamespace("", "#0"), "map_")
getproperty QName(PackageNamespace("", "#0"), "gs_")
getproperty QName(PackageNamespace("", "#0"), "gsc_")
getlocal0
getproperty QName(PackageNamespace("", "#0"), "bulletId_")
getlocal0
getproperty QName(PackageNamespace("", "#0"), "ownerId_")
callpropvoid QName(PackageNamespace("", "#0"), "playerHit"), 2
getlocal 6
getlocal0
getproperty QName(PackageNamespace("", "#0"), "containerType_")
getlocal 11
getlocal0
getproperty QName(PackageNamespace("", "#0"), "_-0Un")
getproperty QName(PackageNamespace("", "#0"), "effects_")
pushfalse
getlocal0
callpropvoid QName(PackageNamespace("", "#0"), "damage"), 5
;-----------------------------------------------------------------------------------------
;HERE ADD: DONT_TAKE_HIT:
;-----------------------------------------------------------------------------------------
jump L595
Done...... I hope :P