HelpNo Particles

Posts 115 of 19 · Page 1 of 2
No Particles
I need help on how to make a no-particles mod that can be usable on @maat7043's AIO Tool or Orape.
I don't want anything done already, If possible I'd rather have some explaination on how to do it instead so I can do it myself every build.

Thanks in advance,
Shiv.
I have no idea what class/trait handles pet healing particles (halp pl0x), but you can disable some/most of the particles with this (ModSelector XML style):

redPart.txt

Code:
<?xml version="1.0" encoding="UTF-8"?>

<rotmg>
	<mod id="Reduced Particles">
        <code file2mod="_-0Rj/HitEffect.class.asasm"
              line="100">
            part.txt
        </code>
        <code file2mod="_-0Rj/FlowEffect.class.asasm"
              line="133">
            part.txt
        </code>
        <code file2mod="_-0Rj/FountainEffect.class.asasm"
              line="92">
            part.txt
        </code>
        <code file2mod="_-0Rj/ExplosionEffect.class.asasm"
              line="182">
            part.txt
        </code>
        <code file2mod="_-0Rj/TeleportEffect.class.asasm"
              line="58">
            part.txt
        </code>
       <code file2mod="_-0Rj/StreamEffect.class.asasm"
              line="130">
            part.txt
        </code>
    </mod>
</rotmg>
part.txt

Code:
returnvoid
Some of those .classes are probably not even needed here, too lazy to check.
I found something like this for the 19.0 version from @059,
and tried looking on the 19.0 files to figure out where to put the
returnvoid
could you enlighten me?

And yeah, it did work.. removed most of the particles that I wanted,
but what I really need is those Pet MP/HP, the Assassin's Poison hit/area and the new Healing buff particles,
they're probably under the same traits I guess..
Anyway, thank you very much.
Nope, I can't bytecode and ignore where it is. A bit of digging should help tho, brb.
Quote Originally Posted by shivira View Post
could you enlighten me?
Do you mean how did I update it?
Yes.
That's what I really want to learn, I really wanna be able to do easy stuff like this myself..
Quote Originally Posted by shivira View Post
Yes
Welp

I'm probably doing it the wrong way, but it works, so...

You get both the last version of the client plus an older version, in which you know exactly what and where to put the code, then you disassemble both. Find the edited file in the old version, and look for the trait that contains the edit, and after what the edit comes. Random example ahead:

Code:
trait slot QName(PrivateNamespace("*", "_-0Rj:_-0nX"), "_-vm") type QName(PackageNamespace("", "#0"), "Number") end  trait method QName(PackageNamespace("", "#0"), "update") flag OVERRIDE
   method
    refid "_-0Rj:_-0nX/update"
    param QName(PackageNamespace("", "#0"), "int")
    param QName(PackageNamespace("", "#0"), "int")
    returns QName(PackageNamespace("", "#0"), "Boolean")
    body
     maxstack 6
     localcount 7
     initscopedepth 7
     maxscopedepth 8
     code
      returnvoid
      pushfalse
      pushtrue
      swap
      jump                L10
Assume the red text is the edit you need to update. Now you know what but you still don't know where. Here's comes handy a tool/command (Mac/Linux) called Grep. It basically reads everything in every file you point it to, and tells you if it finds the text string you specified. Now, tell him to search something that may not be in every .class (this is where it looks weird to me) : it will probably poop out a couple to dozens of results. In this case, there are unobfuscated(?) .classes that will help you find the right directory and therefore the right file (ExplosionEffect, TeleportEffect, etc). Open it and look for the same trait as above and paste the edit in the right place.

Obviously this works only if no major change has been made to the game. In the eventuality you need to update a namespace, the logic is a little different, posting it if you want to know.
That's what I tried to do myself, without the Grep program you said, I had the 19.0 fresh client
19.0 ExplosionEffect.class.asasm
trait slot QName(PackageNamespace("", "#0"), "_-1Ta") type TypeName(QName(PackageNamespace("__AS3__.vec"), "Vector")<QName(PackageNamespace("", "#0"), "uint")>) end
trait slot QName(PackageNamespace("", "#0"), "_-0mE") type QName(PackageNamespace("", "#0"), "int") end
trait method QName(PackageNamespace("", "#0"), "update") flag OVERRIDE
method
refid "_-uY:ExplosionEffect/instance/update"
param QName(PackageNamespace("", "#0"), "int")
param QName(PackageNamespace("", "#0"), "int")
returns QName(PackageNamespace("", "#0"), "Boolean")
body
maxstack 10
localcount 8
initscopedepth 7
maxscopedepth 8
code
Then I tried searching for "Boolean" on the 26.0 one but in fact, it didn't worked, but I think the error was when I tried recompiling it.
Apparently I was doing it right..

