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

Development::Tools 3rd Party Tools for EQEMu (DB management tools, front ends, etc...)

Reply
 
Thread Tools Display Modes
  #1  
Old 06-15-2014, 06:52 AM
Weldarr
Sarnak
 
Join Date: Oct 2005
Posts: 45
Default

Quote:
Originally Posted by Zaela_S View Post
So long as I'm talking to myself here, I suspect the same would be true of NPC models, at least the non-built-in-global ones. Will be interesting to see if I get around to making an animated model importer.

Zaela, you can definitely do this with the older graphic animations. I have been able to manually overwrite older graphics using the same identifier.





Both of these use the old akheva identifiers (akf, akm) and were manually edited to use the newer EQLive akhevan graphics (identifiers; ahm, ahf). Also an interesting thing about some older models, is that many actually have male, female and neutral model types but only one or two of them have a graphic associated with them. (Old Akhevan Identifers: akf, akm, akn)

This is the model identifier list that I pulled from EQGraphicsDX9.dll for Titanium Client (other clients will have more on their respective lists):

Code:
HUM.HUF.KRB.FRY.CWR.ZMM.ZMF.MNR.EVE.SNK.SHL.MYG.KOR.GGY.FGP.DRC.DCM.DCF.CRL.CRH.ORK.CWG.FNG.KBD.WWF.FGT.SHD.LSQ.LSP.SEG.ASM.LVR.DRS.DRE.ANS.SPQ.TAR.PMA.SDR.MDR.BAS.LDR.KRN.GBN.DKE.DVS.CDR.MES.RKP.CNP.PRT.CRS.MAP.DBP.ROB.DBX.MNT.DDV.DSF.FRD.DMA.DDM.CHM.FRA.DSG.SCU.MUR.CLV.TGO.TLN.ISE.ISB.IWB.ILB.IFC.IBR.IHU.ICY.ILA.IEC.IWH.TTB.TMB.TAC.TWF.TGL.BON.CPT.RAK.TBL.VAS.CST.BRL.BOX.JKR.NIN.EEY.GLM.SDC.DRV.FGH.GBL.MMY.SKT.MMV.SYN.BGB.ROE.ROM.WUF.UVK.BVK.GVK.VEK.FUD.FSK.FMT.LGR.LGA.LUG.RPF.TPO.TVP.TPB.SPB.BTP.ZBC.SPD.RZM.AAM.BKN.UDF.WBU.EFE.WRB.VAL.QZT.PAF.KRK.WRU.WRW.SCE.STF.SMA.SVO.SKR.SSA.STA.PBR.TMT.PHX.CRB.ONT.GTD.XEG.RTH.UDK.MAR.ZEB.NMP.FMP.EMP.AMP.VAZ.TAZ.RAZ.NMH.NPT.TRW.FEN.SAR.HSS.MOI.GGL.BRV.KAR.NMG.CWB.GLC.BRC.JUB.STR.WMP.PUS.BUU.BUB.LEP.KOP.MAL.NMW.TIN.TRQ.SLG.NBT.CRO.VEG.TRT.TBU.BTX.SRG.DSB.GOJ.SKB.CLB.CLG.SRO.TMR.WRF.TRN.NYM.LUJ.SER.MUH.SOW.SPR.NET.GAL.SHR.SRV.SNN.LCR.ZEL.SCH.SGR.VOL.FUG.TEG.THO.WET.AEL.EEL.RNB.OWB.KHA.ECS.VAC.UNB.RHP.SKN.RON.STU.WLM.OTM.FSG.HIP.RGM.SBU.DIW.SUC.SED.SGO.RAP.MEP.IKG.DEV.WYV.FDR.BER.ISC.BAC.SSN.GOO.BRN.RAL.TUN.SOL.VST.TRK.FGI.DML.YET.KGO.XAL.RHI.MOS.LYC.DLK.SRW.SCR.EYE.DJI.PEG.UNI.INN.DRU.GRG.WOE.SEA.CLA.GSP.DRI.HAR.MER.WAS.MAM.SWO.LEE.KED.GOR.FRT.EFR.DER.DEN.DIA.COC.CAZ.LIZ.ALL.SPE.SCA.REA.ORC.FUN.DRK.BIX.SHA.TRE.WIL.GIA.WER.BEH.FRO.RTN.BTN.RAT.BAT.ELE.PIR.CUB.FIS.SNA.TNF.TNM.SEF.SEM.LMF.LMM.MMF.MMM.IZF.IZM.IWF.IWM.TZF.TZM.EPF.EPM.HPF.HPM.OPF.OPM.DPF.DPM.GPF.GPM.TSF.TSM.FBF.FBM.TBF.TBM.REF.REN.REM.TPF.TPN.TPM.GSF.GSN.GSM.AKF.AKN.AKM.SDM.SHM.HSF.HSN.HSM.VPF.VPM.GMF.GMN.WAL.VRM.SIF.SIN.SIM.DRF.DRM.IVF.IVM.CEF.CEN.CEM.GEF.GEM.GDF.GDM.GFF.GFM.MIF.MIM.DVF.DVM.VSF.VSM.KAN.GAR.HLF.HLM.CLN.LIM.EGF.EGM.NGF.NGM.FPF.FPM.PIM.SPI.TEF.TEN.FAF.FAM.BRF.BRM.BGF.ZOF.ZOM.HHF.HHM.AVI.GOF.WOF.WOL.WOM.QCF.QCN.QCM.BEA.GOB.GNN.DRA.SHP.LAUNCHM.LAUNCH..DWF.DWM.OGF.OGM.ELF.ELM.BAF.BAM.DAF.DAM.HOF.HOM.HIF.HIM.HAF.HAM.ERF.ERM.IKM.KEF.KEM.FRM.PRE.SHIP....BOAT....PPOINT..MINIPOM200
Thing to note: the list counts down from KRB as the first real graphic as Race #475

