Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Q&A

Quests::Q&A This is the quest support section

Reply
 
Thread Tools Display Modes
  #1  
Old 08-01-2008, 05:24 PM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default Remove Item

Is there a quest function for removing an item from a player upon the player's death? I have an Event_Slay that triggers a check_hasitem upon killing a player. If the player is carrying the item, I want the npc to "loot" it (really, just remove it from the player). It does not have to happen at the player's death; it could just as easily be an hp event. Either way, what do I use to remove the item from the player? Is there a quest::removeitem() function?
Reply With Quote
  #2  
Old 08-01-2008, 05:49 PM
So_1337
Dragon
 
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
Default

On our server, we wound up with players farming zones I didn't realize were revamped for the drops that were there. This obviously presented a problem.

We use a translocating NPC for people to get around. I set a proximity for him of 50 units. Then I set an enter proximity script like this:

Code:
sub EVENT_ENTER {
  if ($name ne /Greenmist/){
    $client->NukeItem(XXXXX);
  }
}
There was a whole list. Anyone but me would have those items nuked from their person with no fanfare or even a message. It would work just as well under other sub EVENT types so long as you have a method for triggering it.

Hope this helps =)
Reply With Quote
  #3  
Old 08-01-2008, 06:14 PM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default

very nice, SO-, thank you. That will work perfectly. Is there another quest list that contains commands like this, besides the Lexicon and this page? Where else might I find obscure quest functions?
Reply With Quote
  #4  
Old 08-01-2008, 06:16 PM
So_1337
Dragon
 
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
Default

The QuestObjects Wiki page.
Reply With Quote
  #5  
Old 08-01-2008, 07:36 PM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default

Very helpful thanks!

Any reason I cannot access the entityList page?
Reply With Quote
  #6  
Old 08-01-2008, 08:26 PM
So_1337
Dragon
 
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
Default

It isn't written. When you try to access it, it's prompting you to write it.
Reply With Quote
  #7  
Old 08-02-2008, 02:41 AM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default

Okay, I can't seem to get this concept to work. The following script is on an npc that kills a player who has an item (the player script causes the npc to add the player with the item to his hate list):
Quote:
sub Event_Slay
{
if(plugin::check_hasitem($client, 13732)
{
$client->NukeItem(13732);
}
}
Is the Event_Slay able to trigger the client losing an item after the character is dead? I replaced NukeItem with RemoveItem and client with corpse, but to no avail. Can't figure out why this isn't working. Should I be using a different event?
Reply With Quote
  #8  
Old 08-02-2008, 03:01 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,498
Default Case Sensitive?

Might be case sensitive. Try sub EVENT_SLAY
Reply With Quote
  #9  
Old 08-02-2008, 03:04 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

It could be because the character is already zoning when it tries to run the script. I don't know if it would work the way you want it to. Also, if you have the zone set as dynamic and the only player in the zone dies, that zone will drop immediately. And, I imagine that would stop the script from running as well.

And, I do think it is case sensitive.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #10  
Old 08-03-2008, 10:33 PM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default

Okay, I finally got SLAY to work here:
Quote:
sub EVENT_SLAY
{
if(plugin::check_hasitem($client, 13732))
{
$client->NukeItem(13732);
}
}
Thanks for the help!
Reply With Quote
  #11  
Old 07-30-2009, 03:25 PM
Kilralpine
Sarnak
 
Join Date: Jul 2004
Posts: 98
Default

Im attempting to use this as part of a Perl script that will allow NPC's to Add/remove loot to their loot tables according to wether or not they have a specific TASK.

I Have Tried these two different scripts:

Code:
 
sub EVENT_SIGNAL {
	if($signal == 11) && (plugin::check_hasitem($npc, 3233)) {
$npc->NukeItem(3233);
	quest::shout("got signal from trigger, removing 1 heart");
	} 
}
^^ Receives a signal from an outside trigger ^^

And simply
Code:
sub EVENT_EXIT
{
  if (quest::istaskactivityactive(500,0)) {
$client->Message(4, "left area, removing 1 heart");
$npc->NukeItem(3233);
}
}
Neither one seems to fire off at all, debugging using alot of client messages and shout messages... everytime perl gets to the $npc->NukeItem(3233); it simply just stops... not sure what else i can do to remove the items... I tried using signalwiths because i figured that the entity $npc hadnt been defined because its in the sub EVENT_EXIT (which is all $client) - I Think????

The situation is... Trakanon spawns, sets a radius... If anyone with a task enters the radius it adds 1 quest item (this parts working). Problem is, if characters leave and re-enter the radius he adds an extra heart - this is what im trying to combat. What i want to do is have it so that when the players leave the radius it will remove the same heart that was added when they entered.

Any responses will be greatly appreciated! =)
Reply With Quote
  #12  