But my point is, on 19.0 HitEffect.class.asasm
prait slot QName(PackageNamespace("", "#0"), "_-1Ta") type TypeName(QName(PackageNamespace("__AS3__.vec"), "Vector")<QName(PackageNamespace("", "#0"), "uint")>) end
trait slot QName(PackageNamespace("", "#0"), "_-0mE") type QName(PackageNamespace("", "#0"), "int") end
trait slot QName(PackageNamespace("", "#0"), "angle_") type QName(PackageNamespace("", "#0"), "Number") end
trait slot QName(PackageNamespace("", "#0"), "speed_") type QName(PackageNamespace("", "#0"), "Number") end
trait method QName(PackageNamespace("", "#0"), "update") flag OVERRIDE
method
refid "_-uY:HitEffect/instance/update"
param QName(PackageNamespace("", "#0"), "int")
param QName(PackageNamespace("", "#0"), "int")
returns QName(PackageNamespace("", "#0"), "Boolean")
body
maxstack 11
localcount 10
initscopedepth 7
maxscopedepth 8
returnvoid
code
That's where he put the returnvoid and yet you did change the 100th line on the 26.0 file which is
getlocal0
getproperty QName(PackageNamespace("", "#0"), "speed_")
pushshort 600
divide
getlex QName(PackageNamespace("", "#0"), "Math")
getlocal0
getproperty QName(PackageNamespace("", "#0"), "angle_")
getlex QName(PackageNamespace("", "#0"), "Math")
getproperty QName(PackageNamespace("", "#0"), "PI")
add
callproperty QName(PackageNamespace("", "#0"), "cos"), 1
multiply
convert_d
returnvoid
That's what I don't get.. how'd you find it?
thread i've been looking if you wondering

edit:
And yeah, I'd love if you could explain me further.
Told you, by looking at the chunk of code directly above it. If they don't push an update that changes a metric fuck-ton of stuff, it will more than likely remain the same, but in a different position, in a different file(name). The trick is to find both.

To be more clear: you have that 19.0 HitEffect, and you know where to put the [returnvoid]. Screw line numbers, you don't need them. On the 26.0 HitEffect the only job you have to do is to find the same trait that is probably in a different location in the .class, and put the [returnvoid] after the same [code].
I think you screwed something up in those lines you quoted.
Quote Originally Posted by shivira View Post
I tried searching for "Boolean"
[Boolean] ("either 1 or 0") is basically EVERYWHERE.

Now, about updating namespaces: I'm tired, I'll try to explain it tomorrow.
Basically what you want to do is add returnvoid to the start of the update function on particle drawing. The hard part is finding those classes/files but inside of them they will have an update function and a draw function, and I think one more.

This makes the function do nothing. I haven't touched rotmg in a while so I can't help much beyond this. Yogda helped me find the classes easily at first but I used just normal rabcdasm after.
Thanks for the help guys, but is there any new on the healing effect if you guys had time to search for it?
Do you plan on releasing the mod so we can install it on our own Orapes?
Quote Originally Posted by Oss1d View Post
Do you plan on releasing the mod so we can install it on our own Orapes?
I dont think Orape supports any additional mods (you may edit existing ones tho). You have to add new mods manually either to clean client (better) or to already modified one by orape.
Disassembling an ORape made client results in derp (darn you @JustAnoobROTMG), so you have to first manually/by resurrecting an old ModSelector edit it, then you can use ORape to add whatever you want.
Yeah, I tried disassembling ORape client but didn't work so well so I just did on the fresh client editing the files myself, no need on modselector.. but still
I was wondering if anyone could help me figure out which classes traits the Healing/Bomb effects particles, they're not under explosion effect anymore it seems.
Quote Originally Posted by shivira View Post
Yeah, I tried disassembling ORape client but didn't work so well so I just did on the fresh client editing the files myself, no need on modselector.. but still
I was wondering if anyone could help me figure out which classes traits the Healing/Bomb effects particles, they're not under explosion effect anymore it seems.
If all AoE is handled by the same thing, well shit, rip Medusa's bomb.
Posts 115 of 19 · Page 1 of 2
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?