Autor Topic: Añadir combos nuevos en MuEmu (1.05D) o versiones superiores  (Visto 1998 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline fedrock on: February 03, 2018, 12:23:57 AM

  • *
  • Rank: Usuario activo
  • Posts: 61
  • Gracias recibida: 177
Bueno, esta es mi primera contribución que hago en el lado sources y como me estoy adentrando en este mundo de la programacion les aporto un manera de tener combo en cualquier personaje en este caso lo hare con un MG, esto esta aportado en Files Season 6 sino me equivoco por Repiiola, en este caso se los publico para el que quiere añadirlo en su server, capaz no sea un gran aporte pero para la gente que recién se adentra les gustara esta modificación, bueno eso supongo. Sin mas preámbulo acá va lo primero:


Aca una imagen del combo:
« Ultima edicion: February 03, 2018, 04:32:57 PM by ZabiinoOo »

Offline rogeralexander #1 on: February 03, 2018, 12:31:38 AM

  • Colaborador
  • *
  • Rank: Puto amo
  • Posts: 201
  • Gracias recibida: 811
genial amigo muy agradecido veo que tienes cuando el usuario se conecta que salga en global puedes aportar ese source o pasarmelo por imbox lo eh buscado pero no eh tenido suerte gracias

Offline fedrock #2 on: February 03, 2018, 12:38:33 PM

  • *
  • Rank: Usuario activo
  • Posts: 61
  • Gracias recibida: 177
genial amigo muy agradecido veo que tienes cuando el usuario se conecta que salga en global puedes aportar ese source o pasarmelo por imbox lo eh buscado pero no eh tenido suerte gracias
Estan en los files MuEmu+SCFBots pero te los dejo aca si quieres:
Agrega en DSProtocol.cpp
Code: [Select]
  if( lpObj->Authority == 32)
    {
    char* arg;
    PostMessage4(lpObj->Name,gMessage.GetMessage(504),arg);
    }
    else
    {
    char* arg;
    PostMessage4(lpObj->Name,gMessage.GetMessage(501),arg);
    }
En Message.txt
Agrega lo siguiente:
501  "[User] esta Online"
504   "GM esta online"

Gracias:


Offline rogeralexander #3 on: February 03, 2018, 12:47:33 PM

  • Colaborador
  • *
  • Rank: Puto amo
  • Posts: 201
  • Gracias recibida: 811
genial amigo muy agradecido veo que tienes cuando el usuario se conecta que salga en global puedes aportar ese source o pasarmelo por imbox lo eh buscado pero no eh tenido suerte gracias
Estan en los files MuEmu+SCFBots pero te los dejo aca si quieres:
Agrega en DSProtocol.cpp
Code: [Select]
  if( lpObj->Authority == 32)
    {
    char* arg;
    PostMessage4(lpObj->Name,gMessage.GetMessage(504),arg);
    }
    else
    {
    char* arg;
    PostMessage4(lpObj->Name,gMessage.GetMessage(501),arg);
    }
En Message.txt
Agrega lo siguiente:
501  "[User] esta Online"
504   "GM esta online"
el del GM si lo agregue pero en modo noticia pero el de user no lo habia encontrado gracias por responder

Offline mundomuc #4 on: February 03, 2018, 01:42:55 PM

  • *
  • Rank: Principiante
  • Posts: 11
  • Gracias recibida: 272
Este custom sirve para todas las versiones de muemu no es el caso season4,6 y 8?
En caso de que quería añadir en la temporada el que debe ser modificado?

Offline Nexus #5 on: February 12, 2018, 11:55:43 AM

  • *
  • Rank: Puto amo
  • Posts: 262
  • Gracias recibida: 190
Bueno, esta es mi primera contribución que hago en el lado sources y como me estoy adentrando en este mundo de la programacion les aporto un manera de tener combo en cualquier personaje en este caso lo hare con un MG, esto esta aportado en Files Season 6 sino me equivoco por Repiiola, en este caso se los publico para el que quiere añadirlo en su server, capaz no sea un gran aporte pero para la gente que recién se adentra les gustara esta modificación, bueno eso supongo. Sin mas preámbulo acá va lo primero:
Aca una imagen del combo:


Hola amigo, muchas gracias por tu aporte, me gustaría consultar algo,  tengo una inquietud, para hacer el combo, se requiere la segunda quest de marlon, yo ya había intentado ponerle combo a todos los personajes pero la segunda quest de marlon no me  lo permitía, y para estar poniendo la quest desde algún editor o sql manualmente no seria buena idea. Tienes alguna idea de que hacer para que el sistema funcione a la par con la quest? claro esta que para files emu s6, Gracias

Offline fedrock #6 on: February 13, 2018, 03:01:52 AM

  • *
  • Rank: Usuario activo
  • Posts: 61
  • Gracias recibida: 177
Bueno, esta es mi primera contribución que hago en el lado sources y como me estoy adentrando en este mundo de la programacion les aporto un manera de tener combo en cualquier personaje en este caso lo hare con un MG, esto esta aportado en Files Season 6 sino me equivoco por Repiiola, en este caso se los publico para el que quiere añadirlo en su server, capaz no sea un gran aporte pero para la gente que recién se adentra les gustara esta modificación, bueno eso supongo. Sin mas preámbulo acá va lo primero:
Aca una imagen del combo:


Hola amigo, muchas gracias por tu aporte, me gustaría consultar algo,  tengo una inquietud, para hacer el combo, se requiere la segunda quest de marlon, yo ya había intentado ponerle combo a todos los personajes pero la segunda quest de marlon no me  lo permitía, y para estar poniendo la quest desde algún editor o sql manualmente no seria buena idea. Tienes alguna idea de que hacer para que el sistema funcione a la par con la quest? claro esta que para files emu s6, Gracias
Creo sino me equivoco en Data/Quest/Quest.txt te da una opcion para habilitar la quest de malon en todos los pjs, la otra es habilitarlo por lado sources armando una estructura nueva.

Offline Nexus #7 on: March 16, 2018, 09:13:38 PM

  • *
  • Rank: Puto amo
  • Posts: 262
  • Gracias recibida: 190
Bueno, esta es mi primera contribución que hago en el lado sources y como me estoy adentrando en este mundo de la programacion les aporto un manera de tener combo en cualquier personaje en este caso lo hare con un MG, esto esta aportado en Files Season 6 sino me equivoco por Repiiola, en este caso se los publico para el que quiere añadirlo en su server, capaz no sea un gran aporte pero para la gente que recién se adentra les gustara esta modificación, bueno eso supongo. Sin mas preámbulo acá va lo primero:
Aca una imagen del combo:


Hola amigo, estoy teniendo problemas con agregar los skil, ya que solamente funciona con el mg, si quiero por ejemplo agregarle skill al dark lord, sigo la instrucción y no hace el combo por mas que tenga la quest dark stone del bk. sabes de alguna solución? uso sourse emu s6

Offline fedrock #8 on: March 16, 2018, 09:23:03 PM

  • *
  • Rank: Usuario activo
  • Posts: 61
  • Gracias recibida: 177
Perdon amigo me olvide de agregar otra linea de code, ya que para que te funcione con un dl o cualquier otro personaje como la sum,Elf o RF se necesita activar el skill combo. Mas tarde subo la otra linea...

Gracias:


Offline Nexus #9 on: March 16, 2018, 09:27:46 PM

  • *
  • Rank: Puto amo
  • Posts: 262
  • Gracias recibida: 190
Perdon amigo me olvide de agregar otra linea de code, ya que para que te funcione con un dl o cualquier otro personaje como la sum,Elf o RF se necesita activar el skill combo. Mas tarde subo la otra linea...


por favor no lo olvides, estaré aquí esperando XD así sea tarde de la noche, muchas gracias por contestarme.  dance

Offline fedrock #10 on: March 16, 2018, 11:49:34 PM

  • *
  • Rank: Usuario activo
  • Posts: 61
  • Gracias recibida: 177
Esta es la linea de código faltante, perdon pero me habia olvidado de colocar esta linea ya que con esto activa skill+combo.
Acá va una guía pero no voy a ser tan detallado ya que si uno ya esta metido en programación supongo que va entender a donde va cada cosa.
« Ultima edicion: March 17, 2018, 12:02:27 AM by fedrock »

Offline spartacus #11 on: March 17, 2018, 10:03:47 PM

  • *
  • Rank: Principiante
  • Posts: 9
  • Gracias recibida: 0
fedrock Usted podría informar de una manera de crear una config.ini para agregar las ID de las habilidades que deseamos que funcione el combo?

Online GX_KYO #12 on: March 24, 2018, 07:49:29 PM

  • *
  • Rank: Usuario activo
  • Posts: 79
  • Gracias recibida: 24
Una consulta, aun no he intentado probar esta modificación pero según veo todo es en el source del server, en el cliente no es necesario modificar nada?
Killing me one breath at a time... Cutting you with my pair of lives... So go on and lay me down to rest, You make it painless, painless!
I can't... I can't... I can't...
I can't feel ANY PAIN!

Offline jhonhy #13 on: March 24, 2018, 11:26:48 PM

  • *
  • Rank: Principiante
  • Posts: 16
  • Gracias recibida: 2
@fedrock
yo hice así (espanhol):
eu fiz isso (portuguese):

ComboSkill.cpp
Code: [Select]
int CComboSkill::GetSkillType(WORD skill) // OK
{
if(skill == SKILL_FALLING_SLASH || skill == SKILL_LUNGE || skill == SKILL_UPPERCUT || skill == SKILL_CYCLONE || skill == SKILL_SLASH || skill == SKILL_DRAIN_LIFE) //Summoner combo
{
return 0;
}
else if(skill == SKILL_TWISTING_SLASH || skill == SKILL_RAGEFUL_BLOW || skill == SKILL_DEATH_STAB || skill == SKILL_FROZEN_STAB || skill == SKILL_BLOOD_STORM || skill == SKILL_RED_STORM || skill == SKILL_CHAIN_LIGHTNING) //Summoner combo
{
return 1;
}
else
{
return -1;
}
}

SkillManager.h
Code: [Select]
bool SkillChainLightning(int aIndex,int bIndex,CSkill* lpSkill,bool combo); //Combo teste summoner
bool SkillRedStorm(int aIndex,int bIndex,CSkill* lpSkill,bool combo); //Combo teste summoner

SkillManager.cpp
Code: [Select]
bool CSkillManager::RunningSkill(int aIndex,int bIndex,CSkill* lpSkill,BYTE x,BYTE y,BYTE angle,bool combo) // OK
                case SKILL_CHAIN_LIGHTNING:
return this->SkillChainLightning(aIndex,bIndex,lpSkill,combo); //Combo teste summoner
case SKILL_RED_STORM:
return this->SkillRedStorm(aIndex,bIndex,lpSkill,combo); //Combo teste summoner


SkillManager.cpp -> SkillChainLightning
Code: [Select]
bool CSkillManager::SkillChainLightning(int aIndex,int bIndex,CSkill* lpSkill,bool combo) // OK
{
LPOBJ lpObj = &gObj[aIndex];

if(OBJECT_RANGE(bIndex) == 0)
{
return 0;
}

LPOBJ lpTarget = &gObj[bIndex];

if(this->CheckSkillRange(lpSkill->m_index,lpObj->X,lpObj->Y,lpTarget->X,lpTarget->Y) == 0)
{
return 0;
}

        //Combo teste summoner
gAttack.Attack(lpObj,&gObj[bIndex],lpSkill,0,0,0,0,combo);

if(combo != 0)
{
this->GCSkillAttackSend(lpObj,SKILL_COMBO,bIndex,1);
}

int count = 1;

int target[3] = {bIndex,bIndex,bIndex};

for(int n=0;n < MAX_VIEWPORT;n++)
{
if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
{
continue;
}

int index = lpObj->VpPlayer2[n].index;

if(bIndex == index)
{
continue;
}

if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
{
continue;
}

if(this->CheckSkillRadio(lpSkill->m_index,lpTarget->X,lpTarget->Y,gObj[index].X,gObj[index].Y) == 0)
{
continue;
}

target[count++] = index;

if(count >= _countof(target))
{
break;
}

               //Combo teste summoner
gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);

if(combo != 0)
{
this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
}

}

BYTE send[256];

PMSG_SKILL_CHAIN_SKILL_SEND pMsg;

pMsg.header.set(0xBF,0x0A,0);

int size = sizeof(pMsg);

pMsg.skill[0] = SET_NUMBERHB(lpSkill->m_index);

pMsg.skill[1] = SET_NUMBERLB(lpSkill->m_index);

pMsg.index = aIndex;

pMsg.count = 0;

PMSG_SKILL_CHAIN_SKILL info;

for(int n=0;n < _countof(target);n++)
{
gObjAddAttackProcMsgSendDelay(lpObj,52,target[n],(200+(n*200)),lpSkill->m_index,(n+1));

info.index = target[n];

memcpy(&send[size],&info,sizeof(info));
size += sizeof(info);

pMsg.count++;
}

pMsg.header.size = size;

memcpy(send,&pMsg,sizeof(pMsg));

DataSend(aIndex,send,size);

MsgSendV2(lpObj,send,size);

return 1;
}

SkillManager.cpp -> SkillRedStorm
Code: [Select]
bool CSkillManager::SkillRedStorm(int aIndex,int bIndex,CSkill* lpSkill,bool combo) // OK
{
LPOBJ lpObj = &gObj[aIndex];

int count = 0;

for(int n=0;n < MAX_VIEWPORT;n++)
{
if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
{
continue;
}

int index = lpObj->VpPlayer2[n].index;

if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
{
continue;
}

if(this->CheckSkillRadio(lpSkill->m_index,lpObj->X,lpObj->Y,gObj[index].X,gObj[index].Y) == 0)
{
continue;
}

gObjAddAttackProcMsgSendDelay(lpObj,50,index,250,lpSkill->m_index,combo);

//Combo teste summoner
//gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);

if(combo != 0)
{
this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
}

if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
{
break;
}
}

return 1;
}



¡¡sin éxito!!
sem sucesso!!
¿Dónde me equivoque?
Onde estou errado?

« Ultima edicion: March 25, 2018, 10:49:18 PM by jhonhy »

Offline fedrock #14 on: March 26, 2018, 03:20:31 PM

  • *
  • Rank: Usuario activo
  • Posts: 61
  • Gracias recibida: 177
Una consulta, aun no he intentado probar esta modificación pero según veo todo es en el source del server, en el cliente no es necesario modificar nada?
Hasta el momento solo es el GS pero en el cliente no se modifica nada.

