Eyhra Posted May 22, 2016 Posted May 22, 2016 Guia] Arreglar El Bug De Soul CollectRealizada por: WarfareExplicacion General:Desde Las Versiones Actuales Del Emulador Eathena, La Skill Del Champion, Soul Collect, (La Que Nos Castea Las 5 Bolitas De Golpe) Tiene Un Bug Sin Menos Importancia, ¿Pero En Todo Caso Es Un Bug No?, Lo Que Hace, Es Que Aunque Tengamos Ya Casteadas Las Bolitas, Es Volver A Castearlas, Una y Otra Vez..., Nuestro Objetivo Sera Solucionar Este Bug Tan Tonto.Requerimientos:- Compilador Para Volver a Compilar El Codigo.- Emulador Funcional De Eathena.- Archivo Skill.c (Situado En La Carpeta src/map/InicioAbrid vuestro archivo skill.c y buscar lo siguiente. case MO_CALLSPIRITS: if(sd->spiritball >= lv) { clif_skill_fail(sd,skill,0,0); return 0; } break; Abajo Pegad El Siguiente Codigo //Shintetsu Soul Collect Bug case CH_SOULCOLLECT: if(sd->spiritball >= 5) { clif_skill_fail(sd,skill,0,0); return 0; } break; Si os fijais, lo que hemos hecho, es justamente decirle que cuente las bolitas gracias a la variable spiritball, que si es superior a 5 nos haga un skill fail, por lo que no nos casteara de nuevo las bolitas, y nos solucionara el bug.Solo Falta Que Compileis y Comprobeis por vosotros mismos, que funciona correctamente. ASI ERA EN EATHENA AHORA EN RATHENA? Podrian ayudarme GRACIAS Quote
Darknessfmy Posted May 22, 2016 Posted May 22, 2016 Así esta en rA, case MO_CALLSPIRITS: if(sd) { int limit = skill_lv; if( sd->sc.data[SC_RAISINGDRAGON] ) limit += sd->sc.data[SC_RAISINGDRAGON]->val1; clif_skill_nodamage(src,bl,skill_id,skill_lv,1); pc_addspiritball(sd,skill_get_time(skill_id,skill_lv),limit); } break; case CH_SOULCOLLECT: if(sd) { int limit = 5; if( sd->sc.data[SC_RAISINGDRAGON] ) limit += sd->sc.data[SC_RAISINGDRAGON]->val1; clif_skill_nodamage(src,bl,skill_id,skill_lv,1); for (i = 0; i < limit; i++) pc_addspiritball(sd,skill_get_time(skill_id,skill_lv),limit); } break; ¿Estás seguro que sigue el problema? Quote
Eyhra Posted May 22, 2016 Author Posted May 22, 2016 si yo lo tengo asi mira case MO_CALLSPIRITS: if(sd) { int limit = skill_lv; if( sd->sc.data[SC_RAISINGDRAGON] ) limit += sd->sc.data[SC_RAISINGDRAGON]->val1; clif_skill_nodamage(src,bl,skill_id,skill_lv,1); pc_addspiritball(sd,skill_get_time(skill_id,skill_lv),limit); } break; case CH_SOULCOLLECT: if(sd) { int limit = 5; if( sd->sc.data[SC_RAISINGDRAGON] ) limit += sd->sc.data[SC_RAISINGDRAGON]->val1; clif_skill_nodamage(src,bl,skill_id,skill_lv,1); for (i = 0; i < limit; i++) pc_addspiritball(sd,skill_get_time(skill_id,skill_lv),limit); } break; Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.