VGOEmulator.net

A Development Project for the Vanguard:Saga of Heroes MMO

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • Portal
  • Project Manager
  • Bug Tracker
  • Server List
  • Wiki
  • Donate
  • Login
  • Register
  • Board index Development Content Development
  • Search

Item "Types"

VGOEmulator content development topics.

Moderators: Moldew, Jakkal

Post Reply
Advanced search
5 posts • Page 1 of 1
User avatar
John Adams
Retired
Posts: 4583
Joined: Wed Aug 28, 2013 9:40 am
Location: Phoenix, AZ.
Contact:
Contact John Adams
Website
Item "Types"
  • Quote

Post by John Adams » Mon Jul 21, 2014 7:01 am

Xinux (you sure are my favorite, aren't you?) Let's talk Items parsing.

First Part:
I am going to work exclusively on Items this week, and my goal is to break them apart by "type" like we did with EQ2 parser. My question to you is, I see a "type_text" in VGParser that says stuff like "Armor.Chain.Gloves". Is that the only place that tells me this item is "Armor"? Or is there another simplified value somewhere? I could always split that value and take the 1st part and use that, as long as it is consistent across all our items.
item_type.png
Edit: Crap, answered my own question - inconsistent, of course. I need a conistent way to tell what kind of item it is. An ID preferred, if any.

item_type2.png
Second Part:
I'm looking for commonalities between all items, to put into the main `items` table, then break armor, weapon, scroll (etc) abilities into their own specific tables. Is this even possible, or does every item require every field? Example, if a BP has 250 mit, does the field "mit" need to be pushed to scroll items? Maybe I am over-thinking this, because I think EQ2's items work same as VG - it's just a packet with stuff in it and the server uses whatever stuff we send, and we send it all even if they are not used.

Might be too early for me to be thinking of this. But, tell me your thoughts if any. Going to start on First Part today.
You do not have the required permissions to view the files attached to this post.
Top

Zewtastic
Posts: 527
Joined: Wed Jan 29, 2014 12:28 pm
Location: Sunny Sacramento CA. USA
Re: Item "Types"
  • Quote

Post by Zewtastic » Mon Jul 21, 2014 9:27 am

John I am not familiar with how items look in "packets", but generally when I added a new item to my database I would have to set:

Sphere
Type
Slot


So I could categorize the item. Mind you I made up mine to match items I would see.

[img]http://s20.postimg.org/qb94wcll9/spheres.jpg[/img]
[img]http://s20.postimg.org/qpagvy5ot/types.jpg[/img]
[img]http://s20.postimg.org/tknk2t9ot/slots.jpg[/img]
Top

User avatar
Xinux
Project Leader
Project Leader
Posts: 2549
Joined: Wed Aug 28, 2013 2:20 pm
Re: Item "Types"
  • Quote

Post by Xinux » Mon Jul 21, 2014 11:09 am

What you want is required_sphere and here is the breakdown.

Code: Select all

    case 0:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Adventuring Shield");
      break;
    case 1:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Adventuring Weapon");
      break;
    case 2:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Crafting Tool");
      break;
    case 3:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Diplomatic Weapon");
      break;
    case 4:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Adventuring Armor");
      break;
    case 5:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Crafting Clothes");
      break;
    case 6:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Diplomatic Clothes");
      break;
    case 7:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Crafting Component");
      break;
    case 22:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Crafting Resource");
      break;
    case 8:
    case 23:
    case 24:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Miscellaneous");
      break;
    case 9:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Ranged Weapon");
      break;
    case 10:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Diplomatic Jewelry");
      break;
    case 11:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Adventuring Bag");
      break;
    case 12:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Crafting Bag");
      break;
    case 13:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Adventuring Jewelry");
      break;
    case 14:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Focus Item");
      break;
    case 15:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Harvesting Clothes");
      break;
    case 16:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Harvesting Tool");
      break;
    case 17:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Harvesting Bag");
      break;
    case 18:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Diplomatic Bag");
      break;
    case 19:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Musical Instrument");
      break;
    case 20:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Ranged Ammo");
      break;
    case 21:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Thrown Weapon");
      break;
    case 25:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"House Furniture");
      break;
    case 26:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Fishing");
      break;
    case 27:
      v2 = a1;
      _BasicString__BasicString(a1, (char *)L"Enhancements");
      break;
    default:
      v2 = a1;
      *(_DWORD *)(a1 + 24) = 7;
      *(_DWORD *)(a1 + 20) = 0;
      *(_WORD *)(a1 + 4) = 0;
      _BasicString__opEquals_wchar_(a1, (char *)L"Unknown", 7);
      break;
  }

