Razielovy scripty

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

Líbí se vám scripty ?

Ano, některé použiju.
54
77%
Ne, žádný jsem nepoužil.
9
13%
Mám svoje scripty.
7
10%
 
Celkem hlasů: 70

Uživatelský avatar
Raziel
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 26 úno 2017 20:14

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
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 26 úno 2017 20:30

,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
    {
        List<Pozice> seznam=new List<Pozice>();
       Pozice aktualniP;
       DateTime cas;
       int indexFirst=0;
        int PocetStromukTezbe =0;
        Serial bedna=0x40251B81;
        bool resume=false;

        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"))
            {
                using (JournalEventWaiter ew = new JournalEventWaiter(true, "You put the log in your pack.",
                        "You put the logs in your pack.",
                        "You hack at the tree for a while, but fail to produce any useable wood.",
                        "There are no logs left here to chop.", "You destroy hatchet",
                        "You put the log at your feet. It is too heavy..", "You put the logs at your feet. It is too heavy.."))
                {
                    UO.DeleteJournal();
                 if(UO.Count(0x0F43) < 1)
                     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(0x0F43);
                    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 (!ew.Wait(7000)) UO.PrintWarning("Lumber timeout.");
                 
                }
                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;
        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()
    {
        ushort sekera = 0x0F43; //Sekera
        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");
                    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"))
        {
            UOItem sekeracd = World.Player.Backpack.AllItems.FindType(sekera);
            if (UO.InJournal("You destroyed hatchet") || !sekeracd.Exist)
            {
                UOCharacter charactere = new UOCharacter(World.Player.Serial);
                charactere.Print(0x0553, "Nemas Sekeru !!", charactere.Name, charactere.MaxHits);
                UO.TerminateAll();
            }
            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 15 lis 2017 19:03, celkem upraveno 9 x.

Uživatelský avatar
Raziel
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 20 bře 2017 18:34

,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 bře 2017 09:32, celkem upraveno 1 x.

Uživatelský avatar
Raziel
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 27 čer 2017 21:33

massmove a mass1 nyní i s verzí pro ignorování barvy předmětů (massmoveb a mass1b)

Uživatelský avatar
Raziel
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 18 zář 2017 20:24

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: 610
Registrován: 14 črc 2007 11:35
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Empair » 22 zář 2017 10:34

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
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 05 říj 2017 18:15

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 lis 2017 20:31, celkem upraveno 1 x.

Uživatelský avatar
Raziel
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 10 říj 2017 19:46

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
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 11 říj 2017 20:32

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
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 15 lis 2017 17:34

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
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 18 lis 2017 20:27

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 srp 2017 10:29

Re: Razielovy scripty

Příspěvekod Druantia » 19 lis 2017 22:28

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
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 20 lis 2017 07:32

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
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 20 lis 2017 16:38

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
Pencil Master
Pencil Master
Příspěvky: 528
Registrován: 07 zář 2006 19:12
Kontaktovat uživatele:

Re: Razielovy scripty

Příspěvekod Raziel » 20 lis 2017 18:15

Chybka nalezena, opraveno craftění luků (skill bowcraft).


Zpět na „Skripty“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host