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

03-23-2010, 08:10 PM
|
Opcode Ninja
|
|
Join Date: Mar 2009
Location: San francisco
Posts: 426
|
|
i'll throw in my 2 cent's SOD digital download works with
login server and can get into the game with no problems might
try using OP_SendLoginInfo=0x6c3c is why you are stuck at the
login screen. The zone's need to be added there is a file posted
on another website site with the list done for you and all the
opcodes all you have do is surf the web on another websites.
Underfoot works with just a couple of opcodes changed.
0 2243 qeynos South Qeynos
2 2244 qeynos2 North Qeynos
3 2245 qrg Surefall Glade
4 2246 qeytoqrg Qeynos Hills
6 2248 highkeep HighKeep
8 2249 freportn North Freeport
9 2250 freportw West Freeport
10 2251 freporte East Freeport
11 2252 runnyeye Clan RunnyEye
12 2253 qey2hh1 West Karana
13 2254 northkarana North Karana
14 2255 southkarana South Karana
15 2256 eastkarana East Karana
16 2257 beholder Gorge of King Xorbb
17 2258 blackburrow BlackBurrow
18 2259 paw Infected Paw
19 2260 rivervale Rivervale
20 2261 kithicor Kithicor Forest
21 2262 commons West Commonlands
22 2263 ecommons East Commonlands
408 616 commonlands Commonlands
409 2310 oceanoftears Ocean Of Tears
410 2261 kithforest Kithicor Forest
411 2277 befallenb Befallen
412 2248 highpasskeep HighKeep
413 2287 innothuleb Innothule Swamp
414 2279 toxxulia Toxxulia Forest
415 2274 mistythicket Misty Thicket
23 2264 erudnint Erudin Palace
24 2265 erudnext Erudin
25 2266 nektulos Nektulos Forest
26 2267 cshome Sunset Home
27 2268 lavastorm Lavastorm Mountains
28 2269 nektropos Nektropos
29 2270 halas Halas
30 2271 everfrost Everfrost Peaks
31 2276 soldunga Solusek's Eye
32 2277 soldungb Nagafen's Lair
33 2274 misty Misty Thicket
34 2275 nro North Ro
35 2276 sro South Ro
36 2277 befallen Befallen
37 2278 oasis Oasis of Marr
38 2279 tox Toxxulia Forest
39 2280 hole The Ruins of Old Paineel
40 2281 neriaka Neriak Foreign Quarter
41 2282 neriakb Neriak Commons
42 2283 neriakc Neriak Third Gate
43 2284 neriakd Neriak Palace
44 2285 najena Najena
45 2286 qcat Qeynos Catacombs
46 2287 innothule Innothule Swamp
47 2288 feerrott The Feerrott
48 2289 cazicthule Cazic-Thule
49 2290 oggok Oggok
50 2291 rathemtn Mountains of Rathe
51 2292 lakerathe Lake Rathetear
52 2293 grobb Grobb
53 2294 aviak Aviak Village
54 2295 gfaydark Greater Faydark
55 2296 akanon Ak'Anon
56 2297 steamfont Steamfont Mountains
57 2298 lfaydark Lesser Faydark
58 2299 crushbone Clan Crushbone
59 2300 mistmoore Castle Mistmoore
60 2308 kaladima Kaladim
61 2303 felwithea Felwithe
62 2303 felwitheb Felwithe
63 2304 unrest Estate of Unrest
64 2305 kedge Kedge Keep
65 2306 guktop Upper Guk
66 2307 gukbottom Lower Guk
67 2308 kaladimb Kaladim
68 2309 butcher Butcherblock Mountains
69 2310 oot Ocean of Tears
70 2311 cauldron Dagnor's Cauldron
71 2312 airplane Plane of Sky
72 2313 fearplane Plane of Fear
73 2314 permafrost Permafrost Keep
74 2315 kerraridge Kerra Isle
75 2316 paineel Paineel
76 2317 hateplane The Plane of Hate
77 2401 arena The Arena
78 2319 fieldofbone The Field of Bone
79 2320 warslikswood Warsliks Wood
80 2321 soltemple Temple of Solusek Ro
81 2322 droga Temple of Droga
82 2323 cabwest West Cabilis
83 2324 swampofnohope Swamp of No Hope
84 2325 firiona Firiona Vie
85 2326 lakeofillomen Lake of Ill Omen
86 2327 dreadlands Dreadlands
87 2328 burningwood Burning Woods
88 2329 kaesora Kaesora
89 2330 sebilis Old Sebilis
90 2331 citymist City of Mist
91 2332 skyfire Skyfire Mountains
92 2333 frontiermtns Frontier Mountains
93 2334 overthere The Overthere
94 2335 emeraldjungle The Emerald Jungle
95 2336 trakanon Trakanon's Teeth
96 2337 timorous Timorous Deep
97 2338 kurn Kurn's Tower
98 2339 erudsxing Erud's Crossing
100 2340 stonebrunt Stonebrunt Mountains
101 2341 warrens The Warrens
102 2342 karnor Karnor's Castle
103 2343 chardok Chardok
104 2344 dalnir Dalnir
105 2345 charasis Howling Stones
106 2346 cabeast East Cabilis
107 2347 nurga Mines of Nurga
108 2348 veeshan Veeshan's Peak
109 2349 veksar Veksar
110 2350 iceclad Iceclad Ocean
111 2351 frozenshadow Tower of Frozen Shadow
112 2352 velketor Velketor's Labyrinth
113 2353 kael Kael Drakkal
114 2354 skyshrine Skyshrine
115 2355 thurgadina Thurgadin
116 2356 eastwastes Eastern Wastes
117 2357 cobaltscar Cobalt Scar
118 2358 greatdivide Great Divide
119 2359 wakening The Wakening Land
120 2360 westwastes Western Wastes
121 2361 crystal Crystal Caverns
123 2362 necropolis Dragon Necropolis
124 2363 templeveeshan Temple of Veeshan
125 2364 sirens Siren's Grotto
126 2365 mischiefplane Plane of Mischief
127 2366 growthplane Plane of Growth
128 2367 sleeper Sleeper's Tomb
129 2368 thurgadinb Icewell Keep
130 2369 erudsxing2 Marauder's Mire
150 2370 shadowhaven Shadow Haven
151 2371 bazaar The Bazaar
152 2372 nexus The Nexus
153 2373 echo Echo Caverns
154 2374 acrylia Acrylia Caverns
155 2375 sharvahl Shar Vahl
156 2376 paludal Paludal Caverns
157 2377 fungusgrove Fungus Grove
158 2378 vexthal Vex Thal
159 2379 sseru Sanctus Seru
160 2380 katta Katta Castellum
161 2381 netherbian Netherbian Lair
162 2382 ssratemple Ssraeshza Temple
163 2383 griegsend Grieg's End
164 2384 thedeep The Deep
165 2385 shadeweaver Shadeweaver's Thicket
166 2386 hollowshade Hollowshade Moor
167 2387 grimling Grimling Forest
168 2388 mseru Marus Seru
169 2389 letalis Mons Letalis
170 2390 twilight The Twilight Sea
171 2391 thegrey The Grey
172 2392 tenebrous The Tenebrous Mountains
173 2393 maiden The Maiden's Eye
174 2394 dawnshroud Dawnshroud Peaks
175 2395 scarlet The Scarlet Desert
176 2396 umbral The Umbral Plains
179 2397 akheva Akheva Ruins
180 2401 arena2 The Arena
181 2398 jaggedpine The Jaggedpine Forest
182 5803 nedaria Nedaria's Landing
187 5827 shadowrest Shadowrest
183 2399 tutorial Tutorial Zone
188 5856 tutoriala The Mines of Gloomingdeep
189 5856 tutorialb The Mines of Gloomingdeep
190 2301 clz Loading
184 2301 load Loading
185 2301 load2 Loading
996 0 arttest Art Testing Domain
999 0 apprentice Designer Apprentice
202 9004 poknowledge Plane of Knowledge
203 9005 potranquility Plane of Tranquility
200 9006 codecay Ruins of Lxanvom
201 9007 pojustice Plane of Justice
204 9008 ponightmare Plane of Nightmare
221 9009 nightmareb Lair of Terris Thule
205 9010 podisease Plane of Disease
206 9011 poinnovation Plane of Innovation
207 9012 potorment Plane of Torment
208 9013 povalor Plane of Valor
209 9014 bothunder Torden, The Bastion of Thunder
210 9015 postorms Plane of Storms
211 9016 hohonora Halls of Honor
220 9017 hohonorb Temple of Marr
212 9018 solrotower Solusek Ro's Tower
213 9019 powar Plane of War
214 9020 potactics Drunder, Fortress of Zek
215 9021 poair Eryslai, the Kingdom of Wind
216 9022 powater Reef of Coirnav
217 9023 pofire Doomfire, The Burning Lands
218 9024 poeartha Vegarlson, The Earthen Badlands
222 9025 poearthb Stronghold of the Twelve
219 9026 potimea Plane of Time
223 9026 potimeb Plane of Time
226 4046 torgiran Torgiran Mines
227 4047 nadox Crypt of Nadox
224 4048 gunthak Gulf of Gunthak
225 4049 dulak Dulak's Harbor
228 4050 hatesfury Hate's Fury, The Scorned Maiden
186 2317 hateplaneb The Plane of Hate
277 598 chardokb The Halls of Betrayal
278 600 soldungc The Caverns of Exile
229 9086 guka The Cauldron of Lost Souls
230 9114 ruja The Bloodied Quarries
231 9124 taka The Sunken Library
232 9094 mira The Silent Gallery
233 9104 mmca The Forlorn Caverns
234 9087 gukb The Drowning Crypt
235 9115 rujb The Halls of War
236 9125 takb The Shifting Tower
237 9095 mirb The Maw of the Menagerie
238 9105 mmcb The Dreary Grotto
239 9088 gukc The Ancient Aqueducts
240 9116 rujc The Wind Bridges
241 9126 takc The Fading Temple
242 9096 mirc The Spider Den
243 9106 mmcc The Asylum of Invoked Stone
244 9089 gukd The Mushroom Grove
245 9117 rujd The Gladiator Pits
246 9127 takd The Royal Observatory
247 9097 mird The Hushed Banquet
248 9107 mmcd The Chambers of Eternal Affliction
249 9090 guke The Foreboding Prison
250 9118 ruje The Drudge Hollows
251 9128 take The River of Recollection
252 9098 mire The Frosted Halls
253 9108 mmce The Sepulcher of the Damned
254 9091 gukf The Chapel of the Witnesses
255 9119 rujf The Fortified Lair of the Taskmasters
256 9129 takf The Sandfall Corridors
257 9099 mirf The Forgotten Wastes
258 9109 mmcf The Ritualistic Summoning Grounds
259 9092 gukg The Root Garden
260 9120 rujg The Hidden Vale
261 9130 takg The Balancing Chamber
262 9100 mirg The Heart of the Menagerie
263 9110 mmcg The Cesspits of Putrescence
264 9093 gukh The Accursed Sanctuary
265 9121 rujh The Blazing Forge
266 9131 takh The Sweeping Tides
267 9101 mirh The Morbid Laboratory
268 9111 mmch The Aisles of Blood
269 9122 ruji The Arena of Chance
270 9132 taki The Antiquated Palace
271 9102 miri The Theater of Imprisoned Horrors
272 9112 mmci The Halls of Sanguinary Rites
273 9123 rujj The Barracks of War
274 9133 takj The Prismatic Corridors
275 9103 mirj The Grand Library
276 9113 mmcj The Infernal Sanctuary
77 2401 arena The Arena
279 3385 abysmal Abysmal Sea
280 3386 natimbi Natimbi, The Broken Shores
281 3387 qinimi Qinimi, Court of Nihilia
282 3388 riwwi Riwwi, Coliseum of Games
283 3389 barindu Barindu, Hanging Gardens
284 3390 ferubi Ferubi, Forgotten Temple of Taelosia
285 3391 snpool Sewers of Nihilia, Pool of Sludge
286 3392 snlair Sewers of Nihilia, Lair of Trapped Ones
287 3393 snplant Sewers of Nihilia, Purifying Plant
288 3394 sncrematory Sewers of Nihilia, the Crematory
289 3395 tipt Tipt, Treacherous Crags
290 3396 vxed Vxed, The Crumbling Caverns
291 3397 yxtta Yxtta, Pulpit of Exiles
292 3398 uqua Uqua, The Ocean God Chantry
293 3399 kodtaz Kod'Taz, Broken Trial Grounds
294 3447 ikkinz Ikkinz, Chambers of Destruction
296 3448 inktuta Inktu`Ta, The Unmasked Chapel
297 3449 txevu Txevu, Lair of the Elite
298 3450 tacvi Tacvi, Seat of the Slaver
295 3451 qvic Qvic, Prayer Grounds of Calling
299 5826 qvicb Qvic, the Hidden Vault
300 5889 wallofslaughter Wall of Slaughter
301 5890 bloodfields The Bloodfields
302 5891 draniksscar Dranik's Scar
303 5892 causeway Nobles' Causeway
304 5898 chambersa Muramite Proving Grounds
305 5898 chambersb Muramite Proving Grounds
306 5898 chambersc Muramite Proving Grounds
307 5898 chambersd Muramite Proving Grounds
308 5898 chamberse Muramite Proving Grounds
309 5898 chambersf Muramite Proving Grounds
316 5893 provinggrounds Muramite Proving Grounds
317 5894 anguish Asylum of Anguish
318 5899 dranikhollowsa Dranik's Hollows
319 5899 dranikhollowsb Dranik's Hollows
320 5899 dranikhollowsc Dranik's Hollows
321 5899 dranikhollowsd Dranik's Hollows
322 5899 dranikhollowse Dranik's Hollows
323 5899 dranikhollowsf Dranik's Hollows
324 5899 dranikhollowsg Dranik's Hollows
325 5899 dranikhollowsh Dranik's Hollows
326 5899 dranikhollowsi Dranik's Hollows
327 5899 dranikhollowsj Dranik's Hollows
328 5900 dranikcatacombsa Catacombs of Dranik
329 5900 dranikcatacombsb Catacombs of Dranik
330 5900 dranikcatacombsc Catacombs of Dranik
331 5901 draniksewersa Sewers of Dranik
332 5901 draniksewersb Sewers of Dranik
333 5901 draniksewersc Sewers of Dranik
334 5895 riftseekers Riftseekers' Sanctum
335 5896 harbingers Harbingers' Spire
336 5897 dranik The Ruined City of Dranik
998 5158 fhalls The Forgotten Halls
337 5160 broodlands The Broodlands
338 5161 stillmoona Stillmoon Temple
339 5162 stillmoonb The Ascent
340 5163 thundercrest Thundercrest Isles
341 5164 delvea Lavaspinner's Lair
342 5165 delveb Tirranun's Delve
343 5166 thenest The Accursed Nest
344 6112 guildlobby The Guild Lobby
345 6111 guildhall Guild Hall
346 6116 barter The Barter Hall
347 5170 illsalin Ruins of Illsalin
348 5171 illsalina Imperial Bazaar
349 5172 illsalinb Temple of the Korlach
350 5173 illsalinc The Nargilor Pits
351 5174 dreadspire Dreadspire Keep
354 5175 drachnidhive The Hive
355 5176 drachnidhivea Living Larder
356 5177 drachnidhiveb Coven of the Skinwalkers
357 5178 drachnidhivec Queen Sendaii's Lair
358 5179 westkorlach Stoneroot Falls
359 5180 westkorlacha Chambers of Xill
360 5181 westkorlachb Caverns of the Lost
361 5182 westkorlachc Lair of the Korlach
362 5183 eastkorlach Undershore
363 5184 eastkorlacha Snarlstone Dens
364 5185 shadowspine Shadowspine
365 5186 corathus Corathus Creep
366 5187 corathusa Sporali Caverns
367 5188 corathusb Corathus Lair
368 5189 nektulosa Shadowed Grove
369 3630 arcstone Arcstone
370 3631 relic Relic
371 3632 skylance Skylance
372 3633 devastation The Devastation
373 3634 devastationa The Seething Wall
374 3635 rage Sverag, Stronghold of Rage
375 3636 ragea Razorthorn, Tower of Sullon Zek
376 3637 takishruins Ruins of Takish-Hiz
377 3638 takishruinsa The Root of Ro
378 3639 elddar The Elddar Forest
379 3640 elddara Tunare's Shrine
380 3641 theater Theater of Blood
381 3642 theatera Deathknell, Tower of Dissonance
382 3643 freeporteast East Freeport
383 3644 freeportwest West Freeport
384 3645 freeportsewers Freeport Sewers
385 3646 freeportacademy Academy of Arcane Sciences
386 3647 freeporttemple Temple of Marr
387 3648 freeportmilitia Freeport Militia House
388 3649 freeportarena Arena
389 3650 freeportcityhall City Hall
390 3651 freeporttheater Theater
391 3652 freeporthall Hall of Truth
392 2275 northro North Ro
393 2276 southro South Ro
394 3675 crescent Crescent Reach
395 3676 moors Blightfire Moors
396 3677 stonehive Stone Hive
397 3678 mesa Goru`kar Mesa
398 3679 roost Blackfeather Roost
399 3680 steppes The Steppes
400 3681 icefall Icefall Glacier
401 3682 valdeholm Valdeholm
402 3683 frostcrypt Frostcrypt, Throne of the Shade King
403 3684 sunderock Sunderock Springs
404 3685 vergalid Vergalid Mines
405 3686 direwind Direwind Cliffs
406 3687 ashengate Ashengate, Reliquary of the Scale
407 2247 highpasshold Highpass Hold
416 617 kattacastrum Katta Castrum
417 618 thalassius Thalassius, the Coral Keep
418 619 atiiki Jewel of Atiiki
419 620 zhisza Zhisza, the Shissar Sanctuary
420 621 silyssar Silyssar, New Chelsith
421 622 solteris Solteris, the Throne of Ro
422 623 barren Barren Coast
423 624 buriedsea The Buried Sea
424 625 jardelshook Jardel's Hook
425 626 monkeyrock Monkey Rock
426 627 suncrest Suncrest Isle
427 628 deadbone Deadbone Reef
428 629 blacksail Blacksail Folly
429 630 maidensgrave Maiden's Grave
430 631 redfeather Redfeather Isle
431 8057 shipmvp The Open Sea
432 8057 shipmvu The Open Sea
433 8057 shippvu The Open Sea
434 8057 shipuvu The Open Sea
435 8057 shipmvm The Open Sea
436 652 mechanotus Fortress Mechanotus
437 653 mansion Meldrath's Majestic Mansion
438 654 steamfactory The Steam Factory
439 655 shipworkshop S.H.I.P. Workshop
440 656 gyrospireb Gyrospire Beza
441 657 gyrospirez Gyrospire Zeka
442 658 dragonscale Dragonscale Hills
443 659 lopingplains Loping Plains
444 660 hillsofshade Hills of Shade
445 661 bloodmoon Bloodmoon Keep
446 662 crystallos Crystallos, Lair of the Awakened
447 663 guardian The Mechamatic Guardian
449 665 cryptofshade Crypt of Shade
450 671 dragonscalea Tinmizer's Wunderwerks
451 672 dragonscaleb Deepscar's Den
452 1216 oldfieldofbone Field of Scale
478 1216 oldfieldofboneb Field of Scale
453 1216 oldkaesoraa Kaesora Library
454 1216 oldkaesorab Hatchery Wing
455 1216 oldkurn Kurn's Tower
456 1216 oldkithicor Bloody Kithicor
457 1216 oldcommons Old Commonlands
458 1216 oldhighpass Highpass Hold
459 1216 thevoida The Void
460 1216 thevoidb The Void
461 1216 thevoidc The Void
462 1216 thevoidd The Void
463 1216 thevoide The Void
464 1216 thevoidf The Void
465 1216 thevoidg The Void
466 1216 oceangreenhills Oceangreen Hills
467 1216 oceangreenvillage Oceangreen Village
468 1216 oldblackburrow Blackburrow
469 1216 bertoxtemple Temple of Bertoxxulous
470 1216 discord Korafax, Home of the Riders
471 1216 discordtower Citadel of the Worldslayer
472 1216 oldbloodfield Old Bloodfields
473 1216 precipiceofwar The Precipice of War
474 1216 olddranik City of Dranik
475 1216 toskirakk Toskirakk
476 1216 korascian Korascian Warrens
477 1216 rathechamber Rathe Council Chambers
448 2297 steamfontmts Steamfont Mountains
479 1216 crafthalls Ngreth's Den
480 1216 brellsrest Brell's Rest
481 1216 fungalforest Fungal Forest
482 1216 underquarry The Underquarry
483 1216 coolingchamber The Cooling Chamber
484 1216 shiningcity Kernagir, The Shining City
485 1216 arthicrex Arthicrex
486 1216 foundation The Foundation
487 1216 lichencreep Lichen Creep
488 1216 pellucid Pellucid Grotto
489 1216 stonesnake Volska's Husk
490 1216 brellstemple Brell's Temple
491 1216 convorteum The Convorteum
492 1216 brellsarena Brell's Arena
493 1216 weddingchapel Wedding Chapel
494 1216 weddingchapeldark Wedding Chapel
495 1216 dragoncrypt Lair of the Fallen
700 1216 feerrott2 The Feerrott
701 1216 thulehouse1 Thule House 1
702 1216 thulehouse2 Thule House 2
703 1216 housegarden House Garden
704 1216 houselibrary House Library
705 1216 well Well
706 1216 fallen Fallen
707 1216 morellcastle Morell's Castle
708 1216 morelltower Morell's Tower
709 1216 alkabormare Al'Kabor's Nightmare
710 1216 miragulmare Miragul's Nightmare
711 1216 thuledream Thule's Dream
|
 |
