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 04-10-2011, 04:29 PM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 654
Default zone instancing

I want to create a zone instance using completely unique spawns that were not part of the non-instanced version of that zone. Now using the version field for the npc to control what version of the zone it spawns in doesn't seem like it would work in this case because the spawn chance for the unique spawns would have to be set to 0 otherwise they would show up in the normal version of the zone. Now if spawns in zone instances work like normal zones then the zone instance would be void of life. Assuming the version field can't be used is it possible to retrieve a zone instance id and then spawn npcs within that instance using quest::spawn2()? How much of a strain does zone instancing cause on a computer because I would be attempting to spawn between 170-308 npcs depending on the zone.

The reason I want to do this is that I have completely custom versions of Crystallos, Bloodmoon Keep and Loping Plains that I am currently using in place of the normal zone versions. The problem is I want to use the normal versions of the zone for exp and such then have the custom versions instanced for group/raid content.

I have not started this script yet because I am not sure if it is possible to do....so any thoughts or suggestions would be greatly appreciated.
Reply With Quote
  #2  
Old 04-11-2011, 06:20 AM
Jaekob
Sarnak
 
Join Date: May 2010
Posts: 39
Default

If I am understanding you correctly you can and want to use the version field in the db to make a separate instance.

Set up your spawns as you desire for the instance and make sure the NPC has the correct version set in both the npc_types and spawn2 tables. Only thing you should need to use perl for is to create the instance. You can do this for multiple instances within the same zone if you want, ikkinz has seven different versions.
Reply With Quote
  #3  
Old 04-11-2011, 03:11 PM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 654
Default

Doh some how did i managed to over look the version field in spawn2. That should make a big difference. Thanks for the help.
Reply With Quote
  #4  
Old 04-12-2011, 12:41 AM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 654
Default

Well I thought I had this working but still no npc's showing up inside the instance. So now I am not sure if the instance is working at all. The npc was working just fine prior to changing the version number in npc_types and spawn2 tables.

What am I doing wrong?

