Назад

@auraset

Автор: gmden: Дата: 05.11.2011

У кого есть сорс @auraset на смену аур. Видел на ЕА, потерял и не могу найти.

Автор: rura: Дата: 05.13.2011

Вроди оно:
Index: src/common/mmo.h

===================================================================
--- src/common/mmo.h (revision 12718)
+++ src/common/mmo.h (working copy)
@@ -248,7 +248,7 @@
unsigned char karma;
short hair,hair_color,clothes_color;
int party_id,guild_id,pet_id,hom_id;
- int fame;
+ int fame,pvprank,aura;

short weapon; // enum weapon_type
short shield; // view-id
Index: src/map/atcommand.c
===================================================================
--- src/map/atcommand.c (revision 12718)
+++ src/map/atcommand.c (working copy)
@@ -8200,6 +8200,43 @@
}

/*==========================================
+ * Auras personalizadas
+ *------------------------------------------*/
+int atcommand_aura(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: @aura ).");
+ return -1;
+ }
+
+ atcmd_player_name[0] = 0;
+ pl_sd = sd;
+ }
+
+ if( pl_sd != sd )
+ {
+ if ((pl_sd = map_nick2sd(atcmd_player_name)) == NULL)
+ return -1;
+ }
+
+ sprintf(atcmd_output, "Current Aura: %d", pl_sd->status.aura);
+ clif_displaymessage(fd, atcmd_output);
+
+ 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);
+
+ return 0;
+}
+
+/*==========================================
* AUCTION SYSTEM
*------------------------------------------*/
int atcommand_auction(const int fd, struct map_session_data *sd, const char *command, const char *message)
@@ -8552,6 +8589,7 @@
{ "homshuffle", 60, atcommand_homshuffle },
{ "showmobs", 10, atcommand_showmobs },
{ "feelreset", 10, atcommand_feelreset },
+ { "aura", 1, atcommand_aura },
{ "auction", 60, atcommand_auction },
{ "mail", 1, atcommand_mail },
{ "noks", 0, atcommand_ksprotection },
Index: src/map/clif.c
===================================================================
--- src/map/clif.c (revision 12718)
+++ src/map/clif.c (working copy)
@@ -95,6 +95,139 @@
int clif_parse (int fd);

/*==========================================
+ * @aura
+ *------------------------------------------*/
+static int auraTable[][3] = {
+ { -1, -1, -1 },
+ // Reserved for PK Mode
+ { 586, -1, -1 }, // LH
+ { 586, 362, -1 }, // LH Mvp
+ { 586, 362, 240 }, // 1є PK Place
+ // Basic Auras
+ { 418, -1, -1 }, // Red Fury
+ { 486, -1, -1 }, // Blue Fury
+ { 485, -1, -1 }, // White Fury
+ { 239, -1, -1 }, // Aura Red
+ { 240, -1, -1 }, // Aura White
+ { 241, -1, -1 }, // Aura Yellow
+ { 620, -1, -1 }, // Aura Blue
+ { 202, -1, -1 }, // Lvl 99 Bubbles
+ { 362, -1, -1 }, // Advanced Lvl 99 Bubbles
+ { 678, -1, -1 }, // Brazil Aura Bubbles
+ { 679, -1, -1 }, // Brazil Aura
+ { 680, -1, -1 }, // Brazil Aura Floor
+ // 2 Sets
+ { 239, 418, -1 },
+ { 239, 486, -1 },
+ { 239, 485, -1 },
+ { 240, 418, -1 },
+ { 240, 486, -1 },
+ { 240, 485, -1 },
+ { 241, 418, -1 },
+ { 241, 486, -1 },
+ { 241, 485, -1 },
+ { 620, 418, -1 },
+ { 620, 486, -1 },
+ { 620, 485, -1 },
+ // Full Sets
+ { 239, 418, 202 },
+ { 239, 486, 202 },
+ { 239, 485, 202 },
+ { 240, 418, 202 },
+ { 240, 486, 202 },
+ { 240, 485, 202 },
+ { 241, 418, 202 },
+ { 241, 486, 202 },
+ { 241, 485, 202 },
+ { 620, 418, 202 },
+ { 620, 486, 202 },
+ { 620, 485, 202 },
+ { 239, 418, 362 },
+ { 239, 486, 362 },
+ { 239, 485, 362 },
+ { 240, 418, 362 },
+ { 240, 486, 362 },
+ { 240, 485, 362 },
+ { 241, 418, 362 },
+ { 241, 486, 362 },
+ { 241, 485, 362 },
+ { 620, 418, 362 },
+ { 620, 486, 362 },
+ { 620, 485, 362 },
+ { 239, 418, 678 },
+ { 239, 486, 678 },
+ { 239, 485, 678 },
+ { 240, 418, 678 },
+ { 240, 486, 678 },
+ { 240, 485, 678 },
+ { 241, 418, 678 },
+ { 241, 486, 678 },
+ { 241, 485, 678 },
+ { 620, 418, 678 },
+ { 620, 486, 678 },
+ { 620, 485, 678 },
+ // Oficial Set
+ { 680, 679, 678 },
+ { -1, -1, -1 }
+};
+
+int aura_getSize()
+{
+ return sizeof(auraTable)/(sizeof(int) * 3) - 1;
+}
+
+int aura_getAuraEffect(struct map_session_data *sd, short pos)
+{
+ int aura = sd->status.aura;
+
+ if (pos < 0 || pos > 2)
+ return -1;
+
+ if (aura > aura_getSize() || aura < 0)
+ return -1;
+
+ return auraTable[aura][pos];
+}
+
+void clif_sendaurastoone(struct map_session_data *sd, struct map_session_data *dsd)
+{
+ int effect1, effect2, effect3;
+
+ if (pc_ishiding(sd))
+ return;
+
+ effect1 = aura_getAuraEffect(sd, 0);
+ effect2 = aura_getAuraEffect(sd, 1);
+ effect3 = aura_getAuraEffect(sd, 2);
+
+ if (effect1 >= 0)
+ clif_specialeffect_single(&sd->bl, effect1, dsd->fd);
+ if (effect2 >= 0)
+ clif_specialeffect_single(&sd->bl, effect2, dsd->fd);
+ if (effect3 >= 0)
+ clif_specialeffect_single(&sd->bl, effect3, dsd->fd);
+}
+
+void clif_sendauras(struct map_session_data *sd, enum send_target type)
+{
+ int effect1, effect2, effect3;
+
+ if (pc_ishiding(sd))
+ return;
+
+ effect1 = aura_getAuraEffect(sd, 0);
+ effect2 = aura_getAuraEffect(sd, 1);
+ effect3 = aura_getAuraEffect(sd, 2);
+
+ if (effect1 >= 0)
+ clif_specialeffect(&sd->bl, effect1, type);
+ if (effect2 >= 0)
+ clif_specialeffect(&sd->bl, effect2, type);
+ if (effect3 >= 0)
+ clif_specialeffect(&sd->bl, effect3, type);
+}
+
+/*==========================================
* mapЋI‚МipђЭ’и
*------------------------------------------*/
int clif_setip(const char* ip)
@@ -1016,6 +1149,7 @@
clif_specialeffect(bl,423,AREA);
else if(sd->state.size==1)
clif_specialeffect(bl,421,AREA);
+ clif_sendauras((TBL_PC*)bl, AREA);
}
break;
case BL_MOB:
@@ -3388,6 +3522,7 @@
clif_specialeffect_single(bl,423,sd->fd);
else if(tsd->state.size==1)
clif_specialeffect_single(bl,421,sd->fd);
+ clif_sendaurastoone(tsd, sd);
}
break;
case BL_NPC:
@@ -3413,6 +3548,37 @@
}
}

