This is a read only copy without any forum functionality of the old Modcraft forum.
If there is anything that you would like to have removed, message me on Discord via Kaev#5208.
Big thanks to Alastor for making this copy!

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Kranimal

Pages: 1 2 [3] 4 5 6
31
"Retro-Porting" / Re: [Solved] Regarding WMO Collison in Blender
« on: January 27, 2015, 03:19:24 pm »
Quote from: "Kranimal"
I use Machinima Studio to export the .wmo models from Cata/Mop/Wod to .obj so I can convert them down to WOTLK. I also export the Collison when I export it from Machinima Studio. When I load the object up in blender it shows the Collison as a white texture which covers the entire model (for the most part), which I assume it is suppose to do cause it is the collison. In the outliner it is labeled with the model name and the number is 255 ALWAYS  for the collison.

So far so good, now I know I can delete it and still use the model fully textured. Doing that makes it so when a player is in game and runs up the stairs for those models, they will get stuck on the stairs or on a crack cause I deleted the collison.

What I need to know (very badly I might add lol), is how to make that white texture (the collison) transparent in blender so I can use the blizzlike collison on the models I export, to avoid having the above happen.

You can see what I am talking about if you would like, you can download the trial version of Machinima Studio and it will export the .wmo's as an .obj, just has a 10 sec delay when you do.

If any of you blender people out there might know how to do this please let me know, is getting rather frustrating lol :).

Thanks,
Kranimal

I figured it out, the way you use the wow collision but make it transparent (at least the way I figured out) is to create a 512x512 png that is transparent completely using gimp then add it to the collision texture in blender. After you export the .obj and use mirror machine to convert it to .wmo, use the 010 editor and wmo template to load it up, then change the blend for that texture you assigned to collision to 1. Now you have blizzlike collision on the model without the white texture that Machinima Studio exports it to obj with =D.

Hope this helps anybody that was trying to do the same thing :).

EDIT: also don't forget to convert the tansparent image to .blp format :).

32
"Retro-Porting" / [Solved] Regarding WMO Collison in Blender
« on: January 27, 2015, 02:16:08 am »
I use Machinima Studio to export the .wmo models from Cata/Mop/Wod to .obj so I can convert them down to WOTLK. I also export the Collison when I export it from Machinima Studio. When I load the object up in blender it shows the Collison as a white texture which covers the entire model (for the most part), which I assume it is suppose to do cause it is the collison. In the outliner it is labeled with the model name and the number is 255 ALWAYS  for the collison.

So far so good, now I know I can delete it and still use the model fully textured. Doing that makes it so when a player is in game and runs up the stairs for those models, they will get stuck on the stairs or on a crack cause I deleted the collison.

What I need to know (very badly I might add lol), is how to make that white texture (the collison) transparent in blender so I can use the blizzlike collison on the models I export, to avoid having the above happen.

You can see what I am talking about if you would like, you can download the trial version of Machinima Studio and it will export the .wmo's as an .obj, just has a 10 sec delay when you do.

If any of you blender people out there might know how to do this please let me know, is getting rather frustrating lol :).

Thanks,
Kranimal

33
Quote from: "Kaev"
Quote from: "xJKz"
Why, did you only work on the 3.3.5a...?
Probably because 3.3.5 has the best and most stable server cores, that you can find. :)

I would have to agree with this, as much as I want to move onto a different corerepack to do the world building with. Right now anything past WOTLK just feels incomplete as ALOT of the core features like:

Player Spells
Player Talents
Item Stats
etc.. etc..

Are still incomplete.

The next step I will be taking is moving onto Cata, but I won't do that until the base of the code (all the player related things) are at 100%. Till then I will be sticking with WOTLK.

Also, i have put my world building on hold until the updates to the tools are done (either Noggit or the new WoWDev) so that the world building is a bit easier to handle. (right now there is just a bunch off issues that make it hard to keep up with).

Not saying the tools aren't great cause I am still fiddling around with stuff, just not gonna take it to the next step or as serious until the next update.

Which reminds me I want to pat everybody on the back and say thank you for all the tools that have been created or worked on and all the tools that are currently being created and worked on. Without you people creating these tools I wouldn't have this hobby (which I still find fun by the way).

So "THANK YOU" and keep up the good work =D, I see alot of things changing in the community once these updates or tools are released.

Kranimal

34
Resources and Tools / Re: Need a c++ Coders Help =D
« on: January 16, 2015, 11:22:31 pm »
Quote from: "phantomx"
Quote from: "Kranimal"
Quote from: "schlumpf"
The error is in here:
Quote
Code: [Select]
if((baselevel - getHeightValue2(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k+1)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k+1)) >= baselevel  )


I still can't seem to figure out what the error is (math is really not my strong suit, which for a coder seems to be a must .../hits head on metal beam). So I give lol, could you be a little more precise on what the error is :P?

Been tinkering with that section of code ever since you answered and still a no go :(

Look closer, it's staring you in the face.

I have tried so many different variations of this section of code for over a month no that I couldn't even tell you which ones I have and have not tried. (except for the correct one of course lol).

The one I do remember is that

if((baselevel - getHeightValue2(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k+1)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k+1)) >= baselevel  )

is suppose to be

if((baselevel - getHeightValue2(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+1+k)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+1+k)) >= baselevel  )

I think anyway lol. So if I want to change what it does do I change

if((baselevel - getHeightValue2(j*8+k)) >= baselevel

to one of the 4 options below it?

example if((baselevel - getHeightValue((j+1)*8+1+k)) >= baselevel

or am I WWAAAYYYYYYYYY of base here lol?

35
Resources and Tools / Re: Need a c++ Coders Help =D
« on: January 16, 2015, 08:24:06 pm »
Quote from: "schlumpf"
The error is in here:
Quote
Code: [Select]
if((baselevel - getHeightValue2(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k+1)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k+1)) >= baselevel  )


I still can't seem to figure out what the error is (math is really not my strong suit, which for a coder seems to be a must .../hits head on metal beam). So I give lol, could you be a little more precise on what the error is :P?

Been tinkering with that section of code ever since you answered and still a no go :(

36
"Retro-Porting" / Re: [QUESTION] Converting WOD WMO to LK
« on: January 12, 2015, 05:33:02 pm »
Quote from: "tehrob"
How do i convert the wmo?

I didn't have time this weekend to get to make the guide, but I should be able to this next weekend (barring nothing else gets in the way lol). Just had alot of stuff going on, but I am making it :P.

37
"Retro-Porting" / Re: [QUESTION] Converting WOD WMO to LK
« on: January 09, 2015, 08:09:55 am »
Quote from: "phantomx"
If you want an actual tutorial on how to port them to wotlk I might make one this week if I have time.

P.S

It's a lot simpler then you think.

Dude, that would save me (and I am sure MANY others) a whole lot of time and patch space. Right now I have 2 texture patches in my Wow folder, one with textures in blizzards file structure then a single folder with all the textures in it without any sub folders.

Machinima Studio doesn't export the texture paths in wow's file structure but instead the path to the textures on your hard drive. So to save time I just edit the .mtl with notepad++ to delete the path and let Mirror Machine do the custom path I made for me (hence the 2nd patch with only a folder and ALL .blps in it lol).

I know, I know.... it's lazy, but man doing it the why I know how to do it is bloody time consuming to no end, and I create and delete a ton of files to reach the end result, just way to many steps that way  lol.

38
"Retro-Porting" / Re: [QUESTION] Converting WOD WMO to LK
« on: January 08, 2015, 08:32:54 pm »
Quote from: "tehrob"
How do i convert the wmo?

The way I do it is use Machinima Studio (trial version works just has 10 sec delay on export) to export the .WMO as a .OBJ. Load the .OBJ into Blender and delete all the 255 out of the obj, export it as obj again with the proper settings.

Then use Mirror Machine to convert it back to .WMO format (though if the .OBJ file is HUGE like "The Great Wall" from mop it will crash and not convert it so there are some things you can't do that with.)

Last but not least I use the WMO Editor to add all the .M2 files you want in the wmo (better to do it that way then to do each .m2 in noggit).

I have to leave for work soon so can't really go more in depth with it, but at some point this weekend I am goin to make a Tut on how to do this to make things a bit clearer.

(to be honest though if there is a way to hex edit the .wmo files to convert them down to 3.3.5a and work in noggit/ and in game I would rather do that, just like you I NEVER found any type of tut or guide on how to do this with the 010 editor, just bits and pieces of info here and there which never really helped me)

I got .m2 conversion down pat by per luck lol, which I might add took MONTHS of info digging before I could finally do it, which is why I am confused on the whole lack of INFO for the .wmo files as they are one of the MOST IMPORTANT part of the game which is why I figured there would be more tuts and guides just seems nobody want to release/ do it.

So probably Sat or Sun I will post the way I know how to do it in a guide (but I am sure there is a batter way)

cheers,
Kranimal

39
Resources and Tools / [Question] Bat file with AllWater
« on: January 04, 2015, 02:18:26 am »
Is there a way to use a bat file with AllWater and still use the options instead of having to go one by one?

I know it has the default options that you can use a bat file with but I want to be able to set the options in the bat file then run that on all the adts in the folder, anybody know how I would go about doing that maybe an example or something of that sort?

Would be much appreciated (just entered the world of using .bat files and realized it makes things a ton easier lol)

40
Random / Happy New Year Everybody!!!
« on: January 01, 2015, 10:55:47 am »
It is now officially 2015 =D, best wishes to everybody for the new year and to looking at some great things to come for Wow Modding. (Noggit 1.4, can't wait for it lol).

Cheers,
Kranimal

41
Random / Looking to get into programming
« on: December 28, 2014, 03:33:22 pm »
Figured I would ask here as alot of tools and such are created for Wow Modding by the people of this site. I am looking to get into programming and what not (gonna be self taught), and wondering what we be a good first language to learn. After a little research I narrowed it down to 2 languages languages to which I understand are the main programming languages for windows (correct me if I am wrong), and was wondering which would be the better one to start with?

C# and C++

What are the merits of one over the other or are the pretty much the same when it comes to the basics just the code is a little different. Just wanting to make a good first choice and figured you all would be the people to ask =D.

Kranimal

42
FuTa / Re: [Issue] Alpha Map Importing
« on: December 22, 2014, 11:01:09 pm »
Quote from: "Steff"
The importer simple dont work clean.  You must clean up the glitches in noggit.

Well bummer, glad to know that... still better than having to completely do it by hand... touching up is nothing compared to that lol

Thanks for letting me know Steff and have a Merry Christmas =D

43
FuTa / Re: [Issue] Alpha Map Importing
« on: December 20, 2014, 06:44:31 pm »
I am still having this issue and have not resolved it as of yet, still shows up in game and what not like it does in the video.

I am using gimp to do all this as I don't have photoshop, is there something in gimp that screws it up, I have tried the futa from the tut pack and the newer one futa 2.0 and both still do the samething, maybe its the image?

so many different things that it could be I don't know where to start lol.... I would love to get this working cause my texturing by hand is seriously sub-par to what I could do with alphamaps.

Anybody else come across this issue that got it fixed or aomebody that would know how to fix this? Or do I just need to get photoshop and try using that?

44
"Retro-Porting" / [Tool] Anthonys Particle Fixer 010 Script
« on: December 19, 2014, 01:41:57 am »
Before anybody says anything and like the title says I did not make this script, all credits go to Anthony as he is the one who made it =D.

I have seen alot of posts on many forums lately of people looking for this and I just happened to stumble across it so I am putting it here where most people would go to look for it (at least I think). Anyway, enjoy =D



Code: [Select]
// -----------------------------------
// --- 010 Editor v1.2 Script File
//
// Name: Cata / MoP 5.1.0 M2 Particle Fixer
// Author: Anthony Vang aka Kronixusa
// Revision: 1.3
// Purpose: Deletes Bytes between particle data
// And re-inserts at the end.
// -----------------------------------
RequiresVersion (4.0);
RequiresFile ();

// Define variables
int i, count;
int emitofs;

// Reads the value at 0x128 which is the amount of emitters
// This file has.

count = ReadUInt (0x128);

// Check count
if (count <= 1)
{

FileClose ();
return -1;
}

// Reads Value at 0x12c which the ofset location for the Emitter
// The sets the cursor to it and begins operation.

emitofs = ReadUInt (0x12c);
SetCursorPos (emitofs);

// Moves forward 476 bytes then deletes 16bytes that seperate the
// Emitter entries so they are next to each other.

for (i = 0; i <count; i ++)
{
SetCursorPos (GetCursorPos () + 476);
DeleteBytes (GetCursorPos (), 16);
}

// Paste 16 bytes of 0x0, amount defined by value in 0x128

for (i = 0; i <count; i ++)
{
GetCursorPos ();
InsertBytes (GetCursorPos (), 16);
WriteUInt (GetCursorPos (), 0x0000);
SetSelection (GetCursorPos (), 0);

}

FileSave ();
FileClose ();

45
Resources and Tools / Need a c++ Coders Help =D
« on: December 13, 2014, 03:49:01 pm »
I love AllOcean3.0, I just have one problem with it.... It does what it is suppose to do, just it leaves some cracks up against the land where its empty space and water missing. To fix this I want AllOcean3.0 to fill in from a height of zero where there is land plus 1 chunk into the land.

Basically how do I make it fill 1 chunk in further then what it does. Here is the code below

Code: [Select]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

#define DESCRIPTION "Fills the ADT with ocean 3.* style where no terrain is above 0."
#define ARGUMENTS "<map filename> [<depthfactor>]"

#define USAGE( minimumArguments, argc, argv )
if( argc < minimumArguments + 1 )
{
printf( "  %sn", argv[0] );
printf( "    " DESCRIPTION "nn" );
printf( "    Usage: "%s " ARGUMENTS ""n", argv[0] );
printf( "    Built at: " __DATE__ "n" );
return -1;
}

struct MCIN
{
unsigned int Offset;
unsigned int Size;
unsigned int Temp1;
unsigned int Temp2;
};

struct MCVT
{
float row0[9];
float null0[8];
float row1[9];
float null1[8];
float row2[9];
float null2[8];
float row3[9];
float null3[8];
float row4[9];
float null4[8];
float row5[9];
float null5[8];
float row6[9];
float null6[8];
float row7[9];
float null7[8];
float row8[9];
};

MCIN *Positions;
MCVT * HeightMap;
float * basez;

FILE *Input;
char *File;

float getHeightValue2(int i)
{
if (i<8) return *basez + HeightMap->null0[i%8];
else if(i<16) return *basez + HeightMap->null1[i%8];
else if(i<24) return *basez + HeightMap->null2[i%8];
else if(i<32) return *basez + HeightMap->null3[i%8];
else if(i<40) return *basez + HeightMap->null4[i%8];
else if(i<48) return *basez + HeightMap->null5[i%8];
else if(i<56) return *basez + HeightMap->null6[i%8];
else if(i<64) return *basez + HeightMap->null7[i%8];

return *basez;
}

float getHeightValue(int i)
{
if (i<9) return *basez + HeightMap->row0[i%9];
else if(i<18) return *basez + HeightMap->row1[i%9];
else if(i<27) return *basez + HeightMap->row2[i%9];
else if(i<36) return *basez + HeightMap->row3[i%9];
else if(i<45) return *basez + HeightMap->row4[i%9];
else if(i<54) return *basez + HeightMap->row5[i%9];
else if(i<63) return *basez + HeightMap->row6[i%9];
else if(i<72) return *basez + HeightMap->row7[i%9];
else if(i<81) return *basez + HeightMap->row8[i%9];

return *basez;
}

float valueormax(float value, float max)
{
if(value < max) return value;
else return max;
}


unsigned int FileSize;

int main(int argc, char **argv)
{
USAGE( 1, argc, argv );

int depth = 1;

unsigned int *TInt;
unsigned char *TChar;
unsigned short *TShort;

if( argc == 3 )
depth = atoi(argv[2]);

Input = fopen( argv[1], "rb+" );
fseek( Input, 0, SEEK_END );
FileSize = ftell( Input );
File = new char[ FileSize + 0xC00 + 0x81 * 256 + 0x8 ];           // And new chunk.
fseek( Input, 0, SEEK_SET );
fread( File, 1, FileSize, Input );
fclose( Input );

Positions = (MCIN *)( File + 0x5C );

// header content is at 0x14, water is at header+0x28
TInt = (unsigned int *)( File + 0x14 + 0x28 );
*TInt = FileSize - 0x14;

// write chunk:
TChar = (unsigned char *)( File + FileSize ); // magix
*TChar = 'O'; TChar++; *TChar = '2'; TChar++;
*TChar = 'H'; TChar++; *TChar = 'M';

TInt = (unsigned int *)( File + FileSize + 0x4 ); // size
*TInt = 0xC00 + 0x81 * 256;


for( int i = 0; i < 256; i++ )
{
// delete MCLQ
TInt = (unsigned int *)( File + Positions[i].Offset + 0x08 );
*TInt = *TInt & ~(28); // b11100 = x1C = 28
        TInt = (unsigned int *)( File + Positions[i].Offset + 0x68 );
*TInt = 0;
TInt = (unsigned int *)( File + Positions[i].Offset + 0x6C );
*TInt = 0;

int address = 0xC00 + i * 0x81;

// the info - array

TInt = (unsigned int *)( File + FileSize + 0x8 + i*0xC );
/* 0x000 */ *TInt = address; TInt++;
/* 0x004 */ *TInt = 1; TInt++;
/* 0x008 */ *TInt = address + 0x18;

// the data

TShort = (unsigned short *)( File + FileSize + 0x8 + address );
/* 0xC00 */ *TShort = 2; TShort++;
/* 0xC02 */ *TShort = 2;
TInt = (unsigned int *)( File + FileSize + 0x8 + address + 0x4 );
/* 0xC04 */ *TInt = 0; TInt++;
/* 0xC08 */ *TInt = 0; TInt++;
TChar = (unsigned char *)( File + FileSize + 0x8 + address + 0xC );
/* 0xC0C */ *TChar = 0; TChar++; *TChar = 0; TChar++;
/* 0xC0E */ *TChar = 8; TChar++; *TChar = 8;
TInt = (unsigned int *)( File + FileSize + 0x8 + address + 0x10 );
/* 0xC10 */ *TInt = address + 0x28; TInt++;
/* 0xC14 */ *TInt = address + 0x30; TInt++;
/* 0xC18 */ *TInt = 0; TInt++;
/* 0xC1C */ *TInt = 0; TInt++;
/* 0xC20 */ *TInt = 0; TInt++;
/* 0xC24 */ *TInt = 0; TInt++;
/* 0xC28 */ *TInt = 0; TInt++;
/* 0xC2C */ *TInt = 0;

// and the information we gain from seeing the heightmap.

HeightMap = (MCVT *)( File + Positions[i].Offset + 0x8 + 128 + 0x8 );
basez = (float*)( File + Positions[i].Offset + 0x78 );

TChar = (unsigned char *)( File + FileSize + 0x8 + address + 0x30 );
unsigned char * mask_byte = (unsigned char*)( File + FileSize + 0x8 + address + 0x18 );
unsigned char * mask_byte2 = (unsigned char*)( File + FileSize + 0x8 + address + 0x28 );

for( int j = 0; j < 9*9; j++)
{
int baselevel = 0;
float trans = baselevel - getHeightValue(j);

if( trans < 0 ) trans = 0;
else if(trans > 255) trans = 255;

/* 0xC30 + j */ *TChar = (unsigned char)trans;
TChar++;    
}

for( int j = 0; j < 8; j++)
{
for( int k = 0; k < 8; k++)
{
int baselevel = 0;
float trans = baselevel - getHeightValue2(j*8+k);

// *   *   // j*8 + k, j*8 + 1 + k
   //    +     // j*8 + k
// *   *   // (j+1)*8 + k, (j+1)*8 + 1 + k
               

if((baselevel - getHeightValue2(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k)) >= baselevel
                 || (baselevel - getHeightValue(j*8+k+1)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k)) >= baselevel
                 || (baselevel - getHeightValue((j+1)*8+k+1)) >= baselevel  )
{
*mask_byte = *mask_byte | ( 1 << (k % 8) );
*mask_byte2 = *mask_byte2 | ( 1 << (k % 8) );
}
}
mask_byte++;
mask_byte2++;
}
}


Input = fopen( argv[1], "wb" );
fwrite( File, 1, FileSize + 0xC00 + 0x81 * 256 + 0x8, Input );
fclose( Input );

delete File;
}


I am not a coder just to say right off which is why I am asking on the forum, I can compile this just fine and it works fine, just want to make that tiny edit to it.

Any help would be greatly appreciated =D

Kranimal

Pages: 1 2 [3] 4 5 6