Logo
live-news-icon

Noticias

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Applayo

Páginas: 1 [2] 3
16
Sources / Command Set PK Level para MuEMU
« en: Abril 22, 2021, 12:25:07 am »
CommandManager.h
Dentro de enum eCommandNumber

Código: [Seleccionar]
COMMAND_PKSETLVL = 110,

Dentro de class CCommandManager

Código: [Seleccionar]
bool CCommandManager::CommandSetPKLevel(LPOBJ lpObj,char* arg, int Npc);

CommandManager.cpp

Código: [Seleccionar]
        case COMMAND_PKSETLVL:
            Result = CommandSetPKLevel(lpObj,argument,Npc);
            break;

Código: [Seleccionar]
bool CCommandManager::CommandSetPKLevel(LPOBJ lpObj,char* arg, int Npc)
{
char name[11] = {0};

this->GetString(arg,name,sizeof(name),0);

LPOBJ lpTarget = gObjFind(name);

if(lpTarget == 0)
{
gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,"O Personagem não existe ou não está online.");
return 0;
}

int pk = this->GetNumber(arg,1);

if(pk >= 7)
{
gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,"O Valor que você entrou é inválido.");
return 0;
}

lpTarget->PKLevel = pk;

GCPKLevelSend(lpTarget->Index,lpTarget->PKLevel);

if (Npc <= -1)
{
GCChatTargetNewSend(lpTarget,Npc,gMessage.GetMessage(536));
}

gLog.Output(LOG_COMMAND,"[CommandSetPKLevel][%s][%s] - (PKLevel: %d)",lpTarget->Account,lpTarget->Name,lpTarget->PKLevel);

return 1;
}

Command.txt

   
Código: [Seleccionar]
109 "/setlvlpk" 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 //setlvl <player> <nivel> - Editar nivel PK

17
Sources / Activar pvp en Raklion Event Boss Map
« en: Abril 22, 2021, 12:18:55 am »
la pregunta de siempre de porque no se pueden matar en el mapa del evento raklion, solo es un switch.

ServerInfo.cpp
Código: [Seleccionar]
void CServerInfo::ReadCustomInfo(char* section,char* path) // OK
Código: [Seleccionar]
this->m_RaklionPvPBossMap = GetPrivateProfileInt(section,"RaklionPvPBossMap",0,path);
ServerInfo.h
Código: [Seleccionar]
public:

int m_RaklionPvPBossMap;


en GameServer - Event.dat agregar:

RaklionPvPBossMap = 1


Attack.cpp
Buscar : bool CAttack::CheckPlayerTarget(LPOBJ lpObj,LPOBJ lpTarget) // OK
remplazar :

Código: [Seleccionar]
if(lpObj->Map == MAP_RAKLION2 && lpTarget->Map == MAP_RAKLION2)
por esto :

   
Código: [Seleccionar]
if(gServerInfo.m_RaklionPvPBossMap == 0)
{
if(lpObj->Map == MAP_RAKLION2 && lpTarget->Map == MAP_RAKLION2)
{
return 0;
}
}

Creditos: Karuritoku

18
Sources / Fix ViewPort GuildUnion and Taget Guild Union
« en: Abril 22, 2021, 12:14:52 am »


User.cpp =>Gameserver

Código: [Seleccionar]
int gObjGetRelationShip(LPOBJ lpObj, LPOBJ lpTargetObj)
{
if ( lpObj == NULL || lpTargetObj == NULL )
{
return false;
}

if ( lpObj->Guild == NULL || lpTargetObj->Guild == NULL )
{
return 0;
}
int iUnion = (!lpObj->Guild->GuildUnion) ? lpObj->Guild->Number : lpObj->Guild->GuildUnion;
int iUnion2 = (!lpTargetObj->Guild->GuildUnion) ? lpTargetObj->Guild->Number : lpTargetObj->Guild->GuildUnion;
return gUnionManager.GetGuildRelationShip(iUnion,iUnion2);

}

Creditos: LeeHenry

19
Sources / TimeBar [F4] e MiniMap [F5]
« en: Abril 22, 2021, 12:10:49 am »
Demo: vou postar breve

Interface.h

Código: [Seleccionar]
void SwitchMiniMap();
void SwitchTime();

Interface.cpp

Código: [Seleccionar]
void Interface::Work()
{
if( GetForegroundWindow() == pGameWindow )
{
if (GetKeyState(VK_F4) & 0x4000)
{
gInterface.SwitchTime();
}
if (GetKeyState(VK_F5) & 0x4000)
{
gInterface.SwitchMiniMap();
}
}
}

