random scroll

04/22/2018 23:32 xToffer#1
fix thanks for the hints :D
04/24/2018 01:19 Avalion#2
It is in your first if / else if statement.

Also avoid your GetProp() calls that you spam everywhere. Store the pointer or I think CItemElem or a parent class has the item id stored in it as well.
04/24/2018 03:53 xToffer#3
i comment out the 3 scroll's

Code:
			if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYM && pItemElem0->GetRandomOpt() > 11)
				return;
			//else if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYR && (pItemElem0->GetRandomOpt() < 13 || pItemElem0->GetRandomOpt() > 24))
		//		return;
		//	else if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYU && (pItemElem0->GetRandomOpt() < 25 || pItemElem0->GetRandomOpt() > 36))
		//		return;
		//	else if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYL && pItemElem0->GetRandomOpt() < 37)
		//		return;

			int nRareLevel;
			switch (pItemElem1->GetProp()->dwID)
			{
			case II_SYS_SYS_SCR_RARITYM: nRareLevel = 1; break;
		//	case II_SYS_SYS_SCR_RARITYR: nRareLevel = 2; break;
			//case II_SYS_SYS_SCR_RARITYU: nRareLevel = 3; break;
		//	case II_SYS_SYS_SCR_RARITYL: nRareLevel = 4; break;
			}

			int type = xRandom(11) + 1;

			unsigned int upChance = 0;

			switch (nRareLevel)
			{
			case 1: upChance = 10; break;
		//	case 2: upChance = 5; break;
		//	case 3: upChance = 2; break;
			}

			if (nRareLevel<4)
			{
				if (xRandom(100) + 1<upChance)
					nRareLevel++;
			}

			if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYM && pItemElem0->GetRandomOpt() < 1 && xRandom(100) + 1<80)
				type = 0;

			int n_blubb = (nRareLevel - 1) * 11 + type;
			pItemElem0->SetRandomOpt(n_blubb);

			pUser->UpdateItem((BYTE)pItemElem0->m_dwObjId, UI_RANDOMOPTITEMID, n_blubb);

			LogItemInfo aLogItem;
			aLogItem.SendName = pUser->GetName();
			aLogItem.RecvName = "RANDOMSCROLL";
			aLogItem.WorldId = pUser->GetWorld()->GetID();
			aLogItem.Gold = aLogItem.Gold2 = pUser->GetGold();
			aLogItem.Action = "(";
			OnLogItem(aLogItem, pItemElem0, pItemElem0->m_nItemNum);
			aLogItem.Action = ")";
			OnLogItem(aLogItem, pItemElem1, pItemElem1->m_nItemNum);

			pUser->RemoveItem((BYTE)(dwId2), (short)1);

			pUser->AddPlaySound(SND_INF_UPGRADESUCCESS);
			g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);

			CString strText;
			strText.Format("Rarity of %s sucessfully changed.", pItemElem0->GetName());
			pUser->AddText(strText);
i only copy this
Code:
				if( pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RANDOMSTR )
				{
					nKind = nSTR[nValue-1];
					nToolKind = DST_STR;
				}
and change to that.

so i change the getprop() sir?
04/24/2018 13:57 Mushpoie#4
Quote:
Originally Posted by xToffer View Post
i comment out the 3 scroll's

Code:
			if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYM && pItemElem0->GetRandomOpt() > 11)
				return;
			//else if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYR && (pItemElem0->GetRandomOpt() < 13 || pItemElem0->GetRandomOpt() > 24))
		//		return;
		//	else if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYU && (pItemElem0->GetRandomOpt() < 25 || pItemElem0->GetRandomOpt() > 36))
		//		return;
		//	else if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYL && pItemElem0->GetRandomOpt() < 37)
		//		return;

			int nRareLevel;
			switch (pItemElem1->GetProp()->dwID)
			{
			case II_SYS_SYS_SCR_RARITYM: nRareLevel = 1; break;
		//	case II_SYS_SYS_SCR_RARITYR: nRareLevel = 2; break;
			//case II_SYS_SYS_SCR_RARITYU: nRareLevel = 3; break;
		//	case II_SYS_SYS_SCR_RARITYL: nRareLevel = 4; break;
			}

			int type = xRandom(11) + 1;

			unsigned int upChance = 0;

			switch (nRareLevel)
			{
			case 1: upChance = 10; break;
		//	case 2: upChance = 5; break;
		//	case 3: upChance = 2; break;
			}

			if (nRareLevel<4)
			{
				if (xRandom(100) + 1<upChance)
					nRareLevel++;
			}

			if (pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RARITYM && pItemElem0->GetRandomOpt() < 1 && xRandom(100) + 1<80)
				type = 0;

			int n_blubb = (nRareLevel - 1) * 11 + type;
			pItemElem0->SetRandomOpt(n_blubb);

			pUser->UpdateItem((BYTE)pItemElem0->m_dwObjId, UI_RANDOMOPTITEMID, n_blubb);

			LogItemInfo aLogItem;
			aLogItem.SendName = pUser->GetName();
			aLogItem.RecvName = "RANDOMSCROLL";
			aLogItem.WorldId = pUser->GetWorld()->GetID();
			aLogItem.Gold = aLogItem.Gold2 = pUser->GetGold();
			aLogItem.Action = "(";
			OnLogItem(aLogItem, pItemElem0, pItemElem0->m_nItemNum);
			aLogItem.Action = ")";
			OnLogItem(aLogItem, pItemElem1, pItemElem1->m_nItemNum);

			pUser->RemoveItem((BYTE)(dwId2), (short)1);

			pUser->AddPlaySound(SND_INF_UPGRADESUCCESS);
			g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);

			CString strText;
			strText.Format("Rarity of %s sucessfully changed.", pItemElem0->GetName());
			pUser->AddText(strText);
i only copy this
Code:
				if( pItemElem1->GetProp()->dwID == II_SYS_SYS_SCR_RANDOMSTR )
				{
					nKind = nSTR[nValue-1];
					nToolKind = DST_STR;
				}
and change to that.

so i change the getprop() sir?
You should really read up on basic syntax and if/elseif/else statements.

[Only registered and activated users can see links. Click Here To Register...]