|  |  | 
 
  |  |  |  |  
  |  |  |  |  
  |  |  |  |  
  |  |  |  |  
  |  | 
	
		
   
   
      | 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. |  
	
	
		
	
	
	| 
			
			 
			
				08-18-2009, 04:21 PM
			
			
			
		 |  
	| 
		
			
			| Hill Giant |  | 
					Join Date: Aug 2008 Location: NorthEast 
						Posts: 115
					      |  |  
	| 
				 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
 |  
	
		
	
	
	| 
			
			 
			
				08-18-2009, 04:23 PM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: May 2006 Location: Cincinnati, OH 
						Posts: 689
					      |  |  
	| 
 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. |  
	
		
	
	
	| 
			
			 
			
				08-18-2009, 05:43 PM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
 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.
 |  
 
  |  |  |  |  
	
		
	
	
	| 
			
			 
			
				08-18-2009, 06:52 PM
			
			
			
		 |  
	| 
		
			|  | Demi-God |  | 
					Join Date: Mar 2009 Location: Umm 
						Posts: 1,492
					      |  |  
	| 
 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 |  
	
		
	
	
	| 
			
			 
			
				08-18-2009, 07:12 PM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
 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. |  
	
		
	
	
	| 
			
			 
			
				08-18-2009, 07:40 PM
			
			
			
		 |  
	| 
		
			|  | Demi-God |  | 
					Join Date: Mar 2009 Location: Umm 
						Posts: 1,492
					      |  |  
	| 
 
	Quote: 
	
		| 
					Originally Posted by trevius  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" =) |  
	
		
	
	
	| 
			
			 
			
				08-19-2009, 02:53 AM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
 You can type the exact name or just the first part of it.  Works pretty much just like /target does in that aspect. |  
	
		
	
	
	| 
			
			 
			
				08-19-2009, 07:51 AM
			
			
			
		 |  
	| 
		
			
			| Hill Giant |  | 
					Join Date: Aug 2008 Location: NorthEast 
						Posts: 115
					      |  |  
	| 
 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
 |  
	
		
	
	
	| 
			
			 
			
				08-19-2009, 08:27 AM
			
			
			
		 |  
	| 
		
			
			| Hill Giant |  | 
					Join Date: Aug 2008 Location: NorthEast 
						Posts: 115
					      |  |  
	| 
 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. |  
	
		
	
	
	| 
			
			 
			
				08-19-2009, 08:42 AM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: May 2006 Location: Cincinnati, OH 
						Posts: 689
					      |  |  
	| 
 
	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. |  
	
		
	
	
	| 
			
			 
			
				08-19-2009, 04:59 PM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
 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.
 |  
	
		
	
	
	| 
			
			 
			
				11-18-2009, 05:38 PM
			
			
			
		 |  
	| 
		
			|  | Demi-God |  | 
					Join Date: Mar 2009 Location: Umm 
						Posts: 1,492
					      |  |  
	| 
 
	Quote: 
	
		| 
					Originally Posted by trevius  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 =) |  
	
		
	
	
	| 
			
			 
			
				11-27-2009, 07:47 PM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
 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.
 |  
	
		
	
	
	| 
			
			 
			
				02-24-2010, 06:16 PM
			
			
			
		 |  
	| 
		
			|  | Demi-God |  | 
					Join Date: Mar 2009 Location: Umm 
						Posts: 1,492
					      |  |  
	| 
 BUMP!!!
 You awaiting for gm /target to come back
 
 It targets players across zone, but NOT mobs
 |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				02-24-2010, 06:54 PM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
				  
 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. |  
 
  |  |  |  |  
	
		
	
	
	
	
	| 
	|  Posting Rules |  
	| 
		
		You may not post new threads You may not post replies You may not post attachments You may not edit your posts 
 HTML code is Off 
 |  |  |  All times are GMT -4. The time now is 01:10 AM.
 
 |  |  
    |  |  |  |  
    |  |  |  |  
     |  |  |  |  
 |  |