Jump to content
  • 0

Custom script command


pajodex

Question


  • Group:  Members
  • Topic Count:  78
  • Topics Per Day:  0.03
  • Content Count:  436
  • Reputation:   167
  • Joined:  12/12/17
  • Last Seen:  

Hi,

I'm making a custom script command. I want to make a version of bg_monster but instead of bg change to party, So far here is what I was aable to make. No errors but monster do not detect party members as friendly unit:

BUILDIN_FUNC(pt_monster)
{
	int class_ = 0, x = 0, y = 0, party_id = 0;
	const char *str, *mapname, *evt = "";

	party_id = script_getnum(st, 2);
	mapname = script_getstr(st, 3);
	x = script_getnum(st, 4);
	y = script_getnum(st, 5);
	str = script_getstr(st, 6);
	class_ = script_getnum(st, 7);
	if (script_hasdata(st, 8)) evt = script_getstr(st, 8);
	check_event(st, evt);
	script_pushint(st, mob_spawn_party(mapname, x, y, str, class_, evt, party_id));
	return SCRIPT_CMD_SUCCESS;
}
/*==========================================
* Party Monster
*------------------------------------------*/
int mob_spawn_party(const char* mapname, int16 x, int16 y, const char* mobname, int mob_id, const char* event, unsigned int party_id)
{
	struct mob_data *md = NULL;
	struct spawn_data data;
	int16 m;

	if ((m = map_mapname2mapid(mapname)) < 0)
	{
		ShowWarning("mob_spawn_party: Map [%s] not found.\n", mapname);
		return 0;
	}

	memset(&data, 0, sizeof(struct spawn_data));
	data.m = m;
	data.num = 1;
	if (mob_id <= 0)
	{
		mob_id = mob_get_random_id(-mob_id - 1, 1, 99);
		if (!mob_id) return 0;
	}

	data.id = mob_id;
	if ((x <= 0 || y <= 0) && !map_search_freecell(NULL, m, &x, &y, -1, -1, 1))
	{
		ShowWarning("mob_spawn_paarty: Couldn't locate a spawn cell for guardian class %d (bg_id %d) at map %s\n", mob_id, party_id, map[m].name);
		return 0;
	}

	data.x = x;
	data.y = y;
	safestrncpy(data.name, mobname, sizeof(data.name));
	safestrncpy(data.eventname, event, sizeof(data.eventname));
	if (!mob_parse_dataset(&data))
		return 0;

	md = mob_spawn_dataset(&data);
	mob_spawn(md);
	md->party_id = party_id; // BG Team ID

	return md->bl.id;
}

Thanks for those who will help

 

Note: I also edited the script.h and mob.h parts but I did not include since I don't think it is related here.

Edited by pajodex
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...