|
 |

03-23-2010, 08:25 PM
|
Administrator
|
|
Join Date: Sep 2006
Posts: 1,348
|
|
I was going to look at login when I can finish downloading this, I have a good idea of what probably needs to be done.
|
 |
|
 |

03-23-2010, 09:00 PM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Sounds like good news, KLS  Hopefully once it is figured out, we can get Rogean to patch the Login Server to work with the new clients as well. Or, do you have access to the Public Login Server host to do it yourself? I forget if Rogean ever gave access to anyone else yet or if it is still just him with access to it.
Thanks for the info, Oscargrouch. The OP_SendLoginInfo has nothing to do with why we can't get into the Login Server as far as I know, though. That packet is for logging into the actual servers once you get into the server list. At this point, we can't even get to the server list yet, but it seems like it won't be that much longer before we can. Once we can, I can get the rest of the opcodes up to date for SoD in a few hours. Then, it will just be a matter of adjusting a few structs and looking for any issues with other structs or encodes/decodes. I don't suspect this will be very hard at all.
Also, I am sure you are referencing the ShowEQ website/svn to get the opcodes and structs. I already mentioned that is where I plan to get the structs from that we will need (or at very least the correct packet sizes). They may have some opcodes we could use there, but as I already said, opcodes are not an issue at all. Plus, the ShowEQ team only cares about having a very limited number of accurate Opcodes, so there are hundreds that would be missing if we only used what they have as a reference. Still great info there though.
As for working with Underfoot, I am sure it probably wouldn't be that much off from what SoD is. So, if SoD is easy to get going, I may even give a shot at Underfoot once SoD is all situated. I don't want to get ahead of myself here, but the change to the LS for SoD should make it work with Underfoot as well, then it would again just be an easy opcode update and a few packet structs again and it would be working. Focusing on SoD solely for now, but just throwing that out there as a possibility sometime. It will probably be $39.99 until the next expansion comes out, so most people probably wouldn't get it anyway.
|
 |
|
 |
 |
|
 |