Offline fedrock #15 on: March 26, 2018, 03:24:28 PM

  • *
  • Rank: Usuario activo
  • Posts: 61
  • Gracias recibida: 177
@fedrock
yo hice así (espanhol):
eu fiz isso (portuguese):

ComboSkill.cpp
Code: [Select]
int CComboSkill::GetSkillType(WORD skill) // OK
{
if(skill == SKILL_FALLING_SLASH || skill == SKILL_LUNGE || skill == SKILL_UPPERCUT || skill == SKILL_CYCLONE || skill == SKILL_SLASH || skill == SKILL_DRAIN_LIFE) //Summoner combo
{
return 0;
}
else if(skill == SKILL_TWISTING_SLASH || skill == SKILL_RAGEFUL_BLOW || skill == SKILL_DEATH_STAB || skill == SKILL_FROZEN_STAB || skill == SKILL_BLOOD_STORM || skill == SKILL_RED_STORM || skill == SKILL_CHAIN_LIGHTNING) //Summoner combo
{
return 1;
}
else
{
return -1;
}
}

SkillManager.h
Code: [Select]
bool SkillChainLightning(int aIndex,int bIndex,CSkill* lpSkill,bool combo); //Combo teste summoner
bool SkillRedStorm(int aIndex,int bIndex,CSkill* lpSkill,bool combo); //Combo teste summoner

