[solve] Lite-c skill100 above

Posted By: 20BN

[solve] Lite-c skill100 above - 01/06/18 06:57

Hi, all
How to define EMTITY sub-functions over 100 skill? (skill[0]-skill[99])
I need more skills (7000 above).

Posted By: painkiller

Re: Lite-c skill100 above - 01/06/18 11:53

you could create arrays or structs for each entity and save a pointer for them in one skill. This way you can have unlimited data for each entity.
Posted By: 20BN

Re: Lite-c skill100 above - 01/06/18 16:07

@painkiller THANKS.

typedef struct MORESKILL
{
ENTITY* ent;
var custom_value[1000];
....

}MORESKILL

But, how to link ENTITY* ent ?

set
MORESKILL.ent = my;
and use
MORESKILL.custom_value[x]?

THANKS AGAIN.
Posted By: Superku

Re: Lite-c skill100 above - 01/06/18 18:53

Something like this should do the trick:

Code:
#define entMoreSkill skill100

MORESKILL* moreSkillCreate()
{
	MORESKILL* more;
	
	more = (MORESKILL*)sys_malloc(sizeof(MORESKILL));
	
	return more;
}


void moreSkillDestroy(MORESKILL* more) // call this on_ent_remove if skill100 != 0
{
	sys_free(more);
}


...

MORESKILL* more = (MORESKILL*)my.entMoreSkill;
if(!more) my.entMoreSkill = more = moreSkillCreate();
more.custom_value[x] = 137.1;

Posted By: 20BN

Re: Lite-c skill100 above - 01/07/18 12:21

@Superku
Thank you so much. All entities was unlimited now.
But other void how to point entity custom skill?

Code:
void attack()
{
/*
    HOW TO POINT test_me'S more.custom_value[x] IN THIS FUNCTION?
*/
}

void movement(ENTITY* target_ent, var num......)
{
.....
}

action test_me()
{
MORESKILL* more = (MORESKILL*)my.entMoreSkill;
if(!more) my.entMoreSkill = more = moreSkillCreate();
more.custom_value[x] = 137.1;
......
    while(my)
    {
        .....
        movement(my, more.custom_value[x].....);
        wait(1);
    }

}

Posted By: Superku

Re: Lite-c skill100 above - 01/07/18 20:23

Assuming I got you correctly you can give the following a try:

Code:
#define moreSkillGetForEnt(ent) ((MORESKILL*)ent.entMoreSkill)


void attack()
{
	MORESKILL* more = moreSkillGetForEnt(ent);
	... use more.custom_value[x] here
}

void movement(ENTITY* target_ent, var num......)
{
	MORESKILL* more = moreSkillGetForEnt(ent);
	.....
}

action test_me()
{
	MORESKILL* more = my.entMoreSkill = moreSkillCreate(); // create once at start of entity function
	more.custom_value[x] = 137.1;
	......
    while(my)
    {
        .....
        movement(my, more.custom_value[x].....);
        wait(1);
    }
}

Posted By: 20BN

Re: Lite-c skill100 above - 01/08/18 15:12

@Superku
Amazing!!! Big thanks!
I PM some message to you.
© 2024 lite-C Forums