Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Q&A

Quests::Q&A This is the quest support section

Reply
 
Thread Tools Display Modes
  #16  
Old 02-13-2013, 09:51 PM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,743
Default

Guess you missed some spots then. Good luck.
Reply With Quote
  #17  
Old 02-14-2013, 05:04 PM
SavageDeath
Fire Beetle
 
Join Date: Jan 2013
Location: In the USA
Posts: 15
Default

Haha, thanks have you ever tried to make it go past 2.14bil and succeeded? Or know of anyone that has and succeeded? Reason I ask is I wanna know if I'm chasing a lost cause =D
Reply With Quote
  #18  
Old 02-14-2013, 05:29 PM
Zaela_S
Hill Giant
 
Join Date: Jun 2012
Posts: 216
Default

If just making the NPC heal up at certain points or similar is totally not an option...

Quote:
Originally Posted by Derision View Post
NPC HP is only communicated to the client in percentages (i.e. 0 to 100%) unless I am mistaken, which is why the packet collector cannot collect absolute NPC max/current hitpoints, so I don't think it is a client limitation.
The server has control over what % HP the NPC appears to be at by way of Mob::CreateHPPacket(). A system could be created where literal HP values are not used; probably the most straightforward way to do it would be to have an NPC's HP value define how much HP they have per percent. That way you could have an NPC with ~210 billion HP easy. A more complicated system with multiple values to track effective HP could give you more if that limitation is still too low.

It would be a pretty big and very custom overhaul, though. You'd need to split Client HP checks from NPC HP checks since they wouldn't work the same anymore.


Quote:
Originally Posted by SavageDeath View Post
First question is, is there some type of sub EVENT for when someone equips any piece of armor?
I added an EVENT like this on my server, but unfortunately not for Perl and so not something I can offer up. It shouldn't be too hard to add by copying from other EVENT triggers though; just needs to occur at the bottom of Client::SwapItem(), in a certain part of Client::AutoPutLootInInventory() where things are auto-equipped on loot, and (with a little care) in Client::SetBandolier(). There might be other spots where it's needed I haven't found yet... but I bet someone who knows the Perl system could add it pretty easily. I called it EVENT_EQUIP_CHANGE myself.
Reply With Quote
  #19  
Old 02-14-2013, 05:49 PM
ghanja's Avatar
ghanja
Dragon
 
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
Default

Quote:
Originally Posted by Zaela_S View Post
I added an EVENT like this on my server, but unfortunately not for Perl and so not something I can offer up. It shouldn't be too hard to add by copying from other EVENT triggers though; just needs to occur at the bottom of Client::SwapItem(), in a certain part of Client::AutoPutLootInInventory() where things are auto-equipped on loot, and (with a little care) in Client::SetBandolier(). There might be other spots where it's needed I haven't found yet... but I bet someone who knows the Perl system could add it pretty easily. I called it EVENT_EQUIP_CHANGE myself.
Sigh. No comment, beyond, well, this obvious comment. To be PC and all.

Though thanks to the above said, research time for the insertion/addition has been cut, let me have a look see, as I believe it would be a beneficial event to have.
Reply With Quote
  #20  
Old 02-14-2013, 06:18 PM
SavageDeath
Fire Beetle
 
Join Date: Jan 2013
Location: In the USA
Posts: 15
Default

@Zaela_S, thanks for your ideas. That would be one way to do it yeah.
But I was looking for a way to modify it so they would just accept bigger values without having to do a major over haul on the current working system.
One would think modifying it to accept values over 2.14 billion wouldn't be all that hard seeing as its already set up to accept values to 2.14 billion with int32.
I know 2.14 billion is the cap of int32 which is why one would think changing all the places that HP is pulled and set from to int64 instead of int32 would work. Again I don't know much about C++, if I'm mistaken someone please correct me.
Reply With Quote
  #21  
Old 02-14-2013, 06:58 PM
Zaela_S
Hill Giant
 
Join Date: Jun 2012
Posts: 216
Default

If you want a significant change, you'll have to be ready to do a little work, I think. If you don't want to put in too much effort, you'll probably just have to accept mobs having multiple HP bars or multiple phases. Honestly the system I described probably wouldn't be that difficult; it could be knocked out in a day with a little patience, I think.

Upon further thought making the HP system I described extremely flexible wouldn't be too complicated even: you'd only need 3 tracking values and 2 starting NPC data values.

The first value would be a uint32 that is directly decreased by damage. The second value would be a uint32 that defines how many times the first value is in 1% of the total. The third value would be an int8 to track the NPC's current HP %.

When damage would put the first value below 0, the second value will decrement, the first value will reset to its starting value, and any excess damage will bleed over. Whenever the second value hits 0, the third value will decrement, the second value will reset, and the players will rejoice at a sign of progress. At that point it would basically just be a matter of making Death occur when the third value hits 0 or -1.

At that point the HP cap would be around... (4.29b^2)*100... so high you'd need to use scientific notation to describe how much HP something has. What more could you ask for.
Reply With Quote
  #22  
Old 02-14-2013, 08:09 PM
orionsun
Banned
 
