Jump to content

Recommended Posts

Posted

Guia] Arreglar El Bug De Soul Collect
Realizada por: 
Warfare


Explicacion 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/

Inicio

Abrid 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 

Posted

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?

Posted

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;

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...