+int clif_insight2(struct block_list *bl,va_list ap)
+{
+ struct block_list *tbl;
+ struct map_session_data *sd, *tsd;
+ int flag;
+
+ tbl = va_arg(ap,struct block_list*);
+ flag = va_arg(ap,int);
+
+ if (bl == tbl && !flag)
+ return 0;
+
+ sd = BL_CAST(BL_PC, bl);
+ tsd = BL_CAST(BL_PC, tbl);
+
+ if (sd && sd->fd)
+ {
+ if (bl == tbl)
+ clif_sendaurastoone(sd, tsd);
+ else
+ clif_getareachar_unit(sd, tbl);
+ }
+
+ return 0;
+}
+
+void clif_getareachar_char(struct block_list *bl, short flag)
+{
+ 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, flag);
+}
+
//Modifies the type of damage according to status changes [Skotlex]
//Aegis data specifies that: 4 endure against single hit sources, 9 against multi-hit.
#define clif_calc_delay(type,div,damage,delay) ((delay)==0&&(damage)>0?((div)>1?9:4):type)
Index: src/map/clif.h
===================================================================
--- src/map/clif.h (revision 12718)
+++ src/map/clif.h (working copy)
@@ -415,6 +415,10 @@
int do_final_clif(void);
int do_init_clif(void);

+// [@aura]
+void clif_sendauras(struct map_session_data *sd, enum send_target type);
+void clif_getareachar_char(struct block_list *bl, short flag);
+
#ifndef TXT_ONLY
// MAIL SYSTEM
void clif_Mail_window(int fd, int flag);
Index: src/map/pc.c
===================================================================
--- src/map/pc.c (revision 12718)
+++ src/map/pc.c (working copy)
@@ -898,6 +898,9 @@
sd->change_level = pc_readglobalreg(sd,"jobchange_level");
sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER");

