|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quests::Q&A This is the quest support section |
02-13-2013, 09:51 PM
|
Demi-God
|
|
Join Date: Aug 2010
Posts: 1,743
|
|
Guess you missed some spots then. Good luck.
|
02-14-2013, 05:04 PM
|
Fire Beetle
|
|
Join Date: Jan 2013
Location: In the USA
Posts: 15
|
|
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
|
|
|
|
02-14-2013, 05:29 PM
|
Hill Giant
|
|
Join Date: Jun 2012
Posts: 216
|
|
If just making the NPC heal up at certain points or similar is totally not an option...
Quote:
Originally Posted by Derision
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
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.
|
|
|
|
02-14-2013, 05:49 PM
|
|
Dragon
|
|
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
|
|
Quote:
Originally Posted by Zaela_S
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.
|
02-14-2013, 06:18 PM
|
Fire Beetle
|
|
Join Date: Jan 2013
Location: In the USA
Posts: 15
|
|
@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.
|
|
|
|
02-14-2013, 06:58 PM
|
Hill Giant
|
|
Join Date: Jun 2012
Posts: 216
|
|
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.
|
|
|
|
02-14-2013, 08:09 PM
|
Banned
|
|
Join Date: May 2009
Location: USA
Posts: 22
|
|
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.
|
02-14-2013, 08:21 PM
|
Fire Beetle
|
|
Join Date: Jan 2013
Location: In the USA
Posts: 15
|
|
@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.
|
02-14-2013, 08:28 PM
|
|
Dragon
|
|
Join Date: Dec 2009
Posts: 719
|
|
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;
|
|
|
|
02-14-2013, 08:41 PM
|
Demi-God
|
|
Join Date: Aug 2010
Posts: 1,743
|
|
Quote:
Originally Posted by SavageDeath
@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.
|
|
|
|
02-14-2013, 08:43 PM
|
Banned
|
|
Join Date: May 2009
Location: USA
Posts: 22
|
|
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.
|
|
|
|
02-14-2013, 08:56 PM
|
Fire Beetle
|
|
Join Date: Jan 2013
Location: In the USA
Posts: 15
|
|
Quote:
Originally Posted by lerxst2112
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.
|
|
|
|
02-14-2013, 10:14 PM
|
|
Dragon
|
|
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
|
|
*Edit: I became aware this reply was no longer necessary due to the below.
|
02-14-2013, 10:27 PM
|
|
Dragon
|
|
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
|
|
Quote:
Originally Posted by orionsun
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.
|
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 09:31 AM.
|
|
|
|
|
|
|
|
|
|
|
|
|