Mining kolem sebe

Skripty týkající se tohoto externího programu

Moderátor: Caleb

Odpovědět
Uživatelský avatar
Mole Two
Book Snake
Book Snake
Příspěvky: 113
Registrován: 07 zář 2006 18:25
Kontaktovat uživatele:

Mining kolem sebe

Příspěvek od Mole Two »

Minig co vykope okolí. Podpora vyhazování / přeskakování rudy.

Btw: vyskakujou ještě monstra při kopání nebo se to už zrušilo? :p

Kód: Vybrat vše

using System;
using System.Collections.Generic;
using System.Linq;
using Phoenix.WorldData;

namespace Phoenix.Scripts {
    public class Mining {
        private const ushort PickaxeGraphic = 0x0E85;
        private const int MiningRadius = 2;

        public Mining() {
            ores = new List<OreInfo>() {
                new OreInfo( "Iron", 0x0000, true, true ),
                new OreInfo( "Copper", 0x0289, true, true ), 
                new OreInfo( "Bronze", 0x01BF, true, false ),
                new OreInfo( "Silver", 0x0482, true, false ), 
                new OreInfo( "Shadow", 0x0322, true, false ), 
                new OreInfo( "Rose", 0x0665, true, true ),
                new OreInfo( "Golden", 0x0160, true, false ),
                new OreInfo( "Verite", 0x01CB, false, false ),
                new OreInfo( "Valorite", 0x0253, false, false ), 
                new OreInfo( "Blood Rock", 0x04C2, false, false ),
                new OreInfo( "Black Rock", 0x0455, false, false ),
                new OreInfo( "Mytheril", 0x052D, false, false ),
                new OreInfo( "Star Sapphire", 0x0006, false, false ), 
                new OreInfo( "Emerald", 0x0041, false, false ),
                new OreInfo( "Citrine", 0x002C, false, false ),
                new OreInfo( "Amethyst",0x0015, false, false ),
                new OreInfo( "Ruby", 0x0027, false, false ), 
                new OreInfo( "Diamond", 0x03E9, false, false ),
            };
        }

        private List<OreInfo> ores;

        private bool DropOres() {
            bool dropped = false;

            foreach ( OreInfo ore in ores )
                dropped |= ore.DropIfRequired();

            return dropped;
        }

        [Executable( "mining" ), BlockMultipleExecutions( "mining" )]
        public void Start() {
            Start( true );
        }
        [Executable( "mining" ), BlockMultipleExecutions( "mining" )]
        public void Start( bool hide ) {
            int lastUse = 0;

            for ( int x = -MiningRadius; x < MiningRadius; x++ ) {
                for ( int y = -MiningRadius; y < MiningRadius; y++ ) {
                    UO.PrintInformation( "Mining at {0}, {1}", x, y );
                    do {
                        while ( !World.Player.Hidden && hide ) {
                            UO.PrintInformation( "Trying to hide" );
                            Journal.Clear();
                            UO.UseSkill( StandardSkill.Hiding );
                            Journal.WaitForText( "You can't seem to hide here.", "You have hidden yourself well" );
                            UO.Wait( 500 );
                        }

                        UOItem pickaxe = World.Player.Layers[ Layer.RightHand ];
                        if ( !pickaxe.Exist || pickaxe.Graphic != PickaxeGraphic ) {
                            pickaxe = World.Player.Backpack.AllItems.FindType( PickaxeGraphic );
                            if ( !pickaxe.Exist )
                                throw new ScriptErrorException( "No pickaxe found" );
                        }
                        Journal.Clear();
                        UO.WaitTargetTileRel( x, y, 0, 0 );
                        UO.Wait( Math.Max( 0, 3500 - ( Environment.TickCount - lastUse ) ) );
                        lastUse = Environment.TickCount;
                        pickaxe.Use();
                        Journal.WaitForText( "ore in your pack.", "ores in your pack.", "There is no ore here to mine.", "You loosen some rocks but fail to find any useable ore.", "Jeste nemuzes pouzit krumpac", "*You destroy pickaxe*" );
                        UO.Wait( 500 );

                        if ( DropOres() )
                            break;

                        if ( Journal.Contains( "Jeste nemuzes pouzit krumpac" ) )
                            UIManager.Reset();

                    } while ( !Journal.Contains( "There is no ore here to mine." ) );
                }
            }

            UO.PrintInformation( "Mining finished" );
        }

        #region Nested type: OreInfo

        private class OreInfo {
            private const ushort OreMinGraphic = 0x19B7;
            private const ushort OreMaxGraphic = 0x19BA;

            public OreInfo( string name, UOColor color, bool drop, bool skip ) {
                Name = name;
                Color = color;
                Drop = drop;
                Skip = skip;
            }

            public IEnumerable<UOItem> Find( ItemsCollection list ) {
                return from i in list
                       where i.Graphic >= OreMinGraphic && i.Graphic <= OreMaxGraphic && i.Color == Color
                       select i;
            }

            public bool DropIfRequired() {
                if ( !Drop )
                    return false;

                var items = Find( World.Player.Backpack.AllItems );

                if ( items.Count() <= 0 )
                    return false;

                foreach ( UOItem item in items ) {
                    UOItem pile = Find( World.Ground ).Where( i => i.Distance <= 1 ).FirstOrDefault();

                    if ( pile != null )
                        item.Move( item.Amount, pile );
                    else
                        item.DropHere();
                }

                return Skip;
            }

            #region Public properties

            public string Name {
                get;
                private set;
            }

            public UOColor Color {
                get;
                private set;
            }

            public bool Drop {
                get;
                private set;
            }