Test Script
Code:
sub EVENT_SAY {
	my $group = $client->GetGroup();
	if ($text =~/Hail/i)
	{
	quest::say("Just say the word [group].");
	}
	if (($text =~/group/i) && $ulevel >= 80 && $hasitem{219532} && $group) {
		quest::CreateInstance("crystallos", 1, 21600);
		quest::AssignGroupToInstance("crystallos"); 
		quest::MovePCInstance(446, "crystallos", -65, -200, -75);
        }
	elsif (($text =~/group/i) && $ulevel <= 79 && $hasitem{219532} && $group) {
		quest::say("Sorry but you are not strong enough for this quest come back when you have gained more experience.");
        }
	elsif (($text =~/group/i) && $ulevel >= 80 && !$hasitem{219532} && $group) {
		quest::say("Sorry but you do not have the key needed to enter the zone for this quest. Seek out the Relic Gatekeeper, she might be able to help you.");
        }
	elsif (($text =~/group/i) && $ulevel >= 80 && $hasitem{219532} && !$group) {
		quest::say("Sorry but you are not in a group. Find a group then try again.");
        }
}
NPC that is suppose to go into the instance
Code:
INSERT INTO `spawnentry` (`spawngroupID`, `npcID`, `chance`) VALUES (700110, 700011, 100);
INSERT INTO `spawngroup` (`id`, `name`, `spawn_limit`, `dist`, `max_x`, `min_x`, `max_y`, `min_y`, `delay`) VALUES (700110, '700110', 1, 0, 0, 0, 0, 0, 0);
INSERT INTO `spawn2` (`id`, `spawngroupID`, `zone`, `version`, `x`, `y`, `z`, `heading`, `respawntime`, `variance`, `pathgrid`, `_condition`, `cond_value`, `enabled`) VALUES (700011, 700110, 'crystallos', 1, -996.799988, -351.299988, -426.399994, 8.900000, 1200, 0, 0, 0, 1, 1);
INSERT INTO `npc_types` (`id`, `name`, `lastname`, `level`, `race`, `class`, `bodytype`, `hp`, `gender`, `texture`, `helmtexture`, `size`, `hp_regen_rate`, `mana_regen_rate`, `loottable_id`, `merchant_id`, `npc_spells_id`, `npc_faction_id`, `adventure_template_id`, `trap_template`, `mindmg`, `maxdmg`, `npcspecialattks`, `aggroradius`, `face`, `luclin_hairstyle`, `luclin_haircolor`, `luclin_eyecolor`, `luclin_eyecolor2`, `luclin_beardcolor`, `luclin_beard`, `drakkin_heritage`, `drakkin_tattoo`, `drakkin_details`, `armortint_id`, `armortint_red`, `armortint_green`, `armortint_blue`, `d_meele_texture1`, `d_meele_texture2`, `prim_melee_type`, `sec_melee_type`, `runspeed`, `MR`, `CR`, `DR`, `FR`, `PR`, `Corrup`, `see_invis`, `see_invis_undead`, `qglobal`, `AC`, `npc_aggro`, `spawn_limit`, `attack_speed`, `findable`, `STR`, `STA`, `DEX`, `AGI`, `_INT`, `WIS`, `CHA`, `see_hide`, `see_improved_hide`, `trackable`, `isbot`, `exclude`, `ATK`, `Accuracy`, `slow_mitigation`, `version`, `maxlevel`, `scalerate`, `private_corpse`, `unique_spawn_by_name`) VALUES (700011, 'Hyrdos, Guardian of Crystallos', NULL, 90, 530, 9, 26, 5500000, 2, 1, 6, 250, 500, 0, 750001, 0, 547, 79, 0, 0, 12000, 12000, 'SERrFTQMCNIDf', 250, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 2.5, 350, 350, 350, 350, 350, 0, 1, 1, 1, 6000, 0, 1, -75, 0, 750, 750, 750, 750, 750, 750, 750, 1, 0, 1, 0, 3, 20000, 0, 0, 1, 0, 100, 0, 0);
Reply With Quote
  #5  
Old 04-12-2011, 01:05 AM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,743
Default

CreateInstance returns an instance ID.

That is what you should pass to AssignGroupToInstance and MovePCInstance instead of "crystallos".
Reply With Quote
  #6  
Old 04-12-2011, 01:28 AM
Akkadius's Avatar
Akkadius
Administrator
 
Join Date: Feb 2009
Location: MN
Posts: 2,071
Default

Quote:
Originally Posted by blackdragonsdg View Post
Well I thought I had this working but still no npc's showing up inside the instance. So now I am not sure if the instance is working at all. The npc was working just fine prior to changing the version number in npc_types and spawn2 tables.

What am I doing wrong?

