Question about Events and NPC's
Okay so I have no idea if this is the proper place to post this for the second part of my question but here goes.
First question is, is there some type of sub EVENT for when someone equips any piece of armor? I looked on the QuestTutorial and I checked on the Google Code and I can't find anything about it. The reason I ask is I am looking for a EVENT that will allow me to check what that piece of armor is they equipped and then send them a client message or well anything. Second question is, anytime I put a NPC's HP's to anything over 2,147,483,647 the NPC's HP's will go negative. I thought this was something to do with the way the source calculated the hp but I ain't too great with c++ so I wouldn't know where to look or even how to fix this problem. Thus my question, is it possible to make it so I can set an NPC's HP's to over 2,147,483,647 without it going negative? Any help would be greatly appreciated =) Thanks in advance. |
Quote:
|
Ah gotcha kinda figured, any chance you can point me in the right direction of where to mod it in the source? I looked at mob.h and mob.cpp but didn't see any places that stood out. And thanks for the quick reply!
|
I'm afraid if you don't know how to find it already then anything I could say to you here is unlikely to enlighten you.
That said, mob.h, line 836: Code:
int32 cur_hp; You might want to ask yourself first if maybe 2.1 BILLION hit points is enough and if whatever you are trying to achieve could be done a different way to work within that limitation. |
Thanks man, I was actually looking at that and trying to figure out what would best work to make it not go negative. I was honestly hoping there was another area I had missed because I had modded those to 64 bit integers. After I edited all the appropriate places and recompiled(with a successful compile) I tried it and I had the same result of the neg HP's my only guess is that I missed the place where it stores the HP.
But again thank you very much sir! |
I have an update. I am now able to make it so the NPC's HP's don't go negative but they won't go past 2,147,483,647 HP's. I changed the int on the table to support the bigger numbers. Anyone have any idea why it won't go past that? I think I'm on the right track seeing as it doesn't go negative anymore =D Again any help would be greatly appreciated, thanks in advance.
|
That's the limit of a signed int. Even if you change the value in the tables, there is still plenty of code where it would need to be changed as well. However, that too isn't taking into consideration of the client itself, which may not support anything 'bigger' than a signed int (i.e. int64 signed/unsigned, etc.).
My advice, increase the mitigation (AC, etc.) of the NPC to make it tougher to bring down it's HP, rather than just making a grossly large number of HP. *Edit: But I see lersxt2112 already gave you the same (essentially - he wanted to get you thinking) sound advice. |
I have increased the ac to insane numbers, only problem is if the AC gets too high it makes the player unable to hit the monsters thus why I wanted to increase the HP cap, thanks again.
|
Sorry for the double post I just realized how I made that sound, I did edit the source as well not just the table.
|
Quote:
|
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.
|
It seems like you may have selectively read my post. You may have changed the actual variable the data is stored in, but did you change everywhere that value is manipulated either directly or through accessors like GetHP()? Like I said, it's not a small task.
|
Yes sir, I spent a good 3 hours going through and making sure that anything related to GetHP() was set to int64 and it just won't go higher than 2.14bil. Again my c++ isn't that great but I did look through every place I could think of that would set the NPC's HP's and I changed them to int64 instead of int32.
These are the places I edited. Maybe I missed a place? Code:
Mob.h |
How are you setting the HP to greater than 2.14 billion? A # command?
How are you determining whether or not the HP is greater than 2.14 billion? A log statement? Those need to be updated to accept/print a larger datatype as well. |
I am setting the hp to greater than 2.14 billion manually in the npc_types table with navicat. I set it at 4bil just to see if it would go over the cap. The table accepts it which is great. The NPC doesn't.
I used #showstats to look at what the NPC's HP's are. I then used #damage 1000000000 to be sure what the #showstats was showing was correct. On the show stats its weird, it will show the HP at 2.14bil but it will show the MAX hp as 0, not sure why that is. When I do #damage 1000000000 it takes the NPC's HP's to 53% telling me that the NPC's HP's isn't even close to the 4bil I set it to. |
All times are GMT -4. The time now is 10:04 PM. |
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.