|  |  | 
 
  |  |  |  |  
  |  |  |  |  
  |  |  |  |  
  |  |  |  |  
  |  | 
	
		
   
   
      | Quests::Q&A This is the quest support section |  
	
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				12-25-2008, 04:30 AM
			
			
			
		 |  
	| 
		
			
			| Banned |  | 
					Join Date: Oct 2003 Location: Mattmecks Basement 
						Posts: 546
					      |  |  
	| 
				 Random Race 
 I need something but I cannot accomplish it! Basically, I need an npc to spawn. Once he spawns, he/she changes to a random race/gender (Race range is from 1 - 12) (Gender Range 0 - 1). This is what I've got so far. 
	Code: sub EVENT_SPAWN {
my $randomrace = quest::ChooseRandom(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
my $randomgender = quest::ChooseRandom(0, 1);
quest::npcgender($randomgender);
quest::npcrace($randomrace);
if($randomrace == 4){
quest::npcsize(5);
}
if($randomrace == 3){
quest::npcsize(7);
}
if($randomrace == 7){
quest::npcsize(5);
}
if($randomrace == 6){
quest::npcsize(5);
}
if($randomrace == 11){
quest::npcsize(4);
}
if($randomrace == 8){
quest::npcsize(4);
}
if($randomrace == 12){
quest::npcsize(4);
}
if($randomrace == 10){
quest::npcsize(8);
}
if($randomrace == 9){
quest::npcsize(8);
}
if($randomrace == 2){
quest::npcsize(8);
}
} Unfortunately for me, this won't work in EVENT_SPAWN. I have to make it a signal revolver. Basically I have an NPC that acts as a signal receiver. Once an npc spawns, it signals the NPC. Upon being signaled, it signals back. As seen below.
 
	Code: sub EVENT_SPAWN {
quest::signal(999371, 0);
}
sub EVENT_SIGNAL {
my $randomrace = quest::ChooseRandom(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
my $randomgender = quest::ChooseRandom(0, 1);
quest::npcgender($randomgender);
quest::npcrace($randomrace);
if($randomrace == 4){
quest::npcsize(5);
}
if($randomrace == 3){
quest::npcsize(7);
}
if($randomrace == 7){
quest::npcsize(5);
}
if($randomrace == 6){
quest::npcsize(5);
}
if($randomrace == 11){
quest::npcsize(4);
}
if($randomrace == 8){
quest::npcsize(4);
}
if($randomrace == 12){
quest::npcsize(4);
}
if($randomrace == 10){
quest::npcsize(8);
}
if($randomrace == 9){
quest::npcsize(8);
}
if($randomrace == 2){
quest::npcsize(8);
}
} Any ideas? :(
			
			
			
			
				  |  
 
  |  |  |  |  
	
		
	
	
	| 
			
			 
			
				12-25-2008, 05:39 AM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
 Ya, it can't work while spawning, because it doesn't have the ID and stuff fully done at that point.  But, you can always make a timer and have it run 1 second after it spawns and it will let you do just about anything you want from that point.  Lemme know if you need any help with setting up the timer. |  
	
		
	
	
	| 
			
			 
			
				12-25-2008, 08:43 PM
			
			
			
		 |  
	| 
		
			
			| Banned |  | 
					Join Date: Oct 2003 Location: Mattmecks Basement 
						Posts: 546
					      |  |  
	| 
 I have tested the timer idea in the past. It does not work for me. :( Not even this works.. 
	Code: sub EVENT_SPAWN {
   quest::settimer("RandRG", 5)
}
sub EVENT_TIMER {
my $randomrace = quest::ChooseRandom(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
my $randomgender = quest::ChooseRandom(0, 1);
   if ($timer eq "RandRG") {
quest::npcgender($randomgender);
quest::npcrace($randomrace);
quest::stoptimer("RandRG");
}
} Also, assuming I could get this to work. I still need to add the code that changes the npc to the correct size. How would I add if + elsif statements in this timer to check the $randomrace variable?			 Last edited by Richardo; 12-26-2008 at 04:46 AM..
 |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				12-25-2008, 09:35 PM
			
			
			
		 |  
	| 
		
			
			| Fire Beetle |  | 
					Join Date: Aug 2008 Location: nj, usa 
						Posts: 24
					      |  |  
	| 
 Did you try going into zone, killing an npc and waiting for it to spawn and see what it does?
 I personally know currently there is an issue with size where when I multi box unless all my toons are in the zone if one zones in after will have default size viewed for players who were shrunk/big.  Strange bug but if this was the case of  illusions as well (havn't tested this) code might work but require a respawn while you are actually physically in the zone/near mob.  Kind of like that question "If a tree falls in the woods and no one hears it does it make a sound?".  Well in EQ shrink/grow spells don't make a sound if no one is in zone to witness it.
 
 Other then this code looks fine to me from programming stand point.  Only other thing I can suggest is instead of phsically trying to change its race/size, you could have it immediatly cast an illusion and custom grow/shrink spell on itself.
 
 But like I said, spell wise out of zone players who zone in will not see the size difference.
 |  
 
  |  |  |  |  
	
		
	
	
	| 
			
			 
			
				12-25-2008, 09:48 PM
			
			
			
		 |  
	| 
		
			
			| Banned |  | 
					Join Date: Oct 2003 Location: Mattmecks Basement 
						Posts: 546
					      |  |  
	| 
 Ahh.. Illusion is a good idea but I dislike the idea about 'casting'. There has to be a different way to go about things. Size is kept when players zone in. They see the correct size + changed race. Trevius, do you have any ideas mate? 			 Last edited by Richardo; 12-26-2008 at 02:24 PM..
 |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				12-26-2008, 11:16 AM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
				  
 Here is an example of a quest that I currently use and know that it works: 
	Code: #Explosive Storm
my $entity_id;
sub EVENT_SPAWN {
  quest::settimer("change_storm1",5);
}
sub EVENT_TIMER {
  if ($timer eq "change_storm1") {
    quest::stoptimer("change_storm1");
    quest::npctexture(2);
    quest::emote("gains more energy and becomes less stable.");
    quest::settimer("change_storm2",5); }
  if ($timer eq "change_storm2") {
    quest::stoptimer("change_storm2");
    quest::npctexture(1);
    quest::emote("gains even more energy and looks extremely dangerous.");
    quest::settimer("change_storm3",5); }
    
  if ($timer eq "change_storm3") {
    quest::stoptimer("change_storm3");
$npc->CastSpell(7758, $userid);
    quest::emote("explodes and disperses.");
    quest::depop(); }
} I am not sure you can change multiple size/gender/race all at the same time without issues, but I imagine something like this might work:
 
	Code: my $randomrace = quest::ChooseRandom(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
my $randomgender = quest::ChooseRandom(0, 1);
sub EVENT_SPAWN {
   quest::settimer("RandRace", 1)
}
sub EVENT_TIMER {
my $raceset = $randomrace;
   if ($timer eq "RandRace") {
    quest::stoptimer("RandRace");
    quest::npcrace($raceset);
    quest::settimer("RandGender", 1)
  }
   if ($timer eq "RandGender") {
    quest::stoptimer("RandGender");
    quest::npcgender($randomgender);
    quest::settimer("SetRaceSize", 1)
  }
   if ($timer eq "SetRaceSize") {
    quest::stoptimer("SetRaceSize");
    if($raceset == 4){
      quest::npcsize(5);
    }
    if($raceset == 3){
      quest::npcsize(7);
    }
    if($raceset == 7){
      quest::npcsize(5);
    }
    if($raceset == 6){
      quest::npcsize(5);
    }
    if($raceset == 11){
      quest::npcsize(4);
    }
    if($raceset == 8){
      quest::npcsize(4);
    }
    if($raceset == 12){
      quest::npcsize(4);
    }
    if($raceset == 10){
      quest::npcsize(8);
    }
    if($raceset == 9){
      quest::npcsize(8);
    }
    if($raceset == 2){
      quest::npcsize(8);
    }
  }
} I don't know if that will work or not, but maybe something like that.
 
Here is another example I use with random Race changing:
 
	Code: sub EVENT_ITEM {
  if($platinum == 100) {
    quest::say("H-h-h-happy Trick or T-t-treating!");
    quest::playerrace(quest::ChooseRandom(14,46,60,82,85)); }
  if($platinum == 500) {
    quest::say("Yar! H-h-h-happy Trick or T-t-treating!");
my $hgender = $client->GetBaseGender();
    quest::playerrace(quest::ChooseRandom(338,339,340,341,342));
    quest::playergender($hgender); }
} You can also look at the Illusionist quest I have posted in the Custom section, but those are all for changing player race and genders. |  
 
  |  |  |  |  
	
		
	
	
	
	
	| Thread Tools |  
	|  |  
	| Display Modes |  
	
	| 
		 Linear Mode |  
	| 
	|  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:09 PM.
 
 |  |  
    |  |  |  |  
    |  |  |  |  
     |  |  |  |  
 |  |