Razielovy scripty

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

Moderátor: Caleb

Líbí se vám scripty ?

Ano, některé použiju.
87
82%
Ne, žádný jsem nepoužil.
10
9%
Mám svoje scripty.
9
8%
 
Celkem hlasů: 106

Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

třídění mapek
,mapy <tolerance> -tolerance je rozmezí u kterého se dávají k sobě pytlíky podobných souřadnic já dávám 50
třídí mapky podle souřadnic, musíte mít u sebe container package na pytlíky, mapky mějte někde mimo základní batoh, na zemi nebo v truhle, roztřízené mapky taky (takže máte truhlu kde máte pytlíky ve kterých máte mapky stejných souřadnic a pak máte jakékoliv kontejnery s neroztřízenýma mapkama). script nejdříve načte už roztřízené pytlíky a souřadnice a do nich zatřídí nové mapky. Pokud máte mapky nevyluštěné, tak se vám vyluští i zatřídí, přidal jsem tam upravu pro lidi co nemaj cartography ale to nemám na čem vyzkoušet, tak když tak reportněte jestli to jede nebo ne.

Kód: Vybrat vše

using System;
using Phoenix.Communication;
using System.Collections.Generic;
using System.Text;
using Phoenix;
using Phoenix.WorldData;

namespace Phoenix.Scripts.Raziel
{
    public class Mapy
    {
        private const float MapSizeMultiplier = 3f;
        private const ushort MapZoom = 720;
        
        class Mapka{
            public int x{get; set;}
            public int y{get; set;}
            public Serial pytel{get; set;}
        }
        
        public UOItem pytel=null;
        
        [Command]
        public void mapy(int tolerance){
            //crafted by Raziel
            String text;
            UOItem batoh = new UOItem(Aliases.Backpack);
            int refx, refy;
            bool naslinasiradcove;
            bool nacteno=false;
            int pocetmapek=0, pocetrozlustenych=0, levelrozlustenych=0;
            String pom;
            UOItem mapka;
            List<Mapka> listmap=new List<Mapka>();

            if (UO.Count(0x0E3F)==0){
                UO.Print("Nemas container package s pytlikama.");
                return;
            }
            if (UO.Count(0x0E76)>0){
                UO.Print("Vyhod vsechny pytliky.");
                return;
            }

            UO.Print("Kde mas rozdelene mapky(taky kam hazet pytliky s mapama)?");
            UOItem cilbatoh=new UOItem(UIManager.TargetObject());
            
            do {
                UO.Print("Kde jsou mapy?");
                pytel=new UOItem(UIManager.TargetObject());
                
                if ((pytel==null ||!pytel.Exist)) {
                    UO.Print("Mapek bylo celkem: "+pocetmapek);
                    UO.Print("Rozlustenych mapek bylo celkem: "+pocetrozlustenych);
                    UO.Print("Level rozlustenych mapek byl celkem: "+levelrozlustenych);
                    return;
                }
                
                if (!nacteno){
                    nactiRozdeleneMapky(listmap, cilbatoh);
                    nacteno=true;
                }
                    
                pytel.Use();
                UO.Wait(500);
                while (!pytel.Opened)
                    UO.Wait(100);
                do{
                    UO.DeleteJournal();
                    naslinasiradcove=false;
                    mapka=UO.FindType("mapky", 0x14EB, 0x0000, pytel.Serial);
                    if (mapka==null ||!mapka.Exist)
                        break;
                    pocetmapek++;
                    presunItem(mapka, Aliases.Backpack);
                                            
                    mapka.Use();
                    while (!UO.InJournal("Map is")&&!UO.InJournal("Rozlustil jsi")&&!UO.InJournal("Chybna mapa")&&!UO.InJournal("Nejsi") )
                        UO.Wait(500);
                    if (UO.InJournal("Rozlustil jsi")){
                        UO.Wait(500);
                        zvedniLevelRozlustenych(ref levelrozlustenych, ref pocetrozlustenych);
                    }
                    if (UO.InJournal("Nejsi")){
                        presunItem(mapka, cilbatoh);
                        continue;
                    }                    
                    if (!UO.InJournal("Map is")){
                        UO.DeleteJournal();
                        UO.Wait(100);
                        mapka=UO.FindType("mapky", 0x14EB, 0x0000, Aliases.Backpack);
                        mapka.Use();
                        while (!UO.InJournal("Map is")&&!UO.InJournal("Rozlustil jsi")&&!UO.InJournal("Chybna mapa")&&!UO.InJournal("Nejsi") )
                            UO.Wait(500);
                    }
                    if (UO.InJournal("Rozlustil jsi")){
                        UO.Wait(100);
                        zvedniLevelRozlustenych(ref levelrozlustenych, ref pocetrozlustenych);
                    }
                    if (UO.InJournal("Nejsi")){
                        presunItem(mapka, cilbatoh);
                        continue;
                    }  
                    if (!UO.InJournal("Map is")){
                        UO.DeleteJournal();
                        mapka=UO.FindType("mapky", 0x14EB, 0x0000, Aliases.Backpack);
                        mapka.Use();
                        while (!UO.InJournal("Map is")&&!UO.InJournal("Rozlustil jsi")&&!UO.InJournal("Chybna mapa")&&!UO.InJournal("Nejsi") )
                            UO.Wait(500);
                        if (UO.InJournal("Nejsi")){
                            presunItem(mapka, cilbatoh);
                            continue;
                        }                              
                        if (UO.InJournal("Chybna mapa")) {
                            UO.Wait(500);
                            mapka=UO.FindType("mapky", 0x14EB, 0x0000, Aliases.Backpack);
                            mapka.Use();
                        }
                        if (UO.InJournal("Nejsi")){
                            presunItem(mapka, cilbatoh);
                            continue;
                        }  
                        if (!UO.InJournal("Map is")){
                            UO.DeleteJournal();
                            mapka.Use();
                        }
                    }

                    Journal.WaitForText("Map is");
                    text=Journal.GetLine(Journal.Find("Map is")).Text;                
                    
                    pom=text.Substring(10);
                    String[] casti=pom.Split(',');
                    refx= Int32.Parse(casti[0]);
                    refy=Int32.Parse(casti[1]);
                    
                    foreach (Mapka m in listmap){
                        if (((refx>=(m.x-tolerance))&&(refx<=(m.x+tolerance))) && 
                            ((refy>=(m.y-tolerance))&&(refy<=(m.y+tolerance)))) {
                            UO.Print("vidite to ... jsou stejne");
                            presunItem(mapka, m.pytel);
                            naslinasiradcove=true;
                            break;
                        }
                    }
                    if (!naslinasiradcove) {
                        UO.Print("nenasli...");
                        UO.UseType(0x0E3F);
                        UO.WaitTargetSelf();
                        UO.Wait(500);
                        Journal.WaitForText("in your pack");
                        Mapka novamapka=new Mapka();
                        novamapka.x=refx;
                        novamapka.y=refy;
                        UO.Print("souradnice "+novamapka.x+" "+novamapka.y);
                        foreach (UOItem item in batoh.AllItems){
                            if ((item.Graphic==0x0E76)){
                                item.Use();
                                UO.Wait(500);
                                while (!item.Opened)
                                    UO.Wait(100);
                                if (item.AllItems.CountItems()==0){
                                    novamapka.pytel=item.Serial;                                
                                    break;
                                }
                            }
                        }
                        presunItem(mapka, novamapka.pytel);
                        presunItem(new UOItem(novamapka.pytel), cilbatoh);
                        listmap.Add(novamapka);
                    }
                    UO.Wait(500);
                }while  (mapka!=null);    
            }while  (mapka!=null);    
        }
        
