public override void Execute() { bool copyBitmaps = false; for (int i = 0; i < Owner.MaxObjects; i++) { if (Owner.WorldObjects.Host[i].life > 0) { Owner.WorldObjects.Host[i].position += Owner.WorldObjects.Host[i].velocity; float2 pos = Owner.WorldObjects.Host[i].position; float size = Owner.WorldObjects.Host[i].size; if (pos.x < -1 - size || pos.x > 1 + size || pos.y < -1 - size || pos.y > 1 + size) { Owner.WorldObjects.Host[i].life = 0; } else { Owner.WorldObjects.Host[i].life--; } } if (Owner.WorldObjects.Host[i].life <= 0 && m_random.NextDouble() < CreateObjectChance) { MyWorldObject newObject = new MyWorldObject(); newObject.life = (int)(m_random.NextDouble() * MaxLife); newObject.size = (float)m_random.NextDouble() * (MaxSize - MinSize) + MinSize; newObject.position = new float2((float)m_random.NextDouble() * 2 - 1, (float)m_random.NextDouble() * 2 - 1); if (m_random.NextDouble() > StaticObjectChance) { newObject.velocity = new float2((float)m_random.NextDouble() * 2 - 1, (float)m_random.NextDouble() * 2 - 1); float velocitySize = (float)( (m_random.NextDouble() * (MaxVelocity - MinVelocity) + MinVelocity) / Math.Sqrt(newObject.velocity.x * newObject.velocity.x + newObject.velocity.y * newObject.velocity.y) ); newObject.velocity *= velocitySize; } IExample example = m_dataset.GetNext(); Array.Copy(example.Input, 0, Owner.Bitmaps.Host, i * IMG_WIDTH * IMG_WIDTH, IMG_WIDTH * IMG_WIDTH); copyBitmaps = true; CudaDeviceVariable <float> devBitmaps = Owner.Bitmaps.GetDevice(Owner); newObject.bitmap = devBitmaps.DevicePointer + (devBitmaps.TypeSize * i * IMG_WIDTH * IMG_WIDTH); Owner.WorldObjects.Host[i] = newObject; } } Owner.WorldObjects.SafeCopyToDevice(); if (copyBitmaps) { Owner.Bitmaps.SafeCopyToDevice(); } }
void WorldFilter_ChangeObject(object sender, ChangeObjectEventArgs e) { try { if (e.Change != WorldChangeType.IdentReceived) { return; } for (int row = 0; row < tinkeringList.RowCount; row++) { int id; if (int.TryParse(((HudStaticText)tinkeringList[row][6]).Text, out id) && id == e.Changed.Id) { MyWorldObject mwo = MyWorldObjectCreator.Create(e.Changed); ((HudStaticText)tinkeringList[row][3]).Text = mwo.Workmanship.ToString(CultureInfo.InvariantCulture); ((HudStaticText)tinkeringList[row][4]).Text = mwo.Tinks.ToString(CultureInfo.InvariantCulture); return; } } } catch (Exception ex) { Debug.LogException(ex); } }
void TinkeringStart_Hit(object sender, EventArgs e) { try { if (running) { return; } running = true; foreach (var wo in CoreManager.Current.WorldFilter.GetInventory()) { if (wo.ObjectClass == ObjectClass.Salvage && !wo.HasIdData) { MyWorldObject mwo = MyWorldObjectCreator.Create(wo); if (mwo.Material == ((HudStaticText)tinkeringMaterial[tinkeringMaterial.Current]).Text) { CoreManager.Current.Actions.RequestId(wo.Id); } } } timer.Start(); } catch (Exception ex) { Debug.LogException(ex); } }
public override void Execute() { Owner.Visual.Fill(0); for (int i = 0; i < Owner.MaxObjects; i++) { MyWorldObject wo = Owner.WorldObjects.Host[i]; if (wo.life > 0) { CudaDeviceVariable <MyWorldObject> devWO = Owner.WorldObjects.GetDevice(Owner); m_kernel.Run(Owner.Visual, wo.bitmap, devWO.DevicePointer + devWO.TypeSize * i, Owner.VisualWidth, Owner.VisualHeight, IMG_WIDTH, IMG_WIDTH); } } }
void timer_Tick(object sender, EventArgs e) { try { if (!running) { return; } if (CoreManager.Current.Actions.CombatMode != CombatState.Peace) { TinkeringStop_Hit(null, null); return; } if (CoreManager.Current.Actions.BusyState != 0) { return; } // Do we have bags of salvage without id data? foreach (var wo in CoreManager.Current.WorldFilter.GetInventory()) { if (wo.ObjectClass == ObjectClass.Salvage && !wo.HasIdData) { MyWorldObject mwo = MyWorldObjectCreator.Create(wo); if (mwo.Material == ((HudStaticText)tinkeringMaterial[tinkeringMaterial.Current]).Text) { CoreManager.Current.Actions.RequestId(wo.Id); return; } } } TinkeringStop_Hit(null, null); } catch (Exception ex) { Debug.LogException(ex); } }
public ItemInfo(WorldObject worldObject) { wo = worldObject; mwo = MyWorldObjectCreator.Create(worldObject); }
private void LogItem(WorldObject item) { if (itemsLogged.Contains(item.Id)) { return; } itemsLogged.Add(item.Id); DirectoryInfo pluginPersonalFolder = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + @"\Decal Plugins\Mag-LootLogger"); if (!pluginPersonalFolder.Exists) { pluginPersonalFolder.Create(); } FileInfo logFile = new FileInfo(pluginPersonalFolder.FullName + @"\Loot.csv"); if (!logFile.Exists) { using (StreamWriter writer = new StreamWriter(logFile.FullName, true)) { writer.WriteLine("Timestamp,Container,Id,Name,ObjectClass,EquipSkill,MasteryBonus,DamageType,Variance,MaxDamage,ElementalDmgBonus,DamageBonus,ElementalDamageVersusMonsters,AttackBonus,MeleeDefenseBonus,MagicDBonus,MissileDBonus,ManaCBonus,BuffedMaxDamage,BuffedElementalDmgBonus,BuffedDamageBonus,BuffedElementalDamageVersusMonsters,BuffedAttackBonus,BuffedMeleeDefenseBonus,BuffedManaCBonus,WieldReqValue,Work,Value,Burden"); writer.Close(); } } using (StreamWriter writer = new StreamWriter(logFile.FullName, true)) { MyWorldObject mwo = MyWorldObjectCreator.Create(item); StringBuilder output = new StringBuilder(); output.Append(String.Format("{0:u}", DateTime.UtcNow) + ","); string containerName = CoreManager.Current.WorldFilter[item.Container] != null ? CoreManager.Current.WorldFilter[item.Container].Name : null; output.Append('"' + containerName + '"' + ","); output.Append(item.Id + ","); output.Append('"' + item.Name + '"' + ","); output.Append(item.ObjectClass.ToString() + ","); string skillName = Constants.SkillInfo.ContainsKey(item.Values(LongValueKey.EquipSkill)) ? Constants.SkillInfo[item.Values(LongValueKey.EquipSkill)] : null; output.Append((item.Values(LongValueKey.EquipSkill) > 0 ? skillName : String.Empty) + ","); string masteryName = Constants.MasteryInfo.ContainsKey(item.Values((LongValueKey)353)) ? Constants.MasteryInfo[item.Values((LongValueKey)353)] : null; output.Append((item.Values((LongValueKey)353) > 0 ? masteryName : String.Empty) + ","); if (item.Values(LongValueKey.DamageType) > 0) { if ((item.Values(LongValueKey.DamageType) & 1) == 1) { output.Append("Slash"); } if ((item.Values(LongValueKey.DamageType) & 2) == 2) { output.Append("Pierce"); } if ((item.Values(LongValueKey.DamageType) & 4) == 4) { output.Append("Bludge"); } if ((item.Values(LongValueKey.DamageType) & 8) == 8) { output.Append("Cold"); } if ((item.Values(LongValueKey.DamageType) & 16) == 16) { output.Append("Fire"); } if ((item.Values(LongValueKey.DamageType) & 32) == 32) { output.Append("Acid"); } if ((item.Values(LongValueKey.DamageType) & 64) == 64) { output.Append("Electrical"); } } else if (item.Values(LongValueKey.WandElemDmgType) > 0) { if ((item.Values(LongValueKey.WandElemDmgType) & 1) == 1) { output.Append("Slash"); } if ((item.Values(LongValueKey.WandElemDmgType) & 2) == 2) { output.Append("Pierce"); } if ((item.Values(LongValueKey.WandElemDmgType) & 4) == 4) { output.Append("Bludge"); } if ((item.Values(LongValueKey.WandElemDmgType) & 8) == 8) { output.Append("Cold"); } if ((item.Values(LongValueKey.WandElemDmgType) & 16) == 16) { output.Append("Fire"); } if ((item.Values(LongValueKey.WandElemDmgType) & 32) == 32) { output.Append("Acid"); } if ((item.Values(LongValueKey.WandElemDmgType) & 64) == 64) { output.Append("Electrical"); } } output.Append(","); output.Append((item.Values(DoubleValueKey.Variance) > 0 ? item.Values(DoubleValueKey.Variance).ToString("N3") : String.Empty) + ","); output.Append((item.Values(LongValueKey.MaxDamage) > 0 ? item.Values(LongValueKey.MaxDamage).ToString() : String.Empty) + ","); output.Append((item.Values(LongValueKey.ElementalDmgBonus, 0) != 0 ? item.Values(LongValueKey.ElementalDmgBonus).ToString() : String.Empty) + ","); output.Append((item.Values(DoubleValueKey.DamageBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.DamageBonus) - 1) * 100)).ToString() : String.Empty) + ","); output.Append((item.Values(DoubleValueKey.ElementalDamageVersusMonsters, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.ElementalDamageVersusMonsters) - 1) * 100)).ToString() : String.Empty) + ","); output.Append((item.Values(DoubleValueKey.AttackBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.AttackBonus) - 1) * 100)).ToString() : String.Empty) + ","); output.Append((item.Values(DoubleValueKey.MeleeDefenseBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.MeleeDefenseBonus) - 1) * 100)).ToString() : String.Empty) + ","); output.Append((item.Values(DoubleValueKey.MagicDBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.MagicDBonus) - 1) * 100), 1).ToString() : String.Empty) + ","); output.Append((item.Values(DoubleValueKey.MissileDBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.MissileDBonus) - 1) * 100), 1).ToString() : String.Empty) + ","); output.Append((item.Values(DoubleValueKey.ManaCBonus) != 0 ? Math.Round((item.Values(DoubleValueKey.ManaCBonus) * 100)).ToString() : String.Empty) + ","); output.Append((mwo.GetBuffedIntValueKey((int)LongValueKey.MaxDamage) > 0 ? mwo.GetBuffedIntValueKey((int)LongValueKey.MaxDamage).ToString() : String.Empty) + ","); output.Append((mwo.GetBuffedIntValueKey((int)LongValueKey.ElementalDmgBonus) > 0 ? mwo.GetBuffedIntValueKey((int)LongValueKey.ElementalDmgBonus).ToString() : String.Empty) + ","); output.Append((mwo.GetBuffedDoubleValueKey((int)DoubleValueKey.DamageBonus, 1) != 1 ? Math.Round(((mwo.GetBuffedDoubleValueKey((int)DoubleValueKey.DamageBonus) - 1) * 100)).ToString() : String.Empty) + ","); output.Append((mwo.BuffedElementalDamageVersusMonsters != -1 ? Math.Round(((mwo.BuffedElementalDamageVersusMonsters - 1) * 100)).ToString() : String.Empty) + ","); output.Append((mwo.BuffedAttackBonus != -1 ? Math.Round(((mwo.BuffedAttackBonus - 1) * 100)).ToString() : String.Empty) + ","); output.Append((mwo.BuffedMeleeDefenseBonus != -1 ? Math.Round(((mwo.BuffedMeleeDefenseBonus - 1) * 100)).ToString() : String.Empty) + ","); output.Append((mwo.BuffedManaCBonus != -1 ? Math.Round(mwo.BuffedManaCBonus * 100).ToString() : String.Empty) + ","); output.Append((item.Values(LongValueKey.WieldReqValue) > 0 ? item.Values(LongValueKey.WieldReqValue).ToString() : String.Empty) + ","); output.Append((item.Values(LongValueKey.Workmanship) > 0 ? item.Values(LongValueKey.Workmanship).ToString() : String.Empty) + ","); output.Append((item.Values(LongValueKey.Value) > 0 ? item.Values(LongValueKey.Value).ToString() : String.Empty) + ","); output.Append((item.Values(LongValueKey.Burden) > 0 ? item.Values(LongValueKey.Burden).ToString() : String.Empty) + ","); writer.WriteLine(output); writer.Close(); } }