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