///////////////////////////////////////////////////////////////////////// // // www.ultima.smoce.net // Name: Přesun Mage Regu s nastavenim // ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// // // 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); } } }