void Interface::SwitchMiniMap(){
if((GetTickCount() - gInterface.Data[eNULL_MAP].EventTick) < 1000 )
    {
        return;
    }

gInterface.Data[eNULL_MAP].EventTick = GetTickCount();

if (MiniMap!=0)
    {
        gInterface.DrawMessage(1, "MiniMap Window [OFF]");
        MiniMap = 0;
    }
    else
    {
        gInterface.DrawMessage(1, "MiniMap Window [ON]");
        MiniMap = 1;
    }
}

void Interface::SwitchTime()
{
    if((GetTickCount() - gInterface.Data[eTIME].EventTick) < 1000 )
    {
        return;
    }
    gInterface.Data[eTIME].EventTick = GetTickCount();

    if (this->Data[eTIME].OnShow)
    {
        gInterface.DrawMessage(1, "Time Window [OFF]");
        this->Data[eTIME].OnShow = false;
    }
    else
    {
        gInterface.DrawMessage(1, "Time Window [ON]");
        this->Data[eTIME].OnShow = true;
    }
}

MiniMap [F5] + TimeBar [F4]

Creditos: Applayo

20
Sources / Fix Agi Skill
« en: Abril 21, 2021, 06:03:55 pm »
Olá a todos, estou experimentando agi ilimitado com habilidades de todas as classes. Usei o seguinte código para colocar

Depois mudar no Maininfo

Código: [Seleccionar]
DWMaxAttackSpeed = 670000
DKMaxAttackSpeed = 670000
FEMaxAttackSpeed = 670000
MGMaxAttackSpeed = 670000
DLMaxAttackSpeed = 670000
SUMaxAttackSpeed = 670000
RFMaxAttackSpeed = 670000


Atualização de correção BugAgi Full. Agora você pode usar o Agi ilimitadamente para as Classes

Fix.h

Código: [Seleccionar]
#pragma once

void InitAttackSpeed();


Fix.cpp

Código: [Seleccionar]
#include "stdafx.h"
#include "Fix.h"
#include "User.h"
#include "Defines.h"
#include "Object.h"
#include "Util.h"
#include "TMemory.h"

static DWORD ATTACK_RET = 0x00550A16;
static WORD CLASS = 0;
static WORD STR_SPEED = 0;
static WORD MAG_SPEED = 0;

__declspec(naked) void FixAttackSpeed()
{
   _asm
   {
      MOV EAX,DWORD PTR DS:[0x8128AC8]
      MOVZX ECX,WORD PTR DS:[EAX+0xB]
      MOV CLASS,CX
      MOVZX ECX,WORD PTR DS:[EAX+0x54]
      MOV STR_SPEED,CX
      MOVZX ECX,WORD PTR DS:[EAX+0x60]
      MOV MAG_SPEED,CX
   }
   // --------------------------------------------

   gObjUser.MagickAttack = gObjUser.GetActiveSkill();

   // -> Elf
   if( CLASS == Elf || CLASS == MuseElf || CLASS == HightElf )
   {   
      if(gObjUser.MagickAttack == 52   ||   
            gObjUser.MagickAttack == 51 ||
            gObjUser.MagickAttack == 424 ||
            gObjUser.MagickAttack == 416 )
      {
         if(STR_SPEED > 400)
         {
            STR_SPEED = 400;
         }
      }

      if(gObjUser.MagickAttack == 24 ||   //Fix Skill Triple Shot
         gObjUser.MagickAttack == 414)
      {
         if(STR_SPEED > 600)
         {
            STR_SPEED = 600;
         }
      }
   }
   // -> Magic Gladiator

   if( gObjUser.MagickAttack == 55 ||
         gObjUser.MagickAttack == 490)
      {
         if(STR_SPEED > 1368)
         {
            STR_SPEED = 1368;
         }
      }

   if( gObjUser.MagickAttack == 56 ||
         gObjUser.MagickAttack == 482)
      {
         if(STR_SPEED > 801)
         {
            STR_SPEED = 801;
      }
   }

   if (gObjUser.MagickAttack == 262 ||
      gObjUser.MagickAttack == 558 ||
      gObjUser.MagickAttack == 264 ||
      gObjUser.MagickAttack == 560)
   {
      if (STR_SPEED > 5002)
      {
         STR_SPEED = 5002;
      }
   }

   if (gObjUser.MagickAttack == 265)
   {
      if (STR_SPEED > 4502)
      {
         STR_SPEED = 4502;
      }
   }

   // --------------------------------------------
   _asm
   {
      MOVZX ECX,WORD PTR DS:[STR_SPEED]
      MOV DWORD PTR SS:[EBP-0x28],ECX
      FILD DWORD PTR SS:[EBP-0x28]
      FMUL QWORD PTR DS:[0x0D27C88]              ; FLOAT 0.0010007200189989805
      FSTP DWORD PTR SS:[EBP-0x10]
      MOVZX EAX,WORD PTR DS:[MAG_SPEED]
      MOV DWORD PTR SS:[EBP-0x2C],EAX
      FILD DWORD PTR SS:[EBP-0x2C]
      FMUL QWORD PTR DS:[0x0D27C88]              ; FLOAT 0.0010007200189989805
      FSTP DWORD PTR SS:[EBP-0x0C]
      MOVZX EDX,WORD PTR DS:[MAG_SPEED]
      MOV DWORD PTR SS:[EBP-0x30],EDX
      FILD DWORD PTR SS:[EBP-0x30]
      FMUL QWORD PTR DS:[0x0D281C0]              ; FLOAT 0.002000000094994903
      FSTP DWORD PTR SS:[EBP-0x4]
      FLD DWORD PTR SS:[EBP-0x10]

      JMP ATTACK_RET
   }
}
// --------------------------------------------------------------------------------------------   
static DWORD RETURN_attack2 = 0x0055157D;

