PDA

View Full Version : |Source| MUEMU Season 13



Segredo
12-17-2024, 08:05 PM
Sem muito arrodeio, é o código fonte do emulador da season 13, baseado na base do MUEMU.

já tinha a um tempo (quase ou mais de um ano) parada e não vi e nem vejo uso pra mim e...assista o vídeo que você terá mais detalhes e etc.


https://youtu.be/xjylXi1-wE4

OBS.:

- USE SQL SERVER 2022 PARA RESTAURAR O BANCO;
- NÃO DOU SUPORTE;
- QUEM SOUBER OS CRÉDITOS ME MANDA UMA DM OU CHAMA LÁ NO GRUPO DA PERFECTZONE;
- DE PREFERÊNCIA, APAGAREI MENSAGENS QUE NÃO ESTEJAM RELACIONADAS AO FUNCIONAMENTO DO EMULADOR. BUSQUEM SE COMUNICAREM PARA AJUDAR A LIGAR/RESOLVER PROBLEMAS E AFINS DO EMULADOR, NÃO CONVERSAR ASNERAS NO TÓPICO.

Link para download:
**Hidden Content: Check the thread to see hidden data.**

Uma fotinha:

https://i.imgur.com/pmrXmOb.jpeg



Créditos:
EMU
X-TEAM

E feliz natal e próspero ano novo antecipado pra todos!


Segue alguns fix feito pelo Andre


Como estou sem tempo para finalizar um Repack com correções devido ao meu retorno ao trabalho :(, irei recolocar os Fixes novamente neste tópico.

SEMPRE LEIAM TODAS AS PÁGINAS PARA ENCONTRAR POSSÍVEIS FIXES E CUIDADO COM "VENDEDORES PICARETAS" QUE SÓ QUEREM SE APROVEITAR!

Fix Dark Reaven (Corvo) não causar dano:

Em DarkSpirit.cpp no GS

Busque por:


bool CDarkSpirit::Attack(LPOBJ lpObj, LPOBJ lpTarget, CSkill* lpSkill, bool send, BYTE flag, BYTE action) // OK

Substitua tudo por:


bool CDarkSpirit::Attack(LPOBJ lpObj,LPOBJ lpTarget,CSkill* lpSkill,bool send,BYTE flag,BYTE action) // OK{
#pragma region ATTACK_CHECK


if(lpObj->Index == lpTarget->Index)
{
return 0;
}


if(lpObj->Type == OBJECT_USER && gObjIsConnectedGP(lpObj->Index) == 0)
{
return 0;
}


if(lpTarget->Type == OBJECT_USER && gObjIsConnectedGP(lpTarget->Index) == 0)
{
return 0;
}


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


#if(GAMESERVER_UPDATE>=402)


if(gDuel.GetDuelArenaBySpectator(lpObj->Index) != 0 || gDuel.GetDuelArenaBySpectator(lpTarget->Index) != 0)
{
return 0;
}


#endif


if(gCrywolf.GetCrywolfState() == CRYWOLF_STATE_READY || gCrywolf.GetCrywolfState() == CRYWOLF_STATE_END)
{
if(lpTarget->Type == OBJECT_MONSTER && lpTarget->Map == MAP_CRYWOLF)
{
return 0;
}
}


if(lpObj->GuildNumber > 0 && lpObj->Guild != 0 && lpObj->Guild->WarState != 0)
{
if(lpObj->Guild->WarType == 1 && GetBattleSoccerGoalMove(0) == 0)
{
return 1;
}


if(lpObj->Guild->WarType == 0 && lpTarget->Type == OBJECT_MONSTER)
{
return 0;
}
}


if(lpTarget->Type == OBJECT_NPC || lpTarget->Live == 0 || lpTarget->State != OBJECT_PLAYING || lpTarget->Teleport != 0)
{
return 0;
}


if(lpTarget->Type == OBJECT_MONSTER)
{

if((lpTarget->Class >= 100 && lpTarget->Class <= 110) || lpTarget->Class == 523) // Trap
{
return 0;
}


if(lpTarget->Class == 221 || lpTarget->Class == 222) // Siege
{
return 0;
}
}


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
{
if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
if(lpObj->SummonIndex == lpTarget->Index)
{
return 0;
}
}
}


int SummonIndex = lpObj->Index;


if(lpObj->Type == OBJECT_MONSTER && OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
SummonIndex = lpObj->SummonIndex;
}


int SummonTargetIndex = lpTarget->Index;


if(lpTarget->Type == OBJECT_MONSTER && OBJECT_RANGE(lpTarget->SummonIndex) != 0)
{
SummonTargetIndex = lpTarget->SummonIndex;
}


if(gAttack.CheckPlayerTarget(&gObj[SummonIndex],&gObj[SummonTargetIndex]) == 0)
{
return 0;
}


#pragma endregion


#pragma region ATTACK_RETURN


int skill = ((lpSkill==0)?SKILL_NONE:lpSkill->m_skill);


if(lpObj->Type == OBJECT_USER)
{
lpObj->HPAutoRecuperationTime = GetTickCount();
lpObj->MPAutoRecuperationTime = GetTickCount();
lpObj->BPAutoRecuperationTime = GetTickCount();
lpObj->SDAutoRecuperationTime = GetTickCount();
}


if(lpTarget->Type == OBJECT_USER)
{
lpTarget->HPAutoRecuperationTime = GetTickCount();
lpTarget->MPAutoRecuperationTime = GetTickCount();
lpTarget->BPAutoRecuperationTime = GetTickCount();
lpTarget->SDAutoRecuperationTime = GetTickCount();
}


if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonSetEnemy(lpObj,lpTarget->Index);
}


if(lpObj->Type == OBJECT_USER)
{
gDarkSpirit[lpObj->Index].SetTarget(lpTarget->Index);
}


bool duel = gDuel.CheckDuel(lpObj,lpTarget);


if(lpObj->Type == OBJECT_USER && duel != 0)
{
lpObj->DuelTickCount = GetTickCount();
}


if(lpTarget->Type == OBJECT_USER && duel != 0)
{
lpTarget->DuelTickCount = GetTickCount();
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDE R_OF_PROTECTION) != 0 && lpSkill == 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDE R_OF_PROTECTION) != 0 && lpSkill != 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_PHYS I_DAMAGE_IMMUNITY) != 0 && lpSkill == 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MAGI C_DAMAGE_IMMUNITY) != 0 && lpSkill != 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->Type == OBJECT_MONSTER)
{
if(lpTarget->Class == 200 && lpSkill == 0)
{
gObjMonsterStateProc(lpTarget,6,lpObj->Index,0);
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->Class == 200 && lpSkill != 0)
{
gObjMonsterStateProc(lpTarget,7,lpObj->Index,0);
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONS TER_PHYSI_DAMAGE_IMMUNITY) != 0 && skill == SKILL_NONE)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONS TER_MAGIC_DAMAGE_IMMUNITY) != 0 && skill != SKILL_NONE)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->MonsterSkillElementOption.CheckImmuneTime() != 0)
{
if(lpTarget->MonsterSkillElementOption.m_SkillElementImmuneNumb er == skill)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}
}
}


#pragma endregion


#pragma region DAMAGE_CALC


flag = 0;


BYTE miss = 0;


WORD effect = 0;


if((lpObj->Type != OBJECT_USER || lpTarget->Type != OBJECT_USER) && this->MissCheck(lpObj,lpTarget,lpSkill,send,&miss) == 0)
{
return 1;
}


if((lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER) && gAttack.MissCheckPvP(lpObj,lpTarget,lpSkill,send,0 ,&miss) == 0)
{
return 1;
}


long long defense = this->GetTargetDefense(lpObj,lpTarget,&effect);


long long damage = this->GetAttackDamage(lpObj,lpTarget,lpSkill,&effect,defense);


if(miss != 0)
{
damage = (damage*30)/100;
}


if(action != 0)
{
damage = (damage*60)/100;
}


for(int n=0;n < MAX_DAMAGE_REDUCTION;n++)
{
damage -= (damage*lpTarget->DamageReduction[n])/100;
}


if(lpTarget->EffectOption.AddDamageReduction > 0)
{
damage -= (damage*lpTarget->EffectOption.AddDamageReduction)/100;
}


if((GetTickCount()-lpTarget->ShieldDamageReductionTime) < ((DWORD)(gServerInfo.m_DefenseTimeConstA*1000)))
{
damage -= (damage*lpTarget->ShieldDamageReduction)/100;
}


gAttack.WingSprite(0,lpTarget,&damage);


gAttack.HelperSprite(0,lpTarget,&damage);


int MinDamage = (lpObj->Level+lpObj->MasterLevel)/10;


MinDamage = ((MinDamage<1)?1:MinDamage);


damage = ((damage<MinDamage)?MinDamage:damage);


this->DarkSpiritSprite(lpObj,damage);


gAttack.DamageSprite(lpTarget,damage);


#if(GAMESERVER_UPDATE>=602)


if((GetLargeRand()%100) < gMasterSkillTree.GetMasterSkillValue(lpObj,MASTER_ SKILL_ADD_DARK_SPIRIT_DOUBLE_DAMAGE_RATE))
{
effect |= 0x40;
damage += damage;
}


#endif


#pragma endregion


#pragma region DAMAGE_CONFIG


if(lpObj->Type == OBJECT_USER)
{
if(lpTarget->Type == OBJECT_USER)
{
damage = (damage*gServerInfo.m_GeneralDamageRatePvP)/100;


damage = (damage*gServerInfo.m_DamageRatePvP[lpObj->Class])/100;


damage = (damage*gServerInfo.m_DamageRateTo[lpObj->Class][lpTarget->Class])/100;


if(duel != 0)
{
damage = (damage*gServerInfo.m_DuelDamageRate)/100;
}
else if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
{
damage = (damage*gServerInfo.m_GensDamageRate)/100;
}
else if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
{
damage = (damage*gServerInfo.m_ChaosCastleDamageRate)/100;
}
else if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
{
damage = (damage*gServerInfo.m_IllusionTempleDamageRate)/100;
}
}
else
{
damage = (damage*gServerInfo.m_GeneralDamageRatePvM)/100;


damage = (damage*gServerInfo.m_DamageRatePvM[lpObj->Class])/100;
}
}


#pragma endregion


#pragma region DAMAGE_FINISH


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
{


}


damage = ((damage<0)?0:damage);


#pragma endregion


#pragma region DAMAGE_APPLY


int ShieldDamage = 0;


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER)
{
ShieldDamage = gAttack.GetShieldDamage(lpObj,lpTarget,damage);


if(lpTarget->Life < (damage-ShieldDamage))
{
lpTarget->Life = 0;
}
else
{
lpTarget->Life -= damage-ShieldDamage;
}


if(lpTarget->Shield < ShieldDamage)
{
lpTarget->Shield = 0;
}
else
{
lpTarget->Shield -= ShieldDamage;
}
}
else
{
if(lpTarget->Life < damage)
{
lpTarget->Life = 0;
}
else
{
lpTarget->Life -= damage;
}
}


if(lpTarget->Type == OBJECT_MONSTER)
{
lpTarget->LastAttackerID = lpObj->Index;


gObjAddMsgSendDelay(lpTarget,0,lpObj->Index,100,0);


if(lpTarget->CurrentAI != 0)
{
lpTarget->Agro.IncAgro(lpObj->Index,(damage/50));
}
}


#pragma endregion


#pragma region CHECK_SELF_DEFENSE


if(damage > 0)
{
if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER && lpObj->Index != lpTarget->Index)
{
bool CheckSelfDefense = 1;


if(effect == 4)
{
CheckSelfDefense = 0;
}


if(gDuel.CheckDuel(lpObj,lpTarget) != 0)
{
CheckSelfDefense = 0;
}

if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
{
CheckSelfDefense = 0;
}

if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
{
CheckSelfDefense = 0;
}


if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
{
CheckSelfDefense = 0;
}

if(gMapManager.GetMapNonOutlaw(lpObj->Map) != 0)
{
CheckSelfDefense = 0;
}


if(CheckSelfDefense != 0)
{
gObjCheckSelfDefense(lpObj,lpTarget->Index);
}
}


gAttack.ArmorDurabilityDown(lpObj,lpTarget);
}


lpObj->Rest = 0;


#pragma endregion


#pragma region ATTACK_FINISH


if(damage > 0)
{
gEffectManager.DelEffect(lpTarget,EFFECT_SLEEP);


if(lpTarget->Type == OBJECT_USER)
{
if(effect != 4)
{
if((lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect) > 0)
{
gObjAddMsgSendDelay(lpTarget,10,lpObj->Index,10,((damage*(lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect))/100));
}

if((GetLargeRand()%100) < lpTarget->DefensiveFullBPRestoreRate)
{
lpTarget->BP = lpTarget->MaxBP+lpTarget->AddBP;
GCManaSend(lpTarget->Index,0xFF,(int)lpTarget->Mana,lpTarget->BP);
}
}


int effect = 1;
}


gObjectManager.CharacterLifeCheck(lpObj,lpTarget,( damage-ShieldDamage),0,flag,effect,skill,ShieldDamage/*,0*/);
}
else
{
GCDamageSend(lpObj->Index,lpTarget->Index,0,0,effect,0);
}


if(lpObj->Type == OBJECT_USER && lpObj->Life <= 0 && lpObj->CheckLifeTime <= 0)
{
lpObj->AttackObj = lpTarget;
lpObj->AttackerKilled = ((lpTarget->Type==OBJECT_USER)?1:0);
lpObj->CheckLifeTime = 3;
}


#pragma endregion


return 1;
}

Fix NPC em Lorencia não aceitar itens de combinação para Criar Dark Reaven (Corvo) e Dark Horse (Cavalo) e também a Chaos Machine:

Em Main.cpp do Cliente:

Busque por:


SetCompleteHook(0xE9, 0x583799, &ChaosBoxDurationItens);

Apenas coloque // para comentar e desativar esta linha.

Fix Arquivos de Configurações não aplicarem os efeitos no GS:

Alguns arquivos do GameServer estão com falta do end em seus respectivos finais ou colunas, verifique na Source buscando pelos trechos onde
estão programadas as leituras destes arquivos que não possuem o end e confirme a necessidade dele. Na programação do GameServer não está
incluído um alerta para a má leitura dos arquivos decorrente da falta de caracteres ou má colocação deles, desta forma, o GS inicia como se estivesse tudo bem porém não aplica as configurações do arquivo com erro.
Exemplo de arquivo com erro que necessita colocação do end:
SkillBlock.txt na pasta Data/Skill do MuServer.

Master Skill Tree 4:

Como esta Source não é de fato uma Season 13, mas sim um Upgrade de Season, está faltando a finalização da Master Skill Tree 4 e suas respectivas Skills. Eu não tenho como disponibilizar o código pois eu apenas fui montando o sistema durante vários dias e isso envolveu diversos arquivos e linhas de códigos. A dica que dou é que todo o sistema da Tree 4 fica basicamente nos arquivos SkillManager, MasterSkillTree_4th, Attack e Skill da Source do GS.

Ao contrário do que falaram algumas páginas atrás neste tópico, NÃO COPIE E COLE ARQUIVOS DE OUTRAS TEAMS como MuDev e etc..., nenhum destes arquivos, como o FormulaData.txt, é compatível com esta Source e conforme informei logo acima, o GS não acusa o arquivo incorreto na leitura e ao usar este arquivo de outra Team que eu citei, a única coisa que irá acontecer é a Tree 4 bugar não informando os valores corretos adquiridos por cada ponto adicionado e também não atualizar os respectivos valores. Use os arquivos originais do MuServer pois eles estão OK para a Master Skill Tree 4, sendo necessária mudanças apenas se você quiser modificar a quantidade de pontos necessários e etc...

Para ativar esta Master Skill Tree 4, apenas busque por:


return; //disabled until full implementation and test of skills

Coloque // na frente do return;

Não é necessário fazer absolutamente mais nada na Source para que esta Tree funcione.
Logo após ative no arquivo GameServerInfo - Common.dat no GS deixando assim ForMasterSkillTree = 1.

Fix não Salvar Skills da Master Skill Tree 4:

Em MasterSkillTree_4th.cpp do GS busque por:
case FOR_MASTER_SKILL_ADD_SHOCKING_BOOM : if ((value = gSkillManager.AddSkill(lpObj, SKILL_SHOCKING_BOOM, 0)) >= 0)
{
gSkillManager.GCSkillAddSend(lpObj->Index, value, SKILL_SHOCKING_BOOM, 0, 0);
}

break;

Esta será a sua referência.
Repare que as outras Skills da Tree 4 não possuem nada disso e agora cabe a você fazer de cada uma tendo atenção nos respectivos nomes das Skills.
OBS: Como eu falei, as mudanças e correções que eu tive que realizar foram muitas em diversos arquivos, mas pelo o que me recordo, o Fix para este caso é apenas este.

Não edite as Skills dos personagens no Banco de Dados, para testes crie um personagem para testar cada Skill. No Banco de Dados a inserção ocorre em diversos locais e editar irá bugar o char fazendo com que você se atrapalhe ainda mais.

Algumas imagens das Skills em funcionamento:

Shock
https://i.imgur.com/2sF7dz8.png

Bleeding
https://i.imgur.com/V1cZcDM.png
Poison
https://i.imgur.com/AM3D8lf.png

---Por enquanto é isso. Espero que ajude alguém a desenvolver o seu projeto e infelizmente não tenho previsão de retornar o desenvolvimento devido ao fim do recesso no trabalho. Sempre que eu puder irei auxiliar quem precisar de ajuda.

Mentor
12-17-2024, 08:15 PM
Excelente contribuição! thumbup
Interessante que você deu uma explicação de como estar utilizando os arquivos congrats congrats congrats

paPanat9s1
12-18-2024, 01:35 AM
can you share data base for vs 2008 R? and objet structures plis :D

Segredo
12-18-2024, 01:57 AM
can you share data base for vs 2008 R? and objet structures plis :D

Sorry, database only in SQL 2022.

paPanat9s1
12-18-2024, 02:14 AM
and scrip for restore?

50 minutes:------- Atualizado -------

client crash to end started game bar up, fix?

antoniodel
12-18-2024, 01:50 PM
@Denis Alves (https://perfectzone.com.br/member.php?u=21) Show de bola, ela é ideal para quem quer ter uma base solida S13 ou ate mesmo ir avançando o emulador para futuras season, parabéns, infelizmente meu link do Main S13 unpacked estar offline, vou vê se tenho ele guardado por aqui para postar.

Créditos:
LST
EMU
X-TEAM
MUTEAM
Myheart
Pyke

Segredo
12-18-2024, 03:45 PM
@Denis Alves (https://perfectzone.com.br/member.php?u=21) Show de bola, ela é ideal para quem quer ter uma base solida S13 ou ate mesmo ir avançando o emulador para futuras season, parabéns, infelizmente meu link do Main S13 unpacked estar offline, vou vê se tenho ele guardado por aqui para postar.

Créditos:
LST
EMU
X-TEAM
MUTEAM
Myheart
Pyke


O main unpacked já está no cliente, o que estão usando já está.

unico
12-19-2024, 01:45 AM
tendran db para sql 2019 :(

brahian153
12-19-2024, 03:12 AM
Denis Alves ,share GS CS

xibabr
12-19-2024, 12:26 PM
Alguém sabe se roda no windows server 2016?

220alexandre
12-19-2024, 01:00 PM
ola, eu gostaria de saber onde eu desativo aqueles item que ja vem equipados no personagem... seria algo no sql ou na source mesmo?

Goten
12-19-2024, 10:55 PM
complete config.ini

[ANTILAG]
Efeitos =0
Brilho = 0
Habilidade = 0
ArmasAsas= 0
MapObjects = 0
Personagens= 0
[CONSOLE]
Habilitado = 0
[PERSONALIZADO]
showCSbar = 1
[LOGIN]
Versão = 1.18.70
EndereçoIP = seu-ip
Serial = 0hfqckZw30CKOzZA
[FONT]
NomeDaGuilda = 9
NomeDoCaráter = 10
[PIN]
teste=2222222//2222222

====================


se você travar ao entrar no jogo após selecionar o personagem, desabilite-o

main.ccp

//SetByte(0x0050C717, 0xFF); //habilite o zoom da arena

====================

database para sql 2008

**Hidden Content: Check the thread to see hidden data.**

paPanat9s1
12-22-2024, 07:54 AM
@Denis Alves (https://perfectzone.com.br/member.php?u=21) @Segredo (https://perfectzone.com.br/member.php?u=21)
fix dark reaven plis , dont give damage to any monster

Farias
12-22-2024, 11:36 PM
Denis, se consegue a DB para SQL 2014 R2 ?

Goten
12-23-2024, 12:22 AM
Para remover o acesso deepdungeon apenas para vip

em serverfiles Data--Move--move.txt

substitua por:

43 "Nixies Lake" 0 1 * * * 0 522
44 "DeepDungeon 1" 0 1 * * * 0 561
45 "DeepDungeon 2" 0 1 * * * 0 562
46 "DeepDungeon 3" 0 1 * * * 0 563
47 "DeepDungeon 4" 0 1 * * * 0 564
1 "DeepDungeon 5" 0 1 * * * 0 565
49 "SwampDarkness" 0 1 * * * 0 567

agora em serverfiles Data--Move--Gate.txt
substitua por ele as próximas linhas


539 2 122 192 9 193 11 0 0 0 * * * 0 // Swamp of Darkness (Boszone)

540 0 121 147 27 148 28 0 0 0 -1 * * 0 // quest arrival coordinates
//Idx Flag Map X Y TX TY Target Dir MinLvl MaxLvl MinRst MaxRst AccountLevel
541 1 0 176 29 178 32 542 0 0 * * * 0 // Lorancia-> Renewal Dungeon 1F
542 2 116 120 125 121 128 0 0 0 * * * 0
543 1 116 117 124 118 125 544 0 0 * * * 0 // Renewal Dungeon 1F-> Laurencia
544 2 0 179 30 181 31 0 0 0 * * * 0
545 1 116 130 130 131 131 546 0 0 * * * 0 // Renewal Dungeon 1F-> Renewal Dungeon 2F
546 2 117 131 128 132 129 0 0 0 * * * 0
547 1 117 129 131 132 132 548 0 0 * * * 0 // Renewal Dungeon 2F-> Renewal Dungeon 1F
548 2 116 128 127 129 130 0 0 0 * * * 0
549 1 117 116 124 117 127 550 0 0 * * * 0 // Renewal Dungeon 2F-> Renewal Dungeon 3F
550 2 118 123 123 124 124 0 0 0 * * * 0
551 1 118 121 118 122 120 552 0 0 * * * 0 // 3rd floor of renewal dungeon-> 2nd floor of renewal dungeon
552 2 117 131 127 132 128 0 0 0 * * * 0
553 1 118 135 130 136 131 554 0 0 * * * 0 // 3rd floor of Renewal Dungeon-> 4th floor of Renewal Dungeon
554 2 119 125 119 126 120 0 0 0 * * * 0
555 1 119 122 117 123 119 556 0 0 * * * 0 // Renewal Dungeon 4F-> Renewal Dungeon 3F
556 2 118 135 127 136 128 0 0 0 * * * 0
557 1 119 136 131 137 132 558 0 0 * * * 0 // Renewal Dungeon 4F-> Renewal Dungeon 5F
558 2 120 126 119 127 120 0 0 0 * * * 0
559 1 120 121 118 122 120 560 0 0 * * * 0 // 5th floor of Renewal Dungeon-> 4th floor of Renewal Dungeon
560 2 119 136 127 137 128 0 0 0 * * * 0
//Idx Flag Map X Y TX TY Target Dir MinLvl MaxLvl MinRst MaxRst AccountLevel
561 0 116 120 125 121 128 0 0 0 * * * 0 // Renewal Dungeon 1F
562 0 117 131 128 132 129 0 0 0 * * * 0 // Renewal Dungeon 2F
563 0 118 123 123 124 124 0 0 0 * * * 0 // 3rd floor of the renewal dungeon
564 0 119 125 119 126 120 0 0 0 * * * 0 // Renewal Dungeon 4F
565 0 120 126 119 127 120 0 0 0 * * * 0 // 5th floor of the renewal dungeon
566 0 0 138 120 139 121 0 0 0 * * * 0 // B-2 // Lorraine arrival coordinates

567 0 122 128 110 140 125 0 0 0 * * * 0 //
568 1 122 126 128 127 129 569 0 0 * * * 0 // Entrance
569 2 122 103 159 104 160 0 0 0 * * * 0 // Swamp of Darkness (Fire)
570 1 122 107 154 108 155 571 0 0 * * * 0 // Swamp of Darkness (Fire)
571 2 122 128 125 129 126 0 0 0 * * * 0 // Exit (safety zone)
572 1 122 148 111 148 113 573 0 0 * * * 0 // Water inlet
573 2 122 182 102 183 103 0 0 0 * * * 0 // Dark Swamp (Water)
574 1 122 177 102 177 104 575 0 0 * * * 0 // Dark Swamp (Water)
575 2 122 142 112 143 113 0 0 0 * * * 0 // Water outlet (safety zone)
576 1 122 132 102 133 103 577 0 0 * * * 0 // Dark entrance
577 2 122 132 68 133 69 0 0 0 * * * 0 // Swamp of Darkness (Darkness)
578 1 122 133 73 135 73 579 0 0 * * * 0 // Swamp of Darkness (Darkness)
579 2 122 133 107 134 108 0 0 0 * * * 0 // Dark exit (safety zone)
580 1 122 120 113 121 114 581 0 0 * * * 0 // Land entrance
581 2 122 88 104 89 105 0 0 0 * * * 0 // Swamp of Darkness (Land)
582 1 122 92 105 92 107 583 0 0 * * * 0 // Swamp of Darkness (Land)
583 2 122 125 114 126 115 0 0 0 * * * 0 // Land exit (safety zone)
584 1 122 142 128 144 129 585 0 0 * * * 0 // Wind entrance
585 2 122 160 152 161 153 0 0 0 * * * 0 // Swamp of Darkness (Wind)
586 1 122 158 150 160 151 587 0 0 * * * 0 // Swamp of Darkness (Wind)
587 2 122 139 125 140 126 0 0 0 * * * 0 // Wind exit (safety zone)
588 1 122 241 91 242 92 590 0 0 * * * 0 // Boss entrance (water)
589 1 122 12 158 13 158 590 0 0 * * * 0 // Boss entrance
590 2 122 192 9 193 11 0 0 0 * * * 0 // Swamp of Darkness (Boszone)

591 0 37 64 161 82 171 0 0 0 * * * 0 //Kanturu 3 Random

end


================================================== ==========================

Source MAX_Joint for mu s13 i recreate it for fun :)

create


Joint.ccp

anda copy and paste it


#include "stdafx.h"
#include "Joint.h"
#include "Util.h"

BYTE m_Joints[JOINTS_SIZE * MAX_JOINTS];

void InitJoint() // OK
{
SetDword(0x0066B6B0 + 2, (DWORD)&m_Joints);//.text:005EED8B sub_5EEB95 mov byte_8BCDD30[eax], 0
//.text:0066B6B0 sub_66B523 mov byte_91E4120[eax], 0

SetDword(0x00771FD9 + 1, (DWORD)&m_Joints);//.text:0076B455 sub_76B428 add eax, offset byte_8BCDD30
//.text:00771FD9 sub_764E6B add eax, offset byte_91E4120

SetDword(0x007CF81F + 1, (DWORD)&m_Joints);//.text:00774B88 sub_774B60 add eax, offset byte_8BCDD30
//.text:007CF81F sub_7CF7DC add eax, offset byte_91E4120

SetDword(0x007DF4F0 + 1, (DWORD)&m_Joints);//.text:00774C26 sub_774C02 add eax, offset byte_8BCDD30
//.text:007DF4F0 sub_7DF4C8 add eax, offset byte_91E4120

SetDword(0x007DF58E + 1, (DWORD)&m_Joints);//.text:00774C79 sub_774C55 add eax, offset byte_8BCDD30
//.text:007DF58E sub_7DF56A add eax, offset byte_91E4120

SetDword(0x007DF5E1 + 1, (DWORD)&m_Joints);//.text:007879C4 sub_7879A0 add eax, offset byte_8BCDD30
//.text:007DF5E1 sub_7DF5BD add eax, offset byte_91E4120

SetDword(0x007FE800 + 1, (DWORD)&m_Joints);//.text:00787A13 sub_7879E7 add eax, offset byte_8BCDD30


SetDword(0x0066B69E + 3, MAX_JOINTS);//0066B69E
SetDword(0x007CF809 + 3, MAX_JOINTS);//007CF809
SetDword(0x007DF4DA + 3, MAX_JOINTS);//007DF4DA
SetDword(0x007DF57C + 3, MAX_JOINTS);//007DF57C
SetDword(0x007DF5CF + 3, MAX_JOINTS);//007DF5CF
SetDword(0x007FE7EE + 3, MAX_JOINTS);//007FE7EE
SetDword(0x007FE841 + 3, MAX_JOINTS);//007FE841

}


create Joint.h

and copy and paste it


#pragma once

#define JOINTS_SIZE 2584

#define MAX_JOINTS 2500//5000

void InitJoint();




now in main.cpp


#include "Joint.h"

in void EntryProc()

add it:

InitJoint();




================================================

fix all event.. blood castle, devil square, caos castle, etc




in map MapServerInfo.dat

remplace for it


0
//ServerCode MapServerGroup InitSetVal IpAddress Port
0 0 1 Syou-ip 55901
19 0 0 Syou-ip 55919
end

1
//ServerCode NotMoveOption NextMap NextServerCode
0 0 9 19 // Devil Square 1
0 0 11 19 //Blood Castle 1
0 0 12 19 //Blood Castle 2
0 0 13 19 //Blood Castle 3
0 0 14 19 //Blood Castle 4
0 0 15 19 //Blood Castle 5
0 0 16 19 //Blood Castle 6
0 0 17 19 //Blood Castle 7
0 0 18 19 //Chaos Castle 1
0 0 19 19 //Chaos Castle 2
0 0 20 19 //Chaos Castle 3
0 0 21 19 //Chaos Castle 4
0 0 22 19 //Chaos Castle 5
0 0 23 19 //Chaos Castle 6
0 0 30 19 //Castle Siege
0 0 31 19 //Land of Trials
0 0 32 19 //Devil Square 2
0 0 34 19 //Crywolf
0 0 41 19 //Barracks
0 0 42 19 //Refuge
0 0 45 19 //Illusion Temple 1
0 0 46 19 //Illusion Temple 2
0 0 47 19 //Illusion Temple 3
0 0 48 19 //Illusion Temple 4
0 0 49 19 //Illusion Temple 5
0 0 50 19 //Illusion Temple 6
0 0 52 19 //Blood Castle 8
0 0 53 19 //Chaos Castle 7
0 0 59 19 //Chaos Castle 7
0 0 69 19 //Imperial Guardian 1
0 0 70 19 //Imperial Guardian 2
0 0 71 19 //Imperial Guardian 3
0 0 72 19 //Imperial Guardian 4
0 0 79 19 //Loren Market
0 0 82 19 //Double Goer Renew 1
0 0 83 19 //Double Goer Renew 2
0 0 84 19 //Double Goer Renew 3
0 0 85 19 //Double Goer Renew 4
0 0 86 19 //Double Goer Renew 5
0 0 87 19 //Double Goer Renew 6
0 0 88 19 //Double Goer Renew 7
0 0 89 19 //Double Goer Renew 8
0 0 90 19 //Double Goer Renew 9
0 0 92 19 //Acheron 2
0 0 96 19 //Deventer 2
0 0 97 19 //Chaos Castle final
0 0 98 19 //Chaos Castle final
0 0 99 19 //Chaos Castle final
//0 0 101 19 //Urk Mountain 2
//0 0 114 19 //Instance Zone
//0 0 115 19 //Labyrinth of Dimensions
//0 0 121 19 //Trial Area
19 1 9 -1
19 1 11 -1
19 1 12 -1
19 1 13 -1
19 1 14 -1
19 1 15 -1
19 1 16 -1
19 1 17 -1
19 1 18 -1
19 1 19 -1
19 1 20 -1
19 1 21 -1
19 1 22 -1
19 1 23 -1
19 1 30 -1
19 1 31 -1
19 1 32 -1
19 1 34 -1
19 1 41 -1
19 1 42 -1
19 1 45 -1
19 1 46 -1
19 1 47 -1
19 1 48 -1
19 1 49 -1
19 1 50 -1
19 1 52 -1
19 1 53 -1
19 1 59 -1
19 1 69 -1
19 1 70 -1
19 1 71 -1
19 1 72 -1
19 1 79 -1
19 1 82 -1
19 1 83 -1
19 1 84 -1
19 1 85 -1
19 1 86 -1
19 1 87 -1
19 1 88 -1
19 1 89 -1
19 1 90 -1
19 1 92 -1
19 1 96 -1
19 1 97 -1
19 1 98 -1
19 1 99 -1
//19 1 101 -1
//19 1 114 -1
//19 1 115 -1
//19 1 121 -1
end





================================================== ====

fix all event.. mu ruumy, battle core, etc, etc.. i fix it for fun cool2

https://i.imgur.com/UdvOOwX.jpeg
https://imgur.com/a/gdPtC51



in gameserver source seach this:

void CEventInventory:: DGEventInventoryRecv(SDHP_EVENT_INVENTORY_RECV* lpMsg) // OK

to the end of this add:

this->GCEventInventoryEnableSend(lpObj->Index,1);
this->GCEventInventoryEnableSend(lpObj->Index, 2);
this->GCEventInventoryEnableSend(lpObj->Index, 3);
this->GCEventInventoryEnableSend(lpObj->Index, 4);
this->GCEventInventoryEnableSend(lpObj->Index, 5);
this->GCEventInventoryEnableSend(lpObj->Index, 6);
this->GCEventInventoryEnableSend(lpObj->Index, 7);
this->GCEventInventoryEnableSend(lpObj->Index, 9);
this->GCEventInventoryEnableSend(lpObj->Index, 10);




Créditos:
Bladimir1

Farias
12-23-2024, 12:53 AM
Gotem, esse emulador não tem o MAIN_INFO ?

Basta por só o IP na Main.dll e ja era ?

Goten
12-23-2024, 01:17 AM
Gotem, esse emulador não tem o MAIN_INFO ?

Basta por só o IP na Main.dll e ja era ?

No vídeo do Denis Alves tem explicando como entrar no jogo

Farias
12-23-2024, 12:14 PM
No vídeo do Denis Alves tem explicando como entrar no jogo

Sim, vi q ele mostrou ali pra por o IP.

Goten
12-23-2024, 11:45 PM
fix pets muun i fix it for fun :D


in serverfiles data-item--item.txt

add to the end of item.txt


16
//Index Slot Skill X Y Serial Option Drop Name" level Dur Res1 Res2 Res3 Res4 Res5 Res6 Res7 SetA C0 C1 C2 C3 C4 C5 C6
0 -1 0 1 1 1 1 0 "Ƥŵ²Ü" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 -1 0 1 1 1 1 0 "Ƥŵ²Ü(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
2 -1 0 1 1 1 1 0 "À×ÅåÍÐÒ¯Ò¯" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
3 -1 0 1 1 1 1 0 "À×ÅåÍÐÒ¯Ò¯(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
4 -1 0 1 1 1 1 0 "À¶¾«Áé" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
5 -1 0 1 1 1 1 0 "À¶¾«Áé(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
6 -1 0 1 1 1 1 0 "ÐְܰÖ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
7 -1 0 1 1 1 1 0 "ÐÜ°Ö°Ö (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
8 -1 0 1 1 1 1 0 "Ðܱ¦±¦" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
9 -1 0 1 1 1 1 0 "Ðܱ¦±¦ (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
10 -1 0 1 1 1 1 0 "ÐÜÂèÂè" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
11 -1 0 1 1 1 1 0 "ÐÜÂèÂè (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
12 -1 0 1 1 1 1 0 "ÎéµÏ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
13 -1 0 1 1 1 1 0 "ÎéµÏ (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
14 -1 0 1 1 1 1 0 "²Æ±¦Ïä" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
15 -1 0 1 1 1 1 0 "²Æ±¦Ïä (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
16 -1 0 1 1 1 1 0 "±¦ÏäÁÔÈË" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
17 -1 0 1 1 1 1 0 "±¦ÏäÁÔÈË (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
18 -1 0 1 1 1 1 0 "Ê÷¾«Áé" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
19 -1 0 1 1 1 1 0 "Ê÷¾«Áé (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
20 -1 0 1 1 1 1 0 "ÏÉÈ˲Ý" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
21 -1 0 1 1 1 1 0 "ÏÉÈË²Ý (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
22 -1 0 1 1 1 1 0 "Ò¶·¨Ê¦" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
23 -1 0 1 1 1 1 0 "Ò¶·¨Ê¦ (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
24 -1 0 1 1 1 1 0 "É£°ÍÅ®º¢" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
25 -1 0 1 1 1 1 0 "É£°ÍÅ®º¢ (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
26 -1 0 1 1 1 1 0 "ðÐðÄÀ³Å·" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
27 -1 0 1 1 1 1 0 "ðÐðÄÀ³Å· (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
28 -1 0 1 1 1 1 0 "°ÍÌØÀû°²" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
29 -1 0 1 1 1 1 0 "°ÍÌØÀû°² (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
30 -1 0 1 1 1 1 0 "¼ÇÕß" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
31 -1 0 1 1 1 1 0 "»ðÁúÎÆÕÂ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
32 -1 0 1 1 1 1 0 "ÀÏ»¢" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
33 -1 0 1 1 1 1 0 "ÀÏ»¢ (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
34 -1 0 1 1 1 1 0 "Ìì³Ó×ù" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
35 -1 0 1 1 1 1 0 "Ìì³Ó×ù (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
36 -1 0 1 1 1 1 0 "ÌìЫ×ù" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
37 -1 0 1 1 1 1 0 "ÌìЫ×ù (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
38 -1 0 1 1 1 1 0 "ÔÂÍÃ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
39 -1 0 1 1 1 1 0 "ÔÂÍà (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
40 -1 0 1 1 1 1 0 "¸ßÁëÍÁ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
41 -1 0 1 1 1 1 0 "¼¦" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
42 -1 0 1 1 1 1 0 "¼¦ (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
43 -1 0 1 1 1 1 0 "¹«¼¦" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
44 -1 0 1 1 1 1 0 "¹«¼¦ (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
45 -1 0 1 1 1 1 0 "·ßÅ*µÄ¹«¼¦" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
46 -1 0 1 1 1 1 0 "·ßÅ*µÄ¹«¼¦ (½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
211 -1 0 1 1 1 1 0 "½ø»¯Ö®Ê¯" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
212 -1 0 1 1 1 1 0 "Â¬Ææ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
213 -1 0 1 1 1 1 0 "Â¬Ææ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
214 -1 0 1 1 1 1 0 "ÍÐÄá" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
215 -1 0 1 1 1 1 0 "ÍÐÄᣨ½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
216 -1 0 1 1 1 1 0 "Äþܽ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
217 -1 0 1 1 1 1 0 "Äþܽ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
218 -1 0 1 1 1 1 0 "СÑý¾«" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
219 -1 0 1 1 1 1 0 "СÑý¾«(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
223 -1 0 1 1 1 1 0 "ÍþÁ®" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
224 -1 0 1 1 1 1 0 "ÍþÁ®£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
225 -1 0 1 1 1 1 0 "±£ÂÞ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
226 -1 0 1 1 1 1 0 "±£ÂÞ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
227 -1 0 1 1 1 1 0 "¿¦ÈÖ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
228 -1 0 1 1 1 1 0 "¿¦ÈÖ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
229 -1 0 1 1 1 1 0 "ÎÚÅÁ³" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
230 -1 0 1 1 1 1 0 "ÎÚÅÁ³(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
231 -1 0 1 1 1 1 0 "Ñ©ÇÁ¹·" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
232 -1 0 1 1 1 1 0 "Ñ©ÇÁ¹·£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
233 -1 0 1 1 1 1 0 "Å®Î×" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
234 -1 0 1 1 1 1 0 "Å®Î×£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
235 -1 0 1 1 1 1 0 "Í·¹Ç" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
236 -1 0 1 1 1 1 0 "Í·¹Ç£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
237 -1 0 1 1 1 1 0 "·«Ææ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
238 -1 0 1 1 1 1 0 "·«Ææ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
239 -1 0 1 1 1 1 0 "³èÎïÖÇÁ¦±ä»»Æ÷" 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
240 -1 0 1 1 1 1 0 "ħÁ¦Ö®Ê¯" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
241 -1 0 1 1 1 1 0 "Èö°ÔÌØ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
242 -1 0 1 1 1 1 0 "Èö°ÔÌØ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
243 -1 0 1 1 1 1 0 "ÀÇÈË" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
244 -1 0 1 1 1 1 0 "ÀÇÈË£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
245 -1 0 1 1 1 1 0 "ÍÁ·Ë" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
246 -1 0 1 1 1 1 0 "ÍÁ·Ë£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
252 -1 0 1 1 1 1 0 "ÈûÈÉ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
253 -1 0 1 1 1 1 0 "ÈûÈÉ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
254 -1 0 1 1 1 1 0 "±´Ï£Ä¦Ë¹" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
255 -1 0 1 1 1 1 0 "±´Ï£Ä¦Ë¹£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
256 -1 0 1 1 1 1 0 "ÂÞ¸ñ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
257 -1 0 1 1 1 1 0 "ÂÞ¸ñ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
258 -1 0 1 1 1 1 0 "Ã×ŵ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
259 -1 0 1 1 1 1 0 "Ã×ŵ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
260 -1 0 1 1 1 1 0 "ÁÔÈ®¹Ö" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
261 -1 0 1 1 1 1 0 "ÁÔÈ®¹Ö£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
262 -1 0 1 1 1 1 0 "²¿×å" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
263 -1 0 1 1 1 1 0 "²¿×壨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
264 -1 0 1 1 1 1 0 "²®¸ù" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
265 -1 0 1 1 1 1 0 "²®¸ù(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
266 -1 0 1 1 1 1 0 "¶ÀÑÛ¾ÞÈË" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
267 -1 0 1 1 1 1 0 "¶ÀÑÛ¾ÞÈË£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
270 -1 0 1 1 1 1 0 "°î¸¥" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
271 -1 0 1 1 1 1 0 "°î¸¥(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
272 -1 0 1 1 1 1 0 "»ô¿Ë" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
273 -1 0 1 1 1 1 0 "»ô¿Ë£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
274 -1 0 1 1 1 1 0 "ĵÙ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
275 -1 0 1 1 1 1 0 "ĵ٣¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
278 -1 0 1 1 1 1 0 "ó«òë" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
279 -1 0 1 1 1 1 0 "ó«ò루½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
280 -1 0 1 1 1 1 0 "¶¾Ð«" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
281 -1 0 1 1 1 1 0 "¶¾Ð«£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
282 -1 0 1 1 1 1 0 "½ð¹ê×Ó" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
283 -1 0 1 1 1 1 0 "½ð¹ê×Ó(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
284 -1 0 1 1 1 1 0 "Ä»¸®" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
285 -1 0 1 1 1 1 0 "Ä»¸®£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
286 -1 0 1 1 1 1 0 "ÈÌÕß" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
287 -1 0 1 1 1 1 0 "ÈÌÕߣ¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
288 -1 0 1 1 1 1 0 "ÎäÊ¿" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
289 -1 0 1 1 1 1 0 "ÎäÊ¿£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
290 -1 0 1 1 1 1 0 "Îè»áÅ®Íõ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
291 -1 0 1 1 1 1 0 "Îè»áÅ®Íõ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
292 -1 0 1 1 1 1 0 "À²À²¶ÓÔ±" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
293 -1 0 1 1 1 1 0 "À²À²¶ÓÔ±£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
294 -1 0 1 1 1 1 0 "×ãÇò±¦±´" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
295 -1 0 1 1 1 1 0 "×ãÇò±¦±´£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
296 -1 0 1 1 1 1 0 "°Í¶û" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
297 -1 0 1 1 1 1 0 "°Í¶û£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
298 -1 0 1 1 1 1 0 "¼Öܽ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
299 -1 0 1 1 1 1 0 "¼Öܽ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
300 -1 0 1 1 1 1 0 "´ïܽ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
301 -1 0 1 1 1 1 0 "´ïܽ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
302 -1 0 1 1 1 1 0 "frozen" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
303 -1 0 1 1 1 1 0 "frozen(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
304 -1 0 1 1 1 1 0 "·ÑÇ" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
305 -1 0 1 1 1 1 0 "·ÑÇ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
306 -1 0 1 1 1 1 0 "º£¹·" 1 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
307 -1 0 1 1 1 1 0 "º£¹·£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
308 -1 0 1 1 1 1 0 "¸£ÍÃ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
309 -1 0 1 1 1 1 0 "¸£ÍÃ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
310 -1 0 1 1 1 1 0 "ËɸâÍÃ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
311 -1 0 1 1 1 1 0 "ËɸâÍÃ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
312 -1 0 1 1 1 1 0 " ʯ¾ÊÍÃ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
313 -1 0 1 1 1 1 0 "ʯ¾ÊÍÃ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
314 -1 0 1 1 1 1 0 "ËþÎÖ˹" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
315 -1 0 1 1 1 1 0 "ËþÎÖ˹(½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
316 -1 0 1 1 1 1 0 "À×ÄÉ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
317 -1 0 1 1 1 1 0 "À×ÄÉ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
318 -1 0 1 1 1 1 0 "°¢¿¨Ä·" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
319 -1 0 1 1 1 1 0 "°¢¿¨Ä·(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
320 -1 0 1 1 1 1 0 "¸ñÀ*¿Ë˹" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
321 -1 0 1 1 1 1 0 "¸ñÀ*¿Ë˹(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
322 -1 0 1 1 1 1 0 "¿²ÌØÁÖ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
323 -1 0 1 1 1 1 0 "¿²ÌØÁÖ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
324 -1 0 1 1 1 1 0 "Â忨" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
325 -1 0 1 1 1 1 0 "Â忨(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
326 -1 0 1 1 1 1 0 "Àö·Ò" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
327 -1 0 1 1 1 1 0 "Àö·Ò(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
328 -1 0 1 1 1 1 0 "²®¶÷" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
329 -1 0 1 1 1 1 0 "²®¶÷(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
330 -1 0 1 1 1 1 0 "¸ñÀö˹" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
331 -1 0 1 1 1 1 0 "¸ñÀö˹(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
332 -1 0 1 1 1 1 0 "²©À*±ö" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
333 -1 0 1 1 1 1 0 "²©À*±ö(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
334 -1 0 1 1 1 1 0 "¸¥ÁÖÌØ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
335 -1 0 1 1 1 1 0 "¸¥ÁÖÌØ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
336 -1 0 1 1 1 1 0 "À*¿Ë˹" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
337 -1 0 1 1 1 1 0 "À*¿Ë˹(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
338 -1 0 1 1 1 1 0 "°¢Àï˹" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
339 -1 0 1 1 1 1 0 "°¢Àï˹(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
340 -1 0 1 1 1 1 0 "ÀûË¹ÌØ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
341 -1 0 1 1 1 1 0 "ÀûË¹ÌØ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
342 -1 0 1 1 1 1 0 "ĪÀïŵ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
343 -1 0 1 1 1 1 0 "ĪÀïŵ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
344 -1 0 1 1 1 1 0 "˹ÆÕ¶ûÌØ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
345 -1 0 1 1 1 1 0 "˹ÆÕ¶ûÌØ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
346 -1 0 1 1 1 1 0 "±äÖÖÈË" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
347 -1 0 1 1 1 1 0 "±äÖÖÈË(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
348 -1 0 1 1 1 1 0 "ܽµÂ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
349 -1 0 1 1 1 1 0 "ܽµÂ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
409 -1 0 1 1 1 1 0 "º£ÎÖµÂ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
410 -1 0 1 1 1 1 0 "º£ÎÖµÂ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
411 -1 0 1 1 1 1 0 "°ØÀ¼Ææ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
412 -1 0 1 1 1 1 0 "°ØÀ¼Ææ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
413 -1 0 1 1 1 1 0 "»ô¿Ë" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
414 -1 0 1 1 1 1 0 "»ô¿Ë(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
415 -1 0 1 1 1 1 0 "¿¨ÄáÄ·" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
416 -1 0 1 1 1 1 0 "¿¨ÄáÄ·(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
417 -1 0 1 1 1 1 0 "Âü¶àÀ*" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
418 -1 0 1 1 1 1 0 "Âü¶àÀ*(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
419 -1 0 1 1 1 1 0 "ÍжûÌØ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
420 -1 0 1 1 1 1 0 "ÍжûÌØ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
421 -1 0 1 1 1 1 0 "õ¹å¾«Áé" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
422 -1 0 1 1 1 1 0 "õ¹å¾«Áé(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
423 -1 0 1 1 1 1 0 "²Ë×Ѿ«Áé" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
424 -1 0 1 1 1 1 0 "²Ë×Ѿ«Áé(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
425 -1 0 1 1 1 1 0 "Ó£»¨¾«Áé" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
426 -1 0 1 1 1 1 0 "Ó£»¨¾«Áé(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
427 -1 0 1 1 1 1 0 "¾ÞÈË" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
428 -1 0 1 1 1 1 0 "¾ÞÈË(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
429 -1 0 1 1 1 1 0 "ÃÍáï¾ÞÏñ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
430 -1 0 1 1 1 1 0 "ÃÍáï¾ÞÏó(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
431 -1 0 1 1 1 1 0 "ÎÖ¿Ë" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
432 -1 0 1 1 1 1 0 "ÎÖ¿Ë(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
433 -1 0 1 1 1 1 0 "³åÀËÃÃ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
434 -1 0 1 1 1 1 0 "³åÀËÃ㨽ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
435 -1 0 1 1 1 1 0 "ÓÎÓ¾ÃÃ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
436 -1 0 1 1 1 1 0 "ÓÎÓ¾Ãà (½ø»¯) " 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
437 -1 0 1 1 1 1 0 "DZˮÃÃ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
438 -1 0 1 1 1 1 0 "DZˮÃ㨽ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
439 -1 0 1 1 1 1 0 "¿¨ÃÅÌØ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
440 -1 0 1 1 1 1 0 "¿¨ÃÅÌØ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
441 -1 0 1 1 1 1 0 "³¤Ã¬Õ½Ê¿" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
442 -1 0 1 1 1 1 0 "³¤Ã¬Õ½Ê¿£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
443 -1 0 1 1 1 1 0 "¹*¼ýսʿ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
444 -1 0 1 1 1 1 0 "¹*¼ýսʿ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
445 -1 0 1 1 1 1 0 "Ìú´¸" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
446 -1 0 1 1 1 1 0 "Ìú´¸£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
447 -1 0 1 1 1 1 0 "Àï·Ç¶û" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
448 -1 0 1 1 1 1 0 "Àï·Ç¶û£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
449 -1 0 1 1 1 1 0 "°£Ê²" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
450 -1 0 1 1 1 1 0 "°£Ê²£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
451 -1 0 1 1 1 1 0 "ÄϹÏÃÃ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
452 -1 0 1 1 1 1 0 "ÄϹÏÃ㨽ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
453 -1 0 1 1 1 1 0 "¸ñË¹ÌØ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
454 -1 0 1 1 1 1 0 "¸ñË¹ÌØ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
455 -1 0 1 1 1 1 0 "ľÄËÒÁ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
456 -1 0 1 1 1 1 0 "ľÄËÒÁ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
457 -1 0 1 1 1 1 0 "¾Õ»¨" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
458 -1 0 1 1 1 1 0 "¾Õ»¨£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
459 -1 0 1 1 1 1 0 "·ãÒ¶" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
460 -1 0 1 1 1 1 0 "·ãÒ¶£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
461 -1 0 1 1 1 1 0 "ÒøÐÓ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
462 -1 0 1 1 1 1 0 "ÒøÐÓ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
463 -1 0 1 1 1 1 0 "¸ñË¹ÌØ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
464 -1 0 1 1 1 1 0 "ľÄËÒÁ£¨½ø»¯£©" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
480 -1 0 1 1 1 1 0 "Íæ¾ßÊ¿±ø" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
481 -1 0 1 1 1 1 0 "Íæ¾ßÊ¿±ø(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
482 -1 0 1 1 1 1 0 "Ê¥µ®Ê÷" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
483 -1 0 1 1 1 1 0 "Ê¥µ®Ê÷(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
484 -1 0 1 1 1 1 0 "Ñ©ÈË" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
485 -1 0 1 1 1 1 0 "Ñ©ÈË(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
486 -1 0 1 1 1 1 0 "ÀÖ¸£ºï" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
487 -1 0 1 1 1 1 0 "ÀÖ¸£ºï(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
488 -1 0 1 1 1 1 0 "DJºï" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
489 -1 0 1 1 1 1 0 "DJºï(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
490 -1 0 1 1 1 1 0 "ÍâÐǺï" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
491 -1 0 1 1 1 1 0 "ÍâÐǺï(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
492 -1 0 1 1 1 1 0 "СÇð±ÈÌØ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
493 -1 0 1 1 1 1 0 "СÇð±ÈÌØ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
494 -1 0 1 1 1 1 0 "ÇÉ¿ËÁ¦ÇúÆæ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
495 -1 0 1 1 1 1 0 "ÇÉ¿ËÁ¦ÇúÆæ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
496 -1 0 1 1 1 1 0 "ÐÒ¸£ÉÙÅ®" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
497 -1 0 1 1 1 1 0 "ÐÒ¸£ÉÙÅ®(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
498 -1 0 1 1 1 1 0 "ÌǹûÃÃ" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
499 -1 0 1 1 1 1 0 "ÌǹûÃÃ(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
500 -1 0 1 1 1 1 0 "°ô°ôÌÇÂèßä" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
501 -1 0 1 1 1 1 0 "°ô°ôÌÇÂèßä(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
502 -1 0 1 1 1 1 0 "´óÁ¦Ê¿" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
503 -1 0 1 1 1 1 0 "´óÁ¦Ê¿(½ø»¯)" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

end



now you can use all the muuns pets :D

Créditos:
Bladimir1

xcombor
12-24-2024, 04:37 AM
eu não consegui entender, de como eu coloco o IP no client xD

Farias
12-24-2024, 08:30 AM
eu não consegui entender, de como eu coloco o IP no client xD

Abre sua source ( Client ) e procura o main.cpp, nele, vc procura onde tem o IP, como mostra na imagem:

https://prnt.sc/4Ey2e89IyWvK

Só que no meu ta tudo zerado pq tirei pra te mostrar, mais vai ter um IP ai blza d;

alefmello157
12-25-2024, 09:07 PM
será possível fazer downgrade para season 6 ou 4 ? gostei do visual dela

Farias
12-27-2024, 01:05 PM
Olha, creio que sim, se for pela src, vai da um trampo, pois tem que ir desativando um monte de coisa, se for por dll, é mais facil, vc pode desativar muita coisa tbm d;

Mais acho que n compensa nessa versão, até pq tem muitas outras versões ai que vc pode fazer isso.

NarcoRP
12-28-2024, 01:49 PM
como lo compilo el main lo he compilado no regenerar main.exe

1 Dia:------- Atualizado -------

alguine tiene db para sql server 2014 R

paPanat9s1
01-03-2025, 02:12 AM
fix dark raven of dl?, dont give damage to mosnter.

Mentor
01-04-2025, 01:51 AM
André, é bom dar uma verificada e comparar em alguma source season12 que não tenha esse problema do corvo.

Mentor
01-04-2025, 02:54 AM
Isso mesmo, encontrei uma agora pouco e amanhã vou analisar profundamente. Hoje foquei em resolver o problema de não criar Corvo na NPC, não upar Itens na Chaos Machine e mais um monte de outros Mixes que não funcionavam. A correção é a seguinte:

Em Main.cpp do Cliente, busque por

SetCompleteHook(0xE9, 0x583799, &ChaosBoxDurationItens);

Coloque // na frente para comentar esta linha.

Feito isso, todos os Mix da Chaos Machine e a criação do Corvo voltam a funcionar normalmente.

Tem bastante coisa para concertar e até agora está fácil já que os erros parecerem terem sido feitos por alguém que colocou as mãos nesta Source antes de ela acabar sendo postada na net e esta pessoa estava fazendo coisas malucas kkk, creio que testes para ver no que iria dar e acabou bugando umas coisas.

Muito bom André! thumbup
De repente colocaram essas linhas nada haver de propósito pra zoar a source crying

paPanat9s1
01-04-2025, 05:41 AM
Alguns Itens importantes tiveram a criação na Chaos Machine bloqueada via Source, por exemplo a Blessed Sword, e pela descrição foi a pedido do dono do Servidor.

Reativar a criação destes Itens:

Em ChaosBox.cpp do GS busque por

https://i.imgur.com/qZdwL0o.png
https://perfectzone.com.br/image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASgAAAA7CAYAAAD IMheYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJc EhZcwAADsMAAA7DAcdvqGQAAAt7SURBVHhe7Z2/cuLIFsa/vs w4zcQ5WUCEpHu3hjKiWsSJpWSSSFwyBI6aIXrBNIhmLlOXFI6u 5tCQtXCdUlPsHjfoW gFrRarUYIvCN8z6 KqkFH/e 09Kn7yJxhQggBgiCIBvIv/QBBEERTIIEiCKKxkEARBNFYSKAIgmgsJFAEQTQWEiiCIBpLNYH aBuhOfET6cdSwbQN0Jwz Wj1Ylwi Xr9C9JWBTdJP7fZMY7CSIHjYt9v9LdFPIAiiIpUEKtnMgZ/v0NMNB2zfm94HATGOwa90yyuyvscIHPFYQIwFFv929DPORARfi uD c4yQnpG1DzbpItjK7 pDaO2DPQTYy3Qq4LUfGMT/FRUEKsL978CgbbrRbLYSroZYjAWm73XD2yB5WQHvrnGER2rSw3 QsIMYhPHgIxwJiPP0uD4rkZQX3CphvUhlKNht03rtYvdDqkTiN wwK1fsTs/QRD0yrEZJNPTzZhYA8jLBWTdculltO2Rmo5Y9m1byxnRWsvV6d lDGUkv3XBJgyt35fAul9c0Vjai74y L p9vOshPJ q9KXdMscyLEU/FlaDsCPEwz fkKCBE 4xd0Pio0g6iKsxIL/6gr l35clNhC4f0C4f0pv/7FhfuLJ0L1FBEL/qtyjiT8UjxmJFdn2h6 yBb 4sL9Re Tqb1QeLl hcLblasyhnLib 6 Pxl6v7Tv4RcI/MpFLM2VfSGEYSzy6BfFLyrWvmj /NMTyPna7LP4myu8P4WIv3mCf/Pkv13hfovTOpSxmeeDIMzYV1Dre4wwwI1x9WSwrR8xu K4q7F9c35wMfvKwL4a1g7KCqm4ovEQfpAbm6sbDK6W2LzkTiiy fcYKM/R3q4E ZpnthDGUkWzmWKorzashJu/z/fR Gu62hb0Pp26BIzyuXfCfihu w31R/PmuDTc7bPFZ8nc6I067jfnvwO1JfSeIPVaBiv47y904VW11cP6 9gBgLiB8f0xtgJ1QR/K8r8E9p0Fl84vubpi4vGyyv9oHs9LMwb2OJlCo uxpiIeNgzrsOln9X3G4TRAnlArUNMH4pWUmU2d614W7neNoifV vzH321U4H301SE1o9pzGT7jJVijv6w1Lm x2jrHX6Cv7 Ftx3hXo9l4Uxj0HDaA7jrce4t13jtov1OO/FsOGhfLTH6o7gard0Xm89s5PwJYPuEeZU5IgibQEV/jIAfb4wrpFLb1RCffwZGDwxs0sLmpxDezpj9fVALoy3S7dwu0J r/2yH2MELng3wjJbcgaZ0M4x 4UicAddvxdQX KXuTZWuvh knjpUaRM5ehVvHUJOrIRYfOrsxsIc5Bp9OXbFlf2bQx2zngywQ 7mD4KQZ/yYL1iq12X8p8luDZtqXO TNr7/u8bSQuDyZM aC2AboPG0xMr61tNoIgiDNiFiiCIIgGULrFIwiC N6QQBEE0VhIoAiCaCwkUARBNBYSKIIgGkstgfIZ7D9mTYAuA3z rSU0lgs/O82Pds5EE6DLWLH8mAbolfor8fF8jn4Gx9HOeMVSco6b5zeKzN 0kSoNtVU 0cj1Wggu4liEyCoLu/AfSbQL05GOsiULxls/1jRH6 7XPdVLKe3fhOrrAaSdBFHyGmyh/J9aYCQsTgx/5GSRvDPzQEAxF81ZeMgV2a0ES 1v8z TQ3R9o95Awx6YzQOqERq0DVxgEWArmL9BSSoIuuUT0SBN0WRp0 QQojdJ203Fa4 VNsCQ eQ7Z8leV7BdYH5k8yl9LRBx3OxelbG6wyx2I2rAkmAbmuOQbz3 iahc ASSAB9HHYRnaSuC3xqhE8r xxyr/pEPkSP9Vn6d9TAVAkLI3FtCQIgL 0Pl3jR3j6RjcXFMKrci hwNMG/lhbs3DeHNxsfNm4qe3kAIIWIuBFD8cJkzw4MQYbg/7vJ92dDbH/f0bB xEK5Sn1ruEKEHAVdN25E2BhRTjQiRDsKtYxOh8OCJMPQEAAFAu NnAs37I4wDyY4y5cCvasjpj7gqXh4J7XMQiFpyH8lhqV9vL1Sf 7tz8WCi rN bChbubrwKl/UzHzrlb6KepnO770NPOzxEL7mpjsLQXc1dAu4D29dvmKG1n30e 9TTvG62yHbNdwzDQGIQ74rGwebHN7Jkz PZrQy/kqlj7Qqy1tqzDOIkaByuCuQWSkQMGTX6RQ6aeZyoZe8dgxpA7Y T7A68Mw52YBj7pZeaDZbdjHsHFpVBHVR0L6HnnkiYu7K/nqCc2/X9/zFaLq5833TxWHnj8I49ZssFN6un7axp7ZdHwoir9ZjwjQGrT3F Z/p4UnM23 Xl8pjaPIx ne3RfZcdq MzvS7Nf5a5PZ1Dc1UN9f7LhJ2b lq4ViQVBKr2Fi cyn84qJz xGkDsz7AfN1S3CObltrOcAERAn19r5vZ6sQ5jHj7bYqj5ESC1s/WPtNB8jTH0pvst4nOEBNvCZkFF07bxaxfjAUlG5lL6aaN Qi4PWbf0Jsi5iv0WbpdXSh71NQfAvFgjhZjYFmwMpF5nXa VnJhAeVjjx4xcznurP3r4ProLYPa3g0G7t5ndmqWO/E6M1PDZ4fmwTK3p5IEY8zUa/VEIl GSxZDXOtGAHCu0cEKatQC2G87bVvw2gJVB2coN3e3AGOaUGl7Z NOEJEEXrA EMl7kXHeA1bPxLYFz3QGWm6NtdiL4/RV4FtuJq emygRD3D6mF6QeOHSGWMi4hnPdwbLS3ZbiuuW9SNsN4S1HuI8A JBssXY44F4/4PvE3G07bLfgg2SzhnhY0qXWdvQoV58E2t7VIAnwcAdyomsfhX HeAWR/jdixjnAmeV0Dn KdUKVaBkvf/ ekBIgbc2YE/V1CIfIbWfIBYDU72buEtR/hoesz17sDdGfq6EByy2Ui03FT3 xWUczOAqwYDkwDjmSEI2ZumwjaT a5OIfLRmg/wefEZfNU3rgaArN yL9Jn98c27rThLudIY/kJgo mPFmGp QxRPcYLT3c9sr9ObjRHZovdyrG66wuNp8dmodDcytXgsdewtH9 KL/SzxmPrLN3Cw/KnJTNQ/KMlWl1LdsrjE1F3/Pl0ILa2dbSU2NO8pzsO3eLwfVsj6nbbHtPlWJMRkXGAHYfdW9d x6bFBrT9sxq0djnPn6sEbfNtlQVuS2IkoSf39sVyu7Khl29DBl zdNIBjLpOhB253cSr72PNxPj2GUhYrsYyhdA4kpf48UG5HiX9L KL/O9PagxZlq qxsHmxzq5etOjiRlSnz1Sl12uehNEheoT27QBHEMZQFQ0spitx 5OU6gLgstAH8WXqtOs3Bl82N KKSQQBFnpfRpaeSVBcr2BvaCyVZlthv7WF6jTiFX1abroWp7lL COODuRz/B4a387kxLBZ4 4PUe8JyMJ0FXernphlX4Qr0Lkgz3envRHwiRQBEE0FutbPIIgi O8JCRRBEI2FBIogiMZCAkUQRGN5FYG6jDxSBEE0nVcRKIIgiHN QKlCRD/hBmrqXyc9uUSRT mbHs9VSEqTfR0uZtUDas5/a5FIFyzqy77b2fAYEsm7GgG6QVbIvfNRviAiCuAhKBQoAZnPgs/zlXOgBj1IA/BYwUX5Vh34qQlm2Au4CXri3G3 YaKCsPQAYbWR9IbAcVf RMUEQl4tVoLwJkGlLbypT CbACkBfWenk8wnVx9iexJp/qkJeGYIgLg rQBlJgKULxFrOgqqrJIIgiKocL1A9wFuiPI/NgTxSWb6g4CMM YRqUiWvDEEQF8fxAgVgGgMrJQjOushlp zdARgVg R3HBi10mPzAeApZU5CplnVMzASBHHZvJEfC6f//dR8EBtTuBIEcZnUWkE1iSTogjESJ4J4i7yRFRRBEG Ri19BEQTxdiGBIgiisZBAEQTRWEigCIJoLCRQBEE0FhIogiAaC wkUQRCNhQSKIIjG8j UAaLkO0NvBAAAAABJRU5ErkJggg==

Em seguida apenas comente o
return;
colocando // na frente dele.

Faça isso em todos os locais onde encontrar o //disabled for IconeMU

how to see this structures in ida? cant you help me whit it? i need custom npcs :( /*+79*/ char Unknown79; /*+80*/ char SocketSeedIndex[5];
/*+85*/ char SocketSphereLevel[5];
/*+90*/ char SocketSet;
BYTE gap01[5];
/*+96*/ char DurabilityState;
/*+97*/ char PeriodItem;
/*+98*/ char ExpiredItem;
/*+99*/ int ExpireDateConvert;
/*+103*/ int Unknown103;
} ObjectItem2, *lpItemObj;

paPanat9s1
01-07-2025, 02:54 AM
fix automaticé recovery hp? character recovery automatic hp if recive dmg.

vanov
01-07-2025, 11:51 AM
*Os Mapas no MapServerInfo devem ser corrigidos (se for usar o GameServer_CS), caso contrário, problemas em spawn de mobs acontecem, como nos de CryWolf, Loren e etc... que simplesmente não aparecem mesmo se adicionados no MonsterSetBase.


*Sistema Custom de Invasões chamado MonsterSpawn, você deve fazer uma pequena alteração na Source caso use um GS_CS, caso contrário, as mensagens de Início, Fim e etc... das Invasões ficarão sendo repetidas. Se quiser fazer algo rápido para concertar isso, no MonterSpawn.cpp do GS adicione um #if(GAMESERVER_TYPE!=1) antes das linhas gNotice.SendMapServerGroupMsg... e após um #endif, exemplo:


https://imgur.com/OzGh7x8

Não seria ruim se eles oferecessem soluções para:
*Os Mapas no MapServerInfo devem ser corrigidos (se for usar o GameServer_CS), caso contrário, problemas em spawn de mobs acontecem, como nos de CryWolf, Loren e etc... que simplesmente não aparecem mesmo se adicionais no MonsterSetBase.


*Sistema Custom de Invasões chamado MonsterSpawn, você deve fazer uma pequena alteração na Fonte caso use um GS_CS, caso contrário, as mensagens de Início, Fim e etc... das Invasões ficarão sendo repetidas. Se quiser fazer algo rápido para consertar isso, no MonterSpawn.cpp do GS adicione um #if(GAMESERVER_TYPE!=1) antes das linhas gNotice.SendMapServerGroupMsg... e após um #endif, exemplo:

vanov
01-07-2025, 02:01 PM
Meu Move.txt parece

//I Name Zen MinLvl MaxLvl MinRest MaxRest AccLvl Gate
16 "Arena" 0 1 * * * 0 50
48 "Event Square" 0 1 * * * 0 503
2 "Valley Loren" 0 1 * * * 0 103
3 "Lorencia" 0 1 * * * 0 17
4 "Noria" 0 1 * * * 0 27
5 "Elbeland" 0 1 * * * 0 267
6 "Elbeland 2" 0 1 * * * 0 268
7 "Elbeland 3" 0 1 * * * 0 269
8 "Devias" 0 1 * * * 0 22
9 "Devias 2" 0 1 * * * 0 72
10 "Devias 3" 0 1 * * * 0 73
11 "Devias 4" 0 1 * * * 0 74
12 "Vulcanus" 0 1 * * * 0 294
13 "Dungeon" 0 1 * * * 0 2
14 "Dungeon 2" 0 1 * * * 0 6
15 "Dungeon 3" 0 1 * * * 0 10
17 "LostTower" 0 1 * * * 0 42
18 "LostTower 2" 0 1 * * * 0 31
19 "LostTower 3" 0 1 * * * 0 33
20 "LostTower 4" 0 1 * * * 0 35
21 "LostTower 5" 0 1 * * * 0 37
22 "LostTower 6" 0 1 * * * 0 39
23 "LostTower 7" 0 1 * * * 0 41
24 "Atlans" 0 1 * * * 0 49
25 "Atlans 2" 0 1 * * * 0 75
26 "Atlans 3" 0 1 * * * 0 76
27 "Tarkan" 0 1 * * * 0 57
28 "Tarkan 2" 0 1 * * * 0 77
29 "Aida 1" 0 1 * * * 0 119
30 "Aida 2" 0 1 * * * 0 140
31 "KanturuRuins1" 0 1 * * * 0 138
32 "KanturuRuins2" 0 1 * * * 0 141
33 "KanturuRuins3" 0 1 * * * 0 334
34 "KanturuRelics" 0 1 * * * 0 139
35 "Icarus" 0 1 * * * 0 63
36 "Karutan 1" 0 1 * * * 0 335
37 "Karutan 2" 0 1 * * * 0 344
38 "Raklion" 0 1 * * * 0 287
39 "Acheron" 0 1 * * * 0 417
40 "Crywolf" 0 1 * * * 0 118
41 "Ferea" 0 1 * * * 0 509
42 "Swamp of Calm" 0 1 * * * 0 273
43 "Nixies Lake" 0 1 * * * 0 522
44 "DeepDungeon 1" 0 1 * * * 0 561
45 "DeepDungeon 2" 0 1 * * * 0 562
46 "DeepDungeon 3" 0 1 * * * 0 563
47 "DeepDungeon 4" 0 1 * * * 0 564
1 "DeepDungeon 5" 0 1 * * * 0 565
49 "SwampDarkness" 0 1 * * * 0 567
50 "pvp" 0 1 * * * 0 462
51 "k3" 0 1 * * * 0 591
//52 "d3" 0 1 * * * 1 10
end

Meu MapServerInfo parece

0
//ServerCode MapServerGroup InitSetVal IpAddress Port
0 0 1 Sip 55901
19 0 0 Sip 55919
end


1
//ServerCode NotMoveOption NextMap NextServerCode
0 0 9 19 // Devil Square 1
0 0 11 19 //Blood Castle 1
0 0 12 19 //Blood Castle 2
0 0 13 19 //Blood Castle 3
0 0 14 19 //Blood Castle 4
0 0 15 19 //Blood Castle 5
0 0 16 19 //Blood Castle 6
0 0 17 19 //Blood Castle 7
0 0 18 19 //Chaos Castle 1
0 0 19 19 //Chaos Castle 2
0 0 20 19 //Chaos Castle 3
0 0 21 19 //Chaos Castle 4
0 0 22 19 //Chaos Castle 5
0 0 23 19 //Chaos Castle 6
0 0 30 19 //Castle Siege
0 0 31 19 //Land of Trials
0 0 32 19 //Devil Square 2
0 0 34 19 //Crywolf
0 0 41 19 //Barracks
0 0 42 19 //Refuge
0 0 45 19 //Illusion Temple 1
0 0 46 19 //Illusion Temple 2
0 0 47 19 //Illusion Temple 3
0 0 48 19 //Illusion Temple 4
0 0 49 19 //Illusion Temple 5
0 0 50 19 //Illusion Temple 6
0 0 52 19 //Blood Castle 8
0 0 53 19 //Chaos Castle 7
0 0 59 19 //Chaos Castle 7
0 0 69 19 //Imperial Guardian 1
0 0 70 19 //Imperial Guardian 2
0 0 71 19 //Imperial Guardian 3
0 0 72 19 //Imperial Guardian 4
0 0 79 19 //Loren Market
0 0 82 19 //Double Goer Renew 1
0 0 83 19 //Double Goer Renew 2
0 0 84 19 //Double Goer Renew 3
0 0 85 19 //Double Goer Renew 4
0 0 86 19 //Double Goer Renew 5
0 0 88 19 //Double Goer Renew 7
0 0 89 19 //Double Goer Renew 8
0 0 90 19 //Double Goer Renew 9
0 0 92 19 //Acheron 2
0 0 96 19 //Deventer 2
0 0 97 19 //Chaos Castle final
0 0 98 19 //Chaos Castle final
0 0 99 19 //Chaos Castle final
//0 0 101 19 //Urk Mountain 2
//0 0 114 19 //Instance Zone
//0 0 115 19 //Labyrinth of Dimensions
//0 0 121 19 //Trial Area
19 1 9 -1
19 1 11 -1
19 1 12 -1
19 1 13 -1
19 1 14 -1
19 1 15 -1
19 1 16 -1
19 1 17 -1
19 1 18 -1
19 1 19 -1
19 1 20 -1
19 1 21 -1
19 1 22 -1
19 1 23 -1
19 1 30 -1
19 1 31 -1
19 1 32 -1
19 1 34 -1
19 1 41 -1
19 1 42 -1
19 1 45 -1
19 1 46 -1
19 1 47 -1
19 1 48 -1
19 1 49 -1
19 1 50 -1
19 1 52 -1
19 1 53 -1
19 1 59 -1
19 1 69 -1
19 1 70 -1
19 1 71 -1
19 1 72 -1
19 1 79 -1
19 1 82 -1
19 1 83 -1
19 1 84 -1
19 1 85 -1
19 1 86 -1
19 1 87 -1
19 1 88 -1
19 1 89 -1
19 1 90 -1
19 1 92 -1
19 1 96 -1
19 1 99 -1
//19 1 101 -1
//19 1 114 -1
//19 1 115 -1
//19 1 121 -1
end


e ainda não pode se mudar para Event Square e Valley of Loren

paPanat9s1
01-07-2025, 02:34 PM
paPanat9s1 (https://perfectzone.com.br/member.php?u=3123)
Está normal, sem Bug. A chance é de apenas 5% de recuperar todo o HP após sofrer um dano. Porcentagem das Asas/Capas.

vanov (https://perfectzone.com.br/member.php?u=4950)
Solução para o que? A solução é a coisa mais básica, faça o seu MapServerInfo.txt de acordo com o seu gosto mas corretamente.
Sobre o MonsterSpawn, é só seguir a orientação que passei.

OBS: Fora o Bug do Corvo não atacar, que eu já postei a correção, não encontrei mais nenhum Bug, apenas configurações erradas que
qualquer um pode refazer nos arquivos tendo paciência em verificar todos e testar, assim como venho fazendo a vários dias. Caso alguém encontre um Bug de verdade, é só postar aqui que eu irei verificar e tentar a correção.

Não entro em grupos de WhatsApp e não forneço suporte fora deste Fórum.

how to disable automatic recover hp? in game server character is 0 (DWHPRecoveryRate = 0)

but dont work, and if dont have equip item idem up hp automatic..

vanov
01-07-2025, 02:43 PM
paPanat9s1 (https://perfectzone.com.br/member.php?u=3123)
Está normal, sem Bug. A chance é de apenas 5% de recuperar todo o HP após sofrer um dano. Porcentagem das Asas/Capas.

vanov (https://perfectzone.com.br/member.php?u=4950)
Solução para o que? A solução é a coisa mais básica, faça o seu MapServerInfo.txt de acordo com o seu gosto mas corretamente.
Sobre o MonsterSpawn, é só seguir a orientação que passei.

OBS: Fora o Bug do Corvo não atacar, que eu já postei a correção, não encontrei mais nenhum Bug, apenas configurações erradas que
qualquer um pode refazer nos arquivos tendo paciência em verificar todos e testar, assim como venho fazendo a vários dias. Caso alguém encontre um Bug de verdade, é só postar aqui que eu irei verificar e tentar a correção.

Não entro em grupos de WhatsApp e não forneço suporte fora deste Fórum.

I cant move into Event Square and Valley of Loren, can you help ?

vanov
01-07-2025, 03:20 PM
Not work this


MapServerInfo.txt

***Hidden content cannot be quoted.***

Move.txt
***Hidden content cannot be quoted.***

Gate.txt
***Hidden content cannot be quoted.***

Not work Event Square and Valley of Loren

André
01-07-2025, 03:59 PM
Not work this



Not work Event Square and Valley of Loren

Você está fazendo algo errado, é a configuração que eu uso.

vanov
01-07-2025, 04:13 PM
Você está fazendo algo errado, é a configuração que eu uso.

Acho que não, pois todos os cartões funcionam, exceto os que mencionei


Você pode compartilhar seus arquivos? Deixe-me criar um teste com seus arquivos?

34 minutes:------- Atualizado -------


Você está fazendo algo errado, é a configuração que eu uso.
You cannot move at this map at the time get this text error

André
01-07-2025, 05:27 PM
Acho que não, pois todos os cartões funcionam, exceto os que mencionei


Você pode compartilhar seus arquivos? Deixe-me criar um teste com seus arquivos?

34 minutes:------- Atualizado -------


You cannot move at this map at the time get this text error

Revise os arquivos, olhe se estes mapas não estão configurados apenas para VIP ou algo assim. Copie e cole os arquivos exatamente como eu enviei. Confirme se o código do seu GS_CS está certo. Você tem que revisar tudo o que fez. Isso é configuração básica que você deve fazer, eu irei auxiliar em BUG's conforme eu puder, mas configuração é com cada usuário.

vanov
01-07-2025, 05:39 PM
Revise os arquivos, olhe se estes mapas não estão configurados apenas para VIP ou algo assim. Copie e cole os arquivos exatamente como eu enviei. Confirme se o código do seu GS_CS está certo. Você tem que revisar tudo o que fez. Isso é configuração básica que você deve fazer, eu irei auxiliar em BUG's conforme eu puder, mas configuração é com cada usuário.

I have only GS, GS CS i dont have, maybe that's the problem?

JinFer
01-07-2025, 05:50 PM
如何禁用自动恢复马力?在游戏服务器中角色为0(DWHPRecoveryRate = 0)

但不起作用,如果没有装备项目同上HP自动..
Data\Character\DefaultClassInfo <VitalityToLife>

3 minutes:------- Atualizado -------


我只有 GS,GS CS 我没有,也许这就是问题所在?
Me too, the file is missing: ChatServer GameServerCS

André
01-07-2025, 06:03 PM
I have only GS, GS CS i dont have, maybe that's the problem?

Sim, este é o problema. Estes mapas pertencem ao GS_CS. Você deve criar um ou mudar os mapas para serem do GS normal no arquivo MapServerInfo.txt.

André
01-07-2025, 06:07 PM
Data\Character\DefaultClassInfo <VitalityToLife>

3 minutes:------- Atualizado -------


Me too, the file is missing: ChatServer GameServerCS

Não.

Data\Character\DefaultClassInfo <VitalityToLife>
é a quantidade de HP que o personagem vai ganhar de acordo com a quantidade de pontos adicionados em Vitalidade.

Este MS não utiliza ChatServer e o GS_CS você deve criar e configurar o MapServerInfo.txt. Ao compilar a Source do GS selecione a opção Release_CS.

vanov
01-07-2025, 06:17 PM
Sim, este é o problema. Estes mapas pertencem ao GS_CS. Você deve criar um ou mudar os mapas para serem do GS normal no arquivo MapServerInfo.txt.

Can you share with us GameServerCS ?

33 minutes:------- Atualizado -------

without ChatServer GameServerCS there is no point in these files

vanov
01-07-2025, 07:29 PM
GameServer_CS compilado com o Dark Reaven fixado:

https://mega.nz/file/zE52SQBR#uXFIaxOlxXg3c4qjfcZYMa5fnDaaHjSwBHvrTQ2eU YM

MapServerInfo.txt configurado:

https://mega.nz/file/mYBWUJBR#Cd4Id7MV-fpiZH0iZURdkXrMxD1MMYcduYyoOBqBxeM

Thanks. I will appreciate if you send source code also.

I found some error in GameServer also
https://i.ibb.co/hDdJ4rw/Screenshot-15.png

André
01-07-2025, 07:38 PM
Thanks. I will appreciate if you send source code also.

I found some error in GameServer also
https://i.ibb.co/hDdJ4rw/Screenshot-15.png

A Source do GS_CS está no tópico, é só mudar na hora de Compilar. Mude de Release para Release_CS.
Na Source original do tópico você deve fazer o fix do Dark Reaven conforme eu expliquei. A minha Source eu não compartilho pois estou fazendo uma Season 16 e já possui muitas atualizações.

Esta mensagem é normal, só Log do spawn dos monstros especiais. Desativa na Source se você quiser.

vanov
01-07-2025, 07:52 PM
A Source do GS_CS está no tópico, é só mudar na hora de Compilar. Mude de Release para Release_CS.
Na Source original do tópico você deve fazer o fix do Dark Reaven conforme eu expliquei. A minha Source eu não compartilho pois estou fazendo uma Season 16 e já possui muitas atualizações.

Esta mensagem é normal, só Log do spawn dos monstros especiais. Desativa na Source se você quiser.

If you know it, could you send me a link to a thread where there are GateServerCS sources compatible with Season 13? I will apreciate. Thanks you !!!

André
01-07-2025, 08:08 PM
If you know it, could you send me a link to a thread where there are GateServerCS sources compatible with Season 13? I will apreciate. Thanks you !!!

Abra a Source que está na primeira página deste tópico e selecione Release para GameServer e Release_CS para GameServer_CS como mostra a imagem:

https://i.imgur.com/KTBPHVy.png

JinFer
01-07-2025, 08:10 PM
GS_CS源在主题中,编译时更改即可。从 Release 更改为 Release_CS。
在该主题的原始来源中,您必须按照我的解释修复 Dark Reaven。我不分享我的来源,因为我正在制作第 16 季,而且它已经有很多更新。

这个消息很正常,只是特殊的怪物生成日志。如果需要,请在源中禁用它。
Orb of Fire Blow.. After learning, there is no skill effect in the game

22 minutes:------- Atualizado -------

Q W E R Including using the right mouse button to click, it is not available

paPanat9s1
01-07-2025, 09:30 PM
Fix effect skill for multiple arrow and multiple shot of elf plis

vanov
01-07-2025, 09:52 PM
Abra a Source que está na primeira página deste tópico e selecione Release para GameServer e Release_CS para GameServer_CS como mostra a imagem:

https://i.imgur.com/KTBPHVy.png

The result should be GameServerCS.exe in Release_CS folder? Becouse now result is GameServer.exe
https://i.ibb.co/KNfsgwk/Screenshot-16.png
https://i.ibb.co/s2N599f/Screenshot-17.png

André
01-07-2025, 10:28 PM
Fix effect skill for multiple arrow and multiple shot of elf plis

Não estão bugadas. Olhe algumas páginas para trás sobre o que eu falei do Sistema de Anti-Lag. Na página 3.

https://i.imgur.com/MNO9LUw.png

https://i.imgur.com/XL0cXGv.png

André
01-07-2025, 10:45 PM
The result should be GameServerCS.exe in Release_CS folder? Becouse now result is GameServer.exe
https://i.ibb.co/KNfsgwk/Screenshot-16.png
https://i.ibb.co/s2N599f/Screenshot-17.png

É isso mesmo, coloque na pasta GameServerCS e execute. Se quiser, você pode mudar o nome para GameServerCS que não tem problema.

paPanat9s1
01-07-2025, 10:50 PM
Não.

Data\Character\DefaultClassInfo <VitalityToLife>
é a quantidade de HP que o personagem vai ganhar de acordo com a quantidade de pontos adicionados em Vitalidade.

Este MS não utiliza ChatServer e o GS_CS você deve criar e configurar o MapServerInfo.txt. Ao compilar a Source do GS selecione a opção Release_CS.

for my dont work fine, i test in s8 server is normal the upgrade automatic hp, in this server character never die, for hit the character upgrade automatic hp so fast..

André
01-07-2025, 11:11 PM
for my dont work fine, i test in s8 server is normal the upgrade automatic hp, in this server character never die, for hit the character upgrade automatic hp so fast..

Estes arquivos não são comuns, foram bastante customizados para PvP. Possui diversos arquivos de configuração com foco em PvP e também configurações via Source.

Uma das customizações que este MS possui é referente ao dano PvP onde quanto mais próximo um personagem estiver do outro maior será o dano causado.

Eu já testei praticamente tudo e ao meu ver está OK, só configurar ao seu gosto.

JinFer
01-07-2025, 11:39 PM
Where can I fix the gem stacking problem?

André
01-07-2025, 11:56 PM
Where can I fix the gem stacking problem?

Qual é o problema? Descreva melhor com detalhes.

JinFer
01-08-2025, 12:03 AM
有什么问题吗?请详细描述一下。
How many gems are picked up, The backpack only shows one.

André
01-08-2025, 12:05 AM
How many gems are picked up, The backpack only shows one.

Verifique o arquivo ItemStack.txt na pasta Data. Adicione o item nele corretamente.

paPanat9s1
01-08-2025, 12:29 AM
fix fourt skill tree?

vanov
01-08-2025, 10:41 AM
Verifique o arquivo ItemStack.txt na pasta Data. Adicione o item nele corretamente.
Could you help with the following errors
When buying an item from the store, the amount of "zen" (in-game currency) is not deducted.
In some locations, monsters do not drop anything.
Too much "zen" drops from monsters; the frequency of zen drops is high. How can I adjust it to reduce the amount of zen dropped?
https://i.ibb.co/xsWb1zS/Screenshot-18.png
In certain areas, only "zen" drops, and nothing else.
https://i.ibb.co/XWcmjzf/Screenshot-19.png

JinFer
01-08-2025, 03:35 PM
[QUOTE=vanov;5231]您能帮忙解决以下错误吗?
从商店购买物品时,不会扣除“zen”(游戏内货币)的金额。
在某些地方,怪物不会掉落任何东西。
怪物掉落太多“禅宗”;禅宗掉落的频率很高。如何调整以减少 zen 掉落量?
https://i.ibb.co/xsWb1zS/Screenshot-18.png
在某些区域,只有“禅”掉落,没有其他。
https://i.ibb.co/XWcmjzf/Screenshot-19.png [/引用]
This requires setting Data

André
01-08-2025, 06:01 PM
fix fourt skill tree?

Sim, fixei 100%.

https://i.imgur.com/EvqRGTn.png

vanov
01-08-2025, 06:51 PM
4 minutes:------- Atualizado -------


Abra a Source que está na primeira página deste tópico e selecione Release para GameServer e Release_CS para GameServer_CS como mostra a imagem:

https://i.imgur.com/KTBPHVy.png

When i build Release_CS and run GameServer.exe get this error
https://i.ibb.co/j337hHq/Screenshot-17.png

paPanat9s1
01-08-2025, 07:42 PM
Sim, fixei 100%.

https://i.imgur.com/EvqRGTn.png
can you share plis

220alexandre
01-08-2025, 10:55 PM
to tentando fixar ela tambem, consegui fazer a parte de pegas as skills, porem alguams ficam bugadas e as passivas n puxa nenhuma

4 minutes:------- Atualizado -------


Sim, fixei 100%.

https://i.imgur.com/EvqRGTn.png

eu tentei fixar tambem, porem nao consigo usar algumas skills, elas bugam e as passivas nao consigo pegar tambem

maniacoo
01-08-2025, 11:38 PM
Sim, fixei 100%.

https://i.imgur.com/EvqRGTn.png

Compartilha com a comunidade meu caro

André
01-09-2025, 02:47 AM
to tentando fixar ela tambem, consegui fazer a parte de pegas as skills, porem alguams ficam bugadas e as passivas n puxa nenhuma

4 minutes:------- Atualizado -------



eu tentei fixar tambem, porem nao consigo usar algumas skills, elas bugam e as passivas nao consigo pegar tambem

Sim, tem que fazer toda a parte das Skills da Tree e seus Efeitos de Shock, Stun e etc..

André
01-09-2025, 02:48 AM
Compartilha com a comunidade meu caro

Meu presente foi o Fix do Corvo, já está bom :eek:

InFamous
01-09-2025, 05:08 PM
https://i.imgur.com/KL38LfE.jpeg

MASTER SKILL TREE 4º CLASSE

vanov
01-09-2025, 06:03 PM
https://i.imgur.com/KL38LfE.jpeg

MASTER SKILL TREE 4º CLASSE

Can you share with source code ?

InFamous
01-10-2025, 06:30 PM
skill files

**Hidden Content: Check the thread to see hidden data.**


CSkill* CSkillManager::GetSkill(LPOBJ lpObj, int index) // OK{
index = ((index == SKILL_NOVA_START) ? SKILL_NOVA : index);
index = ((index == MASTER_SKILL_ADD_NOVA_START_IMPROVED) ? SKILL_NOVA : index);


for (int n = 0; n < MAX_SKILL_LIST; n++)
{
if (lpObj->Skill[n].IsSkill() != 0)
{
if (lpObj->Skill[n].m_index == index || lpObj->Skill[n].m_skill == index)
{
gSkillManager.GCSkillAddSend(lpObj->Index, n, index, 0, 0);
return &lpObj->Skill[n];
}
}
}


return 0;
}


skillManager.cpp


void MasterSkillTree_4th::CGMasterSkillRecv(PMSG_FOR_MA STER_SKILL_RECV* lpMsg, int aIndex) // OK
{
//return; //disabled until full implementation and test of skills


LPOBJ lpObj = &gObj[aIndex];


if (gObjIsConnectedGP(aIndex) == 0)
{
return;
}


FOR_MASTER_SKILL_INFO ForMasterSkillTreeInfo;


if (this->GetInfo(lpObj->Class,lpMsg->ForMasterSkill,lpMsg->Group, &ForMasterSkillTreeInfo) == 0)
{
return;
}


if (lpObj->SkillEnhanceTreePoints < ForMasterSkillTreeInfo.m_ForMasterSkillData.NeedPo int)
{
return;
}


CSkill* lpForMasterSkill = gSkillManager.GetForMasterSkill(lpObj, ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D,lpMsg->Group);


if (lpForMasterSkill == 0)
{
if (this->CheckParentSkill(lpObj, &ForMasterSkillTreeInfo)==0)
{
return ;
}
if (this->CheckForMasterSkillGroup(lpObj, lpMsg->Group, lpMsg->Line, &ForMasterSkillTreeInfo) == 0)
{
return;
}
if (this->ReplaceSkill(lpObj, ForMasterSkillTreeInfo.m_ForMasterSkillData.NeedPo int, &ForMasterSkillTreeInfo) == 0)
{
return;
}


gSkillManager.AddForMasterSkill(lpObj, ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D, ForMasterSkillTreeInfo.m_ForMasterSkillData.NeedPo int, ForMasterSkillTreeInfo.m_ForMasterSkillData.Group) ;
}
else
{
if ((lpForMasterSkill->m_level+1) > ForMasterSkillTreeInfo.m_ForMasterSkillData.MaxPoi nt)
{
return;
}
if (this->ReplaceSkill(lpObj, lpForMasterSkill->m_level + 1, &ForMasterSkillTreeInfo) == 0)
{
return;
}




lpForMasterSkill->Set1(lpObj->Index, ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D, (lpForMasterSkill->m_level + 1),ForMasterSkillTreeInfo.m_ForMasterSkillData.Gro up);
}


gSkillManager.GCSkillAddSend(lpObj->Index, gSkillManager.GetSkillSlot(lpObj, ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D), ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D, 0, 0);


gSkillManager.GCSkillListSend(lpObj, 0);


lpObj->SkillEnhanceTreePoints -= ForMasterSkillTreeInfo.m_ForMasterSkillData.NeedPo int;


this->GCAddForMasterSkill(lpObj, &ForMasterSkillTreeInfo);


gObjectManager.CharacterCalcAttribute(aIndex);


//this->GCMasterSkillSend(aIndex, 0, 0, lpObj->MasterPoint, lpMsg->MasterSkill, lpMsg->MasterEmpty);
//this->GCMasterInfoSend(lpObj);
}

paPanat9s1
01-11-2025, 05:00 AM
skill files

***Hidden content cannot be quoted.***

fix for master skill tree all opcao de skill aprimorada passiva and opcao de debuff aprimorado pasivva

fix double goer event, i cant enter to the event but never start

3us0hb0m
01-12-2025, 02:33 PM
so uma observação nada contra André (https://perfectzone.com.br/member.php?u=230)
, dessa maneira ai e que vao vender mesmo os fix depois de remover so tem quem ja pegou ai que vai virar comercio mesmo

André
01-12-2025, 03:46 PM
so uma observação nada contra André (https://perfectzone.com.br/member.php?u=230)
, dessa maneira ai e que vao vender mesmo os fix depois de remover so tem quem ja pegou ai que vai virar comercio mesmo

Vão não, logo vou postar o meu repack sem limites como sempre, com os meus fixes, afinal, estavam se aproveitando de quem busca um MS para por online sem esses bugs e bloqueios. Porém, códigos eu não posto mais.

Mentor
01-13-2025, 01:32 AM
Atitude lamentável.

Mentor
01-13-2025, 02:02 AM
O Léo fez um compartilhamento da source atualizada dele em uma outra comunidade e estou postando aqui para quem quiser utilizar:

Saudações, amigos!

Segue meu release oficial, do meu código oficial, para evitar monopólios e uso de código malicioso espalhado por aí.

Não tenho apego com estes arquivos ou configurações, ou códigos... mas também não vou poder acompanhar o tópico e ajudar nos possíveis problemas que encontrarem.
Esses códigos "vazaram" justamente porque eu liberei para alguns contatos que pediram, e que resolveram liberar. Devem gostar de liberar tudo pra todos cheesyy2

Importante ter em mente que tem muita coisa modificada no código em relação a tudo que é original.
Tem o corvo desativado, tem o sistema elemental desativado parcialmente, bem como tem fórmulas diferentes para o sistema Boss, tem magias apropriadas para PvP, alteradas para Alvo fixo e Range, tem fórmulas diferentes, tem sistema de controle de velocidade de hits e potions via servidor, sistema de sockets, asas level 4, maestrias dos itens "Ruud" e etc., tudo modificado... enfim, tem MUITA COISA diferente do original, adaptado para o IconeMU.
Vocês terão que habilitar o que está desabilitado conforme seu gosto

Você pode consultar algumas especificidades do IconeMU aqui: https://forum.iconemu.com/forum-6.html
Neste mesmo fórum existe algum changelog e outras informações em geral que podem ser interessantes pra quem pretende se aprofundar nestes arquivos.

Espero que façam bom uso do código, para aprender, para ajudar a comunidade, para ser independente, para abrir seu servidor, ou até para ganhar dinheiro de forma honesta, trabalhando com eles para também servir a quem precisa de ajuda técnica.

Source GameServer, última versão:
https://iconemu.com/GameServer.zip (https://iconemu.com/GameServer.zip)

Source DataServer:
https://iconemu.com/DataServer.zip (https://iconemu.com/DataServer.zip)

Source ConnectServer:
https://iconemu.com/ConnectServer.zip (https://iconemu.com/ConnectServer.zip)

Source Joinserver:
https://iconemu.com/JoinServer.zip (https://iconemu.com/JoinServer.zip)

Source da DLL do Client:
https://iconemu.com/Main.zip (https://iconemu.com/Main.zip)

Arquivos de configuração atuais do IconeMU:
https://iconemu.com/MuServer.zip (https://iconemu.com/MuServer.zip)

Editors:
https://iconemu.com/Editors.zip (https://iconemu.com/Editors.zip)

Util (bibliotecas para GameServer e Cliente)
https://iconemu.com/Util.zip (https://iconemu.com/Util.zip)

beibei
01-13-2025, 02:13 AM
@Mentor (https://perfectzone.com.br/member.php?u=1)
can share GetMainInfo.exe .thank you!

paPanat9s1
01-16-2025, 03:51 AM
fix bug visual inventory items and oficina custom?

André
01-16-2025, 12:32 PM
fix bug visual inventory items and oficina custom?

Qual Bug? Descreva, coloque detalhes.

André
01-16-2025, 01:34 PM
Como estou sem tempo para finalizar um Repack com correções devido ao meu retorno ao trabalho :(, irei recolocar os Fixes novamente neste tópico.

SEMPRE LEIAM TODAS AS PÁGINAS PARA ENCONTRAR POSSÍVEIS FIXES E CUIDADO COM "VENDEDORES PICARETAS" QUE SÓ QUEREM SE APROVEITAR!

Fix Dark Reaven (Corvo) não causar dano:

Em DarkSpirit.cpp no GS

Busque por:


bool CDarkSpirit::Attack(LPOBJ lpObj, LPOBJ lpTarget, CSkill* lpSkill, bool send, BYTE flag, BYTE action) // OK

Substitua tudo por:


bool CDarkSpirit::Attack(LPOBJ lpObj,LPOBJ lpTarget,CSkill* lpSkill,bool send,BYTE flag,BYTE action) // OK{
#pragma region ATTACK_CHECK


if(lpObj->Index == lpTarget->Index)
{
return 0;
}


if(lpObj->Type == OBJECT_USER && gObjIsConnectedGP(lpObj->Index) == 0)
{
return 0;
}


if(lpTarget->Type == OBJECT_USER && gObjIsConnectedGP(lpTarget->Index) == 0)
{
return 0;
}


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


#if(GAMESERVER_UPDATE>=402)


if(gDuel.GetDuelArenaBySpectator(lpObj->Index) != 0 || gDuel.GetDuelArenaBySpectator(lpTarget->Index) != 0)
{
return 0;
}


#endif


if(gCrywolf.GetCrywolfState() == CRYWOLF_STATE_READY || gCrywolf.GetCrywolfState() == CRYWOLF_STATE_END)
{
if(lpTarget->Type == OBJECT_MONSTER && lpTarget->Map == MAP_CRYWOLF)
{
return 0;
}
}


if(lpObj->GuildNumber > 0 && lpObj->Guild != 0 && lpObj->Guild->WarState != 0)
{
if(lpObj->Guild->WarType == 1 && GetBattleSoccerGoalMove(0) == 0)
{
return 1;
}


if(lpObj->Guild->WarType == 0 && lpTarget->Type == OBJECT_MONSTER)
{
return 0;
}
}


if(lpTarget->Type == OBJECT_NPC || lpTarget->Live == 0 || lpTarget->State != OBJECT_PLAYING || lpTarget->Teleport != 0)
{
return 0;
}


if(lpTarget->Type == OBJECT_MONSTER)
{

if((lpTarget->Class >= 100 && lpTarget->Class <= 110) || lpTarget->Class == 523) // Trap
{
return 0;
}


if(lpTarget->Class == 221 || lpTarget->Class == 222) // Siege
{
return 0;
}
}


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
{
if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
if(lpObj->SummonIndex == lpTarget->Index)
{
return 0;
}
}
}


int SummonIndex = lpObj->Index;


if(lpObj->Type == OBJECT_MONSTER && OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
SummonIndex = lpObj->SummonIndex;
}


int SummonTargetIndex = lpTarget->Index;


if(lpTarget->Type == OBJECT_MONSTER && OBJECT_RANGE(lpTarget->SummonIndex) != 0)
{
SummonTargetIndex = lpTarget->SummonIndex;
}


if(gAttack.CheckPlayerTarget(&gObj[SummonIndex],&gObj[SummonTargetIndex]) == 0)
{
return 0;
}


#pragma endregion


#pragma region ATTACK_RETURN


int skill = ((lpSkill==0)?SKILL_NONE:lpSkill->m_skill);


if(lpObj->Type == OBJECT_USER)
{
lpObj->HPAutoRecuperationTime = GetTickCount();
lpObj->MPAutoRecuperationTime = GetTickCount();
lpObj->BPAutoRecuperationTime = GetTickCount();
lpObj->SDAutoRecuperationTime = GetTickCount();
}


if(lpTarget->Type == OBJECT_USER)
{
lpTarget->HPAutoRecuperationTime = GetTickCount();
lpTarget->MPAutoRecuperationTime = GetTickCount();
lpTarget->BPAutoRecuperationTime = GetTickCount();
lpTarget->SDAutoRecuperationTime = GetTickCount();
}


if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonSetEnemy(lpObj,lpTarget->Index);
}


if(lpObj->Type == OBJECT_USER)
{
gDarkSpirit[lpObj->Index].SetTarget(lpTarget->Index);
}


bool duel = gDuel.CheckDuel(lpObj,lpTarget);


if(lpObj->Type == OBJECT_USER && duel != 0)
{
lpObj->DuelTickCount = GetTickCount();
}


if(lpTarget->Type == OBJECT_USER && duel != 0)
{
lpTarget->DuelTickCount = GetTickCount();
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDE R_OF_PROTECTION) != 0 && lpSkill == 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDE R_OF_PROTECTION) != 0 && lpSkill != 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_PHYS I_DAMAGE_IMMUNITY) != 0 && lpSkill == 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MAGI C_DAMAGE_IMMUNITY) != 0 && lpSkill != 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->Type == OBJECT_MONSTER)
{
if(lpTarget->Class == 200 && lpSkill == 0)
{
gObjMonsterStateProc(lpTarget,6,lpObj->Index,0);
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->Class == 200 && lpSkill != 0)
{
gObjMonsterStateProc(lpTarget,7,lpObj->Index,0);
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONS TER_PHYSI_DAMAGE_IMMUNITY) != 0 && skill == SKILL_NONE)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONS TER_MAGIC_DAMAGE_IMMUNITY) != 0 && skill != SKILL_NONE)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->MonsterSkillElementOption.CheckImmuneTime() != 0)
{
if(lpTarget->MonsterSkillElementOption.m_SkillElementImmuneNumb er == skill)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}
}
}


