Razor Enhanced è un ottimo programma, è un peccato che gli script per la community siano così pochi, per cui, visto che alcuni trovano il train di spellweaving un vero inferno (e da 0 a 10 lo è davvero, ma poi diventa accettabile) ho deciso di scrivere e postare questo script:
codice:
##====== Spellweaving Macro ======## ## Piattaforma: Razor Enhanced ## Autore: Malicious Otter ## Versione: 1.2.1 ## Shard: UODreams ##================================## ## Serve: ## - una barca ##================================## ## Variabili ##================================## ManaPause = 500 WaitTarget = 8000 HealDelay = 500 BoatDirection = 0 MinHits = 80 layers = ["RightHand", "LeftHand", "Shoes", "Pants", "Shirt", "Head", "Gloves", "Ring", "Neck", "Waist", "InnerTorso", "Bracelet", "MiddleTorso", "Earrings", "Arms", "Cloak", "OuterTorso", "OuterLegs", "InnerLegs", "Unused x9"] swlayersfcr = 0 swlayerslmc = 0 ##================================## ## Filter ##================================## fil = Mobiles.Filter() fil.Enabled = True fil.RangeMax = 5 ##================================## ## Funzioni ##================================## def ValutaLMCMR( ): global swlayersfcr, swlayerslmc for layer in layers: if Player.CheckLayer(layer) != False: litem = Player.GetItemOnLayer(layer) Items.WaitForProps(litem, 5000) swlayersfcr = swlayersfcr + Items.GetPropValue(litem, "Faster Cast Recovery") swlayerslmc = swlayerslmc + Items.GetPropValue(litem, "Lower Mana Cost") if swlayersfcr > 6: swlayersfcr = 6 swmsg = "LMC: %d FCR: %d" % (swlayerslmc, swlayersfcr) Misc.SendMessage(swmsg, 89) return; def ChangeDir( ): global BoatDirection if BoatDirection > 0: Player.ChatSay(89, "forward") BoatDirection = 0 else: Player.ChatSay(89, "back") BoatDirection = 1 return; def FCRDelay( nofcr ): fcr = nofcr - ( swlayersfcr * 250 ) if fcr < 500: fcr = 500 return fcr; def ChkHits( ): while Player.Hits < MinHits: WaitForMana(MinMana('2')) if Player.GetSkillValue("Chivalry") < Player.GetSkillValue("Magery"): Spells.CastMagery("Heal") else: Spells.CastChivalry("Close Wounds") Target.WaitForTarget(WaitTarget) Target.TargetExecute(Player.Serial) Misc.Pause(HealDelay) return; def MinMana( val ): return { '0': 24, '1': 32, '2': 10, '3': 50, '4': 50, }.get(val, 0); def WaitForMana( mana ): rmana = (mana * ( 1.00 - (swlayerslmc / 100.0))) + 1 while (Player.Mana < rmana): Misc.Pause(ManaPause) return; def Casta( sval ): if sval >= 82: ChkHits() WaitForMana(MinMana('4')) Spells.CastSpellweaving("Word Of Death") Target.WaitForTarget(WaitTarget) Target.TargetExecute(Player.Serial) Misc.Pause(FCRDelay(3500)) elif sval >= 75 and sval < 82: WaitForMana(MinMana('3')) Spells.CastSpellweaving("Wildfire") Target.WaitForTarget(WaitTarget) Target.TargetExecute(Player.Serial) Misc.Pause(FCRDelay(2500)) elif sval >= 44 and sval < 75: if Player.Followers < Player.FollowersMax: WaitForMana(MinMana('2')) Spells.CastSpellweaving("Summon Fey") Misc.Pause(FCRDelay(2000)) else: bmobiles = Mobiles.ApplyFilter(fil) Player.ChatSay(89, "all follow me") Misc.Pause(1500) for bmobile in bmobiles: if bmobile.Body == 0x80: msg = bmobile.Name + " release" Player.ChatSay(89, msg) Misc.Pause(500) elif sval >= 10 and sval < 44: WaitForMana(MinMana('1')) Spells.CastSpellweaving("Thunderstorm") Misc.Pause(FCRDelay(1500)) else: WaitForMana(MinMana('0')) Spells.CastSpellweaving("Attunement") Misc.Pause(FCRDelay(1000)) return; ##================================## ## Main Loop ##================================## ValutaLMCMR() while Player.GetSkillValue("Spell Weaving") < Player.GetSkillCap("Spell Weaving"): ChangeDir() Casta(Player.GetSkillValue("Spell Weaving"))
Commenta