__declspec(naked) void FixAttackSpeed2()
{
   _asm
   {
      MOVZX EDX,WORD PTR DS:[STR_SPEED]
      JMP RETURN_attack2
   }
}

void InitAttackSpeed()
{
   SetByte(0x00649E24 + 3, 14);   //-> Test 1
   SetByte(0x00556C32 + 6, 2);   //-> Test 2
   SetOp((LPVOID)0x005509CE, (LPVOID)FixAttackSpeed, ASM::JMP);
   SetOp((LPVOID)0x00551573, (LPVOID)FixAttackSpeed2, ASM::JMP);
}

Main.cpp

Código: [Seleccionar]
InitAttackSpeed(); //-- Fix Agilidad

Créditos: thanhbinhqht

21
Sources / Add Keep DL command status option - MuEMU
« en: Abril 21, 2021, 05:43:18 pm »
Opção para manter o status DL quando ResetType for 1 (Pontuativo)


Em ServerInfo.h procure por int m_CommandResetPointRate[MAX_CLASS];

E acrescente abaixo int m_CommandResetKeepDLCommandPoint[MAX_ACCOUNT_LEVEL];


Em ServerInfo.cpp procure por this->m_CommandResetPointRate[6] = GetPrivateProfileInt(section,"CommandResetPointRat eRF",0,path);

E acrescente abaixo

Código: [Seleccionar]
this->m_CommandResetKeepDLCommandPoint[0] = GetPrivateProfileInt(section,"CommandResetKeepDLCo mmandPoint_AL0",0,path);

this->m_CommandResetKeepDLCommandPoint[1] = GetPrivateProfileInt(section,"CommandResetKeepDLCo mmandPoint_AL1",0,path);

this->m_CommandResetKeepDLCommandPoint[2] = GetPrivateProfileInt(section,"CommandResetKeepDLCo mmandPoint_AL2",0,path);

this->m_CommandResetKeepDLCommandPoint[3] = GetPrivateProfileInt(section,"CommandResetKeepDLCo mmandPoint_AL3",0,path);


Na função
Código:

void CCommandManager::DGCommandResetRecv(SDHP_COMMAND_RESET_RECV* lpMsg) // OK

encontre if(gServerInfo.m_CommandResetType == 1)

e onde estiver lpObj->Leadership = gDefaultClassInfo.m_DefaultClassInfo[lpObj->Class].Leadership;

troque para

Código: [Seleccionar]
//- Add Keep DL command status option
if(gServerInfo.m_CommandResetKeepDLCommandPoint[lpObj->AccountLevel] == 0)
{
lpObj->Leadership = gDefaultClassInfo.m_DefaultClassInfo[lpObj->Class].Leadership;
}


No arquivo GameServerInfo - Command.dat acrescente as linhas ao ; Reset Command Settings

Código: [Seleccionar]
CommandResetKeepDLCommandPoint_AL0 = 0
CommandResetKeepDLCommandPoint_AL1 = 0
CommandResetKeepDLCommandPoint_AL2 = 0
CommandResetKeepDLCommandPoint_AL3 = 0