#pragma endregion


#pragma region DAMAGE_CALC


flag = 0;


BYTE miss = 0;


WORD effect = 0;


if((lpObj->Type != OBJECT_USER || lpTarget->Type != OBJECT_USER) && this->MissCheck(lpObj,lpTarget,lpSkill,send,&miss) == 0)
{
return 1;
}


if((lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER) && gAttack.MissCheckPvP(lpObj,lpTarget,lpSkill,send,0 ,&miss) == 0)
{
return 1;
}


long long defense = this->GetTargetDefense(lpObj,lpTarget,&effect);


long long damage = this->GetAttackDamage(lpObj,lpTarget,lpSkill,&effect,defense);


if(miss != 0)
{
damage = (damage*30)/100;
}


if(action != 0)
{
damage = (damage*60)/100;
}


for(int n=0;n < MAX_DAMAGE_REDUCTION;n++)
{
damage -= (damage*lpTarget->DamageReduction[n])/100;
}


if(lpTarget->EffectOption.AddDamageReduction > 0)
{
damage -= (damage*lpTarget->EffectOption.AddDamageReduction)/100;
}


if((GetTickCount()-lpTarget->ShieldDamageReductionTime) < ((DWORD)(gServerInfo.m_DefenseTimeConstA*1000)))
{
damage -= (damage*lpTarget->ShieldDamageReduction)/100;
}


gAttack.WingSprite(0,lpTarget,&damage);


gAttack.HelperSprite(0,lpTarget,&damage);


int MinDamage = (lpObj->Level+lpObj->MasterLevel)/10;


MinDamage = ((MinDamage<1)?1:MinDamage);


damage = ((damage<MinDamage)?MinDamage:damage);


this->DarkSpiritSprite(lpObj,damage);


gAttack.DamageSprite(lpTarget,damage);


#if(GAMESERVER_UPDATE>=602)


if((GetLargeRand()%100) < gMasterSkillTree.GetMasterSkillValue(lpObj,MASTER_ SKILL_ADD_DARK_SPIRIT_DOUBLE_DAMAGE_RATE))
{
effect |= 0x40;
damage += damage;
}


#endif


#pragma endregion


#pragma region DAMAGE_CONFIG


if(lpObj->Type == OBJECT_USER)
{
if(lpTarget->Type == OBJECT_USER)
{
damage = (damage*gServerInfo.m_GeneralDamageRatePvP)/100;


damage = (damage*gServerInfo.m_DamageRatePvP[lpObj->Class])/100;


damage = (damage*gServerInfo.m_DamageRateTo[lpObj->Class][lpTarget->Class])/100;


if(duel != 0)
{
damage = (damage*gServerInfo.m_DuelDamageRate)/100;
}
else if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
{
damage = (damage*gServerInfo.m_GensDamageRate)/100;
}
else if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
{
damage = (damage*gServerInfo.m_ChaosCastleDamageRate)/100;
}
else if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
{
damage = (damage*gServerInfo.m_IllusionTempleDamageRate)/100;
}
}
else
{
damage = (damage*gServerInfo.m_GeneralDamageRatePvM)/100;


damage = (damage*gServerInfo.m_DamageRatePvM[lpObj->Class])/100;
}
}


