this is good sharing about offsets, but we need first to make the basic muserver files organized
muserver + database are incomplate and has problems to solve
this is good sharing about offsets, but we need first to make the basic muserver files organized
muserver + database are incomplate and has problems to solve
Last edited by Th3AnG3L; 16-01-16 at 11:48 PM.
Supports Languages Thailand ???? Th3AnG3L
Test..
![]()
it needs more updates on server side configs, and database are still incomplate, im working slow on it to understand all stuff so if someone has suggestion fix or want to share are welcomed, then when we finish the base files configuration and database stuff we will go to customs fixes
My formula for their Buff Bots Working at MU Blue Season 9 :)
OBJBOTBUFFER::TradeBuffer
Code:bool OBJBOTBUFFER::TradeBuffer(int aIndex, int lpTargetObj) { LPOBJ lpObj = (LPOBJ)OBJECT_POINTER(aIndex); LPOBJ TargetObj = (LPOBJ)OBJECT_POINTER(lpTargetObj); if( lpObj->Level < this->Level ){GCActionSend(TargetObj,AT_GOODBYE1,lpTargetObj,a Index);BotChatSend(aIndex,lpTargetObj,"Você nao tem o Level Suficiente! Requerido: %d",this->Level ); return FALSE;} if( epObj[aIndex].m_Vip < this->OnlyVip ){GCActionSend(TargetObj,AT_GOODBYE1,lpTargetObj,a Index);BotChatSend(aIndex,lpTargetObj,"Seu VIP não tem privilégios suficientes para usar o comando!");return FALSE;} if( lpObj->Money < this->Price ){GCActionSend(TargetObj,AT_GOODBYE1,lpTargetObj,a Index);BotChatSend(aIndex,lpTargetObj,"Você nao tem Zen suficiente! Requerido: %d" ,this->Price ); return FALSE;} GCMoneySend(aIndex,lpObj->Money -= this->Price); switch(TargetObj->Class) { case CLASS_WIZARD: { int WizardSkillDefense = 0; int WizardSkillDefenseTime = 0; WizardSkillDefense = 10 + (lpObj->Dexterity + lpObj->AddDexterity) / 50 + (lpObj->Energy + lpObj->AddEnergy) / 200; WizardSkillDefenseTime = 60 + (lpObj->Energy + lpObj->AddEnergy) / 40; gObjAddBuffEffect(lpObj,AT_WIZARD_DEFENSE, 21, WizardSkillDefense, 28, 20, WizardSkillDefenseTime); //season3 add-on GCMagicAttackNumberSend(lpObj, 0x10u,aIndex, 1); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Wizard ! ",lpObj->Name); return TRUE; } break; case CLASS_KNIGHT: { int iaddLifepower = 12 + (lpObj->Vitality + lpObj->AddVitality) / 100 + (lpObj->Energy + lpObj->AddEnergy)/20 + 1; int iLifeTime = 60 + (lpObj->Energy + lpObj->AddEnergy) / 10; int iaddlife = (lpObj->MaxLife) * iaddLifepower / 100; gObjAddBuffEffect(lpObj, AT_SWELL_LIFE, 4,iaddLifepower / 100, 0, 0, iLifeTime); GCMagicAttackNumberSend(lpObj, 0x30u,aIndex, 1); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Knigth ! ",lpObj->Name); return TRUE; } break; case CLASS_ELF: { BYTE Boff = rand()%3; switch(Boff) { case 1: //--> SkillDefense { int skill_level = lpObj->Level; float skill_defense = float(skill_level + 1)*2 + (lpObj->Energy + lpObj->AddEnergy) / 8; if(lpObj->Class == CLASS_KNIGHT) { skill_defense += skill_defense/10.0f; } gObjAddBuffEffect(lpObj,AT_INCREASE_DEFENSE,3, skill_defense, 0, 0, 60); GCMagicAttackNumberSend(lpObj,0x1b,aIndex,1); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Elf ! ",lpObj->Name); return TRUE; } break; case 2: //--> SkillAttack { int skill_level = lpObj->Level; float skill_attack = float((skill_level + 1) * 3) + (lpObj->Energy + lpObj->AddEnergy) / 7.0f; if(lpObj->Class == CLASS_KNIGHT) { skill_attack += skill_attack/10.0f; } gObjAddBuffEffect(lpObj, AT_INCREASE_ATTACK, 2, skill_attack, 0, 0, 60); GCMagicAttackNumberSend(lpObj,0x1c,aIndex,1); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Elf ! ",lpObj->Name); return TRUE; } break; case 3: //--> SkillHealing { int skill_level = lpObj->Level; lpObj->Life = ((skill_level + 1) * 5 + (lpObj->Energy + lpObj->AddEnergy) / 5) + lpObj->Life; if((lpObj->MaxLife + lpObj->AddLife) < lpObj->Life) { lpObj->Life = lpObj->MaxLife + lpObj->AddLife; } GCReFillSend(aIndex,lpObj->Life,0xFF,0,lpObj->iShield); GCMagicAttackNumberSend(lpObj,0x1a,aIndex,1); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Elf ! ",lpObj->Name); return TRUE; } break; } } break; case CLASS_MAGUMSA: { } break; case CLASS_DARKLORD: { int addcriticaldamagevalue = (lpObj->Leadership + lpObj->AddLeadership)/25 + (lpObj->Energy + lpObj->AddEnergy)/30; int SkillTime = (lpObj->Energy + lpObj->AddEnergy)/10 + 60; gObjAddBuffEffect(lpObj, AT_INCREASE_CRITICAL_DMG,17, addcriticaldamagevalue, 0, 0, SkillTime); //season3 add-on GCMagicAttackNumberSend(lpObj,0x40,aIndex,1); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot DarkLord ! ",lpObj->Name); return TRUE; } break; case CLASS_SUMMONER: { int iDuration = lpObj->Energy / 20 + 30; int iIncMana = lpObj->Energy / 30; int iDecLife = lpObj->Energy / 60; GCMagicAttackNumberSend(lpObj,218,aIndex,1); gObjAddBuffEffect(lpObj, AT_BERSERKER, 31, iIncMana, 32, iDecLife, iDuration); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Summoner ! ",lpObj->Name); return TRUE; } break; case CLASS_MONK: { BYTE Boff = rand()%3; switch(Boff) { case 1: //-- AT_SKILL_RAGEFIGHTER_REDARMOR: { int nEffectValue = {0}; nEffectValue = (double)(lpObj->Energy + (signed int)lpObj->AddEnergy - 404) / 100.0 + 3.0; gObjAddBuffEffect(lpObj,BUFF_IGNORE_DEFENSE, 72, nEffectValue, 0, 0, lpObj->Energy / 5 + 60); GCMagicAttackNumberSend(lpObj, 0x10Au,aIndex, 1); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Monk ! ",lpObj->Name); return TRUE; } break; case 2: //-- AT_SKILL_RAGEFIGHTER_FITNESS { int nEffectValue = {0}; nEffectValue = (double)(lpObj->Energy + (signed int)lpObj->AddEnergy - 132) / 10.0 + 30.0; gObjAddBuffEffect(lpObj,BUFF_INCREASE_VIT,73,nEffe ctValue,0,0,60); GCMagicAttackNumberSend(lpObj,267,aIndex,1); gObjCalCharacter(aIndex); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Monk ! ",lpObj->Name); return TRUE; } break; case 3: //-- AT_SKILL_RAGEFIGHTER_DEFRATE { int nEffectValue = {0}; nEffectValue = (double)(lpObj->Energy + (signed int)lpObj->AddEnergy - 80) / 10.0 + 10.0; gObjAddBuffEffect(lpObj,BUFF_INCREASE_DEFRATE,74,n EffectValue,0,0,60); GCMagicAttackNumberSend(lpObj,268,aIndex,1); BotChatSend(aIndex,lpTargetObj,"%s Recebel a Buff do Bot Monk ! ",lpObj->Name); return TRUE; } break; } } break; } return FALSE; }
If the community continue to share the cool, also continue sharing codes custons fixes and patches
Last edited by DarkHaziel; 18-01-16 at 01:12 AM.
@DarkHaziel , we didnt get yet to the server codes, we are trying first to complate the muserver + database before going there
ok let's see what happens...
just some fixes and configs and yes some things based on IAJulia.
Server files: RZProject_eX901
plugin Source code: 1.01.09_kor_RZ
Since.. this is a cool work.. but I really hate new Wz MU Clients.. because all main.exe are: Encrypted.. then is more difficult make any modification (Taking about client side). by this reason I don't work with new versions, but Good luck with this new dev anyways !
PS: If some person here have a completely Unpacked main.exe for MU Blue Season 9.1 (Upload here) and maybe I can make something to help with client side dev part. for all
My Command evolution
Code:enum PLAYER_QUEST { QUEST_COMPENSATION_CHANGEUP = 201, QUEST_COMPENSATION_STATUP = 200, QUEST_COMPENSATION_PLUSSSTAT = 202, QUEST_COMPENSATION_COMBOSKILL = 203, QUEST_COMPENSATION_CHANGEUP3RD = 204, QUEST_MINLEVEL_PLUSSTAT = 220, QUEST_STATE_SIZE = 50 }; void PCHATPROC::EvoCommand(int aIndex) { LPOBJ lpObj = (LPOBJ)OBJECT_POINTER(aIndex); if(this->EvoSwitch <= 0){ GCServerMsgStringSend("Comando desativado!",aIndex,1);return;} if(lpObj->Level < this->EvoNeedLevel){MsgOutput(aIndex,"%s Você Não Tem Level Suficiente! Requerido: %d",lpObj->Name,this->EvoNeedLevel);return;} if(lpObj->Money < this->EvoNeedZen){ MsgOutput(aIndex,"%s Você Não Tem Zen Suficiente! Requerido: %d",lpObj->Name,this->EvoNeedZen);return;} if( lpObj->ThirdChangeUp != FALSE ){MsgOutput(aIndex,"%s Você já está na 3ª Evolução ",lpObj->Name);return;} GCMoneySend(aIndex,lpObj->Money -= this->EvoNeedZen); switch(lpObj->DbClass) { case DB_DARK_WIZARD: case DB_DARK_KNIGHT: case DB_FAIRY_ELF: case DB_SUMMONER: { lpObj->ChangeUP = true; lpObj->DbClass |= true; lpObj->LevelUpPoints += 220; gObjMakePreviewCharSet(aIndex); BYTE btClass = (lpObj->Class << 5) & 0xE0; btClass |= (lpObj->ChangeUP << 4) & 0x10; GCSendQuestPrize(aIndex,QUEST_COMPENSATION_CHANGEU P, btClass); gObjMakePreviewCharSet(aIndex); lpObj->m_Quest[0] = 0xAA; //---> Quest Fix The Darck Stone LogAddFuncColor(COLOR_BLUE,"[ACTeaM][%s][%s]:Command evolution changeup successfully executed",lpObj->AccountID,lpObj->Name); } break; default: { lpObj->ChangeUP = true; lpObj->DbClass |= 2; lpObj->LevelUpPoints += 250; lpObj->PlusStatQuestClear = true; lpObj->ComboSkillquestClear = true; lpObj->ThirdChangeUp = true; gObjMakePreviewCharSet(aIndex); BYTE btClass = (lpObj->Class << 5) & 0xE0; btClass |= (lpObj->ChangeUP << 4) & 0x10; btClass |= (lpObj->ThirdChangeUp<<0x03)&0x08; GCLevelUpMsgSend(aIndex ,1); GCSendQuestPrize(aIndex,QUEST_COMPENSATION_CHANGEU P3RD, btClass); gObjMakePreviewCharSet(aIndex); lpObj->m_Quest[1] = 0xEA; //---> Quest Fix The Darck Elf General Tree LogAddFuncColor(COLOR_BLUE,"[ACTeaM][%s][%s]:Command evolution changeup3rd successfully executed",lpObj->AccountID,lpObj->Name); } } }
BotResetSystem
Code:| ================================================= == | - Boot Reset System | ================================================= == | -> [SEASON 9] [GS / GSCS] Added switch for on / off system BotReset | -> [SEASON9] [GS / GSCS] Added Adding System of BotReset's on maps | -> [SEASON9] [GS / GSCS] Added system interacting with the player | -> [SEASON9] [GS / GSCS] Added System all the attributes of configurable BotReset | ================================================= === | - System Reset For && command BotReset no need to relogin | ================================================= == | -> [SEASON9] [GS / GSCS] Added Removal move original map Elf | -> [SEASON9] [GS / GSCS] Added MasterLevel + Level Reset Lev.1 | -> [SEASON9] [GS / GSCS] Added MasterLevelExp Reset Lev.1 | -> [SEASON9] [GS / GSCS] Added NextMasterLevelExp Reset Lev.1 | -> [SEASON9] [GS / GSCS] Added balance of HP / MP / SD | -> [SEASON9] [GS / GSCS] Added effect of 3rd Queste to Reset | -> [SEASON9] [GS / GSCS] Added Syntax / Reset configurable | -> [SEASON9] [GS / GSCS] Added switch to turn the system completely configurable | -> [SEASON9] [GS / GSCS] Added two types of resets pontuativo / cumulative configurable | -> [SEASON9] [GS / GSCS] Added Zen configurable application | -> [SEASON9] [GS / GSCS] Added check to delete configurable issues | -> [SEASON9] [GS / GSCS] Added check to delete configurable skills | -> [SEASON9] [GS / GSCS] Added check to can not reset configurable items | -> [SEASON9] [GS / GSCS] Added check maximum resets Configurable | -> [SEASON9] [GS / GSCS] Added check to move to configurable source map | -> [SEASON9] [GS / GSCS] Added level checks to reset configurable | -> [SEASON9] [GS / GSCS] Added points for each configurable reset | -> [SEASON9] [GS / GSCS] Added configurable level after reset | -> [SEASON9] [GS / GSCS] Added points after reset Configurable power | -> [SEASON9] [GS / GSCS] Added points after reset Configurable agility | -> [SEASON9] [GS / GSCS] Added points after reset Configurable vitality | -> [SEASON9] [GS / GSCS] Added points after reset Configurable Power | -> [SEASON9] [GS / GSCS] Added points after reset Configurable WCoinP | -> [SEASON9] [GS / GSCS] Added points after reset Configurable WCoinc | -> [SEASON9] [GS / GSCS] Added points after reset Configurable GoblinPoint | -> [SEASON9] [GS / GSCS] Added three kinds of VIPs abronze / silver / gold configurable
The code is quite large, galley cooperated post later.
good development
help me Cliente Supports Languages Thailand @Th3AnG3L
code updated some wrong offsets fixed and GSCS added when I come back from work i will upload.
Good luck for every dev here :), Nice to see you all together.