Gamestudio Links
Zorro Links
Newest Posts
Blobsculptor tools and objects download here
by NeoDumont. 03/28/24 03:01
Issue with Multi-Core WFO Training
by aliswee. 03/24/24 20:20
Why Zorro supports up to 72 cores?
by Edgar_Herrera. 03/23/24 21:41
Zorro Trader GPT
by TipmyPip. 03/06/24 09:27
VSCode instead of SED
by 3run. 03/01/24 19:06
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (AndrewAMD, VoroneTZ), 831 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
sakolin, rajesh7827, juergen_wue, NITRO_FOREVER, jack0roses
19043 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 4 1 2 3 4
Save as .wmb #392065
01/18/12 21:43
01/18/12 21:43
Joined: Jul 2007
Posts: 619
Turkey, Izmir
Emre Offline OP
User
Emre  Offline OP
User

Joined: Jul 2007
Posts: 619
Turkey, Izmir
Hello all,
I got some help from here and I've completed it. if you have an editor like Sivan's Map Builder and if you want to save your level as .wmb while engine is open, you can use this code.

Note: That code works with only models&terrain. Map entities, path, attached etc. are not supported.

Code:
//////////////////////////////
// save as wmb (18/01/2012)
//////////////////////////////
// Created by Emre SASMAZ 
// pantharay@gmail.com
// blog.pantharay.com
// sayha.pantharay.com
//////////////////////////////
#include <stdio.h>

