Перейти к содержанию

waitingroom2bg


Рекомендуемые сообщения

Всем доброго времени суток.

Возможно среди светлых умов сего форума - найду решение проблемы.

В целом ситуация проста:

После изменения сорц части - перестало работать присвоение die-метки для персонажей на БГ.

пример:


set $@KvM04BG_id1, waitingroom2bg("bat_c04",53,128,0,"KvM04_BG::OnGuillaumeQuit","KvM04_BG::OnGuillaumeDie");

Тут, как вы видите - модификация на присвоение псевдо-гильдии для БГ-группы, выглядит следующим образом:


BUILDIN_FUNC(waitingroom2bg)
{
struct npc_data *nd;
struct chat_data *cd;
const char *map_name, *ev = "", *dev = "";
int x, y, i, mapindex = 0, guild_index, bg_id;
struct map_session_data *sd;

nd = (struct npc_data *)map_id2bl(st->oid);
if( nd == NULL || (cd = (struct chat_data *)map_id2bl(nd->chat_id)) == NULL )
{
script_pushint(st,0);
return 0;
}

map_name = script_getstr(st,2);
if( strcmp(map_name,"-") != 0 && (mapindex = mapindex_name2id(map_name)) == 0 )
{
script_pushint(st,0);
return 0;
}

x = script_getnum(st,3);
y = script_getnum(st,4);
guild_index = script_getnum(st,5);
ev = script_getstr(st,6); // Logout Event
dev = script_getstr(st,7); // Die Event

guild_index = cap_value(guild_index, 0, 12);
if( (bg_id = bg_create(mapindex, x, y, guild_index, ev, dev)) == 0 )
{ // Creation failed
script_pushint(st,0);
return 0;
}

for( i = 0; i < cd->users && i < MAX_BG_MEMBERS; i++ )
{
if( (sd = cd->usersd[i]) != NULL && bg_team_join(bg_id, sd) )
mapreg_setreg(reference_uid(add_str("$@arenamembers"), i), sd->bl.id);
else
mapreg_setreg(reference_uid(add_str("$@arenamembers"), i), 0);
}

mapreg_setreg(add_str("$@arenamembersnum"), i);
script_pushint(st,bg_id);
return 0;
}

BUILDIN_DEF(waitingroom2bg,"siiiss"),

Метка "KvM04_BG::OnGuillaumeDie" не срабатывает, в то время как "KvM04_BG::OnGuillaumeQuit" - прекрасно работает.

Может у кого-то есть идеи?

p.s. Заранее благодарен за ответы.

Ссылка на комментарий
Поделиться на другие сайты


int bg_create(unsigned short mapindex, short rx, short ry, int guild_index, const char *ev, const char *dev)
{
struct battleground_data *bg;
if( ++bg_team_counter <= 0 ) bg_team_counter = 1;
CREATE(bg, struct battleground_data, 1);
bg->bg_id = bg_team_counter;
bg->creation_tick = 0;
bg->count = 0;
bg->g = &bg_guild[guild_index];
bg->mapindex = mapindex;
bg->x = rx;
bg->y = ry;
safestrncpy(bg->logout_event, ev, sizeof(bg->logout_event));
safestrncpy(bg->die_event, dev, sizeof(bg->die_event));
memset(&bg->members, 0, sizeof(bg->members));
bg->color = bg_colors[guild_index];

idb_put(bg_team_db, bg_team_counter, bg);
return bg->bg_id;
}

https://www.assembla.com/code/eamodgratuito/subversion/nodes/eAmod-A/Diffs/battleground/eAthena.patch?_format=raw&rev=7

Изменено пользователем SemirLab
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика