Jump to content

Чармы (Charms)


Lilith

Recommended Posts


  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.00
  • Content Count:  407
  • Reputation:   159
  • Joined:  11/18/11
  • Last Seen:  

Пересобраный diff-файл для работы на новых ревизиях ветки rAthena.

Автор: digitalhamster

Оригинальный топик: здесь

Charms_Revision_15289.patch

Edited by Lilith
Link to comment
Share on other sites

  • 7 months later...

  • Group:  Members
  • Topic Count:  57
  • Topics Per Day:  0.01
  • Content Count:  162
  • Reputation:   1
  • Joined:  08/08/12
  • Last Seen:  

простите за вероятно тупой вопрос, но что такое чармы?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  89
  • Reputation:   1
  • Joined:  01/09/12
  • Last Seen:  

Как я понял, это типо гомункулов, только у соцесеров.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  58
  • Reputation:   5
  • Joined:  12/12/11
  • Last Seen:  

:D это предметы,которые ЛЕЖАТ в инвентаре и дают какие либо св-ва,т.е. надевать их не нужно.
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  89
  • Reputation:   1
  • Joined:  01/09/12
  • Last Seen:  

:D это предметы,которые ЛЕЖАТ в инвентаре и дают какие либо св-ва,т.е. надевать их не нужно.

Поясните пжлст.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  58
  • Reputation:   5
  • Joined:  12/12/11
  • Last Seen:  

что еще вам нужно пояснить?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.00
  • Content Count:  407
  • Reputation:   159
  • Joined:  11/18/11
  • Last Seen:  

Обычные вещи дают бонус ( str+3, к примеру ) только если их надеть на персонажа. Этот мод добавляет возможность использовать новые предметы, которые дают бонусы, находясь в инвентаре персонажа ( надевать их не нужно ).

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  89
  • Reputation:   1
  • Joined:  01/09/12
  • Last Seen:  

Обычные вещи дают бонус ( str+3, к примеру ) только если их надеть на персонажа. Этот мод добавляет возможность использовать новые предметы, которые дают бонусы, находясь в инвентаре персонажа ( надевать их не нужно ).

А, понял.

Зачаровывание брони к примеру?

Там еще сфера появляется.

Оно?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  57
  • Topics Per Day:  0.01
  • Content Count:  162
  • Reputation:   1
  • Joined:  08/08/12
  • Last Seen:  

Обычные вещи дают бонус ( str+3, к примеру ) только если их надеть на персонажа. Этот мод добавляет возможность использовать новые предметы, которые дают бонусы, находясь в инвентаре персонажа ( надевать их не нужно ).

А, понял.

Зачаровывание брони к примеру?

Там еще сфера появляется.

Оно?

Нет не оно... блин, положил в инвентарь шмотку, просто положил. она там лежит, и бонус дает при этом. ее не надо ни одевать ни использовать, она просто лежит там и бонус дает... Вааще сама идея имхо бредовая, с учетом тогочто в данное время способен сам РО дать персонажу все эти ваши чармы, которые я видел на одном из русских серваков кажется мне лишней хренью... Но, в принципе мысль интересная... пасиб за то, что делишься системой )

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  89
  • Reputation:   1
  • Joined:  01/09/12
  • Last Seen:  

Обычные вещи дают бонус ( str+3, к примеру ) только если их надеть на персонажа. Этот мод добавляет возможность использовать новые предметы, которые дают бонусы, находясь в инвентаре персонажа ( надевать их не нужно ).

А, понял.

Зачаровывание брони к примеру?

Там еще сфера появляется.

Оно?

Нет не оно... блин, положил в инвентарь шмотку, просто положил. она там лежит, и бонус дает при этом. ее не надо ни одевать ни использовать, она просто лежит там и бонус дает... Вааще сама идея имхо бредовая, с учетом тогочто в данное время способен сам РО дать персонажу все эти ваши чармы, которые я видел на одном из русских серваков кажется мне лишней хренью... Но, в принципе мысль интересная... пасиб за то, что делишься системой )

Дошло=)

Да, задумка интересная, но бредовая...=)

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  58
  • Reputation:   5
  • Joined:  12/12/11
  • Last Seen:  

если ты не играл в д2,то для тебя бредовая

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  23
  • Topics Per Day:  0.01
  • Content Count:  72
  • Reputation:   0
  • Joined:  07/19/12
  • Last Seen:  

Было бы тру если бы сделали дополнительную ячейку в экиппировке,например ожерелье.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  58
  • Reputation:   5
  • Joined:  12/12/11
  • Last Seen:  

пиши в гравити

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.00
  • Content Count:  407
  • Reputation:   159
  • Joined:  11/18/11
  • Last Seen:  