        private void presunItem(UOItem item, Serial kam)
        {
            Serial s=item.Container;
            UO.MoveItem(item.Serial, 0, kam);
            UO.Wait(500);
            while (item.Container==s)
                UO.Wait(100);    
        }
        
        private void zvedniLevelRozlustenych(ref int levelrozlustenych, ref int pocetrozlustenych)
        {
            pocetrozlustenych++;
            if (UO.InJournal("Level 1"))
                levelrozlustenych+=1;
            if (UO.InJournal("Level 2"))
                levelrozlustenych+=2;
            if (UO.InJournal("Level 3"))
                levelrozlustenych+=3;
            if (UO.InJournal("Level 4"))
                levelrozlustenych+=4;
            if (UO.InJournal("Level 5"))
                levelrozlustenych+=5;
        }
        
        private void nactiRozdeleneMapky(List<Mapka> listmap, UOItem cilbatoh){
            int pocitadlo=0;
            cilbatoh.Use();
            UO.Wait(500);
            while (!cilbatoh.Opened)
                UO.Wait(100);
                            
            foreach (UOItem item in cilbatoh.AllItems) {
                if ((item.Graphic==0x0E76)){//je to pytlik   
                    UO.DeleteJournal();
                    item.Use();
                    UO.Wait(500);
                    while (!item.Opened)
                        UO.Wait(100);
                    UOItem mapka=item.AllItems.FindType(0x14EB);
                    
                    if (mapka==null ||!mapka.Exist){
                        UO.Wait(500);
                        //TODO prazdny pytlik do konteineru
                        UO.MoveItem(item.Serial, 0, UO.Backpack);
                        UO.Wait(500);
                        continue;
                    }
                    UO.MoveItem(mapka.Serial, 0, Aliases.Backpack);
                    UO.Wait(500);
                    mapka.Use();
                    UO.Wait(500);
                    if (UO.InJournal("Chybna mapa")) {                        
                        UO.Wait(500);
                        do {
                            mapka=item.AllItems.FindType(0x14EB);
                            if (mapka==null || !mapka.Exist) {
                                break;
                            }                                
                            UO.MoveItem(mapka.Serial, 0, pytel.Serial);
                            UO.Wait(500);
                        }
                        while (true);
                        UO.MoveItem(item.Serial, 0, UO.Backpack);
                        UO.Wait(500);
                        continue;
                    }
                    Journal.WaitForText("Map is");
                    String text=Journal.GetLine(Journal.Find("Map is")).Text;
                    
                    Mapka novamapka=new Mapka();
                    String pom=text.Substring(10);
                    String[] casti=pom.Split(',');
                    novamapka.x= Int32.Parse(casti[0]);
                    novamapka.y=Int32.Parse(casti[1]);                  
                    novamapka.pytel=item.Serial;
                    listmap.Add(novamapka);
                    UO.MoveItem(mapka.Serial, 0, novamapka.pytel);
                    UO.Wait(500);
                    
                    pocitadlo++;
                    if (pocitadlo==10){
                        cilbatoh.Use();
                        UO.Wait(500);
                        pocitadlo=0;
                    }
                }
            }
        }
        
        [Command]
        public void Track()
        {
            Track(false, 0, 0);
        }
        [Command]
        public void Track(ushort x, ushort y)
        {
            Track(true, x, y);
        }
        private void Track(bool enable, ushort x, ushort y)
        {
            PacketWriter writer = new PacketWriter(0xba);
            writer.Write(enable ? (byte)0x1 : (byte)0x0);
            writer.Write(x);
            writer.Write(y);

            Core.SendToClient(writer.GetBytes());
        }

        [ServerMessageHandler(0x90)]
        public CallbackResult OnMapInfo(byte[] data, CallbackResult prevResult)
        {
            PacketReader reader = new PacketReader(data);
            reader.Skip(1);
            uint serial = reader.ReadUInt32();
            ushort gump = reader.ReadUInt16();
            ushort ux = reader.ReadUInt16();
            ushort uy = reader.ReadUInt16();
            ushort lx = reader.ReadUInt16();
            ushort ly = reader.ReadUInt16();
            ushort width = reader.ReadUInt16();
            ushort height = reader.ReadUInt16();

            ushort x = (ushort)(ux + 180 * (lx - ux > 361 ? -1 : 1));
            ushort y = (ushort)(uy + 180 * (ly - uy > 361 ? -1 : 1));

            UO.PrintInformation("Map is at {0},{1}", x, y);
            Track(x, y);

            PacketWriter writer = new PacketWriter(0x90);
            writer.Write(serial);
            writer.Write(gump);
            writer.Write((ushort)(x - MapZoom));
            writer.Write((ushort)(y - MapZoom));
            writer.Write((ushort)(x + MapZoom));
            writer.Write((ushort)(y + MapZoom));
            writer.Write((ushort)(width * MapSizeMultiplier));
            writer.Write((ushort)(height * MapSizeMultiplier));
            Core.SendToClient(writer.GetBytes());

            return CallbackResult.Sent;
        }

        [ServerMessageHandler(0x56)]
        public CallbackResult OnPinInfo(byte[] data, CallbackResult prevResult)
        {
            if (data[5] > 4)
                return prevResult;

            ushort x = ByteConverter.BigEndian.ToUInt16(data, 7);
            ushort y = ByteConverter.BigEndian.ToUInt16(data, 9);

            Array.Copy(ByteConverter.BigEndian.GetBytes((ushort)(x * MapSizeMultiplier)), 0, data, 7, 2);
            Array.Copy(ByteConverter.BigEndian.GetBytes((ushort)(y * MapSizeMultiplier)), 0, data, 9, 2);

            return prevResult;
        }

        [ClientMessageHandler(0x56)]
        public CallbackResult OnPinAction(byte[] data, CallbackResult prevResult)
        {
            if (data[5] > 4)
                return prevResult;

            ushort x = ByteConverter.BigEndian.ToUInt16(data, 7);
            ushort y = ByteConverter.BigEndian.ToUInt16(data, 9);

            Array.Copy(ByteConverter.BigEndian.GetBytes((ushort)(x / MapSizeMultiplier)), 0, data, 7, 2);
            Array.Copy(ByteConverter.BigEndian.GetBytes((ushort)(y / MapSizeMultiplier)), 0, data, 9, 2);

            return prevResult;
        }
    }
}
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

,lumb
pokud máte soubory nahrané pod jinou cestou tak si to změnte jsou to tyhle texty: pro těžení "phoenix//scripts//makra//lumber.txt" a pro nahrávání cesty "phoenix//scripts//makra//test.txt"
pokud nemáte moje skripty na portění nb runou a cestovní knihou tak si je stáhněte a nebo si přepište portění na svoje skripty(pokud víte jak)