Test Script
Code:
sub EVENT_SAY {
	my $group = $client->GetGroup();
	if ($text =~/Hail/i)
	{
	quest::say("Just say the word [group].");
	}
	if (($text =~/group/i) && $ulevel >= 80 && $hasitem{219532} && $group) {
		quest::CreateInstance("crystallos", 1, 21600);
		quest::AssignGroupToInstance("crystallos"); 
		quest::MovePCInstance(446, "crystallos", -65, -200, -75);
        }
	elsif (($text =~/group/i) && $ulevel <= 79 && $hasitem{219532} && $group) {
		quest::say("Sorry but you are not strong enough for this quest come back when you have gained more experience.");
        }
	elsif (($text =~/group/i) && $ulevel >= 80 && !$hasitem{219532} && $group) {
		quest::say("Sorry but you do not have the key needed to enter the zone for this quest. Seek out the Relic Gatekeeper, she might be able to help you.");
        }
	elsif (($text =~/group/i) && $ulevel >= 80 && $hasitem{219532} && !$group) {
		quest::say("Sorry but you are not in a group. Find a group then try again.");
        }
}
NPC that is suppose to go into the instance
Code:
INSERT INTO `spawnentry` (`spawngroupID`, `npcID`, `chance`) VALUES (700110, 700011, 100);
INSERT INTO `spawngroup` (`id`, `name`, `spawn_limit`, `dist`, `max_x`, `min_x`, `max_y`, `min_y`, `delay`) VALUES (700110, '700110', 1, 0, 0, 0, 0, 0, 0);
INSERT INTO `spawn2` (`id`, `spawngroupID`, `zone`, `version`, `x`, `y`, `z`, `heading`, `respawntime`, `variance`, `pathgrid`, `_condition`, `cond_value`, `enabled`) VALUES (700011, 700110, 'crystallos', 1, -996.799988, -351.299988, -426.399994, 8.900000, 1200, 0, 0, 0, 1, 1);
INSERT INTO `npc_types` (`id`, `name`, `lastname`, `level`, `race`, `class`, `bodytype`, `hp`, `gender`, `texture`, `helmtexture`, `size`, `hp_regen_rate`, `mana_regen_rate`, `loottable_id`, `merchant_id`, `npc_spells_id`, `npc_faction_id`, `adventure_template_id`, `trap_template`, `mindmg`, `maxdmg`, `npcspecialattks`, `aggroradius`, `face`, `luclin_hairstyle`, `luclin_haircolor`, `luclin_eyecolor`, `luclin_eyecolor2`, `luclin_beardcolor`, `luclin_beard`, `drakkin_heritage`, `drakkin_tattoo`, `drakkin_details`, `armortint_id`, `armortint_red`, `armortint_green`, `armortint_blue`, `d_meele_texture1`, `d_meele_texture2`, `prim_melee_type`, `sec_melee_type`, `runspeed`, `MR`, `CR`, `DR`, `FR`, `PR`, `Corrup`, `see_invis`, `see_invis_undead`, `qglobal`, `AC`, `npc_aggro`, `spawn_limit`, `attack_speed`, `findable`, `STR`, `STA`, `DEX`, `AGI`, `_INT`, `WIS`, `CHA`, `see_hide`, `see_improved_hide`, `trackable`, `isbot`, `exclude`, `ATK`, `Accuracy`, `slow_mitigation`, `version`, `maxlevel`, `scalerate`, `private_corpse`, `unique_spawn_by_name`) VALUES (700011, 'Hyrdos, Guardian of Crystallos', NULL, 90, 530, 9, 26, 5500000, 2, 1, 6, 250, 500, 0, 750001, 0, 547, 79, 0, 0, 12000, 12000, 'SERrFTQMCNIDf', 250, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 2.5, 350, 350, 350, 350, 350, 0, 1, 1, 1, 6000, 0, 1, -75, 0, 750, 750, 750, 750, 750, 750, 750, 1, 0, 1, 0, 3, 20000, 0, 0, 1, 0, 100, 0, 0);
Refer to:

http://eqemulator.org/forums/showthread.php?t=32609


Code:
if (($text =~/group/i) && $ulevel >= 80 && $hasitem{219532} && $group) {
                plugin::SendToInstance("group", "crystallos", 1, -65, -200, -75, "grp", 21600);
        }
This requires checkout of the Plugins Repo SVN:

http://eqemulator.org/forums/showthread.php?t=32608
Reply With Quote
  #7  
Old 04-12-2011, 02:28 AM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 654
Default

Quote:
Originally Posted by lerxst2112 View Post
CreateInstance returns an instance ID.

That is what you should pass to AssignGroupToInstance and MovePCInstance instead of "crystallos".
Umm yeah, while I know what you mean with that statement my attempts to implement that lead to a zone loop back issue, same result I had before and complete failure.
Reply With Quote
  #8  
Old 04-12-2011, 03:41 AM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 654
Default

Akkadius, that plugin worked flawlessly. Thank you for sharing that.
Reply With Quote
  #9  
Old 04-12-2011, 03:46 AM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,743
Default

Well, you should take a look at what Akkadius posted. The plugins are very helpful and make things a lot easier to read.

If you take a look at the plugin code you'll see it uses the returned instance ID correctly.

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