//$$w hex code
char bufferforwad[12] = {0x57, 0x41, 0x44, 0x37, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00};
//expalette.pcx hexcode
char bufferforpalette[954] =
{
	0x0A, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x12, 0x00, 0x48, 0x00, 0x48, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 
	0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 
	0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 
	0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 
	0x1F, 0x1F, 0x1F, 0x2F, 0x2F, 0x2F, 0x3F, 0x3F, 0x3F, 0x4B, 0x4B, 0x4B, 0x5B, 0x5B, 0x5B, 0x6B, 
	0x6B, 0x6B, 0x7B, 0x7B, 0x7B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x9B, 0xAB, 0xAB, 0xAB, 0xBB, 0xBB, 
	0xBB, 0xCB, 0xCB, 0xCB, 0xDB, 0xDB, 0xDB, 0xEB, 0xEB, 0xEB, 0x0F, 0x0B, 0x07, 0x17, 0x0F, 0x0B, 
	0x1F, 0x17, 0x0B, 0x27, 0x1B, 0x0F, 0x2F, 0x23, 0x13, 0x37, 0x2B, 0x17, 0x3F, 0x2F, 0x17, 0x4B, 
	0x37, 0x1B, 0x53, 0x3B, 0x1B, 0x5B, 0x43, 0x1F, 0x63, 0x4B, 0x1F, 0x6B, 0x53, 0x1F, 0x73, 0x57, 
	0x1F, 0x7B, 0x5F, 0x23, 0x83, 0x67, 0x23, 0x8F, 0x6F, 0x23, 0x0B, 0x0B, 0x0F, 0x13, 0x13, 0x1B, 
	0x1B, 0x1B, 0x27, 0x27, 0x27, 0x33, 0x2F, 0x2F, 0x3F, 0x37, 0x37, 0x4B, 0x3F, 0x3F, 0x57, 0x47, 
	0x47, 0x67, 0x4F, 0x4F, 0x73, 0x5B, 0x5B, 0x7F, 0x63, 0x63, 0x8B, 0x6B, 0x6B, 0x97, 0x73, 0x73, 
	0xA3, 0x7B, 0x7B, 0xAF, 0x83, 0x83, 0xBB, 0x8B, 0x8B, 0xCB, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 
	0x0B, 0x0B, 0x00, 0x13, 0x13, 0x00, 0x1B, 0x1B, 0x00, 0x23, 0x23, 0x00, 0x2B, 0x2B, 0x07, 0x2F, 
	0x2F, 0x07, 0x37, 0x37, 0x07, 0x3F, 0x3F, 0x07, 0x47, 0x47, 0x07, 0x4B, 0x4B, 0x0B, 0x53, 0x53, 
	0x0B, 0x5B, 0x5B, 0x0B, 0x63, 0x63, 0x0B, 0x6B, 0x6B, 0x0F, 0x07, 0x00, 0x00, 0x0F, 0x00, 0x00, 
	0x17, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x27, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x37, 0x00, 0x00, 0x3F, 
	0x00, 0x00, 0x47, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x57, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x67, 0x00, 
	0x00, 0x6F, 0x00, 0x00, 0x77, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x13, 0x13, 0x00, 0x1B, 0x1B, 0x00, 
	0x23, 0x23, 0x00, 0x2F, 0x2B, 0x00, 0x37, 0x2F, 0x00, 0x43, 0x37, 0x00, 0x4B, 0x3B, 0x07, 0x57, 
	0x43, 0x07, 0x5F, 0x47, 0x07, 0x6B, 0x4B, 0x0B, 0x77, 0x53, 0x0F, 0x83, 0x57, 0x13, 0x8B, 0x5B, 
	0x13, 0x97, 0x5F, 0x1B, 0xA3, 0x63, 0x1F, 0xAF, 0x67, 0x23, 0x23, 0x13, 0x07, 0x2F, 0x17, 0x0B, 
	0x3B, 0x1F, 0x0F, 0x4B, 0x23, 0x13, 0x57, 0x2B, 0x17, 0x63, 0x2F, 0x1F, 0x73, 0x37, 0x23, 0x7F, 
	0x3B, 0x2B, 0x8F, 0x43, 0x33, 0x9F, 0x4F, 0x33, 0xAF, 0x63, 0x2F, 0xBF, 0x77, 0x2F, 0xCF, 0x8F, 
	0x2B, 0xDF, 0xAB, 0x27, 0xEF, 0xCB, 0x1F, 0xFF, 0xF3, 0x1B, 0x0B, 0x07, 0x00, 0x1B, 0x13, 0x00, 
	0x2B, 0x23, 0x0F, 0x37, 0x2B, 0x13, 0x47, 0x33, 0x1B, 0x53, 0x37, 0x23, 0x63, 0x3F, 0x2B, 0x6F, 
	0x47, 0x33, 0x7F, 0x53, 0x3F, 0x8B, 0x5F, 0x47, 0x9B, 0x6B, 0x53, 0xA7, 0x7B, 0x5F, 0xB7, 0x87, 
	0x6B, 0xC3, 0x93, 0x7B, 0xD3, 0xA3, 0x8B, 0xE3, 0xB3, 0x97, 0xAB, 0x8B, 0xA3, 0x9F, 0x7F, 0x97, 
	0x93, 0x73, 0x87, 0x8B, 0x67, 0x7B, 0x7F, 0x5B, 0x6F, 0x77, 0x53, 0x63, 0x6B, 0x4B, 0x57, 0x5F, 
	0x3F, 0x4B, 0x57, 0x37, 0x43, 0x4B, 0x2F, 0x37, 0x43, 0x27, 0x2F, 0x37, 0x1F, 0x23, 0x2B, 0x17, 
	0x1B, 0x23, 0x13, 0x13, 0x17, 0x0B, 0x0B, 0x0F, 0x07, 0x07, 0xBB, 0x73, 0x9F, 0xAF, 0x6B, 0x8F, 
	0xA3, 0x5F, 0x83, 0x97, 0x57, 0x77, 0x8B, 0x4F, 0x6B, 0x7F, 0x4B, 0x5F, 0x73, 0x43, 0x53, 0x6B, 
	0x3B, 0x4B, 0x5F, 0x33, 0x3F, 0x53, 0x2B, 0x37, 0x47, 0x23, 0x2B, 0x3B, 0x1F, 0x23, 0x2F, 0x17, 
	0x1B, 0x23, 0x13, 0x13, 0x17, 0x0B, 0x0B, 0x0F, 0x07, 0x07, 0xDB, 0xC3, 0xBB, 0xCB, 0xB3, 0xA7, 
	0xBF, 0xA3, 0x9B, 0xAF, 0x97, 0x8B, 0xA3, 0x87, 0x7B, 0x97, 0x7B, 0x6F, 0x87, 0x6F, 0x5F, 0x7B, 
	0x63, 0x53, 0x6B, 0x57, 0x47, 0x5F, 0x4B, 0x3B, 0x53, 0x3F, 0x33, 0x43, 0x33, 0x27, 0x37, 0x2B, 
	0x1F, 0x27, 0x1F, 0x17, 0x1B, 0x13, 0x0F, 0x0F, 0x0B, 0x07, 0x6F, 0x83, 0x7B, 0x67, 0x7B, 0x6F, 
	0x5F, 0x73, 0x67, 0x57, 0x6B, 0x5F, 0x4F, 0x63, 0x57, 0x47, 0x5B, 0x4F, 0x3F, 0x53, 0x47, 0x37, 
	0x4B, 0x3F, 0x2F, 0x43, 0x37, 0x2B, 0x3B, 0x2F, 0x23, 0x33, 0x27, 0x1F, 0x2B, 0x1F, 0x17, 0x23, 
	0x17, 0x0F, 0x1B, 0x13, 0x0B, 0x13, 0x0B, 0x07, 0x0B, 0x07, 0xFF, 0xF3, 0x1B, 0xEF, 0xDF, 0x17, 
	0xDB, 0xCB, 0x13, 0xCB, 0xB7, 0x0F, 0xBB, 0xA7, 0x0F, 0xAB, 0x97, 0x0B, 0x9B, 0x83, 0x07, 0x8B, 
	0x73, 0x07, 0x7B, 0x63, 0x07, 0x6B, 0x53, 0x00, 0x5B, 0x47, 0x00, 0x4B, 0x37, 0x00, 0x3B, 0x2B, 
	0x00, 0x2B, 0x1F, 0x00, 0x1B, 0x0F, 0x00, 0x0B, 0x07, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x0B, 0xEF, 
	0x13, 0x13, 0xDF, 0x1B, 0x1B, 0xCF, 0x23, 0x23, 0xBF, 0x2B, 0x2B, 0xAF, 0x2F, 0x2F, 0x9F, 0x2F, 
	0x2F, 0x8F, 0x2F, 0x2F, 0x7F, 0x2F, 0x2F, 0x6F, 0x2F, 0x2F, 0x5F, 0x2B, 0x2B, 0x4F, 0x23, 0x23, 
	0x3F, 0x1B, 0x1B, 0x2F, 0x13, 0x13, 0x1F, 0x0B, 0x0B, 0x0F, 0x2B, 0x00, 0x00, 0x3B, 0x00, 0x00, 
	0x4B, 0x07, 0x00, 0x5F, 0x07, 0x00, 0x6F, 0x0F, 0x00, 0x7F, 0x17, 0x07, 0x93, 0x1F, 0x07, 0xA3, 
	0x27, 0x0B, 0xB7, 0x33, 0x0F, 0xC3, 0x4B, 0x1B, 0xCF, 0x63, 0x2B, 0xDB, 0x7F, 0x3B, 0xE3, 0x97, 
	0x4F, 0xE7, 0xAB, 0x5F, 0xEF, 0xBF, 0x77, 0xF7, 0xD3, 0x8B, 0xA7, 0x7B, 0x3B, 0xB7, 0x9B, 0x37, 
	0xC7, 0xC3, 0x37, 0xE7, 0xE3, 0x57, 0x7F, 0xBF, 0xFF, 0xAB, 0xE7, 0xFF, 0xD7, 0xFF, 0xFF, 0x67, 
	0x00, 0x00, 0x8B, 0x00, 0x00, 0xB3, 0x00, 0x00, 0xD7, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xF3, 
	0x93, 0xFF, 0xF7, 0xC7, 0xFF, 0xFF, 0xFF, 0x9F, 0x5B, 0x53
} ;


