Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 05-17-2009, 01:41 AM
drakelord
Hill Giant
 
Join Date: Nov 2002
Location: NC, USA
Posts: 182
Default

Well now, this thread got hijacked sideways. As someone who has played through over 12 MMO's and has had plenty of experience, I'll add in my two cents for whoever cares.

The way I see it, Everquest is a program developed by Sony Online Entertainment that contains maps, models, a GUI, and a basic set of functional rules that the client is governed by. Everything else that exists in the "live" Everquest world is simply an arrangement of the content provided in the client.

I am fairly certain based on my programming classes and discussions with game devs that the server code that SoE uses is designed to be highly variable. Just as an example that is not an MMO, take the source engine and half-life 2. If you open up say, a file for the weapons, you will see about 3 pages worth of #define 's that allow for quick changing of stats such as weapon speed, damage, etc. Albeit this is not in the database, and is in the actual code, it is designed in a way that allows for a quick change if needed.

This is how I feel the server code for EqEmu should be handled. Everything should be designed in a way that makes it fast and powerful, but also fluid. Not only would this help individuals who are not masters at C++/programming, but it would allow for quick changes to emulate events that happen on places such as EQLive. I wouldn't mind 1000 "rules" as long as they are properly arranged and designed with proper documentation to make them effective, if it meant that entire functions would not have to be adjusted if something changed on live.
__________________
Hmm.
Reply With Quote
  #2  
Old 05-17-2009, 10:39 AM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,449
Default

Quote:
Originally Posted by drakelord View Post
Well now, this thread got hijacked sideways.
I wouldn't say it got hijacked... maybe brutally mauled now and there.

I think it's nice we can have civil discussion like this. I think there's a bit of existing tension over the matter of what gets into code, and it's nice that we discuss the future of the project... it just so happens that it was in this thread.
Reply With Quote
  #3  
Old 05-17-2009, 12:13 PM
Dibalamin
Hill Giant
 
Join Date: Dec 2007
Posts: 182
Default

To kinda help get back on track:

Trev, I've never been able to run a script on a pet with sub EVENT_SPAWN. I spent DAYS trying to use it to stop enchanter pets from punching by adding the gear to them via a perl script. I eventually had to cave and start the timer in spawn and have the sub EVENT_TIMER add the gear.

Not clean but effective.

I've already blocked the spells in sky that aren't supposed to be there, that isn't a big deal for me & I tried remodeling the mobs just for Sky, big fat failure. From a development standpoint, I think source is the right fix for this issue if live emulation is the target.
Reply With Quote
  #4  
Old 05-17-2009, 12:32 PM
Congdar
Developer
 
Join Date: Jul 2007
Location: my own little world
Posts: 751
Default

Quote:
Originally Posted by Dibalamin View Post
Trev, I've never been able to run a script on a pet with sub EVENT_SPAWN...I eventually had to cave and start the timer in spawn and have the sub EVENT_TIMER add the gear.

Not clean but effective.
The second to the last line in Mob::MakePet() is entity_list.AddNPC(npc); and if you change it to entity_list.AddNPC(npc, true, true); and then put your code back into EVEN_SPAWN from EVENT_TIMER it will work.

Quote:
Originally Posted by Dibalamin View Post
I've already blocked the spells in sky that aren't supposed to be there, that isn't a big deal for me & I tried remodeling the mobs just for Sky, big fat failure. From a development standpoint, I think source is the right fix for this issue if live emulation is the target.
There had to be over 50 non-air pet spells for the magicain that you had to add to the table. could you share that sql?
__________________
The Realm
Reply With Quote
  #5  
Old 05-17-2009, 01:38 PM
nilbog
Hill Giant
 
Join Date: Nov 2007
Posts: 198
Default

Thanks a lot for posting the source fix for this issue Congdar. From everything I remember from the 1st time I went to airplane, till I quit playing live, necro and mage pets were wisps and djinni.

I took a while one day and fixed the pets using scripts.. and I have to say, it felt like a cheap workaround. Using the timer method, it still has a delay till everything looks right. My method involved creating 2 new illusion spells, wisp and djinn.

heres illusion code for skeleton pet, if it might help anyone w/ anything else.

Code:
sub EVENT_DEATH{
quest::say("Sorry to have failed you, oh Great One.");
 }

sub EVENT_SPAWN { 
 quest::say("At your service Master.");
 $mobzone = $npc->GetZoneID() ;
 if ($mobzone == 71) {
 quest::settimer(1,0);
}
}

sub EVENT_TIMER {
if($timer eq "1") {
$skel = $entity_list->GetMobByNpcTypeID(614);
if ($skel) {
      $wisp = $skel->CastToNPC();
$npc->CastSpell(8450,$npc);
quest::stoptimer(1);
}
}
}
Thanks again Congdar!
Reply With Quote
  #6  
Old 05-17-2009, 01:44 PM
Dibalamin
Hill Giant
 
Join Date: Dec 2007
Posts: 182
Default

I PM'd you my email Congdar, drop me a line there and I can send you the blocked_spells table...me and queries don't mix.
Reply With Quote
  #7  
Old 05-17-2009, 05:48 PM
cavedude's Avatar
cavedude
The PEQ Dude
 
Join Date: Apr 2003
Location: -
Posts: 1,988
Default

Would you mind making that SQL public? I was meaning to do it myself one day but if you've already got it done, then no need to reinvent the wheel.

Going way back to the original code. From a content standpoint it is correct. Before going into SVN, a simple rule can be added to disable it if anybody doesn't want their airplane changed, no big deal. (I can understand that and agree with that.) Now, I do believe you have a technical issue which KLS would know more about. I believe specifying the zoneid may not work once the instancing stuff hits trunk. But, again you'll need to clarify with KLS.
Reply With Quote
Reply

Thread Tools
Display Modes

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