First set your self up with a good software stack.
I always recommend:
my swf dumper to get the game files
my aob tool to convert IL to opcodes
redgate .NET reflector
secondly,
the interesting portions of the game code are of course located in Assembly-CSharp.dll
the classes of primary interest are
public class cAIMonsterNormal : cAIBase
public class cPlayer : cActor
public class cPlayerInfo : MonoBehaviour |
public class cCreature : cActor |
the latest patch seems to have added some (lazy) form of cheat detection which is most likely based on server sided checks, but you might find some interesting stuff here:
public class Bluemoon : MonoBehaviour
public class Bluelab : MonoBehaviour
public class BlueEncoder : MonoBehaviour
for reference,
my Disable AI cheat patches cAIBase.Update()
the 1 hit kill cheat patched cCreature.Damage(cActor, cSkill, Single, Boolean, GameObject, Boolean, Boolean, Boolean) : Void
which I got to from cAIBase.Update() -> this.actor.Death() -> this.m_actor_info.m_health
and then analysing the used by tree
cActorInfo.m_health : Single
cActorInfo.get_m_health() : Single
cActorInfo.set_m_health(Single) : Void
Depends On
Used By
ActionSkill.PlayerSkillAbility(cSkill, cActor, Single) : Void
cActor.RecvStageDamage(cActor, cSkill, UInt32, Boolean, UInt32, Boolean, GameObject) : Void
cActor.Spawn(Vector3) : Void
cActor.Warp(Vector3) : Void
cActorInfo..ctor()
cActorInfo.Initialize(cActor) : Void
cActorInfo.SetExp(UInt64) : Void
cActorInfo.UpdateAbility() : Void
cActorInfo.UpdatePlayer() : Void
cAIBase.MutMon_AtkPlayer() : Void
cCreature.Damage(cActor, cSkill, Single, Boolean, GameObject, Boolean, Boolean, Boolean) : Void
cCreature.ForceDeath() : Void
cCreature.RecvStageDamage(cActor, cSkill, UInt32, Boolean, UInt32, Boolean, GameObject) : Void
cCreature.범위공격스킬(cSkill) : Void
cPlayer.Damage(cActor, cSkill, Single, Boolean, GameObject, Boolean, Boolean, Boolean) : Void
cPlayer.RecvStageDamage(cActor, cSkill, UInt32, Boolean, UInt32, Boolean, GameObject) : Void
cPlayer.SetBusyForEditor() : Void
cPlayer.UseItem(Int32, Boolean) : Void
cPlayer.스킬능력치적용하기(cSkill, cActor, Single) : Void
cPlayer+c__Iterator1E.MoveNext() : Boolean
cPlayer+c__Iterator21.MoveNext() : Boolean
cPlayerInfo.ResultReleaseBuff(Boolean, Int32) : Void
cPlayerInfo.UpdateBuff() : Void
cPlayerInfo+c__Iterator2A.MoveNext() : Boolean
NetworkConnector.RecvStageMonAddHealth(xBitStream) : Void
NetworkConnector.RecvStageMonHealthFull(xBitStream) : Void
PartyActor.Damage(cActor, cSkill, Single, Boolean, GameObject, Boolean, Boolean, Boolean) : Void
PartyActor.RecvStageDamage(cActor, cSkill, UInt32, Boolean, UInt32, Boolean, GameObject) : Void
PartyActor.RecvStageUserUseItem(ItemDesc, Single, Single) : Void
PartyActor.SetHealth(Single) : Void
PartyActor+c__Iterator12.MoveNext() : Boolean
Sample.Update() : Void
I use this AoB tool to make all the AoBs I post. Try the online version if you dont feel like downloading it.
"Obviously, windows are central to Windows. They are so important that they named the operating system after them. But what is a window?"