lumberjacking co odnáší dřevo nb runou a cestovní knihou portí zpátky projde kde už ste byli a pokračuje dále
-přepišete si tenhle řádek na svůj serial-> Serial bedna=0x40251B81;
-další uprava pokud nechcete brát obyčejné dřevo zapiště 1
//Tady dopln co chces vyhazovat 0=nevyhazovat 1=vyhazovat
vyhazovat[0] = 0; //Drevo brát vyhazovat[0] = 1; //Drevo nebrat
-tady phoenix//scripts//makra//lumber.txt si uložíte vlastní cestu
formát souboru:
X Y //vaše souřadnice
počet //počet stromů kolik budete těžit
X Y Z TYP //stromy X Y Z jsou souřadnice typ zjistíte přes ,info
KROKY //N-nahoru D-dolu L-vlevo P-vpravo
1000 2000
2
1002 2002 0 0x0CD4
1000 2002 0 0x0CCE
N N L L
998 1998
4
998 1996 0 0x0CD4
998 2000 0 0x0CD7
1000 1996 0 0x0CCE
1000 1997 0 0x0CE7
P P D D

Co je důležité: nemusíte to dělat ale jestli chcete at vám script běží věčně, nahrajte si takovou cestu která vypadá tak jak mám v ukázce - posledními kroky se dostanete opět na začátek, script pak funguje pořád a obíhá tenhle okruh
Protože tenhle kod vychází z dřeva které dělal emp, tak omluvte ten sprasený kod :)

Kód: Vybrat vše

using System;
using System.Collections.Generic;
using System.Text;
using Phoenix;
using Phoenix.WorldData;
using System.Linq;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
using System.Diagnostics;
using System.Xml;
using System.Collections;
using System.IO;

namespace Phoenix.Scripts.Raziel
{
    public class Lumber
    {
        ushort sekera = 0x0F43; //Sekera
        List<Pozice> seznam=new List<Pozice>();
	    Pozice aktualniP;
	    DateTime cas;
	    int indexFirst=0;
        int PocetStromukTezbe =0;
        Serial bedna=0x40251B81;
        bool resume=false;
        bool markovat=true;

        class Strom
        {
            public ushort X{ get;set;}
            public ushort Y{ get;set;}
            public sbyte Z{ get;set;}
            public ushort Typ{ get;set;}
        
            public Strom(ushort x, ushort y, sbyte z, ushort typ){
                X=x;
                Y=y;
                Z=z;
                Typ=typ;
            }
            
            public override string ToString()
            {
                return X+" "+ Y+" "+Z+" "+Typ;
            }
        }
        
        class Pozice
        {
            public int Stromu {get; set;}
            public int X {get; set;}
            public int Y {get; set;}
            public List<Strom> Stromy{get; set;}
            public string Kroky {get; set;}
    
            public Pozice(int x, int y, int pocet, List<Strom> list, string kroky)
            {
                X=x;
                Y=y;
                Stromu=pocet;
                Stromy=list;
                Kroky=kroky;
            }
        }
    
    [Command]
    public void Sekej()
    {
        while (!Journal.Contains(true, "There are no logs left here to chop.","You can't think of a way to use that item"))
            {
                    UO.DeleteJournal();
                    
			        if(UO.Count(sekera) < 1 && World.Player.Layers[Layer.LeftHand].Graphic != sekera)
			            VypisSekery();
                    UO.Print("Pokousim se sekat strom: " + aktualniP.Stromy[aktualniP.Stromy.Count-PocetStromukTezbe].ToString());
			        UO.WaitTargetTile(aktualniP.Stromy[aktualniP.Stromy.Count-PocetStromukTezbe].X, aktualniP.Stromy[aktualniP.Stromy.Count-PocetStromukTezbe].Y,
			            aktualniP.Stromy[aktualniP.Stromy.Count-PocetStromukTezbe].Z, aktualniP.Stromy[aktualniP.Stromy.Count-PocetStromukTezbe].Typ);
                    UO.UseType(sekera);
                    while (!UO.InJournal("...akce skoncila")&&!UO.InJournal("You destroyed hatchet")){
                	    UO.Wait(100);
                    }
                    if (Journal.Contains("You found something special")) 
                    {
                       vyber_logu();
                       UO.DeleteJournal();
                    }

                if (UO.InJournal("It is too heavy"))
                {
                    port();
                }
                UO.Print("Sekam Drevo ...");  
            }
            
            vyber_obyclogu();
            UO.Print("vysekano");
            UO.DeleteJournal();
            PocetStromukTezbe--;
            UO.Print("Pocet zbyvajicich stromu: " + PocetStromukTezbe);
      }
      
      [Command]
      public void port()
      {
        int x=World.Player.X;
        int y=World.Player.Y;
        if (markovat)
        {
            if (UO.Backpack.AllItems.FindType(0x22C5, 0x0000).Exist)
            {
                UO.RunCmd("cestovniBook", (uint)1);
                UO.Wait(500);
                UO.RunCmd("cestovniBook", (uint)7);
                UO.Wait(500);
            }
            else
            {   
                UO.RunCmd("travelBook", (uint)1);
                UO.Wait(500);
                UO.RunCmd("travelBook", (uint)40);
                UO.Wait(500);
            }
        }
        
        UO.RunCmd("nbruna");
        while (World.Player.X == x && World.Player.Y == y)
            UO.Wait(1000);
        
        foreach (UOItem item in UO.Backpack.Items)
        {
            if (item.Graphic==0x1BDD && item.Container==Aliases.Backpack)
            {
                UO.MoveItem(item, 0, bedna);
                UO.Wait(500);
                while (item.Container==Aliases.Backpack) {
                    UO.Wait(100);
                }
            }
        }
        UO.Wait(5000);
        x=World.Player.X;
        y=World.Player.Y;
        if (UO.Backpack.AllItems.FindType(0x22C5, 0x0000).Exist)
            UO.RunCmd("cestovniBook", (uint)1);
        else
            UO.RunCmd("travelBook", (uint)1);
        UO.Wait(500);
        if (UO.Backpack.AllItems.FindType(0x22C5, 0x0000).Exist)
            UO.RunCmd("cestovniBook", (uint)5);
        else
            UO.RunCmd("travelBook", (uint)4);
        while (World.Player.X == x && World.Player.Y == y)
            UO.Wait(1000);
        Pozice kam=aktualniP;
        resume=true;
        while (World.Player.X != kam.X || World.Player.Y != kam.Y)
            PosunSeDalPoLese();
        resume=false;
      }
    
    [Command]
    public void lumb()
    {
        cas=DateTime.Now;
        string line = "";
        
        using (StreamReader sr = new StreamReader("phoenix//scripts//makra//lumber.txt"))
        {
           int radek=0;
           try 
           {
               while ((line = sr.ReadLine()) != null)
               {
                  radek++;
                  String[] casti=line.Split(' ');
                  int x= Int32.Parse(casti[0]);
                  int y=Int32.Parse(casti[1]);
                  int pocet=Int32.Parse(sr.ReadLine());
                  radek++;
                  List<Strom> pomList=new List<Strom>();
                  for (int i=1;i<=pocet;i++){
                    line = sr.ReadLine();
                    radek++;
                    casti=line.Split(' ');
                    if (casti.Length!=4)
                        throw new Exception("spatne zapsany strom v ceste "+line);
                    pomList.Add(new Strom(Convert.ToUInt16(casti[0]), Convert.ToUInt16(casti[1]), 
                                Convert.ToSByte(casti[2]), Convert.ToUInt16(casti[3], 16)));
                  }
                  line = sr.ReadLine();
                  radek++;
                  casti=line.Split(' ');
                  for (int i=0;i<casti.Length;i++){
                    if (!string.IsNullOrEmpty(casti[i])&&casti[i].Length!=1)
                        throw new Exception("spatny pohyb po sekani");
                  }
                  seznam.Add(new Pozice(x, y, pocet, pomList, line));
                }
              }
              catch (Exception e)
              {
                UO.Print("Chyba v souboru nahrane cesty na radku "+radek+" "+e.Message);
                return ;
              }
        }
        UO.Print(seznam[1].Stromy[0].ToString());
        UO.Print("Zacatek sekani "+cas);
        aktualniP=null;
        PosunSeDalPoLese();
        while (!World.Player.Dead)
        while (!Journal.Contains(true, "There are no logs left here to chop.",
                "You can't think of a way to use that item"))
        {
            if (PocetStromukTezbe < 1)
                PosunSeDalPoLese();
            Sekej();

            UO.Print("Hlavni script");
        }
    }
        