#pragma endregion


#pragma region DAMAGE_FINISH


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
{


}


damage = ((damage<0)?0:damage);


#pragma endregion


#pragma region DAMAGE_APPLY


int ShieldDamage = 0;


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER)
{
ShieldDamage = gAttack.GetShieldDamage(lpObj,lpTarget,damage);


if(lpTarget->Life < (damage-ShieldDamage))
{
lpTarget->Life = 0;
}
else
{
lpTarget->Life -= damage-ShieldDamage;
}


if(lpTarget->Shield < ShieldDamage)
{
lpTarget->Shield = 0;
}
else
{
lpTarget->Shield -= ShieldDamage;
}
}
else
{
if(lpTarget->Life < damage)
{
lpTarget->Life = 0;
}
else
{
lpTarget->Life -= damage;
}
}


if(lpTarget->Type == OBJECT_MONSTER)
{
lpTarget->LastAttackerID = lpObj->Index;


gObjAddMsgSendDelay(lpTarget,0,lpObj->Index,100,0);


if(lpTarget->CurrentAI != 0)
{
lpTarget->Agro.IncAgro(lpObj->Index,(damage/50));
}
}


#pragma endregion


#pragma region CHECK_SELF_DEFENSE


if(damage > 0)
{
if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER && lpObj->Index != lpTarget->Index)
{
bool CheckSelfDefense = 1;


if(effect == 4)
{
CheckSelfDefense = 0;
}


if(gDuel.CheckDuel(lpObj,lpTarget) != 0)
{
CheckSelfDefense = 0;
}

if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
{
CheckSelfDefense = 0;
}

if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
{
CheckSelfDefense = 0;
}


if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
{
CheckSelfDefense = 0;
}

if(gMapManager.GetMapNonOutlaw(lpObj->Map) != 0)
{
CheckSelfDefense = 0;
}


if(CheckSelfDefense != 0)
{
gObjCheckSelfDefense(lpObj,lpTarget->Index);
}
}


gAttack.ArmorDurabilityDown(lpObj,lpTarget);
}


lpObj->Rest = 0;


#pragma endregion


#pragma region ATTACK_FINISH


if(damage > 0)
{
gEffectManager.DelEffect(lpTarget,EFFECT_SLEEP);


if(lpTarget->Type == OBJECT_USER)
{
if(effect != 4)
{
if((lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect) > 0)
{
gObjAddMsgSendDelay(lpTarget,10,lpObj->Index,10,((damage*(lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect))/100));
}

if((GetLargeRand()%100) < lpTarget->DefensiveFullBPRestoreRate)
{
lpTarget->BP = lpTarget->MaxBP+lpTarget->AddBP;
GCManaSend(lpTarget->Index,0xFF,(int)lpTarget->Mana,lpTarget->BP);
}
}


int effect = 1;
}


gObjectManager.CharacterLifeCheck(lpObj,lpTarget,( damage-ShieldDamage),0,flag,effect,skill,ShieldDamage/*,0*/);
}
else
{
GCDamageSend(lpObj->Index,lpTarget->Index,0,0,effect,0);
}


