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

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

Да знаю. У меня был квет, где мобы были как чары, одетые в шмот кастомный с моего сервера.

Имели скилы как у их проф и т.п. Все работало.

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

botka4aet, видимо, забывает упоминать, что ошибка возникает вовсе не при вызове монстра. Он ставит в спрайт NPC будучи изменённый ID 2501

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

  • 1 год спустя...

проблема решилась? таже беда((

my problem is that when mob spawn client crash because search sprite in data\sprite\npc, after that you relog and your swordman is there... I'm working on this, I think is needed only to copy pg body sprite in npc dir...

мб это поможет...

вот тут еще решение (не проверяла) позже попробую отпишусь (оставлю это тут для себя и может еще кому пригодится)

http://dsro.ru/?action=thread&id=812

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

Мой оригинал clif.c


/*==========================================
* mapЋI‚Мport“З‚ЭЏo‚µ
*------------------------------------------*/
uint16 clif_getport(void)
{
return map_port;
}
#if PACKETVER >= 20071106
static inline unsigned char clif_bl_type(struct block_list *bl) {
switch (bl->type) {
case BL_PC: return disguised(bl)?0x1:0x0; //PC_TYPE
case BL_ITEM: return 0x2; //ITEM_TYPE
case BL_SKILL: return 0x3; //SKILL_TYPE
case BL_CHAT: return 0x4; //UNKNOWN_TYPE
case BL_MOB: return pcdb_checkid(status_get_viewdata(bl)->class_)?0x0:0x5; //NPC_MOB_TYPE
case BL_NPC: return 0x6; //NPC_EVT_TYPE
case BL_PET: return pcdb_checkid(status_get_viewdata(bl)->class_)?0x0:0x7; //NPC_PET_TYPE
case BL_HOM: return 0x8; //NPC_HOM_TYPE
case BL_MER: return 0x9; //NPC_MERSOL_TYPE
// case BL_ELEM: return 0xA; //NPC_ELEMENTAL_TYPE
default: return 0x1; //NPC_TYPE
}
}
#endif

решение


#if PACKETVER >= 20071106
static inline unsigned char clif_bl_type(struct block_list *bl) {
// Lecture de la class
int class_ = status_get_viewdata(bl)->class_;
int type = bl->type;
if( type == BL_NPC || type == BL_MOB || type == BL_PC )
{
if ( class_ < 45 ) type = BL_PC;
else if ( class_ < 1000 ) type = BL_NPC;
else if ( class_ < 4000 ) type = BL_MOB;
else type = BL_PC;
}

осталось понять как применить и не грохнуть все к чертям, есть идеи?

как вариант, сделать непися с видом игрока через клонирование игрока.

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

Мой оригинал clif.c


/*==========================================
* mapЋI‚Мport“З‚ЭЏo‚µ
*------------------------------------------*/
uint16 clif_getport(void)
{
return map_port;
}
#if PACKETVER >= 20071106
static inline unsigned char clif_bl_type(struct block_list *bl) {
switch (bl->type) {
case BL_PC: return disguised(bl)?0x1:0x0; //PC_TYPE
case BL_ITEM: return 0x2; //ITEM_TYPE
case BL_SKILL: return 0x3; //SKILL_TYPE
case BL_CHAT: return 0x4; //UNKNOWN_TYPE
case BL_MOB: return pcdb_checkid(status_get_viewdata(bl)->class_)?0x0:0x5; //NPC_MOB_TYPE
case BL_NPC: return 0x6; //NPC_EVT_TYPE
case BL_PET: return pcdb_checkid(status_get_viewdata(bl)->class_)?0x0:0x7; //NPC_PET_TYPE
case BL_HOM: return 0x8; //NPC_HOM_TYPE
case BL_MER: return 0x9; //NPC_MERSOL_TYPE
// case BL_ELEM: return 0xA; //NPC_ELEMENTAL_TYPE
default: return 0x1; //NPC_TYPE
}
}
#endif

решение


#if PACKETVER >= 20071106
static inline unsigned char clif_bl_type(struct block_list *bl) {
// Lecture de la class
int class_ = status_get_viewdata(bl)->class_;
int type = bl->type;
if( type == BL_NPC || type == BL_MOB || type == BL_PC )
{
if ( class_ < 45 ) type = BL_PC;
else if ( class_ < 1000 ) type = BL_NPC;
else if ( class_ < 4000 ) type = BL_MOB;
else type = BL_PC;
}

осталось понять как применить и не грохнуть все к чертям, есть идеи?

как вариант, сделать непися с видом игрока через клонирование игрока.

зачем так извращаться, всегда все работало через обычный mobavail

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

зачем так извращаться, всегда все работало через обычный mobavail

Работало. Давно.

В общем нифига уже давно просто так не работает.

Если поставить спрайт моба на непися - нормально

Если поставить на моба спрайт игрока - нормально

Если поставить на непися через моб авайл спрайт игрока - фейл (суммон дисгайс, ок)

Летит гравити, ругается на спрайт. Подсовываешь спрайт в папку с мобами, гравити летать перестает, но все остальные строки в моб авайл будто не читаются. Нет башки, палитры, шапок и всех остальных прелестей клонирования игроков.

Возникла одна мысль, со временем сломался механизм вытягивания вью айди неписем из моб авайл. Пыталась его найти, но без должного понимания сырцов не вышло, хожу вокруг да около.

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

Тоже столкнулся с данной проблемой для магазина крыльев и до сих пор не знаю как ее решить.

Попробуйте написать Functor, я всё время обращаюсь к нему и он всегда помогает по возможности.

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

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