///////////////////////////////////////////////////////////////////////// // // www.ultima.smoce.net // Name: Přesun Necro Regu s nastavenim // ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// // // 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."); } } //-------------------BM------BP-----GC------GS-------MR------NS------SA------SS---- ushort[] regs = { 0x0F7D, 0x0F7E, 0x0F83, 0x0F81, 0x0F78, 0x0F87, 0x0F7C, 0x0F7F, 0x0F89, 0x0F79, 0x0F8B, 0x0F8F, 0x0F80, 0x0F8E }; 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" }; 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); } } }