        [Command]
        public void PosunSeDalPoLese()
        {
            bool nalezeno=false;
            foreach (Pozice pozice in seznam){
                if (nalezeno){
                    PocetStromukTezbe=pozice.Stromu;
 	                aktualniP=pozice;
 	                UO.Print("dalsi strom: "+aktualniP.Stromy[0].ToString());
 	                UO.Print("aktualni pozice "+World.Player.X+" "+World.Player.Y+" stromu "+PocetStromukTezbe);
 	                break;
                }
                    
                if (World.Player.X == pozice.X && World.Player.Y == pozice.Y)
 	            {
 	                nalezeno=true;
 	                if (aktualniP==null){
 	                    PocetStromukTezbe=pozice.Stromu;
 	                    aktualniP=pozice;
 	                    indexFirst=seznam.IndexOf(pozice);
 	                    UO.Print("index> "+indexFirst);
 	                    return;
 	                }
 	                String[] casti=pozice.Kroky.Split(' ');
 	                for (int i=0;i<casti.Length;i++)
 	                {
 	                    if (casti[i]=="N")
 	                        UO.Run("MoveNahoru");
 	                    if (casti[i]=="D")
 	                        UO.Run("MoveDolu");
 	                    if (casti[i]=="L")
 	                        UO.Run("MoveDoLeva");
 	                    if (casti[i]=="P")
 	                        UO.Run("MoveDoPrava");
 	                }
 	                if (pozice==seznam[seznam.Count-1])
 	                {
                        PocetStromukTezbe=seznam[0].Stromu;
     	                aktualniP=seznam[0];
 	                    UO.Print("dalsi strom: "+aktualniP.Stromy[0].ToString());
 	                    UO.Print("aktualni pozice "+World.Player.X+" "+World.Player.Y+" stromu "+PocetStromukTezbe);
 	                    break;
 	                }
 	            }
            }
            if (aktualniP==null)
                throw new Exception("Nestojis na zadnem miste z nahrane cesty!");
            
	        if (!resume && aktualniP==seznam[indexFirst])
 	        {
 	            UO.Print("index2> "+seznam.IndexOf(aktualniP));
                TimeSpan cas2=DateTime.Now.Subtract(cas);
                UO.Print("Cas sekani: "+DateTime.Now.Subtract(cas));
                int pocet= cas2.Minutes+cas2.Hours*60-1;
                if (pocet<65){
                    UO.Print("neni hodina cekam  "+(65-pocet)*60000);
                    UO.Wait((65-pocet)*60000);
                }
                cas=DateTime.Now;
                return ;
	        }
	        UO.Wait(500);
        } 
        
        [Executable]
        public static void vyber_logu()
        {
            ushort[] ryba = new ushort[6];
            ushort[] cryba = new ushort[6];

            ryba[0] = 0x1BDD;ryba[1] = 0x1BDD;ryba[2] = 0x1BDD;ryba[3] = 0x1BDD;
            ryba[4] = 0x1BDD;ryba[5] = 0x1BDD;cryba[0] = 0x0000;
            cryba[1] = 0x0979;cryba[2] = 0x0522;cryba[3] = 0x0972;
            cryba[4] = 0x06D3;cryba[5] = 0x05A6;

            for (int i = 1; i < 6; i++)
            {
              foreach (UOItem item in from q in World.Ground where q.Distance < 2 && q.Graphic == ryba[i] &&
                        q.Color == cryba[i] select q)
              {
                  item.Move(100, World.Player.Backpack);
              } 
              UO.Wait(500);
            }
        }
        
        public void VypisSekery()
        {
            UO.Print("Dosly sekery!!!");
            UO.Say(",TerminateAll");
        }                                
                           
        [Executable]
        public static void vyber_obyclogu()
        {
            ushort[] vyhazovat = new ushort[1];
            //Tady dopln co chces vyhazovat 0=nevyhazovat 1=vyhazovat
            vyhazovat[0] = 0; //Drevo
            //Zanechat tak jak je!
            ushort[] color = new ushort[1];
            color[0] = 0x0000; //Drevo
            // typ hromadky zanechat tak jak je...
            ushort[] typ_log = new ushort[1];
            typ_log[0] = 0x1BDD; // 1
            for (int i = 0; i < 1; i++)
            {
                if (vyhazovat[i] == 1)
                {
                    for (int k = 0; k < 1; k++)
                    {
                        if (UO.Count(typ_log[k], color[i]) == 0)
                        {
                        }
                        else
                        {
                            UOItem finditem = World.Player.Backpack.AllItems.FindType(typ_log[k], color[i]);
                            UO.MoveItem(finditem, 0, World.Player.X, World.Player.Y, World.Player.Z);
                            while (UO.Count(typ_log[k], color[i]) > 0) {
                                UO.Wait(100);
                            }
                        }
                    }
                }
            }
        }
        
        int pom, pom2;
    
        [DllImport("user32.dll")]
        public static extern int SendMessage(
              IntPtr hWnd,      // handle to destination window
              int Msg,       // message
              IntPtr wParam,  // first message parameter
              IntPtr lParam   // second message parameter
              );

        public enum WMessages : int
        {
            WM_LBUTTONDOWN = 0x201, //Left mousebutton down
            WM_LBUTTONUP = 0x202,  //Left mousebutton up
            WM_LBUTTONDBLCLK = 0x203, //Left mousebutton doubleclick
            WM_RBUTTONDOWN = 0x204, //Right mousebutton down
            WM_RBUTTONUP = 0x205,   //Right mousebutton up
            WM_RBUTTONDBLCLK = 0x206, //Right mousebutton doubleclick
            WM_KEYDOWN = 0x100,  //Key down
            WM_KEYUP = 0x101,   //Key up
        }

        [Executable]
        public void MoveDoLeva()
        {
            pom2=0;
            pom=World.Player.X;
            PressButton(Keys.Home);
            UO.Wait(500);
            while (World.Player.X==pom) {
                UO.Wait(500);
                pom2++;
                if (pom2==3)
                    PressButton(Keys.Home);
            }
        }
        
        [Executable]
        public void MoveDolu()
        {
            pom2=0;
            pom=World.Player.Y;
            PressButton(Keys.End);
            UO.Wait(500);
            while (World.Player.Y==pom) {
                UO.Wait(500);
                pom2++;
                if (pom2==3)
                    PressButton(Keys.End);
            }            
        }
        
        [Executable]
        public void MoveDoPrava()
        {
            pom2=0;
            pom=World.Player.X;
            PressButton(Keys.PageDown);
            UO.Wait(500);
            while (World.Player.X==pom) {
                UO.Wait(500);
                pom2++;
                if (pom2==3)
                    PressButton(Keys.PageDown);
            }
        }
        
        [Executable]
        public void MoveNahoru()
        {
            pom2=0;
            pom=World.Player.Y;
            PressButton(Keys.PageUp);
            UO.Wait(500);
            while (World.Player.Y==pom) {
                UO.Wait(500);
                pom2++;
                if (pom2==3)
                    PressButton(Keys.PageUp);
            }
        }
        
