Visitas
Contador Gratis
Conectarse

Recuperar mi contraseña

Últimos temas
» Nuevo Servidor wotlk progresivo: Utgarde blizzlike 3.3.5a
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

GratisWoWTodo Sobre Servidores WoW

POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)

Ver el tema anterior Ver el tema siguiente Ir abajo

POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)

Mensaje por Ariath el Lun Abr 20, 2009 6:37 pm

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

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

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

_________________
NO contestaré a ningún tipo de email o MP (mensaje privado) referente a dudas o problemas con servidores.

El FORO está para algo.

Cualquier cosa que reciba de esa índole, se la comerá la papelera.

Gracias

Ariath
Admin

Cantidad de envíos : 747
Oro : 5060
Reputación : 531
Fecha de inscripción : 23/01/2009

Ver perfil de usuario http://wow-realm.forosactivos.net

Volver arriba Ir abajo

Re: POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)

Mensaje por Ariath el Mar Abr 21, 2009 10:27 pm

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.

_________________
NO contestaré a ningún tipo de email o MP (mensaje privado) referente a dudas o problemas con servidores.

El FORO está para algo.

Cualquier cosa que reciba de esa índole, se la comerá la papelera.

Gracias

Ariath
Admin

Cantidad de envíos : 747
Oro : 5060
Reputación : 531
Fecha de inscripción : 23/01/2009

Ver perfil de usuario http://wow-realm.forosactivos.net

Volver arriba Ir abajo

Re: POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)

Mensaje por Selgar el Miér Abr 22, 2009 3:12 am

MM muy interesante, mi server tiene eso bug.


Aritah. aunq no lo ayas conseguido tu primero.. tiene merito Razz

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

Ver perfil de usuario

Volver arriba Ir abajo

Re: POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)

Mensaje por Ariath el Miér Abr 22, 2009 3:20 am

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

Salu2 Smile .

_________________
NO contestaré a ningún tipo de email o MP (mensaje privado) referente a dudas o problemas con servidores.

El FORO está para algo.

Cualquier cosa que reciba de esa índole, se la comerá la papelera.

Gracias

Ariath
Admin

Cantidad de envíos : 747
Oro : 5060
Reputación : 531
Fecha de inscripción : 23/01/2009

Ver perfil de usuario http://wow-realm.forosactivos.net

Volver arriba Ir abajo

Re: POSIBLE FIX para que las invocaciones del Brujo aprendan los hechizos automáticamente (no terminado, aunque queda menos :P)

Mensaje por Contenido patrocinado Hoy a las 3:16 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.