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