        public void PressButton(Keys key)
        {
            SendMessage(Client.HWND , (int)WMessages.WM_KEYDOWN, (IntPtr)key, IntPtr.Zero);
            SendMessage(Client.HWND , (int)WMessages.WM_KEYUP, (IntPtr)key, IntPtr.Zero);
        }
    }
}
podpůrný script pro nahrání cesty pro lumber výše. Poděkujte Drakulinovi za inicitavu že script napsal, já ho jen optimalizoval
,cestalumber
použití: postavíte se na začáteční lokaci, pustíte script, napíšete kolik stromů na tomhle místě budete kutat, oklikáte stromy, popojdete dále, napíšete zase počet stromů kolik budete na novém místě kutat, oklikáte stromy ... atd atd
soubor se nepřepisuje, takže můžete nahrávat cestu po částech

Kód: Vybrat vše

using System;
using System.Collections.Generic;
using System.Text;
using Phoenix;
using Phoenix.WorldData;
using System.IO;

namespace Phoenix.Scripts.RazielDraculin
{
    public class CestaLumber
    {
        private void ZapisDoSouboru(string text, bool line)
        {
            using (StreamWriter file = new StreamWriter("phoenix//scripts//makra//test.txt", true))
            {
                if (text!="")
                    if (line)
                        file.WriteLine(text);
                    else
                        file.Write(text);
            }
        }
        
        [Command]
        public void cestalumber()
        {
            ushort X,Y;
            int pocet;
            bool prvni=true;
            X=World.Player.X;
            Y=World.Player.Y;
            StaticTarget strom;
            UO.Print(SpeechFont.Bold, 0x0b94,"Zacinam nahravat");
            UO.Print(0x010C,"Zadej vzdy pocet stromu, popojdi, ukonci napsanim 'ko nec'");
            UO.DeleteJournal();
            while (!UO.InJournal("konec"))
            {
                UO.DeleteJournal();
            
                pocet=0;
                UO.Wait(100);
                if (UO.InJournal("konec"))
                    break;
                if (UO.InJournal(World.Player.Name+": "))
                {
                    string text1=Journal.GetLine(Journal.Find(World.Player.Name+": ")).Text;
                    UO.Print(text1);
                    pocet=Int32.Parse(text1);
                    if (pocet<=0)    
                        continue;
                    
                    ZapisDoSouboru(((!prvni)?Environment.NewLine:"")+World.Player.X+" "+World.Player.Y, true);
                    prvni=false;
                    ZapisDoSouboru(pocet.ToString(), true);
                    for (int i=1;i<=pocet;i++)
                    {
                        UO.Print(0x0099,"Vyber stromek "+i); 
                        strom = UIManager.Target();
                        ZapisDoSouboru(strom.X+" "+strom.Y+" "+strom.Z+" 0x0"+strom.Graphic.ToString("X"), true);
                    }
                    
                    UO.Print(0x010C,"Muzes jit dal");                    
                }
                if (World.Player.X > X)
                {ZapisDoSouboru("P ", false);X+=1; }
                if (World.Player.X < X)
                {ZapisDoSouboru("L ", false);X-=1; }
                if (World.Player.Y > Y)
                {ZapisDoSouboru("D ", false);Y+=1; }
                if (World.Player.Y < Y)
                {ZapisDoSouboru("N ", false);Y-=1; }
            }
        
            UO.Print(SpeechFont.Bold, 0x0b94,"Konec nahravani");
        }
    }
}
Naposledy upravil(a) Raziel dne 02.04.2020 22:28:41, celkem upraveno 13 x.
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

,tridenilvl - třídí mapky podle levelů
,lustenimap - luští mapky a třídí podle levelů
,zpravy - otevře láhev s mapkou, vyluští a třídí podle levelů

kod nic moc, ale nechtělo se mi tomu dávat moc času aby to bylo líp napsané, možná bude někdy optimalizace

Kód: Vybrat vše

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

namespace Phoenix.Scripts.Raziel
{
    public class ZpravyMapy
    {
        UOItem level1, level2, level3, level4, level5, mapy, mapka;
        int lvl1 = 0, lvl2 = 0, lvl3 = 0, lvl4 = 0, lvl5 = 0;

        [Command]
        public void tridenilvl()
        {
            Init("Kde mas mapy?");
            mapy.Use();
            while (!mapy.Opened)
                UO.Wait(100);
            ItemsCollection col = mapy.AllItems;
            IEnumerator<UOItem> en = col.GetEnumerator();

            while (en.MoveNext())
            {
                mapka = en.Current;

                if (mapka.Graphic != 0x14EB)
                {
                    continue;
                }
                UO.DeleteJournal();
                mapka.Click();
                UO.Wait(500);
                while (!UO.InJournal("Level"))
                {
                    UO.Wait(50);
                }
                ZvysPocetAPresun();
            }
            Vypis();
        }

        [Command]
        public void lustenimap()
        {
            Init("Kde mas mapy?");

            mapy.Use();
            while (!mapy.Opened)
                UO.Wait(100);
            ItemsCollection col = mapy.AllItems;
            IEnumerator<UOItem> en = col.GetEnumerator();

            while (en.MoveNext())
            {
                UOItem item = en.Current;

                if (item.Graphic != 0x14EB)
                {
                    continue;
                }
                UO.MoveItem(item.Serial, 0, UO.Backpack);
                UO.Wait(500);
                while (item.Container != UO.Backpack)
                {
                    UO.Wait(100);
                }
                UO.DeleteJournal();
                item.Use();
                UO.Wait(500);
                while (!UO.InJournal("You put the"))
                {
                    UO.Wait(50);
                }

                mapka = UO.FindType("mapka", 0x14EB, 0x0000, UO.Backpack);

                ZvysPocetAPresun();
            }
            Vypis();
        }

        [Command]
        public void zpravy()
        {
            Init("Kde mas zpravy?");

            mapy.Use();
            while (!mapy.Opened)
                UO.Wait(100);
            ItemsCollection col = mapy.AllItems;
            IEnumerator<UOItem> en = col.GetEnumerator();

            while (en.MoveNext())
            {
                UOItem item = en.Current;

                if (item.Graphic != 0x099B)
                {
                    continue;
                }
                UO.MoveItem(item.Serial, 0, UO.Backpack);
                UO.Wait(500);
                while (item.Container != UO.Backpack)
                {
                    UO.Wait(100);
                }
                UO.DeleteJournal();
                item.Use();
                UO.Wait(500);
                if (UO.InJournal("znicena vodou"))
                {
                    continue;
                }
                while (!UO.InJournal("map"))
                {
                    UO.Wait(50);
                    if (UO.InJournal("znicena vodou"))
                    {
                        continue;
                    }
                }
                if (UO.InJournal("znicena vodou"))
                {
                    continue;
                }

                UO.UseType(0x14EB);
                UO.Wait(500);
                while (!UO.InJournal("level"))
                {
                    UO.Wait(50);
                }

                mapka = UO.FindType("mapka", 0x14EB, 0x0000, UO.Backpack);

                ZvysPocetAPresun();
            }
            Vypis();
        }

