partial void addItemToContainer(Item item) { if (this.Address == 0) { return; } Process process = Process.ThisProcess(); oCItem it = null; if (item.Address == 0) { it = oCObjectFactory.GetFactory(process).CreateItem("ITGUC_" + item.ItemInstance.ID); } else { it = new oCItem(process, item.Address); } it.Amount = item.Amount; oCMobContainer mobContainer = new oCMobContainer(Process.ThisProcess(), Address); mobContainer.Insert(it); if (item.Address == 0) { item.Address = it.Address; sWorld.SpawnedVobDict.Add(item.Address, item); } }
protected virtual void setMobContainerData(Process process, oCMobContainer vob) { if (this.itemList == null || this.itemList.Count == 0) { return; } foreach (Item item in this.itemList) { addItemToContainer(item); } }
public static Int32 oCItemContainer_Remove(String message) { try { int address = Convert.ToInt32(message); Process process = Process.ThisProcess(); oCNpc player = oCNpc.Player(process); oCNpc stealNPC = oCNpc.StealNPC(process); oCItemContainer oIC = new oCItemContainer(process, process.ReadInt(address)); int itemIndex = process.ReadInt(address + 4); int amount = process.ReadInt(address + 8); String itemName = zCParser.getParser(Process.ThisProcess()).GetSymbol(itemIndex).Name.Value; oCMobContainer mC = new oCMobContainer(process, player.GetInteractMob().Address); if (player.Inventory.Address != oIC.Address)//Use this only with the hero! { return(0); } Item it = Player.Hero.HasItem(ItemInstance.getIndex(itemName)); if (it == null)//Item was not found! { return(0); } Player.Hero.removeItem(it, amount); player.RemoveFromInv(new oCItem(Process.ThisProcess(), it.Address), amount); BitStream stream = Program.client.sentBitStream; stream.Reset(); stream.Write((byte)RakNet.DefaultMessageIDTypes.ID_USER_PACKET_ENUM); stream.Write((byte)NetworkID.ItemRemovedByUsing); stream.Write(it.ID); stream.Write(amount); Program.client.client.Send(stream, PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, (char)0, RakNet.RakNet.UNASSIGNED_SYSTEM_ADDRESS, true); zERROR.GetZErr(process).Report(2, 'G', "XXXX-Removed Item, Item: " + itemName + " Amount: " + amount, 0, "Itemsynchro.cs", 0); } catch (Exception ex) { zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', ex.Source + ": " + ex.Message + " " + ex.StackTrace, 0, "hItemContainer.cs", 0); } return(0); }
public override void Spawn(String map, Vec3f position, Vec3f direction) { this.Map = map; this.Position = position; this.Direction = direction; spawned = true; if (this.Address != 0) { return; } if (this.Map != Player.Hero.Map) { return; } Process process = Process.ThisProcess(); oCMobContainer gVob = oCMobContainer.Create(process); gVob.VobType = zCVob.VobTypes.MobContainer; this.Address = gVob.Address; sWorld.SpawnedVobDict.Add(this.Address, this); setVobData(process, gVob); setMobInterData(process, gVob); setMobLockableData(process, gVob); setMobContainerData(process, gVob); oCGame.Game(process).World.AddVob(gVob); triggerMobInter(process, gVob); }
public static Int32 hook_Render_SaveMode(String message) { Process process = Process.ThisProcess(); try { InputHooked.Update(process); if (InputHooked.IsPressed((int)DIK_Keys.DIK_O)) { InputHooked.receivers.Add(new Keytest()); //zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', new oCMobLockable(process, oCNpc.Player(process).FocusVob.Address).keyInstance.Value + ";" + new oCMobLockable(process, oCNpc.Player(process).FocusVob.Address).PickLockStr.Value, 0, "Program.cs", 0); //new oCMobInter(process, oCNpc.Player(process).FocusVob.Address).StartInteraction(oCNpc.Player(process)); //oCGame.Game(process).DiveBar.SetPos(-0x2000, -0x2000); first = false; } if (InputHooked.IsPressed((int)VirtualKeys.F1) && !saveItemInstances) { StringBuilder sb = new StringBuilder(); zCArray <zCPar_Symbol> symbolArray = zCParser.getParser(process).Table; int len = symbolArray.Size; //zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', "Symbols: " + len, 0, "Program.cs", 0); for (int i = 0; i < len; i++) { zCPar_Symbol symbol = symbolArray.get(i); String symbolName = symbol.Name.Value.Trim().ToUpper(); //zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', "Symbol found: "+symbolName+" | "+symbol.Offset, 0, "Program.cs", 0); if (symbolName.StartsWith("IT")) { oCItem item = oCObjectFactory.GetFactory(process).CreateItem(symbolName); if (item.Address == 0 || item.VobType != zCVob.VobTypes.Item || item.Visual.Value.Trim().Length == 0) { continue; } String muni = null; if (item.Munition != 0) { oCItem munit = oCObjectFactory.GetFactory(process).CreateItem(item.Munition); muni = munit.ObjectName.Value.Trim().ToUpper(); } sb.Append("new ItemInstance("); //DamageType dmgType, int totalDamage, int range, sb.Append("\"" + symbolName + "\", "); sb.Append("\"" + item.Name + "\", "); sb.Append("\"" + item.ScemeName + "\", "); sb.Append("new int[]{" + item.Protection[0] + ", " + item.Protection[1] + ", " + item.Protection[2] + ", " + item.Protection[3] + ", " + item.Protection[4] + ", " + item.Protection[5] + ", " + item.Protection[6] + ", " + item.Protection[7] + "},"); sb.Append("new int[]{" + item.Damage[0] + ", " + item.Damage[1] + ", " + item.Damage[2] + ", " + item.Damage[3] + ", " + item.Damage[4] + ", " + item.Damage[5] + ", " + item.Damage[6] + ", " + item.Damage[7] + "},"); sb.Append(item.Value + ", "); sb.Append("(MainFlags)(" + item.MainFlag + "), "); sb.Append("(Flags)(" + item.Flags + "), "); sb.Append("(ArmorFlags)(" + item.Wear + "), "); sb.Append("(DamageType)(" + item.DamageType + "), "); sb.Append(item.DamageTotal + ", "); sb.Append(item.Range + ", "); sb.Append("\"" + item.Visual.Value.Trim() + "\", "); sb.Append("\"" + item.VisualChange.Value.Trim() + "\", "); sb.Append("\"" + item.Effect.Value.Trim() + "\", "); sb.Append(item.VisualSkin + ", "); sb.Append("(MaterialTypes)(" + item.Material + "), "); if (muni != null) { sb.Append("ItemInstance.getItemInstance(\"" + muni + "\") "); } else { sb.Append("null"); } sb.Append(");\r\n"); } } File.WriteAllText("cinstances.cs", sb.ToString()); saveItemInstances = true; } if (InputHooked.IsPressed((int)VirtualKeys.F2) && !saveMapVobs) { StringBuilder sb = new StringBuilder(); sb.AppendLine("MobInter mi = null;"); sb.AppendLine("String mapName = @\"" + oCGame.Game(process).World.WorldFileName.Value.Trim() + "\";"); Dictionary <zCVob.VobTypes, List <zCVob> > vobDict = oCGame.Game(process).World.getVobLists(zCVob.VobTypes.MobInter, zCVob.VobTypes.MobBed, zCVob.VobTypes.MobSwitch, zCVob.VobTypes.MobDoor, zCVob.VobTypes.MobContainer); foreach (KeyValuePair <zCVob.VobTypes, List <zCVob> > vobList in vobDict) { foreach (zCVob vob in vobList.Value) { if (!VobVisual.ContainsKey(vob.Address)) { sb.Append("//"); } if (vob.VobType == zCVob.VobTypes.MobInter || vob.VobType == zCVob.VobTypes.MobBed || vob.VobType == zCVob.VobTypes.MobSwitch) { oCMobInter mi = new oCMobInter(process, vob.Address); if (vob.VobType == zCVob.VobTypes.MobInter) { sb.Append("mi = new MobInter("); } else if (vob.VobType == zCVob.VobTypes.MobBed) { sb.Append("mi = new MobBed("); } else if (vob.VobType == zCVob.VobTypes.MobSwitch) { sb.Append("mi = new MobSwitch("); } if (VobVisual.ContainsKey(vob.Address)) { sb.Append("\"" + VobVisual[vob.Address] + "\", "); } else { sb.Append("\"\", "); } sb.Append("\"" + mi.Name.Value.Trim() + "\", "); //sb.Append("" + mi.Rewind.ToString().ToLower() + ", "); //sb.Append("" + mi.StateNum + ", "); if (mi.UseWithItem.Address != 0 && mi.UseWithItem.getCheckedValue() != null) { sb.Append("ItemInstance.getItemInstance(\"" + mi.UseWithItem.Value.Trim().ToUpper() + "\"), "); } else { sb.Append("null, "); } if (mi.TriggerTarget.Address != 0 && mi.TriggerTarget.getCheckedValue() != null) { sb.Append("\"" + mi.TriggerTarget.Value.Trim() + "\", "); } else { sb.Append("null, "); } sb.Append(((mi.BitField1 & (int)zCVob.BitFlag0.collDetectionDynamic) == (int)zCVob.BitFlag0.collDetectionDynamic).ToString().ToLower() + ", "); sb.Append(((mi.BitField1 & (int)zCVob.BitFlag0.collDetectionStatic) == (int)zCVob.BitFlag0.collDetectionStatic).ToString().ToLower() + "); \r\n"); } if (vob.VobType == zCVob.VobTypes.MobDoor) { oCMobDoor mi = new oCMobDoor(process, vob.Address); sb.Append("mi = new MobDoor("); if (VobVisual.ContainsKey(vob.Address)) { sb.Append("\"" + VobVisual[vob.Address] + "\", "); } else { sb.Append("\"\", "); } sb.Append("\"" + mi.Name.Value.Trim() + "\", "); sb.Append("" + mi.isLocked.ToString().ToLower() + ", "); if (mi.keyInstance.Address != 0 && mi.keyInstance.getCheckedValue() != null) { sb.Append("ItemInstance.getItemInstance(\"" + mi.keyInstance.Value.Trim().ToUpper() + "\"), "); } else { sb.Append("null, "); } if (mi.PickLockStr.Address != 0 && mi.PickLockStr.getCheckedValue() != null) { sb.Append("\"" + mi.PickLockStr.Value.Trim() + "\", "); } else { sb.Append("null, "); } if (mi.UseWithItem.Address != 0 && mi.UseWithItem.getCheckedValue() != null) { sb.Append("ItemInstance.getItemInstance(\"" + mi.UseWithItem.Value.Trim().ToUpper() + "\"), "); } else { sb.Append("null, "); } if (mi.TriggerTarget.Address != 0 && mi.TriggerTarget.getCheckedValue() != null) { sb.Append("\"" + mi.TriggerTarget.Value.Trim() + "\", "); } else { sb.Append("null, "); } sb.Append(((mi.BitField1 & (int)zCVob.BitFlag0.collDetectionDynamic) == (int)zCVob.BitFlag0.collDetectionDynamic).ToString().ToLower() + ", "); sb.Append(((mi.BitField1 & (int)zCVob.BitFlag0.collDetectionStatic) == (int)zCVob.BitFlag0.collDetectionStatic).ToString().ToLower() + "); \r\n"); } if (vob.VobType == zCVob.VobTypes.MobContainer) { oCMobContainer mi = new oCMobContainer(process, vob.Address); sb.Append("mi = new MobContainer("); if (VobVisual.ContainsKey(vob.Address)) { sb.Append("\"" + VobVisual[vob.Address] + "\", "); } else { sb.Append("\"\", "); } sb.Append("\"" + mi.Name.Value.Trim() + "\", "); //ItemLists: sb.Append("new ItemInstance[]{"); List <oCItem> itemList = mi.getItemList(); for (int i = 0; i < itemList.Count; i++) { oCItem item = itemList[i]; sb.Append("ItemInstance.getItemInstance(\"" + item.ObjectName.Value.Trim().ToUpper() + "\")"); if (i + 1 < itemList.Count) { sb.Append(", "); } } sb.Append("},"); sb.Append("new int[]{"); for (int i = 0; i < itemList.Count; i++) { oCItem item = itemList[i]; sb.Append("" + item.Amount); if (i + 1 < itemList.Count) { sb.Append(", "); } } sb.Append("},"); sb.Append("" + mi.isLocked.ToString().ToLower() + ", "); if (mi.keyInstance.Address != 0 && mi.keyInstance.getCheckedValue() != null) { sb.Append("ItemInstance.getItemInstance(\"" + mi.keyInstance.Value.Trim().ToUpper() + "\"), "); } else { sb.Append("null, "); } if (mi.PickLockStr.Address != 0 && mi.PickLockStr.getCheckedValue() != null) { sb.Append("\"" + mi.PickLockStr.Value.Trim() + "\", "); } else { sb.Append("null, "); } if (mi.UseWithItem.Address != 0 && mi.UseWithItem.getCheckedValue() != null) { sb.Append("ItemInstance.getItemInstance(\"" + mi.UseWithItem.Value.Trim().ToUpper() + "\"), "); } else { sb.Append("null, "); } if (mi.TriggerTarget.Address != 0 && mi.TriggerTarget.getCheckedValue() != null) { sb.Append("\"" + mi.TriggerTarget.Value.Trim() + "\", "); } else { sb.Append("null, "); } sb.Append(((mi.BitField1 & (int)zCVob.BitFlag0.collDetectionDynamic) == (int)zCVob.BitFlag0.collDetectionDynamic).ToString().ToLower() + ", "); sb.Append(((mi.BitField1 & (int)zCVob.BitFlag0.collDetectionStatic) == (int)zCVob.BitFlag0.collDetectionStatic).ToString().ToLower() + "); \r\n"); } sb.Append("mi.Spawn(mapName, new Vec3f("); sb.Append(vob.TrafoObjToWorld.getPosition()[0].ToString().Replace(",", ".") + "f, " + vob.TrafoObjToWorld.getPosition()[1].ToString().Replace(",", ".") + "f, " + vob.TrafoObjToWorld.getPosition()[2].ToString().Replace(",", ".") + "f), new Vec3f("); sb.Append(vob.TrafoObjToWorld.getDirection()[0].ToString().Replace(",", ".") + "f, " + vob.TrafoObjToWorld.getDirection()[1].ToString().Replace(",", ".") + "f, " + vob.TrafoObjToWorld.getDirection()[2].ToString().Replace(",", ".") + "f));\r\n\r\n"); } } File.WriteAllText("cVobs.cs", sb.ToString()); saveMapVobs = true; } if (InputHooked.IsPressed((int)VirtualKeys.F3) && !saveMapItems) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Item mi = null;"); sb.AppendLine("String mapName = @\"" + oCGame.Game(process).World.WorldFileName.Value.Trim() + "\";"); Dictionary <zCVob.VobTypes, List <zCVob> > vobDict = oCGame.Game(process).World.getVobLists(zCVob.VobTypes.Item); foreach (KeyValuePair <zCVob.VobTypes, List <zCVob> > vobList in vobDict) { foreach (zCVob vob in vobList.Value) { if (vob.VobType == zCVob.VobTypes.Item) { oCItem mi = new oCItem(process, vob.Address); sb.Append("mi = new Item("); sb.Append("ItemInstance.getItemInstance(\"" + mi.ObjectName.Value.Trim().ToUpper() + "\"), "); sb.Append("" + mi.Amount + ");\r\n"); } sb.Append("mi.Spawn(mapName, new Vec3f("); sb.Append(vob.TrafoObjToWorld.getPosition()[0].ToString().Replace(",", ".") + "f, " + vob.TrafoObjToWorld.getPosition()[1].ToString().Replace(",", ".") + "f, " + vob.TrafoObjToWorld.getPosition()[2].ToString().Replace(",", ".") + "f), new Vec3f("); sb.Append(vob.TrafoObjToWorld.getDirection()[0].ToString().Replace(",", ".") + "f, " + vob.TrafoObjToWorld.getDirection()[1].ToString().Replace(",", ".") + "f, " + vob.TrafoObjToWorld.getDirection()[2].ToString().Replace(",", ".") + "f));\r\n\r\n"); } } File.WriteAllText("cItems.cs", sb.ToString()); saveMapItems = true; } } catch (Exception ex) { zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', ex.ToString(), 0, "Program.cs", 0); } return(0); }
public static Int32 oCItemContainer_Remove_2(String message) { try { int address = Convert.ToInt32(message); Process process = Process.ThisProcess(); oCNpc player = oCNpc.Player(process); oCNpc stealNPC = oCNpc.StealNPC(process); oCItemContainer oIC = new oCItemContainer(process, process.ReadInt(address)); oCItem item = new oCItem(process, process.ReadInt(address + 4)); int amount = process.ReadInt(address + 8); oCMobContainer mC = new oCMobContainer(process, player.GetInteractMob().Address); if (oIC.Address == mC.ItemContainer.Address && (item.Amount == amount || item.Amount - amount <= 0)) { mC.Remove(item); } else if ((oIC.Address == process.ReadInt(0x00AB27E0) || oIC.Address == process.ReadInt(0x00AB27DC)) && (item.Amount == amount || item.Amount - amount <= 0)) { oIC.Remove(item); zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', "Item stolen from npc!", 0, "hItemContainer.cs", 0); } else { item.Amount -= amount; } int containerID = 0; if (oIC.Address == mC.ItemContainer.Address) { if (!sWorld.SpawnedVobDict.ContainsKey(mC.Address)) { return(0); } Vob mobContainerVob = sWorld.SpawnedVobDict[mC.Address]; if (!(mobContainerVob is MobContainer)) { return(0); } MobContainer mobContainer = (MobContainer)mobContainerVob; containerID = mobContainer.ID; } else if (oIC.Address == process.ReadInt(0x00AB27E0) || oIC.Address == process.ReadInt(0x00AB27DC)) { if (!sWorld.SpawnedVobDict.ContainsKey(stealNPC.Address)) { return(0); } Vob sVob = sWorld.SpawnedVobDict[stealNPC.Address]; if (!(sVob is NPCProto)) { return(0); } NPCProto npc = (NPCProto)sVob; containerID = npc.ID; } if (!sWorld.SpawnedVobDict.ContainsKey(item.Address)) { return(0); } Item it = (Item)sWorld.SpawnedVobDict[item.Address]; BitStream stream = Program.client.sentBitStream; stream.Reset(); stream.Write((byte)RakNet.DefaultMessageIDTypes.ID_USER_PACKET_ENUM); stream.Write((byte)NetworkID.ContainerItemChangedMessage); stream.Write((byte)ContainerItemChanged.itemRemoved); stream.Write(Player.Hero.ID); stream.Write(containerID); stream.Write(it.ID); stream.Write(amount); Program.client.client.Send(stream, PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, (char)0, RakNet.RakNet.UNASSIGNED_SYSTEM_ADDRESS, true); //stream.Write(item.ID); //stream.Write(amount); //Program.client.client.Send(stream, PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, (char)0, RakNet.RakNet.UNASSIGNED_SYSTEM_ADDRESS, true); zERROR.GetZErr(process).Report(2, 'G', "Removed Item, Item: " + item.ObjectName.Value + " Found: " + sWorld.SpawnedVobDict.ContainsKey(item.Address) + " Amount: " + amount, 0, "Itemsynchro.cs", 0); } catch (Exception ex) { zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', ex.Source + ": " + ex.Message + " " + ex.StackTrace, 0, "hItemContainer.cs", 0); } return(0); }
public static Int32 oCItemContainer_Insert(String message) { try { Process process = Process.ThisProcess(); if (!ItemContainerBlocked && itemsUntilBlock == 0) { process.Write(new byte[] { 0x33, 0xC0, 0xC2, 0x04, 0x00 }, Program.insertItemToList.oldFuncInNewFunc.ToInt32()); ItemContainerBlocked = true; } else if (itemsUntilBlock != 0) { itemsUntilBlock -= 1; } int address = Convert.ToInt32(message); oCNpc player = oCNpc.Player(process); oCItemContainer oIC = new oCItemContainer(process, process.ReadInt(address)); oCItem item = new oCItem(process, process.ReadInt(address + 4)); oCMobContainer mC = new oCMobContainer(process, player.GetInteractMob().Address); if (!sWorld.SpawnedVobDict.ContainsKey(mC.Address)) { return(0); } Vob mobContainerVob = sWorld.SpawnedVobDict[mC.Address]; if (!(mobContainerVob is MobContainer)) { return(0); } MobContainer mobContainer = (MobContainer)mobContainerVob; if (!sWorld.SpawnedVobDict.ContainsKey(item.Address))//Multislot-Item { BitStream stream = Program.client.sentBitStream; stream.Reset(); stream.Write((byte)RakNet.DefaultMessageIDTypes.ID_USER_PACKET_ENUM); stream.Write((byte)NetworkID.ContainerItemChangedMessage); stream.Write((byte)ContainerItemChanged.itemInsertedNew); stream.Write(Player.Hero.ID); stream.Write(mobContainerVob.ID); stream.Write(ItemInstance.getIndex(item.ObjectName.Value.Trim())); Program.client.client.Send(stream, PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, (char)0, RakNet.RakNet.UNASSIGNED_SYSTEM_ADDRESS, true); } else//Normal-Item: { //mobContainer.addItem((Item)sWorld.SpawnedVobDict[item.Address]); Item it = (Item)sWorld.SpawnedVobDict[item.Address]; BitStream stream = Program.client.sentBitStream; stream.Reset(); stream.Write((byte)RakNet.DefaultMessageIDTypes.ID_USER_PACKET_ENUM); stream.Write((byte)NetworkID.ContainerItemChangedMessage); stream.Write((byte)ContainerItemChanged.itemInsertedOld); stream.Write(Player.Hero.ID); stream.Write(mobContainerVob.ID); stream.Write(it.ID); Program.client.client.Send(stream, PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, (char)0, RakNet.RakNet.UNASSIGNED_SYSTEM_ADDRESS, true); } zERROR.GetZErr(process).Report(2, 'G', "Insert Item, Item: " + sWorld.SpawnedVobDict.ContainsKey(process.ReadInt(address + 4)) + " | " + item.Address + " | " + item.ObjectName.Value + "| " + item.Name.Value + " | " + item.Visual.Value + " |" + " Amount: " + item.Amount, 0, "Itemsynchro.cs", 0); } catch (Exception ex) { zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', ex.Source + ": " + ex.Message + " " + ex.StackTrace, 0, "hItemContainer.cs", 0); } return(0); }