Jump to content

Recommended Posts

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

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

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

Posted

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

Posted

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

А, понял.

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

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

Оно?

Posted

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

А, понял.

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

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

Оно?

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

Posted

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

А, понял.

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

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

Оно?

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

Дошло=)

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

Posted

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

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

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

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

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

Posted (edited)

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

Edited by kadze
  • 4 weeks later...
Posted (edited)

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

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

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

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

Edited by Golem1988
Posted (edited)

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

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

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

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

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

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

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

Edited by Lilith
Posted

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

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

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

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

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

Posted (edited)

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

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

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

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
  • 3 weeks later...
  • 9 months later...

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...