        private void Init(String dotaz)
        {
            UO.Print(dotaz);
            mapy = new UOItem(UIManager.TargetObject());
            lvl1 = lvl2 = lvl3 = lvl4 = lvl5 = 0;
            UO.Print("Kde davat lvl 1?");
            level1 = new UOItem(UIManager.TargetObject());
            UO.Print("Kde davat lvl 2?");
            level2 = new UOItem(UIManager.TargetObject());
            UO.Print("Kde davat lvl 3?");
            level3 = new UOItem(UIManager.TargetObject());
            UO.Print("Kde davat lvl 4?");
            level4 = new UOItem(UIManager.TargetObject());
            UO.Print("Kde davat lvl 5?");
            level5 = new UOItem(UIManager.TargetObject());
        }

        private void ZvysPocetAPresun()
        {
            if (UO.InJournal("level 1"))
            {
                lvl1++;
                UO.MoveItem(mapka.Serial, 0, level1.Serial);
            }
            if (UO.InJournal("level 2"))
            {
                lvl2++;
                UO.MoveItem(mapka.Serial, 0, level2.Serial);
            }
            if (UO.InJournal("level 3"))
            {
                lvl3++;
                UO.MoveItem(mapka.Serial, 0, level3.Serial);
            }
            if (UO.InJournal("level 4"))
            {
                lvl4++;
                UO.MoveItem(mapka.Serial, 0, level4.Serial);
            }
            if (UO.InJournal("level 5"))
            {
                lvl5++;
                UO.MoveItem(mapka.Serial, 0, level5.Serial);
            }
            UO.Wait(500);
        }

        private void Vypis()
        {
            UO.Print("Mapek bylo celkem " + (lvl1 + lvl2 + lvl3 + lvl4 + lvl5));
            UO.Print("Mapek lvl 1 " + lvl1);
            UO.Print("Mapek lvl 2 " + lvl2);
            UO.Print("Mapek lvl 3 " + lvl3);
            UO.Print("Mapek lvl 4 " + lvl4);
            UO.Print("Mapek lvl 5 " + lvl5);
        }
    }
}
Naposledy upravil(a) Raziel dne 25.03.2017 09:32:20, celkem upraveno 1 x.
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

mining fungující naprosto stejně jako script na lumber, včetně nahrávání cesty a portění s ore při přetížení, při nahrávání cesty jen klikáte na políčka v dole místo na stromy

,minn

Kód: Vybrat vše

using System;
using System.Collections.Generic;
using System.Text;
using Phoenix;
using Phoenix.WorldData;
using System.Linq;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
using System.Diagnostics;
using System.Xml;
using System.Collections;
using System.IO;

namespace Phoenix.Scripts.Raziel
{
    public class Mining
    {
        ushort pickaxe = 0x0E85; //Sekera
        List<Pozice> seznam = new List<Pozice>();
        Pozice aktualniP;
        DateTime cas;
        int indexFirst = 0;
        int PocetStromukTezbe = 0;
        Serial bedna = 0x402B507B;
        bool resume = false;

        Graphic[] ores = {
               0x19B7, // 1
               0x19BA, // 2
               0x19B8, // 3
               0x19B9  // 4
        };

        // Barva rudy kterou sbirat nechte kterou vyhazovat zakomentujte lomitkama //
        UOColor[] colors = { 
            0x0000, // iron
            0x0289, // copper
            0x01BF, // bronze
            0x0482, // silver
            0x0322, // shadow
            0x0665, // rose
            0x0160, // golden
            0x01CB, // verite
            0x0253, // valorite
            0x04C2, // blood Rock
            0x0455, // black Rock
            0x052D, // mytheril
            0x0006, // star Sapphire
            0x0041, // emerald
            0x002C, // citrine
            0x0015, // amethyst
            0x0027, // ruby
            0x03E9  // diamond
        };

        class Strom
        {
            public ushort X { get; set; }
            public ushort Y { get; set; }
            public sbyte Z { get; set; }
            public ushort Typ { get; set; }

            public Strom(ushort x, ushort y, sbyte z, ushort typ)
            {
                X = x;
                Y = y;
                Z = z;
                Typ = typ;
            }

            public override string ToString()
            {
                return X + " " + Y + " " + Z + " " + Typ;
            }
        }

        class Pozice
        {
            public int Stromu { get; set; }
            public int X { get; set; }
            public int Y { get; set; }
            public List<Strom> Stromy { get; set; }
            public string Kroky { get; set; }

            public Pozice(int x, int y, int pocet, List<Strom> list, string kroky)
            {
                X = x;
                Y = y;
                Stromu = pocet;
                Stromy = list;
                Kroky = kroky;
            }
        }

        [Command]
        public void Kutej()
        {   
            while (!Journal.Contains(true, "There is no ore here to mine.", "Try mining in rock."))
            {
                    UO.DeleteJournal();
                    if (UO.Count(pickaxe) < 1 && World.Player.Layers[Layer.LeftHand].Graphic != pickaxe)
                        VypisKrumpy();
                    UO.Print("Pokousim se tezit pole: " + aktualniP.Stromy[aktualniP.Stromy.Count - PocetStromukTezbe].ToString());
                    UO.WaitTargetTile(aktualniP.Stromy[aktualniP.Stromy.Count - PocetStromukTezbe].X, aktualniP.Stromy[aktualniP.Stromy.Count - PocetStromukTezbe].Y,
                        aktualniP.Stromy[aktualniP.Stromy.Count - PocetStromukTezbe].Z, aktualniP.Stromy[aktualniP.Stromy.Count - PocetStromukTezbe].Typ);

                    UO.UseType(pickaxe);
                    UO.Wait(500);
                    while (!UO.InJournal("You destroy pickaxe") && !UO.InJournal("You loosen some") && !UO.InJournal("at your feet. It is too heavy..") && 
                            !UO.InJournal("in your pack") && !UO.InJournal("There is no ore"))
                    {
                        
                        UO.Wait(100);
                    }
                    
                    UOItem hand = World.Player.Layers[Layer.RightHand];
                    if (hand.Color != 0x0481)
                    {
                        while (!UO.InJournal("...akce skoncila"))
                        {
                            UO.Wait(100);
                        }
                    }
                    if (Journal.Contains("in your pack"))
                    {
                        vyhod_ore();
                        UO.DeleteJournal();
                    }
                                
                if (UO.InJournal("It is too heavy"))
                {
                    portMining();
                }
                UO.Print("Kutam rudu ...");
            }

            UO.Print("vytezeno");
            UO.DeleteJournal();
            PocetStromukTezbe--;
            UO.Print("Pocet zbyvajicich policek: " + PocetStromukTezbe);
        }

        [Command]
        public void portMining()
        {
            int x = World.Player.X;
            int y = World.Player.Y;
            UO.RunCmd("nbruna");
            while (World.Player.X == x && World.Player.Y == y)
                UO.Wait(1000);

            foreach (UOItem item in UO.Backpack.Items)
            {
                if (ores.Contains(item.Graphic) && item.Container == Aliases.Backpack)
                {
                    UO.MoveItem(item, 0, bedna);
                    UO.Wait(500);
                    while (item.Container == Aliases.Backpack)
                    {
                        UO.Wait(100);
                    }
                }
            }
            UO.Wait(5000);
            x = World.Player.X;
            y = World.Player.Y;
            if (UO.Backpack.AllItems.FindType(0x22C5, 0x0000).Exist)
                UO.RunCmd("cestovniBook", (uint)1);
            else
                UO.RunCmd("travelBook", (uint)1);
            UO.Wait(500);
            if (UO.Backpack.AllItems.FindType(0x22C5, 0x0000).Exist)
                UO.RunCmd("cestovniBook", (uint)5);
            else
                UO.RunCmd("travelBook", (uint)4);
            while (World.Player.X == x && World.Player.Y == y)
                UO.Wait(1000);
            Pozice kam = aktualniP;
            resume = true;
            while (World.Player.X != kam.X || World.Player.Y != kam.Y)
                PosunSeDalPoLeseMin();
            resume = false;
        }

