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.
Question
pajodex
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 pajodexLink to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.