это и самому можно сделать :-)

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  58
  • Reputation:   5
  • Joined:  12/12/11
  • Last Seen:  

Смогут только единицы =)

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  57
  • Topics Per Day:  0.01
  • Content Count:  162
  • Reputation:   1
  • Joined:  08/08/12
  • Last Seen:  

если ты не играл в д2,то для тебя бредовая

Играл в д2... помню талисманы... в принципе не так и бредово, но надо долго думать как это все красиво преподнести, чтобы баланс не сбивать... а то толку от реньювала вааще не будет :)

Смогут только единицы =)

далана? переписать базу данных предметов (или один предмет) и поменять циферку 1 на циферку 2, и переписать itemslotcounttable это челленж для избранных?

Помню как делали раньше квесты на двуслотовую клипсу )

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  58
  • Reputation:   5
  • Joined:  12/12/11
  • Last Seen:  

а как ты выведешь отображение нового слота в эквипе для ожерелья? речь шла об этом,а не о двухслотовой клипе

Edited by kadze
Link to comment
Share on other sites

  • 4 weeks later...

  • Group:  Members
  • Topic Count:  57
  • Topics Per Day:  0.01
  • Content Count:  162
  • Reputation:   1
  • Joined:  08/08/12
  • Last Seen:  

а как ты выведешь отображение нового слота в эквипе для ожерелья? речь шла об этом,а не о двухслотовой клипе

переписать itemslotcounttable
мой же пост

itemslotcounttable = itemslotcounttable.txt в папке дата либо в грф файле. Но таки да, видимо открыть текстовый файл это снова челленж для избранных ;)

@Лилит, есть ли возможность забубенить привязку спрайта к чармам? Ну или ауру чтоли... Тоесть чарм попадает к тебе в инвентарь и у тебя меняется аура... Просто не хочу никаких бонусов итд, хочу внешних изменений ) и аура как-то больше мне нравится как вариант чем спрайты... Надеюсь, на чистой рА можно использовать несколько видов аур без изменения сорса?

Edited by Golem1988
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.00
  • Content Count:  407
  • Reputation:   159
  • Joined:  11/18/11
  • Last Seen:  

а как ты выведешь отображение нового слота в эквипе для ожерелья? речь шла об этом,а не о двухслотовой клипе

переписать itemslotcounttable
мой же пост

itemslotcounttable = itemslotcounttable.txt в папке дата либо в грф файле. Но таки да, видимо открыть текстовый файл это снова челленж для избранных ;)

@Лилит, есть ли возможность забубенить привязку спрайта к чармам? Ну или ауру чтоли... Тоесть чарм попадает к тебе в инвентарь и у тебя меняется аура... Просто не хочу никаких бонусов итд, хочу внешних изменений ) и аура как-то больше мне нравится как вариант чем спрайты... Надеюсь, на чистой рА можно использовать несколько видов аур без изменения сорса?

itemslotcounttable в данном случае не поможет, т.к. он изменяет кол-во слотов в предмете, а не в окне экипировки. Зайди в игру и открой окно экипировки и ты увидишь слоты экипировки, в которые вещи "одеваются". Увеличить их кол-во можно хексом ехе, хотя один слот вроде можно и без хекса использовать.

Только сейчас проверил: в rathena не реализованы ещё 2 слота во второй закладке экипировки :)

По поводу аур - всё равно придётся править исходники ;) одной командой specialeffect тут явно не обойтись.

Edited by Lilith
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  58
  • Reputation:   5
  • Joined:  12/12/11
  • Last Seen:  

а как ты выведешь отображение нового слота в эквипе для ожерелья? речь шла об этом,а не о двухслотовой клипе

переписать itemslotcounttable
мой же пост

itemslotcounttable = itemslotcounttable.txt в папке дата либо в грф файле. Но таки да, видимо открыть текстовый файл это снова челленж для избранных ;)

@Лилит, есть ли возможность забубенить привязку спрайта к чармам? Ну или ауру чтоли... Тоесть чарм попадает к тебе в инвентарь и у тебя меняется аура... Просто не хочу никаких бонусов итд, хочу внешних изменений ) и аура как-то больше мне нравится как вариант чем спрайты... Надеюсь, на чистой рА можно использовать несколько видов аур без изменения сорса?

Просто кто то не понимает о чем идет речь и начинает строить из себя умного

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  57
  • Topics Per Day:  0.01
  • Content Count:  162
  • Reputation:   1
  • Joined:  08/08/12
  • Last Seen:  

Просто кто то не понимает о чем идет речь и начинает строить из себя умного

