Ok, I think I have done my due diligence and searched the forums but I can't figure out what I'm doing wrong here.
Basically I'm trying to make an array of struct instances and then edit and access the elements of those structs.

Code:
typedef struct SKILL{
	
	STRING* NAME;
	STRING* DESC;
	BMAP* ICON;
	var LEVEL;
	var PREQ;
	var BUY;
	STRING* UPGRADE;
	var XTREE;
	var YTREE;

} SKILL;

var skillnum = 1;
SKILL skilltree[50] ;
//skilltree = malloc(totalskills*sizeof(SKILL));
//memset( skilltree[1], 0, sizeof(SKILL));

skilltree[1].NAME = str_create("REST");
//skilltree[1].ICON = str_create("icons\\REST.png");
skilltree[1].ICON = bmap_create("icons\\REST.png");
//skilltree[1].ICON = bmap_createpart("icons\\REST.png",0,0,100,100);
skilltree[1].DESC = str_create("");
skilltree[1].LEVEL = 1;
skilltree[1].PREQ = 0;
skilltree[1].BUY = 1;
skilltree[1].UPGRADE= str_create("+2");
skilltree[1].XTREE = 5;
skilltree[1].YTREE = 3;


function MakeSkillTree()
{
	BMAP* tempicon;
	var b=1;
	var *xpos,*ypos;
	//STRING* fname = "test";
	//sys_marker = "FNM";
	//fname = skilltree[1].ICON;
	//fname = str_create(skilltree[b].ICON);
	
	//TXTMESSAGE = "Hello World"; 
	//pan_setstring(panDisplay, 8, 5,90, arial_font, str_create(TXTMESSAGE) );
	//wait(1);
	//pan_setstring(panDisplay, 8, 5,90, arial_font, str_create(fname) );
	
	/*
	for( b=1; skilltree[b].LEVEL>=0; b+=1 );
	{*/
		//mesg = "Hello World"; 
		//mesg = skilltree[b].ICON;
		//fname = skilltree[b].ICON;
		//tempicon = bmap_create( fname );
		tempicon = skilltree[b].ICON;
		//tempicon = bmpLIFELEVEL;
		//tempicon = bmap_create("icons\\REST.png");
		//tempicon = bmap_create( skilltree[b].ICON );
		//skillicons[b] = bmap_create( skilltree[b].ICON );
		//sys_marker = "BUT";
		
		xpos = (skilltree[b].XTREE)*100;
		ypos = (skilltree[b].YTREE)*100;
		
		//pan_setbutton(panSkillTree, 0,   0,    xpos, ypos, skillicons[b], skillicons[b], skillicons[b], skillicons[b],     NULL,                NULL,                NULL);

		pan_setbutton(panSkillTree, 0,   0,    xpos, ypos, tempicon, tempicon, tempicon, NULL,  NULL,   NULL,  NULL);

		//pan_setbutton(panSkillTree, 0,0, 50,300, bmpLIFELEVEL , bmpLIFELEVEL, bmpLIFELEVEL, NULL, NULL, NULL, NULL);  // this line for reference only
	//}
//    pan_setbutton(PANEL*,       num, type, x,    y,                   BMAP* bmapOn,  BMAP* bmapOff, BMAP* bmapOver, BMAP* bmapOverOff, void* functionClick, void* functionLeave, void* functionOver);
	//*/
}



I get an "invalid function arguments" error
I've left all the commented lines because they were things I tried.
Sometimes I could get a script error instead.
It seems none of the info I've stored in the struct is accessible later.

please help, I've been banging my head against this for days and I'm sure it is a simple error I just can't see.