Créditos: Emershow

22
Sources / Guild War Score Position (Main 1.04e - Downgrade)
« en: Abril 21, 2021, 05:29:36 pm »
Olá!
Bom, segue uma modificação que fiz para downgrade a muito tempo onde é possível deixar o score da Guild War na parte de cima, igual nas versões anteriores a Season 3.

Resultado:


Fonte:

Código: [Seleccionar]
_declspec(naked) void GuildWarPosition()
{
static DWORD ReturnAdress = 0x00777026;
_asm
{
ADD ECX,-230 //POS X
MOV DWORD PTR SS:[EBP-0x4],ECX
MOV EDX,DWORD PTR SS:[EBP-0x90]
MOV EAX,DWORD PTR DS:[EDX+0x14]
ADD EAX,-354 //POS Y
MOV DWORD PTR SS:[EBP-0x8C],EAX
MOV ECX,DWORD PTR DS:[0xE8C58C]
JMP [ReturnAdress]
}
}

SetCompleteHook(0xE9, 0x00777008, &GuildWarPosition);
MemorySet(0x00776FE4,0x90,0x5);

Façam bom uso!

Créditos: Denis Alves

23
Sources / Command Make Set to other player
« en: Abril 21, 2021, 05:27:32 pm »

i bring you one of useful commands, Giving player a set (similar with /makeset command)


CommandManager.h

Código: [Seleccionar]
COMMAND_SET = Next to Last Index,

bool Commandset(LPOBJ lpObj,char* arg);

CommandManager.cpp

Código: [Seleccionar]
case COMMAND_SET:
Result = Commandset(lpObj,argument);
break;

Código: [Seleccionar]
bool CCommandManager::Commandset(LPOBJ lpObj,char* arg) // OK
{

int section = this->GetNumber(arg,0);
int type = this->GetNumber(arg,1);
int level = this->GetNumber(arg,2);
int skill = this->GetNumber(arg,3);
int luck = this->GetNumber(arg,4);
int option = this->GetNumber(arg,5);
int exc = this->GetNumber(arg,6);
int set = this->GetNumber(arg,7);
int socket = this->GetNumber(arg,8);

char name[11] = {0};

this->GetString(arg,name,sizeof(name),0);

LPOBJ lpTarget = gObjFind(name);

if(lpTarget == 0)
{
gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(edit your message.txt));
return 0;
}

BYTE ItemSocketOption[MAX_SOCKET_OPTION] = {0xFF,0xFF,0xFF,0xFF,0xFF};
for(int n=0;n < socket && socket <= MAX_SOCKET_OPTION;n++)
{
ItemSocketOption[n] = 0xFE;
}

GDCreateItemSend(lpTarget->Index,0xEB,0,0,GET_ITEM(7,type),level,0,skill,luck,option,-1,exc,set,0,0,ItemSocketOption,0xFF,0);
GDCreateItemSend(lpTarget->Index,0xEB,0,0,GET_ITEM(8,type),level,0,skill,luck,option,-1,exc,set,0,0,ItemSocketOption,0xFF,0);
GDCreateItemSend(lpTarget->Index,0xEB,0,0,GET_ITEM(9,type),level,0,skill,luck,option,-1,exc,set,0,0,ItemSocketOption,0xFF,0);
GDCreateItemSend(lpTarget->Index,0xEB,0,0,GET_ITEM(10,type),level,0,skill,luck,option,-1,exc,set,0,0,ItemSocketOption,0xFF,0);
GDCreateItemSend(lpTarget->Index,0xEB,0,0,GET_ITEM(11,type),level,0,skill,luck,option,-1,exc,set,0,0,ItemSocketOption,0xFF,0);


gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(edit your message.txt));

gLog.Output(LOG_COMMAND,"[Commandset][%s][%s] - (Type: %d, Level: %d, Skill: %d, Luck: %d, Option: %d, Exc: %d, Set: %d, Sockets: %d)",lpObj->Account,lpObj->Name,type,level,skill,luck,option,exc,set, socket);


return 1;
}

Command.txt

Código: [Seleccionar]
83 "/Set" 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 //set <Player Name> <item> <level> <skill> <luck> <option> <exe> <set> <socket>
Credito: Ifreat

24
Sources / Cambiar itenes de NPCs Luck/Leo the Helper
« en: Abril 21, 2021, 05:23:05 pm »
No lo he visto en el foro ni en uno, así que dejo aquí mi ayuda a cualquiera que esté interesado ...

Cambia la clase, los objetos y su nivel y si los objetos de los NPC's Luck the Helper i Leo the Helper serán excelentes o antiguos.

Antes:


Después:


NPC.cpp

Código: [Seleccionar]
void NPC::Load()
{
//SetRange((LPVOID)0x005851D8, 5, ASM::NOP);
//SetOp((LPVOID)0x005851D8, (LPVOID) this->LuckLeoTheHelper, ASM::JMP);
}

// ----------------------------------------------------------------------------------------------

Naked(NPC::LuckLeoTheHelper)
{
static ObjectPreview * gPreview;
//----
_asm {
MOV ECX, DWORD PTR SS : [EBP - 0x14]
MOV gPreview, ECX
}
//
gPreview->HelmSlot = ITEM2(7, 1);
gPreview->ArmorSlot = ITEM2(8, 1);
gPreview->PantsSlot = ITEM2(9, 1);
gPreview->GlovesSlot = ITEM2(10, 1);
gPreview->BootsSlot = ITEM2(11, 1);
//gPreview->WeaponFirstSlot = ITEM2(5, 19);
//gPreview->WeaponSecondSlot  = ITEM2(5, 22);
gPreview->WingsSlot = ITEM2(12, 5);
//
gPreview->HelmLevel   = 13;
gPreview->ArmorLevel   = 13;
gPreview->PantsLevel   = 13;
gPreview->GlovesLevel   = 13;
gPreview->BootsLevel   = 13;
//gPreview->WeaponFirstLevel   = 0;
//gPreview->WeaponSecondLevel   = 0;
//
gPreview->HelmExcellent    = 1;
gPreview->ArmorExcellent    = 1;
gPreview->PantsExcellent    = 1;
gPreview->GlovesExcellent    = 1;
gPreview->BootsExcellent    = 1;
//gPreview->WeaponFirstExcellent = 0;
//gPreview->WeaponSecondLevel    = 0;
//
gPreview->Class = BladeKnight;
//
_asm {
MOV ECX, 0x00585230
JMP ECX
}
}

NPC.h

Código: [Seleccionar]
class NPC {
  public:
    void        Load();
    // ----
static void LuckLeoTheHelper();
    // ----
}; extern NPC gNPC;

Main.cpp

Código: [Seleccionar]
#include "NPC.h"

gNPC.Load();

Creditos: Rafhael Souza

25
Sources / Plugin Camera.dll + Skybox(S4)
« en: Abril 21, 2021, 04:51:35 pm »
olá a todos.

Adicionei a source do sky box no camera.dll

Também está disponível o arquivo já compilado para quem não sabe compilar.

English:
Hello everybody.

Added the skype box source to camera.dll

Also available is the file already compiled for those who do not know how to compile.



Download:
https://mega.nz/file/314ghRxB#v2okCiZL93XqgnnKzlcrPm5-nIscuqc1m1eEl6fmJLE

Creditos:
Webzen
Melo920
Kiosani

26
Sources / [Sources] Fix Trade Request When Dying
« en: Abril 21, 2021, 04:40:25 pm »
Voltando aqui novamente para deixar esse fix que servirá para todos evitarem dores de cabeça no seu servidor.


    Na source do GameServer, em Trade.cpp, procure por "void CTrade::CGTradeRequestRecv(PMSG_TRADE_REQUEST_RECV * lpMsg,int aIndex)", e logo em baixo de "LPOBJ lpTarget = &gObj[bIndex];" adicione:

    Código:

Código: [Seleccionar]
        if(lpTarget->DieRegen != 0 || lpObj->DieRegen != 0)
        {
            gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(43));
            return;
        }



    no mesmo arquivo procure por "void CTrade::CGTradeResponseRecv(PMSG_TRADE_RESPONSE_RE CV* lpMsg,int aIndex)" e logo em baixo de "LPOBJ lpTarget = &gObj[bIndex];", adicione:


    Código:

Código: [Seleccionar]
        if(lpTarget->DieRegen != 0 || lpObj->DieRegen != 0) //fix party ao morrer 1
        {
            gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(43));
            return;
        }


Créditos: Denis Alves

27
Sources / [Sources] Fix AutoPot in Helper
« en: Abril 21, 2021, 04:35:33 pm »
Fix AutoPot consertar desconexão automática


