Přesun Necro, Mage Regu s nastavenim

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

Moderátor: Caleb

Odpovědět
Koryn
Misspelling Chicken
Misspelling Chicken
Příspěvky: 6
Registrován: 26 dub 2012 19:41

Přesun Necro, Mage Regu s nastavenim

Příspěvek od Koryn »

Tyto scripty sem si napsal pro ulehčení přesouvaní regu s určitými parametry stači pochopit na jakém principu funguje a da se ním dělat uplně vše. Původně to bylo zamyšleno pro přesun regu před dungem, ale da se to využit všelijak.

EDIT: přidano oznámení o ukonční přenosu.
opraveno doplnění regu do požadovaného množství.

EDIT: přidan Wyrm's Hearts do přesunu necro regu


Spuštění:
,mrc x true/false - x je množství regů které chcete mít v cílovem kontejneru pokud, true/false - true pokud v cilovem kontejneru již jsou nějaké regy tak množství, které je nad x bude vráceno do zdrojového kontejneru, false ponecha regy v cílovem kontejneru jen tam přidá množství x.
,mrc x - to samé jako předchozí ale nastaven permanentně na hodnotu true (da se změnit ve scriptu uplně dole).
,mrc - stejně jako předchozí případ ale nastaven na 0 a true (da se změnit ve scriptu uplně dole).

(,mrc - mage regy, ,nrc - necro regy)

Příklad využití:
1. jdu dung v bance mam bagl s hromadou regu, do dungu si chcu vzít ale jen 500 od každého zadam ,mrc 500 - zaměřím batoh v bance a jako cíl baglik v backbaku tím mi script přenese z banky do baglu co mam u sebe přesně 500 regu jestli sem měl v cilovem batůžku nějaké regy a bylo jich víc jak 500 tak ty script vratí do zdroje, pokud už tam nějaké regy sou a není jich 500 script přenese jen tolik aby doplnil jejich množství. Pokud ve zdroji není dostatek nějakého regu script přenese max množství a vypíše kolik regu je třeba dokoupit.

