Fox RM Опубликовано 21 ноября, 2014 Жалоба Поделиться Опубликовано 21 ноября, 2014 Значит , снова же эти костюмы, возникла небольшая проблема. Решил переписать мод, который будет указан ниже, под eAthena, следует заметить что написан он под rAthena. Так вот:Index: atcommand.c===================================================================--- atcommand.c (revision 17306)+++ atcommand.c (working copy)@@ -1117,7 +1117,7 @@ACMD_FUNC(item){char item_name[100];- int number = 0, item_id, flag = 0;+ int number = 0, item_id, flag = 0, costume = 0;struct item item_tmp;struct item_data *item_data;int get_count, i;@@ -1142,7 +1142,27 @@clif_displaymessage(fd, msg_txt(sd,19)); // Invalid item ID or name.return -1;}-++ if( !strcmpi(command+1,"costumeitem") )+ {+ if( !battle_config.reserved_costume_id )+ {+ clif_displaymessage(fd, "Costume convertion is disable. Set a value for reserved_cosutme_id on your battle.conf file.");+ return -1;+ }+ if( !(item_data->equip&EQP_HEAD_LOW) &&+ !(item_data->equip&EQP_HEAD_MID) &&+ !(item_data->equip&EQP_HEAD_TOP) &&+ !(item_data->equip&EQP_COSTUME_HEAD_LOW) &&+ !(item_data->equip&EQP_COSTUME_HEAD_MID) &&+ !(item_data->equip&EQP_COSTUME_HEAD_TOP) )+ {+ clif_displaymessage(fd, "You cannot costume this item. Costume only work for headgears.");+ return -1;+ }+ costume = 1;+ }+item_id = item_data->nameid;get_count = number;//Check if it's stackable.@@ -1155,7 +1175,13 @@memset(&item_tmp, 0, sizeof(item_tmp));item_tmp.nameid = item_id;item_tmp.identify = 1;-+ if( costume == 1 )+ { // Costume Item+ item_tmp.card[0] = CARD0_CREATE;+ item_tmp.card[2] = GetWord(battle_config.reserved_costume_id, 0);+ item_tmp.card[3] = GetWord(battle_config.reserved_costume_id, 1);+ }+if ((flag = pc_additem(sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) clif_additem(sd, 0, 0, flag);}@@ -9251,7 +9277,9 @@ACMD_DEF(channel),ACMD_DEF(fontcolor),ACMD_DEF(langtype),- ACMD_DEF(reloadmsgconf)+ ACMD_DEF(reloadmsgconf),+ ACMD_DEF2("costumeitem", item)+};AtCommandInfo* atcommand;int i;Index: battle.c===================================================================--- battle.c (revision 17306)+++ battle.c (working copy)@@ -5939,6 +5939,7 @@{ "item_enabled_npc", &battle_config.item_enabled_npc, 1, 0, 1, },{ "item_flooritem_check", &battle_config.item_onfloor, 1, 0, 1, },{ "bowling_bash_area", &battle_config.bowling_bash_area, 0, 0, 20, },+ { "reserved_costume_id", &battle_config.reserved_costume_id, 999998, 0, INT_MAX, },};#ifndef STATS_OPT_OUT/**Index: battle.h===================================================================--- battle.h (revision 17306)+++ battle.h (working copy)@@ -488,6 +488,10 @@int item_enabled_npc;int item_onfloor; // Whether to drop an undroppable item on the map or destroy it if inventory is full.int bowling_bash_area;++ // Costume System+ int reserved_costume_id;+} battle_config;void do_init_battle(void);Index: map.c===================================================================--- map.c (revision 17306)+++ map.c (working copy)@@ -1537,7 +1537,13 @@struct map_session_data* tsd;nullpo_retv(sd);-++ if( battle_config.reserved_costume_id && battle_config.reserved_costume_id == charid )+ {+ clif_solved_charname(sd->fd, charid, "Costume");+ return;+ }+tsd = map_charid2sd(charid);if( tsd ){Index: pc.c===================================================================--- pc.c (revision 17306)+++ pc.c (working copy)@@ -66,8 +66,7 @@struct fame_list chemist_fame_list[MAX_FAME_LIST];struct fame_list taekwon_fame_list[MAX_FAME_LIST];-static unsigned short equip_pos[EQI_MAX]={EQP_ACC_L,EQP_ACC_R,EQP_SHOES,EQP_GARMENT,EQP_HEAD_LOW,EQP_HEAD_MID,EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_COSTUME_HEAD_TOP,EQP_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT,EQP_AMMO};-+static unsigned short equip_pos[EQI_MAX]={EQP_ACC_L,EQP_ACC_R,EQP_SHOES,EQP_GARMENT,EQP_HEAD_LOW,EQP_HEAD_MID,EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_AMMO,EQP_COSTUME_HEAD_TOP,EQP_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT};#define MOTD_LINE_SIZE 128static char motd_text[MOTD_LINE_SIZE][CHAT_SIZE_MAX]; // Message of the day buffer [Valaris]@@ -586,7 +585,7 @@int pc_equippoint(struct map_session_data *sd,int n){- int ep = 0;+ int ep = 0, char_id = 0;nullpo_ret(sd);@@ -604,6 +603,15 @@(sd->class_&MAPID_UPPERMASK) == MAPID_KAGEROUOBORO))//Kagerou and Oboro can dual wield daggers. [Rytech]return EQP_ARMS;}++ if( battle_config.reserved_costume_id &&+ sd->status.inventory[n].card[0] == CARD0_CREATE &&+ (char_id = MakeDWord(sd->status.inventory[n].card[2],sd->status.inventory[n].card[3])) == battle_config.reserved_costume_id )+ { // Costume Item - Converted+ if( ep&EQP_HEAD_TOP ) { ep &= ~EQP_HEAD_TOP; ep |= EQP_COSTUME_HEAD_TOP; }+ if( ep&EQP_HEAD_LOW ) { ep &= ~EQP_HEAD_LOW; ep |= EQP_COSTUME_HEAD_LOW; }+ if( ep&EQP_HEAD_MID ) { ep &= ~EQP_HEAD_MID; ep |= EQP_COSTUME_HEAD_MID; }+ }return ep;}@@ -1910,8 +1918,8 @@ if( autobonus[i].bonus_script ) { int j;- ARR_FIND( 0, EQI_MAX-1, j, sd->equip_index[j] >= 0 && sd->status.inventory[sd->equip_index[j]].equip == autobonus[i].pos );- if( j < EQI_MAX-1 )+ ARR_FIND( 0, EQI_MAX_BONUS, j, sd->equip_index[j] >= 0 && sd->status.inventory[sd->equip_index[j]].equip == autobonus[i].pos );+ if( j < EQI_MAX_BONUS ) script_run_autobonus(autobonus[i].bonus_script,sd->bl.id,sd->equip_index[j]); } continue;@@ -1941,8 +1949,8 @@if( autobonus->other_script ){int j;- ARR_FIND( 0, EQI_MAX-1, j, sd->equip_index[j] >= 0 && sd->status.inventory[sd->equip_index[j]].equip == autobonus->pos );- if( j < EQI_MAX-1 )+ ARR_FIND( 0, EQI_MAX_BONUS, j, sd->equip_index[j] >= 0 && sd->status.inventory[sd->equip_index[j]].equip == autobonus->pos );+ if( j < EQI_MAX_BONUS )script_run_autobonus(autobonus->other_script,sd->bl.id,sd->equip_index[j]);}Index: pc.h===================================================================--- pc.h (revision 17306)+++ pc.h (working copy)@@ -37,11 +37,12 @@EQI_ARMOR,EQI_HAND_L,EQI_HAND_R,+ EQI_AMMO,+ EQI_MAX_BONUS = 10,EQI_COSTUME_TOP,EQI_COSTUME_MID,EQI_COSTUME_LOW,EQI_COSTUME_GARMENT,- EQI_AMMO,EQI_MAX};Index: script.c===================================================================--- script.c (revision 17306)+++ script.c (working copy)@@ -17596,6 +17596,52 @@return 0;}+/*==========================================+ * Costume Items+ *------------------------------------------*/+BUILDIN_FUNC(costume)+{+ int i = -1, num, ep;+ TBL_PC *sd;++ num = script_getnum(st,2); // Equip Slot+ sd = script_rid2sd(st);++ if( sd == NULL )+ return 0;+ if( num > 0 && num <= ARRAYLENGTH(equip) )+ i = pc_checkequip(sd, equip[num - 1]);+ if( i < 0 )+ return 0;++ ep = sd->status.inventory[i].equip;+ if( !(ep&EQP_HEAD_LOW) && !(ep&EQP_HEAD_MID) && !(ep&EQP_HEAD_TOP) )+ return 0;++ log_pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->status.inventory[i]);+ pc_unequipitem(sd,i,2);+ clif_delitem(sd,i,1,3);+ // --------------------------------------------------------------------+ sd->status.inventory[i].refine = 0;+ sd->status.inventory[i].attribute = 0;+ sd->status.inventory[i].card[0] = CARD0_CREATE;+ sd->status.inventory[i].card[1] = 0;+ sd->status.inventory[i].card[2] = GetWord(battle_config.reserved_costume_id, 0);+ sd->status.inventory[i].card[3] = GetWord(battle_config.reserved_costume_id, 1);++ if( ep&EQP_HEAD_TOP ) { ep &= ~EQP_HEAD_TOP; ep |= EQP_COSTUME_HEAD_TOP; }+ if( ep&EQP_HEAD_LOW ) { ep &= ~EQP_HEAD_LOW; ep |= EQP_COSTUME_HEAD_LOW; }+ if( ep&EQP_HEAD_MID ) { ep &= ~EQP_HEAD_MID; ep |= EQP_COSTUME_HEAD_MID; }+ // --------------------------------------------------------------------+ log_pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[i]);++ clif_additem(sd,i,1,0);+ pc_equipitem(sd,i,ep);+ clif_misceffect(&sd->bl,3);++ return 0;+}+// declarations that were supposed to be exported from npc_chat.c#ifdef PCRE_SUPPORTBUILDIN_FUNC(defpattern);@@ -18060,5 +18106,9 @@BUILDIN_DEF(checkquest, "i?"),BUILDIN_DEF(changequest, "ii"),BUILDIN_DEF(showevent, "ii"),++ // Costume System+ BUILDIN_DEF(costume,"i"),+{NULL,NULL,NULL},};Index: status.c===================================================================--- status.c (revision 17306)+++ status.c (working copy)@@ -2455,7 +2455,7 @@pc_delautobonus(sd,sd->autobonus3,ARRAYLENGTH(sd->autobonus3),true);// Parse equipment.- for(i=0;i<EQI_MAX-1;i++) {+ for(i=0;i<EQI_MAX_BONUS;i++) {current_equip_item_index = index = sd->equip_index[i]; //We pass INDEX to current_equip_item_index - for EQUIP_SCRIPT (new cards solution) [Lupus]if(index < 0)continue;Index: battle.conf===================================================================--- battle.conf (revision 17306)+++ battle.conf (working copy)@@ -141,3 +141,9 @@// range. For example, Sonic Blow requires a 2 cell distance before autocasting is allowed.// This setting also affects autospellwhenhit.autospell_check_range: no++// ****************************************+// Reserved Costume ID's+// ****************************************+// Reserved Char ID for costume converted items.+reserved_costume_id: 999998Что я здесь изменил:atccommand.c :ACMD_DEF2("costumeitem", item)На:{ "costumeitem", 60,60, atcommand_item },Хорошо, поехали дальше :script.c :+ log_pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->status.inventory[i]);и+log_pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[i]);на:log_pick(&sd->bl, LOG_TYPE_SCRIPT, sd->status.inventory[i].nameid, -1, &sd->status.inventory[i]);иlog_pick(&sd->bl, LOG_TYPE_SCRIPT, sd->status.inventory[i].nameid, 1, &sd->status.inventory[i]);Далее я добавил недостающие строки кода с rAthena, а именно:pc.c:if(pos & EQP_HEAD_LOW && pc_checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) {if(id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID)))sd->status.head_bottom = id->look;elsesd->status.head_bottom = 0;clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}if(pos & EQP_HEAD_TOP && pc_checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) {if(id)sd->status.head_top = id->look;elsesd->status.head_top = 0;clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(pos & EQP_HEAD_MID && pc_checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) {if(id && !(pos&EQP_HEAD_TOP))sd->status.head_mid = id->look;elsesd->status.head_mid = 0;clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(pos & EQP_COSTUME_HEAD_TOP) {if(id){sd->status.head_top = id->look;} elsesd->status.head_top = 0;clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(pos & EQP_COSTUME_HEAD_MID) {if(id && !(pos&EQP_HEAD_TOP)){sd->status.head_mid = id->look;} elsesd->status.head_mid = 0;clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(pos & EQP_COSTUME_HEAD_LOW) {if(id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID))){sd->status.head_bottom = id->look;} elsesd->status.head_bottom = 0;clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}if(sd->status.inventory[n].equip & EQP_HEAD_LOW && pc_checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1 ) {sd->status.head_bottom = 0;clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}if(sd->status.inventory[n].equip & EQP_HEAD_TOP && pc_checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1 ) {sd->status.head_top = 0;clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(sd->status.inventory[n].equip & EQP_HEAD_MID && pc_checkequip(sd,EQP_COSTUME_HEAD_MID) == -1 ) {sd->status.head_mid = 0;clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_TOP) {sd->status.head_top = ( pc_checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_TOP)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_MID) {sd->status.head_mid = ( pc_checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_MID)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_LOW) {sd->status.head_bottom = ( pc_checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_LOW)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}pc.h:EQP_COSTUME_HEAD_TOP = 0x000400, // 1024EQP_COSTUME_HEAD_MID = 0x000800, // 2048EQP_COSTUME_HEAD_LOW = 0x001000, // 4096#define EQP_COSTUME (EQP_COSTUME_HEAD_TOP|EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_LOW)EQI_MAX_BONUS = 10,EQI_COSTUME_TOP,EQI_COSTUME_MID,EQI_COSTUME_LOW,EQI_MAXstatus.c:if(i == EQI_COSTUME_MID && sd->equip_index[EQI_COSTUME_LOW] == index)continue;if(i == EQI_COSTUME_TOP && (sd->equip_index[EQI_COSTUME_MID] == index || sd->equip_index[EQI_COSTUME_LOW] == index))continue;Вроде бы ничего не забыл, так вот и всё бы ничего, но есть одно "очень маленькое НО" :1. Надеваем Костюм, после чего прописываем @item <Любой ID шапки> , и выскакивает ошибка о том что Персонаж перегружен, смотрим на загруженность сумки , а там вес уходит в минус ( Например: Weight: -6564 / 10000)2. Пишу команду: @job 4010(к примеру) . Итог: Крашит мап серверЕсть подозрение что нет какой-либо проверки в pc.cСоответственно прошу Вашей помощи, так как в С++ не особо силён . У кого какие идеи? Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 22 ноября, 2014 Автор Жалоба Поделиться Опубликовано 22 ноября, 2014 Понятно... на помощь я так понял рассчитывать не стоит, поступим иначе - готов заплатить, за помощь в решении проблемы. Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 22 ноября, 2014 Жалоба Поделиться Опубликовано 22 ноября, 2014 Ошибок нет? Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 22 ноября, 2014 Автор Жалоба Поделиться Опубликовано 22 ноября, 2014 нет Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 22 ноября, 2014 Жалоба Поделиться Опубликовано 22 ноября, 2014 (изменено) Можно ревизию еа?Не забыл? Или просто в пост не внес?+++ battle.conf (working copy)@@ -141,3 +141,9 @@// range. For example, Sonic Blow requires a 2 cell distance before autocasting is allowed.// This setting also affects autospellwhenhit.autospell_check_range: no++// ****************************************+// Reserved Costume ID's+// ****************************************+// Reserved Char ID for costume converted items.+reserved_costume_id: 999998 Изменено 22 ноября, 2014 пользователем botka4aet Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 23 ноября, 2014 Автор Жалоба Поделиться Опубликовано 23 ноября, 2014 Можно ревизию еа?Не забыл? Или просто в пост не внес?+++ battle.conf (working copy)@@ -141,3 +141,9 @@// range. For example, Sonic Blow requires a 2 cell distance before autocasting is allowed.// This setting also affects autospellwhenhit.autospell_check_range: no++// ****************************************+// Reserved Costume ID's+// ****************************************+// Reserved Char ID for costume converted items.+reserved_costume_id: 999998Это всё внесено, этот кусок же в диффе есть, всё что в диффе внесено. Ревизия 15268 Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 26 ноября, 2014 Жалоба Поделиться Опубликовано 26 ноября, 2014 Смотрю revision 17306, а там вместоchar item_name[100];int number = 0, item_id, flag = 0;следующееchar item_name[100];int number = 0, bound = BOUND_NONE; Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 26 ноября, 2014 Автор Жалоба Поделиться Опубликовано 26 ноября, 2014 Смотрю revision 17306, а там вместоchar item_name[100];int number = 0, item_id, flag = 0;следующееchar item_name[100];int number = 0, bound = BOUND_NONE;Ничего не поменяется дружище) Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 26 ноября, 2014 Жалоба Поделиться Опубликовано 26 ноября, 2014 Просто вопрос в том - работает ли вообще этот src? Ссылка на комментарий Поделиться на другие сайты Поделиться
milk Опубликовано 27 ноября, 2014 Жалоба Поделиться Опубликовано 27 ноября, 2014 в pc.c попробуй чутка сменить:if(pos&(EQP_HEAD_LOW|EQP_COSTUME_HEAD_LOW)) {if(id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID|EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_TOP)))sd->status.head_bottom = id->look;elsesd->status.head_bottom = 0;if((pos&EQP_HEAD_LOW && (pc_checkequip(sd,EQP_COSTUME_HEAD_LOW)) < 0) || pos&EQP_COSTUME_HEAD_LOW)clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}if(pos&(EQP_HEAD_TOP|EQP_COSTUME_HEAD_TOP)) {if(id)sd->status.head_top = id->look;elsesd->status.head_top = 0;if((pos&EQP_HEAD_TOP && (pc_checkequip(sd,EQP_COSTUME_HEAD_TOP)) < 0) || pos&EQP_COSTUME_HEAD_TOP)clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(pos&(EQP_HEAD_MID|EQP_COSTUME_HEAD_MID)) {if(id && !(pos&(EQP_HEAD_TOP|EQP_COSTUME_HEAD_TOP)))sd->status.head_mid = id->look;elsesd->status.head_mid = 0;if((pos&EQP_HEAD_MID && (pc_checkequip(sd,EQP_COSTUME_HEAD_MID)) < 0) || pos&EQP_COSTUME_HEAD_MID)clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(sd->status.inventory[n].equip & EQP_HEAD_LOW) {sd->status.head_bottom = ( pc_checkequip(sd,EQP_COSTUME_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_COSTUME_HEAD_LOW)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}if(sd->status.inventory[n].equip & EQP_HEAD_TOP) {sd->status.head_top = ( pc_checkequip(sd,EQP_COSTUME_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_COSTUME_HEAD_TOP)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(sd->status.inventory[n].equip & EQP_HEAD_MID) {sd->status.head_mid = ( pc_checkequip(sd,EQP_COSTUME_HEAD_MID) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_COSTUME_HEAD_MID)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_TOP) {sd->status.head_top = ( pc_checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_TOP)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_MID) {sd->status.head_mid = ( pc_checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_MID)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_LOW) {sd->status.head_bottom = ( pc_checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_LOW)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);} Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 27 ноября, 2014 Автор Жалоба Поделиться Опубликовано 27 ноября, 2014 в pc.c попробуй чутка сменить:if(pos&(EQP_HEAD_LOW|EQP_COSTUME_HEAD_LOW)) {if(id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID|EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_TOP)))sd->status.head_bottom = id->look;elsesd->status.head_bottom = 0;if((pos&EQP_HEAD_LOW && (pc_checkequip(sd,EQP_COSTUME_HEAD_LOW)) < 0) || pos&EQP_COSTUME_HEAD_LOW)clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}if(pos&(EQP_HEAD_TOP|EQP_COSTUME_HEAD_TOP)) {if(id)sd->status.head_top = id->look;elsesd->status.head_top = 0;if((pos&EQP_HEAD_TOP && (pc_checkequip(sd,EQP_COSTUME_HEAD_TOP)) < 0) || pos&EQP_COSTUME_HEAD_TOP)clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(pos&(EQP_HEAD_MID|EQP_COSTUME_HEAD_MID)) {if(id && !(pos&(EQP_HEAD_TOP|EQP_COSTUME_HEAD_TOP)))sd->status.head_mid = id->look;elsesd->status.head_mid = 0;if((pos&EQP_HEAD_MID && (pc_checkequip(sd,EQP_COSTUME_HEAD_MID)) < 0) || pos&EQP_COSTUME_HEAD_MID)clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(sd->status.inventory[n].equip & EQP_HEAD_LOW) {sd->status.head_bottom = ( pc_checkequip(sd,EQP_COSTUME_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_COSTUME_HEAD_LOW)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}if(sd->status.inventory[n].equip & EQP_HEAD_TOP) {sd->status.head_top = ( pc_checkequip(sd,EQP_COSTUME_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_COSTUME_HEAD_TOP)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(sd->status.inventory[n].equip & EQP_HEAD_MID) {sd->status.head_mid = ( pc_checkequip(sd,EQP_COSTUME_HEAD_MID) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_COSTUME_HEAD_MID)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_TOP) {sd->status.head_top = ( pc_checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_TOP)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_MID) {sd->status.head_mid = ( pc_checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_MID)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);}if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_LOW) {sd->status.head_bottom = ( pc_checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_LOW)]->look : 0;clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);}Прошу прощения, а в чем заключается отличие, от того что указано выше в моем посте?P.S Проблема так и не решена, , Перевес " в минус" присутствует Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 27 ноября, 2014 Автор Жалоба Поделиться Опубликовано 27 ноября, 2014 Просто вопрос в том - работает ли вообще этот src?Прошу уточнить, конкретно тот который ты выложил , или костюмы в целом? Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 27 ноября, 2014 Жалоба Поделиться Опубликовано 27 ноября, 2014 (изменено) Просто вопрос в том - работает ли вообще этот src? Прошу уточнить, конкретно тот который ты выложил , или костюмы в целом? Ну если я возьму этот патч и поставлю на рафину, то будет пахать? Изменено 27 ноября, 2014 пользователем botka4aet Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 27 ноября, 2014 Автор Жалоба Поделиться Опубликовано 27 ноября, 2014 Просто вопрос в том - работает ли вообще этот src? Прошу уточнить, конкретно тот который ты выложил , или костюмы в целом? Ну если я возьму этот патч и поставлю на рафину, то будет пахать? Если непосредственно сам дифф, то да, он под рафину и написан Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 29 ноября, 2014 Автор Жалоба Поделиться Опубликовано 29 ноября, 2014 Проблема решена. За помощь благодарю Functor'a Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения