• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!
Arhowk
Reaction score
25

Profile posts Latest activity Postings Experience Resources About

  • Hi, you may not know this, but Abyss ORPG is actually still played quite a bit. I'm writing this message to all of the most recent devs in hopes it gets seen. I'm not asking for anything major, but could you please make it so that the conversion of 1 mil gold to 1 lumber works again with reforged? At the moment, with the new gold cap, it's bugged.
    Less important since there is a workaround: the Shadowblade going from tier 1 to tier 2 is bugged and does not work on 1.4.5.2, but it does work on 1.4.3.
    Hey what happened to your order sync system? Was there a reason nobody used it? I only recently discovered it over a year after I created my sync library and I'm curious.
    Hi, you know how to increase the characters allowed in the game chat (WC3-Frozen Throne - Dota), has a limit of 127 characters. Please help.
    So do you still have selection enabled? When a player selects the item it desync's doesn't it?
    Well I only made the item local, if I made a dummy item with no model for everyone else it would work?
    Hey Howk I need your help. *turns on the Arhowk Signal* =)

    Though yeah I really do need your help since not many people on hive has adventured into this area, its about locally creating items. I've run into quite a few problems however I think I know how to fix most of them by making a duplicate item at the exact same spot with no model and same abilities as the item for that one player. However there's one thing bugging me and its that people desync if you click on your item. Is there stuff you couldn't fix?

    Edit: Would hiding and then unhiding work better? Like make the item for everyone then move an item there with no model for everyone else so pathing doesn't mess up? Also that one thing that bugged me is when a player selects the object/item.... Does it check pathing?
    Ah... lol, that's awesome. He's even hated more now in that horri-bad community... Dey don't even know the meaning of insult. Still fun to game with them. =)
    Ever since you left the community and garf is MIA.... Dayne is now working on a variation of banjo ball.... He's getting toxified/rushed. lol. Figured you might want an update. =P
    A hero and 144 items per code? That's incredible.
    Btw, what are you doing differently than Nestharus that yours is so much faster?
    I would love to have my hands on something like this eventually. How much data can it store?
    I've wanted to add ELO ranking myself, actually, but didn't have time.
    I tried once to do it Nestharus' codeless save/load, but the syncing time was too long for some reason :O
    If you're willing, then sure, it'd be great addition, but how did you think of doing it? With save codes?
    Hey there, your report about this user below me has been handled with yesterday. I got to banned him through infraction. Kindly, just delete the VM he sended to you, that is all. Thank you!
    The issue is that you forgot the first 4 bytes which are always "MDLX".

    As a side note, prefer to use types from stdint.h rather than your own typedefs, since they will always be of the proper size.
    int/uint matters when numbers are either negative (if you read them in as uint you will get a huge positive number instead), or very big (> 2^30, in which case if you read them as int, you will get negative numbers).

    For MDX specifically it almost never matters, but the keyframes should use int because (while I am not sure if this is valid in-game) I have seen a model with negative frames.
    Another place is references, e.g. material ID references, texture animation ID references, and so on. The format uses the number -1 to say the reference is NULL. If you read that as int, it's indeed -1, if you read that as uint, it's 2^31-1 (in my code I used the uint representation for some reason, which is why you can see the number 4294967295 everywhere).

    All Blizzard games use small endian as far as I know, so that the least important byte is read first. Unless you are on a big endian machine (which is very unlikely), any sort of reading mechanism will give you the correct number.

    Floats are saved as binary in the IEEE 754 format. Simply read the bytes into a float variable.

    Assuming you have a C FILE* (or use some C++ equivalent):

    FILE* fp = ...
    int i;
    float f;

    fread(&i, 4, 1, fp);
    fread(&f, 4, 1, fp);
    I mostly work with interpreted languages, so I use a simple text editor (SciTe).
    For C/C++ I use MSVC.
    Well in C++ you have no dynamic typing or first class citizen functions, so you will have to have a big if/elseif block for the chunk loading (and many other things), and return a struct/class.

    E.g.:

    class Parser {
    VersionChunk versionChunk;
    ModelChunk modelChunk;
    ...
    };

    And when parsing:

    if (tag == "VERS") {
    parser.versionChunk = VersionChunk(reader);
    } else if (tag == "MODL") {
    parser.modelChunk = ModelChunk(reader);
    }

    and so on
  • Loading…
  • Loading…
  • Loading…
  • Loading…
  • Loading…
Top