Now if you want to break it down further i just noticed unknown_73 seem's to be type or whatever you want to call it which matches this.

Code: Select all

  word_19247C8 = 0;
  if ( a1 > 600 )
  {
    if ( a1 != 601 )
      return &word_19247C8;
    v10 = (int)L"FULLSUIT";
LABEL_56:
    sub_ABF690(&word_19247C8, v10);
    return &word_19247C8;
  }
  if ( a1 == 600 )
  {
    v10 = (int)L"TEST";
    goto LABEL_56;
  }
  switch ( a1 )
  {
    case 0:
      sub_ABF690(&word_19247C8, L"EYE");
      *(_DWORD *)a3 = 0;
      *(_DWORD *)a4 = 1;
      return &word_19247C8;
    case 1:
      v5 = (int)L"HAIR_BANGS";
      goto LABEL_6;
    case 2:
      sub_ABF690(&word_19247C8, L"HAIR_TOP");
      *(_DWORD *)a2 = 1;
      return &word_19247C8;
    case 3:
      v6 = (int)L"HAIR_BACK";
      goto LABEL_9;
    case 4:
      sub_ABF690(&word_19247C8, L"HAIR_SIDES");
      *(_DWORD *)a2 = 1;
      *(_DWORD *)a4 = 1;
      return &word_19247C8;
    case 5:
      v6 = (int)L"HAIR_PONYTAIL";
      goto LABEL_9;
    case 6:
      v5 = (int)L"HAIR_FACE";
LABEL_6:
      sub_ABF690(&word_19247C8, v5);
      *(_DWORD *)a2 = 1;
      return &word_19247C8;
    case 21:
      v7 = (int)L"TOOL";
      goto LABEL_14;
    case 22:
      v8 = (int)L"AXE";
      goto LABEL_16;
    case 23:
      v9 = (int)L"BOW";
      goto LABEL_18;
    case 24:
      v7 = (int)L"CLUB";
      goto LABEL_14;
    case 25:
      v8 = (int)L"CROSSBOW";
      goto LABEL_16;
    case 26:
      v9 = (int)L"DAGGER";
      goto LABEL_18;
    case 27:
      v7 = (int)L"FLAIL";
      goto LABEL_14;
    case 28:
      v8 = (int)L"HAMMER";
      goto LABEL_16;
    case 29:
      v9 = (int)L"MACE";
      goto LABEL_18;
    case 30:
      v7 = (int)L"POLEARM";
      goto LABEL_14;
    case 31:
      v8 = (int)L"STAFF";
      goto LABEL_16;
    case 32:
      v9 = (int)L"THROWN";
      goto LABEL_18;
    case 33:
      v7 = (int)L"SWORD";
      goto LABEL_14;
    case 34:
      v8 = (int)L"SHIELD";
      goto LABEL_16;
    case 35:
      v9 = (int)L"SPEAR";
      goto LABEL_18;
    case 36:
      v7 = (int)L"FIST";
      goto LABEL_14;
    case 37:
      v8 = (int)L"SPADE";
      goto LABEL_16;
    case 38:
      v9 = (int)L"KNIFE";
      goto LABEL_18;
    case 39:
      v7 = (int)L"MARTIALFIST";
      goto LABEL_14;
    case 40:
      v8 = (int)L"MARTIALSWORD";
      goto LABEL_16;
    case 41:
      v9 = (int)L"MARTIALSTAFF";
LABEL_18:
      sub_ABF690(&word_19247C8, v9);
      *(_DWORD *)a3 = 0;
      return &word_19247C8;
    case 42:
      v7 = (int)L"FOCUS";
LABEL_14:
      sub_ABF690(&word_19247C8, v7);
      *(_DWORD *)a3 = 0;
      return &word_19247C8;
    case 43:
      v8 = (int)L"BARD";
LABEL_16:
      sub_ABF690(&word_19247C8, v8);
      *(_DWORD *)a3 = 0;
      return &word_19247C8;
    case 7:
      v10 = (int)L"ARM";
      goto LABEL_56;
    case 8:
      v10 = (int)L"BACK";
      goto LABEL_56;
    case 9:
      v10 = (int)L"CHEST";
      goto LABEL_56;
    case 10:
      sub_ABF690(&word_19247C8, L"EAR");
      *(_DWORD *)a4 = 1;
      return &word_19247C8;
    case 11:
      v10 = (int)L"FACE";
      goto LABEL_56;
    case 12:
      v10 = (int)L"FEET";
      goto LABEL_56;
    case 13:
      sub_ABF690(&word_19247C8, L"FINGER");
      *(_DWORD *)a4 = 1;
      return &word_19247C8;
    case 14:
      v10 = (int)L"HAND";
      goto LABEL_56;
    case 15:
      v6 = (int)L"HEAD";
LABEL_9:
      sub_ABF690(&word_19247C8, v6);
      *(_DWORD *)a2 = 1;
      return &word_19247C8;
    case 16:
      v10 = (int)L"LEG";
      goto LABEL_56;
    case 17:
      v10 = (int)L"NECK";
      goto LABEL_56;
    case 18:
      v10 = (int)L"SHOULDER";
      goto LABEL_56;
    case 19:
      v10 = (int)L"WAIST";
      goto LABEL_56;
    case 20:
      v10 = (int)L"WRIST";
      goto LABEL_56;
    default:
      return &word_19247C8;
  }
  return &word_19247C8;
