Brynner 34 Posted April 19, 2013 (edited) how to make this compatible to hercules? thanks in advance. Index: mmo.h===================================================================--- mmo.h (revision 17181)+++ mmo.h (working copy)@@ -349,7 +349,7 @@ unsigned char karma; short hair,hair_color,clothes_color; int party_id,guild_id,pet_id,hom_id,mer_id,ele_id;- int fame;+ int fame,pvprank,aura; // Mercenary Guilds Rank int arch_faith, arch_calls;Index: atcommand.c===================================================================--- atcommand.c (revision 17181)+++ atcommand.c (working copy)@@ -8036,6 +8036,45 @@ return 0; } + /*==========================================+ * Auras personalizadas+ *------------------------------------------*/+ACMD_FUNC(aura)+{+ 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 *------------------------------------------*/@@ -9050,7 +9089,8 @@ ACMD_DEF2("rmvperm", addperm), ACMD_DEF(unloadnpcfile), ACMD_DEF(cart),- ACMD_DEF(mount2)+ ACMD_DEF(mount2),+ ACMD_DEF(aura), }; AtCommandInfo* atcommand; int i;Index: clif.c===================================================================--- clif.c (revision 17181)+++ clif.c (working copy)@@ -191,6 +191,141 @@ static 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);+}++++/*========================================== * Ip setting of map-server *------------------------------------------*/ int clif_setip(const char* ip)@@ -1359,6 +1494,7 @@ clif_specialeffect(bl,423,AREA); else if(sd->state.size==SZ_MEDIUM) clif_specialeffect(bl,421,AREA);+ clif_sendauras((TBL_PC*)bl, AREA); if( sd->bg_id && map[sd->bl.m].flag.battleground ) clif_sendbgemblem_area(sd); if( sd->sc.option&OPTION_MOUNTING ) {@@ -4103,6 +4239,7 @@ clif_specialeffect_single(bl,423,sd->fd); else if(tsd->state.size==SZ_MEDIUM) clif_specialeffect_single(bl,421,sd->fd);+ clif_sendaurastoone(tsd, sd); if( tsd->bg_id && map[tsd->bl.m].flag.battleground ) clif_sendbgemblem_single(sd->fd,tsd); if( tsd->sc.data[SC_CAMOUFLAGE] )@@ -4150,6 +4287,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. static inline int clif_calc_delay(int type, int div, int damage, int delay)Index: clif.h===================================================================--- clif.h (revision 17181)+++ clif.h (working copy)@@ -655,6 +655,10 @@ int do_init_clif(void); void do_final_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);+ // MAIL SYSTEM void clif_Mail_window(int fd, int flag); void clif_Mail_read(struct map_session_data *sd, int mail_id);Index: pc.c===================================================================--- pc.c (revision 17181)+++ pc.c (working copy)@@ -1147,6 +1147,9 @@ sd->change_level_3rd = pc_readglobalreg(sd,"jobchange_level_3rd"); 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: status.c===================================================================--- status.c (revision 17181)+++ status.c (working copy)@@ -7210,6 +7210,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:@@ -8653,6 +8654,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 ) {@@ -9781,6 +9791,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) Edited April 19, 2013 by bgamez23 Quote Share this post Link to post Share on other sites
0 Judas 100 Posted April 20, 2013 getareachar_char should be turn into clif->getareachar that should solve more error/warnings Quote Share this post Link to post Share on other sites
0 Brynner 34 Posted April 20, 2013 the structure for clif.h have a lots of diff on rA. how can i make this compatible here? ===================================================================--- clif.h (revision 17181)+++ clif.h (working copy)@@ -655,6 +655,10 @@int do_init_clif(void);void do_final_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);+// MAIL SYSTEMvoid clif_Mail_window(int fd, int flag);void clif_Mail_read(struct map_session_data *sd, int mail_id);Index: pc.c=================================================================== Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted April 20, 2013 As I said before I'm not good on source, but why don't try what you can read in this post (and rest of the) topic: http://herc.ws/board/topic/237-hercules-renewal/?p=1724 it says some of the first underscores ( _ ) have been changed to arrows ( -> ) Something like: ===================================================================--- clif.h (revision 17181)+++ clif.h (working copy)@@ -655,6 +655,10 @@int do_init_clif(void);void do_final_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);+// MAIL SYSTEMvoid clif->Mail_window(int fd, int flag);void clif->Mail_read(struct map_session_data *sd, int mail_id);Index: pc.c=================================================================== You can try and see if that minor magic works. Quote Share this post Link to post Share on other sites
0 Brynner 34 Posted April 20, 2013 As I said before I'm not good on source, but why don't try what you can read in this post (and rest of the) topic: http://herc.ws/board/topic/237-hercules-renewal/?p=1724 it says some of the first underscores ( _ ) have been changed to arrows ( -> ) Something like: ===================================================================--- clif.h (revision 17181)+++ clif.h (working copy)@@ -655,6 +655,10 @@int do_init_clif(void);void do_final_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);+// MAIL SYSTEMvoid clif->Mail_window(int fd, int flag);void clif->Mail_read(struct map_session_data *sd, int mail_id);Index: pc.c=================================================================== You can try and see if that minor magic works. i already did that. but the problem is on my 2nd post. which in clif.h. the structure is not same. Quote Share this post Link to post Share on other sites
0 Judas 100 Posted April 20, 2013 you should still be able to put those functions in there, let me know what errors/warnings you get, and i can help from there 1 icabit reacted to this Quote Share this post Link to post Share on other sites
0 Brynner 34 Posted April 20, 2013 (edited) undeclared sendauras and getareachar_char in clif.h Edited April 20, 2013 by bgamez23 Quote Share this post Link to post Share on other sites
0 Judas 100 Posted April 20, 2013 clif->getareachar can you show me what it spits out for sendauras Quote Share this post Link to post Share on other sites
0 Brynner 34 Posted April 20, 2013 clif->getareachar can you show me what it spits out for sendauras 1>d:herculessrcmapclif.h(806) : error C2032: 'clif_sendauras' : function cannot be member of struct 'clif_interface' 1>d:herculessrcmapclif.h(807) : error C2032: 'clif_getareachar_char' : function cannot be member of struct 'clif_interface' 1>d:herculessrcmapclif.h(806) : error C2032: 'clif_sendauras' : function cannot be member of struct 'clif_interface' 1>d:herculessrcmapclif.h(807) : error C2032: 'clif_getareachar_char' : function cannot be member of struct 'clif_interface' Quote Share this post Link to post Share on other sites
0 Brynner 34 Posted April 20, 2013 getareachar_char should be turn into clif->getareachar that should solve more error/warnings here's what i did to make it work. // [@aura] void (*sendauras) (struct map_session_data *sd, enum send_target type); void (*getareachar_char) (struct block_list *bl, short flag); /* mail-related */ but still having a error. 1>d:herculessrcmapclif.c(273) : warning C4013: 'clif_specialeffect_single' undefined; assuming extern returning int1>d:herculessrcmapclif.c(292) : warning C4013: 'clif_specialeffect' undefined; assuming extern returning int1>d:herculessrcmapclif.c(8304) : error C2371: 'clif_specialeffect' : redefinition; different basic types1>d:herculessrcmapclif.c(8323) : error C2371: 'clif_specialeffect_single' : redefinition; different basic types1>chat.c1>d:herculessrcmapclif.c(17224) : warning C4113: 'int (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(block_list *,int,send_target)'1>d:herculessrcmapclif.c(17225) : warning C4113: 'int (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(block_list *,int,int)' Quote Share this post Link to post Share on other sites
0 Brynner 34 Posted April 20, 2013 thanks it works now. i change the clif_specialeffect_single to clif->specialeffect_single clif_specialeffec to clif->specialeffec Quote Share this post Link to post Share on other sites
how to make this compatible to hercules? thanks in advance.
Edited by bgamez23Share this post
Link to post
Share on other sites