        [Command]
        public void minn()
        {
            cas = DateTime.Now;
            string line = "";

            using (StreamReader sr = new StreamReader("phoenix//scripts//cizi//Mining.txt"))
            {
                int radek = 0;
                try
                {
                    while ((line = sr.ReadLine()) != null)
                    {
                        radek++;
                        String[] casti = line.Split(' ');
                        int x = Int32.Parse(casti[0]);
                        int y = Int32.Parse(casti[1]);
                        int pocet = Int32.Parse(sr.ReadLine());
                        radek++;
                        List<Strom> pomList = new List<Strom>();
                        for (int i = 1; i <= pocet; i++)
                        {
                            line = sr.ReadLine();
                            radek++;
                            casti = line.Split(' ');
                            if (casti.Length != 4)
                                throw new Exception("spatne zapsane pole v ceste");
                            pomList.Add(new Strom(Convert.ToUInt16(casti[0]), Convert.ToUInt16(casti[1]),
                                        Convert.ToSByte(casti[2]), Convert.ToUInt16(casti[3], 16)));
                        }
                        line = sr.ReadLine();
                        radek++;
                        casti = line.Split(' ');
                        for (int i = 0; i < casti.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(casti[i]) && casti[i].Length != 1)
                                throw new Exception("spatny pohyb po kutani");
                        }
                        seznam.Add(new Pozice(x, y, pocet, pomList, line));
                    }
                }
                catch (Exception e)
                {
                    UO.Print("Chyba v souboru nahrane cesty na radku " + radek + " " + e.Message);
                    return;
                }
            }
            UO.Print(seznam[1].Stromy[0].ToString());
            UO.Print("Zacatek kutani " + cas);
            aktualniP = null;
            PosunSeDalPoLeseMin();
            while (!World.Player.Dead)
                while (!Journal.Contains(true, "There is no ore here to mine.",
                        "Try mining"))
                {
                    if (PocetStromukTezbe < 1)
                        PosunSeDalPoLeseMin();
                    Kutej();

                    UO.Print("Hlavni script");
                }
        }

        [Command]
        public void PosunSeDalPoLeseMin()
        {
            bool nalezeno = false;
            foreach (Pozice pozice in seznam)
            {
                if (nalezeno)
                {
                    PocetStromukTezbe = pozice.Stromu;
                    aktualniP = pozice;
                    UO.Print("dalsi pole: " + aktualniP.Stromy[0].ToString());
                    UO.Print("aktualni pozice " + World.Player.X + " " + World.Player.Y + " poli " + PocetStromukTezbe);
                    break;
                }

                if (World.Player.X == pozice.X && World.Player.Y == pozice.Y)
                {
                    nalezeno = true;
                    if (aktualniP == null)
                    {
                        PocetStromukTezbe = pozice.Stromu;
                        aktualniP = pozice;
                        indexFirst = seznam.IndexOf(pozice);
                        UO.Print("index> " + indexFirst);
                        return;
                    }
                    String[] casti = pozice.Kroky.Split(' ');
                    for (int i = 0; i < casti.Length; i++)
                    {
                        if (casti[i] == "N")
                            UO.Run("MoveNahoru");
                        if (casti[i] == "D")
                            UO.Run("MoveDolu");
                        if (casti[i] == "L")
                            UO.Run("MoveDoLeva");
                        if (casti[i] == "P")
                            UO.Run("MoveDoPrava");
                    }
                    if (pozice == seznam[seznam.Count - 1])
                    {
                        PocetStromukTezbe = seznam[0].Stromu;
                        aktualniP = seznam[0];
                        UO.Print("dalsi pole: " + aktualniP.Stromy[0].ToString());
                        UO.Print("aktualni pozice " + World.Player.X + " " + World.Player.Y + " poli " + PocetStromukTezbe);
                        break;
                    }
                }
            }
            if (aktualniP == null)
                throw new Exception("Nestojis na zadnem miste z nahrane cesty!");

            if (!resume && aktualniP == seznam[indexFirst])
            {
                UO.Print("index2> " + seznam.IndexOf(aktualniP));
                TimeSpan cas2 = DateTime.Now.Subtract(cas);
                UO.Print("Cas sekani: " + DateTime.Now.Subtract(cas));
                int pocet = cas2.Minutes + cas2.Hours * 60 - 1;
                if (pocet < 65)
                {
                    UO.Print("neni hodina cekam  " + (65 - pocet) * 60000);
                    UO.Wait((65 - pocet) * 60000);
                }
                cas = DateTime.Now;
                return;
            }
            UO.Wait(500);
        }

        [Command]
        public void vyhod_ore()
        {
            foreach (UOItem item in World.Player.Backpack.AllItems)
            {
                if (ores.Contains(item.Graphic) && !colors.Contains(item.Color))
                {
                    item.DropHere();
                    UO.Wait(500);
                }
            }
        }

        public void VypisKrumpy()
        {
            UO.Print("Dosly krumpy!!!");
            UO.Say(",TerminateAll");
        }
    }
}
Naposledy upravil(a) Raziel dne 30.03.2018 15:40:18, celkem upraveno 1 x.
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

Protože nebylo co robit, dotáhnul sem script na výrobu.

Tedka stačí napsat co chcete vyrábět, z čeho se to vyrábí a script pořeší výrobu jednotlivých částí, vybírá suroviny nutné pro výrobu z truhly a přesouvá vyrobené věci.

Ve scriptu máte kompletní servis pro krabici kegů a pro loď (samozřejmě můžete vyrábět i jeho menší části). Pustíte script a ten vám vyrobí vše od prken až po loď. Podobně si můžete jednoduše napsat výrobu všeho ostatního - vysvětlivka je u scriptu který je na první straně - Vyroba. Enjoy.
Empair
Undead Scriber
Undead Scriber
Příspěvky: 695
Registrován: 14.07.2007 11:35:28
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Empair »

Raziel píše:Protože tenhle kod vychází z dřeva které dělal emp, tak omluvte ten sprasený kod
:) dyť jsem to psal 8 let zpátky ještě na škole :)
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

kvůli plánovaným změnám a několika dotazům ohledně výroby jsem se rozhodl dopsat script na výrobu univerzal animal boxu, přidáno do výroby, alespon vidíte jak je to snadné napsat výrobu nových věcí které se craftí z více částí do připraveného scriptu - nemusíte o scriptění vědět vůbec nic

co jsem musel přidat :
1) script na výrobu golden box
2) script na výrobu animal box
3) script na výrobu univerzal animal box

ad 1)

Kód: Vybrat vše

        [Command]
        public void goldbox(int vyrobpocet)
        {
            vyrob(vyrobpocet, new Graphic(0x09A8), new UOColor(0x0000), //grafika a barva vyrobeného gold boxu
            new List<Surka>() { 
            //surky pro výrobu gold boxu
            new Surka("", new Graphic(0x1BE9), new UOColor(0x0000), 5), //gold ingy
            new Surka("", gdrevo, cdrevo, 5)}, // dřevo
            "Tinkering", "Containers", "Containers", "Golden Box (N)"); //cesta v craft menu
        }