Top

User avatar
John Adams
Retired
Posts: 4583
Joined: Wed Aug 28, 2013 9:40 am
Location: Phoenix, AZ.
Contact:
Contact John Adams
Website
Re: Item "Types"
  • Quote

Post by John Adams » Mon Jul 21, 2014 12:15 pm

These two posts are helpful, thank you. I probably do not want to break it down using your second enum, but the first one looks like what I am after. I'll mess with that a little more today.
Top

Zewtastic
Posts: 527
Joined: Wed Jan 29, 2014 12:28 pm
Location: Sunny Sacramento CA. USA
Re: Item "Types"
  • Quote

Post by Zewtastic » Thu Jul 31, 2014 11:44 pm

Item type:
27 = Melee Damage Rating
26 = Melee Accuracy Rating
34 = Spell Evasion Rating
Top


Post Reply

5 posts • Page 1 of 1

Return to “Content Development”

Jump to
  • Information
  • ↳   Announcements
  • ↳   Dev Chats
  • ↳   Events
  • Community
  • ↳   General Discussions
  • ↳   VGO Team Help Requests
  • ↳   Introductions
  • ↳   Game Features
  • ↳   Wish List
  • ↳   Off-Topic
  • Support
  • ↳   How-To's
  • ↳   General Support
  • ↳   Windows
  • ↳   Linux
  • Development
  • ↳   Content Development
  • ↳   Thestra Adventuring
  • ↳   Qalia Adventuring
  • ↳   Kojan Adventuring
  • ↳   Crafting/Harvesting
  • Bugs
  • ↳   Server Bugs
  • ↳   Server Bugs (Closed)
  • ↳   Content Bugs
  • ↳   Content Bugs (Closed)
  • ↳   Database Bugs
  • ↳   Tools Bugs
  • Board index
  • All times are UTC-07:00
  • Delete cookies
  • Contact us
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD