Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::General Support

Support::General Support Post all topics here having to do with errors while trying to connect to an EQEMu server but not about the setup/running of the Server itself.

Reply
 
Thread Tools Display Modes
  #1  
Old 08-18-2009, 04:21 PM
laxative
Hill Giant
 
Join Date: Aug 2008
Location: NorthEast
Posts: 115
Question Error: No Target

Greets,

DB Version 922

Executables 944

Lots of GM Commands, including Summon, Kill, NpcLootShow all appear to have a range component built in now.

Unless the mob is close by I'm getting Error:No target on these commands. I'd be willing to bet other gm commands are doing the same thing.

Anyone else got that going on?

Laxa
Reply With Quote
  #2  
Old 08-18-2009, 04:23 PM
So_1337
Dragon
 
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
Default

My guess would be that it's due to a change made with revision 933 to combat MQ. We'll have to see what KLS says.
Reply With Quote
  #3  
Old 08-18-2009, 05:43 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

You can't use /target to target anything out of range anymore. Though, I don't think it would hurt for us to add in a status check to allow it for GMs. Maybe even a rule that lets you set what status is required to be able to target stuff that is out of range would be a good way to do it. That way, if people want to allow their players to /target for zone-wide group invites, you could just set the rule to require status 0 or greater.

For now, there is a simple way to handle out of range stuff and that is just to use /goto (not #goto) along with part of the name of the NPC or player you are wanting to target and manipulate. By using /goto <npcname>, you can go to any NPC in the zone fairly easily. You can also use /goto <playername> to go to any player on the server, no matter what zone they are in.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #4  
Old 08-18-2009, 06:52 PM
ChaosSlayerZ's Avatar
ChaosSlayerZ
Demi-God
 
Join Date: Mar 2009
Location: Umm
Posts: 1,492
Default

yes GMs absolutely need zone wide #target command - otherwise I will have to run all over across zones just to check on a single mob instead of just /target and #goto like I use to
Reply With Quote
  #5  
Old 08-18-2009, 07:12 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Or, you can use /goto <npcname>, just like I just said in the last post here :P I know for sure it works perfectly on SoF, and I know it was working at least at some point on Titanium. If it isn't working on Titanium anymore, it should be something really simple like a missing opcode for it, that is a really easy one to get. No need to /target <name> then #goto, when you can just /goto <name> all in one simple command.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #6  
Old 08-18-2009, 07:40 PM
ChaosSlayerZ's Avatar
ChaosSlayerZ
Demi-God
 
Join Date: Mar 2009
Location: Umm
Posts: 1,492
Default

Quote:
Originally Posted by trevius View Post
Or, you can use /goto <npcname>, just like I just said in the last post here :P I know for sure it works perfectly on SoF, and I know it was working at least at some point on Titanium. If it isn't working on Titanium anymore, it should be something really simple like a missing opcode for it, that is a really easy one to get. No need to /target <name> then #goto, when you can just /goto <name> all in one simple command.

ahh but does /goto npc requires EXACT npc name?

cuase with /target you can get by doign just /target warl

rather than typing in full "warlord_scarloton_megadermaticus_the_death_brigng er_of_thousand_dooms000" =)
Reply With Quote
  #7  
Old 08-19-2009, 02:53 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

You can type the exact name or just the first part of it. Works pretty much just like /target does in that aspect.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #8  
Old 08-19-2009, 07:51 AM
laxative
Hill Giant
 
Join Date: Aug 2008
Location: NorthEast
Posts: 115
Default

Greetings,

Ok I understand what everyone is saying, but do we have an official answer as if this was implemented to stop MQ2?

I use MQ, in fact It's super handy, is there a rules_value that could be turned off, or disabled to allow the out of range stuff?

Thanks
Reply With Quote
  #9  
Old 08-19-2009, 08:27 AM
laxative
Hill Giant
 
Join Date: Aug 2008
Location: NorthEast
Posts: 115
Default

Just wanted to add another note,

I do a lot of work with adjusting loot drops, primarily for those stupidly rare quest drops that always caused bottle necks.

So one thing I do A LOT is pop into several zones and do the following:

/tar X-Mob
#npcloot show

This command also doesnt work now. (unless I #goto /goto whatever, but.. see next line

I also do not like to go in GM mode all the time either.

For example I'll do a #zone GukBottom then check loots or other factors that I've modified or updated (making Raster spawn more frequently) then start my dungeon crawling with my bot team.

Whatever code that is now in place really has put a damper on this.

Laxa.
Reply With Quote
  #10  
Old 08-19-2009, 08:42 AM
So_1337
Dragon
 
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
Default

Quote:
Originally Posted by Trevius
That way, if people want to allow their players to /target for zone-wide group invites, you could just set the rule to require status 0 or greater.
I'm not sure if this was fixed in recent times for the emulator, but on Live you could use "/invite Name" and it would work without a target. This applied whether the recipient was in the same zone with you or not. I believe that this was not the case on the emulator the last time I checked. /target should not be a requisite for inviting group members.
Reply With Quote
  #11  
Old 08-19-2009, 04:59 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Yes, the change was done to prevent MQ usage completely. Though, I do agree that it would be good to put in a rule as I mentioned before where you can set the min status required to be able to target across a zone. Then, you could just set the new rule to status 0 if you wanted any player to be able to do it, or you could set it higher if you wanted only GMs to be able to use it for development.

Really, there will be no need for players to have access to target across a zone like that once the /invite <playername> option actually works. It isn't implemented yet, but I am sure it is on the list of to-dos.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #12  
Old 11-18-2009, 05:38 PM
ChaosSlayerZ's Avatar
ChaosSlayerZ
Demi-God
 
Join Date: Mar 2009
Location: Umm
Posts: 1,492
Default

Quote:
Originally Posted by trevius View Post
You can type the exact name or just the first part of it. Works pretty much just like /target does in that aspect.
Trev, returning to this issue, there is something I can't do anymore, what I use been able before.

To target and SUMMON mob to myself, instead to going to the mob.

So before i could do:

/target king
#summon

this is useful when I want to say spawnfix a bunch of mobs who maybe on the other end of the zone, but I need to be able to target them from where I am

So consider putting zone wide /target back in for GMs please =)
Reply With Quote
  #13  
Old 11-27-2009, 07:47 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Yeah, for #spawnfix, it would be nice to have /target working for GMs. I already mentioned that I think it is a good idea to at least have a rule that lets the admin set the minstatus for that command.

I haven't messed with it in a while, but maybe /summon <name> will let you summon them. For doing stuff like that, I currently just use MQ2 for it, since it will let you see what is where on the map and let you target anything even though I think it still makes a hacker log entry for it. I am not a big fan of using MQ2, but it can definitely be helpful when populating a zone. It is nice to have one quick view on the map to be able to see if any areas have too few or too many NPCs in them.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #14  
Old 02-24-2010, 06:16 PM
ChaosSlayerZ's Avatar
ChaosSlayerZ
Demi-God
 
Join Date: Mar 2009
Location: Umm
Posts: 1,492
Default

BUMP!!!

You awaiting for gm /target to come back

It targets players across zone, but NOT mobs
Reply With Quote
  #15  
Old 02-24-2010, 06:54 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Here is the function that handles the targeting stuff:

client_packet.cpp
Code:
void Client::Handle_OP_TargetCommand(const EQApplicationPacket *app)
{
	if (app->size != sizeof(ClientTarget_Struct)) {
		LogFile->write(EQEMuLog::Error, "OP size error: OP_TargetMouse expected:%i got:%i", sizeof(ClientTarget_Struct), app->size);
		return;
	}

	if(GetTarget())
	{
		GetTarget()->IsTargeted(-1);
	}

	// Locate and cache new target
	ClientTarget_Struct* ct=(ClientTarget_Struct*)app->pBuffer;
	pClientSideTarget = ct->new_target;
	if(!IsAIControlled())
	{
		Mob *new_target = entity_list.GetMob(ct->new_target);
		if(new_target)
		{
			SetTarget(new_target);
		}
		else
		{
			SetTarget(NULL);
			SetHoTT(0);
			return;
		}
	}
	else
	{
		SetTarget(NULL);
		SetHoTT(0);
		return;
	}

	// <Rogean> HoTT
	if (GetTarget() && GetTarget()->GetTarget()) 
		SetHoTT(GetTarget()->GetTarget()->GetID());
	else 
		SetHoTT(0);

	Group *g = GetGroup();

	if(g && g->IsMainAssist(this))
		g->SetGroupTarget(ct->new_target);

	// For /target, send reject or success packet
	if (app->GetOpcode() == OP_TargetCommand) {
		if (GetTarget() && !GetTarget()->CastToMob()->IsInvisible(this) && DistNoRoot(*GetTarget()) <= TARGETING_RANGE*TARGETING_RANGE) {
			if(GetTarget()->GetBodyType() == BT_NoTarget2 || GetTarget()->GetBodyType() == BT_Special 
				|| GetTarget()->GetBodyType() == BT_NoTarget)
			{
				//Targeting something we shouldn't with /target
				//but the client allows this without MQ so you don't flag it
				EQApplicationPacket* outapp = new EQApplicationPacket(OP_TargetReject, sizeof(TargetReject_Struct));
				outapp->pBuffer[0] = 0x2f;
				outapp->pBuffer[1] = 0x01;
				outapp->pBuffer[4] = 0x0d;
				if(GetTarget())
				{
					SetTarget(NULL);
				}
				QueuePacket(outapp);
				safe_delete(outapp);
				return;
			}
			
			QueuePacket(app);
			EQApplicationPacket hp_app;
			GetTarget()->IsTargeted(1);
			GetTarget()->CreateHPPacket(&hp_app);
			QueuePacket(&hp_app, false);
		} 
		else 
		{
			EQApplicationPacket* outapp = new EQApplicationPacket(OP_TargetReject, sizeof(TargetReject_Struct));
			outapp->pBuffer[0] = 0x2f;
			outapp->pBuffer[1] = 0x01;
			outapp->pBuffer[4] = 0x0d;
			if(GetTarget())
			{
				SetTarget(NULL);
			}
			QueuePacket(outapp);
			safe_delete(outapp);
		}
	}
	else
	{
		if(GetTarget())
		{
			if(GetGM())
			{
				GetTarget()->IsTargeted(1);
				return;
			}
			else if(GetTarget()->IsClient())
			{
				//make sure this client is in our raid/group
				GetTarget()->IsTargeted(1);
				return;
			}
			else if(GetTarget()->GetBodyType() == BT_NoTarget2 || GetTarget()->GetBodyType() == BT_Special 
				|| GetTarget()->GetBodyType() == BT_NoTarget)
			{
				char *hacker_str = NULL;
				MakeAnyLenString(&hacker_str, "%s attempting to target something untargetable, %s bodytype: %i\n",
					GetName(), GetTarget()->GetName(), (int)GetTarget()->GetBodyType());
				database.SetMQDetectionFlag(AccountName(), GetName(), hacker_str, zone->GetShortName());
				safe_delete_array(hacker_str);
				SetTarget((Mob*)NULL);
				return;
			}
			else if(IsPortExempted())
			{
				GetTarget()->IsTargeted(1);
				return;
			}
			else if(IsSenseExempted())
			{
				GetTarget()->IsTargeted(1);
				SetSenseExemption(false);
				return;
			}
			else if(GetBindSightTarget())
			{
				if(GetBindSightTarget()->DistNoRoot(*GetTarget()) > (zone->newzone_data.maxclip*zone->newzone_data.maxclip))
				{
					if(DistNoRoot(*GetTarget()) > (zone->newzone_data.maxclip*zone->newzone_data.maxclip))
					{
						char *hacker_str = NULL;
						MakeAnyLenString(&hacker_str, "%s attempting to target something beyond the clip plane of %.2f units,"
							" from (%.2f, %.2f, %.2f) to %s (%.2f, %.2f, %.2f)", GetName(),
							(zone->newzone_data.maxclip*zone->newzone_data.maxclip),
							GetX(), GetY(), GetZ(), GetTarget()->GetName(), GetTarget()->GetX(), GetTarget()->GetY(), GetTarget()->GetZ());
						database.SetMQDetectionFlag(AccountName(), GetName(), hacker_str, zone->GetShortName());
						safe_delete_array(hacker_str);
						SetTarget(NULL);
						return;
					}
				}
			}
			else if(DistNoRoot(*GetTarget()) > (zone->newzone_data.maxclip*zone->newzone_data.maxclip))
			{
				char *hacker_str = NULL;
				MakeAnyLenString(&hacker_str, "%s attempting to target something beyond the clip plane of %.2f units,"
					" from (%.2f, %.2f, %.2f) to %s (%.2f, %.2f, %.2f)", GetName(),
					(zone->newzone_data.maxclip*zone->newzone_data.maxclip),
					GetX(), GetY(), GetZ(), GetTarget()->GetName(), GetTarget()->GetX(), GetTarget()->GetY(), GetTarget()->GetZ());
				database.SetMQDetectionFlag(AccountName(), GetName(), hacker_str, zone->GetShortName());
				safe_delete_array(hacker_str);
				SetTarget(NULL);
				return;
			}

			GetTarget()->IsTargeted(1);
		}
	}
	return;
}
I will try to look through this later and maybe add in a "if(Admin() < 80)" type of check to allow GMs to use /target from any range. Just need to figure out the best place to put that, but it shouldn't be too hard.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
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 02:18 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