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

Пассивный лут


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

Как сделать пассивный лут, а именно: лежит лут в инвентаре и он пассивно дает +1% атаки или матаки и т.д., но что бы максимум работало 3 шт.?

Спасибо.

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

7611,Fox_Symbol,Symbol of Fox,3,20,,10,,,,,,,,,,,,,{},{},{}

Например эту лутинку.

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

Правка сорцов

like this

Спасибо. Опять в сорсах придется рыться)

Хм.

Вот такое выдало

1>------ Пропуск построения: проект: txt-converter-char, Конфигурация: Release Win32 ------
1>Проект не выбран для построения в данной конфигурации решения
2>------ Пропуск построения: проект: txt-converter-login, Конфигурация: Release Win32 ------
2>Проект не выбран для построения в данной конфигурации решения
3>------ Пропуск построения: проект: ladmin, Конфигурация: Release Win32 ------
3>Проект не выбран для построения в данной конфигурации решения
4>------ Построение начато: проект: map-server_sql, Конфигурация: Release Win32 ------
5>------ Построение начато: проект: login-server_sql, Конфигурация: Release Win32 ------
5> core.c
4> core.c
5> db.c
4> db.c
5> plugins.c
4> mapindex.c
4> plugins.c
5> socket.c
4> socket.c
5> utils.c
4> utils.c
5> account_sql.c
5> admin.c
4> atcommand.c
5> ipban_sql.c
4> battle.c
4> battleground.c
5> login.c
5>..\src\login\login.c(1253): warning C4018: >=: несоответствие типов со знаком и без знака
5> loginlog_sql.c
4> chat.c
4> chrif.c
4> clif.c
4> guild.c
5> Создание кода
4> homunculus.c
4> instance.c
4> intif.c
5> Создание кода завершено
4> itemdb.c
4> log.c
4> mail.c
4> map.c
5> login-server_sql.vcxproj -> C:\ea222\vcproj-9\..\login-server_sql.exe
4> Компиляция...
4> mapreg_sql.c
4> mercenary.c
6>------ Построение начато: проект: char-server_sql, Конфигурация: Release Win32 ------
4> mob.c
6> char.c
4> npc.c
6>..\src\char_sql\char.c(2989): warning C4018: >=: несоответствие типов со знаком и без знака
6> int_auction.c
6> int_guild.c
4> npc_chat.c
4> party.c
6>..\src\char_sql\int_guild.c(1599): warning C4244: инициализация: преобразование "uint64" в "unsigned int", возможна потеря данных
6>..\src\char_sql\int_guild.c(1604): warning C4244: =: преобразование "uint64" в "unsigned int", возможна потеря данных
6> int_homun.c
4> path.c
4> pc.c
6> int_mail.c
4> pet.c
6> int_mercenary.c
4> quest.c
6> int_party.c
4> script.c
6> int_pet.c
4> skill.c
4> status.c
6> int_quest.c
4> storage.c
4> trade.c
6> int_storage.c
4> unit.c
6> inter.c
4> vending.c
6> core.c
6> db.c
6> mapindex.c
6> plugins.c
4> Создание кода
6> socket.c
6> utils.c
6> Создание кода
6> Создание кода завершено
6> char-server_sql.vcxproj -> C:\ea222\vcproj-9\..\char-server_sql.exe
7>------ Пропуск построения: проект: char-server_txt, Конфигурация: Release Win32 ------
7>Проект не выбран для построения в данной конфигурации решения
8>------ Пропуск построения: проект: login-server_txt, Конфигурация: Release Win32 ------
8>Проект не выбран для построения в данной конфигурации решения
9>------ Пропуск построения: проект: map-server_txt, Конфигурация: Release Win32 ------
9>Проект не выбран для построения в данной конфигурации решения
4> Создание кода завершено
4> map-server_sql.vcxproj -> C:\ea222\vcproj-9\..\map-server_sql.exe
========== Построение: успешно: 3, с ошибками: 0, без изменений: 1, пропущено: 6 ==========

И как сделать что бы максимум можно было 3 штуки носить/действовали?

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

========== Построение: успешно: 3, с ошибками: 0, без изменений: 1, пропущено: 6 ==========

А в чем проблема?

Насчет максимума из 3.

ну где-то такое обсуждалось, но речь шла про карты.

Не помню как решили, но вроде бы что-то типа {if(countitem(ID)<4) bonus bAtkRate, 1;}

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

