DracoX Support and Utility Functions

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
DracoX
Posts: 14
Joined: 2012-09-10 20:18:54

DracoX Support and Utility Functions

Post by DracoX »

Hi everyone!

It's my first own topic in this forum, so let me introduce my self :lol:

I'm DracoX, Dimension Free Shard (Brazilian Shard), Staff Member (currently Seer) and Injection Scripter (it's been a while... can't remember when i begun to script in Injection).
And the most important part of me... i don't understand Russian :wink: !

I'm here to bring you my small list (ironic) of support/auxiliar/utility/whatever script/function list.

If anyone needs me to explain one or all plz ask which one(s) and i'll do my best to describe them in english!

Here they go:

Code: Select all

; 7 - Auxiliares ; {

; 7.00 - Sobrevivência ; {
; 7.00.000 - Recuperar ; {
Sub Recuperar(guardas)
var verif
If UO.InJournal(msgAtacado) Or UO.Life<UO.Str Or UO.Poisoned() Then
   If guardas==1 Then
      UO.Exec('exec Guardas')
   End If
   PM('Estou sendo atacado! Estou na posição '+str(UO.GetX())+','+str(UO.GetY())+','+str(UO.GetZ()))
   CancelarWarMode()
   ApagaDoJournal(msgBloqueioMagery)
   While ((UO.Life<UO.Str And (UO.Count(typeBandage)>0 Or Not UO.InJournal(msgBloqueioMagery))) Or (UO.Poisoned() And Not UO.InJournal(msgBloqueioMagery))) And Not UO.Dead()
      While UO.Poisoned() And Not UO.InJournal(msgBloqueioMagery)
         While UO.Poisoned() And UO.Mana<m23
            CancelarWarMode()
            EsperaMeditacao(m23)
         WEnd
         If UO.Poisoned() And UO.Mana>=m23 Then
            Cast(n23,m23,d23,s23,p23,'s')
            EsperaMagia()
         End If
      WEnd
      If UO.Life<UO.Str And (UO.Count(typeBandage)>0 Or Not UO.InJournal('An anti-magic field disturbs the spells.')) Then
         If UO.Count(typeBandage)>0 Then
            If UO.GetGlobal('Bandage')=='1' Then
               verif=(delayBandage+5)*1000
               Repeat
                  Wait(100)
                  If UO.InJournal(msgSalvandoMundo) Then
                     verif=verif+30000
                     ApagaDoJournal(msgSalvandoMundo)
                  End If
                  verif=verif-100
               Until UO.GetGlobal('Bandage')<>'1' Or verif<=0
               If verif<=0 Then
                  ReiniciarDelayBandage()
               End If
            Else
               ApagaDoJournal(msgUsandoHealing+'|'+msgUsouHealing+'|'+msgFalhaHealing+'|'+msgEsperaSkill+'|'+msgBloqueioHealing)
               UO.BandageSelf()
               EsperaBandage()
            End If
         Else
            While UO.Mana<m14 And Not UO.Poisoned()
               CancelarWarMode()
               EsperaMeditacao(m14)
            WEnd
            If UO.Mana>=m14 And Not UO.Poisoned() Then
               Cast(n14,m14,d14,s14,p14,'s')
               EsperaMagia()
            End If
         End If
      End If
   WEnd
   CancelarWarMode()
End If
End Sub
;      ; }
; 7.00.001 - Chamar Guardas ; {
Sub Guardas()
var antiflood=0
If UO.InJournal(msgAtacado) Then
   UO.Msg(msgGuardas)
   ApagaDoJournal(msgAtacado)
   Wait(delayGuardas*1000)
End If
While UO.Life<UO.Str Or UO.Poisoned() Or UO.Dead()
   If antiflood<=0 then
      antiflood=delayGuardas*1000
      UO.Msg(msgGuardas)
   End If
   Wait(100)
   antiflood=antiflood-100
WEnd
End Sub
;      ; }
; 7.00.002 - Alimentar Personagem ; {
Sub Comer(tipo)
If tipo<>'0x0000' Then
   If UO.Count(tipo)>0 Then
      var t=25
      UO.Msg('.fome')
      Wait(100)
      EsperaSalvarMundo()
      EsperaAtraso()
      If TextoMeuServidor(msgFomeVazio) And Not UO.Dead() Then
         Repeat
            UO.UseType(tipo)
            t=t-1
            Wait(100)
            EsperaSalvarMundo()
         Until TextoMeuServidor(msgFomeCheio) Or UO.Count(tipo)<=0 Or t<=0 Or UO.Dead()
      End If
      If TextoMeuServidor(msgFomeCheio) Or UO.Count(tipo)<=0 Or UO.Dead() Then
         ApagaDoJournal(msgFomeVazio+'|'+msgFomeCheio)
      End If
   End If
End If
End Sub
;      ; }
; 7.00.003 - Reviver ; {
Sub Reviver()
var c
While UO.Dead()
   UO.LClick(xBotaoHelp,yBotaoHelp)
   EsperaGump('text', 0, gumpHelpPage0, 1)
   If usarGump==1 Then
      UO.LClick(xBotaoHelpRoom-xGumpHelp+UO.LastGump('x'),yBotaoHelpRoom-yGumpHelp+UO.LastGump('y'))
   Else
      UO.LClick(xBotaoHelpRoom,yBotaoHelpRoom)
   End If
   EsperaGump('text', 10, gumpHelpRoom10, 1)
   If usarGump==1 Then
      UO.LClick(xBotaoConfirmaHelpRoom-xGumpHelp+UO.LastGump('x'),yBotaoConfirmaHelpRoom-yGumpHelp+UO.LastGump('y'))
   Else
      UO.LClick(xBotaoConfirmaHelpRoom,yBotaoConfirmaHelpRoom)
   End If
   EsperaGump('text', 0, gumpHelpRoomConfirma0, delayHelpRoomMorto+2.5)
   If usarGump==1 Then
      UO.LClick(xBotaoAceitaHelpRoom-xGumpAceitaHelpRoom+UO.LastGump('x'),yBotaoAceitaHelpRoom-yGumpAceitaHelpRoom+UO.LastGump('y'))
   Else
      UO.LClick(xBotaoAceitaHelpRoom,yBotaoAceitaHelpRoom)
   End If
   c=(delayHelpRoomConfirma+2.5)*1000
   Repeat
      Wait(10)
      c=c-10
   Until Not UO.Dead() Or c<=0
WEnd
End Sub
;      ; }
;   ; }

; 7.01 - Esperas ; {
; 7.01.000 - Espera Atraso de Comunicação ; {
Sub EsperaAtraso()
var ping=0
ApagaDoJournal('backpack')
UO.Click('backpack')
Repeat
   Wait(1)
   ping=ping+1
Until UO.InJournal('backpack')
If modoDebug==1 then
   UO.CharPrint(corCharPrintDebug,'Atraso Debug: '+str(ping)+'ms')
End If
return ping
End Sub
;      ; }
; 7.01.001 - Espera Salvar Mundo ; {
Sub EsperaSalvarMundo()
var debug=0
If TextoMeuServidor(msgSalvandoMundo) Then
   Repeat
      Wait(10)
      debug=debug+10
   Until UO.InJournal(msgSalvouMundo) Or debug>=delaySave*1000
End If
ApagaDoJournal(msgSalvandoMundo+'|'+msgSalvouMundo)
End If
If modoDebug==1 then
   UO.CharPrint(corCharPrintDebug,'Salvar Mundo Debug: '+str(debug/1000)+'s')
End If
End Sub
;      ; }
; 7.01.002 - Espera Usar Bandage ; {
Sub EsperaBandage()
var d=delayBandage*1000
var debug=0
While Not UO.Injournal(msgUsandoHealing+'|'+msgFalhaHealing+'|'+msgEsperaSkill+'|'+msgBloqueioHealing+'|'+msgNaoUsouHealing)
   Wait(10)
WEnd
Repeat
   If TextoMeuServidor(msgSalvandoMundo) And Not TextoMeuServidor(msgSalvouMundo) Then
      Wait(10)
      If modoDebug==1 Then
         UO.CharPrint(corCharPrintDebug,'Bandage Desconsiderando delay por estar salvando o mundo')
      End If
   Else
      Wait(10)
      d=d-10
      debug=debug+10
   End If
Until d<=0 Or TextoMeuServidor(msgUsouHealing+'|'+msgFalhaHealing+'|'+msgEsperaSkill+'|'+msgBloqueioHealing+'|'+msgNaoUsouHealing) Or UO.Dead()
If d<=0 Or TextoMeuServidor(msgFalhaHealing+'|'+msgEsperaSkill+'|'+msgBloqueioHealing) Then
   ApagaDoJournal(msgUsandoHealing+'|'+msgUsouHealing+'|'+msgFalhaHealing+'|'+msgEsperaSkill+'|'+msgBloqueioHealing+'|'+msgNaoUsouHealing)
   return false
Else
   If modoDebug==1 And Not TextoMeuServidor(msgNaoUsouHealing) Then
      UO.CharPrint(corCharPrintDebug,'Bandage Debug: '+str(debug/1000)+'s')
   End If
   ApagaDoJournal(msgUsandoHealing+'|'+msgUsouHealing+'|'+msgFalhaHealing+'|'+msgEsperaSkill+'|'+msgBloqueioHealing+'|'+msgNaoUsouHealing)
   return true
End If
End Sub
;      ; }
; 7.01.003 - Espera Magia ; {
Sub EsperaMagia()
var mana=UO.Mana
var vida=UO.Life
var debug=0
EsperaAtraso()
If Not TextoMeuServidor(msgFalhaAlvo+'|'+msgFalhaAlvoMagery+'|'+msgBloqueioMagery+'|'+msgBloqueioRecall+'|'+msgFaltaMagery) Then
   Repeat
      If UO.Mana>mana then
         mana=UO.Mana
      End If
      If UO.Life>vida Then
         vida=UO.Life
      End If
      Wait(10)
      debug=debug+10
   Until UO.Mana<mana Or UO.Life<vida Or TextoMeuServidor(msgFalhaMagery+'|'+msgBloqueioMagery+'|'+msgBloqueioRecall+'|'+msgFalhaAlvo+'|'+msgFalhaAlvoMagery+'|'+msgFaltaMagery) Or UO.Dead()
End If
If UO.Mana<mana Then
   If modoDebug==1 then
      UO.CharPrint(corCharPrintDebug,'Magia Debug: '+str(debug/1000)+'s')
   End If
   return true
End If
If TextoMeuServidor(msgFalhaMagery+'|'+msgBloqueioMagery+'|'+msgBloqueioRecall+'|'+msgFalhaAlvo+'|'+msgFalhaAlvoMagery+'|'+msgFaltaMagery) Or UO.Dead() Then
   CancelarWarMode()
   ApagaDoJournal(msgFalhaMagery+'|'+msgBloqueioMagery+'|'+msgBloqueioRecall+'|'+msgFalhaAlvo+'|'+msgFalhaAlvoMagery+'|'+msgFaltaMagery)
End If
return false
End Sub
;      ; }
; 7.01.004 - Espera Meditação ; {
Sub EsperaMeditacao(v)
If UO.Mana<v And UO.Mana<UO.Int Then
   var debug=0
   ApagaDoJournal(msgUsandoMeditation+'|'+msgUsouMeditation+'|'+msgNaoUsouMeditation+'|'+msgFalhaMeditation)
   UO.UseSkill('Meditation')
   If modoDebug==1 Then
      Repeat
         Wait(10)
      Until UO.InJournal(msgUsandoMeditation)
   End If
   Repeat
      Wait(10)
      debug=debug+10
   Until UO.Mana>=v OR UO.Mana>=UO.Int Or TextoMeuServidor(msgUsouMeditation+'|'+msgNaoUsouMeditation+'|'+msgFalhaMeditation)
   If TextoMeuServidor(msgFalhaMeditation) Then
      CancelarWarMode()
      ApagaDoJournal(msgFalhaMeditation)
      return false
   Else
      If UO.Mana>=UO.Int Then
         Repeat
            Wait(10)
            debug=debug+10
         Until TextoMeuServidor(msgUsouMeditation+'|'+msgNaoUsouMeditation+'|'+msgFalhaMeditation)
      End If
      If modoDebug==1 Then
         UO.CharPrint(corCharPrintDebug,'Meditação Debug: '+str(debug/1000)+'s')
      End If
      return true
   End If
Else
   return true
End If
End Sub
;      ; }
; 7.01.005 - Espera Alvo ; {
Sub EsperaAlvo()
var debug=0
While UO.Targeting()
   Wait(10)
   debug=debug+10
WEnd
If modoDebug==1 then
   UO.CharPrint(corCharPrintDebug,'Alvo Debug: '+str(debug/1000)+'s')
End If
End Sub
;      ; }
; 7.01.006 - Espera Gump ; {
Sub EsperaGump(t,p,i,d)
d=d*1000
var debug=0
If usarGump==1 Then
   If t=='text' Or t=='serial' Or t=='gumpid' Then
      Repeat
         Wait(100)
         d=d-100
         debug=debug+100
         EsperaSalvarMundo()
      Until d<=0 Or (UO.LastGump('replyed')==0 And ContemTexto(UO.LastGump(t,p),i))
   Else
      Repeat
         Wait(100)
         d=d-100
         debug=debug+100
         EsperaSalvarMundo()
      Until d<=0 Or (UO.LastGump('replyed')==0 And UO.LastGump(t)==i)
   End If
   If modoDebug==1 then
      UO.CharPrint(corCharPrintDebug,'Gump Debug: '+str(debug)+'ms')
   End If
Else
   EsperaSalvarMundo()
   Wait(d)
End If
End Sub
;      ; }
; 7.01.007 - Espera Fechar Gump ; {
Sub EsperaFecharGump(t,p,i,d)
d=d*1000
var debug=0
If usarGump==1 Then
   If t=='text' Or t=='serial' Or t=='gumpid' Then
      Repeat
         Wait(100)
         d=d-100
         debug=debug+100
         EsperaSalvarMundo()
      Until d<=0 Or UO.LastGump('replyed')<>0 Or Not ContemTexto(UO.LastGump(t,p),i)
   Else
      Repeat
         Wait(100)
         d=d-100
         debug=debug+100
         EsperaSalvarMundo()
      Until d<=0 Or UO.LastGump('replyed')<>0 Or UO.LastGump(t)<>i
   End If
   If modoDebug==1 then
      UO.CharPrint(corCharPrintDebug,'Gump Debug: '+str(debug)+'ms')
   End If
Else
   EsperaSalvarMundo()
   Wait(d)
End If
End Sub
;      ; }
; 7.01.008 - Espera Resposta em Texto de Alguém ; {
Sub EsperaResposta(alvo,tempomax)
tempomax=tempomax*1000
ApagaDoJournal(UO.GetName(alvo))
Repeat
   Repeat
      Wait(100)
      tempomax=tempomax-100
   Until UO.InJournal(UO.GetName(alvo)) Or tempomax<=0
   If UO.InJournal(UO.GetName(alvo)) And Not UO.JournalSerial(UO.InJournal(UO.GetName(alvo))-1)==UO.GetSerial(alvo) Then
      UO.SetJournalLine(UO.InJournal(UO.GetName(alvo))-1,'')
   End If
Until UO.JournalSerial(UO.InJournal(UO.GetName(alvo))-1)==UO.GetSerial(alvo) Or tempomax<=0
If tempomax>0 Or UO.JournalSerial(UO.InJournal(UO.GetName(alvo))-1)==UO.GetSerial(alvo) Then
   If Len(UO.Journal(UO.InJournal(UO.GetName(alvo))-1))>=Len(UO.GetName(alvo))+2 Then
      return Right(UO.Journal(UO.InJournal(UO.GetName(alvo))-1),Len(UO.Journal(UO.InJournal(UO.GetName(alvo))-1))-Len(UO.GetName(alvo))-2)
   End If
End If
return ''
End Sub
;      ; }
;   ; }

; 7.02 - Utilitários ; {
; 7.02.000 - Cancelamento com Warmode ; {
Sub CancelarWarMode()
var debug=0
If UO.WarMode()==0 Then
   UO.WarMode(1)
   ApagaDoJournal('backpack')
   UO.Click('backpack')
   Repeat
      Wait(1)
      debug=debug+1
   Until UO.WarMode()==1 Or UO.InJournal('backpack')
   UO.WarMode(0)
   Repeat
      Wait(1)
      debug=debug+1
   Until UO.WarMode()==0
Else
   UO.WarMode(0)
   Repeat
      Wait(1)
      debug=debug+1
   Until UO.WarMode()==0
End If
If modoDebug==1 then
   UO.CharPrint(corCharPrintDebug,'WarMode Debug: '+str(debug)+'ms')
End If
End Sub
;      ; }
; 7.02.001 - Seleção de Alvo para Próxima Ação ; {
Sub UsaAlvo(alvo)
If alvo=='c' Or alvo=='cancel' Then
   If UO.Waiting() Then
      UO.CancelTarget()
   End If
Else
   If alvo=='s' Or alvo=='self' Then
      UO.WaitTargetSelf()
   Else
      If alvo=='sg' Or alvo=='selfground' Then
         UO.WaitTargetTile('#0x400',UO.GetX(),UO.GetY(),UO.GetZ())
      Else
         If alvo=='l' Or alvo=='lasttarget' Then
            UO.WaitTargetLast()
         Else
            If alvo=='lg' Or alvo=='lasttargetground' Then
               UO.WaitTargetTile('#0x400',UO.GetX('lasttarget'),UO.GetY('lasttarget'),UO.GetZ('lasttarget'))
            Else
               If Left(alvo,2)=='o ' Then
                  UO.WaitTargetObject(Right(alvo,10))
               Else
                  If Left(alvo,2)=='og' Then
                     UO.WaitTargetTile('#0x400',UO.GetX(Right(alvo,10)),UO.GetY(Right(alvo,10)),UO.GetZ(Right(alvo,10)))
                  End If
               End If
            End If
         End If
      End If
   End If
End If
End Sub
;      ; }
; 7.02.002 - Abrir Banco ; {
Sub Bank()
var placa='0x00000000'
UO.IgnoreReset()
UO.Set('finddistance',5)
UO.FindType(typePlaca,corQualquer,'ground')
While UO.FindCount()>0
   If UO.GetDistance('finditem')<UO.GetDistance(placa) Or placa=='0x00000000' Then
      placa=UO.GetSerial('finditem')
   End If
   UO.Ignore('finditem')
   UO.FindType(typePlaca,corQualquer,'ground')
WEnd
If placa=='0x00000000' Then
   If UO.GetNotoriety('self')<=1 Then
      UO.Msg(msgBanco+' '+msgGuardas)
   Else
      UO.Msg(msgBanco)
   End If
Else
   UO.UseObject(placa)
   EsperaGump('text',6,gumpPlacaCasa6,1)
   If usarGump==1 Then
      UO.LClick(xBotaoPlacaBanco-xGumpPlacaCasa+UO.LastGump('x'),yBotaoPlacaBanco-yGumpPlacaCasa+UO.LastGump('y'))
   Else
      UO.LClick(xBotaoPlacaBanco,yBotaoPlacaBanco)
   End If
End If
EsperaAtraso()
UO.IgnoreReset()
End Sub
;      ; }
; 7.02.003 - Caminhar Até Posição ou Próximo; {
Sub Caminhar(x,y,dist)
var c=0
var cx
var cy
var limite=3000
var dir
var loop
Dim Anda[8]
Anda[0]=33   ; N ;
Anda[1]=39   ; NE ;
Anda[2]=34   ; E ;
Anda[3]=40   ; SE ;
Anda[4]=35   ; S ;
Anda[5]=37   ; SW ;
Anda[6]=36   ; W ;
Anda[7]=38   ; NW ;
While (UO.GetX()>x+dist Or UO.GetX()<x-dist Or UO.GetY()>y+dist Or UO.GetY()<y-dist) And c<10 And limite>0
   cx=UO.GetX()
   cy=UO.GetY()
   If (UO.GetX()<=x+dist And UO.GetX()>=x-dist) And UO.GetY()>y+dist Then
      dir=0
   End If
   If UO.GetX()<x-dist And UO.GetY()>y+dist Then
      dir=1
   End If
   If UO.GetX()<x-dist And (UO.GetY()<=Y+dist And UO.GetY()>=Y-dist) Then
      dir=2
   End If
   If UO.GetX()<x-dist And UO.GetY()<y-dist Then
      dir=3
   End If
   If (UO.GetX()<=x+dist And UO.GetX()>=x-dist) And UO.GetY()<y-dist Then
      dir=4
   End If
   If UO.GetX()>x+dist And UO.GetY()<y-dist Then
      dir=5
   End If
   If UO.GetX()>x+dist And (UO.GetY()<=Y+dist And UO.GetY()>=Y-dist) Then
      dir=6
   End If
   If UO.GetX()>x+dist And UO.GetY()>y+dist Then
      dir=7
   End If
   EsperaSalvarMundo()
   If c<=5 Then
      UO.Press(Anda[dir])
      Wait(100)
   Else
      dir=UO.Random(8)
      For loop=0 to UO.Random(5)+2
         UO.Press(Anda[dir])
         Wait(100)
      Next
   End If
   If UO.GetX()==cx And UO.GetY()==cy Then
      c=c+1
   Else
      c=0
   End If
   limite=limite-1
WEnd
End Sub
;      ; }
; 7.02.004 - Contar Item por Tipo e Local ; {
Sub ContarItem(tipo,cor,local)
var cont=0
UO.IgnoreReset()
If local=='ground' Then
   UO.Set('finddistance',distPegaChao)
End If
UO.FindType(tipo,cor,local)
While UO.FindCount()>0
   cont=cont+UO.GetQuantity('finditem')
   UO.Ignore('finditem')
   UO.FindType(tipo,cor,local)
WEnd
UO.IgnoreReset()
return cont
End Sub
;      ; }
; 7.02.005 - Mover Item por Tipo e Local ; {
Sub MoverItem(tipo,cor,localDe,localPara,modo,quant)
var contDe=ContarItem(tipo,cor,localDe)
var contPara=ContarItem(tipo,cor,localPara)
var movidoDe=0
var movidoPara=0
var antesDe
var antesPara
var mover=0
var pesoitem=10
If modo=='obter' Then
   If (quant-contPara)>contDe Then
      quant=contDe
   Else
      quant=quant-contPara
   End If
Else
   If modo=='sobrar' Then
      quant=contDe-quant
   Else
      If quant>contDe Then
         quant=contDe
      End If
   End If
End If
var loop=quant*2
While movidoPara<quant And movidoDe<quant And loop>0 And (localPara<>UO.GetSerial('backpack') Or UO.Weight<40+(UO.Str*3.5)-pesoitem)
   antesDe=contDe
   antesPara=contPara
   UO.FindType(tipo,cor,localDe)
   If UO.FindCount()>0 Then
      pesoitem=UO.Weight
      If movidoPara>=movidoDe Then
         mover=quant-movidoPara
      Else
         mover=quant-movidoDe
      End If
      If localPara=='ground' Then
         UO.Drop(mover,UO.GetX()-2+UO.Random(5),UO.GetY()-2+UO.Random(3)+UO.Random(2),UO.GetZ(),'finditem')
      Else
         UO.MoveItem('finditem',mover,localPara)
      End If
      Wait(1500)
      EsperaAtraso()
      EsperaSalvarMundo()
      pesoitem=(UO.Weight-pesoitem)/mover
   End If
   contDe=ContarItem(tipo,cor,localDe)
   contPara=ContarItem(tipo,cor,localPara)
   movidoDe=movidoDe-contDe+antesDe
   movidoPara=movidoPara+contPara-antesPara
   loop=loop-1
WEnd
End Sub
;      ; }
; 7.02.006 - Sair da Help Room ; {
Sub SairHelpRoom()
While UO.GetX()>=posHelpRoomW And UO.GetX()<=posHelpRoomE And UO.GetY()>=posHelpRoomN And UO.GetY()<=posHelpRoomS
   If UO.GetY()<yHelpRoomGate Then
      If UO.GetX()<xHelpRoomGate Then
         Caminhar(xHelpRoomGate-5,yHelpRoomGate-1,1)
      Else
         Caminhar(xHelpRoomGate+5,yHelpRoomGate-1,1)
      End If
   End If
   Caminhar(xHelpRoomGate,yHelpRoomGate+1+UO.Random(2),0)
   If UO.GetY()>yHelpRoomGate And UO.GetX()==xHelpRoomGate Then
      UO.Press(33)
      Wait(100)
      UO.Press(33)
      Wait(100)
      UO.Press(33)
      Wait(100)
      UO.Press(33)
   End If
   Wait(100)
WEnd
End Sub
;      ; }
; 7.02.007 - Mandar Mensagem Privada (PM) ; {
Sub PM(t)
If pmAviso1<>'' Then
   UO.Msg('.pm '+pmAviso1)
   EsperaGump('text',1,gumpPM1,1)
   UO.Say(t)
   Wait(Len(t)*2)
   If usarGump==1 Then
      UO.LClick(xBotaoPM-xGumpPM+UO.LastGump('x'),yBotaoPM-yGumpPM+UO.LastGump('y'))
   Else
      UO.LClick(xBotaoPM,yBotaoPM)
   End If
End If
If pmAviso2<>'' Then
   UO.Msg('.pm '+pmAviso2)
   EsperaGump('text',1,gumpPM1,1)
   UO.Say(t)
   Wait(Len(t)*2)
   If usarGump==1 Then
      UO.LClick(xBotaoPM-xGumpPM+UO.LastGump('x'),yBotaoPM-yGumpPM+UO.LastGump('y'))
   Else
      UO.LClick(xBotaoPM,yBotaoPM)
   End If
End If
End Sub
;      ; }
; 7.02.008 - Pega a vida do Inimigo (%) ; {
Sub VerificaVida(a)
var vida=0
If UO.GetSerial(a)==UO.GetSerial('self') Then
   vida=UO.Str
   If vida>0 Then
      vida=UO.Life/vida
   End If
Else
   vida=UO.GetHP(a)
   If vida>0 Then
      vida=vida/UO.GetMaxHP(a)
   End If
End If
return int(100*vida)
End Sub
;      ; }
;   ; }

; 7.03 - Textos ; {
; 7.03.000 - Contém Texto ; {
Sub ContemTexto(t1,t2)
var tmaior=t1
var tmenor=t2
If Len(t1)<Len(t2) Then
   tmaior=t2
   tmenor=t1
End If
If Len(tmenor)<=0 Then
   return true
End If
var pos=Len(tmaior)-Len(tmenor)
While pos>=0
   If Mid(tmaior,pos,Len(tmenor))==tmenor Then
      return true
   End If
   pos=pos-1
WEnd
return false
End Sub
;      ; }
; 7.03.001 - Apaga Linha do Journal ; {
Sub ApagaDoJournal(t)
While UO.InJournal(t)
   UO.SetJournalLine(UO.InJournal(t)-1,'')
WEnd
End Sub
;      ; }
; 7.03.002 - Texto Meu ou do Servidor ; {
Sub TextoMeuServidor(t)
While UO.InJournal(t)
   If UO.JournalSerial(UO.InJournal(t)-1)==UO.GetSerial('self') Or UO.JournalSerial(UO.InJournal(t)-1)=='0xFFFFFFFF' Then
      return true
   Else
      UO.SetJournalLine(UO.InJournal(t)-1,'')
   End If
WEnd
return false
End Sub
;      ; }
; 7.03.003 - Dono do Texto ; {
Sub TextoDono(t)
var d='0x00000000'
If UO.InJournal(t) Then
   d=UO.JournalSerial(UO.InJournal(t)-1)
   UO.SetJournalLine(UO.InJournal(t)-1,'')
End If
return d
End Sub
;      ; }
; 7.03.004 - Procura Texto Entre Posição Inicial e Texto Final ; {
Sub TextoPosTxt(texto,p,t)
If p>Len(texto) Then
   p=Len(texto)
End If
If p<0 Then
   p=0
End If
var pos=p
While pos<=Len(texto)-Len(t) And Mid(texto,pos,Len(t))<>t And Len(t)>0
   pos=pos+1
WEnd
If pos>Len(texto)-Len(t) Then
   pos=Len(texto)-p
End If
return Mid(texto,p,pos-p)
End Sub
;      ; }
; 7.03.005 - Procura Texto Entre Texto Inicial e Texto Final ; {
Sub TextoTxtTxt(texto,ti,tf)
var pos=0
While pos<=Len(texto)-Len(ti) And Mid(texto,pos-Len(ti),Len(ti))<>ti And Len(ti)>0
   pos=pos+1
WEnd
var posi=pos
While pos<=Len(texto)-Len(tf) And Mid(texto,pos-Len(tf),Len(tf))<>tf And Len(tf)>0
   pos=pos+1
WEnd
If pos>Len(texto)-Len(tf) Then
   pos=Len(texto)-posi
End If
return Mid(texto,posi,pos-posi)
End Sub
;      ; }
; 7.03.006 - Procura Texto Entre Texto Inicial e Posição Final ; {
Sub TextoTxtPos(texto,t,p)
var pos=0
While pos<=Len(texto)-Len(t) And Mid(texto,pos-Len(t),Len(t))<>t And Len(t)>0
   pos=pos+1
WEnd
If pos>p Then
   return ''
End If
return Mid(texto,pos,p-pos)
End Sub
;      ; }
; 7.03.007 - Substituir Texto ; {
Sub Substituir(texto,torig,tsubs)
If ContemTexto(texto,torig) Then
   texto=TextoPosTxt(texto,0,torig)+tsubs+TextoTxtPos(texto,torig,Len(texto))
End If
return texto
End Sub
;      ; }
;   ; }

; 7.04 - Números ; {
; 7.04.000 - Módulo ; {
Sub Modulo(n)
If n<0 Then
   return -n
End If
return n
End Sub
;      ; }
; 7.04.001 - Resto da Divisão de Inteiros ; {
Sub Mod(n,div)
If div<>0 Then
   return int((n/div-int(n/div))*div)
Else
   return 0
End If
End Sub
;      ; }
; 7.04.002 - Potência ; {
Sub Potencia(nbase,bexp)
var inv=0
var resp=nbase
If bexp==0 Then
   return 1
End If
If bexp==1 Then
   return nbase
End If
If bexp<0 Then
   inv=1
   bexp=-bexp
End If
While bexp>1
   resp=resp*nbase
   bexp=bexp-1
WEnd
If inv==1 Then
   If resp<>0 Then
      return 1/resp
   Else
      return 0
   End If
End If
return resp
End Sub
;      ; }
; 7.04.003 - Segundos para Horas, Minutos e Segundos ; {
Sub Hora(seg)
var hora=0
var min=0
var resp=''
seg=int(seg)
While seg<0
   seg=seg+(24*60*60)
WEnd
While seg>(24*60*60)
   seg=seg-(24*60*60)
WEnd
If seg>60*60 Then
   hora=int(seg/(60*60))
   seg=seg-int(seg/(60*60))*60*60
End If
If seg>60 Then
   min=int(seg/60)
   seg=seg-int(seg/60)*60
End If
If hora<10 Then
   resp=resp+'0'
End If
resp=resp+str(hora)+':'
If min<10 Then
   resp=resp+'0'
End If
resp=resp+str(min)+':'
If seg<10 Then
   resp=resp+'0'
End If
resp=resp+str(seg)
return resp
End Sub
;      ; }
; 7.04.004 - Formatar Dinheiro ; {
Sub Dinheiro(n)
var msg='gp'
var aux
While n>=1000
   msg=str(Mod(n,1000))+msg
   If Mod(n,1000)<100 and n/1000>=1 Then
      msg='0'+msg
   End If
   If Mod(n,1000)<10 and n/1000>=1 Then
      msg='0'+msg
   End If
   msg='.'+msg
   n=int(n/1000)
WEnd
return str(n)+msg
End Sub
;      ; }
;   ; }

; 7.05 - Arquivo ; {
; 7.05.000 - Escrever Novo Arquivo ; {
Sub ArquivoNovo(nome,texto)
var a=file(nome)
a.open()
a.create()
safe call a.writeln(texto)
a.close()
End Sub
;      ; }
; 7.05.001 - Adicionar a Arquivos ; {
Sub ArquivoAdicionar(nome,texto)
var a=file(nome)
a.open()
var t=''
var aux=safe call a.readString()
While aux<> msgFimArquivo
   t=t+aux
   aux=safe call a.readString()
WEnd
safe call a.writeln(texto)
a.close()
End Sub
;      ; }
; 7.05.002 - Ler Arquivo ; {
Sub ArquivoLer(nome,p)
var a=file(nome)
var t=''
var aux=''
var i
a.open()
If p<=0 Then
   aux=safe call a.readString()
   While aux<> msgFimArquivo
      t=t+aux
      aux=safe call a.readString()
   WEnd
Else
   If p>=2 Then
      For i=2 to p
         safe call a.readString()
      Next
   End If
   t=safe call a.readString()
End If
a.close()
return t
End Sub
;      ; }
; 7.05.003 - Apresentar Todo o Arquivo ; {
Sub ArquivoApresentar(nome)
var a=file(nome)
var t=''
UO.TextOpen()
UO.TextClear()
a.open()
UO.TextPrint('Arquivo '+nome+':')
UO.TextPrint('')
t=safe call a.readString()
While t<> msgFimArquivo
   UO.TextPrint(t)
   t=safe call a.readString()
WEnd
a.close()
UO.TextPrint('')
UO.TextPrint('Fim do arquivo!')
End Sub
;      ; }
;   ; }

; ; }


The Reason you see brackets comented is that I use notepad++ with my own language made for Injection, and this brackets are usefull for folding some scripts of my 9 thousand lines autoload (still developing... much to do yet... not even 1 skill training function was made for this autoload :lol: )
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: DracoX Support and Utility Functions

Post by Mirage »

Welcome. interesting. However, not sure about Wait(1) and Wait(10).
DracoX
Posts: 14
Joined: 2012-09-10 20:18:54

Re: DracoX Support and Utility Functions

Post by DracoX »

Mirage wrote:Welcome. interesting. However, not sure about Wait(1) and Wait(10).


If you need any aditional info let me know :wink:
Why are you not sure about the Wait(1) and Wait(10)



And one more thing... there maybe some uses of global variables that wasn't defined in the code I've posted, because I just copied the support section of my autoload! :P
Post Reply