EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Who or what killed me? (https://www.eqemulator.org/forums/showthread.php?t=40221)

JimB_1958 12-01-2015 01:44 PM

Who or what killed me?
 
I can't seem to find what I am wanting to do. I thought it would be simple and it probably is. Just not today.

I would like to get the ID and eventually the name of the creature that killed a player.

In case of PvP the killing player would be nice. If that's not possible, then maybe just a true/false that it was a another player

All other deaths marked as "from an unknown source" or the like

Kingly_Krab 12-01-2015 02:12 PM

"Killer variables," says Secrets.
Code:

$killer_damage
$killer_id
$killer_skill
$killer_spell

Something like this can be done for players killed by players.
Code:

sub EVENT_DEATH_COMPLETE {
    if ($entity_list->GetMobByID($killer_id) && $entity_list->GetMobByID($killer_id)->IsClient()) {
        ##Do whatever
    }
}


JimB_1958 12-02-2015 12:25 AM

I fiddled around with a bunch of different things and could not get any of them to work until I stumbled into this:

Code:

sub EVENT_DEATH_COMPLETE{

        my $whokilledme = "an unknown hand";
        my $mobid = $entity_list->GetMobID($killer_id);
        $whokilledme= $mobid->GetCleanName();
               
        quest::gmsay("$name the $class has just been killed in $zoneln by $whokilledme ", 335, 1, 0, 0);
       
}

Oddly enough it works for both mobs and pc kills. Only drawback is if the player dies by drowning, falling or anything but a pc or mob there is no text at all.

Kingly_Krab 12-02-2015 08:10 AM

The reason GetCleanName() works on PCs and NPCs is because GetCleanName() is a Mob method that PCs and NPCs inherit through subclass inheritance. Try this:
Code:

sub EVENT_DEATH_COMPLETE {
    quest::gmsay("$name the $class has just been killed in $zoneln by " . ($entity_list->GetMobByID($killer_id) ? $entity_list->GetMobByID($killer_id)->GetCleanName() : "an unknown hand") . ".", 335, 1, 0, 0);   
}


JimB_1958 12-02-2015 09:07 AM

Awesome! Thanks Kingly. When I had the practice toon nuke himself I got this message:

Zeppa the Ranger has just been killed in the Overthere by Zeppa

This is perfect.

Kingly_Krab 12-02-2015 09:14 AM

You're welcome, I'm glad you got it worked out! Always happy to be of assistance.

JimB_1958 12-02-2015 01:14 PM

My final Code

Code:

sub EVENT_DEATH_COMPLETE {

  if($ulevel >= 85){  #Avoid Newbie Death Spam
        if(!defined $qglobals{DeathSpam}) {  #Avoid Nimrod Death Spam
                quest::gmsay("$name the $class has just been killed in $zoneln by " . ($entity_list->GetMobByID($killer_id) ? $entity_list->GetMobByID($killer_id)->GetCleanName() : "an unknown hand") . ".", 335, 1, 0, 0);   
                quest::setglobal("DeathSpam","1",5,"M10");
  }               
}

}

Thanks again


All times are GMT -4. The time now is 07:19 AM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.