========== Построение: успешно: 3, с ошибками: 0, без изменений: 1, пропущено: 6 ==========

А в чем проблема?

Насчет максимума из 3.

ну где-то такое обсуждалось, но речь шла про карты.

Не помню как решили, но вроде бы что-то типа {if(countitem(ID)<4) bonus bAtkRate, 1;}

Спасибо.

Но меня больше заволновало

6>..\src\char_sql\int_guild.c(1599): warning C4244: инициализация: преобразование "uint64" в "unsigned int", возможна потеря данных
6>..\src\char_sql\int_guild.c(1604): warning C4244: =: преобразование "uint64" в "unsigned int", возможна потеря данных

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

int_guild.c

Чарм мод не задействует этот файл. Это другая модификация

Или мб нет, в некоторых ревизиях подобные ворнинги "поставлялись в комплекте"

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

  • 8 месяцев спустя...

eb694beb436c.jpg

501,Red_Potion,Red Potion,12,50,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ bonus bDex,2; },{},{}


http://rathena.org/board/topic/56355-%D1%87%D0%B0%D1%80%D0%BC%D1%8B-charms/

Применил патч, при компиле не было ошибок.

Но когда пишу тип чарма (12), выдает такую ошибку. Как исправить?

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

eb694beb436c.jpg

501,Red_Potion,Red Potion,12,50,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ bonus bDex,2; },{},{}


http://rathena.org/board/topic/56355-%D1%87%D0%B0%D1%80%D0%BC%D1%8B-charms/

Применил патч, при компиле не было ошибок.

Но когда пишу тип чарма (12), выдает такую ошибку. Как исправить?

501,Red_Potion,Red Potion,0,50,,70,,,,,0xFFFFFFFF,15,2,,,,,,{ itemheal rand(45,65),0; },{},{}

{ bonus bDex,2; },{},{} в первые вижу такое

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

Начну с того что я изменил тип итема, если ты не заметил. А смысл в твоем ответе не увидел. Сначала тему глянь на которую я указал ссылку.

501,Red_Potion,Red Potion,12,50,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ bonus bDex,2; },{},{}

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

Да я так и понял. Только все сделал по феншую. Тупо не хочет видеть 12 тип итемов.

А почему не могу понять. В ммо добавля и пробовал =12, но все равно не катит. А почему хз.

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

http://rathena.org/b...p-about-charms/

Попробуй заюзать другое число

Сам решил поставил 20 ИД Чарму!

2247225.jpg

Ну всмысле это решение работает,а то человек так и не ответил работает оно или нет ( правка числа )

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


Index: src/common/mmo.h
===================================================================
--- src/common/mmo.h (revision 17121)
+++ src/common/mmo.h (working copy)
@@ -175,6 +175,7 @@
IT_UNKNOWN2,//9
IT_AMMO, //10
IT_DELAYCONSUME,//11
+ IT_CHARM, //12
IT_CASH = 18,
IT_MAX
};
Index: src/map/clif.c
===================================================================
--- src/map/clif.c (revision 17121)
+++ src/map/clif.c (working copy)
@@ -65,7 +65,7 @@
//Converts item type in case of pet eggs.
static inline int itemtype(int type)
{
- return ( type == IT_PETEGG ) ? IT_WEAPON : type;
+ return ( type == IT_PETEGG ) ? IT_WEAPON : ( type == IT_CHARM ) ? IT_ETC : type;
}


@@ -14114,7 +14114,7 @@
return;
}

- if( (item = itemdb_exists(sd->status.inventory[idx].nameid)) != NULL && !(item->type == IT_ARMOR || item->type == IT_PETARMOR || item->type == IT_WEAPON || item->type == IT_CARD || item->type == IT_ETC) )
+ if( (item = itemdb_exists(sd->status.inventory[idx].nameid)) != NULL && !(item->type == IT_ARMOR || item->type == IT_PETARMOR || item->type == IT_WEAPON || item->type == IT_CARD || item->type == IT_ETC || item->type == IT_CHARM) )
{ // Consumable or pets are not allowed
clif_Auction_setitem(sd->fd, idx, true);
return;
Index: src/map/itemdb.c
===================================================================
--- src/map/itemdb.c (revision 17121)
+++ src/map/itemdb.c (working copy)
@@ -198,6 +198,7 @@
case IT_AMMO: return "Arrow/Ammunition";
case IT_DELAYCONSUME: return "Delay-Consume Usable";
case IT_CASH: return "Cash Usable";
+ case IT_CHARM: return "Charm";
}
return "Unknown Type";
}
@@ -976,7 +977,7 @@

