Pyke source

Results 1 to 10 of 10
  1. #1
    Account Upgraded | Title Enabled! or30n is offline
    MemberRank
    Jun 2005 Join Date
    731Posts

    Pyke source

    Hello guys,

    I’m using pyke public source and looking how to fix some bugs. Ancient items when equip the blue effect in player doesn’t work until you unequip and equip ancient item plus other players don’t see ancient effect at all.
    When drop event or golden mobs drop box of kundun, size of it is a little big.
    Here's a video, https://files.fm/f/pdrxbwqfx?fbclid=...6svfZ3D9KBFDcY
    How can we solve this?


  2. #2
    Account Upgraded | Title Enabled! or30n is offline
    MemberRank
    Jun 2005 Join Date
    731Posts
    Quote Originally Posted by I Am NoLimiT View Post
    btw @or30n may I know which source you were using? Is it the update 30?
    yes, it's update 30.
    Last edited by Ketchup; 25-11-22 at 02:45 PM.

  3. #3
    Developer nevS is offline
    MemberRank
    Aug 2005 Join Date
    GermanyLocation
    531Posts
    It's an error in the "PreviewCharSet". You need to OR a 0x01 to the byte of index 11, if a full ancient set is equipped.
    Similar to this logic: https://github.com/MUnique/OpenMU/bl...alizer.cs#L143

  4. #4
    Account Upgraded | Title Enabled! or30n is offline
    MemberRank
    Jun 2005 Join Date
    731Posts
    Quote Originally Posted by nevS View Post
    It's an error in the "PreviewCharSet". You need to OR a 0x01 to the byte of index 11, if a full ancient set is equipped.
    Similar to this logic: https://github.com/MUnique/OpenMU/bl...alizer.cs#L143
    I though so but i couldnt find where to edit. I looked in client source but no luck.

    - - - Updated - - -

    Any one willing to help solve this?

  5. #5
    RaGEZONER Since 2004 I Am NoLimiT is offline
    MemberRank
    Jul 2004 Join Date
    Ha-HaciendaLocation
    999Posts
    Quote Originally Posted by or30n View Post
    I though so but i couldnt find where to edit. I looked in client source but no luck.

    - - - Updated - - -

    Any one willing to help solve this?
    If you refer on what @nevS suggested to fix the issue PreviewCharSet I think you can find that on GameServer source/itemmanager.cpp base on Pyke update 30.

  6. #6
    Account Upgraded | Title Enabled! or30n is offline
    MemberRank
    Jun 2005 Join Date
    731Posts
    In GameServer source/itemmanager.cpp i couldn't find something.
    Only this

    Code:
    void CItemManager::UpdateInventoryViewport(int aIndex,int slot) // OK
    {
    	if(INVENTORY_WEAR_RANGE(slot) == 0)
    	{
    		return;
    	}
    
    	if(slot == 10 || slot == 11)
    	{
    		if(gSkillManager.SkillChangeUse(aIndex) != 0)
    		{
    			gObjViewportListProtocolCreate(&gObj[aIndex]);
    			gObjectManager.CharacterUpdateMapEffect(&gObj[aIndex]);
    		}
    	}
    
    	gObjectManager.CharacterMakePreviewCharSet(aIndex);
    
    	this->GCItemChangeSend(aIndex,slot);
    }
    and definition in ObjectManager

    Code:
    void CObjectManager::CharacterMakePreviewCharSet(int aIndex) // OK
    {
    	LPOBJ lpObj = &gObj[aIndex];
    
    	memset(lpObj->CharSet,0,sizeof(lpObj->CharSet));
    	//------ cosas de pet
    	memset(lpObj->PetCharSet, 0, sizeof(lpObj->PetCharSet));
    	//-------------------
    
    	lpObj->CharSet[0] = (lpObj->ChangeUp*16);
    	lpObj->CharSet[0] -= (lpObj->CharSet[0]/32);
    	lpObj->CharSet[0] += (lpObj->Class*32);
    
    	lpObj->CharSet[0] = gObjFixClassPacket(lpObj->DBClass);//Mc
        lpObj->CharSet[0] |= CS_SET_CHANGEUP(lpObj->ChangeUp);//MC
    
    	if(lpObj->ActionNumber == ACTION_SIT1)
    	{
    		lpObj->CharSet[0] |= 2;
    	}
    	
    	if(lpObj->ActionNumber == ACTION_POSE1)
    	{
    		lpObj->CharSet[0] |= 3;
    	}
    
    	WORD TempInventory[INVENTORY_WEAR_SIZE];
    
    	for(int n=0;n < INVENTORY_WEAR_SIZE;n++)
    	{
    		if(n == 0 || n == 1)
    		{
    			if(lpObj->Inventory[n].IsItem() == 0)
    			{
    				TempInventory[n] = 0xFFFF;
    			}
    			else
    			{
    				TempInventory[n] = lpObj->Inventory[n].m_Index;
    			}
    		}
    		else
    		{
    			if(lpObj->Inventory[n].IsItem() == 0)
    			{
    				TempInventory[n] = 0x1FF;
    			}
    			else
    			{
    				TempInventory[n] = lpObj->Inventory[n].m_Index%MAX_ITEM_TYPE;
    			}
    		}
    	}
    
    	lpObj->CharSet[1] = TempInventory[0]%256;
    	lpObj->CharSet[12] |= (TempInventory[0]/16) & 0xF0;
    
    	lpObj->CharSet[2] = TempInventory[1]%256;
    	lpObj->CharSet[13] |= (TempInventory[1]/16) & 0xF0;
    
    	lpObj->CharSet[3] |= (TempInventory[2] & 0x0F) << 4;
    	lpObj->CharSet[9] |= (TempInventory[2] & 0x10) << 3;
    	lpObj->CharSet[13] |= (TempInventory[2] & 0x1E0) >> 5;
    
    	lpObj->CharSet[3] |= (TempInventory[3] & 0x0F);
    	lpObj->CharSet[9] |= (TempInventory[3] & 0x10) << 2;
    	lpObj->CharSet[14] |= (TempInventory[3] & 0x1E0) >> 1;
    
    	lpObj->CharSet[4] |= (TempInventory[4] & 0x0F) << 4;
    	lpObj->CharSet[9] |= (TempInventory[4] & 0x10) << 1;
    	lpObj->CharSet[14] |= (TempInventory[4] & 0x1E0) >> 5;
    
    	lpObj->CharSet[4] |= (TempInventory[5] & 0x0F);
    	lpObj->CharSet[9] |= (TempInventory[5] & 0x10);
    	lpObj->CharSet[15] |= (TempInventory[5] & 0x1E0) >> 1;
    
    	lpObj->CharSet[5] |= (TempInventory[6] & 0x0F) << 4;
    	lpObj->CharSet[9] |= (TempInventory[6] & 0x10) >> 1;
    	lpObj->CharSet[15] |= (TempInventory[6] & 0x1E0) >> 5;
    
    	int level = 0;
    
    	BYTE table[7] = {1,0,6,5,4,3,2};
    
    	for(int n=0;n < 7;n++)
    	{
    		if(TempInventory[n] != 0x1FF && TempInventory[n] != 0xFFFF)
    		{
    			level |= ((lpObj->Inventory[n].m_Level-1)/2) << (n*3);
    
    			lpObj->CharSet[10] |= ((lpObj->Inventory[n].m_NewOption & 0x3F)?2:0) << table[n];
    			lpObj->CharSet[11] |= ((lpObj->Inventory[n].m_SetOption & 0x03)?2:0) << table[n];
    		}
    	}
    
    	this->CharacterCalcAttribute(aIndex);
    
    	if(lpObj->IsFullSetItem != 0)
    	{
    		lpObj->CharSet[11] |= 1;
    	}
    
    	lpObj->CharSet[6] = level >> 16;
    	lpObj->CharSet[7] = level >> 8;
    	lpObj->CharSet[8] = level;
    
    	#if(GAMESERVER_UPDATE>=601)
    
    	if(TempInventory[7] >= 0 && TempInventory[7] <= 2)
    	{
    		lpObj->CharSet[5] |= 4;
    		lpObj->CharSet[9] |= TempInventory[7]+1;
    	}
    	else if(TempInventory[7] >= 3 && TempInventory[7] <= 6)
    	{
    		lpObj->CharSet[5] |= 8;
    		lpObj->CharSet[9] |= TempInventory[7]-2;
    	}
    	else if(TempInventory[7] == 30)
    	{
    		lpObj->CharSet[5] |= 8;
    		lpObj->CharSet[9] |= 5;
    	}
    	else if(TempInventory[7] >= 36 && TempInventory[7] <= 40)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[9] |= TempInventory[7]-35;
    	}
    	else if(TempInventory[7] == 41)
    	{
    		lpObj->CharSet[5] |= 4;
    		lpObj->CharSet[9] |= 4;
    	}
    	else if(TempInventory[7] == 42)
    	{
    		lpObj->CharSet[5] |= 8;
    		lpObj->CharSet[9] |= 6;
    	}
    	else if(TempInventory[7] == 43)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[9] |= 6;
    	}
    	else if(TempInventory[7] == 49)
    	{
    		lpObj->CharSet[5] |= 8;
    		lpObj->CharSet[9] |= 7;
    	}
    	else if(TempInventory[7] == 50)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[9] |= 7;
    	}
    	else if(TempInventory[7] >= 130 && TempInventory[7] <= 135)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[17] |= (TempInventory[7]-129) << 5;
    	}
    	else if(TempInventory[7] >= 262 && TempInventory[7] <= 265)
    	{
    		lpObj->CharSet[5] |= 8;
    		lpObj->CharSet[16] |= (TempInventory[7]-261) << 2;
    	}
    	else if(TempInventory[7] == 266)
    	{
    		lpObj->CharSet[5] |= 4;
    		lpObj->CharSet[9] |= 5;
    	}
    	else if(TempInventory[7] == 267)
    	{
    		lpObj->CharSet[5] |= 4;
    		lpObj->CharSet[9] |= 6;
    	}
    	else if(gCustomWing.CheckCustomWingByItem(GET_ITEM(12,TempInventory[7])) != 0)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[17] |= (gCustomWing.GetCustomWingIndex(GET_ITEM(12,TempInventory[7]))+1) << 1;
    	}
    
    	#else
    
    	if(TempInventory[7] == 0x1FF)
    	{
    		lpObj->CharSet[5] |= 12;
    	}
    	else if(TempInventory[7] >= 0 && TempInventory[7] <= 2)
    	{
    		lpObj->CharSet[5] |= TempInventory[7] << 2;
    	}
    	else if(TempInventory[7] >= 3 && TempInventory[7] <= 6)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[9] |= TempInventory[7]-2;
    	}
    	else if(TempInventory[7] == 30)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[9] |= 5;
    	}
    	else if(TempInventory[7] >= 36 && TempInventory[7] <= 40)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[16] |= (TempInventory[7]-35) << 2;
    	}
    	else if(TempInventory[7] == 41)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[9] |= 6;
    	}
    	else if(TempInventory[7] == 42)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[16] |= 28;
    	}
    	else if(TempInventory[7] == 43)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[16] |= 24;
    	}
    	else if(TempInventory[7] >= 130 && TempInventory[7] <= 135)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[17] |= (TempInventory[7]-129) << 5;
    	}
    	else if(gCustomWing.CheckCustomWingByItem(GET_ITEM(12,TempInventory[7])) != 0)
    	{
    		lpObj->CharSet[5] |= 12;
    		lpObj->CharSet[17] |= (gCustomWing.GetCustomWingIndex(GET_ITEM(12,TempInventory[7]))+1) << 1;
    	}
    
    	#endif
    
    	if(TempInventory[8] == 0x1FF)
    	{
    		lpObj->CharSet[5] |= 3;
    	}
    	else if(TempInventory[8] >= 0 && TempInventory[8] <= 2)
    	{
    		lpObj->CharSet[5] |= TempInventory[8];
    	}
    	else if(TempInventory[8] == 3)
    	{
    		lpObj->CharSet[5] |= 3;
    		lpObj->CharSet[10] |= 1;
    	}
    	else if(TempInventory[8] == 4)
    	{
    		lpObj->CharSet[5] |= 3;
    		lpObj->CharSet[12] |= 1;
    	}
    	else if(TempInventory[8] == 37)
    	{
    		lpObj->CharSet[5] |= 3;
    		lpObj->CharSet[10] &= 0xFE;
    		lpObj->CharSet[12] &= 0xFE;
    		lpObj->CharSet[12] |= 4;
    
    		if((lpObj->Inventory[8].m_NewOption & 1) != 0)
    		{
    			lpObj->CharSet[16] |= 1;
    		}
    		else if((lpObj->Inventory[8].m_NewOption & 2) != 0)
    		{
    			lpObj->CharSet[16] |= 2;
    		}
    		else if((lpObj->Inventory[8].m_NewOption & 4) != 0)
    		{
    			lpObj->CharSet[17] |= 1;
    		}
    		//--- cosas de fenrrir
    		else if((lpObj->Inventory[8].m_NewOption & 8) != 0)
    		{
    			lpObj->CharSet[16] |= 250 << 1;
    		}
    		else if((lpObj->Inventory[8].m_NewOption & 16) != 0)
    		{
    			lpObj->CharSet[16] |= 251 << 1;
    		}
    		else if((lpObj->Inventory[8].m_NewOption & 32) != 0)
    		{
    			lpObj->CharSet[16] |= 252 << 1;
    		}
    	}
    	else if(TempInventory[8] == 64 || TempInventory[8] == 65 || TempInventory[8] == 67)
    	{
    		lpObj->CharSet[16] |= (TempInventory[8]-63) << 5;
    	}
    	else if(TempInventory[8] == 80)
    	{
    		lpObj->CharSet[16] |= 0xE0;
    	}
    	else if(TempInventory[8] == 106)
    	{
    		lpObj->CharSet[16] |= 0xA0;
    	}
    	else if(TempInventory[8] == 123)
    	{
    		lpObj->CharSet[16] |= 0x60;
    	}
    	//---------------------- cosas de pet
    	else if (TempInventory[8] >= 147 && TempInventory[8] <= 257)
    	{
    		lpObj->PetCharSet[0] |= (TempInventory[8] - 146) << 1;
    	}
    	else if (TempInventory[8] >= 258 && TempInventory[8] <= 350)
    	{
    		lpObj->PetCharSet[1] |= (TempInventory[8] - 257) << 1;
    	}
    	else if (TempInventory[8] >= 351 && TempInventory[8] <= 450)
    	{
    		lpObj->PetCharSet[2] |= (TempInventory[8] - 350) << 1;
    	}
    	
    	else if (TempInventory[8] >= 451 && TempInventory[8] <= 511)
    	{
    		lpObj->PetCharSet[3] |= (TempInventory[8] - 450) << 1;
    	}
    	//-----------------------------------------
    	else if (TempInventory[8] >= 451 && TempInventory[8] <= 511) // xemu agregado
    	{
    		lpObj->PetCharSet[3] |= (TempInventory[8] - 450) << 1;
    	}
    	//-----------------------
    }

  7. #7
    RaGEZONER Since 2004 I Am NoLimiT is offline
    MemberRank
    Jul 2004 Join Date
    Ha-HaciendaLocation
    999Posts
    I just checked Pyke U30 files untouched, I didn't do anything with the source code yet just to see the problem of Ancient item as you reported. But it seem working fine here in my side without touching anything. Maybe you touch something that affects your ancient items on the source?

    Proof:






  8. #8
    Account Upgraded | Title Enabled! or30n is offline
    MemberRank
    Jun 2005 Join Date
    731Posts









    Read this my friend, https://forum.ragezone.com/f197/file...-up30-1208581/

    If i equip set items full the effect of ancient work but if i move doesnt work or re loggin.
    Last edited by or30n; 27-11-22 at 04:06 PM.

  9. #9
    Developer nevS is offline
    MemberRank
    Aug 2005 Join Date
    GermanyLocation
    531Posts
    The client sometimes compensates stuff for the own player, so always check this on the second mu client.
    The posted source looks correct, so I would assume it's something wrong with the configuration files, so that the server is not recognizing your equipped items as a complete ancient set.

  10. #10
    Account Upgraded | Title Enabled! or30n is offline
    MemberRank
    Jun 2005 Join Date
    731Posts
    Second client?
    Basically i didn't change anything! Thats the crazy one. I Just compile and run.
    I cant understand.

    - - - Updated - - -

    Plus my configs for rave set look good to me.

    Server: SetItemOption.txt
    Code:
    //Index   Name                                 Option1   Value1   Option2   Value2   Option3   Value3   Option4   Value4   Option5   Value5   Option6   Value6   Option7   Value7   Option8   Value8   Option9   Value9   Option10   Value10   Option11   Value11   Option12   Value12   FullOption1   FullValue1   FullOption2   FullValue2   FullOption3   FullValue3   FullOption4   FullValue4   FullOption5   FullValue5
    1	  "Warrior"	                       0	 10	  * 	    * 	     19	       10	* 	  * 	   13	     20	      * 	* 	 14	   5	    * 	      *        10	 20	  * 	     * 	       1	  10	    * 	       * 	 15	       5	    17	          5	       0	     25	          * 	        * 	     * 	           *
    Client ItemSetOption.bmd
    Code:
    1	"Warrior's"	0	10	-1	-1	19	10	-1	-1	13	20	-1	-1	14	5	-1	-1	10	20	-1	-1	1	10	-1	-1	-1	-1	-1	-1	15	5	17	5	0	25	-1	-1	-1	-1	0	0	0	0	0	0	0
    I create warrior's set with mu editor and

    When i equip all set items i notice:
    Code:
    Equip helm: +5 stamina
    Equip armor: +10 strength +5 stamina
    Equip pants: +5 stamina
    Equip boots: +5 stamina
    Equip gloves: +5 stamina
    Equip ring: +5 agility
    And some photos
    [img width=640 height=400]https://i.ibb.co/hVvw19S/Screen-11-27-12-25-0001.jpg[/img]
    [img width=640 height=400]https://i.ibb.co/6b3kWPr/Screen-11-27-12-30-0002.jpg[/img]
    [img width=640 height=400]https://i.ibb.co/Zd6PbmQ/Screen-11-27-12-30-0003.jpg[/img]

    Next i try rave's set

    Server: SetItemOption.txt
    Code:
    10	  "Rave"		               19	 20	  * 	    * 	     20	       10	* 	  * 	   * 	     * 	      * 	* 	 * 	   * 	    * 	      *        * 	 * 	  * 	     * 	       * 	  * 	    * 	       * 	 23	       30	    21	          5	       * 	     * 	          * 	        * 	     * 	           *
    Client ItemSetOption.bmd
    Code:
    10	"Rave's"	19	20	-1	-1	20	10	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	23	30	21	5	-1	-1	-1	-1	-1	-1	0	0	0	0	0	0	0
    I create rave's set with mu editor and

    When i equip all set items i notice:

    Code:
    Equip helm: +5 stamina
    Equip armor: +5 stamina
    Equip pants: +5 stamina +5 energy
    And some photos
    [img width=640 height=400]https://i.ibb.co/Dg68Y7V/Screen-11-27-12-51-0004.jpg[/img]
    [img width=640 height=400]https://i.ibb.co/qR4pTKB/Screen-11-27-12-53-0005.jpg[/img]
    [img width=640 height=400]https://i.ibb.co/TkkbGFr/Screen-11-27-12-53-0006.jpg[/img]


    Final results? After equipping full warrior's set the classic buff of the celestial circle rotating under the player has not been activated cause some options missing?
    After equipping full rave's set the classic buff of the celestial circle rotating under the player has been activated BUT if you exit game and log in again or move the buff is missing until you open Character panel (C). If you move you have to open again Character Panel (C) to work. Even if i equip an item, not ancient just a normal item then the effect is activated.


    - - - Updated - - -

    I forgot to add morning star in warrior's set.
    Now, warrior's set is complete. The classic buff of the celestial circle rotating under the player doesnt disable after move or re login.
    But rave's set doesn't work.



Advertisement