STRING* temp_str="#25";
var wmb_handle;
#define ifiselse(var) if(is(you,var)){str_cat(temp_str,"1");}else{str_cat(temp_str,"0");}
#define skipline file_asc_write (wmb_handle, 13);file_asc_write (wmb_handle, 10)
#define obrackets file_str_write (wmb_handle,"{")
#define cbrackets file_str_write (wmb_handle,"}")
long	entflags[32];
void flags_startup()
{

	entflags[1]=0;
	entflags[2]=0;
	entflags[3]=0;
	entflags[4]=0;
	entflags[5]=0;
	entflags[6]=POLYGON;
	entflags[7]=0;//Local
	entflags[8]=0;
	entflags[9]=CAST;
	entflags[10]=METAL;
	entflags[11]=BRIGHT;
	entflags[12]=NOFOG;
	entflags[13]=0;
	entflags[14]=SHADOW;
	entflags[15]=UNLIT;
	entflags[16]=NOFILTER;
	entflags[17]=0;//Flare
	entflags[18]=ZNEAR;
	entflags[19]=SPOTLIGHT;
	entflags[20]=OVERLAY;
	entflags[21]=0;
	entflags[22]=TRANSLUCENT;
	entflags[23]=PASSABLE;
	entflags[24]=INVISIBLE;
	entflags[25]=FLAG8;
	entflags[26]=FLAG7;
	entflags[27]=FLAG6;
	entflags[28]=FLAG5;
	entflags[29]=FLAG4;
	entflags[30]=FLAG3;
	entflags[31]=FLAG2;
	entflags[32]=FLAG1;

}

void set_flags(var flag16)
{
	str_cpy(temp_str,"");
	if(flag16>0)
	{
		
		str_cat(temp_str,"0");//-?
		str_cat(temp_str,"0");//-?
		str_cat(temp_str,"0");	
		str_cat(temp_str,"0");//-?
		str_cat(temp_str,"0");//-?
		ifiselse(POLYGON)//6	
		str_cat(temp_str,"0");//LOCAL//7
		str_cat(temp_str,"0");//8
		ifiselse(CAST)//9
		ifiselse(METAL)//10
		ifiselse(BRIGHT)//11
		ifiselse(NOFOG)//12
		str_cat(temp_str,"0");//13
		ifiselse(SHADOW)
		ifiselse(UNLIT)
		ifiselse(NOFILTER)
	}
	
	str_cat(temp_str,"0");//17
	ifiselse(ZNEAR)//18
	ifiselse(SPOTLIGHT)//-?//19
	ifiselse(OVERLAY)//20
	str_cat(temp_str,"0");//17
	ifiselse(TRANSLUCENT)//21
	ifiselse(PASSABLE)//22
	ifiselse(INVISIBLE)//23
	ifiselse(FLAG8)//24
	ifiselse(FLAG7)//25
	ifiselse(FLAG6)//26
	ifiselse(FLAG5)//28
	ifiselse(FLAG4)//29
	ifiselse(FLAG3)//30
	ifiselse(FLAG2)//31
	ifiselse(FLAG1)//32
	file_str_write (wmb_handle,temp_str); skipline;
}
void save_wmb()
{
	//variables
	var num = 0;
	ENTITY* ent;
	char* funcname;
	var yourtype;
	var say=0;
	int i;
	
	//Remove $$m & $$w & expalette.pcx
	remove("export.$$M");
	remove("export.$$w");
	remove("expalette.pcx");
	wait(-0.5);
	
	//Create $$w file (wad7)
	FILE *myfile = fopen("export.$$w", "wb");
	int i=0;
	for(i=0;i<12;i++)
	{
		putc(bufferforwad[i], myfile);
	}
	fclose(myfile);

	//Create expalette.pcx file (wad7)
	FILE *myfile = fopen("expalette.pcx", "wb");
	int i=0;
	for(i=0;i<954;i++)
	{
		putc(bufferforpalette[i], myfile);
	}
	fclose(myfile);
	
	//Create $$m
	wmb_handle = file_open_append("export.$$M");
	file_str_write (wmb_handle,"version 711"); skipline;
	
	//level
	obrackets;file_str_write (wmb_handle," //level"); skipline;
	file_var_write (wmb_handle,0);skipline;
	file_str_write (wmb_handle,"export.$$w"); skipline;
	file_str_write (wmb_handle,"expalette.pcx"); skipline;
	cbrackets;skipline;
	
	//sun
	obrackets;file_str_write (wmb_handle," //sun"); skipline;
	file_var_write (wmb_handle,5);skipline;
	file_var_write (wmb_handle,sun_angle.tilt);skipline;
	file_var_write (wmb_handle,sun_angle.pan);skipline;
	cbrackets;skipline;
	
	

	

	var myflag16=0;
	//entities
	you = ent_next(NULL); 
	while (you)
	{ 
		draw_text("PLEASE WAIT",10,10,COLOR_RED);
		
		obrackets;file_str_write (wmb_handle," //model"); skipline;
		
		
		#ifndef ent_id
			#define ent_id
			yourtype=0;
			/*
			from sdk:
			'wmpio_ModelEntity  * model;	// id == 3 (7, for model-ex)'
			SO CHECK IF EX OR NOT (if has a material or string1-2 or has a action it's 7 else it's 3)
			*/
			
			//if(your.materialtype!=NULL)
			if(your.material!=mat_model&&your.material!=NULL&&your.material!=mat_terrain)
			{
				yourtype+=1;
			}
			//if(your.string1||string2!=NULL)
			if(str_len(your.string1)>0||str_len(your.string2)>0)
			{
				yourtype+=1;
			}	
			
			num = 0;
			say=0;
			//Check Entity has an action or not.
			for(num = 0; engine_gettaskinfo(num,&funcname,&ent); num++)
			{
				if(ent == you)
				{ 
					yourtype+=1;
					break;
				}
			}
			
			//
			if(yourtype>0)
			{
				file_var_write (wmb_handle,7);skipline;//model-ex
			}
			else
			{
				file_var_write (wmb_handle,3);skipline;//model
			}
		#endif
		
		
		//xyz
		file_var_write (wmb_handle,you.x);
		file_var_write (wmb_handle,you.y);
		file_var_write (wmb_handle,you.z);skipline;
		//pan-tilt-roll
		file_var_write (wmb_handle,you.pan);
		file_var_write (wmb_handle,you.tilt);
		file_var_write (wmb_handle,you.roll);skipline;
		//scale
		file_var_write (wmb_handle,you.scale_x);
		file_var_write (wmb_handle,you.scale_y);
		file_var_write (wmb_handle,you.scale_z);skipline;
		//Entitiy file name
		str_for_entfile(temp_str,you); 
		file_str_write (wmb_handle,temp_str); skipline;
		//Ent name
		str_for_entname(temp_str,you); 
		file_str_write (wmb_handle,temp_str); skipline;
		
		num = 0;
		say=0;
		//Get action name of Entity (Thanks to MasterQ32&JustSid for tip)
		for(num = 0; engine_gettaskinfo(num,&funcname,&ent); num++)
		{
			if(ent == you)
			{ 
				file_str_write (wmb_handle,_str(funcname)); skipline;
				say=1;
				break;
			}
			
		}
		//if entity has no action, put ndef
		if(say==0)
		{
			file_str_write (wmb_handle,"ndef"); skipline;
		}
		
		//skills
		file_var_write (wmb_handle,you.skill1);
		file_var_write (wmb_handle,you.skill2);
		file_var_write (wmb_handle,you.skill3);
		file_var_write (wmb_handle,you.skill4);
		file_var_write (wmb_handle,you.skill5);
		file_var_write (wmb_handle,you.skill6);
		file_var_write (wmb_handle,you.skill7);
		file_var_write (wmb_handle,you.skill8);
		
		
		if(yourtype>0)//type==7 
		{
			file_var_write (wmb_handle,you.skill9);
			file_var_write (wmb_handle,you.skill10);
			file_var_write (wmb_handle,you.skill11);
			file_var_write (wmb_handle,you.skill12);
			file_var_write (wmb_handle,you.skill13);
			file_var_write (wmb_handle,you.skill14);
			file_var_write (wmb_handle,you.skill15);
			file_var_write (wmb_handle,you.skill16);
			file_var_write (wmb_handle,you.skill17);
			file_var_write (wmb_handle,you.skill18);
			file_var_write (wmb_handle,you.skill19);
			file_var_write (wmb_handle,you.skill20);
			
		}skipline;
		
		
		//flags
		myflag16=0;
		
		i=0;
		for(i=1;i<17;i++)
		{
			if (is(you,entflags[i]))
			{
				myflag16=1;
			}
		
		}
		
		set_flags(myflag16);
		file_var_write (wmb_handle,your.ambient);skipline;
		
		//Get material name of Entity
		if(your.material!=mat_model&&your.material!=NULL&&your.material!=mat_terrain)
		{	file_var_write (wmb_handle,your.albedo);skipline;
			file_var_write (wmb_handle,0);skipline; //path
			file_var_write (wmb_handle,0);skipline; //attach
			str_cpy(temp_str,_chr(your.material.link.name));
			file_str_write (wmb_handle,temp_str); skipline;
		}
		else
		{
			if(yourtype>0)
			{

				file_var_write (wmb_handle,your.albedo);skipline;
				file_var_write (wmb_handle,0);skipline;//path
				file_var_write (wmb_handle,0);skipline;//attach
				file_str_write (wmb_handle,"ndef"); skipline; // if no material put ndef
			}
		}
		//string1 string2
		if(str_len(your.string1)>0)
		{
			str_cpy(temp_str,_chr(your.string1));
			file_str_write (wmb_handle,temp_str); skipline;
		}	
		if(str_len(your.string2)>0)
		{
			str_cpy(temp_str,_chr(your.string2));
			file_str_write (wmb_handle,temp_str); skipline;
		}
		
		
		cbrackets;skipline;
		you = ent_next(you);
		wait(1);
	}
	file_close(wmb_handle);



	wait(-1);
	
	//build it with default
	exec("%EXE_DIR%\\wwmp2wmb.exe","export.$$M -pal expalette.pcx 
	-az 10 -el 60 
	-sunrgb 100 100 100 
	-ambrgb 100 100 100 
	-noportals 
	-hiprec 
	-writelog 
	-close 
	-nodetail 
	-threads 2 
	-gamma 1.50 
	-phongangle 120  
	-lmambient 50  
	-sizeshaded 236 
	-litres 1.00 
	-litcomp 0.50 
	-litmax 196 
	-litscale 0.50 
	-radsubdiv 64 
	-radbounce 0 
	-bound 56000 
	-fat 64  48  8  
	-narrow 32  32  0 ");
	
	//exec("%EXE_DIR%\\wwmp2wmb.exe","export.$$M -pal palette.pcx -close");
	
}

void on_enter_event()
{
	save_wmb();
}



Last edited by Emre; 01/19/12 23:58. Reason: i corrected the code
Re: Save as .wmb [Re: Emre] #392071
01/18/12 22:29
01/18/12 22:29
Joined: Mar 2006
Posts: 1,993
Karlsruhe
PadMalcom Offline
Serious User
PadMalcom  Offline
Serious User

Joined: Mar 2006
Posts: 1,993
Karlsruhe
Wow nice!

... except the part with "wmp2wmb.exe" but that's not your fault laugh

Thanks for the code!

Re: Save as .wmb [Re: PadMalcom] #392115
01/19/12 13:07
01/19/12 13:07
Joined: Jul 2007
Posts: 619
Turkey, Izmir
Emre Offline OP
User
Emre  Offline OP
User

Joined: Jul 2007
Posts: 619
Turkey, Izmir
Yes, that's not my fault. I think GED works this way too. You're welcome btw smile

Re: Save as .wmb [Re: Emre] #392116
01/19/12 13:31
01/19/12 13:31
Joined: Mar 2011
Posts: 3,150
Budapest
sivan Offline
Expert
sivan  Offline
Expert

Joined: Mar 2011
Posts: 3,150
Budapest
Emre, congratulation!

I test it immediately, and integrate into MapBuilder, if works fine, and if you don't mind. laugh

Questions:
- map enities are planned to be integrated? (or do they result in too strange structure? I mean wmb within wmb)
- sprites are not mentioned: are they excluded?

Thanks!


Free world editor for 3D Gamestudio: MapBuilder Editor
Re: Save as .wmb [Re: sivan] #392120
01/19/12 14:01
01/19/12 14:01
Joined: Jul 2007
Posts: 619
Turkey, Izmir
Emre Offline OP
User
Emre  Offline OP
User

Joined: Jul 2007
Posts: 619
Turkey, Izmir
i'm glad if that helps to your project. Feel free to use. smile

Quote:
map enities are planned to be integrated? (or do they result in too strange structure? I mean wmb within wmb)

Structure is same as model. The problem is i can't find them with "ent_next".
Quote:
sprites are not mentioned: are they excluded?

I forgot to mention. Sprites are supported too.

Re: Save as .wmb [Re: Emre] #392126
01/19/12 15:34
01/19/12 15:34
Joined: May 2009
Posts: 1,816
at my pc (duh)
darkinferno Offline
Serious User
darkinferno  Offline
Serious User

Joined: May 2009
Posts: 1,816
at my pc (duh)
how does it handle assigned actions though? is it possible to save the wmb with actions attached? if yes, how would it determine how an action is assigned?

reading over the code, it seems it does save actions but again, if i have a model created through ent_create running a function, that function will be the name of the assigned action ?

sorry if i didnt look into the code too much, i plan to test it all soon anyway laugh

very good contribution

Re: Save as .wmb [Re: darkinferno] #392133
01/19/12 16:27
01/19/12 16:27
Joined: Jul 2007
Posts: 619
Turkey, Izmir
Emre Offline OP
User
Emre  Offline OP
User

Joined: Jul 2007
Posts: 619
Turkey, Izmir
Hello Darkinferno,
Here are my answers for clear understanding;

This is structure from $$m;
Code:
{ //model
	7 
	85 -85 -8 
	0 0 0 
	1 1 1 
	GRIBIRD.BMP
	gribird_bmp_013
	ndef
	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
	00000000000000000000000000000000
	0 
	50 
	0 
	0 
	mat_sprite
        adasdasdasdads
        asddasdasdasdasd
}


it means;
Code:
{ //model
	ent id
	xyz 
	pan tilt roll
	scale_xyz 
	file name
	ent name
	action name
	skills
	flags
	ambient 
	albedo
	path
	attached entity 
	material
        string1
        string2
}



So, if your entity has a running action
mean;
Code:
action test_act()
{
	while(1)
	{
		my.skill+=1;
		wait(1);
	}
}


it will be saved with action's name.

if your entity hasn't running action like that;
Code:
action test_act(){my.skill1=10;}


it won't be saved with action's name but ent.skill1 will be saved as 10;
Quote:
if i have a model created through ent_create running a function, that function will be the name of the assigned action ?

The same situation is valid for "ent_create." if your model that you created with ent_create hasn't action, it will be saved as "ndef". Otherwise, it will be saved with action's name.

Re: Save as .wmb [Re: Emre] #392177
01/19/12 20:14
01/19/12 20:14
Joined: Mar 2011
Posts: 3,150
Budapest
sivan Offline
Expert
sivan  Offline
Expert

Joined: Mar 2011
Posts: 3,150
Budapest
I did a few tests:

probably a bug: invisible models are visible (I use them for collision in some cases).

I had similar problems with actions: I set terrain material from its action depending on its skin quantity, to single skin or a multiskin (effect=terraintex.fx;) material, but it does not work (probably because it has no while loop), despite the fact the assigned material name appears well in $$m and wmb too... I will make more trials to describe it better (or maybe a simple stupid while loop helps).


Free world editor for 3D Gamestudio: MapBuilder Editor
Re: Save as .wmb [Re: sivan] #392196
01/19/12 23:54
01/19/12 23:54
Joined: Jul 2007
Posts: 619
Turkey, Izmir
Emre Offline OP
User
Emre  Offline OP
User

Joined: Jul 2007
Posts: 619
Turkey, Izmir
Okay. Please try this one for flag problem.
Code:
#include <stdio.h>

//$$w hex code
char bufferforwad[12] = {0x57, 0x41, 0x44, 0x37, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00};
//expalette.pcx hexcode
char bufferforpalette[954] =
{
	0x0A, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x12, 0x00, 0x48, 0x00, 0x48, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 
	0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 
	0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 
	0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0xCF, 0xD3, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 
	0x1F, 0x1F, 0x1F, 0x2F, 0x2F, 0x2F, 0x3F, 0x3F, 0x3F, 0x4B, 0x4B, 0x4B, 0x5B, 0x5B, 0x5B, 0x6B, 
	0x6B, 0x6B, 0x7B, 0x7B, 0x7B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x9B, 0xAB, 0xAB, 0xAB, 0xBB, 0xBB, 
	0xBB, 0xCB, 0xCB, 0xCB, 0xDB, 0xDB, 0xDB, 0xEB, 0xEB, 0xEB, 0x0F, 0x0B, 0x07, 0x17, 0x0F, 0x0B, 
	0x1F, 0x17, 0x0B, 0x27, 0x1B, 0x0F, 0x2F, 0x23, 0x13, 0x37, 0x2B, 0x17, 0x3F, 0x2F, 0x17, 0x4B, 
	0x37, 0x1B, 0x53, 0x3B, 0x1B, 0x5B, 0x43, 0x1F, 0x63, 0x4B, 0x1F, 0x6B, 0x53, 0x1F, 0x73, 0x57, 
	0x1F, 0x7B, 0x5F, 0x23, 0x83, 0x67, 0x23, 0x8F, 0x6F, 0x23, 0x0B, 0x0B, 0x0F, 0x13, 0x13, 0x1B, 
	0x1B, 0x1B, 0x27, 0x27, 0x27, 0x33, 0x2F, 0x2F, 0x3F, 0x37, 0x37, 0x4B, 0x3F, 0x3F, 0x57, 0x47, 
	0x47, 0x67, 0x4F, 0x4F, 0x73, 0x5B, 0x5B, 0x7F, 0x63, 0x63, 0x8B, 0x6B, 0x6B, 0x97, 0x73, 0x73, 
	0xA3, 0x7B, 0x7B, 0xAF, 0x83, 0x83, 0xBB, 0x8B, 0x8B, 0xCB, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 
	0x0B, 0x0B, 0x00, 0x13, 0x13, 0x00, 0x1B, 0x1B, 0x00, 0x23, 0x23, 0x00, 0x2B, 0x2B, 0x07, 0x2F, 
	0x2F, 0x07, 0x37, 0x37, 0x07, 0x3F, 0x3F, 0x07, 0x47, 0x47, 0x07, 0x4B, 0x4B, 0x0B, 0x53, 0x53, 
	0x0B, 0x5B, 0x5B, 0x0B, 0x63, 0x63, 0x0B, 0x6B, 0x6B, 0x0F, 0x07, 0x00, 0x00, 0x0F, 0x00, 0x00, 
	0x17, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x27, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x37, 0x00, 0x00, 0x3F, 
	0x00, 0x00, 0x47, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x57, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x67, 0x00, 
	0x00, 0x6F, 0x00, 0x00, 0x77, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x13, 0x13, 0x00, 0x1B, 0x1B, 0x00, 
	0x23, 0x23, 0x00, 0x2F, 0x2B, 0x00, 0x37, 0x2F, 0x00, 0x43, 0x37, 0x00, 0x4B, 0x3B, 0x07, 0x57, 
	0x43, 0x07, 0x5F, 0x47, 0x07, 0x6B, 0x4B, 0x0B, 0x77, 0x53, 0x0F, 0x83, 0x57, 0x13, 0x8B, 0x5B, 
	0x13, 0x97, 0x5F, 0x1B, 0xA3, 0x63, 0x1F, 0xAF, 0x67, 0x23, 0x23, 0x13, 0x07, 0x2F, 0x17, 0x0B, 
	0x3B, 0x1F, 0x0F, 0x4B, 0x23, 0x13, 0x57, 0x2B, 0x17, 0x63, 0x2F, 0x1F, 0x73, 0x37, 0x23, 0x7F, 
	0x3B, 0x2B, 0x8F, 0x43, 0x33, 0x9F, 0x4F, 0x33, 0xAF, 0x63, 0x2F, 0xBF, 0x77, 0x2F, 0xCF, 0x8F, 
	0x2B, 0xDF, 0xAB, 0x27, 0xEF, 0xCB, 0x1F, 0xFF, 0xF3, 0x1B, 0x0B, 0x07, 0x00, 0x1B, 0x13, 0x00, 
	0x2B, 0x23, 0x0F, 0x37, 0x2B, 0x13, 0x47, 0x33, 0x1B, 0x53, 0x37, 0x23, 0x63, 0x3F, 0x2B, 0x6F, 
	0x47, 0x33, 0x7F, 0x53, 0x3F, 0x8B, 0x5F, 0x47, 0x9B, 0x6B, 0x53, 0xA7, 0x7B, 0x5F, 0xB7, 0x87, 
	0x6B, 0xC3, 0x93, 0x7B, 0xD3, 0xA3, 0x8B, 0xE3, 0xB3, 0x97, 0xAB, 0x8B, 0xA3, 0x9F, 0x7F, 0x97, 
	0x93, 0x73, 0x87, 0x8B, 0x67, 0x7B, 0x7F, 0x5B, 0x6F, 0x77, 0x53, 0x63, 0x6B, 0x4B, 0x57, 0x5F, 
	0x3F, 0x4B, 0x57, 0x37, 0x43, 0x4B, 0x2F, 0x37, 0x43, 0x27, 0x2F, 0x37, 0x1F, 0x23, 0x2B, 0x17, 
	0x1B, 0x23, 0x13, 0x13, 0x17, 0x0B, 0x0B, 0x0F, 0x07, 0x07, 0xBB, 0x73, 0x9F, 0xAF, 0x6B, 0x8F, 
	0xA3, 0x5F, 0x83, 0x97, 0x57, 0x77, 0x8B, 0x4F, 0x6B, 0x7F, 0x4B, 0x5F, 0x73, 0x43, 0x53, 0x6B, 
	0x3B, 0x4B, 0x5F, 0x33, 0x3F, 0x53, 0x2B, 0x37, 0x47, 0x23, 0x2B, 0x3B, 0x1F, 0x23, 0x2F, 0x17, 
	0x1B, 0x23, 0x13, 0x13, 0x17, 0x0B, 0x0B, 0x0F, 0x07, 0x07, 0xDB, 0xC3, 0xBB, 0xCB, 0xB3, 0xA7, 
	0xBF, 0xA3, 0x9B, 0xAF, 0x97, 0x8B, 0xA3, 0x87, 0x7B, 0x97, 0x7B, 0x6F, 0x87, 0x6F, 0x5F, 0x7B, 
	0x63, 0x53, 0x6B, 0x57, 0x47, 0x5F, 0x4B, 0x3B, 0x53, 0x3F, 0x33, 0x43, 0x33, 0x27, 0x37, 0x2B, 
	0x1F, 0x27, 0x1F, 0x17, 0x1B, 0x13, 0x0F, 0x0F, 0x0B, 0x07, 0x6F, 0x83, 0x7B, 0x67, 0x7B, 0x6F, 
	0x5F, 0x73, 0x67, 0x57, 0x6B, 0x5F, 0x4F, 0x63, 0x57, 0x47, 0x5B, 0x4F, 0x3F, 0x53, 0x47, 0x37, 
	0x4B, 0x3F, 0x2F, 0x43, 0x37, 0x2B, 0x3B, 0x2F, 0x23, 0x33, 0x27, 0x1F, 0x2B, 0x1F, 0x17, 0x23, 
	0x17, 0x0F, 0x1B, 0x13, 0x0B, 0x13, 0x0B, 0x07, 0x0B, 0x07, 0xFF, 0xF3, 0x1B, 0xEF, 0xDF, 0x17, 
	0xDB, 0xCB, 0x13, 0xCB, 0xB7, 0x0F, 0xBB, 0xA7, 0x0F, 0xAB, 0x97, 0x0B, 0x9B, 0x83, 0x07, 0x8B, 
	0x73, 0x07, 0x7B, 0x63, 0x07, 0x6B, 0x53, 0x00, 0x5B, 0x47, 0x00, 0x4B, 0x37, 0x00, 0x3B, 0x2B, 
	0x00, 0x2B, 0x1F, 0x00, 0x1B, 0x0F, 0x00, 0x0B, 0x07, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x0B, 0xEF, 
	0x13, 0x13, 0xDF, 0x1B, 0x1B, 0xCF, 0x23, 0x23, 0xBF, 0x2B, 0x2B, 0xAF, 0x2F, 0x2F, 0x9F, 0x2F, 
	0x2F, 0x8F, 0x2F, 0x2F, 0x7F, 0x2F, 0x2F, 0x6F, 0x2F, 0x2F, 0x5F, 0x2B, 0x2B, 0x4F, 0x23, 0x23, 
	0x3F, 0x1B, 0x1B, 0x2F, 0x13, 0x13, 0x1F, 0x0B, 0x0B, 0x0F, 0x2B, 0x00, 0x00, 0x3B, 0x00, 0x00, 
	0x4B, 0x07, 0x00, 0x5F, 0x07, 0x00, 0x6F, 0x0F, 0x00, 0x7F, 0x17, 0x07, 0x93, 0x1F, 0x07, 0xA3, 
	0x27, 0x0B, 0xB7, 0x33, 0x0F, 0xC3, 0x4B, 0x1B, 0xCF, 0x63, 0x2B, 0xDB, 0x7F, 0x3B, 0xE3, 0x97, 
	0x4F, 0xE7, 0xAB, 0x5F, 0xEF, 0xBF, 0x77, 0xF7, 0xD3, 0x8B, 0xA7, 0x7B, 0x3B, 0xB7, 0x9B, 0x37, 
	0xC7, 0xC3, 0x37, 0xE7, 0xE3, 0x57, 0x7F, 0xBF, 0xFF, 0xAB, 0xE7, 0xFF, 0xD7, 0xFF, 0xFF, 0x67, 
	0x00, 0x00, 0x8B, 0x00, 0x00, 0xB3, 0x00, 0x00, 0xD7, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xF3, 
	0x93, 0xFF, 0xF7, 0xC7, 0xFF, 0xFF, 0xFF, 0x9F, 0x5B, 0x53
} ;


STRING* temp_str="#25";
var wmb_handle;
#define ifiselse(var) if(is(you,var)){str_cat(temp_str,"1");}else{str_cat(temp_str,"0");}
#define skipline file_asc_write (wmb_handle, 13);file_asc_write (wmb_handle, 10)
#define obrackets file_str_write (wmb_handle,"{")
#define cbrackets file_str_write (wmb_handle,"}")
long	entflags[32];
void flags_startup()
{

	entflags[1]=0;
	entflags[2]=0;
	entflags[3]=0;
	entflags[4]=0;
	entflags[5]=0;
	entflags[6]=POLYGON;
	entflags[7]=0;//Local
	entflags[8]=0;
	entflags[9]=CAST;
	entflags[10]=METAL;
	entflags[11]=BRIGHT;
	entflags[12]=NOFOG;
	entflags[13]=0;
	entflags[14]=SHADOW;
	entflags[15]=UNLIT;
	entflags[16]=NOFILTER;
	entflags[17]=0;//Flare
	entflags[18]=ZNEAR;
	entflags[19]=SPOTLIGHT;
	entflags[20]=OVERLAY;
	entflags[21]=0;
	entflags[22]=TRANSLUCENT;
	entflags[23]=PASSABLE;
	entflags[24]=INVISIBLE;
	entflags[25]=FLAG8;
	entflags[26]=FLAG7;
	entflags[27]=FLAG6;
	entflags[28]=FLAG5;
	entflags[29]=FLAG4;
	entflags[30]=FLAG3;
	entflags[31]=FLAG2;
	entflags[32]=FLAG1;

}

void set_flags(var flag16)
{
	str_cpy(temp_str,"");
	if(flag16>0)
	{
		
		str_cat(temp_str,"0");//-?
		str_cat(temp_str,"0");//-?
		str_cat(temp_str,"0");	
		str_cat(temp_str,"0");//-?
		str_cat(temp_str,"0");//-?
		ifiselse(POLYGON)//6	
		str_cat(temp_str,"0");//LOCAL//7
		str_cat(temp_str,"0");//8
		ifiselse(CAST)//9
		ifiselse(METAL)//10
		ifiselse(BRIGHT)//11
		ifiselse(NOFOG)//12
		str_cat(temp_str,"0");//13
		ifiselse(SHADOW)
		ifiselse(UNLIT)
		ifiselse(NOFILTER)
	}
	
	str_cat(temp_str,"0");//17
	ifiselse(ZNEAR)//18
	ifiselse(SPOTLIGHT)//-?//19
	ifiselse(OVERLAY)//20
	str_cat(temp_str,"0");//17
	ifiselse(TRANSLUCENT)//21
	ifiselse(PASSABLE)//22
	ifiselse(INVISIBLE)//23
	ifiselse(FLAG8)//24
	ifiselse(FLAG7)//25
	ifiselse(FLAG6)//26
	ifiselse(FLAG5)//28
	ifiselse(FLAG4)//29
	ifiselse(FLAG3)//30
	ifiselse(FLAG2)//31
	ifiselse(FLAG1)//32
	file_str_write (wmb_handle,temp_str); skipline;
}
void save_wmb()
{
	//variables
	var num = 0;
	ENTITY* ent;
	char* funcname;
	var yourtype;
	var say=0;
	int i;
	
	//Remove $$m & $$w & expalette.pcx
	remove("export.$$M");
	remove("export.$$w");
	remove("expalette.pcx");
	wait(-0.5);
	
	//Create $$w file (wad7)
	FILE *myfile = fopen("export.$$w", "wb");
	int i=0;
	for(i=0;i<12;i++)
	{
		putc(bufferforwad[i], myfile);
	}
	fclose(myfile);

	//Create expalette.pcx file (wad7)
	FILE *myfile = fopen("expalette.pcx", "wb");
	int i=0;
	for(i=0;i<954;i++)
	{
		putc(bufferforpalette[i], myfile);
	}
	fclose(myfile);
	
	//Create $$m
	wmb_handle = file_open_append("export.$$M");
	file_str_write (wmb_handle,"version 711"); skipline;
	
	//level
	obrackets;file_str_write (wmb_handle," //level"); skipline;
	file_var_write (wmb_handle,0);skipline;
	file_str_write (wmb_handle,"export.$$w"); skipline;
	file_str_write (wmb_handle,"expalette.pcx"); skipline;
	cbrackets;skipline;
	
	//sun
	obrackets;file_str_write (wmb_handle," //sun"); skipline;
	file_var_write (wmb_handle,5);skipline;
	file_var_write (wmb_handle,sun_angle.tilt);skipline;
	file_var_write (wmb_handle,sun_angle.pan);skipline;
	cbrackets;skipline;
	
	

	

	var myflag16=0;
	//entities
	you = ent_next(NULL); 
	while (you)
	{ 
		draw_text("PLEASE WAIT",10,10,COLOR_RED);
		
		obrackets;file_str_write (wmb_handle," //model"); skipline;
		
		
		#ifndef ent_id
			#define ent_id
			yourtype=0;
			/*
			from sdk:
			'wmpio_ModelEntity  * model;	// id == 3 (7, for model-ex)'
			SO CHECK IF EX OR NOT (if has a material or string1-2 or has a action it's 7 else it's 3)
			*/
			
			//if(your.materialtype!=NULL)
			if(your.material!=mat_model&&your.material!=NULL&&your.material!=mat_terrain)
			{
				yourtype+=1;
			}
			//if(your.string1||string2!=NULL)
			if(str_len(your.string1)>0||str_len(your.string2)>0)
			{
				yourtype+=1;
			}	
			
			num = 0;
			say=0;
			//Check Entity has an action or not.
			for(num = 0; engine_gettaskinfo(num,&funcname,&ent); num++)
			{
				if(ent == you)
				{ 
					yourtype+=1;
					break;
				}
			}
			
			//
			if(yourtype>0)
			{
				file_var_write (wmb_handle,7);skipline;//model-ex
			}
			else
			{
				file_var_write (wmb_handle,3);skipline;//model
			}
		#endif
		
		
		//xyz
		file_var_write (wmb_handle,you.x);
		file_var_write (wmb_handle,you.y);
		file_var_write (wmb_handle,you.z);skipline;
		//pan-tilt-roll
		file_var_write (wmb_handle,you.pan);
		file_var_write (wmb_handle,you.tilt);
		file_var_write (wmb_handle,you.roll);skipline;
		//scale
		file_var_write (wmb_handle,you.scale_x);
		file_var_write (wmb_handle,you.scale_y);
		file_var_write (wmb_handle,you.scale_z);skipline;
		//Entitiy file name
		str_for_entfile(temp_str,you); 
		file_str_write (wmb_handle,temp_str); skipline;
		//Ent name
		str_for_entname(temp_str,you); 
		file_str_write (wmb_handle,temp_str); skipline;
		
		num = 0;
		say=0;
		//Get action name of Entity (Thanks to MasterQ32&JustSid for tip)
		for(num = 0; engine_gettaskinfo(num,&funcname,&ent); num++)
		{
			if(ent == you)
			{ 
				file_str_write (wmb_handle,_str(funcname)); skipline;
				say=1;
				break;
			}
			
		}
		//if entity has no action, put ndef
		if(say==0)
		{
			file_str_write (wmb_handle,"ndef"); skipline;
		}
		
		//skills
		file_var_write (wmb_handle,you.skill1);
		file_var_write (wmb_handle,you.skill2);
		file_var_write (wmb_handle,you.skill3);
		file_var_write (wmb_handle,you.skill4);
		file_var_write (wmb_handle,you.skill5);
		file_var_write (wmb_handle,you.skill6);
		file_var_write (wmb_handle,you.skill7);
		file_var_write (wmb_handle,you.skill8);
		
		
		if(yourtype>0)//type==7 
		{
			file_var_write (wmb_handle,you.skill9);
			file_var_write (wmb_handle,you.skill10);
			file_var_write (wmb_handle,you.skill11);
			file_var_write (wmb_handle,you.skill12);
			file_var_write (wmb_handle,you.skill13);
			file_var_write (wmb_handle,you.skill14);
			file_var_write (wmb_handle,you.skill15);
			file_var_write (wmb_handle,you.skill16);
			file_var_write (wmb_handle,you.skill17);
			file_var_write (wmb_handle,you.skill18);
			file_var_write (wmb_handle,you.skill19);
			file_var_write (wmb_handle,you.skill20);
			
		}skipline;
		
		
		//flags
		myflag16=0;
		
		i=0;
		for(i=1;i<17;i++)
		{
			if (is(you,entflags[i]))
			{
				myflag16=1;
			}
		
		}
		
		set_flags(myflag16);
		file_var_write (wmb_handle,your.ambient);skipline;
		
		//Get material name of Entity
		if(your.material!=mat_model&&your.material!=NULL&&your.material!=mat_terrain)
		{	file_var_write (wmb_handle,your.albedo);skipline;
			file_var_write (wmb_handle,0);skipline; //path
			file_var_write (wmb_handle,0);skipline; //attach
			str_cpy(temp_str,_chr(your.material.link.name));
			file_str_write (wmb_handle,temp_str); skipline;
		}
		else
		{
			if(yourtype>0)
			{

				file_var_write (wmb_handle,your.albedo);skipline;
				file_var_write (wmb_handle,0);skipline;//path
				file_var_write (wmb_handle,0);skipline;//attach
				file_str_write (wmb_handle,"ndef"); skipline; // if no material put ndef
			}
		}
		//string1 string2
		if(str_len(your.string1)>0)
		{
			str_cpy(temp_str,_chr(your.string1));
			file_str_write (wmb_handle,temp_str); skipline;
		}	
		if(str_len(your.string2)>0)
		{
			str_cpy(temp_str,_chr(your.string2));
			file_str_write (wmb_handle,temp_str); skipline;
		}
		
		
		cbrackets;skipline;
		you = ent_next(you);
		wait(1);
	}
	file_close(wmb_handle);



	wait(-1);
	
	//build it with default
	exec("%EXE_DIR%\\wwmp2wmb.exe","export.$$M -pal expalette.pcx 
	-az 10 -el 60 
	-sunrgb 100 100 100 
	-ambrgb 100 100 100 
	-noportals 
	-hiprec 
	-writelog 
	-close 
	-nodetail 
	-threads 2 
	-gamma 1.50 
	-phongangle 120  
	-lmambient 50  
	-sizeshaded 236 
	-litres 1.00 
	-litcomp 0.50 
	-litmax 196 
	-litscale 0.50 
	-radsubdiv 64 
	-radbounce 0 
	-bound 56000 
	-fat 64  48  8  
	-narrow 32  32  0 ");
	
	//exec("%EXE_DIR%\\wwmp2wmb.exe","export.$$M -pal palette.pcx -close");
	
}

void on_enter_event()
{
	save_wmb();
}



About the action, i think loop is necessary for "engine_gettaskinfo" and i don't know the solution.

Re: Save as .wmb [Re: Emre] #392299
01/21/12 12:47
01/21/12 12:47
Joined: Mar 2011
Posts: 3,150
Budapest
sivan Offline
Expert
sivan  Offline
Expert

Joined: Mar 2011
Posts: 3,150
Budapest
yes a loop solves it. but I use only 3DGS Extra, which does not support terrain shadowmapping, so it should be the reason why I get black terrains. but I just reintalled windows- because it is fun grin - so I can try it with the full version 30 day trial 3dgs.


Free world editor for 3D Gamestudio: MapBuilder Editor
Page 1 of 4 1 2 3 4

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1