id->type = atoi(str[3]);

- if( id->type < 0 || id->type == IT_UNKNOWN || id->type == IT_UNKNOWN2 || ( id->type > IT_DELAYCONSUME && id->type < IT_CASH ) || id->type >= IT_MAX )
+ if( id->type < 0 || id->type == IT_UNKNOWN || id->type == IT_UNKNOWN2 || ( id->type > IT_CHARM && id->type < IT_CASH ) || id->type >= IT_MAX )
{// catch invalid item types
ShowWarning("itemdb_parse_dbrow: Invalid item type %d for item %d. IT_ETC will be used.\n", id->type, nameid);
id->type = IT_ETC;
Index: src/map/log.c
===================================================================
--- src/map/log.c (revision 17121)
+++ src/map/log.c (working copy)
@@ -111,7 +111,7 @@

if( ( filter&LOG_FILTER_ALL ) ||
( filter&LOG_FILTER_HEALING && id->type == IT_HEALING ) ||
- ( filter&LOG_FILTER_ETC_AMMO && ( id->type == IT_ETC || id->type == IT_AMMO ) ) ||
+ ( filter&LOG_FILTER_ETC_AMMO && ( id->type == IT_ETC || id->type == IT_AMMO || id->type == IT_CHARM ) ) ||
( filter&LOG_FILTER_USABLE && ( id->type == IT_USABLE || id->type == IT_CASH ) ) ||
( filter&LOG_FILTER_WEAPON && id->type == IT_WEAPON ) ||
( filter&LOG_FILTER_ARMOR && id->type == IT_ARMOR ) ||
Index: src/map/pc.c
===================================================================
--- src/map/pc.c (revision 17121)
+++ src/map/pc.c (working copy)
@@ -3835,6 +3835,8 @@
//Auto-equip
if(data->flag.autoequip)
pc_equipitem(sd, i, data->equip);
+ if(sd->inventory_data[i]->type == IT_CHARM)
+ status_calc_pc(sd,0);

/* rental item check */
if( item_data->expire_time ) {
@@ -3863,6 +3865,7 @@
*------------------------------------------*/
int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reason, e_log_pick_type log_type)
{
+ int mem = 0;
nullpo_retr(1, sd);

if(sd->status.inventory[n].nameid==0 || amount <= 0 || sd->status.inventory[n].amount<amount || sd->inventory_data[n] == NULL)
@@ -3875,6 +3878,7 @@
if( sd->status.inventory[n].amount <= 0 ){
if(sd->status.inventory[n].equip)
pc_unequipitem(sd,n,3);
+ mem = sd->inventory_data[n]->type;
memset(&sd->status.inventory[n],0,sizeof(sd->status.inventory[0]));
sd->inventory_data[n] = NULL;
}
@@ -3882,6 +3886,8 @@
clif_delitem(sd,n,amount,reason);
if(!(type&2))
clif_updatestatus(sd,SP_WEIGHT);
+ if(mem == IT_CHARM)
+ status_calc_pc(sd,0);

return 0;
}
Index: src/map/status.c
===================================================================
--- src/map/status.c (revision 17121)
+++ src/map/status.c (working copy)
@@ -2425,6 +2425,24 @@
pc_delautobonus(sd,sd->autobonus3,ARRAYLENGTH(sd->autobonus3),true);

// Parse equipment.
+ for(i=0;i<MAX_INVENTORY;i++)
+ {
+ if(!sd->inventory_data[i])
+ continue;
+ if(sd->inventory_data[i]->type == IT_CHARM)
+ {
+ if(sd->inventory_data[i]->script && sd->inventory_data[i]->elv <= sd->status.base_level)
+ {
+ if((!((1<<(sd->class_&MAPID_BASEMASK)) &(sd->inventory_data[i]->class_base[sd->class_&JOBL_2_1?1:(sd->class_&JOBL_2_2?2:0)])))
+ || (!((1<<(sd->class_&JOBL_UPPER?1:(sd->class_&JOBL_BABY?2:0))) &sd->inventory_data[i]->class_upper)))
+ continue;
+ run_script(sd->inventory_data[i]->script,0,sd->bl.id,0);
+ if (!calculating)
+ return 1;
+ }
+ }
+ }
+
for(i=0;i<EQI_MAX-1;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)

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

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