re: [Development] Community Edition Season6 Episode3 z-Team
re: [Development] Community Edition Season6 Episode3 z-Team
Quote:
Originally Posted by
aecrimch
Yes
can you tell me just what you've changed?
I have created script but does not work
http://www.drills.it/Immagini/wings2.5.png
re: [Development] Community Edition Season6 Episode3 z-Team
just play with mix.bmd...
also, trying to obtain custom jewels in chaos machine... all seems to work ok, but when mix, there is no item, even message was succesful create item...
http://i297.photobucket.com/albums/m...23_20-0000.jpg
http://i297.photobucket.com/albums/m...23_20-0001.jpg
re: [Development] Community Edition Season6 Episode3 z-Team
I tried to change the mix.bmd but does not work.....I will try again
you entered the code on the combination of sources and in mix.bmd?
http://www.drills.it/Immagini/jewels.png
re: [Development] Community Edition Season6 Episode3 z-Team
re: [Development] Community Edition Season6 Episode3 z-Team
ItemRank does not work. 99% on things Zen, and drop a ring of 30%. Ie there is no difference between 30% and 99%.
GameMain.cpp and GameServer.cpp:
#include "ItemRank.h"
g_ItemRank.Load();
re: [Development] Community Edition Season6 Episode3 z-Team
can someone share wings 2.5 bmd files for client ?
i will manage myself to add them in sources but i cant find client files
re: [Development] Community Edition Season6 Episode3 z-Team
Quote:
Originally Posted by
aecrimch
Are you sure that you exactly write addational code for successful mix and add item to inventory? maybe you forget for add item after mix?
re: [Development] Community Edition Season6 Episode3 z-Team
Can someone share fix TAB button on login box to switch between login/password? Thanks
re: [Development] Community Edition Season6 Episode3 z-Team
Quote:
Originally Posted by
psychedelic
Can someone share fix TAB button on login box to switch between login/password? Thanks
I'd like to know that one too.
re: [Development] Community Edition Season6 Episode3 z-Team
Quote:
Originally Posted by
RacRac
Here you can find latest z-Team Server Files with latest fixes from Community !
Why I'm creating this topic ? Because I've seen alot of people that are asking for Latest Fixes in Source and Server Files aswell !
Now with the help of all MuOnline RageZone Community Developers and Testers we can make the best Season 6 Episode 3 Files yet . Maybe we can do something good together !
Remember ! I will update thread with Server Files/Client Fixes aswell Source Code with all Fixes !
Below you can find Community Edition Package .
What it contains ?
-Latest Updated Server Files so far !
-Latest Updated Source Files for DataServer and GameServer so far !
-Client Patch
-Tools
Community Project Changelog
Code:
Date : 08.07.2014
-Applied all Community Fixes so far
Date : 09.07.2014 -> v.0.1
ServerFiles :
-Corrected Server/Data/Item/SocketItem.txt
-Added Server/Data/Custom/CommunityEdition.ini
-Added NewJewelsMix in Server/Data/Custom/CommunityEdition.ini
-Added Server/Data/Item/OfflineTrade.txt -> Now you can set your OfflineShop Type
SourceCode :
-GameServer :
Coded NewJewelsMix (Disabled for the moment)
Changes to Offtrade.cpp and Offtrade.h to set type of OfflineShop
Added Offtrade.cpp and Offtrade.h in Package so you can add to your existing Source Code
-DataServer : None
ClientFiles :
-None
Date : 20.07.2014 -> v0.2
ServerFiles :
-Added Lucky Coin Event in Server/Data/Custom/CommunityEdition.ini
-Added Lucky Items Settings in Server/Data/Custom/CommunityEdition
-Corrected Server/Data/Event/IllusionTemple.dat to allow Event Running with 1 Player
-Added RageFighter SQL Query Fix in Server/Database/SQL Fixes
-Enabled ShopPointEx in Server/Data/Customs/ShopPointEx.txt
SourceCode :
-GameServer :
Minor Changes in GameMain.cpp
Fixed DevilLizard King,Golden Tantallos and Golden Iron Wheel
Fixed Double Goer Event running with 1 Player
Enabled ShopPointEx
Enabled Quest System (In next update I will post Configs aswell)
Fixed MailSystem
-DataServer : None
ClientFiles :
-None
Download Link Community Edition Package :
-
https://mega.co.nz/#!21QTHZ6C!nNR424...0BsdZbfKTjZi3o
Download Link Working Client :
-
https://mega.co.nz/#!SU1VDBRI!lB46vI...J9azBe8fdq3wGU
Download Link Community Edition Package v0.1 :
-
https://mega.co.nz/#!fwQykK5I!TcP-Hb...k5n3trRt8N35fY
Download Link Community Edition Package v0.2 :
-
https://mega.co.nz/#!ioZkmTgB!KOcfQu...y4za0njKjeOXz4
Credits :
Webzen
z-Team
All Ragezone Community who Tested/Reported/Fixed this files so far !
How about uploading the source of this project to github or something similar? So that if other great coders out there who want to contribute a bugfix or new feature they will just have to send a patch.
Thanks for sharing this great project.
re: [Development] Community Edition Season6 Episode3 z-Team
ItemDropEx fix:
Code:
#include "StdAfx.h"
#include "DropEx.h"
#include "logproc.h"
#include "..\include\readscript.h"
#include "DSProtocol.h"
#include "gObjMonster.h"
#include "GameMain.h"
// -------------------------------------------------------------------------
DropEx g_DropEx;
// -------------------------------------------------------------------------------
DropEx::DropEx()
{
this->Init();
}
// -------------------------------------------------------------------------
DropEx::~DropEx()
{
// ----
}
// -------------------------------------------------------------------------
void DropEx::Init()
{
this->m_Data.clear();
#ifdef __ALIEN__
this->m_NonDrop.clear();
#endif
}
// -------------------------------------------------------------------------
void DropEx::Load()
{
this->Init();
this->ReadData(gDirPath.GetNewPath("Custom\\ItemDropEx.txt"));
#ifdef __ALIEN__
this->ReadBlockData(gDirPath.GetNewPath("Custom\\ItemDropBlock.txt"));
#endif
}
// -------------------------------------------------------------------------
void DropEx::ReadData(char * File)
{
__try
{
SMDFile = fopen(File, "r");
// ----
while(true)
{
SMDToken Token = GetToken();
// ----
if( Token == END )
{
break;
}
// ----
DROPEX_DATA List;
// ----
List.ItemType = TokenNumber;
// ----
GetToken();
List.ItemIndex = TokenNumber;
// ----
GetToken();
List.ItemMinLevel = TokenNumber;
// ----
GetToken();
List.ItemMaxLevel = TokenNumber;
// ----
GetToken();
List.ItemMaxOption = TokenNumber;
/*
#ifdef __ALIEN__
GetToken();
List.ItemOptRate = TokenNumber;
#endif
*/
// ----
GetToken();
List.ItemLuck = TokenNumber;
// ----
/*
#ifdef __ALIEN__
GetToken();
List.ItemLuckRate = TokenNumber;
#endif
*/
GetToken();
List.ItemSkill = TokenNumber;
// ----
/*
#ifdef __ALIEN__
GetToken();
List.ItemSkillRate = TokenNumber;
#endif
*/
GetToken();
List.ItemExcellent = TokenNumber;
// ----
/*
#ifdef __ALIEN__
GetToken();
List.ItemMaxExc = TokenNumber;
GetToken();
List.ItemExcRate = TokenNumber;
// ----
GetToken();
List.ItemAncent = TokenNumber;
// ----
GetToken();
List.ItemAncRate = TokenNumber;
#endif
*/
GetToken();
List.ItemDur = TokenNumber;
// ----
GetToken();
List.ItemDropRate = TokenNumber;
// ----
GetToken();
List.MonsterMinLevel = TokenNumber;
// ----
GetToken();
List.MonsterMaxLevel = TokenNumber;
// ----
GetToken();
List.MonsterMap = TokenNumber;
// ----
this->m_Data.push_back(List);
}
}
// ----
__finally
{
if( SMDFile != NULL )
{
LogAdd(lMsg.Get(MSGGET(1, 198)), File);
fclose(SMDFile);
}
// ----
SMDFile = NULL;
}
}
// -------------------------------------------------------------------------
#ifdef __ALIEN__
void DropEx::ReadBlockData(char * File)
{
__try
{
SMDFile = fopen(File, "r");
// ----
while(true)
{
SMDToken Token = GetToken();
// ----
if( Token == END )
{
break;
}
// ----
DROPBLOCK_DATA List;
// ----
List.ItemType = TokenNumber;
// ----
GetToken();
List.ItemIndex = TokenNumber;
// ----
this->m_NonDrop.push_back(List);
}
}
// ----
__finally
{
if( SMDFile != NULL )
{
LogAdd(lMsg.Get(MSGGET(1, 198)), File);
fclose(SMDFile);
}
// ----
SMDFile = NULL;
}
}
// -------------------------------------------------------------------------
bool DropEx::IsBlockItem(int ItemID)
{
for( int i = 0; i < this->m_NonDrop.size(); i++ )
{
DROPBLOCK_DATA & Drop = this->m_NonDrop[i];
// ----
if( ItemID == ITEMGET(Drop.ItemType, Drop.ItemIndex) )
{
return true;
}
}
// ----
return false;
}
#endif
// -------------------------------------------------------------------------
bool DropEx::DropItem(LPOBJ lpObj, LPOBJ lpTargetObj)
{
switch(lpObj->Class)
{
case 78: //-> Golden Goblin
case 53: //-> Golden Titan
case 79: //-> Golden Dragon
case 80: //-> Golden Lizard
case 82: //-> Golden Tantalos
case 502: //-> Golden Rabbit
case 493: //-> Golden Dark Knight
case 494: //-> Golden Devil
case 495: //-> ???
case 496: //-> Golden Crust
case 497: //-> Golden Satiros
case 498: //-> Golden Twintail
case 499: //-> Golden Iron Knight
case 500: //-> Golden Neipin
case 501: //-> Golden Great Dragon
{
return false;
}
break;
}
// ----
for( int i = 0; i < this->m_Data.size(); i++ )
{
DROPEX_DATA & Drop = this->m_Data[i];
// ----
if( lpObj->Level >= Drop.MonsterMinLevel && lpObj->Level <= Drop.MonsterMaxLevel )
{
if( lpObj->MapNumber == Drop.MonsterMap || Drop.MonsterMap == -1 )
{
if( rand() % 10000 < Drop.ItemDropRate )
{
int iLuck = 0;
int iSkill = 0;
int iOption = 0;
int iLevel = 0;
// ----
if( Drop.ItemMaxLevel == Drop.ItemMinLevel )
{
iLevel = Drop.ItemMinLevel;
}
else
{
iLevel = Drop.ItemMinLevel + (rand() % (Drop.ItemMaxLevel - Drop.ItemMinLevel + 1));
}
#if __ALIEN__
if( Drop.ItemLuck == 1 )
{
if( rand() % 100 < Drop.ItemLuckRate )
{
iLuck = 1;
}
}
if( Drop.ItemSkill == 1 )
{
if( rand() % 100 < Drop.ItemSkillRate )
{
iSkill = 1;
}
}
if( Drop.ItemMaxOption != 0 )
{
if( rand() % 100 < Drop.ItemOptRate )
{
iOption = rand() % Drop.ItemMaxOption + 1;
}
}
int iExlOpt = 0;
if(Drop.ItemExcellent)
{
if( rand() % 100 < Drop.ItemExcRate )
{
iExlOpt = this->GenExcOption(Drop.ItemMaxExc);
}
}
int iAnc = 0;
if(Drop.ItemAncent == 5 || Drop.ItemAncent == 10)
{
if( rand() % 100 < Drop.ItemAncRate )
{
iAnc = Drop.ItemAncent;
}
}
ItemSerialCreateSend(lpObj->m_Index, lpObj->MapNumber, lpObj->X, lpObj->Y, ITEMGET(Drop.ItemType, Drop.ItemIndex), iLevel, Drop.ItemDur, iOption, iLuck, iSkill, gObjMonsterTopHitDamageUser(lpObj), iExlOpt, iAnc);
#else
// ----
if( Drop.ItemLuck == 1 )
{
if( rand() % 100 < 50 )
{
iLuck = 1;
}
}
// ----
if( Drop.ItemSkill == 1 )
{
if( rand() % 100 < 50 )
{
iSkill = 1;
}
}
// ----
if( Drop.ItemMaxOption != 0 )
{
if( rand() % 100 < 50 )
{
iOption = rand() % Drop.ItemMaxOption + 1;
}
}
ItemSerialCreateSend(lpObj->m_Index, lpObj->MapNumber, lpObj->X, lpObj->Y, ITEMGET(Drop.ItemType, Drop.ItemIndex), iLevel, Drop.ItemDur, iOption, iLuck, iSkill, gObjMonsterTopHitDamageUser(lpObj), Drop.ItemExcellent, 0);
#endif
return true;
}
}
}
}
// ----
return false;
}
int DropEx::GenExcOption(int amount)
{
if (amount > 6) amount = 6;
if (amount < 1) amount = 1;
srand(time(NULL));
amount = rand() % amount + 1;
int opt_db[6] = {1, 2, 4, 8, 16, 32};
int exc = 0;
int opt_done[6] = { 0 };
for(int n=0; n < amount; n++)
{
int SearchExc = 0;
srand(time(NULL));
if( n == 0 )
{
SearchExc = opt_db[rand()%6];
opt_done[n] = SearchExc;
}
else
{
while(true)
{
SearchExc = opt_db[rand()%6];
bool bOpt = true;
for(int i=0;i<amount;i++)
{
if(SearchExc == opt_done[i])
{
bOpt = false;
}
}
if(bOpt == true)
{
opt_done[n] = SearchExc;
break;
}
}
}
exc += SearchExc;
}
return exc;
}
// -------------------------------------------------------------------------
re: [Development] Community Edition Season6 Episode3 z-Team
Quote:
Originally Posted by
MemBrick
ItemDropEx fix:
Code:
#include "StdAfx.h"
#include "DropEx.h"
#include "logproc.h"
#include "..\include\readscript.h"
#include "DSProtocol.h"
#include "gObjMonster.h"
#include "GameMain.h"
// -------------------------------------------------------------------------
DropEx g_DropEx;
// -------------------------------------------------------------------------------
DropEx::DropEx()
{
this->Init();
}
// -------------------------------------------------------------------------
DropEx::~DropEx()
{
// ----
}
// -------------------------------------------------------------------------
void DropEx::Init()
{
this->m_Data.clear();
#ifdef __ALIEN__
this->m_NonDrop.clear();
#endif
}
// -------------------------------------------------------------------------
void DropEx::Load()
{
this->Init();
this->ReadData(gDirPath.GetNewPath("Custom\\ItemDropEx.txt"));
#ifdef __ALIEN__
this->ReadBlockData(gDirPath.GetNewPath("Custom\\ItemDropBlock.txt"));
#endif
}
// -------------------------------------------------------------------------
void DropEx::ReadData(char * File)
{
__try
{
SMDFile = fopen(File, "r");
// ----
while(true)
{
SMDToken Token = GetToken();
// ----
if( Token == END )
{
break;
}
// ----
DROPEX_DATA List;
// ----
List.ItemType = TokenNumber;
// ----
GetToken();
List.ItemIndex = TokenNumber;
// ----
GetToken();
List.ItemMinLevel = TokenNumber;
// ----
GetToken();
List.ItemMaxLevel = TokenNumber;
// ----
GetToken();
List.ItemMaxOption = TokenNumber;
/*
#ifdef __ALIEN__
GetToken();
List.ItemOptRate = TokenNumber;
#endif
*/
// ----
GetToken();
List.ItemLuck = TokenNumber;
// ----
/*
#ifdef __ALIEN__
GetToken();
List.ItemLuckRate = TokenNumber;
#endif
*/
GetToken();
List.ItemSkill = TokenNumber;
// ----
/*
#ifdef __ALIEN__
GetToken();
List.ItemSkillRate = TokenNumber;
#endif
*/
GetToken();
List.ItemExcellent = TokenNumber;
// ----
/*
#ifdef __ALIEN__
GetToken();
List.ItemMaxExc = TokenNumber;
GetToken();
List.ItemExcRate = TokenNumber;
// ----
GetToken();
List.ItemAncent = TokenNumber;
// ----
GetToken();
List.ItemAncRate = TokenNumber;
#endif
*/
GetToken();
List.ItemDur = TokenNumber;
// ----
GetToken();
List.ItemDropRate = TokenNumber;
// ----
GetToken();
List.MonsterMinLevel = TokenNumber;
// ----
GetToken();
List.MonsterMaxLevel = TokenNumber;
// ----
GetToken();
List.MonsterMap = TokenNumber;
// ----
this->m_Data.push_back(List);
}
}
// ----
__finally
{
if( SMDFile != NULL )
{
LogAdd(lMsg.Get(MSGGET(1, 198)), File);
fclose(SMDFile);
}
// ----
SMDFile = NULL;
}
}
// -------------------------------------------------------------------------
#ifdef __ALIEN__
void DropEx::ReadBlockData(char * File)
{
__try
{
SMDFile = fopen(File, "r");
// ----
while(true)
{
SMDToken Token = GetToken();
// ----
if( Token == END )
{
break;
}
// ----
DROPBLOCK_DATA List;
// ----
List.ItemType = TokenNumber;
// ----
GetToken();
List.ItemIndex = TokenNumber;
// ----
this->m_NonDrop.push_back(List);
}
}
// ----
__finally
{
if( SMDFile != NULL )
{
LogAdd(lMsg.Get(MSGGET(1, 198)), File);
fclose(SMDFile);
}
// ----
SMDFile = NULL;
}
}
// -------------------------------------------------------------------------
bool DropEx::IsBlockItem(int ItemID)
{
for( int i = 0; i < this->m_NonDrop.size(); i++ )
{
DROPBLOCK_DATA & Drop = this->m_NonDrop[i];
// ----
if( ItemID == ITEMGET(Drop.ItemType, Drop.ItemIndex) )
{
return true;
}
}
// ----
return false;
}
#endif
// -------------------------------------------------------------------------
bool DropEx::DropItem(LPOBJ lpObj, LPOBJ lpTargetObj)
{
switch(lpObj->Class)
{
case 78: //-> Golden Goblin
case 53: //-> Golden Titan
case 79: //-> Golden Dragon
case 80: //-> Golden Lizard
case 82: //-> Golden Tantalos
case 502: //-> Golden Rabbit
case 493: //-> Golden Dark Knight
case 494: //-> Golden Devil
case 495: //-> ???
case 496: //-> Golden Crust
case 497: //-> Golden Satiros
case 498: //-> Golden Twintail
case 499: //-> Golden Iron Knight
case 500: //-> Golden Neipin
case 501: //-> Golden Great Dragon
{
return false;
}
break;
}
// ----
for( int i = 0; i < this->m_Data.size(); i++ )
{
DROPEX_DATA & Drop = this->m_Data[i];
// ----
if( lpObj->Level >= Drop.MonsterMinLevel && lpObj->Level <= Drop.MonsterMaxLevel )
{
if( lpObj->MapNumber == Drop.MonsterMap || Drop.MonsterMap == -1 )
{
if( rand() % 10000 < Drop.ItemDropRate )
{
int iLuck = 0;
int iSkill = 0;
int iOption = 0;
int iLevel = 0;
// ----
if( Drop.ItemMaxLevel == Drop.ItemMinLevel )
{
iLevel = Drop.ItemMinLevel;
}
else
{
iLevel = Drop.ItemMinLevel + (rand() % (Drop.ItemMaxLevel - Drop.ItemMinLevel + 1));
}
#if __ALIEN__
if( Drop.ItemLuck == 1 )
{
if( rand() % 100 < Drop.ItemLuckRate )
{
iLuck = 1;
}
}
if( Drop.ItemSkill == 1 )
{
if( rand() % 100 < Drop.ItemSkillRate )
{
iSkill = 1;
}
}
if( Drop.ItemMaxOption != 0 )
{
if( rand() % 100 < Drop.ItemOptRate )
{
iOption = rand() % Drop.ItemMaxOption + 1;
}
}
int iExlOpt = 0;
if(Drop.ItemExcellent)
{
if( rand() % 100 < Drop.ItemExcRate )
{
iExlOpt = this->GenExcOption(Drop.ItemMaxExc);
}
}
int iAnc = 0;
if(Drop.ItemAncent == 5 || Drop.ItemAncent == 10)
{
if( rand() % 100 < Drop.ItemAncRate )
{
iAnc = Drop.ItemAncent;
}
}
ItemSerialCreateSend(lpObj->m_Index, lpObj->MapNumber, lpObj->X, lpObj->Y, ITEMGET(Drop.ItemType, Drop.ItemIndex), iLevel, Drop.ItemDur, iOption, iLuck, iSkill, gObjMonsterTopHitDamageUser(lpObj), iExlOpt, iAnc);
#else
// ----
if( Drop.ItemLuck == 1 )
{
if( rand() % 100 < 50 )
{
iLuck = 1;
}
}
// ----
if( Drop.ItemSkill == 1 )
{
if( rand() % 100 < 50 )
{
iSkill = 1;
}
}
// ----
if( Drop.ItemMaxOption != 0 )
{
if( rand() % 100 < 50 )
{
iOption = rand() % Drop.ItemMaxOption + 1;
}
}
ItemSerialCreateSend(lpObj->m_Index, lpObj->MapNumber, lpObj->X, lpObj->Y, ITEMGET(Drop.ItemType, Drop.ItemIndex), iLevel, Drop.ItemDur, iOption, iLuck, iSkill, gObjMonsterTopHitDamageUser(lpObj), Drop.ItemExcellent, 0);
#endif
return true;
}
}
}
}
// ----
return false;
}
int DropEx::GenExcOption(int amount)
{
if (amount > 6) amount = 6;
if (amount < 1) amount = 1;
srand(time(NULL));
amount = rand() % amount + 1;
int opt_db[6] = {1, 2, 4, 8, 16, 32};
int exc = 0;
int opt_done[6] = { 0 };
for(int n=0; n < amount; n++)
{
int SearchExc = 0;
srand(time(NULL));
if( n == 0 )
{
SearchExc = opt_db[rand()%6];
opt_done[n] = SearchExc;
}
else
{
while(true)
{
SearchExc = opt_db[rand()%6];
bool bOpt = true;
for(int i=0;i<amount;i++)
{
if(SearchExc == opt_done[i])
{
bOpt = false;
}
}
if(bOpt == true)
{
opt_done[n] = SearchExc;
break;
}
}
}
exc += SearchExc;
}
return exc;
}
// -------------------------------------------------------------------------
lol its not fix.
Dude add new colomn in your current file, not needed make this.^
re: [Development] Community Edition Season6 Episode3 z-Team
Guys, what about 3rd class qvest? NPC Teleport Werewolf Quarrel dont work!
re: [Development] Community Edition Season6 Episode3 z-Team
where in client i can find this texture to resize for my own width?
http://i.imgur.com/PnVuzOt.png