Join Date: May 2009
Location: USA
Posts: 22
Default

Don't worry Zeela, most of the people here don't actually want to do any work, they just keep asking the same question until somebody else does it for them.

ghanja doesnt even realize the reason you didn't post a diff is because you did your version of this in Lua.
Reply With Quote
  #23  
Old 02-14-2013, 08:21 PM
SavageDeath
Fire Beetle
 
Join Date: Jan 2013
Location: In the USA
Posts: 15
Default

@orionsun I wasn't asking for anyone to do it for me I was asking if there was an easier way to do it rather than redoing the entire way it works currently.
Reply With Quote
  #24  
Old 02-14-2013, 08:28 PM
c0ncrete's Avatar
c0ncrete
Dragon
 
Join Date: Dec 2009
Posts: 719
Default

orion is full of snark today. he also apparently doesn't realize that ghanja is quite familiar with the fact that zaela_s does customization in lua and doesn't generally ask anyone to do anything for him.
__________________
I muck about @ The Forge.
say(rand 99>49?'try '.('0x'.join '',map{unpack 'H*',chr rand 256}1..2):'incoherent nonsense')while our $Noport=1;
Reply With Quote
  #25  
Old 02-14-2013, 08:41 PM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,743
Default

Quote:
Originally Posted by SavageDeath View Post
@Zaela_S, thanks for your ideas. That would be one way to do it yeah.
But I was looking for a way to modify it so they would just accept bigger values without having to do a major over haul on the current working system.
One would think modifying it to accept values over 2.14 billion wouldn't be all that hard seeing as its already set up to accept values to 2.14 billion with int32.
I know 2.14 billion is the cap of int32 which is why one would think changing all the places that HP is pulled and set from to int64 instead of int32 would work. Again I don't know much about C++, if I'm mistaken someone please correct me.
Hit Points are used all over the place, so thinking it wouldn't be a major overhaul is just silly. One might think it wouldn't be all that hard, and really it isn't, but as you've said you don't know a bunch about C++ and although it isn't a difficult change it does require that all places in the code that manipulate the value in any way be changed to allow a larger data type.

Since you didn't explain why you need to change this I'd assume it's because you want to see really big numbers for damage. Well, that introduces another set of problems as all of the damage calculations are subject to overflow at some point too, so you'd be back saying "hey guys, why is my damage negative" before long.

If it is super important to you, good luck, you'll need it. If not, just scale your damage so it works within the existing confines and be happy.
Reply With Quote
  #26  
Old 02-14-2013, 08:43 PM
orionsun
Banned
 
Join Date: May 2009
Location: USA
Posts: 22
Default

Quote:
orion is full of snark today
I prefer speaking my mind as opposed to passive-aggressive stuff like:

Quote:
Sigh. No comment, beyond, well, this obvious comment. To be PC and all.
P.S. Savage... theres a good song called "Not Everything Is About You", you should listen to it, or maybe just read the title.
Reply With Quote
  #27  
Old 02-14-2013, 08:56 PM
SavageDeath
Fire Beetle
 
Join Date: Jan 2013
Location: In the USA
Posts: 15
Default

Quote:
Originally Posted by lerxst2112 View Post
Hit Points are used all over the place, so thinking it wouldn't be a major overhaul is just silly. One might think it wouldn't be all that hard, and really it isn't, but as you've said you don't know a bunch about C++ and although it isn't a difficult change it does require that all places in the code that manipulate the value in any way be changed to allow a larger data type.

Since you didn't explain why you need to change this I'd assume it's because you want to see really big numbers for damage. Well, that introduces another set of problems as all of the damage calculations are subject to overflow at some point too, so you'd be back saying "hey guys, why is my damage negative" before long.

If it is super important to you, good luck, you'll need it. If not, just scale your damage so it works within the existing confines and be happy.
Thanks man, and you are correct about the damage, I have actually already modified that to support the bigger damage =D works great doesn't ever go into negative numbers and my gm hits for over 20mil (a regular players max hit is around 900k) which is why I wanted to change the cap on HP but yeah I'll just need to go through the source again with a fine tooth comb and give it a long hard look. Thanks for the support.

@orionsun you could of been directing that statement at more than one person. And seeing as I started the thread I would assume the replies that follow would be directed at me.
Reply With Quote
  #28  
Old 02-14-2013, 10:14 PM
ghanja's Avatar
ghanja
Dragon
 
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
Default

*Edit: I became aware this reply was no longer necessary due to the below.
Reply With Quote
  #29  
Old 02-14-2013, 10:27 PM
ghanja's Avatar
ghanja
Dragon
 
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
Default

Quote:
Originally Posted by orionsun View Post
Don't worry Zeela, most of the people here don't actually want to do any work, they just keep asking the same question until somebody else does it for them.

ghanja doesnt even realize the reason you didn't post a diff is because you did your version of this in Lua.
Oh, you did know you were replying to me. However, let me quote you here just one last time (you are obviously trolling) in case you decide to edit.

Let me just say, this response of yours is, well, shows your ass. Good day sir.
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: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