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

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

Reply
 
Thread Tools Display Modes
  #16  
Old 09-09-2018, 03:24 PM
Almusious
Fire Beetle
 
Join Date: Sep 2012
Posts: 25
Default

Quote:
Originally Posted by Huppy View Post
Hey Almusious, I just got around to testing this out, this morning. I couldn't get any response out of the NPC with it.

The initial hail>follow script will serve it's purpose, but thinking ahead, would open up an exploit with conflicting players.

Could end up with 2 players (or more) spamming the npc with "Hail's" to steal it away. Would be funny to watch, lol
The code is all fubared, wasn't paying much attention, for that I'm sorry. $entity should be just that, so $npc or $client, I would probably put the entity variable on the $npc, since it's getting depoped. Speaking of which that is off too, quest::depop($npc->GetNPCTypeID()) is how that line should be, according to the wiki.

Heck those conditionals look off as well, mustve been the ambien, sorry.
Reply With Quote
  #17  
Old 09-09-2018, 03:26 PM
Almusious
Fire Beetle
 
Join Date: Sep 2012
Posts: 25
Default

Quote:
Originally Posted by Huppy View Post
I almost forgot about another question I had regarding this follow thing and wondering if an idea I had was possible.

For example, NPC starts following player, but then the player is moving too fast, creating a big distance between them.

Is there a way to set an "sfollow" when a certain distance happens ? Like if the player gets too far away, the NPC quits ?
I didn't immediately see a means to sever a follow. Is why either depop'ing it or maybe repopping with timer. Now without setting a "master" (owner), it could be a bit of an NPC hot potato type of quest heh.
Reply With Quote
  #18  
Old 09-09-2018, 03:43 PM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,332
Default

Thanks for your reply. Just to clarify what I have in mind, the NPC won't be depopping. Upon the destination, it will be killed by another NPC, lol.

I've already been testing that with with an EVENT_ENTER, on arrival, an NPC immediately attacks the following one. Works great so far.

I also added in an if(plugin::check_hasitem(xxxx)) to the quest::follow which also worked out good.
Reply With Quote
  #19  
Old 09-09-2018, 03:47 PM
Almusious
Fire Beetle
 
Join Date: Sep 2012
Posts: 25
Default

Quote:
Originally Posted by Huppy View Post
I almost forgot about another question I had regarding this follow thing and wondering if an idea I had was possible.

For example, NPC starts following player, but then the player is moving too fast, creating a big distance between them.

Is there a way to set an "sfollow" when a certain distance happens ? Like if the player gets too far away, the NPC quits ?
You could set a timer when you initiate the follow, then use an event timer like:

Code:
sub EVENT_TIMER
{
	if ($npc->CalculateDistance($entity_list->GetClientByCharID($npc->GetEntityVariable("master"))->GetX(),
								$entity_list->GetClientByCharID($npc->GetEntityVariable("master"))->GetY(),
								$entity_list->GetClientByCharID($npc->GetEntityVariable("master"))->GetZ()) > 20)
	{
		quest::sfollow();
	}
}
This assumes you replaced $entity in the code earlier posted with $npc.
Reply With Quote
  #20  
Old 09-09-2018, 04:05 PM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,332
Default

Quote:
Originally Posted by Almusious View Post
You could set a timer when you initiate the follow, then use an event timer like:
That could be something that may help with my intentions here. You see, I am looking at a possible exploit with the follow event.

A player could end up using /warp and then wait for the NPC to arrive. That's why I thought a distance limit would help with that.
Reply With Quote
  #21  
Old 10-26-2018, 11:40 AM
JimB_1958
Sarnak
 
Join Date: Mar 2013
Location: Springfield MO
Posts: 66
Default

Weird thing:

I want to fire an event in player.pl when the player takes damage from a mob.

Kind of like damage shields work.

I would prefer to get the id of the mob that did the damage, but that is not 100% needed.

Thank you for any assistance.
__________________
"We are all on the same team, and I think not enough people realize this."
- Leetsauce
Reply With Quote
  #22  
Old 10-26-2018, 12:15 PM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,447
Default

Quote:
Originally Posted by JimB_1958 View Post
Weird thing:

I want to fire an event in player.pl when the player takes damage from a mob.

Kind of like damage shields work.

I would prefer to get the id of the mob that did the damage, but that is not 100% needed.

Thank you for any assistance.
If you're doing that, do it in LUA. There are serious performance indications to doing this.
Reply With Quote
  #23  
Old 10-29-2018, 09:50 AM
superpally1
Sarnak
 
Join Date: Jul 2018
Location: Tennessee
Posts: 33
Default

Hey guys, I've got a quick question to. I have searched and been unsuccessful in finding a way to do this. Is there a way to script a say link into guild chat and/or raid chat? I think I can do group chat with message group but I can not find a function for guild/raid. I've been working on an instancing script and I want to be able to send the say link to enter the instances to group,guild, and raid chat. Message 258 for example says group but it doesn't actually say it in group for the other group members.
Reply With Quote
  #24  
Old 10-29-2018, 10:00 AM
Kingly_Krab
Administrator
 
Join Date: May 2013
Location: United States
Posts: 1,594
Default

Code:
quest::gmsay(message, color_id, send_to_world?, guild_id, min_status);
Reply With Quote
  #25  
Old 10-29-2018, 10:18 AM
superpally1
Sarnak
 
