Hell's Knights Guild

Vash Healer v4.1

« Older   Newer »
  Share  
SalamanderXXX
view post Posted on 1/7/2010, 16:24




Vash Healer 4.1

DESCRIZIONE: Questo script e' forse uno dei più usati in assoluto, rende automatico l'utilizzo delle bende e imposta l'uso delle pozze cure e refresh
(io non uso questa feature).

VARIABILI DA SETTARE: Tutta la parte iniziale dello script va impostata ed il tutto e' documentato bene nello script stesso.

SCRIPT
SPOILER (click to view)
CODE
;==========================================
; 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 #false

; 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 #true

; 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 3
set %color 0
; 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
Tipo Dio
view post Posted on 1/12/2011, 22:59




ciao

ho provato lo script ma mi va in loop:


-who will you use the bandages on?
-you begin applying the bandage


all'infinito....

ho 11 dex che sia quello? non mi viene neanche il contatore sopra la testa..

tnx
 
Top
Tipo Dio
view post Posted on 2/12/2011, 01:00




aggiornamento:

son riuscito a fare andare il contatore, ma parte come se io dicessi qualcosa = event macro 3 0 **variabile_contatore**

come posso fare per mostrare sopra alla mia testa i numerini ma senza farli visualizzare dagli altri?
 
Top
Tekkiru Masashi
view post Posted on 2/12/2011, 09:57




Lo script lo posto io questo va benissimo!

;==========================================
; Vash Healer 4.1 (Counter by BuBBa)
;==========================================
;
; 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 #false

; 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 #false
set %­refresh #false
; 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
{
set #sysmsgcol 38
event sysmessage No bandages found!
wait 3s
return #false
}

if #findstack < 10 && #findcnt < 2
{
set #sysmsgcol 38
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 )
{
set #sysmsgcol 8741
event sysmessage Bendata in %­remaining
set %­oldremaining %­remaining
}
}
else
{
set %­remaining ( ( %end - #scnt2 ) / 10 ) + 1
if %­remaining <> %­oldremaining
{
set #sysmsgcol 8741
event sysmessage Bendata in %­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
;==========================================


Se hai problemi posta pure che proviamo a risolverli!
 
Top
Tipo Dio
view post Posted on 2/12/2011, 18:43




funziona.. l'unica cosa è che volevo mettere i numerini al posto di sysmsg in basso a sinistra, sopra la testa del pg ma in modo che la gente non li legga.. qualcuno sa come fare?
 
Top
view post Posted on 2/12/2011, 20:20
Avatar

ShuN
*****

Group:
Administrator
Posts:
1,690

Status:


è un altra versione di questo script se cerchi nel forum di gn dovrebbe esserci
 
Top
5 replies since 1/7/2010, 16:24   75 views
  Share