Código: [Seleccionar]
    __declspec(naked) void CheckAutoPote( ){
    static DWORD Pointer;
    static DWORD main_addr = 0x0095E1C4;


    _asm
    {
    MOV ECX,DWORD PTR SS:[EBP-0x1874]
    MOV Pointer,ECX
    }


    if ( *(BYTE *)(Pointer + 176) )
    {
    if ( ViewCurHP < ( ViewMaxHP * *(BYTE *)(Pointer + 177) / 100 )
    && *(BYTE *)(*(DWORD *)(Pointer + 4) + 780) == 1
    && ViewCurHP > 0 )
    {
    main_addr = 0x0095E1B9;
    }
    }


    _asm
    {
    JMP [main_addr]
    }
    }

Creditos: StevenDX

28
Sources / [Sources] Fix Original Combo Push Effect
« en: Abril 21, 2021, 04:31:50 pm »

ESTA É A CORREÇÃO PARA APLICAR O EFEITO DE PUSH ORIGINAL COM O COMBO.

GAMESERVER
Attack.cpp

Procure esta função:
Código:

Código: [Seleccionar]
bool CAttack::Attack(LPOBJ lpObj, LPOBJ lpTarget, CSkill* lpSkill, bool send, BYTE flag, int damage, int count, bool combo)
dentro da função você vai encontrar isso:
Código:

Código: [Seleccionar]
gObjectManager.CharacterLifeCheck(lpObj,lpTarget,(damage-ShieldDamage),0,flag,effect,((lpSkill==0)?0:lpSkill->m_index),ShieldDamage);

Após encontrar substitua por isso:
Código:

Código: [Seleccionar]
gObjectManager.CharacterLifeCheck(lpObj, lpTarget, (damage - ShieldDamage), 0, flag, effect, skill, ShieldDamage);

Créditos: kayito

29
Sources / [Sources] Fix Buff Skill in Event Maps
« en: Abril 21, 2021, 04:23:28 pm »
Informação

       ESTA CORREÇÃO É PARA USAR BUFFS SKILLS EM BLOOD CASTLE, DEVIL SQUARE, CHAOS CASTLE E ILLUSION TEMPLE NA "SAFE ZONE"    


    GAMESERVER

    SkillManager.cpp

    Procure pela função:
    Código:

   
Código: [Seleccionar]
void CSkillManager::CGSkillAttackRecv(PMSG_SKILL_ATTACK_RECV* lpMsg, int aIndex)
    Nessa função você vai encontrar isso:
    Código:

   
Código: [Seleccionar]
if (gMap[lpObj->Map].CheckAttr(lpObj->X, lpObj->Y, 1) != 0 || gMap[lpTarget->Map].CheckAttr(lpTarget->X, lpTarget->Y, 1) != 0)
    {
    return;
    }

    Após encontrar mude para isso:
    Código:

   
Código: [Seleccionar]
if (BC_MAP_RANGE(lpObj->Map) || CA_MAP_RANGE(lpObj->Map) || CC_MAP_RANGE(lpObj->Map) || DS_MAP_RANGE(lpObj->Map) || IT_MAP_RANGE(lpObj->Map))
    {
    //Enable buff skills in event maps
    }
    else if (gMap[lpObj->Map].CheckAttr(lpObj->X, lpObj->Y, 1) != 0 || gMap[lpTarget->Map].CheckAttr(lpTarget->X, lpTarget->Y, 1) != 0)
    {
    return;
    }



Créditos: kayito

30
Sources / [Sources] Fix Warning Message Kanturu Event
« en: Abril 21, 2021, 04:12:37 pm »
E ae pessoas, beleza?

Bom, vi em outro fórum que trouxeram o sistema para isso. Porém eu fixei de outra maneira bem mais simples e eficaz, sem a necessidade de aumentar o código (mesmo que isso não cause um desgaste por parte da execução do GS).

O que isso faz?

Coloca aquelas mensagens que aparecem de aviso que "O Kanturu irá iniciar em 1 minuto" para aparecer só nos mapas relacionados ao evento (que seria Kanturu 1, 2 e 3).


Bom, em KanturuBattleStanby.cpp procure por void CKanturuBattleStanby::SetState_NOTIFY() e substitua isso:

Código:

Código: [Seleccionar]
gNotice.GCNoticeSendToAll(0,0,0,0,0,0,gMessage.GetMessage(338));
por isso


Código:

Código: [Seleccionar]
gKanturuUtil.SendMsgKanturuMapUser(gMessage.GetMessage(338));


Créditos: Denis Alves

Páginas: 1 [2] 3