            public bool Skip {
                get;
                private set;
            }

            #endregion
        }

        #endregion
    }
}
Evil League of Evil
Uživatelský avatar
Legend Of Pain
Pencil Master
Pencil Master
Příspěvky: 596
Registrován: 26 kvě 2008 16:31

Re: Mining kolem sebe

Příspěvek od Legend Of Pain »

Kód: Vybrat vše

12.06.2010 22:38:26 - Acarus
- pri miningu uz neskacou monstra
- pri lumberjackingu take uz neskacou monstra
- domination deed uz nehazi pod guards
clear brainwashing
dNb prezents
Uživatelský avatar
Mole Two
Book Snake
Book Snake
Příspěvky: 113
Registrován: 07 zář 2006 18:25
Kontaktovat uživatele:

Re: Mining kolem sebe

Příspěvek od Mole Two »

cool, let's make money afk!
Evil League of Evil
Uživatelský avatar
Legend Of Pain
Pencil Master
Pencil Master
Příspěvky: 596
Registrován: 26 kvě 2008 16:31

Re: Mining kolem sebe

Příspěvek od Legend Of Pain »

Kód: Vybrat vše

14.10.2008 08:37	Shade	b923cf	-	AFK Mining, druhý prohřešek. *None*
29.09.2008 09:21	Darken Rahl	0d46fb	-	AFK Mining, druhý prohřešek. *None*
14.08.2008 08:27	Shade	b923cf	-	AFK mining, první AFK prohřešek *Sofi*
14.04.2008 10:29	Dr.Green	9dd8f1	-	AFK mining, první AFK prohřešek *Sofi*
!!!
clear brainwashing
dNb prezents
Uživatelský avatar
Mole Two
Book Snake
Book Snake
Příspěvky: 113
Registrován: 07 zář 2006 18:25
Kontaktovat uživatele:

Re: Mining kolem sebe

Příspěvek od Mole Two »

Evil League of Evil
Uživatelský avatar
Ján Páleš
Book Snake
Book Snake
Příspěvky: 92
Registrován: 16 zář 2013 18:38
Kontaktovat uživatele:

Re: Mining kolem sebe

Příspěvek od Ján Páleš »

joooooj asi tu nie je ani skript, s ktorým som ešte nemal trable. som dobrý no... :-D
tento skript kope, kope a akonáhle vyhodím rudu, prestane. niekedy skôr, niekedy po, napr. 50 kusoch, ale vždy prestane.
skúsil som zmeniť hodnotu " public bool DropIfRequired() { if ( !Drop ) return false;" na "......... return true", zo zúfalstva som zemnil aj "if ( items.Count() <= 0 )" na "true", ale stále no-go a musím rudu zodvihnúť, preniesť a roztaviť. následne ešte stále bežiace makro (!!!) zrušiť a reštartovať.

nejaké nápady pls?
moja armáda núbov zahŕňa - Ecki (vamp), Joneleth (necro), Nubik Obycajny (loladin), Astar (cleric), Katrina (craft), Silverblade (craft), Beregond (warr), Elliara (mage), Asminia (ranger). because I can... ICQ = 261129403, email = eckister@gmail.com
Wallace
Pencil Master
Pencil Master
Příspěvky: 592
Registrován: 18 říj 2006 12:18
Kontaktovat uživatele:

Re: Mining kolem sebe

Příspěvek od Wallace »

nj kde sou casy kdy takovy scripty nebyly:-) tedka to zavas samo vykope, samo chodi, samo jde pretavit, sami hodi do banky apod,:p jen das ,exec blabla, pak se div ze lidi uo neumi :-)
Uživatelský avatar
Me
Elder Letter
Elder Letter
Příspěvky: 230
Registrován: 07 zář 2006 19:09

Re: Mining kolem sebe

Příspěvek od Me »

A proč by ji neuměli? Dřív se taky chodilo do kadibudky místo na splachovací záchod, ale vy*rat se umí pořád všichni stejně.
[color=#BF0000]
_____,^==¬¬¬¬___/|_
)_,.--'''[ µ"\_\****”””””””
[/color]
Uživatelský avatar
Ján Páleš
Book Snake
Book Snake
Příspěvky: 92
Registrován: 16 zář 2013 18:38
Kontaktovat uživatele:

Re: Mining kolem sebe

Příspěvek od Ján Páleš »

Wallace píše:nj kde sou casy kdy takovy scripty nebyly:-) tedka to zavas samo vykope, samo chodi, samo jde pretavit, sami hodi do banky apod,:p jen das ,exec blabla, pak se div ze lidi uo neumi :-)
to je ale nekonečná studnica múdrosti, táto osoba... :-D
voľakedy som tiež kopával "manuálne" (nastavil som si na F10 last item+last target, zameral som jednu časť zeme a ťukal. keď došla ruda, zameral som ďalšiu časť a išlo sa ďalej), ale teraz ozaj nevidím dôvod ani priestor takto pokračovať (vtedy som mal času a času, teraz mám práce a práce. preto som rád a neskonale vďačný, že môžeme skriptovať).
jaj síce sorry - JA UO VIEM!!! ČO TO TREPEŠ!!! POĎ NA NÁMESTIE, VYBAVÍME SI TO RAZ A NAVŽDY!!!
a toľko ku kultúrnej vložke...
moja armáda núbov zahŕňa - Ecki (vamp), Joneleth (necro), Nubik Obycajny (loladin), Astar (cleric), Katrina (craft), Silverblade (craft), Beregond (warr), Elliara (mage), Asminia (ranger). because I can... ICQ = 261129403, email = eckister@gmail.com
Odpovědět