if(lpObj->Type == OBJECT_USER && lpObj->Life <= 0 && lpObj->CheckLifeTime <= 0)
{
lpObj->AttackObj = lpTarget;
lpObj->AttackerKilled = ((lpTarget->Type==OBJECT_USER)?1:0);
lpObj->CheckLifeTime = 3;
}


#pragma endregion


return 1;
}

Fix NPC em Lorencia não aceitar itens de combinação para Criar Dark Reaven (Corvo) e Dark Horse (Cavalo) e também a Chaos Machine:

Em Main.cpp do Cliente:

Busque por:


SetCompleteHook(0xE9, 0x583799, &ChaosBoxDurationItens);

Apenas coloque // para comentar e desativar esta linha.

Fix Arquivos de Configurações não aplicarem os efeitos no GS:

Alguns arquivos do GameServer estão com falta do end em seus respectivos finais ou colunas, verifique na Source buscando pelos trechos onde
estão programadas as leituras destes arquivos que não possuem o end e confirme a necessidade dele. Na programação do GameServer não está
incluído um alerta para a má leitura dos arquivos decorrente da falta de caracteres ou má colocação deles, desta forma, o GS inicia como se estivesse tudo bem porém não aplica as configurações do arquivo com erro.
Exemplo de arquivo com erro que necessita colocação do end:
SkillBlock.txt na pasta Data/Skill do MuServer.

Master Skill Tree 4:

Como esta Source não é de fato uma Season 13, mas sim um Upgrade de Season, está faltando a finalização da Master Skill Tree 4 e suas respectivas Skills. Eu não tenho como disponibilizar o código pois eu apenas fui montando o sistema durante vários dias e isso envolveu diversos arquivos e linhas de códigos. A dica que dou é que todo o sistema da Tree 4 fica basicamente nos arquivos SkillManager, MasterSkillTree_4th, Attack e Skill da Source do GS.

Ao contrário do que falaram algumas páginas atrás neste tópico, NÃO COPIE E COLE ARQUIVOS DE OUTRAS TEAMS como MuDev e etc..., nenhum destes arquivos, como o FormulaData.txt, é compatível com esta Source e conforme informei logo acima, o GS não acusa o arquivo incorreto na leitura e ao usar este arquivo de outra Team que eu citei, a única coisa que irá acontecer é a Tree 4 bugar não informando os valores corretos adquiridos por cada ponto adicionado e também não atualizar os respectivos valores. Use os arquivos originais do MuServer pois eles estão OK para a Master Skill Tree 4, sendo necessária mudanças apenas se você quiser modificar a quantidade de pontos necessários e etc...

Para ativar esta Master Skill Tree 4, apenas busque por:


return; //disabled until full implementation and test of skills

Coloque // na frente do return;

Não é necessário fazer absolutamente mais nada na Source para que esta Tree funcione.
Logo após ative no arquivo GameServerInfo - Common.dat no GS deixando assim ForMasterSkillTree = 1.

Fix não Salvar Skills da Master Skill Tree 4:

Em MasterSkillTree_4th.cpp do GS busque por:
case FOR_MASTER_SKILL_ADD_SHOCKING_BOOM : if ((value = gSkillManager.AddSkill(lpObj, SKILL_SHOCKING_BOOM, 0)) >= 0)
{
gSkillManager.GCSkillAddSend(lpObj->Index, value, SKILL_SHOCKING_BOOM, 0, 0);
}

break;

Esta será a sua referência.
Repare que as outras Skills da Tree 4 não possuem nada disso e agora cabe a você fazer de cada uma tendo atenção nos respectivos nomes das Skills.
OBS: Como eu falei, as mudanças e correções que eu tive que realizar foram muitas em diversos arquivos, mas pelo o que me recordo, o Fix para este caso é apenas este.

Não edite as Skills dos personagens no Banco de Dados, para testes crie um personagem para testar cada Skill. No Banco de Dados a inserção ocorre em diversos locais e editar irá bugar o char fazendo com que você se atrapalhe ainda mais.

Algumas imagens das Skills em funcionamento:

Shock
https://i.imgur.com/2sF7dz8.png

Bleeding
https://i.imgur.com/V1cZcDM.png
Poison
https://i.imgur.com/AM3D8lf.png

---Por enquanto é isso. Espero que ajude alguém a desenvolver o seu projeto e infelizmente não tenho previsão de retornar o desenvolvimento devido ao fim do recesso no trabalho. Sempre que eu puder irei auxiliar quem precisar de ajuda.

paPanat9s1
01-16-2025, 04:51 PM
Qual Bug? Descreva, coloque detalhes.

oficina, dont see option for add items in npc and dont see ruud and coin, npc ever is 0.. and inventory visual bug in item, pentagram items, etc you need reload or use command /limparinv

André
01-16-2025, 05:17 PM
oficina, dont see option for add items in npc and dont see ruud and coin, npc ever is 0.. and inventory visual bug in item, pentagram items, etc you need reload or use command /limparinv

Não tenho nenhum deste Bug's aqui. Use o cliente deste Servidor https://iconemu.com/#void .

Mentor
01-16-2025, 05:43 PM
Muito bom André thumbup
Não suma do fórum não cool

paPanat9s1
01-17-2025, 12:27 AM
Não tenho nenhum deste Bug's aqui. Use o cliente deste Servidor https://iconemu.com/#void .

tanks now work perfect

any cant help me,how to see struc (gaps) in ida pro? or how configue it for see it?

André
01-17-2025, 01:25 AM
tanks now work perfect

any cant help me,how to see struc (gaps) in ida pro? or how configue it for see it?

Assista este vídeo Tutorial, será mais fácil para você pois explicar por texto é complicado:

https://www.youtube.com/watch?v=3fDOk8Q9Fq0

paPanat9s1
01-17-2025, 03:00 AM
Assista este vídeo Tutorial, será mais fácil para você pois explicar por texto é complicado:

https://www.youtube.com/watch?v=3fDOk8Q9Fq0

It does not explain how to create, see that to create that part :( I need to see what it shows at minute 12:39 in ida pro

francis865
01-17-2025, 06:29 AM
Como estou sem tempo para finalizar um Repack com correções devido ao meu retorno ao trabalho :(, irei recolocar os Fixes novamente neste tópico.

SEMPRE LEIAM TODAS AS PÁGINAS PARA ENCONTRAR POSSÍVEIS FIXES E CUIDADO COM "VENDEDORES PICARETAS" QUE SÓ QUEREM SE APROVEITAR!

Fix Dark Reaven (Corvo) não causar dano:

Em DarkSpirit.cpp no GS

Busque por:


bool CDarkSpirit::Attack(LPOBJ lpObj, LPOBJ lpTarget, CSkill* lpSkill, bool send, BYTE flag, BYTE action) // OK

Substitua tudo por:


bool CDarkSpirit::Attack(LPOBJ lpObj,LPOBJ lpTarget,CSkill* lpSkill,bool send,BYTE flag,BYTE action) // OK{
#pragma region ATTACK_CHECK


if(lpObj->Index == lpTarget->Index)
{
return 0;
}


if(lpObj->Type == OBJECT_USER && gObjIsConnectedGP(lpObj->Index) == 0)
{
return 0;
}


if(lpTarget->Type == OBJECT_USER && gObjIsConnectedGP(lpTarget->Index) == 0)
{
return 0;
}


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


#if(GAMESERVER_UPDATE>=402)


if(gDuel.GetDuelArenaBySpectator(lpObj->Index) != 0 || gDuel.GetDuelArenaBySpectator(lpTarget->Index) != 0)
{
return 0;
}


#endif


if(gCrywolf.GetCrywolfState() == CRYWOLF_STATE_READY || gCrywolf.GetCrywolfState() == CRYWOLF_STATE_END)
{
if(lpTarget->Type == OBJECT_MONSTER && lpTarget->Map == MAP_CRYWOLF)
{
return 0;
}
}


if(lpObj->GuildNumber > 0 && lpObj->Guild != 0 && lpObj->Guild->WarState != 0)
{
if(lpObj->Guild->WarType == 1 && GetBattleSoccerGoalMove(0) == 0)
{
return 1;
}


if(lpObj->Guild->WarType == 0 && lpTarget->Type == OBJECT_MONSTER)
{
return 0;
}
}


if(lpTarget->Type == OBJECT_NPC || lpTarget->Live == 0 || lpTarget->State != OBJECT_PLAYING || lpTarget->Teleport != 0)
{
return 0;
}


if(lpTarget->Type == OBJECT_MONSTER)
{

if((lpTarget->Class >= 100 && lpTarget->Class <= 110) || lpTarget->Class == 523) // Trap
{
return 0;
}


if(lpTarget->Class == 221 || lpTarget->Class == 222) // Siege
{
return 0;
}
}


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
{
if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
if(lpObj->SummonIndex == lpTarget->Index)
{
return 0;
}
}
}


int SummonIndex = lpObj->Index;


if(lpObj->Type == OBJECT_MONSTER && OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
SummonIndex = lpObj->SummonIndex;
}


int SummonTargetIndex = lpTarget->Index;


if(lpTarget->Type == OBJECT_MONSTER && OBJECT_RANGE(lpTarget->SummonIndex) != 0)
{
SummonTargetIndex = lpTarget->SummonIndex;
}


if(gAttack.CheckPlayerTarget(&gObj[SummonIndex],&gObj[SummonTargetIndex]) == 0)
{
return 0;
}


#pragma endregion


#pragma region ATTACK_RETURN


int skill = ((lpSkill==0)?SKILL_NONE:lpSkill->m_skill);


if(lpObj->Type == OBJECT_USER)
{
lpObj->HPAutoRecuperationTime = GetTickCount();
lpObj->MPAutoRecuperationTime = GetTickCount();
lpObj->BPAutoRecuperationTime = GetTickCount();
lpObj->SDAutoRecuperationTime = GetTickCount();
}


if(lpTarget->Type == OBJECT_USER)
{
lpTarget->HPAutoRecuperationTime = GetTickCount();
lpTarget->MPAutoRecuperationTime = GetTickCount();
lpTarget->BPAutoRecuperationTime = GetTickCount();
lpTarget->SDAutoRecuperationTime = GetTickCount();
}


if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonSetEnemy(lpObj,lpTarget->Index);
}


if(lpObj->Type == OBJECT_USER)
{
gDarkSpirit[lpObj->Index].SetTarget(lpTarget->Index);
}


bool duel = gDuel.CheckDuel(lpObj,lpTarget);


if(lpObj->Type == OBJECT_USER && duel != 0)
{
lpObj->DuelTickCount = GetTickCount();
}


if(lpTarget->Type == OBJECT_USER && duel != 0)
{
lpTarget->DuelTickCount = GetTickCount();
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDE R_OF_PROTECTION) != 0 && lpSkill == 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDE R_OF_PROTECTION) != 0 && lpSkill != 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_PHYS I_DAMAGE_IMMUNITY) != 0 && lpSkill == 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MAGI C_DAMAGE_IMMUNITY) != 0 && lpSkill != 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->Type == OBJECT_MONSTER)
{
if(lpTarget->Class == 200 && lpSkill == 0)
{
gObjMonsterStateProc(lpTarget,6,lpObj->Index,0);
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->Class == 200 && lpSkill != 0)
{
gObjMonsterStateProc(lpTarget,7,lpObj->Index,0);
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONS TER_PHYSI_DAMAGE_IMMUNITY) != 0 && skill == SKILL_NONE)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONS TER_MAGIC_DAMAGE_IMMUNITY) != 0 && skill != SKILL_NONE)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->MonsterSkillElementOption.CheckImmuneTime() != 0)
{
if(lpTarget->MonsterSkillElementOption.m_SkillElementImmuneNumb er == skill)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}
}
}


#pragma endregion


#pragma region DAMAGE_CALC


flag = 0;


BYTE miss = 0;


WORD effect = 0;


if((lpObj->Type != OBJECT_USER || lpTarget->Type != OBJECT_USER) && this->MissCheck(lpObj,lpTarget,lpSkill,send,&miss) == 0)
{
return 1;
}


if((lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER) && gAttack.MissCheckPvP(lpObj,lpTarget,lpSkill,send,0 ,&miss) == 0)
{
return 1;
}


long long defense = this->GetTargetDefense(lpObj,lpTarget,&effect);


long long damage = this->GetAttackDamage(lpObj,lpTarget,lpSkill,&effect,defense);


if(miss != 0)
{
damage = (damage*30)/100;
}


if(action != 0)
{
damage = (damage*60)/100;
}


for(int n=0;n < MAX_DAMAGE_REDUCTION;n++)
{
damage -= (damage*lpTarget->DamageReduction[n])/100;
}


if(lpTarget->EffectOption.AddDamageReduction > 0)
{
damage -= (damage*lpTarget->EffectOption.AddDamageReduction)/100;
}


if((GetTickCount()-lpTarget->ShieldDamageReductionTime) < ((DWORD)(gServerInfo.m_DefenseTimeConstA*1000)))
{
damage -= (damage*lpTarget->ShieldDamageReduction)/100;
}


gAttack.WingSprite(0,lpTarget,&damage);


gAttack.HelperSprite(0,lpTarget,&damage);


int MinDamage = (lpObj->Level+lpObj->MasterLevel)/10;


MinDamage = ((MinDamage<1)?1:MinDamage);


damage = ((damage<MinDamage)?MinDamage:damage);


this->DarkSpiritSprite(lpObj,damage);


gAttack.DamageSprite(lpTarget,damage);


#if(GAMESERVER_UPDATE>=602)


if((GetLargeRand()%100) < gMasterSkillTree.GetMasterSkillValue(lpObj,MASTER_ SKILL_ADD_DARK_SPIRIT_DOUBLE_DAMAGE_RATE))
{
effect |= 0x40;
damage += damage;
}


#endif


#pragma endregion


#pragma region DAMAGE_CONFIG


if(lpObj->Type == OBJECT_USER)
{
if(lpTarget->Type == OBJECT_USER)
{
damage = (damage*gServerInfo.m_GeneralDamageRatePvP)/100;


damage = (damage*gServerInfo.m_DamageRatePvP[lpObj->Class])/100;


damage = (damage*gServerInfo.m_DamageRateTo[lpObj->Class][lpTarget->Class])/100;


if(duel != 0)
{
damage = (damage*gServerInfo.m_DuelDamageRate)/100;
}
else if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
{
damage = (damage*gServerInfo.m_GensDamageRate)/100;
}
else if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
{
damage = (damage*gServerInfo.m_ChaosCastleDamageRate)/100;
}
else if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
{
damage = (damage*gServerInfo.m_IllusionTempleDamageRate)/100;
}
}
else
{
damage = (damage*gServerInfo.m_GeneralDamageRatePvM)/100;


damage = (damage*gServerInfo.m_DamageRatePvM[lpObj->Class])/100;
}
}


#pragma endregion


#pragma region DAMAGE_FINISH


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
{


}


damage = ((damage<0)?0:damage);


#pragma endregion


#pragma region DAMAGE_APPLY


int ShieldDamage = 0;


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER)
{
ShieldDamage = gAttack.GetShieldDamage(lpObj,lpTarget,damage);


if(lpTarget->Life < (damage-ShieldDamage))
{
lpTarget->Life = 0;
}
else
{
lpTarget->Life -= damage-ShieldDamage;
}


if(lpTarget->Shield < ShieldDamage)
{
lpTarget->Shield = 0;
}
else
{
lpTarget->Shield -= ShieldDamage;
}
}
else
{
if(lpTarget->Life < damage)
{
lpTarget->Life = 0;
}
else
{
lpTarget->Life -= damage;
}
}


if(lpTarget->Type == OBJECT_MONSTER)
{
lpTarget->LastAttackerID = lpObj->Index;


gObjAddMsgSendDelay(lpTarget,0,lpObj->Index,100,0);


if(lpTarget->CurrentAI != 0)
{
lpTarget->Agro.IncAgro(lpObj->Index,(damage/50));
}
}


#pragma endregion


#pragma region CHECK_SELF_DEFENSE


if(damage > 0)
{
if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER && lpObj->Index != lpTarget->Index)
{
bool CheckSelfDefense = 1;


if(effect == 4)
{
CheckSelfDefense = 0;
}


if(gDuel.CheckDuel(lpObj,lpTarget) != 0)
{
CheckSelfDefense = 0;
}

if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
{
CheckSelfDefense = 0;
}

if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
{
CheckSelfDefense = 0;
}


if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
{
CheckSelfDefense = 0;
}

if(gMapManager.GetMapNonOutlaw(lpObj->Map) != 0)
{
CheckSelfDefense = 0;
}


if(CheckSelfDefense != 0)
{
gObjCheckSelfDefense(lpObj,lpTarget->Index);
}
}


gAttack.ArmorDurabilityDown(lpObj,lpTarget);
}


lpObj->Rest = 0;


#pragma endregion


#pragma region ATTACK_FINISH


if(damage > 0)
{
gEffectManager.DelEffect(lpTarget,EFFECT_SLEEP);


if(lpTarget->Type == OBJECT_USER)
{
if(effect != 4)
{
if((lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect) > 0)
{
gObjAddMsgSendDelay(lpTarget,10,lpObj->Index,10,((damage*(lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect))/100));
}

if((GetLargeRand()%100) < lpTarget->DefensiveFullBPRestoreRate)
{
lpTarget->BP = lpTarget->MaxBP+lpTarget->AddBP;
GCManaSend(lpTarget->Index,0xFF,(int)lpTarget->Mana,lpTarget->BP);
}
}


int effect = 1;
}


gObjectManager.CharacterLifeCheck(lpObj,lpTarget,( damage-ShieldDamage),0,flag,effect,skill,ShieldDamage/*,0*/);
}
else
{
GCDamageSend(lpObj->Index,lpTarget->Index,0,0,effect,0);
}


if(lpObj->Type == OBJECT_USER && lpObj->Life <= 0 && lpObj->CheckLifeTime <= 0)
{
lpObj->AttackObj = lpTarget;
lpObj->AttackerKilled = ((lpTarget->Type==OBJECT_USER)?1:0);
lpObj->CheckLifeTime = 3;
}


#pragma endregion


return 1;
}

Fix NPC em Lorencia não aceitar itens de combinação para Criar Dark Reaven (Corvo) e Dark Horse (Cavalo) e também a Chaos Machine:

Em Main.cpp do Cliente:

Busque por:


SetCompleteHook(0xE9, 0x583799, &ChaosBoxDurationItens);

Apenas coloque // para comentar e desativar esta linha.

Fix Arquivos de Configurações não aplicarem os efeitos no GS:

Alguns arquivos do GameServer estão com falta do end em seus respectivos finais ou colunas, verifique na Source buscando pelos trechos onde
estão programadas as leituras destes arquivos que não possuem o end e confirme a necessidade dele. Na programação do GameServer não está
incluído um alerta para a má leitura dos arquivos decorrente da falta de caracteres ou má colocação deles, desta forma, o GS inicia como se estivesse tudo bem porém não aplica as configurações do arquivo com erro.
Exemplo de arquivo com erro que necessita colocação do end:
SkillBlock.txt na pasta Data/Skill do MuServer.

Master Skill Tree 4:

Como esta Source não é de fato uma Season 13, mas sim um Upgrade de Season, está faltando a finalização da Master Skill Tree 4 e suas respectivas Skills. Eu não tenho como disponibilizar o código pois eu apenas fui montando o sistema durante vários dias e isso envolveu diversos arquivos e linhas de códigos. A dica que dou é que todo o sistema da Tree 4 fica basicamente nos arquivos SkillManager, MasterSkillTree_4th, Attack e Skill da Source do GS.

Ao contrário do que falaram algumas páginas atrás neste tópico, NÃO COPIE E COLE ARQUIVOS DE OUTRAS TEAMS como MuDev e etc..., nenhum destes arquivos, como o FormulaData.txt, é compatível com esta Source e conforme informei logo acima, o GS não acusa o arquivo incorreto na leitura e ao usar este arquivo de outra Team que eu citei, a única coisa que irá acontecer é a Tree 4 bugar não informando os valores corretos adquiridos por cada ponto adicionado e também não atualizar os respectivos valores. Use os arquivos originais do MuServer pois eles estão OK para a Master Skill Tree 4, sendo necessária mudanças apenas se você quiser modificar a quantidade de pontos necessários e etc...

Para ativar esta Master Skill Tree 4, apenas busque por:


return; //disabled until full implementation and test of skills

Coloque // na frente do return;

Não é necessário fazer absolutamente mais nada na Source para que esta Tree funcione.
Logo após ative no arquivo GameServerInfo - Common.dat no GS deixando assim ForMasterSkillTree = 1.

Fix não Salvar Skills da Master Skill Tree 4:

Em MasterSkillTree_4th.cpp do GS busque por:
case FOR_MASTER_SKILL_ADD_SHOCKING_BOOM : if ((value = gSkillManager.AddSkill(lpObj, SKILL_SHOCKING_BOOM, 0)) >= 0)
{
gSkillManager.GCSkillAddSend(lpObj->Index, value, SKILL_SHOCKING_BOOM, 0, 0);
}

break;

Esta será a sua referência.
Repare que as outras Skills da Tree 4 não possuem nada disso e agora cabe a você fazer de cada uma tendo atenção nos respectivos nomes das Skills.
OBS: Como eu falei, as mudanças e correções que eu tive que realizar foram muitas em diversos arquivos, mas pelo o que me recordo, o Fix para este caso é apenas este.

Não edite as Skills dos personagens no Banco de Dados, para testes crie um personagem para testar cada Skill. No Banco de Dados a inserção ocorre em diversos locais e editar irá bugar o char fazendo com que você se atrapalhe ainda mais.

Algumas imagens das Skills em funcionamento:

Shock
https://i.imgur.com/2sF7dz8.png