SkillManager.cpp
Code: [Select]
bool CSkillManager::RunningSkill(int aIndex,int bIndex,CSkill* lpSkill,BYTE x,BYTE y,BYTE angle,bool combo) // OK
                case SKILL_CHAIN_LIGHTNING:
return this->SkillChainLightning(aIndex,bIndex,lpSkill,combo); //Combo teste summoner
case SKILL_RED_STORM:
return this->SkillRedStorm(aIndex,bIndex,lpSkill,combo); //Combo teste summoner


SkillManager.cpp -> SkillChainLightning
Code: [Select]
bool CSkillManager::SkillChainLightning(int aIndex,int bIndex,CSkill* lpSkill,bool combo) // OK
{
LPOBJ lpObj = &gObj[aIndex];

if(OBJECT_RANGE(bIndex) == 0)
{
return 0;
}

LPOBJ lpTarget = &gObj[bIndex];

if(this->CheckSkillRange(lpSkill->m_index,lpObj->X,lpObj->Y,lpTarget->X,lpTarget->Y) == 0)
{
return 0;
}

        //Combo teste summoner
gAttack.Attack(lpObj,&gObj[bIndex],lpSkill,0,0,0,0,combo);

if(combo != 0)
{
this->GCSkillAttackSend(lpObj,SKILL_COMBO,bIndex,1);
}

int count = 1;

int target[3] = {bIndex,bIndex,bIndex};

for(int n=0;n < MAX_VIEWPORT;n++)
{
if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
{
continue;
}

int index = lpObj->VpPlayer2[n].index;

if(bIndex == index)
{
continue;
}

if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
{
continue;
}

if(this->CheckSkillRadio(lpSkill->m_index,lpTarget->X,lpTarget->Y,gObj[index].X,gObj[index].Y) == 0)
{
continue;
}

target[count++] = index;

if(count >= _countof(target))
{
break;
}

               //Combo teste summoner
gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);

if(combo != 0)
{
this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
}

}