А сорри, реально сорри, подумал что ты совсем про другие слоты :) А ты имел ввиду слот для одевания одежды. Или скорее место. Я не думаю что просто хексом тут можно обойтись, потому как в сорсу это тоже прописывать надо будет.

@Лилит, я так понимаю с кастомными спрайтами тут попроще? :) Вчера рыл форум на наличие системы смены аур итд, нашел пока только какойто мусор и один дифф для еА... Мож есть какая ссылка на норм систему смены аур, а то вроде как это не сложно делается... в принципе над будет попробовать с этим диффом разобраться...

Index: common/mmo.h
===================================================================
--- common/mmo.h    (revision 150)
+++ common/mmo.h    (working copy)
@@ -301,6 +301,9 @@
   int father;
   int mother;
   int child;
+    
+    //Aura System
+    int aura;

   unsigned int base_exp,job_exp;
   int zeny;
Index: map/atcommand.c
===================================================================
--- map/atcommand.c    (revision 150)
+++ map/atcommand.c    (working copy)
@@ -9060,8 +9060,46 @@
   return 0;
}

+/*==========================================
+* Original code by [TwiTerror]
+* Redone by Advi
+* @auraset (aura) (character)
+*------------------------------------------
+*/
+int atcommand_auraset(
+const int fd, struct map_session_data* sd,
+const char* command, const char* message)
+{
+struct map_session_data *pl_sd = 0;
+int type = 0;

+if (!message || !*message || sscanf(message, "%d %[^\n]", &type, atcmd_player_name) < 2) {
+if (!message || !*message || sscanf(message, "%d", &type) < 1) {
+clif_displaymessage(fd, "Please, enter at least an option (usage: @auraset <aura> <char>).");
+return -1;
+}
+atcmd_player_name[0] = 0;
+pl_sd = sd;
+}

+if (pl_sd != sd){
+if ((pl_sd = map_nick2sd(atcmd_player_name)) != NULL || ((pl_sd = map_id2sd(atoi(atcmd_player_name))) != NULL && pl_sd->state.active)) {
+} else {
+return -1;
+}
+}
+
+pl_sd->status.aura = type;
+pc_setglobalreg(pl_sd,"USERAURA",type);
+
+pc_setpos(pl_sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, 3);
+
+clif_displaymessage(fd, "Aura set.");
+
+return 0;
+}
+
+
/*==========================================
 * atcommand_info[] structure definition
 *------------------------------------------*/
@@ -9373,6 +9411,7 @@
   { "whosell",		  60,99,    atcommand_shopsearch },
   { "nochat",		    0,10,    atcommand_nochat},
   { "requestgm",		  0,10,    atcommand_requestgm },
+    { "auraset",		    60,60,	    atcommand_auraset },	    //Aura System

};

Index: map/clif.c
===================================================================
--- map/clif.c    (revision 150)
+++ map/clif.c    (working copy)
@@ -1077,6 +1077,9 @@
   case BL_PC:
    {
	    TBL_PC *sd = ((TBL_PC*)bl);
+		    
+		    clif_sendauras((TBL_PC*)bl, SELF);    //Aura System
+		    
	    if (sd->spiritball > 0)
		    clif_spiritball(sd);
	    if(sd->state.size==2) // tiny/big players [Valaris]
@@ -3963,6 +3966,14 @@
    if(&sd->bl == bl)
	    break;
    clif_getareachar_unit(sd,bl);
+	    
+	    //Aura System
+	    if (bl->type == BL_PC) {
+		    struct map_session_data *tsd = (struct map_session_data *)bl;
+		    clif_sendaurastoone(sd,tsd);
+		    clif_sendaurastoone(tsd,sd);
+	    }
+	    
    break;
   }
   return 0;