Join Date: Jul 2018
Location: Tennessee
Posts: 33
Default

Quote:
Originally Posted by Kingly_Krab View Post
Code:
quest::gmsay(message, color_id, send_to_world?, guild_id, min_status);
I didn't think about that. Thank you. I can see how to use this in guild chat now but how could I use it with raid chat?
Reply With Quote
  #26  
Old 10-29-2018, 12:08 PM
Kingly_Krab
Administrator
 
Join Date: May 2013
Location: United States
Posts: 1,594
Default

You can use a loop and iterate through group members if necessary. I’m at work, otherwise I’d give you an example.
Reply With Quote
  #27  
Old 10-29-2018, 06:32 PM
superpally1
Sarnak
 
Join Date: Jul 2018
Location: Tennessee
Posts: 33
Default

gotcha, thankyou sir.
Reply With Quote
  #28  
Old 01-15-2019, 02:04 PM
Ydiss
Fire Beetle
 
Join Date: Dec 2009
Posts: 6
Default

Hey, I think this is my fourth post here. Been a member since 2009 hah.

I've started developing for THF recently and have been enjoying it loads. I'm just hitting a brick wall with this one particular (apparently non-existent) function.

I'm attempting to get the NPC's hp_regen value (I know I can modify it easily enough) but can't find the command for this anywhere on the ultimate perl reference (or anywhere else).

I checked the perl source and searched for "hp" but couldn't find it. It seems this is also the case for mana_regen, though I don't currently need that.

I want to make changes to npc regen but without a way to read/get the current value, that severely limits my ability to do anything clever with it (i.e. I can pretty much just hard code it).

What I want to do is reduce the hp_regen when players do something. Without the ability to read what it is currently, I imagine I'd need to use qglobals to track each npc's status (from spawn) and then hard code a sequence of conditions for it and that's just horrid.

I'd rather not do that. It seems literally every other editable stat for NPCs can be read except regen Am I missing something?

Any help would be amazing. Thanks.
Reply With Quote
  #29  
Old 01-15-2019, 02:54 PM
Almusious
Fire Beetle
 
Join Date: Sep 2012
Posts: 25
Default

Code:
https://github.com/EQEmu/Server/blob/0ad43977bf94e3a2ca83966f7fc9ba5592bb2a54/zone/npc.cpp#L2307
Code:
quest::modifynpcstat("hp_regen",xxx);
or

Code:
$npc->ModifyNPCStat("hp_regen",xxx);
Sorry, I just re-read what you had written. You wish to know how to "get". I too cannot find something in place for that, but:

Code:
sub PrepareEntityVariables
{
	my @zone_npcs = $entity_list->GetNPCList();
	my $dbh = plugin::LoadMysql();
	foreach $individual_npc (@zone_npcs)
	{
		if (not $individual_npc->GetEntityVariable("regenset"))
		{
			my $sth = $dbh->prepare("
									SELECT `hp_regen_rate`, `mana_regen_rate`
									FROM npc_types
									WHERE (`id` = ?) LIMIT 1
									");
			$sth->bind_param(1,$individual_npc->GetNPCType());
			$sth->execute();
			@row = $sth->fetchrow_array();
			$individual_npc->SetEntityVariable("hpregen", $row[0]);
			$individual_npc->SetEntityVariable("manaregen", $row[1]);
			$individual_npc->SetEntityVariable("regenset",1);
		}
	}
}
Try the above, it may have a syntax error or two, I'm not in a position to compile it, but should give you an idea just the same. The reason for actually setting an entity variable of "regenset" is in the case of either hpregen or manaregen equaling zero (legitimately).
Reply With Quote
  #30  
Old 01-15-2019, 07:28 PM
Ydiss
Fire Beetle
 
Join Date: Dec 2009
Posts: 6
Default

Quote:
Originally Posted by Almusious View Post
Code:
https://github.com/EQEmu/Server/blob/0ad43977bf94e3a2ca83966f7fc9ba5592bb2a54/zone/npc.cpp#L2307
Code:
quest::modifynpcstat("hp_regen",xxx);
or

Code:
$npc->ModifyNPCStat("hp_regen",xxx);
Sorry, I just re-read what you had written. You wish to know how to "get". I too cannot find something in place for that, but:

Code:
sub PrepareEntityVariables
{
	my @zone_npcs = $entity_list->GetNPCList();
	my $dbh = plugin::LoadMysql();
	foreach $individual_npc (@zone_npcs)
	{
		if (not $individual_npc->GetEntityVariable("regenset"))
		{
			my $sth = $dbh->prepare("
									SELECT `hp_regen_rate`, `mana_regen_rate`
									FROM npc_types
									WHERE (`id` = ?) LIMIT 1
									");
			$sth->bind_param(1,$individual_npc->GetNPCType());
			$sth->execute();
			@row = $sth->fetchrow_array();
			$individual_npc->SetEntityVariable("hpregen", $row[0]);
			$individual_npc->SetEntityVariable("manaregen", $row[1]);
			$individual_npc->SetEntityVariable("regenset",1);
		}
	}
}
Try the above, it may have a syntax error or two, I'm not in a position to compile it, but should give you an idea just the same. The reason for actually setting an entity variable of "regenset" is in the case of either hpregen or manaregen equaling zero (legitimately).
Thanks, that's really helpful. Yes, I'd need to check for zero anyway.

Will see if I can get it to work.
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 01:27 PM.


 

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 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3