Přesun Mage Regu s nastavenim

Datum: 26/06/2012 11:15:52

Staženo: 541x

Popis:

Autor: KORYN

http://www.darkparadise.cz/Forum/viewtopic.php?f=67&t=4895

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í.


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.


Hodnocení: 3.6/10 (81 hlasy)

Download file:cs

Příkazy:

  • ,mrc "ushort kolik" " bool m_vracet"
  • ,mrc
  • ,mrc "ushort m_kolik"

Kód:

/////////////////////////////////////////////////////////////////////////
//
//     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);
        }

    }

}
Zde ještě není žádný komentář.

Nový komentář