Bleeding
https://i.imgur.com/V1cZcDM.png
Poison
https://i.imgur.com/AM3D8lf.png

---Por enquanto é isso. Espero que ajude alguém a desenvolver o seu projeto e infelizmente não tenho previsão de retornar o desenvolvimento devido ao fim do recesso no trabalho. Sempre que eu puder irei auxiliar quem precisar de ajuda.



Hello. Thank you very much for your fix, brother. But I have a question, how to make the DLL support Chinese? After I translated the original English into Chinese and compiled it, the client will have garbled characters

André
01-17-2025, 08:03 PM
Como estou sem tempo para finalizar um Repack com correções devido ao meu retorno ao trabalho :(, irei recolocar os Fixes novamente neste tópico.

SEMPRE LEIAM TODAS AS PÁGINAS PARA ENCONTRAR POSSÍVEIS FIXES E CUIDADO COM "VENDEDORES PICARETAS" QUE SÓ QUEREM SE APROVEITAR!

Fix Dark Reaven (Corvo) não causar dano:

Em DarkSpirit.cpp no GS

Busque por:


bool CDarkSpirit::Attack(LPOBJ lpObj, LPOBJ lpTarget, CSkill* lpSkill, bool send, BYTE flag, BYTE action) // OK

Substitua tudo por:


bool CDarkSpirit::Attack(LPOBJ lpObj,LPOBJ lpTarget,CSkill* lpSkill,bool send,BYTE flag,BYTE action) // OK{
#pragma region ATTACK_CHECK


if(lpObj->Index == lpTarget->Index)
{
return 0;
}


if(lpObj->Type == OBJECT_USER && gObjIsConnectedGP(lpObj->Index) == 0)
{
return 0;
}


if(lpTarget->Type == OBJECT_USER && gObjIsConnectedGP(lpTarget->Index) == 0)
{
return 0;
}


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


#if(GAMESERVER_UPDATE>=402)


if(gDuel.GetDuelArenaBySpectator(lpObj->Index) != 0 || gDuel.GetDuelArenaBySpectator(lpTarget->Index) != 0)
{
return 0;
}


#endif


if(gCrywolf.GetCrywolfState() == CRYWOLF_STATE_READY || gCrywolf.GetCrywolfState() == CRYWOLF_STATE_END)
{
if(lpTarget->Type == OBJECT_MONSTER && lpTarget->Map == MAP_CRYWOLF)
{
return 0;
}
}


if(lpObj->GuildNumber > 0 && lpObj->Guild != 0 && lpObj->Guild->WarState != 0)
{
if(lpObj->Guild->WarType == 1 && GetBattleSoccerGoalMove(0) == 0)
{
return 1;
}


if(lpObj->Guild->WarType == 0 && lpTarget->Type == OBJECT_MONSTER)
{
return 0;
}
}


if(lpTarget->Type == OBJECT_NPC || lpTarget->Live == 0 || lpTarget->State != OBJECT_PLAYING || lpTarget->Teleport != 0)
{
return 0;
}


if(lpTarget->Type == OBJECT_MONSTER)
{

if((lpTarget->Class >= 100 && lpTarget->Class <= 110) || lpTarget->Class == 523) // Trap
{
return 0;
}


if(lpTarget->Class == 221 || lpTarget->Class == 222) // Siege
{
return 0;
}
}


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
{
if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
if(lpObj->SummonIndex == lpTarget->Index)
{
return 0;
}
}
}


int SummonIndex = lpObj->Index;


if(lpObj->Type == OBJECT_MONSTER && OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
SummonIndex = lpObj->SummonIndex;
}


int SummonTargetIndex = lpTarget->Index;


if(lpTarget->Type == OBJECT_MONSTER && OBJECT_RANGE(lpTarget->SummonIndex) != 0)
{
SummonTargetIndex = lpTarget->SummonIndex;
}


if(gAttack.CheckPlayerTarget(&gObj[SummonIndex],&gObj[SummonTargetIndex]) == 0)
{
return 0;
}


#pragma endregion


#pragma region ATTACK_RETURN


int skill = ((lpSkill==0)?SKILL_NONE:lpSkill->m_skill);


if(lpObj->Type == OBJECT_USER)
{
lpObj->HPAutoRecuperationTime = GetTickCount();
lpObj->MPAutoRecuperationTime = GetTickCount();
lpObj->BPAutoRecuperationTime = GetTickCount();
lpObj->SDAutoRecuperationTime = GetTickCount();
}


if(lpTarget->Type == OBJECT_USER)
{
lpTarget->HPAutoRecuperationTime = GetTickCount();
lpTarget->MPAutoRecuperationTime = GetTickCount();
lpTarget->BPAutoRecuperationTime = GetTickCount();
lpTarget->SDAutoRecuperationTime = GetTickCount();
}


if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonSetEnemy(lpObj,lpTarget->Index);
}


if(lpObj->Type == OBJECT_USER)
{
gDarkSpirit[lpObj->Index].SetTarget(lpTarget->Index);
}


bool duel = gDuel.CheckDuel(lpObj,lpTarget);


if(lpObj->Type == OBJECT_USER && duel != 0)
{
lpObj->DuelTickCount = GetTickCount();
}


if(lpTarget->Type == OBJECT_USER && duel != 0)
{
lpTarget->DuelTickCount = GetTickCount();
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDE R_OF_PROTECTION) != 0 && lpSkill == 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDE R_OF_PROTECTION) != 0 && lpSkill != 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_PHYS I_DAMAGE_IMMUNITY) != 0 && lpSkill == 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MAGI C_DAMAGE_IMMUNITY) != 0 && lpSkill != 0)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->Type == OBJECT_MONSTER)
{
if(lpTarget->Class == 200 && lpSkill == 0)
{
gObjMonsterStateProc(lpTarget,6,lpObj->Index,0);
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->Class == 200 && lpSkill != 0)
{
gObjMonsterStateProc(lpTarget,7,lpObj->Index,0);
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONS TER_PHYSI_DAMAGE_IMMUNITY) != 0 && skill == SKILL_NONE)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONS TER_MAGIC_DAMAGE_IMMUNITY) != 0 && skill != SKILL_NONE)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}


if(lpTarget->MonsterSkillElementOption.CheckImmuneTime() != 0)
{
if(lpTarget->MonsterSkillElementOption.m_SkillElementImmuneNumb er == skill)
{
gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
return 1;
}
}
}


#pragma endregion


#pragma region DAMAGE_CALC


flag = 0;


BYTE miss = 0;


WORD effect = 0;


if((lpObj->Type != OBJECT_USER || lpTarget->Type != OBJECT_USER) && this->MissCheck(lpObj,lpTarget,lpSkill,send,&miss) == 0)
{
return 1;
}


if((lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER) && gAttack.MissCheckPvP(lpObj,lpTarget,lpSkill,send,0 ,&miss) == 0)
{
return 1;
}


long long defense = this->GetTargetDefense(lpObj,lpTarget,&effect);


long long damage = this->GetAttackDamage(lpObj,lpTarget,lpSkill,&effect,defense);


if(miss != 0)
{
damage = (damage*30)/100;
}


if(action != 0)
{
damage = (damage*60)/100;
}


for(int n=0;n < MAX_DAMAGE_REDUCTION;n++)
{
damage -= (damage*lpTarget->DamageReduction[n])/100;
}


if(lpTarget->EffectOption.AddDamageReduction > 0)
{
damage -= (damage*lpTarget->EffectOption.AddDamageReduction)/100;
}


if((GetTickCount()-lpTarget->ShieldDamageReductionTime) < ((DWORD)(gServerInfo.m_DefenseTimeConstA*1000)))
{
damage -= (damage*lpTarget->ShieldDamageReduction)/100;
}


gAttack.WingSprite(0,lpTarget,&damage);


gAttack.HelperSprite(0,lpTarget,&damage);


int MinDamage = (lpObj->Level+lpObj->MasterLevel)/10;


MinDamage = ((MinDamage<1)?1:MinDamage);


damage = ((damage<MinDamage)?MinDamage:damage);


this->DarkSpiritSprite(lpObj,damage);


gAttack.DamageSprite(lpTarget,damage);


#if(GAMESERVER_UPDATE>=602)


if((GetLargeRand()%100) < gMasterSkillTree.GetMasterSkillValue(lpObj,MASTER_ SKILL_ADD_DARK_SPIRIT_DOUBLE_DAMAGE_RATE))
{
effect |= 0x40;
damage += damage;
}


#endif


#pragma endregion


#pragma region DAMAGE_CONFIG


if(lpObj->Type == OBJECT_USER)
{
if(lpTarget->Type == OBJECT_USER)
{
damage = (damage*gServerInfo.m_GeneralDamageRatePvP)/100;


damage = (damage*gServerInfo.m_DamageRatePvP[lpObj->Class])/100;


damage = (damage*gServerInfo.m_DamageRateTo[lpObj->Class][lpTarget->Class])/100;


if(duel != 0)
{
damage = (damage*gServerInfo.m_DuelDamageRate)/100;
}
else if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
{
damage = (damage*gServerInfo.m_GensDamageRate)/100;
}
else if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
{
damage = (damage*gServerInfo.m_ChaosCastleDamageRate)/100;
}
else if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
{
damage = (damage*gServerInfo.m_IllusionTempleDamageRate)/100;
}
}
else
{
damage = (damage*gServerInfo.m_GeneralDamageRatePvM)/100;


damage = (damage*gServerInfo.m_DamageRatePvM[lpObj->Class])/100;
}
}


#pragma endregion


#pragma region DAMAGE_FINISH


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
{


}


damage = ((damage<0)?0:damage);


#pragma endregion


#pragma region DAMAGE_APPLY


int ShieldDamage = 0;


if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER)
{
ShieldDamage = gAttack.GetShieldDamage(lpObj,lpTarget,damage);


if(lpTarget->Life < (damage-ShieldDamage))
{
lpTarget->Life = 0;
}
else
{
lpTarget->Life -= damage-ShieldDamage;
}


if(lpTarget->Shield < ShieldDamage)
{
lpTarget->Shield = 0;
}
else
{
lpTarget->Shield -= ShieldDamage;
}
}
else
{
if(lpTarget->Life < damage)
{
lpTarget->Life = 0;
}
else
{
lpTarget->Life -= damage;
}
}


if(lpTarget->Type == OBJECT_MONSTER)
{
lpTarget->LastAttackerID = lpObj->Index;


gObjAddMsgSendDelay(lpTarget,0,lpObj->Index,100,0);


if(lpTarget->CurrentAI != 0)
{
lpTarget->Agro.IncAgro(lpObj->Index,(damage/50));
}
}


#pragma endregion


#pragma region CHECK_SELF_DEFENSE


if(damage > 0)
{
if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER && lpObj->Index != lpTarget->Index)
{
bool CheckSelfDefense = 1;


if(effect == 4)
{
CheckSelfDefense = 0;
}


if(gDuel.CheckDuel(lpObj,lpTarget) != 0)
{
CheckSelfDefense = 0;
}

if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
{
CheckSelfDefense = 0;
}

if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
{
CheckSelfDefense = 0;
}


if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
{
CheckSelfDefense = 0;
}

if(gMapManager.GetMapNonOutlaw(lpObj->Map) != 0)
{
CheckSelfDefense = 0;
}


if(CheckSelfDefense != 0)
{
gObjCheckSelfDefense(lpObj,lpTarget->Index);
}
}


gAttack.ArmorDurabilityDown(lpObj,lpTarget);
}


lpObj->Rest = 0;


#pragma endregion


#pragma region ATTACK_FINISH


if(damage > 0)
{
gEffectManager.DelEffect(lpTarget,EFFECT_SLEEP);


if(lpTarget->Type == OBJECT_USER)
{
if(effect != 4)
{
if((lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect) > 0)
{
gObjAddMsgSendDelay(lpTarget,10,lpObj->Index,10,((damage*(lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect))/100));
}

if((GetLargeRand()%100) < lpTarget->DefensiveFullBPRestoreRate)
{
lpTarget->BP = lpTarget->MaxBP+lpTarget->AddBP;
GCManaSend(lpTarget->Index,0xFF,(int)lpTarget->Mana,lpTarget->BP);
}
}


int effect = 1;
}


gObjectManager.CharacterLifeCheck(lpObj,lpTarget,( damage-ShieldDamage),0,flag,effect,skill,ShieldDamage/*,0*/);
}
else
{
GCDamageSend(lpObj->Index,lpTarget->Index,0,0,effect,0);
}


if(lpObj->Type == OBJECT_USER && lpObj->Life <= 0 && lpObj->CheckLifeTime <= 0)
{
lpObj->AttackObj = lpTarget;
lpObj->AttackerKilled = ((lpTarget->Type==OBJECT_USER)?1:0);
lpObj->CheckLifeTime = 3;
}


#pragma endregion


return 1;
}

Fix NPC em Lorencia não aceitar itens de combinação para Criar Dark Reaven (Corvo) e Dark Horse (Cavalo) e também a Chaos Machine:

Em Main.cpp do Cliente:

Busque por:


SetCompleteHook(0xE9, 0x583799, &ChaosBoxDurationItens);

Apenas coloque // para comentar e desativar esta linha.

Fix Arquivos de Configurações não aplicarem os efeitos no GS:

Alguns arquivos do GameServer estão com falta do end em seus respectivos finais ou colunas, verifique na Source buscando pelos trechos onde
estão programadas as leituras destes arquivos que não possuem o end e confirme a necessidade dele. Na programação do GameServer não está
incluído um alerta para a má leitura dos arquivos decorrente da falta de caracteres ou má colocação deles, desta forma, o GS inicia como se estivesse tudo bem porém não aplica as configurações do arquivo com erro.
Exemplo de arquivo com erro que necessita colocação do end:
SkillBlock.txt na pasta Data/Skill do MuServer.

Master Skill Tree 4:

Como esta Source não é de fato uma Season 13, mas sim um Upgrade de Season, está faltando a finalização da Master Skill Tree 4 e suas respectivas Skills. Eu não tenho como disponibilizar o código pois eu apenas fui montando o sistema durante vários dias e isso envolveu diversos arquivos e linhas de códigos. A dica que dou é que todo o sistema da Tree 4 fica basicamente nos arquivos SkillManager, MasterSkillTree_4th, Attack e Skill da Source do GS.

Ao contrário do que falaram algumas páginas atrás neste tópico, NÃO COPIE E COLE ARQUIVOS DE OUTRAS TEAMS como MuDev e etc..., nenhum destes arquivos, como o FormulaData.txt, é compatível com esta Source e conforme informei logo acima, o GS não acusa o arquivo incorreto na leitura e ao usar este arquivo de outra Team que eu citei, a única coisa que irá acontecer é a Tree 4 bugar não informando os valores corretos adquiridos por cada ponto adicionado e também não atualizar os respectivos valores. Use os arquivos originais do MuServer pois eles estão OK para a Master Skill Tree 4, sendo necessária mudanças apenas se você quiser modificar a quantidade de pontos necessários e etc...

Para ativar esta Master Skill Tree 4, apenas busque por:


return; //disabled until full implementation and test of skills

Coloque // na frente do return;

Não é necessário fazer absolutamente mais nada na Source para que esta Tree funcione.
Logo após ative no arquivo GameServerInfo - Common.dat no GS deixando assim ForMasterSkillTree = 1.

Fix não Salvar Skills da Master Skill Tree 4:

Em MasterSkillTree_4th.cpp do GS busque por:
case FOR_MASTER_SKILL_ADD_SHOCKING_BOOM : if ((value = gSkillManager.AddSkill(lpObj, SKILL_SHOCKING_BOOM, 0)) >= 0)
{
gSkillManager.GCSkillAddSend(lpObj->Index, value, SKILL_SHOCKING_BOOM, 0, 0);
}

break;

Esta será a sua referência.
Repare que as outras Skills da Tree 4 não possuem nada disso e agora cabe a você fazer de cada uma tendo atenção nos respectivos nomes das Skills.
OBS: Como eu falei, as mudanças e correções que eu tive que realizar foram muitas em diversos arquivos, mas pelo o que me recordo, o Fix para este caso é apenas este.

Não edite as Skills dos personagens no Banco de Dados, para testes crie um personagem para testar cada Skill. No Banco de Dados a inserção ocorre em diversos locais e editar irá bugar o char fazendo com que você se atrapalhe ainda mais.

Algumas imagens das Skills em funcionamento:

Shock
https://i.imgur.com/2sF7dz8.png

Bleeding
https://i.imgur.com/V1cZcDM.png
Poison
https://i.imgur.com/AM3D8lf.png

---Por enquanto é isso. Espero que ajude alguém a desenvolver o seu projeto e infelizmente não tenho previsão de retornar o desenvolvimento devido ao fim do recesso no trabalho. Sempre que eu puder irei auxiliar quem precisar de ajuda.

Atualizando Post com Fixes...

Este MS está programado com limite de 50.000 WCoinC e caso adicione mais que isso todo o sistema de compra por Moedas e Saldos bugam!

Para alterar ou remover o Limite de WCoinC:

Em CashShop.cpp do GS busque por:


if (lpMsg->WCoinC < 0 || lpMsg->WCoinC > 50000){
lpMsg->WCoinC = 0;
}

Altere o valor de 500000 para o desejado.

brahian153
01-18-2025, 03:45 AM
Andre Excelente contribuição André, você tem alguma ideia sobre os offsets das câmeras 3D? E onde está discutido o recurso para que você só possa ativar os efeitos de buff, como o escudo de mana interno, hein, sozinho no cerco do castelo?

paPanat9s1
01-18-2025, 05:28 PM
any cant create MakePreviewCharSet for customwing plis this is the offset SetCompleteHook(0xE8, 0x0061404E, &sub_621038);

brahian153
01-18-2025, 06:48 PM
Você poderia compartilhar os deslocamentos da câmera 3D, se os tiver?

francis865
01-19-2025, 06:38 AM
Hello. Thank you very much for your fix, brother. But I have a question, how to make the DLL support Chinese? After I translated the original English into Chinese and compiled it, the client will have garbled characters

André
01-19-2025, 05:44 PM
Sobre a Câmera basta pesquisar por Câmera n Cliente que você irá encontrar o que precisa.

Este Cliente não possui suporte a caracteres especiais ou acentos, desta forma não suportará linguagem Vietnamita, Chinesa e etc...
A solução é encontrar algum Cliente de mesma Versão compatível que suporte estas especificações ou então alterar a Source, coisa que eu não tenho interesse
em realizar.

André
01-19-2025, 05:49 PM
any cant create MakePreviewCharSet for customwing plis this is the offset SetCompleteHook(0xE8, 0x0061404E, &sub_621038);

Este Cliente não possui programado nenhum tipo de suporte a Itens Customs, assim como Asas.
Se não for programar por conta própria, esqueça customizações neste MS ou então encontre outro Cliente compatível com tal Customs.
Eu não irei adicionar nenhuma Custom pois não me agrada e não é de meu interesse.

brahian153
01-19-2025, 10:32 PM
Podría mandar fix, para activar la cámara si es que tiene? Solo encontre 1 Offset

André
01-19-2025, 10:46 PM
Podría mandar fix, para activar la cámara si es que tiene? Solo encontre 1 Offset

Já possui Camera 3D, teclas PageUp e PageDown.

3us0hb0m
01-19-2025, 10:46 PM
a camera esta fucionnal so para zoom in e zoom out nos botao pgUp pgDn

paPanat9s1
01-20-2025, 02:05 AM
fix evomon & evomon score?

brahian153
01-22-2025, 01:34 AM
Falo de camara 360, no zoom out / in , fica top, estive verificando o src mas ainda não encontrei onde ativar as habilidades de buff, como inner, mana shield, etc., elas só funcionam no evento Castle Siege, é um costume daquele servidor

murusek666
01-24-2025, 09:02 AM
It already has 3D Camera, PageUp and PageDown keys.
Can you explain what i need to compiled this source ? Visual studio version ? some extra SDK or another thigs ? I try with VS 2010 but i get a lot of errors ...
Can you make Tutorial ?
Thx