Old 07-30-2009, 03:41 PM
Kilralpine
Sarnak
 
Join Date: Jul 2004
Posts: 98
Default

Here is the Full Script... just incase its confusing..

TRAKANON
Code:
sub EVENT_SPAWN {
  my $x = $npc->GetX();
  my $y = $npc->GetY();
  my $range = 210;
  quest::set_proximity($x - $range, $x + $range, $y - $range, $y + $range);
}

sub EVENT_ENTER
{
  if (quest::istaskactivityactive(500,0)) {
$client->Message(4, "Quest Item Added To Loot Table");
quest::addloot(3233,1);

}
}

sub EVENT_EXIT
{
  if (quest::istaskactivityactive(500,0)) {
$client->Message(4, "signal sent");
quest::signalwith(999456,10,1);  #Signal to questloot_trigger to send signal back


}
}

sub EVENT_SIGNAL {
	if($signal == 11) && (plugin::check_hasitem($npc, 3233)) {
$npc->NukeItem(3233);
	quest::shout("got signal from trigger, removing 1 heart");
	} 
}
QUESTLOOT_TRIGGER
Code:
sub EVENT_SIGNAL {
	if($signal == 10) {
	quest::shout("TRIGGER RECIEVED GO AHEAD");
quest::signalwith(89154,11,1);  #Signal for trakky to remove the item
	} 
}
I Originally had it just try to remove the item when they EVENT_EXIT, but i think its not really sure who $npc is... Sorry im not very good with the quest objects yet; does it need to be defined somewhere?
Reply With Quote
  #13  
Old 07-31-2009, 08:54 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,498
Default

Here's at least 1 of your problems:

Code:
if($signal == 11) && (plugin::check_hasitem($npc, 3233)) {
should be

Code:
if(($signal == 11) && (plugin::check_hasitem($npc, 3233)) {
Haven't tested out the other portions for you yet.
Reply With Quote
  #14  
Old 07-31-2009, 10:00 AM
Kilralpine
Sarnak
 
Join Date: Jul 2004
Posts: 98
Default

Using this bit of code... I can get trakanon to respond, the addition of the line:
$npc->NukeItem(3233);

Causes the script to break.

Code:
sub EVENT_SIGNAL {
	if($signal == 11) {
	quest::shout("got signal from trigger, removing 1 heart");
	} 
}
^^ WORKING

Code:
sub EVENT_SIGNAL {
	if($signal == 11) {
$npc->NukeItem(3233);
	quest::shout("got signal from trigger, removing 1 heart");
	} 
}
^^BROKEN^^

Anyone know what would cause that quest object to break my script???
Reply With Quote
  #15  
Old 07-31-2009, 10:04 AM
Kilralpine
Sarnak
 
Join Date: Jul 2004
Posts: 98
Default

OK i found the issue, using this page:
http://www.eqemulator.net/wiki/wikka...a=QuestObjects

Apparently the handle NukeItem is not supported for npc->

Anyone know another way of removing items from mobs via Quest script??? These scripts could prove quite usefull for any mob that has the ability to drop quest items...
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

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


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3