Hell's Knights Guild

vash healer

« Older   Newer »
  Share  
MaTT*
view post Posted on 19/5/2011, 22:21




;==========================================
; Vash Healer 4.1
;==========================================
;
; IMPORTANTE:
; -----------
; 1- Tenere sempre zaino e status aperti.
; 2- Attivare il Targeting System con l'apposita macro client.
; 3- Disattivare l'auto-accoda azioni di Razor.
; 4- Compatibile oslo con RunUO 2.0 e shard OSI-Style.
;
; Ecco le features dello script:
; ------------------------------
; 1) Avverte se le bende stanno per finire, e se finiscono
; è sufficiente rifornirsi, senza doverlo riavviare.
; 2) Controlla il journal per verificare che le bende siano
; state correttamente applicate, altrimenti riprova.
; 3) Mostra il tempo di bendata sulla testa del pg.
; 4) Potete precastare magie, e finchè c'è il target fuori,
; lo script non benderà.
; 5) Scarissima interferenza con i target delle spell.
; 6) Non benda da hiddati, per non venire revelati.
; 7) La bendata entrerà in azione subito dopo un mortal strike in modo da finire,
; se possibile, poco dopo la fine dell'effetto.
; 8) Auto cure e auto refresh.
;
; Fate il setup qui sotto, ricordando che vero è #true e falso è #false.

; SETUP
; -----
; Settando counter a true, avrete il contatore sopra la testa del pg.
set %counter #true

; Volete il counter in decimi di secondo anzichè in secondi,
; come nel vecchio vash healer? Mettete #true qui:
set %­oldStyle #true

; Attenzione: col contatore oldstyle di rischia di crashare.

; La prossima variabile indica il limite di hp al di sotto dei quali curare.
; Mettendo 5 ad esempio, se avete 100hp, benderà solo al di sotto di 95hp.
set %­limit 5

; ANTIMORTAL
; ----------
; Se avete problemi con l'antimortal settato a 62, mettetelo a 64.
; Può essere utile in caso di pc vecchio, lag, ecc.
set %antimortal 64

; POZIONI
; --------
; Qui avete due variabili da settare #true o #false.
; La prima farà bere in automatico allo script le pozze cure.
; La seconda berrà in automatico pozze refresh.
set %cure #true
set %­refresh #true
; Se avete settato l'auto-refresh, settate al di sotto di quale
; valore della stamina è necessario berle:
set %­stamina 30

; Sconsiglio vivamente queste opzioni su pg arciere, in quanto
; potreste bere in automatico la pozza in un momento critico,
; e non è bello venire disarmati in momenti critici.

; Adesso, a seconda che utilizziate Razor o Injection e vogliate
; usare l'autocure o l'autorefresh, dovete farvi due macro.
; Una macro deve togliere scudo (o arma o libro) e bere la pozza cure,
; l'altra deve bere la pozza refresh.
; Dopodichè scrivete il nome della macro o della sub qui:
set %­macroCure drinkCure
set %­macroRefresh drinkRefresh

; Qua sotto invece metti #true se utilizzi razor,
; altrimenti se utilizzi injection metti #false.

set %­razor #false

; OPTIONAL
; --------
; Qui si può impostare i caratteri e il colore
; del contatore. I caratteri vanno da 0 a 7, provateli.
; I colori vanno da 0 a non so quanto. Esempio:
; Font normale, colore grigio: font 3 color 0
; Font grossa, colore viola: font 0 color 20
set %font 0
set %color 20
; Abbiamo finito il setup.
;==========================================

;==========================================
; Main Loop
; ---------
set #lpc 30
set %­mortal #false

if %cure
{
if %­razor
set %cureCmd -Macro , #spc , %­macroCure
else
set %cureCmd ,exec , #spc , %­macroCure
}

if %­refresh
{
if %­razor
set %­refCmd -Macro , #spc , %­macroRefresh
else
set %­refCmd ,exec , #spc , %­macroRefresh
}

set %­lastStamina #scnt

_mainloop:

if yes in #charghost
{
wait 1s
goto _mainloop
}