+ // @Aura
+ sd->status.aura = pc_readglobalreg(sd,"USERAURA");
+
// Cash shop
sd->cashPoints = pc_readaccountreg(sd,"#CASHPOINTS");
sd->kafraPoints = pc_readaccountreg(sd,"#KAFRAPOINTS");
Index: src/map/status.c
===================================================================
--- src/map/status.c (revision 12718)
+++ src/map/status.c (working copy)
@@ -5038,6 +5038,7 @@
vd = status_get_viewdata(bl);
calc_flag = StatusChangeFlagTable[type];
if(!(flag&4)) //&4 - Do not parse val settings when loading SCs
+ {
switch(type)
{
case SC_DECREASEAGI:
@@ -5931,6 +5932,15 @@
return 0;
}
}
+ // @aura
+ if (sd && sd->status.aura > 0 &&
+ (type == SC_HIDING || type == SC_CLOAKING || type == SC_CHASEWALK))
+ {
+ sd->status.aura *= -1;
+ clif_clearunit_area(&sd->bl, 0);
+ clif_getareachar_char(&sd->bl, 0);
+ }
+ }
else //Special considerations when loading SC data.
switch( type )
{
@@ -6693,6 +6703,14 @@
opt_flag = 0;
}

+ // @auras
+ if (sd && sd->status.aura < 0 &&
+ (type == SC_HIDING || type == SC_CLOAKING || type == SC_CHASEWALK))
+ {
+ sd->status.aura *= -1;
+ clif_sendauras(sd, AREA_WOS);
+ }
+
if (calc_flag&SCB_DYE)
{ //Restore DYE color
if (vd && !vd->cloth_color && sce->val4)

Автор: Кеник: Дата: 05.13.2011

Учитесь использовать тег CODE !!!!!

Автор: Less: Дата: 05.13.2011

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

Автор: kadze: Дата: 05.13.2011

да просто стандартные эффекты на постоянке работают ...можно конечно сделать кастом эффекты и добавить тогда команда станет немного полезней)

Автор: gmden: Дата: 05.14.2011

хм у меня ошибка при компиле

../common/mapindex.h:16:21: warning: missing whitespace after the macro name
clif.c: In function 'clif_getareachar_unit':
clif.c:3724: error: expected ';' before 'if'
make[1]: *** [obj_sql/clif.o] Error 1
make[1]: Leaving directory `/home/rouser/ea/src/map'
make: *** [map_sql] Error 2
ERROR!!! Something goes wrong, check your Source files on errors!
rouser@ea10:~$

Автор: kadze: Дата: 05.14.2011

clif.c:3724: error: expected ';' before 'if'

че не понятно? оО

Автор: gmden: Дата: 05.14.2011

Я в сорсах плохо могу ток ввести или немножко подредактить. Мне это не чё не говарит лучше подскажи как подправить?

Автор: kadze: Дата: 05.14.2011

строчка 3724 нужно ; перед if

Автор: gmden: Дата: 05.14.2011

else if(tsd->state.size==1)
clif_specialeffect_single(bl,421,sd->fd);
clif_sendaurastoone(tsd, sd)
if( tsd->state.user_font ) (это строчка 3724 куда её?)
clif_font_single(sd->fd,tsd);
if( tsd->state.bg_id && map[tsd->bl.m].flag.battleground )
clif_sendbgemblem_single(sd->fd,tsd);

Автор: kadze: Дата: 05.14.2011

clif_sendaurastoone(tsd, sd);

Автор: gmden: Дата: 05.14.2011

../common/mapindex.h:16:21: warning: missing whitespace after the macro name
clif.c: In function 'clif_getareachar_unit':
clif.c:3725: error: expected ';' before 'clif_font_single'
make[1]: *** [obj_sql/clif.o] Error 1
make[1]: Leaving directory `/home/rouser/ea/src/map'
make: *** [map_sql] Error 2
ERROR!!! Something goes wrong, check your Source files on errors!
rouser@ea10:~$

Автор: MadJackII: Дата: 05.14.2011

Заного ставь дифф, и желательно ручками.

Автор: gmden: Дата: 05.15.2011

Я ручками и ставил. Я ставить могу много команд вводил. Я думаю может версия Еа не подходит?

Автор: kadze: Дата: 05.15.2011

там по идее 2 дифа лежало...если ты звял первый,то он для старых ревизий...там есть еще один )

Автор: MadJackII: Дата: 05.15.2011

Цитата gmden;41217:
else if(tsd->state.size==1)
clif_specialeffect_single(bl,421,sd->fd);
clif_sendaurastoone(tsd, sd)
if( tsd->state.user_font )


+ clif_sendaurastoone(tsd, sd);

Ну хотя бы из-за этого у меня вызвало подозрение, что дифф криво поставил.

Автор: kadze: Дата: 05.15.2011

я уже написал ему об этом =)

Автор: gmden: Дата: 05.15.2011

нет ставил норм. Нашел другой дифф норм сразу поставился. Щас возникла другая проблема команду то я поставил а вот ауры как ставить? Пишу @auraset N вылетают тока эффекты. как определить какие именно цифры идут на ауры?

Вот норм рабочий дифф

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 ).");
+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;

Автор: Infarkt: Дата: 05.15.2011

Клацай эффекты и запоминай

А так вроде идут от 600+

Автор: kadze: Дата: 05.15.2011

ea/doc/effect_list.txt

UPD:

418-Red Fury
486-Blue Fury
485-White Fury
239-Aura Red
240-Aura White
241-Aura Yellow
620-Aura Blue
202-Lvl 99 Bubbles
362-Advanced Lvl 99 Bubbles
678-Brazil Aura Bubbles
679-Brazil Aura
680-Brazil Aura Floor