I would assume it to be possible to add a dll hook/inject in that would allow us to make our own identifiers, but that is beyond my expertise level and something that I have never honestly tried. Maybe someone with a bit more knowledge on that front could look into it.

- Vaion
The Hidden Forest
Reply With Quote
  #2  
Old 06-15-2014, 11:39 AM
Zaela_S
Hill Giant
 
Join Date: Jun 2012
Posts: 216
Default

Quote:
Originally Posted by Weldarr View Post
Zaela, you can definitely do this with the older graphic animations. I have been able to manually overwrite older graphics using the same identifier.
Makes sense.

Quote:
Originally Posted by Weldarr View Post
I would assume it to be possible to add a dll hook/inject in that would allow us to make our own identifiers, but that is beyond my expertise level and something that I have never honestly tried. Maybe someone with a bit more knowledge on that front could look into it.
Saw someone do this just the other day! Beyond me too, though... Probably a bit heavy-duty for general use anyway.


Anywho: added region types to this tool since they had apparently been figured out already.
Reply With Quote
  #3  
Old 06-15-2014, 04:01 PM
Akkadius's Avatar
Akkadius
Administrator
 
Join Date: Feb 2009
Location: MN
Posts: 2,071
Default

Secrets has quite a bit of dll injection experience.
Reply With Quote
  #4  
Old 06-15-2014, 06:52 PM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,450
Default

There's a part of the eqgame.exe that deals with exactly what you are trying to do.

The identifier for NPCs, as you have noted in your disassembly, can be a string that identifies a specific model and its parts.

For example, HUM refers to human male models. So in disassembly, we have pseudocode that looks like this in the class constructor:

Code:
  CRaceGenderInfoManager::AddRaceGender(pCRaceGenderInfoManager, 1, 0, "HUM", 4, 522);
 CRaceGenderInfoManager::AddRaceGender(pCRaceGenderInfoManager, 1, 1, "HUF", 4, 522);
*The first parameter is the global instance of CRaceGenderInfoManager.
*The second parameter is the ID of the race.
*The third parameter determines the gender (0, 1, 2) of the NPC. The fourth is a bitmask that tells the client what the latest model file format will be for this NPC. I'm unsure of its purpose but all EQG formats have 8 as the bitmask. Basically, it's for animations in some way.
*The fifth parameter is optional and contains fallback race animations in case those listed for the model fail to load. For Humans and some other races, it is 522 (Drakkin) for the fallback animations.

You can find the class constructor in the UF/SoD client by searching for "SHIP" and it's the only reference of the string "SHIP" in the defined strings list in IDA.

The animations are linked to the base model, and as such there's no way to load them from the client I believe. The animation data is stored in the wld file for S3Ds.

Yes, it is possible to add VoA+ models to the UF client. You'd just copy the lines from disassembly to a DLL to add the NPC models from the later clients.
Hook CRaceGenderInfoManager::CRaceGenderInfoManager() (the constructor that adds the races) and after it's done constructing, add in the races you'd like while using the instance returned from the thisptr.

Hope that gives some insight.
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 06:42 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