New Jewels for 1.03k Main (1.03.11)

Page 6 of 6 FirstFirst 123456
Results 76 to 84 of 84
  1. #76
    Apprentice caron22 is offline
    MemberRank
    May 2012 Join Date
    24Posts

    Re: New Jewels for 1.03k Main (1.03.11)

    Que funcion llama a ese bool?
    -------------
    That function calls that bool?

  2. #77
    Member NaveMu is offline
    MemberRank
    Feb 2012 Join Date
    61Posts

    Re: New Jewels for 1.03k Main (1.03.11)

    Quote Originally Posted by Kiosani View Post
    yes!, can you please share any information about Shine Effect, but not only of: wings, of some items how: Flamberge, Sword Bracker and other items of: Season 4.?

    I have only this about Effects:

    Code:
    void gObjLoadItemImage() //Decompilation from 1.03h
    {
    	LoadItemBmp_MainFunction();
    
    	int i = 45;
    
    	/*for(; i < 53; i++)
    	{
    		if(i == 47 || i == 48) continue;
    
    		if(i == 46 || i == 48 || i == 50 || i == 53) continue; //remove
    
    		LoadSkin(ITEMID(7,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,TRUE);
    	}
    
    	for(i = 45; i < 53; i++)
    	{
    		if(i == 46 || i == 48 || i == 50 || i == 53) continue; //remove
    
    		LoadSkin(ITEMID(8,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    		LoadSkin(ITEMID(9,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    		LoadSkin(ITEMID(10,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    		LoadSkin(ITEMID(11,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    	}*/
    
    	LoadSkin(ITEMID(0,26),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    	LoadSkin(ITEMID(0,27),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    	//LoadSkin(ITEMID(0,28),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    
    	//LoadSkin(ITEMID(2,16),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    	//LoadSkin(ITEMID(2,17),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    
    	//LoadSkin(ITEMID(4,23),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
    Code:
    void CGlowEffect::NewItemGlow_Part1(int iID, float fUnk2, float fUnk3, ST_RGB *stRGB, int iUnk5)
    {
    	char szTemp[256];
    
    	int iGlowID = 0;
    
    	switch(iID)
    	{
    	case ITEMID(0,28):	iGlowID = 8;	break;
    	case ITEMID(4,23):	iGlowID = 35;	break;
    	case ITEMID(5,30):	iGlowID = 1;	break;
    	case ITEMID(5,31):	iGlowID = 19;	break;
    	case ITEMID(6,20):	iGlowID = 36;	break;
    	case ITEMID(6,21):	iGlowID = 30;	break;
    	default:
    		{
    			int iNewID = iID-ItemStartIndex;
    
    			if(iNewID / 512 >= 7 && iNewID / 512 <= 11)
    			{
    				switch(iNewID % 512) //Item ID
    				{
    				case 1:
    				case 48:
    					iGlowID = 1;
                    break;
    Code:
    float Formula1 = (((int)(( *(float*)0x587C650) * 0.05f )) % 16) / 4;
    			float Formula2 = Formula1 * 0.25f;
    
    			g_ItemEffect.func_5168A0(arg1, 5, 66, Value_5, 5, Value_2, Value_3, Formula2, -1 );
    and this, but well :p

    Code:
    Func2:
    
    void gObjSetItemEffect2(UNK0 * arg1, UNK1 * lpMsg, int iID, float arg4, int arg5, float arg6, int arg7) //Completed
    {
    if(iID == ITEMID(0,26)) //Flameberge
    {
    func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), 5, -1);
    }
    else if(iID == ITEMID(0,27)) //Sword Breaker
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(0,28)) //Rune Bastard Sword
    {
    func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(5,30)) //Deadly Staff
    {
    func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1, arg7);
    
    lpMsg->ukn3[0x94] = 1;
    
    *(float*)(&arg1->ukn[0x48]) = 1.0f;
    *(float*)(&arg1->ukn[0x4C]) = 1.0f;
    *(float*)(&arg1->ukn[0x50]) = 1.0f;
    
    func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(5,32)) //Unknown (weird but Season4.5 have it)
    {
    func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(6,19)) //Frost Barrier
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(6,20)) //Guardian Shield
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(7,49)) //Seraphim Helm
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(7,50)) //Divine Helm
    {
    func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(7,53)) //Unknown (weird but Season4.5 have it)
    {
    func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(6,21)) //Cross Shield
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else
    {
    OriginalEffectFunc2(arg1, lpMsg, iID, arg4, arg5, arg6, arg7);
    }
    }
    
    void gObjSetItemEffect3(UNK0 * arg1, UNK1 * lpMsg, int iID, float arg4, int arg5, float arg6, int arg7) //Completed
    {
    if(iID == ITEMID(0,26)) //Flameberge
    {
    func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), 5, arg7);
    }
    else if(iID == ITEMID(6,19)) //Frost Barrier
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(7,49)) //Seraphim Helm
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(7,53)) //Unknown (weird but Season4.5 have it)
    {
    func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else if(iID == ITEMID(7,50)) //Divine Helm
    {
    func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    else
    {
    OriginalEffectFunc3(arg1, lpMsg, iID, arg4, arg5, arg6, arg7);
    } 
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    //Função 1
    else if(iID == ITEMID(6,21)) //Cross Shield
    {
    glColor3f(1.0f, 1.0f, 1.0f); //OpenGL Set Color
    
    func_5168A0(arg1, 0, 2, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    
    arg1->ukn[0x94] = 1; //Unknown value (need check)
    
    func_5168A0(arg1, 1, 70, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), -((int)(*( float*)0x587C650))%2000, -1); //Shield Glass Effect Animation
    func_5168A0(arg1, 2, 66, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    
    //Função 2
    else if(iID == ITEMID(6,21)) //Cross Shield
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    Code :
    
    
    //Função 1
    else if(iID == ITEMID(6,21)) //Cross Shield
    {
    glColor3f(1.0f, 1.0f, 1.0f); //OpenGL Set Color
    
    func_5168A0(arg1, 0, 2, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    
    arg1->ukn[0x94] = 1; //Unknown value (need check)
    
    func_5168A0(arg1, 1, 70, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), -((int)(*( float*)0x587C650))%2000, -1); //Shield Glass Effect Animation
    func_5168A0(arg1, 2, 66, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }
    
    //Função 2
    else if(iID == ITEMID(6,21)) //Cross Shield
    {
    func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
    }


    Credits: Hermex by decompilation of effects
    You can post the offset of this functions: OriginalEffectFunc3, gObjSetItemEffect2, if you still have

  3. #78
    Account Upgraded | Title Enabled! ponteleymon is offline
    MemberRank
    Jan 2013 Join Date
    276Posts

    Re: New Jewels for 1.03k Main (1.03.11)

    Whether this code is possible to connect to the 0.97 version of MU?

  4. #79
    Apprentice caron22 is offline
    MemberRank
    May 2012 Join Date
    24Posts

    Re: New Jewels for 1.03k Main (1.03.11)

    Quote Originally Posted by ponteleymon View Post
    Whether this code is possible to connect to the 0.97 version of MU?
    Es posible solo necesitas los offsets

  5. #80
    Account Upgraded | Title Enabled! ponteleymon is offline
    MemberRank
    Jan 2013 Join Date
    276Posts

    Re: New Jewels for 1.03k Main (1.03.11)

    Quote Originally Posted by caron22 View Post
    Es posible solo necesitas los offsets
    and did not help me with the search used offsets?

  6. #81
    c# Programmer martinx09 is offline
    MemberRank
    Aug 2008 Join Date
    391Posts

    Re: New Jewels for 1.03k Main (1.03.11)

    Just as an observation, you can use the setdescription function on weapons/armor as well,
    it will display the text below the defense.
    So it's kind of cool considering there is no itemtooltip on this version.

    Now op said you can add a new var like Fn3Var3 and stack it on the asm to add another line of text,
    but I'm a total noob on asm, could someone tell me how to add the new var to the asm code?

    Edit: Nevermind, it was easy xD
    Last edited by martinx09; 04-08-17 at 12:24 PM.

  7. #82
    c# Programmer martinx09 is offline
    MemberRank
    Aug 2008 Join Date
    391Posts

    Re: New Jewels for 1.03k Main (1.03.11)

    Solved, sorry.
    Last edited by martinx09; 16-08-17 at 05:26 PM.

  8. #83
    Apprentice boris160 is offline
    MemberRank
    Jul 2014 Join Date
    7Posts

    Re: New Jewels for 1.03k Main (1.03.11)

    @martinx09 can help add new txt line, i noob in _asm xD

  9. #84
    Enthusiast Dezi is offline
    MemberRank
    Jun 2016 Join Date
    Кишинёв,Location
    33Posts
    parts are present such a fragment of the code
    Code:
    ...
    TargetItem->m_NewOption = GetRandomExcOption(btMaxExcOptions, FALSE, &btOptions);
    ...
    Could you share the body of this function

    Code:
     GetRandomExcOption(btMaxExcOptions, FALSE, &btOptions);
    thanks in advance/

    My Sevrer IGC.MuServerSuite_SXII

  10. #85
    Enthusiast Dezi is offline
    MemberRank
    Jun 2016 Join Date
    Кишинёв,Location
    33Posts
    In general, who is interested, I completed like this:
    Code:
    BYTE CustomJewel::GetRandomExcOption()
    {
        srand(time(NULL));
        int nOption = 0;
        nOption = rand() % 7 + 1;
        BYTE byRes[7] = { 0,1,2,4,8,16,32 };
    
    
        if (nOption <= 0) {
            nOption = 1;
        }
        else if (nOption > 7) {
    
            nOption = 7;
        }
    
    
        return byRes[nOption];
    }
    //call
    ...
    if (bIsFull) {
    
                lpObj->pInventory[TargetPos].m_NewOption = 0x3F;
                MsgOutput(lpObj->m_Index, "Use Jewel of Kondar successful. All excellent options are added!");
    }else {
    
                lpObj->pInventory[TargetPos].m_NewOption = GetRandomExcOption();
                MsgOutput(lpObj->m_Index, "Use Jewel of Exelent successful. One option has been successfully added!");
    }
    ...
    If there is a more original decision I will be glad to make! Thanks to the author of the main topic for the work done



Page 6 of 6 FirstFirst 123456

Advertisement