ad 2)

Kód: Vybrat vše

        [Command]
        public void abox(int vyrobpocet)
        {
            vyrob(vyrobpocet, new Graphic(0x09A8), new UOColor(0x051E), 
            new List<Surka>() {
            //suroviny na výrobu animal boxu 
            new Surka("goldbox", new Graphic(0x09A8), new UOColor(0x0000), 1), //jediná změna - volání scriptu "goldbox" viz bod 1)
            new Surka("", gdrevo, cdrevo, 5), 
            new Surka("", new Graphic(0x11FA), new UOColor(0x0000), 5)},
           "Tinkering", "Containers", "Containers", "Animal Box");
        }
ad 3)

Kód: Vybrat vše

        [Command]
        public void uabox(int vyrobpocet)
        {
            vyrob(vyrobpocet, new Graphic(0x09A8), new UOColor(0x0000), 
            new List<Surka>() { 
            //suroviny na výrobu univerzal animal boxu 
            new Surka("abox", new Graphic(0x09A8), new UOColor(0x051E), 1), //opět jen vazba na script "abox" viz bod 2)
            new Surka("", gdrevo, cdrevo, 5), 
            new Surka("", new Graphic(0x11FA), new UOColor(0x0000), 5)},
            "Tinkering", "Containers", "Containers", "Univerzal Animal Box");
        }
craftit můžete všechny části zvlášt, script běží dokud máte suroviny
,goldbox 0
,abox 0
,uabox 0

Hint: při tomhle craftění je jedna zrada ... gold box a univerzal animal box mají stejnou grafiku i barvu, takže nedávejte hotové výrobky do stejné bedny kde máte suroviny, script uvidí žlutou krabici a bude si myslet že to je gold box (protože stejná grafika i barva)
Naposledy upravil(a) Raziel dne 18.11.2017 20:31:29, celkem upraveno 1 x.
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

Na už několikátou žádost sem vyprodukoval nezasekávající se script na GM mortar, hledejte alchemy na první stránce.


E: opraveny drobné drbky :)
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

Pro všechny kdo se ještě nezeptali, na přesunutí zvířat do UAB lze použít script z druhé stránky, původně se jmenoval ,sperkuklid tedka sem ho přejmenoval na ,ukliddobedny at je jasné že to jde používat na cokoliv podobného. Je na druhé stránce.

Není to chytrý script, takže zvířata které mají stejnou grafiku aji barvu to nepozná a pro ně to nebude fungovat (co jsem si všiml třeba hint a hart - stejná grafika i barva ale jiné zvíře, nezbývá než ukecat GM aby na jednoho z nich dali třeba barvu at se to dá rozlišit).
Možná to přepíšu ale věřím že většině bude stačit původní verze pro šperkovnici.
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

Upraven script na lumber (díky všem za feedback)
- pokud nemáte cestovní knihu, portí travel bookem
- přidáno pár hlášek, které vám pomůžou najít chybu v nahrané cestě.
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

upravena výroba
-už nemusíte psát do scriptu nástroj pro výrobu, script si ho zjistí se automaticky (upraveny i všechny scripty)
-upraveny hlášky at jsou čitelnější

Edit:
-upraveny tréninkové scripty bs, bowcraft, tailoring aby používaly výrobní script
-vylepšeny hlášky u těchto scriptů
Uživatelský avatar
Druantia
Misspelling Chicken
Misspelling Chicken
Příspěvky: 7
Registrován: 19.08.2017 10:29:38

Re: Razielovy scripty

Příspěvek od Druantia »

Raziel píše:upravena výroba
-už nemusíte psát do scriptu nástroj pro výrobu, script si ho zjistí se automaticky (upraveny i všechny scripty)
-upraveny hlášky at jsou čitelnější

Edit:
-upraveny tréninkové scripty bs, bowcraft, tailoring aby používaly výrobní script
-vylepšeny hlášky u těchto scriptů
Razi po upravě nefunguje train ,bowcraft. Pokud zvolíš zdrojovou bednu a bednu kam dávat hotovej produkt a v bedně jsou jen logy, vezme logy, udělá shafty a pak začne vypisovat spoustu hlášek, asi mu chybí peří nebo nevím co. Co je ale horši, shodí to clienta při pokusu o ukončení scriptu, vždy. Před touhle úpravou fungoval bezvadně, vzal log udělal unfinished a pak shafty, který hodil do zvolenýho kontejneru. Mrkni se na to prosím tě, já blb si přepsal ten původní.

Dík
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

Scripty jsem zkoušel než jsem je dával na forum. Ale možná vím v čem by mohl být problém. Zkus ještě když tak po spuštění uo pustit jen script na bowcraft.
Jinak příště napiš alespoň výpis z journalu, protože "vypisuje to nějaké hlášky" mi v hledání chyby moc nepomůže, zvláště, pokud u mě script jede ;). Hádám že to bude nějaká prkotina ... jak dojdu domů tak se na to podívám (dopln do postu ten journal když tak)
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

Tak jede mi to i bez upravy, tak ta uprava asi nebude mít vliv, ale můžeš zkusit... jinak se můžeš ozvat na icq a pořešíme co máš jinak.
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

Chybka nalezena, opraveno craftění luků (skill bowcraft).
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

script na přání
hodí ivm svitek a hned potom bandage na vybraný cíl

,ivmBanda

script přesunut na 1. stránku
Naposledy upravil(a) Raziel dne 28.11.2017 07:26:58, celkem upraveno 1 x.
Spider
Misspelling Chicken
Misspelling Chicken
Příspěvky: 1
Registrován: 07.09.2006 19:40:17

Re: Razielovy scripty

Příspěvek od Spider »

Někdo nějaký script na sundání bižuterie?

Úprava horní lišty mi hází tuto chybu..nevíte někdo co s tím?

Phoenix\Scripts\DarkParadise\ClientTileBar.cs(77,26): error CS0246: Název typu nebo oboru názvů SupplyCounter nebyl nalezen (pravděpodobně jste neuvedli direktivu using nebo odkaz na sestavení).
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

Spider píše:Někdo nějaký script na sundání bižuterie?

Úprava horní lišty mi hází tuto chybu..nevíte někdo co s tím?

Phoenix\Scripts\DarkParadise\ClientTileBar.cs(77,26): error CS0246: Název typu nebo oboru názvů SupplyCounter nebyl nalezen (pravděpodobně jste neuvedli direktivu using nebo odkaz na sestavení).
,removejewelry má přímo fena, ale to tuším funguje blbě jinak třeba moje scripty na šperky se po použití dávaj do báglu ... nějaký ti tam chybí ?

chybová hláška: chybí ti nějaké soubory protože:
Příspěvekod Raziel » 12 čer 2014 19:23
upravené základní scripty z odkazu na DP webu
tak bud je stáhni nebo do té kompletní uo+fena jsem je dával taky, oboje na dp stránkách sekce soubory
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

pro tamery pro trochu snazší uklízení klamáků do animal boxů:

použije druhou bednu pokud item do první bedny nepasuje (pro stejně vypadající klamáky které musíte dávat do druhé bedny)
,ukliddo2bedny

script je na 2. straně
Uživatelský avatar
Raziel
Undead Scriber
Undead Scriber
Příspěvky: 650
Registrován: 07.09.2006 19:12:21
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvek od Raziel »

opraveny drobné nedostatky ve výrobě (tinkering si nebral iron)
přidána výroba velké špulky drátu
scripty vyroba na první straně
Odpovědět