if ( ( ( #hits < ( #maxhits - %­limit ) ) || C in #charstatus ) && H notin #charstatus )
{
set %­hasRefresh #false
set %­hasCure #false

finditem NUF C_ , #backpackid
if #findcnt > 0
set %­hasCure #true

finditem ZUF C_ , #backpackid
if #findcnt > 0
set %­hasRefresh #true

GoSub CheckAids
if #result = #true
{
if #targcurs = 1
GoSub WaitCurs 0

set %delay ( ( 11 - ( #dex / 20 ) ) * 10 )

GoSub Apply
if #result = #false
goto _mainloop

GoSub Waitnew
wait 1
}
}

goSub CheckStamina
sleep 10

goto _mainloop
;==========================================

;==========================================
; SUB WAITCURS
; ------------
; A questa sub si passano 1 o 2 argomenti.
; Il primo può essere 1 o 0. Sta ad indicare
; il valore di #targcurs desiderato.
; Il secondo, opzionale, indica un timeout in decimi
; di secondo. In ogni caso, per evitare che rimanga
; all'infinito, c'è un timeout di base di 100 secondi.

Sub WaitCurs

if %0 = 2
set %­waitTimeout #scnt2 + %2
else
set %­waitTimeout #scnt2 + 1000

while #targcurs <> %1
{
if #scnt2 > %­waitTimeout
return #false

sleep 5
}

if %1 = 0
wait 2 ; per non far fizzare il target appena lanciato

return #true
;==========================================

;==========================================
; SUB CHECKAIDS
; -------------
; Controlla che ci siano bende nello zaino.
; Avverte se ne rimangono meno di 10.
; Mette lo script in attesa quando finiscono.
; Setta la variabile %aids.

Sub CheckAids

finditem ZLF CA_ , #BACKPACKID
if #findstack = 0
{
event ExMsg #charID 2 38 No bandages found!
wait 3s
return #false
}

if #findstack < 10 && #findcnt < 2
event sysmessage ATTENZIONE! Ti rimangono solo #findstack bende!

set %aids #findid

return #true
;==========================================

;==========================================
; SUB APPLY
; ---------
; NOTA: serve la variabile %aids.
; Questa sub benda il pg, facendo controlli
; di sicurezza per verificare che le bende siano state
; effettivamente applicate.

Sub Apply

_aidloop:
if yes in #charghost
return #false

set %­startIndex #jindex
event macro 58
set %­start #scnt2
wait 1
if you_begin_applying in #sysmsg
return #true

GoSub WaitStartMsg 3
if #result <> 1
return #false

return #true
;==========================================

;==========================================
; SUB WAITSTARTMSG
; ----------------
; Attende il messaggio di bendata.
; Vuole un argomento, il timeout in decimi di secondo.
; Restituisce 1 se benda, 0 se non è possibile bendare il pg,
; e -1 se le bende non entrano in azione completamente.

Sub WaitStartMsg

set %­sysTimeout #scnt2 + %1

_waitsysmsgloop:
if #jindex > %­startIndex
{
set %­startIndex %­startIndex + 1
scanjournal %­startIndex

if you_begin_applying in #journal
return 1

if that_being in #journal
return 0

goto _waitsysmsgloop
}

if #scnt2 < %­sysTimeout
{
sleep 5
goto _waitsysmsgloop
}

return -1
;==========================================

;==========================================
; SUB WAITNEW
; ----------------
Sub WaitNew

set %­keypressed 0
set %end %delay + %­start + 1
set %­limitcure %end - 17
if %­oldStyle
set %­oldremaining 140
else
set %­oldremaining 14
wait 2

_waitloop:
if %counter
{
if %­oldStyle
{
set %­remaining %end - #scnt2
if %­remaining < ( %­oldremaining - 2 )
{
event ExMsg #charID %font %color %­remaining
set %­oldremaining %­remaining
}
}
else
{
set %­remaining ( ( %end - #scnt2 ) / 10 ) + 1
if %­remaining <> %­oldremaining
{
event ExMsg #charID %font %color %­remaining
set %­oldremaining %­remaining
}
}
}

if D in #charstatus && %­mortal = #false
{
set %­mortal #true
set %­mortend #scnt2 + %antimortal

_mortloop:
if ( ( %delay + #scnt2 ) > %­mortend )
return
sleep 10
goto _mortloop
}

wait 1

if C in #charstatus && %cure = #true && %­hasCure = #true && H notin #charstatus
{
if #scnt2 > %­limitcure && %­keypressed = 0
{
msg $
wait 1
msg %cureCmd $
set %­keypressed 1
}
}

goSub CheckStamina

if #scnt2 >= %end + 2 || you_finish_applying in #sysmsg || you_apply_the in #sysmsg || you_heal in #sysmsg || the_bleeding in #sysmsg || you_have_failed in #sysmsg
{
if %­mortal
set %­mortal #false

return
}

goto _waitloop

return ; giusto per essere sicuri
;==========================================

;==========================================
; SUB CHECKSTAMINA
; ----------------
Sub CheckStamina

if %­refresh = #false || %­hasRefresh = #false || H in #charstatus
return

if ( #stamina < %­stamina )
{
if ( #scnt > ( %­lastStamina + 3 ) )
{
set %­lastStamina #scnt
msg $
wait 1
msg %­refCmd $
}
}

return
;==========================================
 
Top
Spongebob1992
view post Posted on 19/5/2011, 22:25




grazie
 
Top
1 replies since 19/5/2011, 22:21   18 views
  Share