public void Read(RakNet.BitStream stream, RakNet.Packet packet, Server server) { int victimID = 0, killerID = 0; stream.Read(out victimID); stream.Read(out killerID); NPCProto victim = (NPCProto)sWorld.VobDict[victimID]; NPCProto attacker = (NPCProto)sWorld.VobDict[killerID]; Scripting.Objects.Item weapon = null; if (attacker.Weapon != null) { weapon = attacker.Weapon.ScriptingProto; } victim.ScriptingNPC.HP = 0; Scripting.Objects.Character.NPCProto.isOnDamage(victim.ScriptingNPC, DamageTypes.DAM_POINT, new Vec3f(), null, attacker.ScriptingNPC, attacker.WeaponMode, null, weapon, 0); }
public void Read(RakNet.BitStream stream, RakNet.Packet packet, Server server) { Vec3f locHit = null, flydir = null; int victim = 0, attacker = 0, weaponMode = 0, spellID = 0, weapon = 0; float fallDownDistanceY = 0.0f; byte sendFlags, damageMode; stream.Read(out victim); stream.Read(out damageMode); stream.Read(out sendFlags); if ((sendFlags & 1) == 1) { stream.Read(out locHit); } if ((sendFlags & 2) == 2) { stream.Read(out flydir); } if ((sendFlags & 4) == 4) { stream.Read(out attacker); } if ((sendFlags & 8) == 8) { stream.Read(out weaponMode); } if ((sendFlags & 16) == 16) { stream.Read(out spellID); } if ((sendFlags & 32) == 32) { stream.Read(out weapon); } if ((sendFlags & 64) == 64) { stream.Read(out fallDownDistanceY); } NPCProto vicProto = (NPCProto)sWorld.VobDict[victim]; Vob attProto = null; Scripting.Objects.Vob attackerScriptProto = null; if (attacker != 0) { attProto = sWorld.VobDict[attacker]; attackerScriptProto = attProto.ScriptingVob; } Item weaponIt = null; Scripting.Objects.Item weaponScriptItem = null; if (weapon != 0) { weaponIt = (Item)sWorld.VobDict[weapon]; weaponScriptItem = weaponIt.ScriptingProto; } Spell spell = null; Scripting.Objects.Spell scriptSpell = null; if (spellID > 100) { Spell.SpellDict.TryGetValue(spellID, out spell); if (spell != null) { scriptSpell = spell.ScriptingProto; } } Scripting.Objects.Character.NPCProto.isOnDamage(vicProto.ScriptingNPC, (DamageTypes)damageMode, locHit, flydir, attackerScriptProto, weaponMode, scriptSpell, weaponScriptItem, fallDownDistanceY); Write(vicProto, (DamageTypes)damageMode, locHit, flydir, attProto, weaponMode, spell, weaponIt, fallDownDistanceY, packet.guid); }