2. po dungu mam v baglu co mam u sebe hromadu regu a potřebuju je uklidit, ,mrc - zaměřím zdroj tentokrat to bude baglik v bance a cíl bude můj backpack (jak sem psal víš tak příkaz ,mrc je nastaven na 0,true tím padem v cílovém kontejneru zůstane 0 regu a všechny budou vráceny do zdroje.

3. mam u sebe nějaké regy a chcu je jen doplnit řekněme 50 od každého - ,mrc 50 false - tím zajistím že mi script přebytečné regy nevrátí do zdroje.

Mage regy:

Kód: Vybrat vše


 /////////////////////////////////////////////////////////////////////////
 //
 //     Autor: Koryn
 //     Name:  Presun Mage Regu pro dung vsech stejne mnozstvi.
 //     Popis: ,mrc x  - x je kolik regu se ma prenest do ciloveho kontejneru 
 //     a zaroven kolik jech tam ma zustat pokud je v cílovem baglu víc než x regu
 //     tak to co je nad bude vraceno do zdrojoveho kontejneru.vraceni regu true  
 //     ,mrc - je standartne nastaven na 0, a vraceni regu na true 
 //     ,mrc x true/false - muzete si vybrat jestli se regy kterych je nad x v cilovem
 //     kontejneru maji vracet do zdroje 
 //     Date:  18.5.2012
 //     Phoenix ver. : 0.7.x 
 //
 /////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;
using Phoenix;
using Phoenix.WorldData;
using System.Linq;
using Phoenix.Communication;
using Phoenix.Runtime;
using Phoenix.Runtime.Reflection;

namespace Phoenix.Koryn
{
    public class MageRegCountedHelper
    {
       // public bool vracet;

        [Command("MRC")]
        public void MRC(ushort kolik, bool m_vracet)
        {
            UO.Print(0x0435, "Zahajen presun regu na dung.");
            
            
            UO.Print(SpeechFont.Bold, 0x0b94, "Zvol zdrojovy box !!!");
            UOItem zdroj = new UOItem(UIManager.TargetObject());

            if (!zdroj.Exist)
                ScriptErrorException.Throw("Invalid item.");
            if (!zdroj.Opened)
            {
                using (ItemOpenedEventWaiter ew = new ItemOpenedEventWaiter(zdroj))
                {
                    zdroj.Use();
                    if (!ew.Wait(2000))
                        UO.PrintWarning("Nemuzu otevrit kontejner.");
                }
            }

            UO.Wait(200);
            UO.Print(SpeechFont.Bold, 0x0b94, "Zvol kam presunot !!!");
            UOItem cil = new UOItem(UIManager.TargetObject());

            if (!cil.Exist)
                ScriptErrorException.Throw("Invalid item.");
            if (!cil.Opened)
            {
                using (ItemOpenedEventWaiter eww = new ItemOpenedEventWaiter(cil))
                {
                    cil.Use();
                    if (!eww.Wait(2000))
                        UO.PrintWarning("Nemuzu otevrit kontejner.");
                }
            }
            //-------------------BM------BP-----GC------GS-------MR------NS------SA------SS----
            ushort[] regs = { 0x0F7B, 0x0F7A, 0x0F84, 0x0F85, 0x0F86, 0x0F88, 0x0F8C, 0x0F8D};
            string[] names = { "BM", "BP", "GC", "GS", "MR", "NS", "SA", "SS" };
            
            for (int k = 0; k < regs.Length; k++)
            {
               


                UOItem BM = zdroj.AllItems.FindType(regs[k]);
                UOItem CBM = cil.AllItems.FindType(regs[k]);
                int BMC = cil.AllItems.Count(regs[k]);
                int BMZ = zdroj.AllItems.Count(regs[k]);

            if (BMC != kolik)
            {
                if (BMC >= kolik && m_vracet)
                {
                    int vyhoditBM = BMC - kolik;
                    ushort uvyhoditBM = (ushort)vyhoditBM;


                    UO.MoveItem(CBM, uvyhoditBM, zdroj);
                    UO.Wait(300);
                    UO.Print(0x00B3, "Vraceno {0} "+ names[k]+" zpet !", vyhoditBM);

                }

                else if (BMZ > kolik)
                {

                   int o_kolik = kolik - BMC;
                    ushort uo_kolik = (ushort)o_kolik;
                    UO.MoveItem(BM, uo_kolik, cil);
                    UO.Wait(300);

                }
                else
                {
                    if (BMZ != 0)
                    {
                        UO.Print("Neni potrebne mnostvi " + names[k] + " ve zdroji prenasim {0} !", BM.Amount);

                        UO.MoveItem(BM, BM.Amount, cil);

                        int dokoupitBM = kolik - (int)BM.Amount;
                        UO.Print(0x0b94, "Je treba dokoupit {0} " + names[k] + " !", dokoupitBM);
                        UO.Wait(300);
                    }
                    else
                    {
                        int dokBM = kolik - BMC;
                        UO.Print(0x0b94, "Je treba dokoupit {0} " + names[k] + " !", dokBM);
                        UO.Wait(300);
                    }
                }
            }
            else
            {
                UO.Print(0x00B3,names[k] +" neprenasim je ho presne !");
            }

            }
       UO.Print(SpeechFont.Bold, 0x0b94, "! Presun dokoncen !");
//-------------------------------------------------------------------------------------
            
        }
        [Command("MRC")]
        public void MRC()
        {
            MRC(0,true);
        }
        [Command("MRC")]
        public void MRC(ushort m_kolik)
        {
            MRC(m_kolik, true);
        }

    }

}
Necro regy:

Kód: Vybrat vše


 /////////////////////////////////////////////////////////////////////////
 //
 //     Autor: Koryn
 //     Name:  Presun Necro Regu pro dung vsech stejne mnozstvi.
 //     Popis: ,nrc x  - x je kolik regu se ma prenest do ciloveho kontejneru 
 //     a zaroven kolik jech tam ma zustat pokud je v cílovem baglu víc než x regu
 //     tak to co je nad bude vraceno do zdrojoveho kontejneru.vraceni regu true  
 //     ,mrc - je standartne nastaven na 0, a vraceni regu na true 
 //     ,mrc x true/false - muzete si vybrat jestli se regy kterych je nad x v cilovem
 //     kontejneru maji vracet do zdroje    
 //     Date:  18.5.2012
 //     Phoenix ver. : 0.7.x 
 //
 /////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;
using Phoenix;
using Phoenix.WorldData;
using System.Linq;
using Phoenix.Communication;
using Phoenix.Runtime;
using Phoenix.Runtime.Reflection;

namespace Phoenix.Koryn
{
    public class NecroRegCountedHelper
    {


        [Command("NRC")]
        public void NRC(ushort kolik, bool m_vracet)
        {
            UO.Print(0x0435, "Zahajen presun regu na dung.");
            
            
            UO.Print(SpeechFont.Bold, 0x0b94, "Zvol zdrojovy box !!!");
            UOItem zdroj = new UOItem(UIManager.TargetObject());

            if (!zdroj.Exist)
                ScriptErrorException.Throw("Invalid item.");
            if (!zdroj.Opened)
            {
                using (ItemOpenedEventWaiter ew = new ItemOpenedEventWaiter(zdroj))
                {
                    zdroj.Use();
                    if (!ew.Wait(2000))
                        UO.PrintWarning("Nemuzu otevrit kontejner.");
                }
            }

            UO.Wait(200);
            UO.Print(SpeechFont.Bold, 0x0b94, "Zvol kam presunot !!!");
            UOItem cil = new UOItem(UIManager.TargetObject());

            if (!cil.Exist)
                ScriptErrorException.Throw("Invalid item.");
            if (!cil.Opened)
            {
                using (ItemOpenedEventWaiter eww = new ItemOpenedEventWaiter(cil))
                {
                    cil.Use();
                    if (!eww.Wait(2000))
                        UO.PrintWarning("Nemuzu otevrit kontejner.");
                }
            }
           
            ushort[] regs = { 0x0F7D, 0x0F7E, 0x0F83, 0x0F81, 0x0F78, 0x0F87, 0x0F7C, 0x0F7F, 0x0F89, 0x0F79, 0x0F8B, 0x0F8F, 0x0F80, 0x0F8E,0x0F91 };
            string[] names = { "Vial of blood", "Bone", "Executioners Cap", "Fertile Dirt", "Batwing", "Eye of newt", "Bloodspawn", "Brimstone", "Obsidian", "Blackmoor", "Pumice", "Volcanic Ash", "Deamon Bone", "Serpent Scale", "Wyrm's Hearts"  };
            
            for (int k = 0; k < regs.Length; k++)
            {
               


                UOItem BM = zdroj.AllItems.FindType(regs[k]);
                UOItem CBM = cil.AllItems.FindType(regs[k]);
                int BMC = cil.AllItems.Count(regs[k]);
                int BMZ = zdroj.AllItems.Count(regs[k]);

            if (BMC != kolik)
            {
                if (BMC >= kolik && m_vracet)
                {
                    int vyhoditBM = BMC - kolik;
                    ushort uvyhoditBM = (ushort)vyhoditBM;


                    UO.MoveItem(CBM, uvyhoditBM, zdroj);
                    UO.Wait(300);
                    UO.Print(0x00B3, "Vraceno {0} "+ names[k]+" zpet !", vyhoditBM);

                }

                else if (BMZ > kolik)
                {

                   int o_kolik = kolik - BMC;
                    ushort uo_kolik = (ushort)o_kolik;
                    UO.MoveItem(BM, uo_kolik, cil);
                    UO.Wait(300);

                }
                else
                {
                    if (BMZ != 0)
                    {
                        UO.Print("Neni potrebne mnostvi " + names[k] + " ve zdroji prenasim {0} !", BM.Amount);

                        UO.MoveItem(BM, BM.Amount, cil);

                        int dokoupitBM = kolik - (int)BM.Amount;
                        UO.Print(0x0b94, "Je treba dokoupit {0} " + names[k] + " !", dokoupitBM);
                        UO.Wait(300);
                    }
                    else
                    {
                        int dokBM = kolik - BMC;
                        UO.Print(0x0b94, "Je treba dokoupit {0} " + names[k] + " !", dokBM);
                        UO.Wait(300);
                    }
                }
            }
            else
            {
                UO.Print(0x00B3,names[k] +" neprenasim je ho presne !");
            }

            }
UO.Print(SpeechFont.Bold, 0x0b94, "! Presun dokoncen !");
//-------------------------------------------------------------------------------------
            
        }
        [Command("NRC")]
        public void NRC()
        {
            NRC(0,true);
        }
        [Command("NRC")]
        public void NRC(ushort m_kolik)
        {
            NRC(m_kolik, true);
        }

    }

}



Naposledy upravil(a) Koryn dne 16 zář 2012 13:04, celkem upraveno 3 x.
Mianek
Book Snake
Book Snake
Příspěvky: 135
Registrován: 08 zář 2006 22:31
Kontaktovat uživatele:

Re: Přesun Necro, Mage Regu s nastavenim

Příspěvek od Mianek »

šikovný script, díky za něj. Ještě bych přidal oznámení o dojetí scriptu

edit: stává se mi že požadované množství mi zarovná až po druhým spuštění
Legie (navzdy!!)
Koryn
Misspelling Chicken
Misspelling Chicken
Příspěvky: 6
Registrován: 26 dub 2012 19:41

Re: Přesun Necro, Mage Regu s nastavenim

Příspěvek od Koryn »

Dik rad vydím že se to někomu přida jinak mohl by si to trochu specifikovat v jakých případech se ti stane že se regy nezarovnají ? testoval sem to snad 100x a nikdy se mi nestalo že by ten script nezarovnal regy.
Mianek
Book Snake
Book Snake
Příspěvky: 135
Registrován: 08 zář 2006 22:31
Kontaktovat uživatele:

Re: Přesun Necro, Mage Regu s nastavenim

Příspěvek od Mianek »

napsal jsem ,mrc 150 ...... (mel jsem BM a BP pod 150 ostatni regy vice) BM a BP mi to prihodilo o 150 vic zbytek regu mi to spravne dorovnalo do 150, pri druhym naspani , mrc 150 mi to dorovnalo uz i BM a BP a u ostatni regu vypsalo ze neprenasi ze jich je presne

ted na druhy postave, vsechny regy jsem mel okolo 600, naspal jsem ,mrc 300 zarovnalo mi to pro zmenu vse krome GC, NS a SS a pri druhym spusteni to uz odhodilo i tenhle zbytek na 300ks

edit: ted mi to zase odebralo vsechny regy krome BP na pozadovany pocet, pri druhym spusteni uz i BP, neda se nic delat smirim se s tim ze to vzdy spustim dvakrat xD i tak to dost usetri cas s doplnovanim regu :)
Legie (navzdy!!)
Koryn
Misspelling Chicken
Misspelling Chicken
Příspěvky: 6
Registrován: 26 dub 2012 19:41

Re: Přesun Necro, Mage Regu s nastavenim

Příspěvek od Koryn »

Tak dik za upozornění fakt tam byla chybka ted už by to mělo byt v pořádku.
Mianek
Book Snake
Book Snake
Příspěvky: 135
Registrován: 08 zář 2006 22:31
Kontaktovat uživatele:

Re: Přesun Necro, Mage Regu s nastavenim

Příspěvek od Mianek »

sry ze ti zase reju do tvych scriptu.. ale v nekro regach bude taky nejaka chybicka vubec to nepresouva "Wyrm's Hearts" :wink:
Legie (navzdy!!)
Koryn
Misspelling Chicken
Misspelling Chicken
Příspěvky: 6
Registrován: 26 dub 2012 19:41

Re: Přesun Necro, Mage Regu s nastavenim

Příspěvek od Koryn »

Jo no psal sem to a nejspíš sem neměl žadny u sebe tak sem na něho zapoměl.
Odpovědět