BYTE send[256];

PMSG_SKILL_CHAIN_SKILL_SEND pMsg;

pMsg.header.set(0xBF,0x0A,0);

int size = sizeof(pMsg);

pMsg.skill[0] = SET_NUMBERHB(lpSkill->m_index);

pMsg.skill[1] = SET_NUMBERLB(lpSkill->m_index);

pMsg.index = aIndex;

pMsg.count = 0;

PMSG_SKILL_CHAIN_SKILL info;

for(int n=0;n < _countof(target);n++)
{
gObjAddAttackProcMsgSendDelay(lpObj,52,target[n],(200+(n*200)),lpSkill->m_index,(n+1));

info.index = target[n];

memcpy(&send[size],&info,sizeof(info));
size += sizeof(info);

pMsg.count++;
}

pMsg.header.size = size;

memcpy(send,&pMsg,sizeof(pMsg));

DataSend(aIndex,send,size);

MsgSendV2(lpObj,send,size);

return 1;
}

SkillManager.cpp -> SkillRedStorm
Code: [Select]
bool CSkillManager::SkillRedStorm(int aIndex,int bIndex,CSkill* lpSkill,bool combo) // OK
{
LPOBJ lpObj = &gObj[aIndex];

int count = 0;

for(int n=0;n < MAX_VIEWPORT;n++)
{
if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
{
continue;
}

int index = lpObj->VpPlayer2[n].index;

if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
{
continue;
}

if(this->CheckSkillRadio(lpSkill->m_index,lpObj->X,lpObj->Y,gObj[index].X,gObj[index].Y) == 0)
{
continue;
}

gObjAddAttackProcMsgSendDelay(lpObj,50,index,250,lpSkill->m_index,combo);

//Combo teste summoner
//gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);

if(combo != 0)
{
this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
}

if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
{
break;
}
}

return 1;
}



