,exec lootuj false - neřeže předtím
,exec lootuj true - řeže
Kód:
using System;
using System.Collections.Generic;
using Phoenix;
using Phoenix.WorldData;
using Scripts.DarkParadise;
namespace Moje
{
public class MyLoot
{
public const ushort SpidersSilk = 0x0F8D;
public const ushort Corpse = 0x2006;
[Executable]
public void RizniVse()
{
UOItem cutter = World.Player.Backpack.AllItems.FindType(0x10E4); // draw knife
if (!cutter.Exist)
cutter = World.Player.Backpack.Items.FindType(0x0E87); // vidle
if (!cutter.Exist)
cutter = World.Player.Backpack.AllItems.FindType(0x1405); // war fork
if (!cutter.Exist)
cutter = World.Player.Backpack.Items.FindType(0x2119, 0x0530); // bastet rezatko
if (!cutter.Exist)
{
ScriptErrorException.Throw("Cannot find anything to cut with.");
return;
}
foreach (UOItem item in World.Ground)
{
if (item.Graphic == Corpse)
{
Notoriety notoriety = CorpsesNotoriety.Get(item, 5000);
switch (notoriety)
{
case Notoriety.Unknown:
UO.PrintWarning("Unknown notoriety of {0}. Corpse skipped.", item);
break;
case Notoriety.Criminal:
case Notoriety.Murderer:
case Notoriety.Neutral:
item.WaitTarget();
cutter.Use();
UO.Wait(500); // TODO
break;
default:
break;
}
}
}
}
[Executable]
[BlockMultipleExecutions]
public void Lootuj(bool rezat)
{
if (!Aliases.RecevingContainer.IsValid)
{
ScriptErrorException.Throw("RecevingContainer not set.");
}
//ScriptErrorException.ExceptionEnabled = false;
World.FindDistance = 6;
UO.PrintInformation("Loot started");
if (rezat)
RizniVse();
//UIManager.Reset();
foreach (UOItem item in World.Ground)
{
if (item.Graphic == Corpse)
{
if (CheckCorpse(item))
{
if (!item.Opened)
{
item.Use();
UO.Wait(500);
}
LootujMrtvolu(item.Items);
}
}
else if (item.Graphic == SpidersSilk && item.Color == 0 && item.Amount < 2)
{
continue;
}
else if (lootTypes.Contains(new ItemType(item.Graphic, item.Color)))
{
item.Grab();
UO.Wait(300);
}
}
UO.PrintInformation("Loot finished");
UklidBagl();
}
private void LootujMrtvolu(ItemsCollection collection)
{
foreach (UOItem item in collection)
{
if (lootTypes.Contains(new ItemType(item.Graphic, item.Color)))
{
//Journal.Clear();
item.Grab();
//Journal.WaitForText(true, 5000, "akce skoncila");
UO.Wait(500);
}
}
}
private struct ItemType
{
public ItemType(Graphic graphic, UOColor color)
{
Graphic = graphic;
Color = color;
}
public Graphic Graphic;
public UOColor Color;
}
private List<ItemType> lootTypes;
public MyLoot()
{
lootTypes = new List<ItemType>();
AddType(0x0F3F, UOColor.Invariant); // Arrow
AddType(0x1BFB, UOColor.Invariant); // Bolt
AddType(0x0E29, UOColor.Invariant); // Bandages
AddType(0x0F8D, UOColor.Invariant); // SS
AddType(0x0EED, UOColor.Invariant); // Gold Coins
AddType(0x0F7B, UOColor.Invariant); // BM
AddType(0x0F7A, UOColor.Invariant); // BP
AddType(0x0F84, UOColor.Invariant); // GA
AddType(0x0F85, UOColor.Invariant); // GI
AddType(0x0F86, UOColor.Invariant); // MR
AddType(0x0F88, UOColor.Invariant); // NS
AddType(0x0F8C, UOColor.Invariant); // SA
AddType(0x0F79, UOColor.Invariant); // Blackmoor
AddType(0x1bd1, UOColor.Invariant); // Peri
AddType(0x0F78, UOColor.Invariant); // Batwings
AddType(0x0F87, UOColor.Invariant); // Eyes of Newt
AddType(0x14EB, UOColor.Invariant); // Treassure Map
AddType(0x0E80, UOColor.Invariant); // Poklad
AddType(0x0E76, 0x049A); // Pytlik
AddType(0x097A, UOColor.Invariant); // Alligator Hide
AddType(0x097B, UOColor.Invariant); // Snake skin
AddType(0x097C, UOColor.Invariant); // nevim, treba dalsi trofej
AddType(0x097D, UOColor.Invariant); // nevim, treba dalsi trofej
AddType(0x097E, 0x0037); // a Wolf Pelt
// AddType(0x1078, UOColor.Invariant); // Hides
AddType(0x1F13, UOColor.Invariant); // skillpointy
AddType(0x0E34, 0x0000); // Blank Scroll
AddType(0x0F20, UOColor.Invariant); // Tourmaline
AddType(0x0F8E, UOColor.Invariant); // Serpent Scales
AddType(0x0F79, UOColor.Invariant); // Blackmoor
AddType(0x0F91, UOColor.Invariant); // Wyrms Heart
AddType(0x0F80, UOColor.Invariant); // daemon bones
AddType(0x0F7E, UOColor.Invariant); // bones
AddType(0x0F83, UOColor.Invariant); // Executioner's Cap
AddType(0x108A, UOColor.Invariant); // Ring
AddType(0x1086, 0x0000); // Bracelet
AddType(0x1088, UOColor.Invariant); // Neclase
AddType(0x1848, 0); // Elixir DOPLNIT BARVY, NEDAVAT INVARIANT KVULI MYSTIKU
//AddType(0x1848, 0); // Elixir
//AddType(0x1848, 0); // Elixir
//AddType(0x1848, 0); // Elixir
//AddType(0x1848, 0); // Elixir
//AddType(0x0F7E, UOColor.Invariant); //
AddType(0x139A, UOColor.Invariant); // Statue
AddType(0x0F82, UOColor.Invariant); //
AddType(0x0F7D, UOColor.Invariant); //
AddType(0x0E9C, UOColor.Invariant); // Drums
AddType(0x0EB2, UOColor.Invariant); // Harp
AddType(0x0EB2, UOColor.Invariant); // Lute
AddType(0x14ED, UOColor.Invariant); // Deed 1
AddType(0x14EE, UOColor.Invariant); // Deed 2
AddType(0x0F7F, UOColor.Invariant); //
AddType(0x0F7C, UOColor.Invariant); //
AddType(0x0F79, UOColor.Invariant); //
AddType(0x0F89, UOColor.Invariant); //
AddType(0x0F81, UOColor.Invariant); //
AddType(0x0FF4, UOColor.Invariant); // knihy
AddType(0x136C, UOColor.Invariant); // HoDF, Myst. Stone
AddType(0x0F8F, UOColor.Invariant); //
AddType(0x0F8B, UOColor.Invariant); //
AddType(0x1406, 0x031E); // a Stunning Warmace
AddType(0x0D16, 0x00A3); // a Mystical Mushroom
AddType(0x0DBD, 0x0B9F); // a Mystical Leaf
AddType(0x1A9D, 0x0481); // a Mystical Stick
AddType(0x0F5A, 0x0044); // a Mystic Crystal
AddType(0x0E73, 0x0B9F); // a Mystical Ball
AddType(0x0E26, 0x049D); // a Spirit of the Rain
AddType(0x0F91, 0x014D); // Heart of Rainbow Dragon
AddType(0x1420, 0x0152); // Cobwebby string
AddType(0x097E, 0x0037); // a Wolf Pelt
AddType(0x0CB0, 0x0899); // a Mystical Plant
AddType(0x0DC3, 0x005B); // a Mystical Flower
AddType(0x1F03, 0x0771); // Mage's robe
AddType(0x1F03, 0x0455); // Death's robe, pozor, bere to i obyc roby
AddType(0x13B9, 0x0480); // Ice Viking Sword
AddType(0x09D0, 0x09B4); // God's Apple
AddType(0x13FC, 0x0237); // Elven Heavy Crossbow
AddType(0x379F, 0x0055); // Elfi tetiva
AddType(0x108B, 0x0BB5); // a Mystical Beeds
AddType(0x0DC3, 0x005B); // a Mystical Flower
}
public void AddType(Graphic graphic, UOColor color)
{
lootTypes.Add(new ItemType(graphic, color));
}
private bool CheckCorpse(UOItem item)
{
// male female imp garga
//ushort[] forbiddenCorpses = new ushort[] { 0x0190, 0x0191, 0x0027, 0x0004 };
// return Array.IndexOf<ushort>(forbiddenCorpses, item.Amount) < 0;
Notoriety n = CorpsesNotoriety.Get(item, 2000);
return n != Notoriety.Innocent && n != Notoriety.Guild && n != Notoriety.Unknown;
}
public void UklidBagl()
{
foreach (UOItem item in World.Player.Backpack.Items)
{
if (lootTypes.Contains(new ItemType(item.Graphic, item.Color)))
{
using (ItemUpdateEventWaiter ew = new ItemUpdateEventWaiter(item))
{
item.Move(ushort.MaxValue, Aliases.RecevingContainer);
ew.Wait(2000);
UO.Wait(200);
}
}
}
UO.Print("Hotovo");
}
}
}