@@ -4047,6 +4058,8 @@
   if (sd && sd->fd)
   {    //Tell sd that tbl walked into his view
    clif_getareachar_unit(sd,tbl);
+	    clif_sendaurastoone(sd,tsd);    //Aura System
+	    clif_sendaurastoone(tsd,sd);    //Aura System
   }
   return 0;
}
@@ -14369,3 +14382,80 @@
   add_timer_func_list(clif_delayquit, "clif_delayquit");
   return 0;
}
+
+/*==========================================
+ * Aura System
+ *------------------------------------------*/
+
+void clif_sendauras( struct map_session_data *sd, int target )
+{
+int effect1;
+effect1 = sd->status.aura;
+
+if (sd->status.option & OPTION_HIDE)
+return;
+
+if (effect1 > 0)
+clif_specialeffect(&sd->bl, effect1, target);
+}
+
+
+/*==========================================
+ * Aura System
+ *------------------------------------------*/
+void clif_sendaurastoone( struct map_session_data *sd, struct map_session_data *dsd )
+{
+int effect1;
+effect1 = sd->status.aura;
+
+if (sd->status.option & OPTION_HIDE)
+return;
+
+if (effect1 > 0)
+clif_specialeffecttoone(&sd->bl, &dsd->bl, effect1);
+}
+
+/*==========================================
+ * Aura System
+ *------------------------------------------*/
+int clif_specialeffecttoone(struct block_list *bl, struct block_list *dst, int type) {
+
+struct map_session_data *sd = (struct map_session_data *)dst;
+
+WFIFOW(sd->fd,0) = 0x1f3;
+WFIFOL(sd->fd,2) = bl->id;
+WFIFOL(sd->fd,6) = type;
+WFIFOSET(sd->fd, packet_len(0x1f3));
+
+return 0;
+
+}
+
+/*==========================================
+ * Aura System
+ *------------------------------------------*/
+void clif_getareachar_char2(struct map_session_data* sd,struct block_list *bl)
+{
+map_foreachinarea(clif_insight2, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE, BL_PC, bl);
+}
+
+/*==========================================
+ * Aura System
+ *------------------------------------------*/
+int clif_insight2(struct block_list *bl,va_list ap)
+{
+struct block_list *tbl;
+TBL_PC *sd, *tsd;
+tbl=va_arg(ap,struct block_list*);
+
+if (bl == tbl) return 0;
+
+sd = BL_CAST(BL_PC, bl);
+tsd = BL_CAST(BL_PC, tbl);
+
+if (sd && sd->fd)
+{ //Tell sd that tbl walked into his view
+clif_getareachar_unit(sd,tbl);
+}
+return 0;
+}
Index: map/clif.h
===================================================================
--- map/clif.h    (revision 150)
+++ map/clif.h    (working copy)
@@ -465,3 +465,10 @@
void clif_progressbar(struct map_session_data * sd, unsigned long color, unsigned int second);
void clif_progressbar_abort(struct map_session_data * sd);
#endif /* _CLIF_H_ */
+
+// Aura System
+int clif_specialeffecttoone(struct block_list *bl, struct block_list *dst, int type);
+void clif_sendauras( struct map_session_data *sd, int target );
+void clif_sendaurastoone(struct map_session_data *sd, struct map_session_data *dsd);
+void clif_getareachar_char2(struct map_session_data* sd,struct block_list *bl);
+int clif_insight2(struct block_list *bl,va_list ap);
Index: map/pc.c
===================================================================
--- map/pc.c    (revision 150)
+++ map/pc.c    (working copy)
@@ -1019,6 +1019,9 @@

   sd->change_level = pc_readglobalreg(sd,"jobchange_level");
   sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER");
+    
+    //Aura System
+    sd->status.aura = pc_readglobalreg(sd,"USERAURA");

   // Cash shop
   sd->cashPoints = pc_readaccountreg(sd,"#CASHPOINTS");
Index: map/pc.h
===================================================================
--- map/pc.h    (revision 150)
+++ map/pc.h    (working copy)
@@ -297,6 +297,9 @@
   int hprecov_rate,sprecov_rate;
   int matk_rate;
   int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate;
+    
+    //Aura System
+    int aura;

   int itemid;
   short itemindex;    //Used item's index in sd->inventory [skotlex]
Index: map/status.c
===================================================================
--- map/status.c    (revision 150)
+++ map/status.c    (working copy)
@@ -5397,6 +5397,14 @@
	    }
	    break;
    case SC_HIDING:
+		    
+		    //Aura System
+		    if (sd && sd->status.aura > 0){
+			    sd->status.aura *= -1;
+			    clif_clearunit_area(&sd->bl, 4);
+			    clif_getareachar_char2(sd, &sd->bl);
+		    }
+	    
	    val2 = tick/1000;
	    tick = 1000;
	    val3 = 0; // unused, previously speed adjustment
@@ -6651,6 +6659,13 @@
    break;

   case SC_HIDING:
+	    
+	    //Aura System
+		 if (sd && sd->status.aura < 0){
+		    sd->status.aura *= -1;
+		    clif_sendauras(sd, AREA_WOS);
+	    }
+		    
    sc->option &= ~OPTION_HIDE;
    opt_flag|= 2|4; //Check for warp trigger + AoE trigger
    break;

Edited by Golem1988
Link to comment
Share on other sites

  • 3 weeks later...

  • Group:  Members
  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  2
  • Reputation:   0
  • Joined:  10/07/12
  • Last Seen:  

Автор! Спасибо!

Link to comment
Share on other sites

  • 9 months later...

  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  19
  • Reputation:   0
  • Joined:  09/30/12
  • Last Seen:  

8f42e5d5f207.jpg

Выдает такую ошибку... Как с этим бороться?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...