brahian153
01-29-2025, 05:39 PM
@André (https://perfectzone.com.br/member.php?u=230) Você poderia me ajudar onde procurar para modificar para que as habilidades de buff, como inner, manashield, funcionem normalmente, só funcionam no evento de cerco ao castelo, pelo que Leo me disse é um costume mu icone

André
01-30-2025, 01:19 AM
@André (https://perfectzone.com.br/member.php?u=230) Você poderia me ajudar onde procurar para modificar para que as habilidades de buff, como inner, manashield, funcionem normalmente, só funcionam no evento de cerco ao castelo, pelo que Leo me disse é um costume mu icone

Eu vou te ajudar nesta questão e a quem mais interessar, mas veja bem, este é o menor dos seus problemas nesta Source que foi altamente modificada e que também se trata de um Upgrade de Season que não está 100% finalizado. Eu levei diversos dias estudando esta Source, arquivo por arquivo, até finalizá-la completamente e deixá-la original no padrão MuOnline e hoje estou trabalhando em outra Season muito mais alta para meu aprendizado próprio.

Vamos ao que você quer...

Abra o arquivo EffectManager.cpp do GS, ele é o responsável por aplicar os efeitos de toda e qualquer Skill neste MS.

Analise agora este trecho de código deste arquivo:



case EFFECT_GREATER_DAMAGE:
if (lpObj->Map == MAP_CASTLE_SIEGE)
{
lpObj->EffectOption.IncreasePvPDamage += lpEffect->m_value[0];
}
break;


Com um básico de interpretação você verá que ele diz o seguinte:

case EFFECT_GREATER_DAMAGE: => Caso a Skill usada seja a Greater Damage, irá ler o restante até o break;

if (lpObj->Map == MAP_CASTLE_SIEGE) => Se o mapa que o Jogador usar esta Skill (lpObj->Map) for o do Castle Siege (== MAP_CASTLE_SIEGE)), faça o que estiver dentro dos { }, que é usar a Skill e aplicar o efeito dela.

Atualmente este Servidor está configurado, erroneamente, para o jogador usar a Skill fora do Castle Siege também, só que não está aplicando o efeito da Skill.
Você pode usar a Greater Damage, o Mana Shield e etc... porém nenhum terá efeito algum fora do mapa do Castle Siege.

Finalmente, para solucionar este problema, delete a linha if (lpObj->Map == MAP_CASTLE_SIEGE) e também os { }, ficará assim:



case EFFECT_GREATER_DAMAGE:
lpObj->EffectOption.IncreasePvPDamage += lpEffect->m_value[0];


break;

Fazendo isso, você estará removendo a condição de só poder usar a Skill e ter o efeito dela apenas no mapa do Siege.
Faça isso nas outras Skills que estiverem assim neste arquivo e pronto, poderá usar as Skills em qualquer mapa e todas terão os seus respectivos efeitos.

ATENÇÃO: Fora este procedimento que expliquei, você terá que corrigir praticamente todas as Skills de Buff e também alguns Scrolls de Buff pois eles foram alterados ou estão incompletos, como por exemplo:

Mana Shield e Greater Defense: não absorvem o dano recebido dos monstros.
Iron Defense: está desativada.

E muito mais...

Resumindo, se não abrir os arquivos, rolar a página até o final e observar o código buscando interpretar e pesquisar as Funções, você não chegará a lugar algum nesta Source. Eu levei diversos dias estudando esta Source por ter achado ela bem interessante, e o trabalho que tive para deixá-la 100% uma Season 13 original como Webzen não foi pouco, mas vale muito a pena pois são detalhes pequenos, o mais trabalhoso é finalizar a implantação das Skills faltantes.

Boa sorte! thumbup

brahian153
01-30-2025, 01:29 AM
Eu vou te ajudar nesta questão e a quem mais interessar, mas veja bem, este é o menor dos seus problemas nesta Source que foi altamente modificada e que também se trata de um Upgrade de Season que não está 100% finalizado. Eu levei diversos dias estudando esta Source, arquivo por arquivo, até finalizá-la completamente e deixá-la original no padrão MuOnline e hoje estou trabalhando em outra Season muito mais alta para meu aprendizado próprio.

Vamos ao que você quer...

Abra o arquivo EffectManager.cpp do GS, ele é o responsável por aplicar os efeitos de toda e qualquer Skill neste MS.

Analise agora este trecho de código deste arquivo:



case EFFECT_GREATER_DAMAGE: if (lpObj->Map == MAP_CASTLE_SIEGE)
{
lpObj->EffectOption.IncreasePvPDamage += lpEffect->m_value[0];
}
break;


Com um básico de interpretação você verá que ele diz o seguinte:

case EFFECT_GREATER_DAMAGE: => Caso a Skill usada seja a Greater Damage, irá ler o restante até o break;

if (lpObj->Map == MAP_CASTLE_SIEGE) => Se o mapa que o Jogador usar esta Skill (lpObj->Map) for o do Castle Siege (== MAP_CASTLE_SIEGE)), faça o que estiver dentro dos { }, que é usar a Skill e aplicar o efeito dela.

Atualmente este Servidor está configurado, erroneamente, para o jogador usar a Skill fora do Castle Siege também, só que não está aplicando o efeito da Skill.
Você pode usar a Greater Damage, o Mana Shield e etc... porém nenhum terá efeito algum fora do mapa do Castle Siege.

Finalmente, para solucionar este problema, delete a linha if (lpObj->Map == MAP_CASTLE_SIEGE) e também os { }, ficará assim:



case EFFECT_GREATER_DAMAGE:
lpObj->EffectOption.IncreasePvPDamage += lpEffect->m_value[0];


break;

Fazendo isso, você estará removendo a condição de só poder usar a Skill e ter o efeito dela apenas no mapa do Siege.
Faça isso nas outras Skills que estiverem assim neste arquivo e pronto, poderá usar as Skills em qualquer mapa e todas terão os seus respectivos efeitos.

ATENÇÃO: Fora este procedimento que expliquei, você terá que corrigir praticamente todas as Skills de Buff e também alguns Scrolls de Buff pois eles foram alterados ou estão incompletos, como por exemplo:

Mana Shield e Greater Defense: não absorvem o dano recebido dos monstros.
Iron Defense: está desativada.

E muito mais...

Resumindo, se não abrir os arquivos, rolar a página até o final e observar o código buscando interpretar e pesquisar as Funções, você não chegará a lugar algum nesta Source. Eu levei diversos dias estudando esta Source por ter achado ela bem interessante, e o trabalho que tive para deixá-la 100% uma Season 13 original como Webzen não foi pouco, mas vale muito a pena pois são detalhes pequenos, o mais trabalhoso é finalizar a implantação das Skills faltantes.

Boa sorte! thumbup


Muito obrigado por compartilhar seu conhecimento, acho que é um bom servidor para quem tem sistema Reset

André
01-31-2025, 11:17 PM
Salve pessoal!

Passando aqui para dar uma dica aos Brasileiros usando estes arquivos e se depararam com o problema das mensagens não terem acentos no jogo e não sabem o que fazer.

A forma correta é codificar no Main.dll a conversão dos caracteres, conhecidos como Charset de texto, porém dá um certo trabalho e hoje não é tão necessário assim, graças ao querido Notepad++, isso mesmo, o famoso editor de textos de linguagem universal.

Sigam o seguinte passo a passo:

1- Edite com os acentos o arquivo Notice.txt da pasta Data/Util do GameServer, por exemplo, e salve.
2- Aperte o Control+A para selecionar tudo e depois o Control+X para recortar tudo e salve novamente.
3- Agora, no topo da tela do Notepad++ cliquem em Formatar e depois em Codificação em ANSI conforme a imagem abaixo:

https://i.imgur.com/Tgj1SIz.png

4- O próximo passo e dar um Control+V para colar tudo novamente e depois Salvar.

OBS 1: Não altere a formatação para ANSI sem antes recortar tudo, se fizer isso todo o texto irá bugar!

OBS 2: O mesmo procedimento funciona para os arquivos .BMD do cliente. Converta o arquivo Lang.mpr usando o Editor
e logo após faça o mesmo procedimento que expliquei com o arquivo que desejar, como o Text por exemplo.

Feito este procedimento, o Main irá exibir corretamente as acentuações Brasileiras dentro do jogo, conforme a imagem abaixo:

https://i.imgur.com/MgxKEf6.png

Bem fácil e não é necessário programação, ao contrário do que um picareta está falando em um outro Fórum estrangeiro
agora mesmo tentando vender código para isso, e como eu não gosto de picareta, decidi vir aqui fazer este post :eek:

Jeferson
02-01-2025, 06:26 PM
Salve pessoal!

Passando aqui para dar uma dica aos Brasileiros usando estes arquivos e se depararam com o problema das mensagens não terem acentos no jogo e não sabem o que fazer.

A forma correta é codificar no Main.dll a conversão dos caracteres, conhecidos como Charset de texto, porém dá um certo trabalho e hoje não é tão necessário assim, graças ao querido Notepad++, isso mesmo, o famoso editor de textos de linguagem universal.

Sigam o seguinte passo a passo:

1- Edite com os acentos o arquivo Notice.txt da pasta Data/Util do GameServer, por exemplo, e salve.
2- Aperte o Control+A para selecionar tudo e depois o Control+X para recortar tudo e salve novamente.
3- Agora, no topo da tela do Notepad++ cliquem em Formatar e depois em Codificação em ANSI conforme a imagem abaixo:

https://i.imgur.com/Tgj1SIz.png

4- O próximo passo e dar um Control+V para colar tudo novamente e depois Salvar.

OBS 1: Não altere a formatação para ANSI sem antes recortar tudo, se fizer isso todo o texto irá bugar!

OBS 2: O mesmo procedimento funciona para os arquivos .BMD do cliente. Converta o arquivo Lang.mpr usando o Editor
e logo após faça o mesmo procedimento que expliquei com o arquivo que desejar, como o Text por exemplo.

Feito este procedimento, o Main irá exibir corretamente as acentuações Brasileiras dentro do jogo, conforme a imagem abaixo:

https://i.imgur.com/MgxKEf6.png

Bem fácil e não é necessário programação, ao contrário do que um picareta está falando em um outro Fórum estrangeiro
agora mesmo tentando vender código para isso, e como eu não gosto de picareta, decidi vir aqui fazer este post :eek:


Você vai postar um repack do servidor com todas as atualizações e correções?

André
02-01-2025, 11:29 PM
Você vai postar um repack do servidor com todas as atualizações e correções?

Não pretendo.

paPanat9s1
02-02-2025, 12:36 AM
fix complete fourt skill tree? any cant share it?

André
02-02-2025, 06:48 PM
fix complete fourt skill tree? any cant share it?

Share thumbdown

paPanat9s1
02-02-2025, 10:44 PM
any cant adapt it for mu s13? in gs source

lpObj->CharSet[17] |= (gCustomWing.GetCustomWingIndex(GET_ITEM(12, TempInventory[7])) + 32);//this is for mu s9

murusek666
02-05-2025, 03:30 AM
Share thumbdown
any chance you difficult configs for it . Its pvp and play on offline its kind of boring . its like mess for someone like me who like classic configs .. Thx

francis865
02-05-2025, 03:50 PM
Has no one noticed the Death Stab Visual bug?

brahian153
02-05-2025, 09:04 PM
Has no one noticed the Death Stab Visual bug? qual bug??

francis865
02-06-2025, 06:56 AM
When using the Death Stab skill, there is no visual effect of the skill. Is it a code problem?


qual bug??


When using the Death Stab skill, there is no visual effect of the skill. Is it a code problem?



Death Stab's skill has no animation effect, please help
http://imgfz.com/i/Lo09hMj.jpeg
Death Stab's skill has no animation effect, please help
http://imgfz.com/i/Lo09hMj.jpeg

brahian153
02-06-2025, 09:58 PM
Eu vou te ajudar nesta questão e a quem mais interessar, mas veja bem, este é o menor dos seus problemas nesta Source que foi altamente modificada e que também se trata de um Upgrade de Season que não está 100% finalizado. Eu levei diversos dias estudando esta Source, arquivo por arquivo, até finalizá-la completamente e deixá-la original no padrão MuOnline e hoje estou trabalhando em outra Season muito mais alta para meu aprendizado próprio.

Vamos ao que você quer...

Abra o arquivo EffectManager.cpp do GS, ele é o responsável por aplicar os efeitos de toda e qualquer Skill neste MS.

Analise agora este trecho de código deste arquivo:



case EFFECT_GREATER_DAMAGE:
if (lpObj->Map == MAP_CASTLE_SIEGE)
{
lpObj->EffectOption.IncreasePvPDamage += lpEffect->m_value[0];
}
break;


Com um básico de interpretação você verá que ele diz o seguinte:

case EFFECT_GREATER_DAMAGE: => Caso a Skill usada seja a Greater Damage, irá ler o restante até o break;

if (lpObj->Map == MAP_CASTLE_SIEGE) => Se o mapa que o Jogador usar esta Skill (lpObj->Map) for o do Castle Siege (== MAP_CASTLE_SIEGE)), faça o que estiver dentro dos { }, que é usar a Skill e aplicar o efeito dela.

Atualmente este Servidor está configurado, erroneamente, para o jogador usar a Skill fora do Castle Siege também, só que não está aplicando o efeito da Skill.
Você pode usar a Greater Damage, o Mana Shield e etc... porém nenhum terá efeito algum fora do mapa do Castle Siege.

Finalmente, para solucionar este problema, delete a linha if (lpObj->Map == MAP_CASTLE_SIEGE) e também os { }, ficará assim:



case EFFECT_GREATER_DAMAGE:
lpObj->EffectOption.IncreasePvPDamage += lpEffect->m_value[0];


break;

Fazendo isso, você estará removendo a condição de só poder usar a Skill e ter o efeito dela apenas no mapa do Siege.
Faça isso nas outras Skills que estiverem assim neste arquivo e pronto, poderá usar as Skills em qualquer mapa e todas terão os seus respectivos efeitos.

ATENÇÃO: Fora este procedimento que expliquei, você terá que corrigir praticamente todas as Skills de Buff e também alguns Scrolls de Buff pois eles foram alterados ou estão incompletos, como por exemplo:

Mana Shield e Greater Defense: não absorvem o dano recebido dos monstros.
Iron Defense: está desativada.

E muito mais...

Resumindo, se não abrir os arquivos, rolar a página até o final e observar o código buscando interpretar e pesquisar as Funções, você não chegará a lugar algum nesta Source. Eu levei diversos dias estudando esta Source por ter achado ela bem interessante, e o trabalho que tive para deixá-la 100% uma Season 13 original como Webzen não foi pouco, mas vale muito a pena pois são detalhes pequenos, o mais trabalhoso é finalizar a implantação das Skills faltantes.

Boa sorte! thumbup Ao remover a linha "(lpObj->Map == MAP_CASTLE_SIEGE)" a habilidade funciona, mas aumenta o HP nas mesmas vezes que é usada

https://i.ibb.co/3m4TSRP5/Screen-02-06-18-53-0000.jpg

https://i.ibb.co/jkHT791d/Screen-02-06-18-53-0001.jpg

https://i.ibb.co/0p4tFSR2/Screen-02-06-18-53-0003.jpg

André
02-07-2025, 09:32 PM
Ao remover a linha "(lpObj->Map == MAP_CASTLE_SIEGE)" a habilidade funciona, mas aumenta o HP nas mesmas vezes que é usada

https://i.ibb.co/3m4TSRP5/Screen-02-06-18-53-0000.jpg

https://i.ibb.co/jkHT791d/Screen-02-06-18-53-0001.jpg

https://i.ibb.co/0p4tFSR2/Screen-02-06-18-53-0003.jpg

A Skill foi alterada e conforme eu informei anteriormente, não basta apenas liberar as Skills, você terá que verificar o código de cada
uma e realizar as alterações para que retornem ao padrão. Mana Shield, Greater Defense e etc... praticamente todas as Skills de Buff estão alteradas nesta Source.
Terá Skills que só funcionarão em determinados mapas, outras apenas no Mapa de Temporada, uma Custom adicionada pelo proprietário.

brahian153
02-08-2025, 01:18 PM
A Skill foi alterada e conforme eu informei anteriormente, não basta apenas liberar as Skills, você terá que verificar o código de cada
uma e realizar as alterações para que retornem ao padrão. Mana Shield, Greater Defense e etc... praticamente todas as Skills de Buff estão alteradas nesta Source.
Terá Skills que só funcionarão em determinados mapas, outras apenas no Mapa de Temporada, uma Custom adicionada pelo proprietário.


Você poderia compartilhar a solução para fazer com que as habilidades comuns funcionem normalmente?

beibei
02-09-2025, 09:34 AM
4th Quest bug???anyone can fix、 thank you

francis865
02-09-2025, 09:54 AM
4th Quest bug???anyone can fix、 thank you



The mission is normal, but there are problems with skill attributes and skill experience

Death Stab's skill has no animation effect, please help


http://imgfz.com/i/Lo09hMj.jpeg

Death Stab's skill has no animation effect, please help cryy2 cryy2 cryy2 cryy2
please please please please please please


http://imgfz.com/i/Lo09hMj.jpeg

4 minutes:------- Atualizado -------

Death Stab's skill has no animation effect, please help cryy2 cryy2 cryy2 cryy2
please please please please please please

beibei
02-09-2025, 10:09 AM
Refer to IGCS12 fixes,I clicked on the 4 turn NPC, and there were no monsters in the quest after entering.help,can share?



10 minutes:------- Atualizado -------

I just started researching it today, and I will share it with you if it is solved

francis865
02-09-2025, 11:26 AM
Refer to IGCS12 fixes,I clicked on the 4 turn NPC, and there were no monsters in the quest after entering.help,can share?



10 minutes:------- Atualizado -------

I just started researching it today, and I will share it with you if it is solved



You need to use IconeMU's server and client, there are no errors in it, you need to wait a few seconds for the monster to appear after entering, follow the task prompts
Regarding the skill repair problem, have you fixed it? Can you send me the source code for reference!cool

André
02-09-2025, 08:10 PM
Você poderia compartilhar a solução para fazer com que as habilidades comuns funcionem normalmente?

Você não entendeu. O proprietário desta Source achou melhor "deletar" as Skill na Source ao invés de remover o drop e venda dos Scrolls e Orbs do Servidor e desta forma para que você volte uma única Skill ao normal, você deve praticamente reprogramá-la em no mínimo 3 arquivos na Source, sem falar dos testes até que fique 100% original.
Tem Skills que não foram deletadas, mas foram alteradas tendo o seu funcionamento totalmente alterado, resumindo, tem muita coisa para concertar.

Procure na Web a Source Legend Season 16 repack LDG do datkool, é uma Season muito mais recente, com muito mais chance de se ter jogadores em um Servidor sério e com muito poucos Bugs, eu até agora encontrei uns 4 que já corrigi de tão fáceis que são.

Boa sorte.

beibei
02-10-2025, 01:08 AM
Legend Season 16 gun ,wings bug,

brahian153
02-10-2025, 02:45 AM
Você não entendeu. O proprietário desta Source achou melhor "deletar" as Skill na Source ao invés de remover o drop e venda dos Scrolls e Orbs do Servidor e desta forma para que você volte uma única Skill ao normal, você deve praticamente reprogramá-la em no mínimo 3 arquivos na Source, sem falar dos testes até que fique 100% original.
Tem Skills que não foram deletadas, mas foram alteradas tendo o seu funcionamento totalmente alterado, resumindo, tem muita coisa para concertar.

Procure na Web a Source Legend Season 16 repack LDG do datkool, é uma Season muito mais recente, com muito mais chance de se ter jogadores em um Servidor sério e com muito poucos Bugs, eu até agora encontrei uns 4 que já corrigi de tão fáceis que são.

Boa sorte.


Eu poderia consertar, uma dúvida, você tem ideia se o sistema pk desse servidor funciona diferente ou tem algum erro, pois eu mato um personagem 3 vezes e ele não fica vermelho, referente a lenda da temporada 16, funciona com mysql, não encontrei SQL Server repacko ou src, mas gostaria de trabalhar neles

pd: Em relação ao bug inner // great life, consegui repará-lo

murusek666
02-10-2025, 12:31 PM
I could fix it, one question, do you have any idea if the pk system of this server works differently or has some error, because I kill a character 3 times and it doesn't turn red, regarding the legend of season 16, it works with mysql, I didn't find SQL Server repack or src, but I would like to work on them

pd: Regarding the inner // great life bug, I managed to repair it

https://github.com/spyderverr?tab=repositories

Legends s16
and no its not using sql but mysql

beibei
02-10-2025, 01:46 PM
can anyone repack S13 fix source ,sorry my bad english

@murusek666 (https://perfectzone.com.br/member.php?u=4830)
S16 very good ,thank you ,

brahian153
02-11-2025, 05:41 PM
Você não entendeu. O proprietário desta Source achou melhor "deletar" as Skill na Source ao invés de remover o drop e venda dos Scrolls e Orbs do Servidor e desta forma para que você volte uma única Skill ao normal, você deve praticamente reprogramá-la em no mínimo 3 arquivos na Source, sem falar dos testes até que fique 100% original.
Tem Skills que não foram deletadas, mas foram alteradas tendo o seu funcionamento totalmente alterado, resumindo, tem muita coisa para concertar.

Procure na Web a Source Legend Season 16 repack LDG do datkool, é uma Season muito mais recente, com muito mais chance de se ter jogadores em um Servidor sério e com muito poucos Bugs, eu até agora encontrei uns 4 que já corrigi de tão fáceis que são.

Boa sorte.

Você tem ideia do que perguntar sobre o sistema PVP ou como funciona no IconeMU, após realizar 3 kills o personagem não fica vermelho e não assume status de pk

André
02-11-2025, 05:51 PM
Você tem ideia do que perguntar sobre o sistema PVP ou como funciona no IconeMU, após realizar 3 kills o personagem não fica vermelho e não assume status de pk

Não lembro de ter olhado sistema de PK nesta Source.
Não mexo mais com ela.

pronoob
02-18-2025, 11:34 PM
Testei um pouco esse muserver e encontrei vários bugs pequenos, que facilmente podem ser resolvidos na source/arquivos de configuração, por exemplo:
- Itens invisíveis bugando o inventário
- Personal Shop deixando comprar mesmo sem ter a quantidade de jewel solicitada
- Comandos de GM podem ser usados por todos /invisivel /item /skin /popup entre outros
- Bug ao adicionar e enviar mensagem para amigos
- /limparinv não funciona corretamente caso tenha algum pet equipado (testado com dark horse e dark spirit)

Mesmo assim o servidor tem bastante coisa legal, mas quem quiser se aventurar tem que ter um certo conhecimento para realizar os ajustes necessários.

lazarocp
02-23-2025, 10:29 AM
Testei um pouco esse muserver e encontrei vários bugs pequenos, que facilmente podem ser resolvidos na source/arquivos de configuração, por exemplo:
- Itens invisíveis bugando o inventário
- Personal Shop deixando comprar mesmo sem ter a quantidade de jewel solicitada
- Comandos de GM podem ser usados por todos /invisivel /item /skin /popup entre outros
- Bug ao adicionar e enviar mensagem para amigos
- /limparinv não funciona corretamente caso tenha algum pet equipado (testado com dark horse e dark spirit)

Mesmo assim o servidor tem bastante coisa legal, mas quem quiser se aventurar tem que ter um certo conhecimento para realizar os ajustes necessários.

tu e vivo ainda bixo?

beibei
03-14-2025, 11:16 AM
4th quset error ,How to fix thank you

Farias
05-01-2025, 06:44 PM
Alguem ainda mexendo nessa SOURCE ?

jorge28
05-24-2025, 08:58 PM
Alguem ainda mexendo nessa SOURCE ?

Asi es.

https://i.imgur.com/ilyq32I.jpeg