Guild ress

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Folka
Posts: 9
Joined: 2013-02-01 02:04:58

Guild ress

Post by Folka »

Hello, I'm trying to make a script that would check journal for constant messages of "DEAD: Guild Player Name was killed in" and then would try to auto res the player(by ID) and if succeded, write the name of the player and that he is ressurected in guild chat.

I want this to be used in all guild so closest people would ressurect.

But I seem to get problems.

Here is my script so far.

Code: Select all

Sub ResGuild()

UO.Print("Guild Ress - ON")
repeat
UO.DeleteJournal()
wait(1000)
if UO.InJournal('DEAD: Player Name was killed in') then
   repeat
      UO.Exec('usetype 0x0E21')
      UO.waittargetobject('Player ID')
      UO.DeleteJournal()
      uo.getstatus('Player ID')
         if uo.gethp('laststatus') == 0 then         
            wait(500) 
         else
            UO.Say(".gsay "+ uo.getname('laststatus') +" ressurected")
         endif
   until UO.InJournal("Player Name ressurected")
endif
until false
end sub
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Re: Guild ress

Post by Nmy »

This needs testing whether the journal returns player serial or not, im not sure.

First of all show us the printout of [,showjournal 10] when the message appears

And

Code: Select all

uo.print(UO.JournalSerial(UO.InJournal("DEAD: ")-1))
uo.deletejournal()
Folka
Posts: 9
Joined: 2013-02-01 02:04:58

Re: Guild ress

Post by Folka »

Nmy wrote:This needs testing whether the journal returns player serial or not, im not sure.

First of all show us the printout of [,showjournal 10] when the message appears

And

Code: Select all

uo.print(UO.JournalSerial(UO.InJournal("DEAD: ")-1))
uo.deletejournal()



It detects the player, and resses, but it doesn't stop healing even when the person is full HP.

Edit:
Now I used this:

Code: Select all

Sub ResGuild()

UO.Print("Guild Ress - ON")
repeat
UO.DeleteJournal()
wait(1000)
if UO.InJournal('DEAD: Ryza Lenke was killed in') then
   repeat
      UO.Exec('usetype 0x0E21')
      UO.waittargetobject('0x0001F906')
      uo.getstatus('0x0001F906')
         if uo.gethp('laststatus') == 0 then         
            wait(500)
         else
            UO.Say(".gsay "+ uo.getname('laststatus') +" ressurected")
           wait(1000)
          endif
   until UO.InJournal("Ryza Lenke")
endif
until false
end sub


Got this(first time I was next to the dead player, it ressed, but no .gsay. Second time I was far away. It didn't repeat itself) :
Image
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Re: Guild ress

Post by Nmy »

I would not recommend using such autoscript.

it's better if you run to your teammate, drag his hp bar and execute:

Code: Select all

   uo.waittargetobject('laststatus')
   uo.usetype('0x0E21')
Folka
Posts: 9
Joined: 2013-02-01 02:04:58

Re: Guild ress

Post by Folka »

We were using your recommended method for a while, I thought I could improve our ressing with this auto script.

The problem is that it just doesn't read the status bar properly, maybye I should add variables of min/max hp? I really want to make this work
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Re: Guild ress

Post by Nmy »

Code: Select all

uo.print(str(uo.GetHp('0x0001F906')))
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Re: Guild ress

Post by Nmy »

or you can just use bandage count as a true/false flag before/after resurrection
Folka
Posts: 9
Joined: 2013-02-01 02:04:58

Re: Guild ress

Post by Folka »

I found a script here:

viewtopic.php?f=20&t=7187&start=160#p89847

but don't understand why this

Code: Select all

If Char<>0 Then
      UO.SetArm('CWeapon')
      UO.WaitTargetObject(Char)
      UO.UseType('0x0E21')
      UO.Print("?anno?aeo!!!")
      wait(500)
         UO.Exec("bandageself")
      wait(500)
      UO.Arm('CWeapon')
   Else
      UO.Print("A?iaa ana ?eau!!!")
   EndIf


in the comment

viewtopic.php?f=20&t=7187&start=160#p89848

was changed to

Code: Select all

 If Char<>0 Then
      UO.SetArm('CWeapon')
      uo.cast('название каста',Char)
      wait(5000) ; пауза для каста заклинания
      UO.WaitTargetObject(Char)
      UO.UseType('0x0E21')
      UO.Print("?anno?aeo!!!")
      wait(500)
      uo.cast('название каста','self')
      wait(500)
      UO.Arm('CWeapon')
   Else


Why would there be a cast for both char and self? And bandage use for self. This is a friend ress script ^^
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Re: Guild ress

Post by Nmy »

Code: Select all

 If Char<>0 Then
      UO.SetArm('CWeapon')
      uo.cast('название каста',Char)
      wait(5000) ; пауза для каста заклинания
      UO.WaitTargetObject(Char)
      UO.UseType('0x0E21')
      UO.Print("?anno?aeo!!!")
      wait(500)
      uo.cast('название каста','self')
      wait(500)
      UO.Arm('CWeapon')
   Else


That doesn't look right. Maybe it's resurrection magic and bandages, both at the same time. or resurrection and heal. the second cast might be self buff
DracoX
Posts: 14
Joined: 2012-09-10 20:18:54

Re: Guild ress

Post by DracoX »

Why are you using 'laststatus' when you can use bandage on the player's id!

I would go for:

Code: Select all

While UO.GetHP('Player ID')<UO.GetMaxHP('PlayerID') And UO.Count('0x0E21')>0 And UO.GetDistance('Player ID')<=??? ; change ??? for the maximum healing distance! And to stop healing, just get away from the player ;) ;
UO.WaitTargetObject('Player ID)
UO.UseType('0x0E21')
Wait(1000) ; Or as much as you think is better ;
WEnd
Post Reply