[Development] Server Mu Online Season 6.3

Page 7 of 8 FirstFirst 12345678 LastLast
Results 91 to 105 of 116
  1. #91
    Account Upgraded | Title Enabled! jackbot is offline
    MemberRank
    Jan 2014 Join Date
    210Posts

    re: [Development] Server Mu Online Season 6.3

    Quote Originally Posted by maybeo View Post
    one where you can helps me this error? Gameserver start been (please inpunt authenticaition server address and port number)
    sau terrain like?Attachment 131061Attachment 131062Attachment 131063


    same problem please help

  2. #92
    Forget it RE5P3CT is offline
    MemberRank
    Dec 2005 Join Date
    BulgariaLocation
    258Posts

    re: [Development] Server Mu Online Season 6.3

    Thanks for sharing files, but i cant creat characters, except Dark Lord, how i can fix it ?

  3. #93
    ^_^ ashlay is offline
    MemberRank
    Jun 2010 Join Date
    BrazilLocation
    879Posts

    re: [Development] Server Mu Online Season 6.3

    @RE5P3CT

    Protocol.cpp
    Code:
    void CGPCharacterCreate( PMSG_CHARCREATE * lpMsg, int aIndex) 
    {
    	if (!PacketCheckTime(&gObj[aIndex]))
    	{
    		JGCharacterCreateFailSend(aIndex, lpMsg->Name);
    		return;
    	}
    
    	if (gObj[aIndex].Connected < PLAYER_LOGGED)
    	{
    		LogAdd(lMsg.Get(MSGGET(1, 220)), aIndex, gObj[aIndex].Ip_addr);
    		CloseClient(aIndex);
    		return;
    	}
    
    	if (gObj[aIndex].Connected == PLAYER_PLAYING)
    	{
    		LogAddTD("[Anti-HACK][CGPCharacterCreate] Attempted Character Create during GamePlay. [%s][%s]",
        gObj[aIndex].AccountID, gObj[aIndex].Name);
    		CloseClient(aIndex);
    		return;
    	}
    
    	if (!gCreateCharacter)
    	{
    		GCServerMsgStringSend("[CGCharacterCreate]: [%s] Try Creating DarkLord Character.", aIndex, 1);
    		JGCharacterCreateFailSend(aIndex, lpMsg->Name);
    		return;
    	}
    
    	if (lpMsg->ClassSkin != 0x00 && lpMsg->ClassSkin != 0x10 && 
    		lpMsg->ClassSkin != 0x20 && lpMsg->ClassSkin != 0x30 && 
    		lpMsg->ClassSkin != 0x40 && lpMsg->ClassSkin != 0x50 && 
    		lpMsg->ClassSkin != 0x60)
    	{
    		JGCharacterCreateFailSend(aIndex, lpMsg->Name); 
        return;
    	}
    	if (lpMsg->ClassSkin == 0x60 || gObj[aIndex].Magumsa < 1) //Rage Fighter
    	{
    	 if (lpMsg->ClassSkin == 0x30 || gObj[aIndex].Magumsa == 0) //MG
    	 {
    	  if (lpMsg->ClassSkin == 0x40 || gObj[aIndex].Magumsa != 3 ) // DL
    	  {
    	   SDHP_CREATECHAR sCreate;
    
    	   memset(&sCreate, 0, sizeof(sCreate));
    	   PHeadSetB((LPBYTE)&sCreate, 0x04, sizeof(sCreate));
    	   sCreate.ClassSkin = lpMsg->ClassSkin;
    	   sCreate.Number = aIndex;
    	   memcpy(sCreate.AccountId, gObj[aIndex].AccountID, MAX_ACCOUNT_LEN);
    	   memcpy(sCreate.Name, lpMsg->Name, MAX_ACCOUNT_LEN);
    	   char szTemp[20];
    	   char szTemp2[20];
    	   szTemp[10] = 0;
    	   szTemp2[10] = 0;
    	   memcpy(szTemp, sCreate.Name, MAX_ACCOUNT_LEN);
    	   memcpy(szTemp2, sCreate.AccountId, MAX_ACCOUNT_LEN);
    
    	   LogAddTD("Character create : %s,%s", szTemp2, szTemp);
    
    	   cDBSMng.Send((char*)&sCreate, sCreate.h.size);
    			}
    			else 
    			{
    				LogAddC(2, "error-L1: Darklord Character create error [%s]", gObj[aIndex].AccountID);
    		 	JGCharacterCreateFailSend(aIndex, lpMsg->Name);
    			 return;
    			}
    		}
    		else 
    		{
    	 	LogAddC(2, "error-L1: Magumsa Character create error [%s]", gObj[aIndex].AccountID);
    		 JGCharacterCreateFailSend(aIndex, lpMsg->Name);
    		 return;
    		}
    	}
    	else 
    	{
    		JGCharacterCreateFailSend(aIndex, lpMsg->Name);
    		return;
    	}
    }

  4. #94
    Forget it RE5P3CT is offline
    MemberRank
    Dec 2005 Join Date
    BulgariaLocation
    258Posts

    re: [Development] Server Mu Online Season 6.3

    @ashlay thank you very much for your help.

  5. #95
    Apprentice Ekor4iK is offline
    MemberRank
    Apr 2013 Join Date
    12Posts

    re: [Development] Server Mu Online Season 6.3

    Shortcuts to the server is dead! Give new please!

  6. #96
    Uber Leet gaymar001 is offline
    MemberRank
    Jun 2009 Join Date
    401Posts

    re: [Development] Server Mu Online Season 6.3

    Quote Originally Posted by Kernighan View Post
    MU ONLINE

    SEASON 6.3

    For those who have just begun or just planning to start, I think it would be very useful.
    The following is not a complete ChangeLog, not fully because I did not complete it was sometimes :)

    ChangeLog: 1.0.0.0:
    Spoiler:
    [21.02.13] 01. Fixed CheckSum-Exe error
    [21.02.13] 02. Folder optimization
    [21.02.13] 03. WzAG.dll integrated into project
    [21.02.13] 04. Fixed /post command disconnect
    [21.02.13] 05. Fixed shop config error. Added support excellent item in shop
    [22.02.13] 06. Fixed potion count
    [22.02.13] 07. Fixed packet count
    [22.02.13] 08. Fixed joomin personal ID
    [22.02.13] 09. Fixed creating summoner without shop card
    [22.02.13] 10. Fixed Wizard Ring A
    [23.02.13] 11. Fixed socket serial
    [23.02.13] 12. Fixed potion count 2
    [23.02.13] 13. Fixed Protocol *
    [23.02.13] 14. Fixed pk attack monster
    [23.02.13] 15. Fixed pk attack monster in party
    [24.02.13] 16. Fixed giocp ERROR_SEM_TIMEOUT. giocp.cpp -> 32
    [24.02.13] 17. Fixed raklion boss zone opening & closing time
    [24.02.13] 18. Fixed ProbabilityItemBag drop item luck
    [24.02.13] 19. Fixed attack in non attack area
    [24.02.13] 20. Fixed Marlon quest reset
    [25.02.13] 21. Fixed Golden monster invasion
    [25.02.13] 22. Added Golden monster settings of kundun box
    [25.02.13] 23. Fixed all jewels using process
    [25.02.13] 24. Fixed skills using level (level = 0)
    [25.02.13] 25. Added NON-PK zone to lorencia circle -> BeL4eNaK map
    [26.02.13] 26. Added +28 items support 1
    [26.02.13] 27. Added +28 items support 2
    [26.02.13] 28. Added +28 items support 3
    [26.02.13] 29. Increased max obects
    [26.02.13] 30. Added config for item disapear time
    [27.02.13] 31. Fixed error "Number of magic exceeds"
    [27.02.13] 32. Fixed error "IsSetItem Check error: (itemnum:-1)"
    [27.02.13] 33. Fixed error "error-L3 : Monster Level Overflow (149)"
    [27.02.13] 34. Fixed +28 option clear
    [27.02.13] 35. Fixed pk damage
    [28.02.13] 36. Fixed vulcanus map RegenOK
    [28.02.13] 37. Fixed teleport to vulcanus map
    [28.02.13] 38. Added new duel pvp
    [28.02.13] 39. Added chaosbox mix system
    [28.02.13] 40. Fixed weapon skill attack in duel room
    [29.02.13] 41. Fixed orb skill attack in duel room
    [29.02.13] 42. Fixed Summoner, MagicGladiator, DarkLord create button
    [29.02.13] 43. RageFighter. Fixed DefaultCharacterCreate
    [29.02.13] 44. RageFighter. Fixed GenerableClass
    [29.02.13] 45. Fixed LevelSmallConvert item level > 13
    [30.02.13] 46. RageFighter. Fixed classdef::SetEquipment
    [30.02.13] 47. Fixed max type player
    [30.02.13] 48. RageFighter. Fixed set BP
    [30.02.13] 49. RageFighter. Fixed default magic list
    [30.02.13] 50. RageFighter. Fixed default skill
    [31.02.13] 51. RageFighter. Fixed character ChangeUp skin
    [31.02.13] 52. RageFighter. Fixed level point BloodCastle
    [31.02.13] 53. RageFighter. Fixed level point ChaosCastle
    [31.02.13] 54. RageFighter. Fixed level point CryWolf
    [31.02.13] 55. RageFighter. Fixed level point IllusionTemple
    [01.03.13] 56. RageFighter. Fixed level point gObjLevelUp
    [01.03.13] 57. Fixed CharSet character selection
    [01.03.13] 58. Fixed CharSet character playing
    [01.03.13] 59. RageFighter. Fixed attack tate
    [01.03.13] 60. RageFighter. Fixed defense rate
    [02.03.13] 61. RageFighter. Fixed fenrir attack damage
    [02.03.13] 62. RageFighter. Fixed attack, defense rate 2
    [02.03.13] 63. RageFighter. Fixed attack damage MinRight, MaxRight, MinLeft, MaxLeft
    [02.03.13] 64. RageFighter. Fixed defense
    [02.03.13] 65. RageFighter. Fixed calc max life power
    [03.03.13] 66. Fixed item level defense +14, +15
    [03.03.13] 67. Fixed database save item level +14, +15
    [03.03.13] 68. RageFighter. Fixed all skill(s)
    [03.03.13] 69. RageFighter. Fixed item(*).txt required new class (GameServer white screen)
    [03.03.13] 70. Fixed new teleport protocol
    [04.03.13] 71. Fixed Julia Teleporter in Loren Makret
    [04.03.13] 72. Added new gate Loren Market, Karutan1, Karutan2, ...
    [04.03.13] 73. Added new terrain Loren Market, Karutan1, Karutan2
    [04.03.13] 74. Fixed item +14, +15 sell price
    [04.03.13] 75. Added CalCharacter
    [04.03.13] 76. RageFighter. Fixed leave duel
    [05.04.13] 77. Added Summoner Skill Tree
    [05.04.13] 78. Fixed max skills
    [05.04.13] 79. Fixed leave duel if one of the opponents get disconnect
    [05.04.13] 80. Fixed create RageFighter class without shop card (SmallHabit)
    [05.04.13] 81. Fixed message when character reach the maximum level
    [05.04.13] 82. Added new mix type for item level > 13
    [06.04.13] 83. Added new mix chaos succes rate for item level > 13
    [06.04.13] 84. Fixed Max Char Skill Tree
    [06.04.13] 85. Added party experience config
    [06.04.13] 86. Fixed user regen coordinates after kill
    [06.04.13] 87. Fixed load Terrain.att count
    [07.04.13] 88. RageFighter. Fixed read new skill and correct skill icon without reload character
    [07.04.13] 89. Fixed Master drop zen
    [07.04.13] 90. Fixed item duration time after drop

    e.t.c.

    SERVER FILES + SOURCE CODE
    https://mega.co.nz/#!OBZECZAL!Y4_J1X...ETCHPSC7ZdoSDY

    CLIENT FILES (1.03.28 Global MU Online)
    https://mega.co.nz/#!iZAXTQQK!WQbcpC...67NDS89asR_fMM
    this file have custom items?

  7. #97

    re: [Development] Server Mu Online Season 6.3

    :S link is death pls reshare

  8. #98
    Enthusiast maxmanaman is offline
    MemberRank
    Mar 2008 Join Date
    41Posts

    re: [Development] Server Mu Online Season 6.3

    Help Error


  9. #99
    Novice muthanchet is offline
    MemberRank
    Sep 2009 Join Date
    2Posts

    re: [Development] Server Mu Online Season 6.3

    help me enable DoppelGanger
    i can't join event
    this event begin wait 780'
    this time does not decrease.
    sorry bad englist =.='
    pls help me :((
    Last edited by muthanchet; 26-03-14 at 03:25 PM.

  10. #100
    Novice muthanchet is offline
    MemberRank
    Sep 2009 Join Date
    2Posts

    re: [Development] Server Mu Online Season 6.3

    Quote Originally Posted by muthanchet View Post
    help me enable DoppelGanger
    i can't join event
    this event begin wait 780'
    this time does not decrease.
    sorry bad englist =.='
    pls help me :((
    pls help me :((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((

  11. #101
    Proficient Member muzic25 is offline
    MemberRank
    Aug 2008 Join Date
    HungaryLocation
    183Posts

    re: [Development] Server Mu Online Season 6.3

    Quote Originally Posted by muthanchet View Post
    pls help me :((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
    Season 5 events isn't developed...

  12. #102
    Darkness Member Kiosani is offline
    MemberRank
    Oct 2007 Join Date
    ArgentinaLocation
    1,276Posts

    re: [Development] Server Mu Online Season 6.3

    These source codes don't work, the community is in total decay.. increasingly knowledgeable people who are fully devoted to the development of MU Online there, I think at this point it is correct to say that: "Communities of development for Mu Online "and" Mu Online same, have died."

    PS: Sad but true.

  13. #103
    Proficient Member josesp is offline
    MemberRank
    Mar 2009 Join Date
    186Posts

    re: [Development] Server Mu Online Season 6.3

    Quote Originally Posted by mauro07 View Post
    These source codes don't work, the community is in total decay.. increasingly knowledgeable people who are fully devoted to the development of MU Online there, I think at this point it is correct to say that: "Communities of development for Mu Online "and" Mu Online same, have died."

    PS: Sad but true.
    Cause you can't do anything by yourself doesn't mean other people can't

  14. #104
    Darkness Member Kiosani is offline
    MemberRank
    Oct 2007 Join Date
    ArgentinaLocation
    1,276Posts

    re: [Development] Server Mu Online Season 6.3

    Quote Originally Posted by josesp View Post
    Cause you can't do anything by yourself doesn't mean other people can't
    I can do many things by myself.. since I learned some concepts of C++, and I got into the coding server side too, so here your comment is very out of place.

    PS: I've seen his work in: WzTeam Season 4.6 (source code) of that and a lot of what you wear on your fantastic code is made by other persons (95% of your "code work" is stolen from Rz true MU Coders), so here you're not the one to come and tell me that I do not I can encode by myself.

    Spanish:

    PD: He visto tu trabajo en los archivos de: WzTeam Season 4.6 (tengo tus codigos fuente), y lo único que veo en tu "fantástico código", son cosas hechas por otras personas (el 95% de tu supuesto trabajo con ese código, es robado de trabajos anteriores con el GameServer 1.00.87 desarrollado por los verdaderos codificadores de RaGEZONE), entonces yo pienso que no sos la persona indicada, para venir a plantearme que yo no puedo hacer algo por mi mismo, porque por lo visto estarías siendo un Hipócrita.

    PD 2: Tu fabuloso: "Gestor de Eventos", es basura solamente un montón de lineas de código (facil de entender hasta para mi, que soy Novato), y que por la forma en la que esta programado, aun sin haberlo testeado. se nota que tiene muchos bugs, o mas bien que los genera al gameserver. y vos venís a decirme a mi, que yo no puedo hacer cosas por mi mismo? EPIC FAILLLL!!! xD

    para los que no me crean... porque mejor no lo ven con sus propios ojos, este es dichoso Gestor de Eventos, del señor: Josep (es una mierda):

    Code:
    #include  "stdafx.h"
    #include  "ChaosEvent.h"
    #include  "log.h"
    #include  "gameserver.h"
    #include  "Readscript.h"
    
    
    CChaosEvent g_ChaosEvent;
    
    
    typedef void (*TAllSendServerMsg)(char* msg);
    typedef void (*TgObjMonsterDieGiveItem)(OBJECTSTRUCT *lpObj, OBJECTSTRUCT *lpTargetObj);
    typedef short (*TgObjAddMonster)(int MapID);
    typedef BOOL (*TgObjSetMonster)(int aIndex, int MonsterClass);
    
    
    TAllSendServerMsg AllSendServerMsg = (TAllSendServerMsg)(0x004041D3);
    TgObjMonsterDieGiveItem gObjMonsterDieGiveItem = (TgObjMonsterDieGiveItem)(0x0041D9E0);
    TgObjAddMonster gObjAddMonster = (TgObjAddMonster)(0x004044F3);
    TgObjSetMonster gObjSetMonster = (TgObjSetMonster)(0x0040616D);
    
    
    CChaosEvent::CChaosEvent() : m_bInstantSpawn(false), m_bEnableEvent(false)
    {
        InitializeCriticalSection(&m_critical);
    
    
        ZeroMemory(eventArray,8000); 
    }
    
    
    CChaosEvent::~CChaosEvent()
    {
        DeleteCriticalSection(&m_critical);
    }
    
    
    void CChaosEvent::Load()
    {
        EnterCriticalSection(&m_critical);
        //Poner funcion para limpiar bichos existentes
        Clear();
    
    
        SMDFile = fopen("..\\Data\\WZTGroup_EMUEvents.dat", "r");
    
    
        if(SMDFile == NULL) 
        {
    #if  0
            MsgBox("[Chaos Event]Cannot load settings file\nAutomatic disable event");
    #endif 
    
    
            m_bEnableEvent = false;
    
    
            return;
        }
    
    
        SMDToken Token;
    
    
        int iType = -1;
    
    
        SPAWN_INFO SpawnInfo;
        MONSTER_INFO MonsterInfo;
        ITEM_INFO ItemInfo;
    
    
        while(true)
        {
            Token = GetToken();
    
    
            if(Token == END)
                break;
    
    
            iType = TokenNumber;
    
    
            while(true)
            {
                if(iType == 0)
                {
                    Token = GetToken();
    
    
                    if(Token == NAME && strcmp("end",TokenString) == 0)
                        break;
    
    
                    this->m_bEnableEvent = TokenNumber;
    
    
                    if(this->m_bEnableEvent == false)
                        break;
    
    
                    Token = GetToken();
    
    
                    this->m_bInstantSpawn = TokenNumber;
                }
                else if(iType == 1)
                {
                    Token = GetToken();
    
    
                    if(Token == NAME && strcmp("end",TokenString) == 0)
                        break;
    
    
                    SpawnInfo.iCategory = TokenNumber;
    
    
                    Token = GetToken();
                    SpawnInfo.bStaticTime = TokenNumber;
    
    
                    SpawnInfo.wDay = 0;
                    
                    Token = GetToken();
                    SpawnInfo.iHour = TokenNumber;
    
    
                    Token = GetToken();
                    SpawnInfo.iMinute = TokenNumber;
    
    
                    Token = GetToken();
                    SpawnInfo.bMessage = TokenNumber;
    
    
                    Token = GetToken();
    
    
                    if(Token == NAME)
                        strcpy(SpawnInfo.szMessage, TokenString);
    
    
                    if(this->m_bInstantSpawn == false)
                    {
                        SpawnInfo.dwLastTick = GetTickCount();
                    }
                    else
                    {
                        SpawnInfo.dwLastTick = 0;
                    }
    
    
                    this->m_Spawns.push_back(SpawnInfo);
                }
                else if(iType == 2)
                {
                    Token = GetToken();
    
    
                    if(Token == NAME && strcmp("end",TokenString) == 0)
                        break;
    
    
                    MonsterInfo.iCategory = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iDropCategory = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iMonsterID = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iMapID = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iX1 = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iY1 = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iX2 = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iY2 = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iAddHP = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iAddDefense = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iAddAttack = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iDropRate = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iExcRate = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iAncRate = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.iSpawnCount = TokenNumber;
    
    
                    Token = GetToken();
                    MonsterInfo.bShowMessage = TokenNumber;
    
    
                    Token = GetToken();
    
    
                    if(Token == NAME)
                        strcpy(MonsterInfo.szMessage,TokenString);
    
    
                    MonsterInfo.iCurSpawnCount = 0;
    
    
                    this->m_Monsters[MonsterInfo.iCategory].push_back(MonsterInfo);
                }
                else if(iType == 3)
                {
                    Token = GetToken();
    
    
                    if(Token == NAME && strcmp("end",TokenString) == 0)
                        break;
    
    
                    ItemInfo.iCategory = TokenNumber;
    
    
                    Token = GetToken();
                    ItemInfo.iItemType = TokenNumber;
    
    
                    Token = GetToken();
                    ItemInfo.iItemType = ITEMGET(ItemInfo.iItemType,TokenNumber);
    
    
                    Token = GetToken();
                    ItemInfo.iLevel = TokenNumber;
    
    
                    Token = GetToken();
                    ItemInfo.bSkill = TokenNumber;
    
    
                    Token = GetToken();
                    ItemInfo.bLuck = TokenNumber;
    
    
                    Token = GetToken();
                    ItemInfo.iOption = TokenNumber;
    
    
                    Token = GetToken();
                    ItemInfo.iExcellent = TokenNumber;
    
    
                    Token = GetToken();
                    ItemInfo.bAncient = TokenNumber;
    
    
                    this->m_ItemInfo[ItemInfo.iCategory].push_back(ItemInfo);
                }
            }
        };
    
    
        fclose(SMDFile);
    
    
        //if(m_bEnableEvent == true)
        //    Log.outInfo("[Chaos Event]Running Event Spawns(%d)", this->m_Spawns.size());
    
    
        LeaveCriticalSection(&m_critical);
    }
    
    
    void CChaosEvent::Process()
    {
        EnterCriticalSection(&m_critical);
    
    
        if(this->m_bEnableEvent == false)
        {
            LeaveCriticalSection(&m_critical);
            return;
        }
    
    
        DWORD dwTickCount = GetTickCount();
    
    
        for(LIST_SPAWN::iterator it = m_Spawns.begin();it != m_Spawns.end();it++)
        {
            LPSPAWN_INFO lpSpawnInfo = &(*it);
    
    
            bool bRun = false;
    
    
            SYSTEMTIME sysTime;
    
    
            GetLocalTime(&sysTime);
    
    
            if(lpSpawnInfo->bStaticTime == false)
            {
                bRun = ((dwTickCount - lpSpawnInfo->dwLastTick) > ((lpSpawnInfo->iHour*60)+(lpSpawnInfo->iMinute))*60*1000);
            }
            else
            {
                bRun = (sysTime.wHour == lpSpawnInfo->iHour && sysTime.wMinute == lpSpawnInfo->iMinute && sysTime.wDay != lpSpawnInfo->wDay);
            }
    
    
            if(bRun == true)
            {
                if(lpSpawnInfo->bStaticTime == true)
                    lpSpawnInfo->wDay = sysTime.wDay;
                else
                    lpSpawnInfo->dwLastTick = dwTickCount;
    
    
                for(LIST_MONSTER::iterator it = m_Monsters[lpSpawnInfo->iCategory].begin();it != m_Monsters[lpSpawnInfo->iCategory].end();it++)
                {
                    LPMONSTER_INFO lpMonsterInfo = &(*it);
    
    
                    if(lpMonsterInfo->iCategory == lpSpawnInfo->iCategory)
                    {
                        while(lpMonsterInfo->iCurSpawnCount++ < lpMonsterInfo->iSpawnCount)
                            this->AddMonster(lpMonsterInfo);
                    }
                }
    
    
                if(lpSpawnInfo->bMessage == true)
                {
                    AllSendServerMsg(lpSpawnInfo->szMessage);
                }
            }
        }
        LeaveCriticalSection(&m_critical);
    }
    
    
    void CChaosEvent::KillProcess(OBJECTSTRUCT *lpObj, OBJECTSTRUCT *lpTargetObj)
    {
        if(eventArray[lpObj->m_Index] == false)
        {
            gObjMonsterDieGiveItem(lpObj,lpTargetObj);
            return;
        }
    
    
        EnterCriticalSection(&m_critical);
    
    
        MONSTER_MAP::iterator it = m_MonsterMap.find(lpObj->m_Index);
    
    
        if(it == m_MonsterMap.end())
        {
            LeaveCriticalSection(&m_critical);
            return;
        }
    
    
        DWORD dwIndex = gObjMonsterTopHitDamageUser((LPBYTE)lpObj);
    
    
        lpTargetObj = &ObjTab[dwIndex];
    
    
        LPMONSTER_INFO lpMonsterInfo = it->second;
    
    
        lpMonsterInfo->iCurSpawnCount--;
    
    
        if(lpMonsterInfo->bShowMessage == true)
        {
            char szMessage[256] = {0};
    
    
            sprintf(szMessage, lpMonsterInfo->szMessage, lpTargetObj->Name);
    
    
            AllSendServerMsg(szMessage);
        }
    
    
        if(m_ItemInfo[lpMonsterInfo->iDropCategory].size() > 0 && rand()%100 < lpMonsterInfo->iDropRate)
        {
            int iSel = rand()%m_ItemInfo[lpMonsterInfo->iDropCategory].size();
    
    
            LPITEM_INFO lpItemInfo = &m_ItemInfo[lpMonsterInfo->iDropCategory][iSel];
    
    
            int iNewOption = 0, iSetOption = 0;
    
    
            if(rand()%100 < lpMonsterInfo->iExcRate)
            {
                int iCount = rand()%(lpItemInfo->iExcellent+1);
    
    
                if(iCount > 6)
                    iCount = 6;
    
    
                for(int i = 0;i < iCount;i++)
                    iNewOption |= 1 << i;
            }
    
    
            if(rand()%100 < lpMonsterInfo->iAncRate && lpItemInfo->bAncient == true)
            {
                BOOL isSet = lpItemInfo->iItemType;
    
    
                _asm
                {
                    push isSet;
                    mov ecx,0x07AD9630;
                    mov eax, 0x00405551;
                    call eax;
                    mov isSet, eax;
                    sub esp,4;
                };
    
    
                if(isSet == TRUE)
                {
                    _asm
                    {
                        mov ecx,0x07AD9630;
                        mov eax, 0x00404291;
                        call eax;
                        mov iSetOption, eax;
                    };
                    //iSetOption = gSetItemOption.GenSetOption(lpItemInfo->iItemType);
                    iNewOption = 0;
                }
            }
    
    
            ItemSerialCreateSend(dwIndex, lpObj->MapNumber, lpObj->X, lpObj->Y, lpItemInfo->iItemType, rand()%(lpItemInfo->iLevel+1), 255, lpItemInfo->bSkill, lpItemInfo->bLuck, rand()%(lpItemInfo->iOption+1), dwIndex, iNewOption, iSetOption);
        }
    
    
        eventArray[lpObj->m_Index] = false;
        gObjDel(lpObj->m_Index);
        m_MonsterMap.erase(it);
    
    
        LeaveCriticalSection(&m_critical);
    }
    
    
    void CChaosEvent::AddMonster(LPMONSTER_INFO lpMonsterInfo)
    {
        int iIndex = gObjAddMonster(lpMonsterInfo->iMapID);
    
    
        if(iIndex == -1)
            return;
    
    
        OBJECTSTRUCT *lpObj = &ObjTab[iIndex];
    
    
        lpObj->MapNumber = lpMonsterInfo->iMapID;
    
    
        while(true)
        {
            int iPos;
    
    
            int X1 = lpMonsterInfo->iX1, X2 = lpMonsterInfo->iX2, Y1 = lpMonsterInfo->iY1, Y2 = lpMonsterInfo->iY2;
    
    
            BYTE MapNumber = lpObj->MapNumber;
    
    
            _asm
            {
                mov edx, lpObj;
                lea ecx, dword ptr ds:[edx+0x12E];
                push ecx;
                lea ecx, dword ptr ds:[edx+0x12C];
                push ecx;
                push Y2;
                push X2;
                push Y1;
                push X1;
                movzx eax, MapNumber;
                push eax;
                mov ecx, 0x07D800B0;
                mov eax, 0x0040768F;
                call eax;
                mov iPos, eax;
            };
    
    
            if(iPos != 0)
                break;
        };
    
    
        lpObj->TX = lpObj->X;
        lpObj->TY = lpObj->Y;
        lpObj->MTX = lpObj->X;
        lpObj->MTY = lpObj->Y;
        lpObj->StartX = lpObj->X;
        lpObj->StartY = lpObj->Y;
        lpObj->Dir = rand()%8;
        lpObj->m_State = 1;
        lpObj->PathCount = 0;
    
    
        gObjSetMonster(iIndex,lpMonsterInfo->iMonsterID);
    
    
        lpObj->Life = lpObj->MaxLife *= (1.0f+(lpMonsterInfo->iAddHP/100.0f));
        lpObj->m_AttackDamageMin *= ((100.0f+lpMonsterInfo->iAddAttack)/100.0f);
        lpObj->m_AttackDamageMax *= ((100.0f+lpMonsterInfo->iAddAttack)/100.0f);
        lpObj->m_Defense *= ((100.0f+lpMonsterInfo->iAddDefense)/100.0f);
    
    
        eventArray[iIndex] = true;
    
    
        m_MonsterMap.insert(std::make_pair(iIndex,lpMonsterInfo));
    }
    
    
    void CChaosEvent::Clear()
    {
        m_Spawns.clear();
        m_MonsterMap.clear();
    
    
        for(int i = 0;i < MAX_CATEGORY;i++)
        {
            m_ItemInfo[i].clear();
            m_Monsters[i].clear();
        }
    
    
        for(MONSTER_MAP::iterator it = m_MonsterMap.begin();it != m_MonsterMap.end();it++)
        {
            gObjDel(it->first);
            eventArray[it->first] = false;
        }
    
    }
    PD 3: Yo programe el otro dia un: NPC Exchanger, para unos Files Season 3, que funciona perfectamente, que no genera bugs al gameserver, y solamente me tomo 5 min, hacerlo:

    Code:
    bool InitNPCTalk(int aIndex,int aTargetIndex){
    	OBJECTSTRUCT* gObj = (OBJECTSTRUCT*)(aIndex * OBJECT_SIZE + OBJECT_BASE);
    	OBJECTSTRUCT *gTargetObj = (OBJECTSTRUCT*) OBJECT_POINTER (aTargetIndex);
    
    if(gTargetObj->Class == LUKE_THE_HELPER && gTargetObj->MapNumber == 0)	{
    		if(DeleteItemFromPlayer(aIndex,ITEMGET(14,68),1) == 0)
    		{
    			GCServerMsgStringSend("You don't have the special item!",aIndex,1);
    			return true;
    		}
    		else
    		{
    			int Type = ITEMGET(14,41);//Gemstone
    			GCFireworkSend(aIndex,gObj->X,gObj->Y,1);
    			ItemSerialCreateSend(aIndex,gObj->MapNumber,gObj->X,gObj->Y,Type,0,0,0,0,0,0,0,0);
    			GCServerMsgStringSend("Thank you noble warrior.. You are worthy to receive the 'Gemstone'.",aIndex,1);
    		}
    	}
    	return false;
    }
    Last edited by Kiosani; 28-03-14 at 09:12 PM.

  15. #105
    Proficient Member josesp is offline
    MemberRank
    Mar 2009 Join Date
    186Posts

    re: [Development] Server Mu Online Season 6.3

    EPIC FAIL.. im not josep from stupid wzteam... idiot...

    Sos mas lento de lo que pensaba.. anda a hastle quizas ahi seas bueno muchachito..

    PD: Espero que hayas usado el dialogo del Helper...



Page 7 of 8 FirstFirst 12345678 LastLast

Advertisement