Visitas
Conectarse
Últimos temas
POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)
2 participantes
Página 1 de 1.
POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)
Se trata de código que he añadido al emulador (después de mirarme un montón de funciones, ejemplos, y de reintentar varias compilaciones hasta que no me ha dado error... vamos, que facil no ha sido ).
Éste código, se añade, una parte al Player.cpp, otra al Pet.h y otra al Pet.cpp del emulador, y basicamente lo que hace es lo siguiente:
Dado que un demonio solo puede aprender hechizos cuando está invocado (al menos, es la única manera en que he conseguido hacerlo), he decidido colocar mi función en la parte del código en que se invocan los demonios.
O sea, que para que un demonio aprenda algo, hay que invocarlo antes. De modo que aquí tenemos 2 situaciones:
a) No tienes ningún demonio sacado, pero has llegado un nivel en el que uno de tus demonios puede aprender un hechizo. En cuanto lo invoques, lo aprenderá.
b) Tienes sacado a un demonio y en el nivel al que acabas de llegar puede aprender un hechizo nuevo. Destitúyelo e invocalo de nuevo, y saldrá con el nuevo hechizo aprendido.
Todavía lo tengo que depurar para ver si se puede hacer mejor, pero os dejo lo que tengo hecho: El primero de los Ariath's Fixes (Veremos si puedo hacer más de una xD):
(Como todavía no se hacer parches, pongo parte del código del emulador, para poder ubicar donde hay que poner el código. Mi código está en negrita.)
Player.cpp
------------------
Pet.cpp
------------
Pet.h
----------
Eso es todo y quien sabe... quizás el momento en que los demonios del brujo funcionen bien esté cerca .
Salu2
P.D: Bueno, he cambiado el código de sitio y lo he modificado un poco. Esto ya funciona, es decir, si vas con el diablillo, éste va a aprender magias automáticamente (según lo que puse mas arriba) y éstas se quedan aprendidas.
Y habrá que ver si se pueden revisar también los hechizos en sí, porque algunos no funcionan (como el Escudo de fuego y el Cambio de fase del diablillo).
Y ya de paso, voy a ver si hay algo anormal en el autocasteo de hechizos, pues el diablillo se pone a lanzarme como un poseso el Pacto de sangre, aunque lo tenga ya activado .
Éste código, se añade, una parte al Player.cpp, otra al Pet.h y otra al Pet.cpp del emulador, y basicamente lo que hace es lo siguiente:
Dado que un demonio solo puede aprender hechizos cuando está invocado (al menos, es la única manera en que he conseguido hacerlo), he decidido colocar mi función en la parte del código en que se invocan los demonios.
O sea, que para que un demonio aprenda algo, hay que invocarlo antes. De modo que aquí tenemos 2 situaciones:
a) No tienes ningún demonio sacado, pero has llegado un nivel en el que uno de tus demonios puede aprender un hechizo. En cuanto lo invoques, lo aprenderá.
b) Tienes sacado a un demonio y en el nivel al que acabas de llegar puede aprender un hechizo nuevo. Destitúyelo e invocalo de nuevo, y saldrá con el nuevo hechizo aprendido.
Todavía lo tengo que depurar para ver si se puede hacer mejor, pero os dejo lo que tengo hecho: El primero de los Ariath's Fixes (Veremos si puedo hacer más de una xD):
(Como todavía no se hacer parches, pongo parte del código del emulador, para poder ubicar donde hay que poner el código. Mi código está en negrita.)
Player.cpp
------------------
- Spoiler:
// if warlock has summonned pet, increase its level too
if(info->class_ == WARLOCK) {
if((m_Summon != NULL) /*&& (m_Summon->IsInWorld())*/ && (m_Summon->isAlive())) {
m_Summon->ModUnsigned32Value(UNIT_FIELD_LEVEL, 1);
m_Summon->ApplyStatsForLevel();
m_Summon->CheckSummonSpells();
}
}
//Event_Achiement_Received(ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL,0,level);
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL);
}
// Set the update bit
SetUInt32Value(PLAYER_XP, newxp);
HandleProc(PROC_ON_GAIN_EXPIERIENCE, this, NULL);
m_procCounter = 0;
}
Pet.cpp
------------
- Spoiler:
void Pet::OnPushToWorld()
{
//before we initialize pet spells so we can apply spell mods on them
if( m_Owner )
m_Owner->EventSummonPet( this );
Creature::OnPushToWorld();
CheckSummonSpells();
}
- Spoiler:
void Pet::CheckSummonSpells(){
Pet* summon = m_Owner->GetSummon();
Player* master = m_Owner;
uint32 summonLevel = summon->getLevel();
uint32 Demon = summon->GetEntry();
int it;
int imp_spell_levels [3] = {4,12,14};
int voidwalker_spell_levels [3] = {16,18,24};
int succubus_spell_levels [3] = {22,26,32};
int felhunter_spell_levels [3] = {32,36,42};
int felguard_spell_levels [3] = {52,0,0};
uint32 imp_spells [3] = {6307,4511,2947};
uint32 voidwalker_spells [3] = {7812,17767,17735};
uint32 succubus_spells [3] = {6360,6358,7870};
uint32 felhunter_spells [3] = {54424,19244,54049};
uint32 felguard_spells [3] = {30051,0,0};
switch (Demon){
case 416: //If Imp ...
for(it=0; it <= 2; it++){
if((summonLevel - imp_spell_levels[it]) >= 0){
if((summon->HasSpell(imp_spells[it])) == false){
printf("El diablillo aprende un hechizo!\n");
master->AddSummonSpell(Demon,imp_spells[it]);
}
}
}
break;
case 1860: //If VoidWalker ...
for(it=0; it <= 2; it++){
if((summonLevel - voidwalker_spell_levels[it]) >= 0){
if((summon->HasSpell(voidwalker_spells[it])) == false){
master->AddSummonSpell(Demon,voidwalker_spells[it]);
}
}
}
break;
case 1863: //If Succubus ...
for(it=0; it <= 2; it++){
if((summonLevel - succubus_spell_levels[it]) >= 0){
if((summon->HasSpell(succubus_spells[it])) == false){
master->AddSummonSpell(Demon,succubus_spells[it]);
}
}
}
break;
case 417: //If Felhunter ...
for(it=0; it <= 2; it++){
if((summonLevel - felhunter_spell_levels[it]) >= 0){
if((summon->HasSpell(felhunter_spells[it])) == false){
master->AddSummonSpell(Demon,felhunter_spells[it]);
}
}
}
break;
case 17252: //If Felguard ...
for(it=0; it <= 1; it++){
if((summonLevel - felguard_spell_levels[it]) >= 0){
if((summon->HasSpell(felguard_spells[it])) == false){
master->AddSummonSpell(Demon,felguard_spells[it]);
}
}
}
break;
}
}
Pet.h
----------
- Spoiler:
void SetSpellState(SpellEntry * sp, uint16 State);
uint16 GetSpellState(SpellEntry * sp);
/*Ariath's Fixes: This function do a check every time the player has leveledup,
and, if so, check if any demon the player has, can learn any spell at that level.
Again, if so, the demon learns the spell.*/
void CheckSummonSpells();
/* Ariath's Fixes End */
bool HasSpell( uint32 SpellID )
Eso es todo y quien sabe... quizás el momento en que los demonios del brujo funcionen bien esté cerca .
Salu2
P.D: Bueno, he cambiado el código de sitio y lo he modificado un poco. Esto ya funciona, es decir, si vas con el diablillo, éste va a aprender magias automáticamente (según lo que puse mas arriba) y éstas se quedan aprendidas.
Y habrá que ver si se pueden revisar también los hechizos en sí, porque algunos no funcionan (como el Escudo de fuego y el Cambio de fase del diablillo).
Y ya de paso, voy a ver si hay algo anormal en el autocasteo de hechizos, pues el diablillo se pone a lanzarme como un poseso el Pacto de sangre, aunque lo tenga ya activado .
Re: POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)
Parece que se me adelantaron xD.
http://arcemu.org/forums/index.php?showtopic=14379&st=0&gopid=67152&#entry67152
De todas formas, ahora que ya voy aprendiendo a moverme por el código del emulador, aunque esto ya lo hayan conseguido solucionar, según dicen por aquí, no voy a dejar de husmearlo.
Lo primero que haré, será mirar concienzudamente el código del parche que han publicado. Quiero aprender mássss ^^ .
Salu2
P.D: En cuanto faciliten el archivo .diff del parche, lo probaré, y si eso, os enseñaré como se aplican al código estas cosas.
http://arcemu.org/forums/index.php?showtopic=14379&st=0&gopid=67152&#entry67152
De todas formas, ahora que ya voy aprendiendo a moverme por el código del emulador, aunque esto ya lo hayan conseguido solucionar, según dicen por aquí, no voy a dejar de husmearlo.
Lo primero que haré, será mirar concienzudamente el código del parche que han publicado. Quiero aprender mássss ^^ .
Salu2
P.D: En cuanto faciliten el archivo .diff del parche, lo probaré, y si eso, os enseñaré como se aplican al código estas cosas.
Re: POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)
MM muy interesante, mi server tiene eso bug.
Aritah. aunq no lo ayas conseguido tu primero.. tiene merito
Yo si quieres t digo tropecientos bugs para que seas el primero !XDDDD
Porcierto, el parche para eso esta ya listo para descargar y ponerlo a funcionar?
Aritah. aunq no lo ayas conseguido tu primero.. tiene merito
Yo si quieres t digo tropecientos bugs para que seas el primero !XDDDD
Porcierto, el parche para eso esta ya listo para descargar y ponerlo a funcionar?
Selgar- Novato
- Cantidad de envíos : 5
Oro : 38
Reputación : 0
Fecha de inscripción : 20/04/2009
Re: POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)
Tendré que pasarme mañana por el foro de ArcEmu a ver.
El tio que me ha mostrado el código, me ha dicho que no había conseguido subirlo como adjunto al foro, de manera, que le he dicho que a ver si fuera posible subirlo a un servidor aparte, tipo filebeam, mediafire, etc...
La verdad, es que casi prefiero que lo hayan sacado ellos. Mi codigo ya funcionaba... mas o menos, aunque tenía ciertas pegas.
Espero poder aprender cosas nuevas del código que me han mostrado, y... no tengas prisa en decirme bugs xD.
Yo mas o menos, también voy viendo en que falla el emulador, pero de momento, aunque he empezado a entender parte del código, es algo infimo en comparación con lo que necesito saber para modificar muchas cosas... pero tiempo al tiempo .
Salu2 .
El tio que me ha mostrado el código, me ha dicho que no había conseguido subirlo como adjunto al foro, de manera, que le he dicho que a ver si fuera posible subirlo a un servidor aparte, tipo filebeam, mediafire, etc...
La verdad, es que casi prefiero que lo hayan sacado ellos. Mi codigo ya funcionaba... mas o menos, aunque tenía ciertas pegas.
Espero poder aprender cosas nuevas del código que me han mostrado, y... no tengas prisa en decirme bugs xD.
Yo mas o menos, también voy viendo en que falla el emulador, pero de momento, aunque he empezado a entender parte del código, es algo infimo en comparación con lo que necesito saber para modificar muchas cosas... pero tiempo al tiempo .
Salu2 .
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
Lun Nov 14, 2016 3:41 pm por ragnarosxd
» WoW server ragnaros 3.3.5a high reates
Miér Jun 24, 2015 11:12 pm por ragnarosxd
» WoW server ragnaros 3.3.5a high reates
Miér Jun 24, 2015 11:11 pm por ragnarosxd
» Traducciones WhyDB
Vie Mayo 02, 2014 10:54 pm por tubafonos
» realmlist
Jue Ago 29, 2013 5:36 pm por locoiii
» cual es el realmist????
Mar Mayo 14, 2013 3:15 am por bosz
» Presentacion
Lun Abr 01, 2013 6:40 am por danigraful
» holaa me podeis ayudarr
Dom Mar 31, 2013 5:34 pm por alejandro9696
» WOWPlus - Excelente Servidor WoW 3.3.5 a (WOTLK)
Miér Mar 27, 2013 2:33 am por Galawowplus