03-23-2010, 11:01 PM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Here is the everquest.h file from ShowEQ that should have useful structure sizes and fields for the SoD client:
Code:
/*
* everquest.h
*
* ShowEQ Distributed under GPL
* http://seq.sourceforge.net/
*/
/*
** Please be kind and remember to correctly re-order
** the values in here whenever you add a new item,
** thanks. - Andon
*/
/*
** Structures used in the network layer of Everquest
*/
#ifndef EQSTRUCT_H
#define EQSTRUCT_H
#include "config.h"
#ifdef __FreeBSD__
#include <sys/types.h>
#else
#include <stdint.h>
#endif
/*
** ShowEQ specific definitions
*/
// Statistical list defines
#define LIST_HP 0
#define LIST_MANA 1
#define LIST_STAM 2
#define LIST_EXP 3
#define LIST_FOOD 4
#define LIST_WATR 5
#define LIST_STR 6
#define LIST_STA 7
#define LIST_CHA 8
#define LIST_DEX 9
#define LIST_INT 10
#define LIST_AGI 11
#define LIST_WIS 12
#define LIST_MR 13
#define LIST_FR 14
#define LIST_CR 15
#define LIST_DR 16
#define LIST_PR 17
#define LIST_AC 18
#define LIST_ALTEXP 19
#define LIST_MAXLIST 20
/*
** MOB Spawn Type
*/
#define SPAWN_PLAYER 0
#define SPAWN_NPC 1
#define SPAWN_PC_CORPSE 2
#define SPAWN_NPC_CORPSE 3
#define SPAWN_NPC_UNKNOWN 4
#define SPAWN_DROP 6
#define SPAWN_DOOR 7
#define SPAWN_SELF 10
/*
** Diety List
*/
#define DEITY_UNKNOWN 0
#define DEITY_AGNOSTIC 396
#define DEITY_BRELL 202
#define DEITY_CAZIC 203
#define DEITY_EROL 204
#define DEITY_BRISTLE 205
#define DEITY_INNY 206
#define DEITY_KARANA 207
#define DEITY_MITH 208
#define DEITY_PREXUS 209
#define DEITY_QUELLIOUS 210
#define DEITY_RALLOS 211
#define DEITY_SOLUSEK 213
#define DEITY_TRIBUNAL 214
#define DEITY_TUNARE 215
#define DEITY_BERT 201
#define DEITY_RODCET 212
#define DEITY_VEESHAN 216
//Team numbers for Deity teams
#define DTEAM_GOOD 1
#define DTEAM_NEUTRAL 2
#define DTEAM_EVIL 3
#define DTEAM_OTHER 5
//Team numbers for Race teams
#define RTEAM_HUMAN 1
#define RTEAM_ELF 2
#define RTEAM_DARK 3
#define RTEAM_SHORT 4
#define RTEAM_OTHER 5
//Maximum limits of certain types of data
#define MAX_KNOWN_SKILLS 75
#define MAX_SPELL_SLOTS 10
#define MAX_KNOWN_LANGS 25
#define MAX_SPELLBOOK_SLOTS 400
#define MAX_GROUP_MEMBERS 6
#define MAX_BUFFS 25
#define MAX_GUILDS 1500
#define MAX_AA 359
#define MAX_BANDOLIERS 20
#define MAX_POTIONS_IN_BELT 5
#define MAX_TRIBUTES 5
#define MAX_DISCIPLINES 100
//Item Flags
#define ITEM_NORMAL 0x0000
#define ITEM_NORMAL1 0x0031
#define ITEM_NORMAL2 0x0036
#define ITEM_NORMAL3 0x315f
#define ITEM_NORMAL4 0x3336
#define ITEM_NORMAL5 0x0032
#define ITEM_NORMAL6 0x0033
#define ITEM_NORMAL7 0x0034
#define ITEM_NORMAL8 0x0039
#define ITEM_CONTAINER 0x7900
#define ITEM_CONTAINER_PLAIN 0x7953
#define ITEM_BOOK 0x7379
#define ITEM_VERSION 0xFFFF
// Item spellId no spell value
#define ITEM_SPELLID_NOSPELL 0xffff
// Item Field Count
#define ITEM_FIELD_SEPERATOR_COUNT 117
#define ITEM_CMN_FIELD_SEPERATOR_COUNT 102
//Combat Flags
#define COMBAT_MISS 0
#define COMBAT_BLOCK -1
#define COMBAT_PARRY -2
#define COMBAT_RIPOSTE -3
#define COMBAT_DODGE -4
#define PLAYER_CLASSES 16
#define PLAYER_RACES 15
/*
** Item Packet Type
*/
enum ItemPacketType
{
ItemPacketViewLink = 0x00,
ItemPacketMerchant = 0x64,
ItemPacketLoot = 0x66,
ItemPacketTrade = 0x67,
ItemPacketSummonItem = 0x6a,
ItemPacketWorldContainer = 0x6b
};
/*
** Item types
*/
enum ItemType
{
ItemTypeCommon = 0,
ItemTypeContainer = 1,
ItemTypeBook = 2
};
/*
** Chat Colors
*/
enum ChatColor
{
CC_Default = 0,
CC_DarkGrey = 1,
CC_DarkGreen = 2,
CC_DarkBlue = 3,
CC_Purple = 5,
CC_LightGrey = 6,
CC_User_Say = 256,
CC_User_Tell = 257,
CC_User_Group = 258,
CC_User_Guild = 259,
CC_User_OOC = 260,
CC_User_Auction = 261,
CC_User_Shout = 262,
CC_User_Emote = 263,
CC_User_Spells = 264,
CC_User_YouHitOther = 265,
CC_User_OtherHitYou = 266,
CC_User_YouMissOther = 267,
CC_User_OtherMissYou = 268,
CC_User_Duels = 269,
CC_User_Skills = 270,
CC_User_Disciplines = 271,
CC_User_Default = 273,
CC_User_MerchantOffer = 275,
CC_User_MerchantExchange = 276,
CC_User_YourDeath = 277,
CC_User_OtherDeath = 278,
CC_User_OtherHitOther = 279,
CC_User_OtherMissOther = 280,
CC_User_Who = 281,
CC_User_Yell = 282,
CC_User_NonMelee = 283,
CC_User_SpellWornOff = 284,
CC_User_MoneySplit = 285,
CC_User_Loot = 286,
CC_User_Random = 287,
CC_User_OtherSpells = 288,
CC_User_SpellFailure = 289,
CC_User_ChatChannel = 290,
CC_User_Chat1 = 291,
CC_User_Chat2 = 292,
CC_User_Chat3 = 293,
CC_User_Chat4 = 294,
CC_User_Chat5 = 295,
CC_User_Chat6 = 296,
CC_User_Chat7 = 297,
CC_User_Chat8 = 298,
CC_User_Chat9 = 299,
CC_User_Chat10 = 300,
CC_User_MeleeCrit = 301,
CC_User_SpellCrit = 302,
CC_User_TooFarAway = 303,
CC_User_NPCRampage = 304,
CC_User_NPCFurry = 305,
CC_User_NPCEnrage = 306,
CC_User_EchoSay = 307,
CC_User_EchoTell = 308,
CC_User_EchoGroup = 309,
CC_User_EchoGuild = 310,
CC_User_EchoOOC = 311,
CC_User_EchoAuction = 312,
CC_User_EchoShout = 313,
CC_User_EchoEmote = 314,
CC_User_EchoChat1 = 315,
CC_User_EchoChat2 = 316,
CC_User_EchoChat3 = 317,
CC_User_EchoChat4 = 318,
CC_User_EchoChat5 = 319,
CC_User_EchoChat6 = 320,
CC_User_EchoChat7 = 321,
CC_User_EchoChat8 = 322,
CC_User_EchoChat9 = 323,
CC_User_EchoChat10 = 324,
CC_User_UnusedAtThisTime = 325,
CC_User_ItemTags = 326,
CC_User_RaidSay = 327,
CC_User_MyPet = 328,
CC_User_DamageShield = 329,
};
/*
** Group Update actions
*/
enum GroupUpdateAction
{
GUA_Joined = 0,
GUA_Left = 1,
GUA_LastLeft = 6,
GUA_FullGroupInfo = 7,
GUA_MakeLeader = 8,
GUA_Started = 9,
};
/**
* Leadership AAs enum, used to index into leadershipAAs in charProfileStruct
*/
enum LeadershipAAIndex
{
groupMarkNPC = 0,
groupNPCHealth,
groupDelegateMainAssist,
groupDelegateMarkNPC,
groupUnknown4,
groupUnknown5,
groupInspectBuffs,
groupUnknown7,
groupSpellAwareness,
groupOffenseEnhancement,
groupManaEnhancement,
groupHealthEnhancement,
groupHealthRegeneration,
groupFindPathToPC,
groupHealthOfTargetsTarget,
groupUnknown15,
raidMarkNPC, //0x10
raidNPCHealth,
raidDelegateMainAssist,
raidDelegateMarkNPC,
raidUnknown4,
raidUnknown5,
raidUnknown6,
raidSpellAwareness,
raidOffenseEnhancement,
raidManaEnhancement,
raidHealthEnhancement,
raidHealthRegeneration,
raidFindPathToPC,
raidHealthOfTargetsTarget,
raidUnknown14,
raidUnknown15,
MAX_LEAD_AA //=32
};
/**
* Recast timer types. Used as an off set to charProfileStruct timers.
*/
enum RecastTypes
{
RecastTimer0 = 0,
RecastTimer1,
WeaponHealClickTimer, // 2
MuramiteBaneNukeClickTimer, // 3
RecastTimer4,
DispellClickTimer, // 5 (also click heal orbs?)
EpicTimer, // 6
OoWBPClickTimer, // 7
VishQuestClassItemTimer, // 8
HealPotionTimer, // 9
RecastTimer10,
RecastTimer11,
RecastTimer12,
RecastTimer13,
RecastTimer14,
RecastTimer15,
RecastTimer16,
RecastTimer17,
RecastTimer18,
ModRodTimer, // 19
MAX_RECAST_TYPES // 20
};
/*
** Compiler override to ensure
** byte aligned structures
*/
#pragma pack(1)
/*
** Generic Structures used in specific
** structures below
*/
// OpCode stuff (all kinda silly, but until we stop including the OpCode everywhere)...
struct opCodeStruct
{
int16_t opCode;
// kinda silly -- this is required for us to be able to stuff them in a QValueList
bool operator== ( const opCodeStruct t ) const
{
return ( opCode == t.opCode);
}
bool operator== ( uint16_t opCode2 ) const
{
return ( opCode == opCode2 );
}
};
/**
* Session request on a stream. This is sent by the client to initiate
* a session with the zone or world server.
*
* Size: 12 Octets
*/
struct SessionRequestStruct
{
/*0000*/ uint32_t unknown0000;
/*0004*/ uint32_t sessionId;
/*0008*/ uint32_t maxLength;
/*0012*/
};
/**
* Session response on a stream. This is the server replying to a session
* request with session information.
*
* Size: 19 Octets
*/
struct SessionResponseStruct
{
/*0000*/ uint32_t sessionId;
/*0004*/ uint32_t key;
/*0008*/ uint16_t unknown0008;
/*0010*/ uint8_t unknown0010;
/*0011*/ uint32_t maxLength;
/*0015*/ uint32_t unknown0015;
};
/**
* Session disconnect on a stream. This is the server telling the client to
* close a stream.
*
* Size: 8 Octets
*/
struct SessionDisconnectStruct
{
/*0000*/ uint8_t unknown[8];
};
/*
* Used in charProfileStruct
* Size: 4 bytes
*/
struct Color_Struct
{
union
{
struct
{
/*0000*/uint8_t blue;
/*0001*/uint8_t red;
/*0002*/uint8_t green;
/*0003*/uint8_t unknown0003;
} rgb;
/*0000*/uint32_t color;
};
};
/*
** Buffs
** Length: 24 Octets
** Used in:
** charProfileStruct(07012)
*/
struct spellBuff
{
/*0000*/ uint8_t unknown0000; //
/*0001*/ int8_t level; // Level of person who cast buff
/*0002*/ uint8_t unknown0002; //
/*0003*/ uint8_t unknown0003; //
/*0004*/ int32_t spellid; // Spell
/*0008*/ int32_t duration; // Time remaining in ticks
/*0012*/ int32_t effect; // holds the dmg absorb amount on runes
/*0016*/ uint8_t unknown0016[4]; // *** this might need to be swapped with playerId
/*0020*/ uint32_t playerId; // Global id of caster (for wear off)
/*0024*/
};
/*
* Used in charProfileStruct
* Size: 8 octets
*/
struct AA_Array
{
/*000*/ uint32_t AA;
/*004*/ uint32_t value;
/*008*/
};
/**
* An item inline in the stream, used in Bandolier and Potion Belt.
* Size: 72 Octets
*/
struct InlineItem
{
/*000*/ uint32_t itemId;
/*004*/ uint32_t icon;
/*008*/ char itemName[64];
/*072*/
};
/**
* Used in charProfileStruct. Contents of a Bandolier.
* Size: 320 Octets
*/
struct BandolierStruct
{
/*000*/ char bandolierName[32];
/*032*/ InlineItem mainHand;
/*104*/ InlineItem offHand;
/*176*/ InlineItem range;
/*248*/ InlineItem ammo;
/*320*/
};
/**
* A tribute a player can have loaded.
* Size: 8 Octets
*/
struct TributeStruct
{
/*000*/ uint32_t tribute;
/*004*/ uint32_t rank;
/*008*/
};
/**
* A bind point.
* Size: 20 Octets
*/
struct BindStruct
{
/*000*/ uint32_t zoneId;
/*004*/ float x;
/*008*/ float y;
/*012*/ float z;
/*016*/ float heading;
/*020*/
};
/*
* Visible equiptment.
* Size: 12 Octets
*/
struct EquipStruct
{
/*00*/ uint32_t equip0;
/*04*/ uint32_t equip1;
/*08*/ uint32_t itemId;
/*12*/
};
/*
** Type: Zone Change Request (before hand)
** Length: 88 Octets
** OpCode: ZoneChangeCode
*/
struct zoneChangeStruct
{
/*0000*/ char name[64]; // Character Name
/*0064*/ uint16_t zoneId; // zone Id
/*0066*/ uint16_t zoneInstance; // zone Instance
/*0068*/ uint8_t unknown0068[8]; // unknown
/*0076*/ uint8_t unknown0076[12]; // ***Placeholder (6/29/2005)
/*0088*/
};
/*
** Type: Request Zone Change (server asking the client to change zones)
** Size: 24 Octets
** OpCode: OP_RequestZoneChange
*/
struct requestZoneChangeStruct
{
/*0000*/ uint16_t zoneId; // Zone to change to
/*0002*/ uint16_t zoneInstance; // Instance to change to
/*0004*/ float x; // Zone in x coord in next zone
/*0008*/ float y; // Zone in y coord in next zone
/*0012*/ float z; // Zone in z coord in next zone
/*0016*/ float heading; // Zone in heading in next zone
/*0020*/ uint32_t unknown0020; // *** Placeholder
};
/*
** Client Zone Entry struct
** Length: 68 Octets
** OpCode: ZoneEntryCode (when direction == client)
*/
struct ClientZoneEntryStruct
{
/*0000*/ uint32_t unknown0000; // ***Placeholder
/*0004*/ char name[32]; // Player firstname
/*0036*/ uint8_t unknown0036[28]; // ***Placeholder
/*0064*/ uint32_t unknown0064; // unknown
};
/*
** New Zone Code
** Length: 924 Octets
** OpCode: NewZoneCode
*/
struct newZoneStruct
{
/*0000*/ char name[64]; // Character name
/*0064*/ char shortName[32]; // Zone Short Name (maybe longer?)
/*0096*/ char unknown0096[96];
/*0192*/ char longName[278]; // Zone Long Name
/*0470*/ uint8_t ztype; // Zone type
/*0471*/ uint8_t fog_red[4]; // Zone fog (red)
/*0475*/ uint8_t fog_green[4]; // Zone fog (green)
/*0479*/ uint8_t fog_blue[4]; // Zone fog (blue)
/*0483*/ uint8_t unknown0483[87]; // *** Placeholder
/*0570*/ uint8_t sky; // Zone sky
/*0571*/ uint8_t unknown0571[13]; // *** Placeholder
/*0584*/ float zone_exp_multiplier; // Experience Multiplier
/*0588*/ float safe_y; // Zone Safe Y
/*0592*/ float safe_x; // Zone Safe X
/*0596*/ float safe_z; // Zone Safe Z
/*0600*/ float unknown0600; // *** Placeholder
/*0604*/ float unknown0604; // *** Placeholder
/*0608*/ float underworld; // Underworld
/*0612*/ float minclip; // Minimum view distance
/*0616*/ float maxclip; // Maximum view distance
/*0620*/ uint8_t unknown0616[84]; // *** Placeholder
/*0704*/ char zonefile[64]; // Zone file name?
/*0768*/ uint8_t unknown0764[36]; // *** Placeholder (12/05/2006)
/*0804*/ uint8_t unknown0800[32]; // *** Placeholder (02/13/2007)
/*0836*/ uint8_t unknown0832[12]; // *** Placeholder
/*0848*/ uint8_t unknown0844[4]; // *** Placeholder (06/29/2005)
/*0852*/ uint8_t unknown0848[4]; // *** Placeholder (09/13/2005)
/*0856*/ uint8_t unknown0852[4]; // *** Placeholder (02/21/2006)
/*0860*/ uint8_t unknown0856[36]; // *** Placeholder (06/13/2006)
/*0896*/ uint8_t unknown0892[12]; // *** Placeholder (12/05/2006)
/*0908*/ uint8_t unknown0904[8]; // *** Placeholder (02/13/2007)
/*0916*/ uint8_t unknown0916[4]; // *** Placeholder (11/24/2007)
/*0920*/ uint8_t unknown0920[4]; // *** Placeholder (01/17/2008)
/*0924*/ uint8_t unknown0924[4]; // *** Placeholder (09/03/2008)
/*0928*/ uint8_t unknown0928[4]; // *** Placeholder (10/07/2008)
/*0932*/
};
/*
** Dynamic Zone Switch Info Struct
** Length: 32 Octets
** OpCode: DzSwitchInfo
*/
struct dzSwitchInfo
{
/*0000*/ uint32_t unknown0000;
/*0004*/ uint32_t show; // Show compass line
/*0008*/ uint16_t zoneID;
/*0010*/ uint16_t instanceID;
/*0012*/ uint32_t type; // if(type != 1 && type > 2 && type <= 5) { color = green; } else { color = pink; }
/*0016*/ uint32_t unknown0016;
/*0020*/ float y;
/*0024*/ float x;
/*0028*/ float z;
/*0032*/
};
/*
** Dynamic Zone Info Struct
** Length: 208 Octets
** OpCode: DzInfo
*/
struct dzInfo
{
/*0000*/ uint32_t unknown0000;
/*0004*/ uint32_t unknown0004;
/*0008*/ uint8_t newDZ;
/*0009*/ uint8_t padding0009[3];
/*0012*/ uint32_t maxPlayers;
/*0016*/ char dzName[128]; // Instance name
/*0144*/ char name[64]; // Your player's name
/*0208*/
};
/**
* Player Profile. Common part of charProfileStruct shared between
* shrouding and zoning profiles.
*
* NOTE: Offsets are kept in here relative to OP_PlayerProfile to ease in
* diagnosing changes in that struct.
*/
struct playerProfileStruct
{
/*00004*/ uint32_t gender; // Player Gender - 0 Male, 1 Female
/*00008*/ uint32_t race; // Player race
/*00012*/ uint32_t class_; // Player class
/*00016*/ uint8_t unknown00016[40]; // ***Placeholder
/*00056*/ uint8_t level; // Level of player
/*00057*/ uint8_t level1; // Level of player (again?)
/*00058*/ uint8_t unknown00058[2]; // ***Placeholder
/*00060*/ BindStruct binds[5]; // Bind points (primary is first)
/*00160*/ uint32_t deity; // deity
/*00164*/ uint32_t intoxication; // Alcohol level (in ticks till sober?)
/*00168*/ uint32_t spellSlotRefresh[MAX_SPELL_SLOTS]; // Refresh time (millis)
/*00208*/ uint8_t unknown0208[4];
/*00212*/ uint8_t haircolor; // Player hair color
/*00213*/ uint8_t beardcolor; // Player beard color
/*00214*/ uint8_t eyecolor1; // Player left eye color
/*00215*/ uint8_t eyecolor2; // Player right eye color
/*00216*/ uint8_t hairstyle; // Player hair style
/*00217*/ uint8_t beard; // Player beard type
/*00218*/ uint8_t unknown00218[10];
/*00228*/ uint32_t item_material[9]; // Item texture/material of worn items
/*00264*/ uint8_t unknown00260[232];
/*00496*/ Color_Struct item_tint[9]; // RR GG BB 00
/*00532*/ AA_Array aa_array[MAX_AA]; // AAs
/*03404*/ uint8_t unknown03400[728]; // ***** this may be wrong or aa_array might be wrong (10/21/07)
/*04132*/ uint32_t points; // Unspent Practice points
/*04136*/ uint32_t MANA; // Current MANA
/*04140*/ uint32_t curHp; // Current HP without +HP equipment
/*04144*/ uint32_t STR; // Strength
/*04148*/ uint32_t STA; // Stamina
/*04152*/ uint32_t CHA; // Charisma
/*04156*/ uint32_t DEX; // Dexterity
/*04160*/ uint32_t INT; // Intelligence
/*04164*/ uint32_t AGI; // Agility
/*04168*/ uint32_t WIS; // Wisdom
/*04172*/ uint8_t face; // Player face
/*04173*/ uint8_t unknown04173[175];
/*04348*/ int32_t sSpellBook[400]; // List of the Spells in spellbook
/*05948*/ uint8_t unknown5948[448]; // all 0xff after last spell
/*06396*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized
/*06436*/ uint8_t unknown06436[28];
/*06464*/ uint32_t platinum; // Platinum Pieces on player
/*06468*/ uint32_t gold; // Gold Pieces on player
/*06472*/ uint32_t silver; // Silver Pieces on player
/*06476*/ uint32_t copper; // Copper Pieces on player
/*06480*/ uint32_t platinum_cursor; // Platinum Pieces on cursor
/*06484*/ uint32_t gold_cursor; // Gold Pieces on cursor
/*06488*/ uint32_t silver_cursor; // Silver Pieces on cursor
/*06492*/ uint32_t copper_cursor; // Copper Pieces on cursor
/*06496*/ uint32_t skills[MAX_KNOWN_SKILLS]; // List of skills
/*06796*/ uint8_t unknown06796[236];
/*07032*/ uint32_t toxicity; // Potion Toxicity (15=too toxic, each potion adds 3)
/*07036*/ uint32_t thirst; // Drink (ticks till next drink)
/*07040*/ uint32_t hunger; // Food (ticks till next eat)
/*07044*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*07644*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
/*08044*/ uint8_t unknown08044[160];
/*08204*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*08284*/ uint32_t endurance; // Current endurance
/*08288*/ uint32_t aa_spent; // Number of spent AA points
/*08292*/ uint32_t aa_unspent; // Unspent AA points
/*08296*/ uint8_t unknown08296[4];
/*08300*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
/*14700*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
/*15060*/ uint8_t unknown15060[92];
/*15152*/
};
/*
** Player Profile
** Length: 23488 Octets
** OpCode: CharProfileCode
*/
struct charProfileStruct
{
/*00000*/ uint32_t checksum; //
/*00004*/ playerProfileStruct profile; // Profile
/*15152*/ char name[64]; // Name of player
/*15216*/ char lastName[32]; // Last name of player
/*15248*/ uint8_t unknown15248[12]; //***Placeholder (1/18/2006)
/*15260*/ int32_t guildID; // guildID
/*15264*/ uint32_t birthdayTime; // character birthday
/*15268*/ uint32_t lastSaveTime; // character last save time
/*15272*/ uint32_t timePlayedMin; // time character played
/*15276*/ uint8_t unknown15276[4];
/*15280*/ uint8_t pvp; // 1=pvp, 0=not pvp
/*15281*/ uint8_t anon; // 2=roleplay, 1=anon, 0=not anon
/*15282*/ uint8_t gm; // 0=no, 1=yes (guessing!)
/*15283*/ int8_t guildstatus; // 0=member, 1=officer, 2=guildleader
/*15284*/ uint8_t unknown15284[8];
/*15292*/ uint32_t exp; // Current Experience
/*15296*/ uint8_t unknown15296[12];
/*15308*/ uint8_t languages[MAX_KNOWN_LANGS]; // List of languages
/*15333*/ uint8_t unknown15333[7]; // All 0x00 (language buffer?)
/*15340*/ float y; // Players y position
/*15344*/ float x; // Players x position
/*15348*/ float z; // Players z position
/*15352*/ float heading; // Players heading
/*15356*/ uint32_t standState; // 0x64 = stand
/*15360*/ uint32_t platinum_bank; // Platinum Pieces in Bank
/*15364*/ uint32_t gold_bank; // Gold Pieces in Bank
/*15368*/ uint32_t silver_bank; // Silver Pieces in Bank
/*15372*/ uint32_t copper_bank; // Copper Pieces in Bank
/*15376*/ uint32_t platinum_shared; // Shared platinum pieces
/*15380*/ uint8_t unknown15380[1036];
/*16416*/ uint32_t expansions; // Bitmask for expansions
/*16420*/ uint8_t unknown16420[12];
/*16432*/ uint32_t autosplit; // 0 = off, 1 = on
/*16436*/ uint8_t unknown16436[16];
/*16452*/ uint16_t zoneId; // see zones.h
/*16454*/ uint16_t zoneInstance; // Instance id
/*16456*/ uint8_t unknown16456[800];
/*17256*/ uint32_t leadAAActive; // 0 = leader AA off, 1 = leader AA on
/*17260*/ uint8_t unknown17260[4];
/*17264*/ uint32_t ldon_guk_points; // Earned GUK points
/*17268*/ uint32_t ldon_mir_points; // Earned MIR points
/*17272*/ uint32_t ldon_mmc_points; // Earned MMC points
/*17276*/ uint32_t ldon_ruj_points; // Earned RUJ points
/*17280*/ uint32_t ldon_tak_points; // Earned TAK points
/*17284*/ uint32_t ldon_avail_points; // Available LDON points
/*17288*/ uint8_t unknown17288[136];
/*17424*/ uint32_t tributeTime; // Time remaining on tribute (millisecs)
/*17428*/ uint32_t careerTribute; // Total favor points for this char
/*17432*/ uint32_t unknown17432; // *** Placeholder
/*17436*/ uint32_t currentTribute; // Current tribute points
/*17440*/ uint32_t unknown17440; // *** Placeholder
/*17444*/ uint32_t tributeActive; // 0 = off, 1=on
/*17448*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout
/*17488*/ uint8_t unknown17488[4];
/*17492*/ float expGroupLeadAA; // Current group lead exp points
/*17496*/ uint32_t unknown17496;
/*17500*/ float expRaidLeadAA; // Current raid lead AA exp points
/*17504*/ uint32_t unknown17504;
/*17508*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points
/*17512*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points
/*17516*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks
/*17644*/ uint8_t unknown17644[128];
/*17772*/ uint32_t airRemaining; // Air supply (seconds)
/*17776*/ uint8_t unknown17776[4608];
/*22384*/ uint32_t expAA; // Exp earned in current AA point
/*22388*/ uint8_t unknown22388[40];
/*22428*/ uint32_t currentRadCrystals; // Current count of radiant crystals
/*22432*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever
/*22436*/ uint32_t currentEbonCrystals;// Current count of ebon crystals
/*22440*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever
/*22444*/ uint8_t groupAutoconsent; // 0=off, 1=on
/*22445*/ uint8_t raidAutoconsent; // 0=off, 1=on
/*22446*/ uint8_t guildAutoconsent; // 0=off, 1=on
/*22447*/ uint8_t unknown22447[5]; // ***Placeholder (6/29/2005)
/*22452*/ uint32_t showhelm; // 0=no, 1=yes
/*22456*/ uint8_t unknown22456[1032]; // ***Placeholder (2/13/2007)
/*23488*/
};
#if 0
// The following seem to be totally gone from charProfileStruct (9/13/05)
/*2384*/ char title[32]; // Current character title
/*2352*/ char servername[32]; // server the char was created on
/*2416*/ char suffix[32]; // Current character suffix
#endif
#if 1
struct playerAAStruct {
/* 0 */ uint8_t unknown0;
union {
uint8_t unnamed[17];
struct _named {
/* 1 */ uint8_t innate_strength;
/* 2 */ uint8_t innate_stamina;
/* 3 */ uint8_t innate_agility;
/* 4 */ uint8_t innate_dexterity;
/* 5 */ uint8_t innate_intelligence;
/* 6 */ uint8_t innate_wisdom;
/* 7 */ uint8_t innate_charisma;
/* 8 */ uint8_t innate_fire_protection;
/* 9 */ uint8_t innate_cold_protection;
/* 10 */ uint8_t innate_magic_protection;
/* 11 */ uint8_t innate_poison_protection;
/* 12 */ uint8_t innate_disease_protection;
/* 13 */ uint8_t innate_run_speed;
/* 14 */ uint8_t innate_regeneration;
/* 15 */ uint8_t innate_metabolism;
/* 16 */ uint8_t innate_lung_capacity;
/* 17 */ uint8_t first_aid;
} named;
} general_skills;
union {
uint8_t unnamed[17];
struct _named {
/* 18 */ uint8_t healing_adept;
/* 19 */ uint8_t healing_gift;
/* 20 */ uint8_t unknown20;
/* 21 */ uint8_t spell_casting_reinforcement;
/* 22 */ uint8_t mental_clarity;
/* 23 */ uint8_t spell_casting_fury;
/* 24 */ uint8_t chanelling_focus;
/* 25 */ uint8_t unknown25;
/* 26 */ uint8_t unknown26;
/* 27 */ uint8_t unknown27;
/* 28 */ uint8_t natural_durability;
/* 29 */ uint8_t natural_healing;
/* 30 */ uint8_t combat_fury;
/* 31 */ uint8_t fear_resistance;
/* 32 */ uint8_t finishing_blow;
/* 33 */ uint8_t combat_stability;
/* 34 */ uint8_t combat_agility;
} named;
} archetype_skills;
union {
uint8_t unnamed[93];
struct _name {
/* 35 */ uint8_t mass_group_buff; // All group-buff-casting classes(?)
// ===== Cleric =====
/* 36 */ uint8_t divine_resurrection;
/* 37 */ uint8_t innate_invis_to_undead; // cleric, necromancer
/* 38 */ uint8_t celestial_regeneration;
/* 39 */ uint8_t bestow_divine_aura;
/* 40 */ uint8_t turn_undead;
/* 41 */ uint8_t purify_soul;
// ===== Druid =====
/* 42 */ uint8_t quick_evacuation; // wizard, druid
/* 43 */ uint8_t exodus; // wizard, druid
/* 44 */ uint8_t quick_damage; // wizard, druid
/* 45 */ uint8_t enhanced_root; // druid
/* 46 */ uint8_t dire_charm; // enchanter, druid, necromancer
// ===== Shaman =====
/* 47 */ uint8_t cannibalization;
/* 48 */ uint8_t quick_buff; // shaman, enchanter
/* 49 */ uint8_t alchemy_mastery;
/* 50 */ uint8_t rabid_bear;
// ===== Wizard =====
/* 51 */ uint8_t mana_burn;
/* 52 */ uint8_t improved_familiar;
/* 53 */ uint8_t nexus_gate;
// ===== Enchanter =====
/* 54 */ uint8_t unknown54;
/* 55 */ uint8_t permanent_illusion;
/* 56 */ uint8_t jewel_craft_mastery;
/* 57 */ uint8_t gather_mana;
// ===== Mage =====
/* 58 */ uint8_t mend_companion; // mage, necromancer
/* 59 */ uint8_t quick_summoning;
/* 60 */ uint8_t frenzied_burnout;
/* 61 */ uint8_t elemental_form_fire;
/* 62 */ uint8_t elemental_form_water;
/* 63 */ uint8_t elemental_form_earth;
/* 64 */ uint8_t elemental_form_air;
/* 65 */ uint8_t improved_reclaim_energy;
/* 66 */ uint8_t turn_summoned;
/* 67 */ uint8_t elemental_pact;
// ===== Necromancer =====
/* 68 */ uint8_t life_burn;
/* 69 */ uint8_t dead_mesmerization;
/* 70 */ uint8_t fearstorm;
/* 71 */ uint8_t flesh_to_bone;
/* 72 */ uint8_t call_to_corpse;
// ===== Paladin =====
/* 73 */ uint8_t divine_stun;
/* 74 */ uint8_t improved_lay_of_hands;
/* 75 */ uint8_t slay_undead;
/* 76 */ uint8_t act_of_valor;
/* 77 */ uint8_t holy_steed;
/* 78 */ uint8_t fearless; // paladin, shadowknight
/* 79 */ uint8_t two_hand_bash; // paladin, shadowknight
// ===== Ranger =====
/* 80 */ uint8_t innate_camouflage; // ranger, druid
/* 81 */ uint8_t ambidexterity; // all "dual-wield" users
/* 82 */ uint8_t archery_mastery; // ranger
/* 83 */ uint8_t unknown83;
/* 84 */ uint8_t endless_quiver; // ranger
// ===== Shadow Knight =====
/* 85 */ uint8_t unholy_steed;
/* 86 */ uint8_t improved_harm_touch;
/* 87 */ uint8_t leech_touch;
/* 88 */ uint8_t unknown88;
/* 89 */ uint8_t soul_abrasion;
// ===== Bard =====
/* 90 */ uint8_t instrument_mastery;
/* 91 */ uint8_t unknown91;
/* 92 */ uint8_t unknown92;
/* 93 */ uint8_t unknown93;
/* 94 */ uint8_t jam_fest;
/* 95 */ uint8_t unknown95;
/* 96 */ uint8_t unknown96;
// ===== Monk =====
/* 97 */ uint8_t critical_mend;
/* 98 */ uint8_t purify_body;
/* 99 */ uint8_t unknown99;
/* 100 */ uint8_t rapid_feign;
/* 101 */ uint8_t return_kick;
// ===== Rogue =====
/* 102 */ uint8_t escape;
/* 103 */ uint8_t poison_mastery;
/* 104 */ uint8_t double_riposte; // all "riposte" users
/* 105 */ uint8_t unknown105;
/* 106 */ uint8_t unknown106;
/* 107 */ uint8_t purge_poison; // rogue
// ===== Warrior =====
/* 108 */ uint8_t flurry;
/* 109 */ uint8_t rampage;
/* 110 */ uint8_t area_taunt;
/* 111 */ uint8_t warcry;
/* 112 */ uint8_t bandage_wound;
// ===== (Other) =====
/* 113 */ uint8_t spell_casting_reinforcement_mastery; // all "pure" casters
/* 114 */ uint8_t unknown114;
/* 115 */ uint8_t extended_notes; // bard
/* 116 */ uint8_t dragon_punch; // monk
/* 117 */ uint8_t strong_root; // wizard
/* 118 */ uint8_t singing_mastery; // bard
/* 119 */ uint8_t body_and_mind_rejuvenation; // paladin, ranger, bard
/* 120 */ uint8_t physical_enhancement; // paladin, ranger, bard
/* 121 */ uint8_t adv_trap_negotiation; // rogue, bard
/* 122 */ uint8_t acrobatics; // all "safe-fall" users
/* 123 */ uint8_t scribble_notes; // bard
/* 124 */ uint8_t chaotic_stab; // rogue
/* 125 */ uint8_t pet_discipline; // all pet classes except enchanter
/* 126 */ uint8_t unknown126;
/* 127 */ uint8_t unknown127;
} named;
} class_skills;
};
#endif
/*
** Generic Spawn Struct
** Length: Variable.
** Used in:
** dbSpawnStruct
** petStruct
** spawnShroudOther
** spawnShroudSelf
*/
// Fixed-length struct that we'll fill with data from the variable-length packet,
// unnecessary fields removed, arranged in order with the packet.
struct spawnStruct
{
/*0000*/ char name[64];
/*0000*/ uint32_t spawnId;
/*0000*/ uint8_t level;
/*0000*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse
/*0000*/ union
{
struct
{
unsigned padding7:1;
unsigned AFK:1;
unsigned sneak:1;
unsigned LFG:1;
unsigned padding6:1;
unsigned invis:1;
unsigned padding5:11;
unsigned gm:1;
unsigned anon:1; // 0=normal, 1=anon, 2=roleplay
unsigned padding4:1;
unsigned gender:1; // Gender (0=male, 1=female)
unsigned padding3:1;
unsigned linkdead:1;
unsigned betabuffed:1;
unsigned padding2:2;
unsigned targetable:1;
unsigned targetcyclable:1;
unsigned padding1:2;
unsigned trader:1;
unsigned buyer:1;
};
int32_t miscData;
};
/*0000*/ uint8_t otherData; // & 4 - has title, & 8 - has suffix, & 1 - it's a chest or untargetable
/*0000*/ uint32_t race;
/*0000*/ uint8_t charProperties;
/*0000*/ uint32_t bodytype;
/*0000*/ uint32_t bodytype2;
/*0000*/ uint8_t curHp;
/*0000*/ uint8_t holding;
/*0000*/ uint32_t deity;
/*0000*/ uint32_t guildID;
/*0000*/ uint32_t guildstatus; // 0=member, 1=officer, 2=leader, -1=not guilded
/*0000*/ uint8_t class_;
/*0000*/ uint8_t state; // stand state
/*0000*/ uint8_t light;
/*0000*/ char lastName[32];
/*0000*/ uint32_t petOwnerId;
union
{
struct
{
/*0000*/ signed padding0000:12; // ***Placeholder
signed deltaX:13; // change in x
signed padding0005:7; // ***Placeholder
/*0000*/ signed deltaHeading:10;// change in heading
signed deltaY:13; // change in y
signed padding0006:9; // ***Placeholder
/*0000*/ signed y:19; // y coord
signed animation:13; // animation
/*0000*/ unsigned heading:12; // heading
signed x:19; // x coord
signed padding0014:1; // ***Placeholder
/*0000*/ signed z:19; // z coord
signed deltaZ:13; // change in z
};
int32_t posData[5];
};
/*0000*/ union
{
struct
{
/*0000*/ Color_Struct color_helmet; // Color of helmet item
/*0000*/ Color_Struct color_chest; // Color of chest item
/*0000*/ Color_Struct color_arms; // Color of arms item
/*0000*/ Color_Struct color_bracers; // Color of bracers item
/*0000*/ Color_Struct color_hands; // Color of hands item
/*0000*/ Color_Struct color_legs; // Color of legs item
/*0000*/ Color_Struct color_feet; // Color of feet item
/*0000*/ Color_Struct color_primary; // Color of primary item
/*0000*/ Color_Struct color_secondary; // Color of secondary item
} equipment_colors;
/*0000*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
};
/*0000*/ union
{
struct
{
/*0000*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*0000*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*0000*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*0000*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*0000*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*0000*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*0000*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*0000*/ EquipStruct equip_primary; // Equiptment: Main visual
/*0000*/ EquipStruct equip_secondary; // Equiptment: Off visual
} equip;
/*0000*/ EquipStruct equipment[9];
};
/*0000*/ char title[32];
/*0000*/ char suffix[32];
};
#if 0
// Basic structure of how the packet looks on the wire, for reference.
// May 29, 2008 eqgame.exe
struct spawnStruct
{
/*0000*/ char name[0];
/*0000*/ uint32_t spawnId;
/*0000*/ uint8_t level;
/*0000*/ float unknown1;
/*0000*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse
/*0000*/ unsigned padding7:1;
unsigned AFK:1;
unsigned sneak:1;
unsigned LFG:1;
unsigned padding6:1;
unsigned invis:1;
unsigned padding5:11;
unsigned gm:1;
unsigned anon:1; // 0=normal, 1=anon, 2=roleplay
unsigned padding4:1;
unsigned gender:1; // Gender (0=male, 1=female)
unsigned padding3:1;
unsigned linkdead:1;
unsigned betabuffed:1;
unsigned padding2:2;
unsigned targetable:1;
unsigned targetcyclable:1;
unsigned padding1:2;
unsigned trader:1;
unsigned buyer:1;
/*0000*/ uint8_t otherData; // & 4 - has title, & 8 - has suffix, & 1 - it's a chest or untargetable
/*0000*/ uint32_t unknown3;
/*0000*/ uint32_t unknown4;
/*0000*/ uint32_t unknown5;
/*0000*/ uint8_t facestyle;
/*0000*/ float walkspeed;
/*0000*/ float runspeed;
/*0000*/ uint32_t race;
/*0000*/ uint8_t charProperties; // for body types
/*0000*/ uint32_t bodytype;
/*0000*/ uint32_t bodytype2; // this is only present if charProperties==2
// are there more than two possible properties?
/*0000*/ uint8_t curHp;
/*0000*/ uint8_t haircolor;
/*0000*/ uint8_t facialhaircolor;
/*0000*/ uint8_t eyecolor1;
/*0000*/ uint8_t eyecolor2;
/*0000*/ uint8_t hairstyle;
/*0000*/ uint8_t facialhair;
/*0000*/ uint32_t heritage;
/*0000*/ uint32_t tattoo;
/*0000*/ uint32_t details;
/*0000*/ uint8_t holding;
/*0000*/ uint32_t deity;
/*0000*/ uint32_t guildID;
/*0000*/ uint32_t guildstatus; // 0=member, 1=officer, 2=leader, -1=not guilded
/*0000*/ uint8_t class_;
/*0000*/ uint8_t PVP;
/*0000*/ uint8_t state; // stand state
/*0000*/ uint8_t light;
/*0000*/ uint8_t unknown7;
/*0000*/ uint8_t unknown8;
/*0000*/ uint8_t unknown9;
/*0000*/ uint8_t unknown10;
/*0000*/ uint8_t unknown11;
/*0000*/ char lastName[0];
/*0000*/ uint32_t AARank;
/*0000*/ uint8_t unknown12;
/*0000*/ uint32_t petOwnerId;
/*0000*/ uint8_t unknown13;
/*0000*/ uint32_t unknown14;
/*0000*/ uint32_t unknown15;
/*0000*/ uint32_t unknown16;
/*0000*/ uint32_t unknown17;
/*0000*/ uint32_t unknown18;
/*0000*/ uint32_t unknown19;
/*0000*/ signed padding0000:12; // ***Placeholder
signed deltaX:13; // change in x
signed padding0005:7; // ***Placeholder
/*0000*/ signed deltaHeading:10;// change in heading
signed deltaY:13; // change in y
signed padding0006:9; // ***Placeholder
/*0000*/ signed y:19; // y coord
signed animation:13; // animation
/*0000*/ unsigned heading:12; // heading
signed x:19; // x coord
signed padding0014:1; // ***Placeholder
/*0000*/ signed z:19; // z coord
signed deltaZ:13; // change in z
/*0000*/ union
{
struct
{
/*0000*/ Color_Struct color_helmet; // Color of helmet item
/*0000*/ Color_Struct color_chest; // Color of chest item
/*0000*/ Color_Struct color_arms; // Color of arms item
/*0000*/ Color_Struct color_bracers; // Color of bracers item
/*0000*/ Color_Struct color_hands; // Color of hands item
/*0000*/ Color_Struct color_legs; // Color of legs item
/*0000*/ Color_Struct color_feet; // Color of feet item
/*0000*/ Color_Struct color_primary; // Color of primary item
/*0000*/ Color_Struct color_secondary; // Color of secondary item
} equipment_colors;
/*0000*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
};
// skip these bytes if not a valid player race
/*0000*/ union
{
struct
{
/*0000*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*0000*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*0000*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*0000*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*0000*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*0000*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*0000*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*0000*/ EquipStruct equip_primary; // Equiptment: Main visual
/*0000*/ EquipStruct equip_secondary; // Equiptment: Off visual
} equip;
/*0000*/ EquipStruct equipment[9];
};
/*0000*/ char title[0]; // only read if(hasTitleOrSuffix & 4)
/*0000*/ char suffix[0]; // only read if(hasTitleOrSuffix & 8)
/*0000*/ char unknown20[32];
};
#endif
#if 0
// Old stuff from spawnStruct seq doesn't actually use at all..
//
/*0004*/ float size; // Model size
/*0078*/ int8_t aa_title; // 0=none, 1=general, 2=archtype, 3=class
/*0074*/ uint8_t invis; // Invis (0=not, 1=invis)
/*0117*/ uint8_t lfg; // 0=off, 1=lfg on
/*0196*/ uint8_t afk; // 0=no, 1=afk
/*0207*/ int8_t guildrank; // 0=normal, 1=officer, 2=leader
/*0213*/ uint8_t face; // Face id for players
/*0247*/ uint8_t is_pet; // 0=no, 1=yes
/*0284*/ uint8_t beardcolor; // Beard color
/*0500*/ uint8_t showhelm; // 0=no, 1=yes
/*0501*/ uint8_t helm; // Helm texture
/*0660*/ uint8_t hairstyle; // Hair style
/*0090*/ uint8_t eyecolor1; // Player's left eye color
/*0542*/ uint8_t eyecolor2; // Left eye color
/*0547*/ uint8_t haircolor; // Hair color
/*0574*/ uint8_t is_npc; // 0=no, 1=yes
/*0575*/ uint8_t findable; // 0=can't be found, 1=can be found
/*0728*/ uint8_t beard; // Beard style (not totally, sure but maybe!)
/*0723*/ uint8_t max_hp; // (name prolly wrong)takes on the value 100 for players, 100 or 110 for NPCs and 120 for PC corpses...
/*122*/ uint8_t pvp; // 0=Not pvp,1=pvp
union
{
/*0091*/ int8_t equip_chest2; // Second place in packet for chest texture (usually 0xFF in live packets)
// Not sure why there are 2 of them, but it effects chest texture!
/*0091*/ int8_t mount_color; // drogmor: 0=white, 1=black, 2=green, 3=red
};
#endif
/*
** Server Zone Entry struct
** Length: 383 Octets
** OpCode: ZoneEntryCode (when direction == server)
*
* This is just a spawnStruct for the player
*/
struct ServerZoneEntryStruct : public spawnStruct
{
};
/*
** Generic Door Struct
** Length: 92 Octets
** Used in:
** OP_SpawnDoor
**
*/
struct doorStruct
{
/*0000*/ char name[16]; // Filename of Door?
/*0016*/ uint8_t unknown016[16]; // ***Placeholder
/*0032*/ float y; // y loc
/*0036*/ float x; // x loc
/*0040*/ float z; // z loc
/*0044*/ float heading; // heading
/*0048*/ uint8_t unknown0028[7]; // ***Placeholder
/*0055*/ int8_t auto_return;
/*0056*/ uint8_t initialState;
/*0057*/ uint8_t unknown041[3];
/*0060*/ uint8_t doorId; // door's id #
/*0061*/ uint8_t opentype;
/*0062*/ uint8_t size; // size of door
/*0063*/ uint8_t holdstateforever;
/*0064*/ uint32_t zonePoint;
/*0068*/ uint8_t unknown068[12]; // ***Placeholder
/*0080*/ uint8_t unknown0080[8]; // ***Placeholder (12/07/2005)
/*0088*/ uint8_t unknown0088[4]; // ***Placeholder (2/13/2007)
/*0092*/
};
/*
** Drop Item On Ground
** Length: 104 Octets
** OpCode: MakeDropCode
*/
struct makeDropStruct
{
/*0000*/ uint32_t prevObject; // Previous object in the linked list
/*0004*/ uint32_t nextObject; // Next object in the linked list
/*0008*/ uint32_t unknown0008; // ***Placeholder
/*0012*/ uint32_t dropId; // DropID
/*0016*/ uint16_t zoneId; // ZoneID
/*0018*/ uint16_t zoneInstance; // Zone instance id
/*0020*/ uint8_t unknown0020[8]; // ***Placeholder
/*0028*/ uint8_t unknown0028[12]; // ***Placeholder (9/23/2006)
/*0040*/ float heading; // Heading
/*0044*/ float z; // Z Position
/*0048*/ float x; // X Position
/*0052*/ float y; // Y Position
/*0056*/ char idFile[16]; // ACTOR ID
/*0072*/ uint32_t unknown0072[5]; // ***Placeholder
/*0092*/ uint32_t dropType; // drop type
/*0096*/ uint32_t unknown0096; // ***Placeholder
/*0100*/ uint32_t userSpawnID; // spawn id of the person using
/*0104*/
};
/*
** ZonePoint
** Length: 24 Octets
** Sent as part of zonePointsStruct
*/
struct zonePointStruct
{
/*0000*/ uint32_t zoneTrigger;
/*0004*/ float y;
/*0008*/ float x;
/*0012*/ float z;
/*0016*/ float heading;
/*0020*/ uint16_t zoneId;
/*0022*/ uint16_t zoneInstance;
/*0024*/
};
/*
** ZonePointsStruct
** Length: Variable
** OPCode: OP_SendZonePoints
*/
struct zonePointsStruct
{
/*0000*/ uint32_t count;
/*0004*/ zonePointStruct zonePoints[0];
/*0xxx*/ uint8_t unknown0xxx[24];
/*0yyy*/
};
/*
** Time of Day
** Length: 8 Octets
** OpCode: TimeOfDayCode
*/
struct timeOfDayStruct
{
/*0000*/ uint8_t hour; // Hour (1-24)
/*0001*/ uint8_t minute; // Minute (0-59)
/*0002*/ uint8_t day; // Day (1-28)
/*0003*/ uint8_t month; // Month (1-12)
/*0004*/ uint16_t year; // Year
/*0006*/ uint16_t unknown0016; // Placeholder
/*0008*/
};
/*
** Item Packet Struct - Works on a variety of item operations
** Packet Types: See ItemPacketType enum
** Length: Variable
** OpCode: ItemCode
*/
struct itemPacketStruct
{
/*000*/ ItemPacketType packetType; // See ItemPacketType for more info.
/*004*/ char serializedItem[0];
/*xx*/
};
/*
** Item Info Request Struct
** OpCode: ItemInfoCode
*/
struct itemInfoReqStruct
{
/*000*/ uint32_t itemNr; // ItemNr
/*005*/ uint32_t requestSeq; // Request sequence number
/*008*/ char name[64]; // Item name
/*072*/
};
/*
** Item Info Response Struct
** Length: Variable
** OpCode: ItemInfoCode
*/
struct itemInfoStruct
{
/*000*/ uint32_t requestSeq; // Corresponds to sequence # in req
/*004*/ char serializedItem[0];
/*xxx*/
};
/*
** Simple Spawn Update
** Length: 14 Octets
** OpCode: MobUpdateCode
*/
struct spawnPositionUpdate
{
/*0000*/ int16_t spawnId;
/*0002*/ int64_t y:19, z:19, x:19, u3:7;
unsigned heading:12;
signed unused2:4;
/*0010*/
};
/*
** Rename a spawn
** Length: 200 Octets
** OpCode: SpawnRename
*/
struct spawnRenameStruct
{
/*000*/ char old_name[64];
/*064*/ char old_name_again[64]; //not sure what the difference is
/*128*/ char new_name[64];
/*192*/ uint32_t unknown192; //set to 0
/*196*/ uint32_t unknown196; //set to 1
};
/*
** Illusion a spawn
** Length: 256 Octets
** OpCode: Illusion
*/
struct spawnIllusionStruct
{
/*0000*/ uint32_t spawnId; // Spawn id of the target
/*0004*/ char name[64]; // Name of the target
/*0068*/ uint32_t race; // New race
/*0072*/ uint8_t gender; // New gender (0=male, 1=female)
/*0073*/ uint8_t texture; // ???
/*0074*/ uint8_t helm; // ???
/*0075*/ uint8_t unknown0077; // ***Placeholder
/*0076*/ uint32_t face; // New face
/*0080*/ uint8_t unknown0080[176]; // ***Placeholder
/*0256*/
};
/**
* Shroud spawn. For others shrouding, this has their spawnId and
* spawnStruct.
*
* Length: variable
* OpCode: OP_Shroud
*/
struct spawnShroudOther
{
/*00000*/ uint32_t spawnId; // Spawn Id of the shrouded player
/*00004*/ uint16_t spawnStructSize; // Size of spawnStruct (or start of)
/*00006*/ spawnStruct spawn; // Updated spawn struct for the player (variable length)
/*xxxxx*/
};
/**
* Shroud yourself. For yourself shrouding, this has your spawnId, spawnStruct,
* bits of your charProfileStruct (no checksum, then charProfile up till
* but not including name), and an itemPlayerPacket for only items on the player
* and not the bank.
*
* Length: Variable
* OpCode: OP_Shroud
*/
struct spawnShroudSelf
{
/*00000*/ uint32_t spawnId; // Spawn Id of you
/*00004*/ uint16_t ppStart; // Start of playerProfile data (spawnId+ppStart+spawnStruct)
/*00004*/ spawnStruct spawn; // Updated spawnStruct for you (variable length)
/*xxxxx*/ playerProfileStruct profile; // Character profile for shrouded char
/*xxxxx*/ uint8_t items; // Items on the player
/*xxxxx*/
};
/*
** Campfire spawn
** Length: 997
** OpCode: OP_ZoneEntry
*/
struct spawnCampfire
{
/*0000*/ spawnStruct spawn;
/*0532*/ uint8_t unknown0532[465];
/*0997*/
};
/*
** ShowEQ Specific Structures
*/
/*
** DB spawn struct (adds zone spawn was in)
*/
struct dbSpawnStruct
{
/*0000*/ struct spawnStruct spawn; // Spawn Information
/*0258*/ char zoneName[40]; // Zone Information
};
/*
** Pet spawn struct (pets pet and owner in one struct)
*/
struct petStruct
{
/*0000*/ struct spawnStruct owner; // Pet Owner Information
/*0258*/ struct spawnStruct pet; // Pet Infromation
};
/*
** Server System Message
** Length: Variable Length
** OpCode: SysMsgCode
*/
struct sysMsgStruct
{
/*0000*/ char message[0]; // Variable length message
};
/*
** Emote text
** Length: Variable Text
** OpCode: emoteTextCode
*/
struct emoteTextStruct
{
/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
/*0002*/ char text[0]; // Emote `Text
};
/*
** Channel Message received or sent
** Length: 148 Octets + Variable Length + 4 Octets
** OpCode: ChannelMessageCode
*/
struct channelMessageStruct
{
/*0000*/ char target[64]; // the target characters name
/*0064*/ char sender[64]; // The senders name
/*0128*/ uint32_t language; // Language
/*0132*/ uint32_t chanNum; // Channel
/*0136*/ int8_t unknown0136[8]; // ***Placeholder
/*0144*/ uint32_t skillInLanguage; // senders skill in language
/*0148*/ char message[0]; // Variable length message
};
/*
** Formatted text messages
** Length: Variable Text
** OpCode: emoteTextCode
*/
struct formattedMessageStruct
{
/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
/*0004*/ uint32_t messageFormat; // Indicates the message format
/*0008*/ ChatColor messageColor; // Message color
/*0012*/ char messages[0]; // messages(NULL delimited)
/*0???*/ uint8_t unknownXXXX[8]; // ***Placeholder
};
/*
** Simple text messages
** Length: 12 Octets
** OpCode: SimpleMessageCode
*/
struct simpleMessageStruct
{
/*0000*/ uint32_t messageFormat; // Indicates the message format
/*0004*/ ChatColor messageColor; // Message color
/*0008*/ uint32_t unknown; // ***Placeholder
/*0012*/
};
/*
** Special Message Struct
** Length: Variable Text
** OPCode: OP_SpecialMesg
*/
struct specialMessageStruct
{
/*0000*/ uint8_t unknown0000[3]; // message style?
/*0003*/ ChatColor messageColor; // message color
/*0007*/ uint16_t target; // message target
/*0009*/ uint16_t padding; // padding
/*0011*/ char source[0]; // message text
/*0xxx*/ uint32_t unknown0xxx[3]; //***Placeholder
/*0yyy*/ char message[0]; // message text
};
/*
** Guild MOTD Struct
** Length: Variable Text
** OPCode: OP_GuildMOTD
*/
struct guildMOTDStruct
{
/*0000*/ uint32_t unknown0000; //***Placeholder
/*0004*/ char target[64]; // motd target
/*0068*/ char sender[64]; // motd "sender" (who set it)
/*0132*/ uint32_t unknown0132; //***Placeholder
/*0136*/ char message[0];
};
/*
** Corpse location
** Length: 18 Octets
** OpCode: corpseLocCode
*/
struct corpseLocStruct
{
/*0000*/ uint32_t spawnId;
/*0004*/ float x;
/*0008*/ float y;
/*0012*/ float z;
};
/*
** Consent request
** Length: Variable by length of the name of the consentee
*/
struct consentRequestStruct
{
/*0000*/ char consentee[0]; // Name of player who was consented
};
/*
** Consent Response
** Length: 193 Octets
*/
struct consentResponseStruct
{
/*0000*/ char consentee[64]; // Name of player who was consented
/*0064*/ char consenter[64]; // Name of player who consented
/*0128*/ uint8_t allow; // 00 = deny, 01 = allow
/*0129*/ char corpseZoneName[64]; // Zone where the corpse is
/*0193*/
};
/*
** Grouping Infromation
** Length: 452 Octets
** OpCode: OP_GroupUpdate
*/
struct groupUpdateStruct
{
/*0000*/ int32_t action; // Group update action
/*0004*/ char yourname[64]; // Group Member Names
/*0068*/ char membername[64]; // Group leader name
/*0132*/ uint8_t unknown0132[324]; // ***Placeholder
/*456*/
};
/*
** DEPRECATED
** Grouping Infromation
** Length: 768 Octets
** OpCode: OP_GroupUpdate
*/
struct groupFullUpdateStruct
{
/*0000*/ int32_t action;
/*0004*/ char membernames[MAX_GROUP_MEMBERS][64]; // Group Member Names
/*0388*/ char leader[64]; // Group leader Name
/*0452*/ char unknown0452[316]; // ***Placeholder
/*0768*/
};
/*
** Grouping Invite
** Length 148 Octets (invite a player) or 152 (you get invited)
** Opcode OP_GroupInvite
*/
struct groupInviteStruct
{
/*0000*/ char invitee[64]; // Invitee's Name
/*0064*/ char inviter[64]; // Inviter's Name
/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
/*0148*/
};
struct groupAltInviteStruct
{
/*0000*/ char invitee[64]; // Invitee's Name
/*0064*/ char inviter[64]; // Inviter's Name
/*0128*/ uint8_t unknown0128[24]; // ***Placeholder
/*0152*/
};
/*
** Grouping Invite Answer - Decline
** Length 152 Octets
** Opcode GroupDeclineCode
*/
struct groupDeclineStruct
{
/*0000*/ char yourname[64]; // Player Name
/*0064*/ char membername[64]; // Invited Member Name
/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
/*0148*/ uint8_t reason; // Already in Group = 1, Declined Invite = 3
/*0149*/ uint8_t unknown0141[3]; // ***Placeholder
/*0152*/
};
/*
** Grouping Invite Answer - Accept
** Length 148 Octets
** Opcode OP_GroupFollow
*/
struct groupFollowStruct
{
/*0000*/ char unknown0000[64]; // ***Placeholder (zeros)
/*0064*/ char invitee[64]; // Invitee's Member Name
/*0128*/ uint8_t unknown0132[4]; // ***Placeholder
/*0132*/ uint32_t level; // Invitee's level
/*0136*/ uint8_t unknown0136[12]; // ***Placeholder (zeros)
/*0148*/
};
/*
** Group Disbanding
** Length 148 Octets
** Opcode
*/
struct groupDisbandStruct
{
/*0000*/ char yourname[64]; // Player Name
/*0064*/ char membername[64]; // Invited Member Name
/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
/*0148*/
};
/*
** Group Leader Change
** Length 148 Octets
** Opcode OP_GroupLeader
*/
struct groupLeaderChangeStruct
{
/*0000*/ char unknown0000[64]; // ***Placeholder
/*0064*/ char membername[64]; // Invited Member Name
/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
/*0148*/
};
/*
** Delete Self
** Length: 4 Octets
** OpCode: OP_DeleteSpawn
*/
struct deleteSpawnStruct
{
/*0000*/ uint32_t spawnId; // Spawn ID to delete
};
/*
** Remove Spawn
** Length: 5 Octets
** OpCode: OP_RemoveSpawn
*/
struct removeSpawnStruct
{
/*0000*/ uint32_t spawnId; // Spawn ID to delete
/*0004*/ uint8_t removeSpawn; // 0 if spawn is not in your update radius
};
/*
** Remove Drop Item On Ground
** Length: 8 Octets
** OpCode: RemDropCode
*/
struct remDropStruct
{
/*0000*/ uint16_t dropId; // DropID - Guess
/*0002*/ uint8_t unknown0004[2]; // ***Placeholder
/*0004*/ uint16_t spawnId; // Pickup ID - Guess
/*0006*/ uint8_t unknown0008[2]; // ***Placeholder
};
/*
** Consider Struct
** Length: 20 Octets
** OpCode: considerCode
*/
struct considerStruct
{
/*0000*/ uint32_t playerid; // PlayerID
/*0004*/ uint32_t targetid; // TargetID
/*0008*/ int32_t faction; // Faction
/*0012*/ int32_t level; // Level
/*0016*/ int32_t unknown0016; // unknown
/*0020*/
};
/*
** Spell Casted On
** Length: 36 Octets
** OpCode: castOnCode
*/
struct castOnStruct
{
/*0000*/ uint16_t targetId; // Target ID
/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
/*0004*/ int16_t sourceId; // ***Source ID
/*0006*/ uint8_t unknown0006[2]; // ***Placeholder
/*0008*/ uint8_t unknown0008[24]; // might be some spell info?
/*0032*/ uint16_t spellId; // Spell Id
/*0034*/ uint8_t unknown0034[2]; // ***Placeholder
};
/*
** Spawn Death Blow
** Length: 32 Octets
** OpCode: NewCorpseCode
*/
struct newCorpseStruct
{
/*0000*/ uint32_t spawnId; // Id of spawn that died
/*0004*/ uint32_t killerId; // Killer
/*0008*/ uint32_t corpseid; // corpses id
/*0012*/ int32_t type; // corpse type?
/*0016*/ uint32_t spellId; // ID of Spell
/*0020*/ uint16_t zoneId; // Bind zone id
/*0022*/ uint16_t zoneInstance; // Bind zone instance
/*0024*/ uint32_t damage; // Damage
/*0028*/ uint8_t unknown0028[4]; // ***Placeholder
/*0032*/
};
/**
** Environmental damage (lava, falls)
** Length: 31 Octets
*/
struct environmentDamageStruct
{
/*0000*/ uint32_t spawnId; // Who is taking the damage
/*0004*/ uint8_t unknown0004[2];
/*0006*/ uint32_t damage; // how much damage?
/*0010*/ uint8_t unknown0010[12];
/*0022*/ uint8_t type; // Damage type. FC = fall. FA = lava.
/*0023*/ uint8_t unknown0023[8];
};
/*
** Money Loot
** Length: 20 Octets
** OpCode: MoneyOnCorpseCode
*/
struct moneyOnCorpseStruct
{
/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
/*0004*/ uint32_t platinum; // Platinum Pieces
/*0008*/ uint32_t gold; // Gold Pieces
/*0012*/ uint32_t silver; // Silver Pieces
/*0016*/ uint32_t copper; // Copper Pieces
/*0020*/
};
/*
** Stamina
** Length: 8 Octets
** OpCode: staminaCode
*/
struct staminaStruct
{
/*0000*/ uint32_t food; // Hunger, in ticks till next eat
/*0004*/ uint32_t water; // Thirst, in ticks till next eat
/*0008*/
};
/*
** Battle Code
** Length: 28 Octets
** OpCode: ActionCode
*/
// This can be used to gather info on spells cast on us
struct action2Struct
{
/*0000*/ uint16_t target; // Target ID
/*0002*/ uint16_t source; // Source ID
/*0004*/ uint8_t type; // Bash, kick, cast, etc.
/*0005*/ int16_t spell; // SpellID
/*0007*/ int32_t damage;
/*0011*/ uint8_t unknown0011[13]; // ***Placeholder
/*0024*/ uint8_t unknown0024[4]; // ***Placeholder (11/24/07)
/*0028*/
};
// This can be used to gather info on spells cast on us
struct actionStruct
{
/*0000*/ uint16_t target; // Target ID
/*0002*/ uint16_t source; // SourceID
/*0004*/ uint8_t level; // Caster level
/*0005*/ uint8_t unknown0005[17]; // ***Placeholder
/*0022*/ uint8_t type; // Casts, Falls, Bashes, etc...
/*0023*/ int32_t damage; // Amount of Damage
/*0027*/ int16_t spell; // SpellID
/*0029*/ uint8_t unknown0029[2]; // ***Placeholder
/*0031*/
};
// Starting with 2/21/2006, OP_Actions seem to come in pairs, duplicating
// themselves, with the second one with slightly more information. Maybe this
// has to do with buff blocking??
struct actionAltStruct
{
/*0000*/ uint16_t target; // Target ID
/*0002*/ uint16_t source; // SourceID
/*0004*/ uint8_t level; // Caster level
/*0005*/ uint8_t unknown0005[17]; // ***Placeholder
/*0022*/ uint8_t type; // Casts, Falls, Bashes, etc...
/*0023*/ int32_t damage; // Amount of Damage
/*0027*/ int16_t spell; // SpellID
/*0029*/ uint8_t unknown0029[2]; // ***Placeholder
/*0031*/ uint32_t unknown0031;
/*0035*/ uint8_t unknown0035[21];
/*0056*/
};
/*
** client changes target struct
** Length: 4 Octets
** OpCode: clientTargetCode
*/
struct clientTargetStruct
{
/*0000*/ uint32_t newTarget; // Target ID
/*0004*/
};
/*
** Info sent when you start to cast a spell
** Length: 20 Octets
** OpCode: StartCastCode
*/
struct startCastStruct
{
/*0000*/ int32_t slot; // ***Placeholder
/*0004*/ uint32_t spellId; // Spell ID
/*0008*/ int32_t inventorySlot; // ***Placeholder
/*0012*/ uint32_t targetId; // The current selected target
/*0016*/ uint8_t unknown0018[4]; // ***Placeholder
/*0020*/
};
/*
** New Mana Amount
** Length: 20 Octets
** OpCode: manaDecrementCode
*/
struct manaDecrementStruct
{
/*0000*/ int32_t newMana; // New Mana AMount
/*0004*/ int32_t unknown;
/*0008*/ int32_t spellId; // Last Spell Cast
/*0012*/ uint8_t unknown0012[4];
/*0016*/ uint8_t unknown0016[4]; //*** Placeholder (02/13/07)
/*0020*/
};
/*
** Special Message
** Length: 4 Octets + Variable Text Length
** OpCode: SPMesgCode
*/
struct spMesgStruct
{
/*0000*/ int32_t msgType; // Type of message
/*0004*/ char message[0]; // Message, followed by four Octets?
};
/*
** Spell Fade Struct
** Length: 10 Octets
** OpCode: SpellFadedCode
*/
struct spellFadedStruct
{
/*0000*/ uint32_t color; // color of the spell fade message
/*0004*/ char message[0]; // fade message
/*0???*/ uint8_t paddingXXX[3]; // always 0's
};
/*
** Spell Action Struct
** Length: 8 Octets
** OpCode: BeginCastCode
*/
struct beginCastStruct
{
/*0000*/ uint16_t spawnId; // Id of who is casting
/*0002*/ uint16_t spellId; // Id of spell
/*0004*/ int16_t param1; // Paramater 1
/*0006*/ int16_t param2; // Paramater 2
/*0008*/
};
/*
** Spell Action Struct
** Length: 16 Octets
** OpCode: MemSpellCode
*/
struct memSpellStruct
{
/*0000*/ uint32_t slotId; // Slot spell is being memorized in
/*0004*/ uint32_t spellId; // Id of spell
/*0008*/ int16_t param1; // Paramater 1
/*0010*/ int16_t param2; // Paramater 2
/*0012*/ uint8_t unknown0012[4]; // *** Placeholder
/*0016*/
};
/*
** Train Skill
** Length: 12 Octets
** OpCode: SkillTrainCode
*/
struct skillTrainStruct
{
/*0000*/ int32_t playerid; // player doing the training
/*0004*/ int32_t type; // type of training?
/*0008*/ uint32_t skillId; // Id of skill
/*0012*/
};
/*
** Skill Increment
** Length: 8 Octets
** OpCode: SkillIncCode
*/
struct skillIncStruct
{
/*0000*/ uint32_t skillId; // Id of skill
/*0004*/ int32_t value; // New value of skill
/*0008*/
};
/*
** When somebody changes what they're wearing
** or give a pet a weapon (model changes)
** Length: 14 Octets
** Opcode: WearChangeCode
*/
// ZBTEMP: Find newItemID
struct wearChangeStruct
{
/*0000*/ uint16_t spawnId; // SpawnID
/*0002*/ Color_Struct color; // item color
/*0006*/ uint8_t wearSlotId; // Slot ID
/*0007*/ uint8_t unknown0005[7]; // unknown
/*0014*/
};
/*
** Level Update
** Length: 12 Octets
** OpCode: LevelUpUpdateCode
*/
struct levelUpUpdateStruct
{
/*0000*/ uint32_t level; // New level
/*0004*/ uint32_t levelOld; // Old level
/*0008*/ uint32_t exp; // Current Experience
/*0012*/
};
/*
** Experience Update
** Length: 8 Octets
** OpCode: ExpUpdateCode
*/
struct expUpdateStruct
{
/*0000*/ uint32_t exp; // experience value x/330
/*0004*/ uint32_t type; // 0=set, 2=update
/*0008*/
};
/*
** Alternate Experience Update
** Length: 12 Octets
** OpCode: AltExpUpdateCode
*/
struct altExpUpdateStruct
{
/*0000*/ uint32_t altexp; // alt exp x/330
/*0004*/ uint32_t aapoints; // current number of AA points
/*0008*/ uint8_t percent; // percentage in integer form
/*0009*/ uint8_t unknown0009[3]; // ***Place Holder
/*0012*/
};
/**
* Leadership AA update
* Length: 32 Octets
* OpCode: LeadExpUpdate
*/
struct leadExpUpdateStruct
{
/*0000*/ uint32_t unknown0000; // All zeroes?
/*0004*/ uint32_t groupLeadExp; // Group leadership exp value
/*0008*/ uint32_t unspentGroupPoints; // Unspent group points
/*0012*/ uint32_t unknown0012; // Type?
/*0016*/ uint32_t unknown0016; // All zeroes?
/*0020*/ uint32_t raidLeadExp; // Raid leadership exp value
/*0024*/ uint32_t unspentRaidPoints; // Unspent raid points
/*0028*/ uint32_t unknown0028;
};
/*
** Player Spawn Update
** Length: 19 Octets
** OpCode: SpawnUpdateCode
*/
struct SpawnUpdateStruct
{
/*0000*/ uint16_t spawnId; // Id of spawn to update
/*0002*/ uint16_t subcommand; // some sort of subcommand type
/*0004*/ int16_t arg1; // first option
/*0006*/ int16_t arg2; // second option
/*0008*/ uint8_t arg3; // third option?
/*0009*/ uint8_t unknown0009[10];
/*0019*/
};
/*
** NPC Hp Update
** Length: 10 Octets
** Opcode NpcHpUpdateCode
*/
struct hpNpcUpdateStruct
{
/*0000*/ int32_t curHP;
/*0004*/ int32_t maxHP;
/*0008*/ uint16_t spawnId;
/*0010*/
};
/*
** Inspecting Information
** Length: 1860 Octets
** OpCode: InspectDataCode
*/
struct inspectDataStruct
{
/*0000*/ uint8_t unknown0000[8]; // ***Placeholder
/*0008*/ char itemNames[23][64]; // 23 items with names
// 64 characters long.
/*1480*/ int32_t icons[23]; // Icon Information
/*1572*/ char mytext[200]; // Player Defined Text Info
/*1772*/ uint8_t unknown1772[88]; // ***Placeholder
/*1860*/
};
/*
** Reading Book Information
** Length: Variable Length Octets
** OpCode: BookTextCode
*/
struct bookTextStruct
{
/*0000*/ uint16_t unknown0000;
/*0002*/ char text[0]; // Text of item reading
};
/*
** Interrupt Casting
** Length: 6 Octets + Variable Length Octets
** Opcode: BadCastCode
*/
struct badCastStruct
{
/*0000*/ uint32_t spawnId; // Id of who is casting
/*0004*/ char message[0]; // Text Message
};
/*
** Random Number Request
** Length: 8 Octets
** OpCode: RandomCode
*/
struct randomReqStruct
{
/*0000*/ uint32_t bottom; // Low number
/*0004*/ uint32_t top; // High number
};
/*
** Random Number Result
** Length: 76 Octets
** OpCode: RandomCode
*/
struct randomStruct
{
/*0000*/ uint32_t bottom; // Low number
/*0004*/ uint32_t top; // High number
/*0008*/ uint32_t result; // result number
/*0012*/ char name[64]; // name rolled by
/*0076*/
};
/*
** Player Position Update
** Length: 22 Octets
** OpCode: PlayerPosCode
*/
struct playerSpawnPosStruct
{
/*0000*/ uint16_t spawnId;
/*0002*/ signed padding0000:12; // ***Placeholder
signed deltaX:13; // change in x
signed padding0005:7; // ***Placeholder
/*0006*/ signed deltaHeading:10;// change in heading
signed deltaY:13; // change in y
signed padding0006:9; // ***Placeholder
/*0010*/ signed y:19; // y coord
signed animation:10; // animation
signed padding0010:3; // ***Placeholder
/*0014*/ unsigned heading:12; // heading
signed x:19; // x coord
signed padding0014:1; // ***Placeholder
/*0018*/ signed z:19; // z coord
signed deltaZ:13; // change in z
/*0022*/
};
/*
** Self Position Update
** Length: 40 Octets
** OpCode: PlayerPosCode
*/
struct playerSelfPosStruct
{
/*0000*/ uint16_t spawnId; // Player's spawn id
/*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?)
/*0004*/ uint8_t unknown0004[4]; // ***Placeholder
/*0008*/ float x; // x coord (2nd loc value)
/*0012*/ float y; // y coord (1st loc value)
/*0016*/ signed deltaHeading:10; // change in heading
unsigned animation:10; // animation
unsigned padding0016:12; // ***Placeholder
/*0020*/ float deltaX; // Change in x
/*0024*/ float deltaY; // Change in y
/*0028*/ float z; // z coord (3rd loc value)
/*0032*/ float deltaZ; // Change in z
/*0036*/ unsigned padding0036:10; // ***Placeholder
unsigned heading:12; // Directional heading
unsigned padding0037:10; // ***Placeholder
/*0040*/
};
/*
** Spawn Appearance
** Length: 8 Octets
** OpCode: spawnAppearanceCode
*/
struct spawnAppearanceStruct
{
/*0000*/ uint16_t spawnId; // ID of the spawn
/*0002*/ uint16_t type; // Type of data sent
/*0004*/ uint32_t parameter; // Values associated with the type
/*0008*/
};
/*
** Structures that are not being currently used
* (except for logging)
*/
struct bindWoundStruct
{
/*0000*/ uint16_t playerid; // TargetID
/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
/*0004*/ uint32_t hpmaybe; // Hitpoints -- Guess
/*0008*/
};
struct inspectedStruct
{
/*0000*/ uint16_t inspectorid; // Source ID
/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
/*0004*/ uint16_t inspectedid; // Target ID - Should be you
/*0006*/ uint8_t unknown0006[2]; // ***Placeholder
/*0008*/
};
struct attack1Struct
{
/*0000*/ uint16_t spawnId; // Spawn ID
/*0002*/ int16_t param1; // ***Placeholder
/*0004*/ int16_t param2; // ***Placeholder
/*0006*/ int16_t param3; // ***Placeholder
/*0008*/ int16_t param4; // ***Placeholder
/*0010*/ int16_t param5; // ***Placeholder
/*0012*/
};
struct attack2Struct
{
/*0000*/ uint16_t spawnId; // Spawn ID
/*0002*/ int16_t param1; // ***Placeholder
/*0004*/ int16_t param2; // ***Placeholder
/*0006*/ int16_t param3; // ***Placeholder
/*0008*/ int16_t param4; // ***Placeholder
/*0010*/ int16_t param5; // ***Placeholder
/*0012*/
};
struct newGuildInZoneStruct
{
/*0000*/ uint8_t unknown0000[8]; // ***Placeholder
/*0008*/ char guildname[56]; // Guildname
/*0064*/
};
struct moneyUpdateStruct
{
/*0000*/ uint32_t spawnid; // ***Placeholder
/*0004*/ uint32_t cointype; // Coin Type
/*0008*/ uint32_t amount; // Amount
/*0012*/
};
/* Memorize slot operations, mem, forget, etc */
struct memorizeSlotStruct
{
/*0000*/ uint32_t slot; // Memorization slot (0-7)
/*0004*/ uint32_t spellId; // Id of spell
// (offset of spell in spdat.eff)
/*0008*/ uint32_t action; // 1-memming,0-scribing,2-forget
/*0012*/
};
struct cRunToggleStruct
{
/*0000*/ uint32_t status; //01=run 00=walk
};
struct cChatFiltersStruct
{
/*0000*/ uint32_t DamageShields; //00=on 01=off
/*0004*/ uint32_t NPCSpells; //00=on 01=off
/*0008*/ uint32_t PCSpells; //00=all 01=off 02=grp
/*0012*/ uint32_t BardSongs; //00=all 01=me 02=grp 03=off
/*0016*/ uint32_t Unused;
/*0020*/ uint32_t GuildChat; //00=off 01=on
/*0024*/ uint32_t Socials; //00=off 01=on
/*0028*/ uint32_t GroupChat; //00=off 01=on
/*0032*/ uint32_t Shouts; //00=off 01=on
/*0036*/ uint32_t Auctions; //00=off 01=on
/*0040*/ uint32_t OOC; //00=off 01=on
/*0044*/ uint32_t MyMisses; //00=off 01=on
/*0048*/ uint32_t OthersMisses; //00=off 01=on
/*0052*/ uint32_t OthersHits; //00=off 01=on
/*0056*/ uint32_t AttackerMisses; //00=off 01=on
/*0060*/ uint32_t CriticalSpells; //00=all 01=me 02=off
/*0064*/ uint32_t CriticalMelee; //00=all 01=me 02=off
/*0068*/
};
struct cOpenSpellBookStruct
{
/*0000*/ int32_t status; //01=open 00=close
/*0004*/
};
struct tradeSpellBookSlotsStruct
{
/*0000*/ uint32_t slot1;
/*0004*/ uint32_t slot2;
/*0008*/
};
/*
** serverLFGStruct
** Length: 10 Octets
** signifies LFG, maybe afk, role, ld, etc
*/
struct serverLFGStruct
{
/*0000*/ uint16_t spawnID;
/*0002*/ uint16_t unknown0004;
/*0004*/ uint16_t LFG; //1=LFG
/*0006*/ uint16_t unknown0008;
/*0008*/
};
/*
** clientLFGStruct
** Length: 70 Octets
** signifies LFG, maybe afk, role, ld, etc
*/
struct clientLFGStruct
{
/*0000*/ uint8_t name[64];
/*0064*/ uint16_t LFG; //1=LFG
/*0066*/ uint16_t unknown0008;
};
/*
** buffStruct
** Length: 34 Octets
**
*/
struct buffStruct
{
/*0000*/ uint32_t spawnid; //spawn id
/*0004*/ uint8_t unknown0004[4];
/*0008*/ uint32_t spellid; // spellid
/*0012*/ uint32_t duration; // duration
/*0016*/ uint8_t unknown0012[8];
/*0024*/ uint32_t playerId; // Player id who cast the buff
/*0028*/ uint32_t spellslot; // spellslot
/*0032*/ uint32_t changetype; // 1=buff fading,2=buff duration
/*0034*/
};
/*
** Guild Member Update structure
** Length: 76 octets
**
*/
struct GuildMemberUpdate
{
/*000*/ uint32_t guildId; // guild id
/*004*/ char name[64]; // member name
/*068*/ uint16_t zoneId; // zone id
/*070*/ uint16_t zoneInstance; // zone instance
/*072*/ uint32_t lastOn; // time the player was last on.
/*076*/
};
/*
** Bazaar trader on/off struct
** Length: 8 Octets
**
*/
struct bazaarTraderRequest
{
/*000*/ uint32_t spawnId; // Spawn id of person turning trader on/off
/*004*/ uint8_t mode; // 0=off, 1=on
/*005*/ uint8_t uknown005[3]; //
/*008*/
};
struct bazaarSearchQueryStruct
{
uint32_t mark;
uint32_t type;
char unknownXXX0[20]; // Value seems to always be the same
char searchstring[64];
uint32_t unknownXXX1;
uint32_t unknownXXX2;
};
struct bazaarSearchResponseStruct
{
uint32_t mark;
uint32_t count;
uint32_t item_id;
uint32_t player_id;
uint32_t price;
uint32_t status; // XXX Still poorly understood. 0=simple search
char item_name[64]; // nul-padded name with appended "(count)"
};
/*
** Item Bazaar Search Result
** Length: Variable
** OpCode: BazaarSearch
*/
union bazaarSearchStruct
{
uint32_t mark;
struct bazaarSearchQueryStruct query;
struct bazaarSearchResponseStruct response[];
};
/*******************************/
/* World Server Structs */
/*
** Guild List (from world server)
** Length: 96 Octets
** used in: worldGuildList
*/
struct guildListStruct
{
/*0000*/ char guildName[64];
};
/*
** Guild List (from world server)
** Length: 96064 Octets
*/
struct worldGuildListStruct
{
/*000*/ guildListStruct dummy;
/*064*/ guildListStruct guilds[MAX_GUILDS];
};
struct worldMOTDStruct
{
/*002*/ char message[0];
/*???*/ uint8_t unknownXXX[3];
};
// Restore structure packing to default
#pragma pack()
#endif // EQSTRUCT_H
//. .7...6....,X....D4.M.\.....P.v..>..W....
//123456789012345678901234567890123456789012
//000000000111111111122222222223333333333444
|
 |
|
 |

03-24-2010, 04:28 AM
|
Administrator
|
|
Join Date: Sep 2006
Posts: 1,348
|
|
Got the client to send the login info but our reply packet is wrong so it just hangs. Will take some time to figure it out.
The good news is the encryption is unchanged.
|

03-24-2010, 05:04 PM
|
Discordant
|
|
Join Date: Dec 2005
Posts: 435
|
|
This is all very good news. Wishing you guys the best with this project.
|

03-24-2010, 06:03 PM
|
Developer
|
|
Join Date: Feb 2004
Location: UK
Posts: 1,540
|
|
Just a brief update:
We can get to character select with the SoD client. The next step is to work out the correct Player Profile structure in order to be able to enter a zone. I don't anticipate that will take more than a few days. There will still be a fair bit to do from that point though to get things playable.
|
Thread Tools |
|
Display Modes |
Hybrid Mode
|
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 01:41 AM.
|
|
 |
|
 |
|
|
|
 |
|
 |
|
 |