Evolution Season 3 Episode 1

Page 1 of 3 123 LastLast
Results 1 to 15 of 43
  1. #1
    Evolution Team Th3AnG3L is offline
    True MemberRank
    Apr 2014 Join Date
    634Posts

    Evolution Season 3 Episode 1

    Evolution Season 3 Episode 1
    ! Hello all !
    ! Here i will share information about this project !

    ! GameServer Version !
    ! 1.0.18.0 !

    ! Protocol !
    ! JPN , KOR !

    >> Getting Started Basic <<
    1. ConnectServer - v1.0.10.995
    2. EDataServer - Pre-Coded
    3. JoinServer - Pre-Coded
    << End of Basic >>

    Hint:
    1. Red - Old Update
    2.
    Green - Last Update
    3.
    Orange - Test

    >>Update 1:<<
    - Added SQL Connection
    - Added Win XP,Vista,7,Server Support
    - x64 bit OS Support
    - Created ESQL.ini file for config
    - Added GameServer Reload Options
    - Added Error System Message
    - Added Check File Exist
    - Created information read from Folder EData
    - GameServer files read re-maked
    - Rebuild Information's in one DB
    << End Update 1 >>

    >>Update 2:<<
    - Added Question Event
    - Added Question Configs
    - Added Question Commands
    - Added Question Reload Options
    - Added Game Masters File
    - Added Game Masters Privileges
    - Added Game Masters Commands
    - Added Kill Event
    - Added Kill Event Configs
    - Added Kill Event Reload Options
    - Added Zen Event
    - Added Zen Event Reload Options
    - Added Zen Event Configs
    - Added Timer to Events
    - Fix Time End error
    >> End Update 2 <<

    >>Update 3:<<
    - Added VIP Option
    - Added VIP Update
    - Added VIP Exp
    - Added VIP Drop
    - Read Info MEMB_INFO > VIP
    - Added Login Information
    - Added Messages
    - Added ACC Info
    - Added MaxOnline Info
    >> End Update 3 <<

    >>Update 4:<<
    - Added Ecoins System
    - Added Ecoins Options
    -Added Ecoins DB Tables
    - Added Reset System
    - Added Custom Class Reset Options
    - Added Reset Options
    - Added DB Info Update
    - Added Team vs Team Event
    - Added Team vs Team Options
    - Added Team vs Team Info
    (Map 40)
    (Random X Y)
    (Random Time)
    - Added New GM commands
    - Added Jewels Pack System
    - Added Monster Spawn Command
    - Added OffTrade
    - Added New Columns in ECommands.ini
    - Added Messages display
    << End Update 4 >>

    >>Update 5:<<
    - Added /online
    - Added /post
    - Added /add
    - Added /offzen
    - Added /offcoin
    - Added /skin
    - Added /clearpk
    - Added /status
    - Added /reset
    - Added /question
    - Added /packlife
    - Added /unpacklife
    - Added /packchaos
    - Added /unpackchaos
    - Added /packcreation
    - Added /unpackcreation
    - Added /packharmony
    - Added /unpackharmony
    - Added /packguardian
    - Added /unpackguardian
    GM
    - Added /mute (GM)
    - Added /unmute (GM)
    - Added /mob (GM)
    - Added /gmove (GM)
    - Added /setzen (GM)
    - Added /pkclear (GM)
    - Added /setpk (GM)
    - Added /gg (GM)
    - Added /trace (GM)
    - Added /item (GM)
    << End Update 5 >>

    >>Update 6:<<
    - Added Guild System
    - Added Guild Options
    - Added EGuilds.ini Configs
    - Added Golden Archer System
    - Added Golden Archer Options
    - Added Jewel Prices
    - Added Jewel Rates
    - Added Chaos Machine Mixes
    - Added Chaos Machine Rates
    - Added Anti-Dupe Lahap
    - Added GS_CS in GS (2 in 1)
    - Added Default Server Settings
    (LevelUp,Skills,Options..etc..)
    - Added Zen Drop Custom Configs
    << End Update 6 >>

    >>Client Build 1.0<<
    - Fixed Font
    - New Interface
    - Items Increased
    - Glow
    - Minimap
    - Master Level Display
    - Fix Master Level Enter Events
    - LevelUp Message
    - All Maps Corrected (no missing parts,no bugs)
    - All Items,Options,SetType Corrected
    - MoveReq corrected
    - Gates corrected
    - New Jewels Support
    - CashShop Support
    - New Wings Support
    - Monster HP Bar (In progress)
    - 3D Camera (In progress)
    - Exp bar fixed
    << End Client Update >>

    ScreenShots:

    - Guild System

    - NPC Buff System

    - Items Info


    - Client Infos Display

    - CashShop Info

    - Chaos Mix Illusion Temple
    Last edited by Th3AnG3L; 07-05-14 at 11:11 PM.


  2. #2
    Evolution Team Th3AnG3L is offline
    True MemberRank
    Apr 2014 Join Date
    634Posts

    Re: Evolution Season 3 Episode 1

    yes it already has quest system
    when will be released don't know for sure true date, still has more work to do its not so easy to build it for 1 day you know that ^^

  3. #3
    Evolution Team Th3AnG3L is offline
    True MemberRank
    Apr 2014 Join Date
    634Posts

    Re: Evolution Season 3 Episode 1

    someone has a /bau source to share?

    Code:
    void TrocaBau(short aIndex,char * Cod){
    
    
    OBJECTSTRUCT *lpObj = (OBJECTSTRUCT*) OBJECT_POINTER(aIndex);
    OBJECTSTRUCT * gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
    
    int BauCod = atoi(Cod);
    char QueryBau[200],mensagem[200];
    
    
    int TotalBau = SQL.GetFieldInt("MuOnline.dbo.MEMB_INFO","BausExtra", "WHERE Memb___id = '%s'",lpObj->AccountID);
        if (BauCod < 0 ){
            GCServerMsgStringSend("Error Syntax : /bau <number>",aIndex,1);
            return ;    
        }
        else if(TotalBau < BauCod){
            sprintf(mensagem,"[Error] : You have reached the limit %d baus!",TotalBau);
            GCServerMsgStringSend(mensagem,aIndex,1);
            return;
        } else {
            if( gObj->WarehouseSave == 0 )
        {
          sprintf(QueryBau,"EXEC MuOnline.dbo.MUDAR_BAU %d,%s",BauCod,lpObj->AccountID);
          SQL.Execute(QueryBau);
          sprintf(mensagem,"Chest changed successfully! You are using the chest %d",BauCod);
        }
         else
        {
         GCServerMsgStringSend("[Error] : Close warehouse to use this command!",aIndex,1);
        }
        }
    }
    Code:
    CREATE TABLE [VaultsExtra] (
        [login] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
        [bauCod] [int] IDENTITY (1, 1) NOT NULL ,
        [items] [varbinary] (1200) NULL ,
        [money] [int] NULL ,
        [pw] [smallint] NULL ,
        [IdAcc] [int] NOT NULL 
    ) ON [PRIMARY]
    GO
    Code:
    ALTER TABLE dbo.warehouse ADD
        [BauUso] [int] NOT NULL CONSTRAINT [DF_warehouse_BauUso] DEFAULT (0)
    GO
    Code:
    ALTER TABLE dbo.MEMB_INFO ADD
        BausExtra int NOT NULL DEFAULT 
    GO


    Code:
    CREATE PROCEDURE [dbo].[MUDAR_BAU]  @bauCod INT @LogiN varchar(10)) AS
    BEGIN
        DECLARE @bauUSO1 int
        set @bauUSO1 = (SELECT BauUso  FROM warehouse WHERE AccountID = @LogiN)
        IF ( EXISTS ( SELECT * FROM VaultsExtra WHERE [IdAcc] = @bauCod ) ) and  @bauUSO1 != @bauCod)
        BEGIN
            DECLARE  @itemback varbinary(1200)
            DECLARE  @Money int
            set @Money = (SELECT [Money] FROM warehouse WHERE AccountID = @LogiN)
            set @itemback = (SELECT Items FROM warehouse WHERE AccountID = @LogiN)
            IF  @bauCod > 0) AND  @bauUSO1 = 0)
            BEGIN
                UPDATE VaultsExtra SET Items = @itemback,[Money] @Money WHERE login = @LogiN AND IdAcc = 0
            END        
            UPDATE warehouse SET Items = (SELECT Items FROM VaultsExtra WHERE Login = @LogiN AND  IDAcc = @bauCod),[Money] = (SELECT [Money] FROM VaultsExtra WHERE Login = @LogiN AND  IDAcc = @bauCod),BauUso = @bauCod  WHERE AccountID = @LogiN
            UPDATE VaultsExtra SET Items = @itemback,[Money] @Money WHERE login = @LogiN AND IDAcc = @bauUSO1
        END
    END
    GO
    Code:
    CREATE PROCEDURE [dbo].[CRIAR_BAU]  @LogiN varchar(10)) AS
    BEGIN
        DECLARE @IDProce int
        set @IDProce = (select count(items) FROM VaultsExtra Where login = @LogiN)
        IF (EXISTS ( SELECT * FROM VaultsExtra WHERE [bauCod] = 0 ))
        BEGIN
        set @IDProce = 0
        END
        INSERT INTO VaultsExtra (login,items,[money],pw,IdAcc) VALUES  @LogiN,0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,0,1,@IDProce)
        UPDATE MEMB_INFO set BausExtra=BausExtra+1 Where memb___id = @LogiN
    END
    GO

    Code:
    if (!memcmp(&Protocol[13],CommandBau,strlen(CommandBau)))
    	{
    		TrocaBau(gObjId,(char*)Protocol+13+strlen(CommandBau));
    		//TrocaBau(short aIndex);
    	}
    Last edited by Th3AnG3L; 06-05-14 at 07:49 PM.

  4. #4
    Retired NanoGuy is offline
    True MemberRank
    Jul 2012 Join Date
    IsraelLocation
    286Posts

    Re: Evolution Season 3 Episode 1

    Code:
    bool cChat::WareCommand(LPOBJ gObj, char *Msg)
    {
        if (CheckCommand(gObj, Configs.Commands.IsMultyVault, GmSystem.NONE, Configs.Commands.ZenForChange, Configs.Commands.PcPointForChange, Configs.Commands.WCoinForChange, Configs.Commands.WebPointsForChange, 0, 1, 0, "Ware", "/ware <num>", Msg))
            return true;
    
        if (gObj->WarehouseSave != 0 && gObj->m_IfState.use != 0 && gObj->m_IfState.state != 0 && gObj->m_bMapSvrMoveReq != false && gObj->m_bMapSvrMoveQuit != false && gObj->m_State != 1)
        {
            MessageLog(1, c_Red, t_COMMANDS, gObj, "[Ware] Stop all you actions and try again!");
            return true;
        }
    
        int WantSlot = 0;
        int UsedSlot = 0;
        sscanf(Msg, "%d", &WantSlot);
    
        if (MuOnlineQuery.ExecQuery("SELECT UsedSlot FROM warehouse WHERE AccountID = '%s'", gObj->AccountID) == TRUE)
        {
            short result = MuOnlineQuery.Fetch();
            if (result != SQL_NO_DATA && result != SQL_NULL_DATA)
            {
                UsedSlot = MuOnlineQuery.GetAsInteger("UsedSlot");
            }
        }
        MuOnlineQuery.Close();
    
        if (UsedSlot <= 0)
        {
            MuOnlineQuery.ExecQuery("UPDATE warehouse SET Items01 = Items, UsedSlot = 1 WHERE AccountID = '%s'", gObj->AccountID);
            MuOnlineQuery.Close();
            MessageLog(1, c_Red, t_COMMANDS, gObj, "[Ware] something went wrong please try again!");
            return true;
        }
        else
        {
            if (WantSlot < 1 || WantSlot > Configs.Commands.NumberOfVaults)
            {
                MessageLog(1, c_Red, t_COMMANDS, gObj, "[Ware] You can use from 1 to %d ware!", Configs.Commands.NumberOfVaults);
                return true;
            }
    
            if (UsedSlot == WantSlot)
            {
                MessageLog(1, c_Red, t_COMMANDS, gObj, "[Ware] You need to chose other vault number!");
                return true;
            }
    
            TakeCommand(gObj, Configs.Commands.ZenForChange, Configs.Commands.PcPointForChange, Configs.Commands.WCoinForChange, Configs.Commands.WebPointsForChange, "Ware");
    
            if (MuOnlineQuery.ExecQuery("UPDATE warehouse SET Items%02d = Items, Items = Items%02d, UsedSlot = %d WHERE AccountID = '%s'", UsedSlot, WantSlot, WantSlot, gObj->AccountID) == TRUE)
                MessageLog(1, c_Red, t_COMMANDS, gObj, "[Ware] You successfully change vault from %d to %d!", UsedSlot, WantSlot);
            else
                MessageLog(1, c_Red, t_COMMANDS, gObj, "[Ware] something went wrong please try again!", UsedSlot, WantSlot);
    
            MuOnlineQuery.Close();
        }
    
        return true;
    }
    i edit IA Julia code to make it more secure and friendly BTW the code its not tested but should work good

    *code updated*
    Last edited by NanoGuy; 09-05-14 at 07:27 PM.

  5. #5
    Evolution Season 3 Episode 1 LarvasFaint is offline
    True MemberRank
    Nov 2008 Join Date
    IngressLocation
    1,315Posts

    Re: Evolution Season 3 Episode 1

    Also don`t forget to make timeout between changing vaults (10 seconds)

  6. #6
    Retired NanoGuy is offline
    True MemberRank
    Jul 2012 Join Date
    IsraelLocation
    286Posts

    Re: Evolution Season 3 Episode 1

    Quote Originally Posted by CyberLoveMD View Post
    Also don`t forget to make timeout between changing vaults (10 seconds)
    the code above synced with GS so there no need of any stupid timer

  7. #7
    Evolution Season 3 Episode 1 LarvasFaint is offline
    True MemberRank
    Nov 2008 Join Date
    IngressLocation
    1,315Posts

    Re: Evolution Season 3 Episode 1

    Quote Originally Posted by NanoGuy View Post
    the code above synced with GS so there no need of any stupid timer
    I`ll test it when beta files are released..

  8. #8
    Evolution Team Th3AnG3L is offline
    True MemberRank
    Apr 2014 Join Date
    634Posts

    Re: Evolution Season 3 Episode 1

    with this code i need to rebuild everything to declare , not good option
    maybe other information is welcomed

  9. #9
    Retired NanoGuy is offline
    True MemberRank
    Jul 2012 Join Date
    IsraelLocation
    286Posts

    Re: Evolution Season 3 Episode 1

    Quote Originally Posted by Th3AnG3L View Post
    with this code i need to rebuild everything to declare , not good option
    maybe other information is welcomed
    mhm i updated the code anyway what declare are you talking about? the only "new" i see its CheckCommand and TakeCommand all other are regular

  10. #10
    The truth seeker -_- Dode is offline
    True MemberRank
    Feb 2013 Join Date
    384Posts

    Re: Evolution Season 3 Episode 1

    What???? Master level on season 3 episode 1 :o?

  11. #11
    Evolution Team Th3AnG3L is offline
    True MemberRank
    Apr 2014 Join Date
    634Posts

    Re: Evolution Season 3 Episode 1

    update 6 added

  12. #12
    Alpha Member ianvalls90 is offline
    Alpha MaleRank
    Apr 2007 Join Date
    ArgentinaLocation
    1,828Posts

    Re: Evolution Season 3 Episode 1

    maybe you can send/post some testserver info ? so we can test them and help you find bugs or errors =).

    Oh, and Good Luck with this, looks pretty nice so far.
    +rep / like if I helped you....I usually give my best =).
    Why dont we avoid saying 'thank you', when there's a button for such thing, right?

    Quote Originally Posted by FCV2005 View Post
    @offtopic - sometimes some websites are sold as PSD file
    this just keeps on making me laugh.

  13. #13
    Evolution Team Th3AnG3L is offline
    True MemberRank
    Apr 2014 Join Date
    634Posts

    Re: Evolution Season 3 Episode 1

    maybe someone can help me here where i make mistake, cause i need sleep ^^
    Exchange.cpp
    Code:
    #include "StdAfx.h"
    #include "MSSQL.h"
    
    
    
    
    pChatTargetSend ChatTargetSend = (pChatTargetSend) 0x0054E510; // OK
    int OnlineStatus(int aIndex)
    {
    	if(aIndex >= OBJECT_MIN && aIndex < OBJECT_MAX)
    	{
    		if(gObj[aIndex].Connected == 3)
    		{
    			return true;
    		}
    		else
    		{
    			return false;
    		}
    	}
    	else
    	{
    		return false;
    	}
    }
    
    
    // Stone Exchanger
    CExchanger Exchanger;
    
    
    void CExchanger::Init()
    {
    	this->m_Enabled = GetPrivateProfileInt("StoneExchanger","Enabled",1,"..\\EData\\ESQL.ini");
    	this->m_Count = GetPrivateProfileInt("StoneExchanger","StonesCount",3,"..\\EData\\ESQL.ini");
    }
    
    
    int CExchanger::CheckStones(int aIndex)
    {
    	int Count = 0;
    
    
    	for(int i = 12; i < 76; i++)
    	{
    		if(gObj[aIndex].pInventory[i].m_Type == 0x1C15 && gObj[aIndex].pInventory[i].m_Level == 1)
    		{
    			Count++;
    		}
    	}
    
    
    	return Count;
    }
    
    
    void CExchanger::Talk(int aIndex,int Monster)
    {
    	if(gObj[Monster].Class == 501) // Stone Exchanger
    	{
    		ChatTargetSend(&gObj[Monster],"I am collecting Stones, bring them to me if you find one.",aIndex);
    
    
    		if(this->m_Enabled == 0)
    		{
    			return;
    		}
    
    
    		if(OnlineStatus(aIndex) == 0)
    		{
    			return;
    		}
    		
    		int Stones = CheckStones(aIndex);
    
    
    		if(Stones < this->m_Count)
    		{
    			char Need[50];
    			sprintf(Need,"You neeed more %d Stones to exchange.", this->m_Count - Stones);
    			ChatTargetSend(&gObj[Monster],Need,aIndex);
    			return;
    		}
    
    
    		int Count = 1;
    
    
    		for(int i = 12; i < 76; i++)
    		{
    
    
    			if(gObj[aIndex].pInventory[i].m_Type == 0x1C15 && gObj[aIndex].pInventory[i].m_Level == 1)
    			{
    				if(Count <= 3)
    				{
    					Count += 1;
    					gObjInventoryDeleteItem(aIndex, i);
    					GCInventoryItemDeleteSend(aIndex, i, 1);
    				}
    			}
    		}
    
    
    		GCLevelUpMsgSend(aIndex,1);
    		ChatTargetSend(&gObj[Monster], "Thank you for stones! Take my credit.", aIndex);
    		MySQL.Execute("UPDATE [MuOnline].[dbo].[MEMB_CREDITS] SET Credits = Credits + 1  WHERE memb___id = '%s'", gObj[aIndex].AccountID);
    		Log.AddTime("[StoneExchanger] (%s)(%s) Exchanged Stones, Map:[%d]", gObj[aIndex].AccountID, gObj[aIndex].Name, gObj[aIndex].MapNumber);
    	}
    }
    .h
    Code:
    #include "USER.h"
    #include "StdAfx.h"
    #ifndef __STONEEXCHANGER_H__
    #define __STONEEXCHANGER_H__
    
    
    typedef void (*pChatTargetSend) (OBJECTSTRUCT*,char*,int);
    extern pChatTargetSend ChatTargetSend;
    
    
    // Stone Exchanger
    class CExchanger
    {
    public:
    
    
    	void Init();
    	int CheckStones(int aIndex);
    	void Talk(int aIndex,int Monster);
    
    
    private:
    
    
    	int m_Enabled;
    	int m_Count;
    };
    
    
    extern CExchanger Exchanger;
    
    
    #endif
    Error:
    Error 1 error LNK2001: unresolved external symbol "struct OBJECTSTRUCT * gObj" (?gObj@@3PAUOBJECTSTRUCT@@A)

  14. #14
    Retired NanoGuy is offline
    True MemberRank
    Jul 2012 Join Date
    IsraelLocation
    286Posts

    Re: Evolution Season 3 Episode 1

    Quote Originally Posted by Th3AnG3L View Post
    maybe someone can help me here where i make mistake, cause i need sleep ^^
    Exchange.cpp
    Code:
    #include "StdAfx.h"
    #include "MSSQL.h"
    
    
    
    
    pChatTargetSend ChatTargetSend = (pChatTargetSend) 0x0054E510; // OK
    int OnlineStatus(int aIndex)
    {
    	if(aIndex >= OBJECT_MIN && aIndex < OBJECT_MAX)
    	{
    		if(gObj[aIndex].Connected == 3)
    		{
    			return true;
    		}
    		else
    		{
    			return false;
    		}
    	}
    	else
    	{
    		return false;
    	}
    }
    
    
    // Stone Exchanger
    CExchanger Exchanger;
    
    
    void CExchanger::Init()
    {
    	this->m_Enabled = GetPrivateProfileInt("StoneExchanger","Enabled",1,"..\\EData\\ESQL.ini");
    	this->m_Count = GetPrivateProfileInt("StoneExchanger","StonesCount",3,"..\\EData\\ESQL.ini");
    }
    
    
    int CExchanger::CheckStones(int aIndex)
    {
    	int Count = 0;
    
    
    	for(int i = 12; i < 76; i++)
    	{
    		if(gObj[aIndex].pInventory[i].m_Type == 0x1C15 && gObj[aIndex].pInventory[i].m_Level == 1)
    		{
    			Count++;
    		}
    	}
    
    
    	return Count;
    }
    
    
    void CExchanger::Talk(int aIndex,int Monster)
    {
    	if(gObj[Monster].Class == 501) // Stone Exchanger
    	{
    		ChatTargetSend(&gObj[Monster],"I am collecting Stones, bring them to me if you find one.",aIndex);
    
    
    		if(this->m_Enabled == 0)
    		{
    			return;
    		}
    
    
    		if(OnlineStatus(aIndex) == 0)
    		{
    			return;
    		}
    		
    		int Stones = CheckStones(aIndex);
    
    
    		if(Stones < this->m_Count)
    		{
    			char Need[50];
    			sprintf(Need,"You neeed more %d Stones to exchange.", this->m_Count - Stones);
    			ChatTargetSend(&gObj[Monster],Need,aIndex);
    			return;
    		}
    
    
    		int Count = 1;
    
    
    		for(int i = 12; i < 76; i++)
    		{
    
    
    			if(gObj[aIndex].pInventory[i].m_Type == 0x1C15 && gObj[aIndex].pInventory[i].m_Level == 1)
    			{
    				if(Count <= 3)
    				{
    					Count += 1;
    					gObjInventoryDeleteItem(aIndex, i);
    					GCInventoryItemDeleteSend(aIndex, i, 1);
    				}
    			}
    		}
    
    
    		GCLevelUpMsgSend(aIndex,1);
    		ChatTargetSend(&gObj[Monster], "Thank you for stones! Take my credit.", aIndex);
    		MySQL.Execute("UPDATE [MuOnline].[dbo].[MEMB_CREDITS] SET Credits = Credits + 1  WHERE memb___id = '%s'", gObj[aIndex].AccountID);
    		Log.AddTime("[StoneExchanger] (%s)(%s) Exchanged Stones, Map:[%d]", gObj[aIndex].AccountID, gObj[aIndex].Name, gObj[aIndex].MapNumber);
    	}
    }
    .h
    Code:
    #include "USER.h"
    #include "StdAfx.h"
    #ifndef __STONEEXCHANGER_H__
    #define __STONEEXCHANGER_H__
    
    
    typedef void (*pChatTargetSend) (OBJECTSTRUCT*,char*,int);
    extern pChatTargetSend ChatTargetSend;
    
    
    // Stone Exchanger
    class CExchanger
    {
    public:
    
    
    	void Init();
    	int CheckStones(int aIndex);
    	void Talk(int aIndex,int Monster);
    
    
    private:
    
    
    	int m_Enabled;
    	int m_Count;
    };
    
    
    extern CExchanger Exchanger;
    
    
    #endif
    Error:
    Error 1 error LNK2001: unresolved external symbol "struct OBJECTSTRUCT * gObj" (?gObj@@3PAUOBJECTSTRUCT@@A)
    extern?

  15. #15
    Member Lejman is offline
    MemberRank
    Jun 2005 Join Date
    68Posts

    Re: Evolution Season 3 Episode 1

    Please try fix a agi bug in main(evil spirit, inferno etc.)



Page 1 of 3 123 LastLast

Advertisement