¡¡sin éxito!!
sem sucesso!!
¿Dónde me equivoque?
Onde estou errado?



Tenes que fijarte bien en los 2 skill porque solo se coloca en el ultimo skill y no en 2, el combo skill. A mi me funciona perfecto y para mejor apreciación voy a realizar un video mostrando los combos de todos los personajes.

Gracias:


Offline sombe30 #16 on: March 26, 2018, 07:36:55 PM

  • *
  • Rank: Avanzado
  • Posts: 140
  • Gracias recibida: 783
bro y xk no aportar esos archivos ComboSkill.cpp SkillManager.h  SkillManager.cpp  ya cpnfigurados si no es molestia

Offline fedrock #17 on: March 26, 2018, 08:15:53 PM

  • *
  • Rank: Usuario activo
  • Posts: 61
  • Gracias recibida: 177
bro y xk no aportar esos archivos ComboSkill.cpp SkillManager.h  SkillManager.cpp  ya cpnfigurados si no es molestia
No amigo no voy a aportar eso porque seria regalarle ya hecho todo los combos, porque esta miniguia lo hice especialmente para que lo coloquen ustedes mismos. El que entiende va entender el que no tendría que aprender de programación aunque sea un poco porque esto no es facil, no cualquiera modifica códigos así no mas.

Gracias:


Offline seedmaker #18 on: March 27, 2018, 11:03:51 AM

  • *
  • Rank: Dedicado
  • Posts: 52
  • Gracias recibida: 82
Bueno, esta es mi primera contribución que hago en el lado sources y como me estoy adentrando en este mundo de la programacion les aporto un manera de tener combo en cualquier personaje en este caso lo hare con un MG, esto esta aportado en Files Season 6 sino me equivoco por Repiiola, en este caso se los publico para el que quiere añadirlo en su server, capaz no sea un gran aporte pero para la gente que recién se adentra les gustara esta modificación, bueno eso supongo. Sin mas preámbulo acá va lo primero:
Aca una imagen del combo:



Hello Brother i hope you will add Tutorial about DL/ELF/RF Combo i already working on it but i always failed i hope you can help me Thank's !

Gracias:


Offline jhonhy #19 on: March 27, 2018, 11:22:46 AM

  • *
  • Rank: Principiante
  • Posts: 16
  • Gracias recibida: 2
@fedrock

es sólo en esos archivos que se alteran

ComboSkill.cpp
SkillManager.cpp
SkillManager;h

yo hice de la manera que usted enseñó, pero no funciona ...
« Ultima edicion: March 28, 2018, 08:40:06 AM by jhonhy »

 

Related Topics

  Subject / Started by Replies Last post
2 Replies
355 Views
Last post December 01, 2016, 03:49:10 PM
by IzReal
2 Replies
323 Views
Last post July 18, 2017, 07:57:21 AM
by 007jodex
11 Replies
382 Views
Last post December 29, 2017, 04:11:56 PM
by -𝐑𝐀𝐒𝐓𝐀𝐀👽
0 Replies
247 Views
Last post January 02, 2018, 12:02:13 AM
by ByNova
4 Replies
258 Views
Last post May 03, 2018, 06:41:14 PM
by darkzero2835