⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skill_lsw.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include "stdafx.h"
#include <ddraw.h>
#include "Hangul.h"
#include "dragon.h"
#include "Menu.h"
#include "Hong_Sprite.h"
#include "SmallMenuSet.h"
#include "stdio.h"
#include "directsound.h"
#include "directinput.h"
#include "Char.h"
#include "SmallMenu.h"
#include "Hong_Sub.h"
#include "Effect.h"
#include "map.h"
#include "tool.h"
#include "MenuSet.h"
#include "skill.h"
#include "MenuNetwork.h"
#include "MouseCursor.h"
#include "CharDataTable.h"
#include "gameproc.h"
#include "kh_cpp.h"
#include "skill_lsw.h"
#include "menudef.h"
#include "menudef2.h"
#include "TextOutMgr.h"
#include "Auction.h"
#include "item.h"
#define DIVIDE_ITEM_UPGRDEABLE_MIN 2000
#define DIVIDE_ITEM_UPGRDEABLE_MAX 5000

t_SkillMakeItemInfo	skillmakeiteminfo;
extern DWORD g_ClientTimeNoGap;
extern void ConvertSpecialWord(char *txt,const char *delTarget,const char AfterConvert);
t_CombatSkill CombatSkill[MAX_COMBAT_SKILL_STRUCT] = {0,};//傈捧 胶懦 Doning 皋春俊辑 静绰巴// 0,0 -> 荤侩且 胶懦 锅龋 1,2,3->弊缝 0 磊府绰 救敬促 救俊绰 胶懦 饭骇父 历厘 等促
t_CombatSkillExplain CombatSkillExplain[MAX_COMBAT_SKILL_EXPLAIN];//傈捧胶懦 汲疙侩
t_CombatSkillGroupExplain CombatSkillGroupExplain[MAX_COMBAT_SKILL_GROUP_EXPLAIN];//傈捧胶懦 汲疙侩
int gm_make_item_result_needitem[2];
MakeItem gm_make_item_list[MAX_UPGRADE_RARE]; //GM捞 父甸 酒捞袍狼 府胶飘
MakeItem gm_make_item_result;	//GM捞 父甸 搬苞拱

//MakeItem aMRMakeSrc[3];

extern int iGM_Makeable_Item_List[300];
t_raregroup			RareGroup[5][MAX_RARE_GROUP];//0 篮 饭绢弊缝// 1篮 沏记 弊缝
t_ItemFunction		ItemFunction[MAX_ITEM_FUNCTION];
t_rareprobability	RareProbability[MAX_RARE_PROBABILITY];

ITEM_LEGEND			g_aItemLegend[MAX_ITEM_LEGEND];//021113 lsw
ITEM_LEGEND_BONUS	g_aLegendBonus[MAX_ITEM_LEGEND_BONUS];

bool CheckBy2ndGM_This_Item_Upgradeable( ItemAttr ia ,const int iType)//郴啊 捞 酒捞袍阑 诀弊饭捞靛 矫懦荐 乐绰啊困秦辑 捞吧 父甸荐 乐唱甫 夯促
{
	RareMain gmattr;
	CItem *t;
	t = ItemUnit(ia.item_no);
	const short int item_no   =  ia.item_no;

	if(!t)//肋给等 酒捞袍捞扼搁..
	{
		return false;
	}

	if(!item_no) {return false;}//酒捞袍 逞滚啊 绝栏搁

	const RareMain *pInRare = (RareMain*)(&ia.attr[IATTR_RARE_MAIN]);
	if(pInRare->soksung2 || pInRare->soksung3)
	{
		AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,880) );
		return false;
	}

	const int iUpgradeType = ItemMutantKind[t->GetItemKind()].upgrade_type - 1;//020701 lsw -1 庆辑 曼炼 窍扼
	if(0 > iUpgradeType ) {return false;}//诀臂 救登绰扒单 ぱぱ;;
	
	if(DIVIDE_ITEM == t->GetRButton())//唱穿绢 柳促搁 肮荐 眉农甫 秦具 茄促.
	{
		if(ia.attr[IATTR_MUCH]<DIVIDE_ITEM_UPGRDEABLE_MIN || ia.attr[IATTR_MUCH]>DIVIDE_ITEM_UPGRDEABLE_MAX )
		{
			AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,266),DIVIDE_ITEM_UPGRDEABLE_MIN,DIVIDE_ITEM_UPGRDEABLE_MAX);
			return false;
		}
	}

	if ( !(ia.attr[IATTR_RARE_MAIN]) )//加己捞 绝栏搁 诀弊饭捞靛 阂啊
	{	
		AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,511));
		return false;
	}
	
	memcpy(&gmattr,&ia.attr[IATTR_RARE_MAIN],sizeof(int));

	if( gmattr.grade > 16)
	{
		AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,512));
		return false;
	}

	if(iType)//扁己狼 钢萍饭绢 父甸扁 力茄 
	{
		if( !ItemGrade[gmattr.grade].iAble)
		{
			AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,512));
			return false;
		}
	}
	else//GM狼 诀弊饭捞靛 力茄
	{
		if( !ItemGrade[gmattr.grade+1].iAble)
		{
			AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,512));
			return false;
		}
	}
	if( gmattr.iHighLevel)//021119 lsw
	{
		AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,519));//饭绢酒捞袍捞 酒凑聪促
		return false;
	}

	for( int i=0; i<SCharacterData.ItemIdCount; i++ )
	{
		if( item_no == iGM_Makeable_Item_List[i] )
		{
			gm_make_item_result.item_no		= HandItemAttr.item_no;
			gm_make_item_result.attr		= HandItemAttr;

			gm_make_item_result_needitem[0]  =  ItemMutantKind[GetItemAttr( item_no, ITEM_KIND)].AddItem[0]/100;//020505 lsw
			gm_make_item_result_needitem[1]  =  ItemMutantKind[GetItemAttr( item_no, ITEM_KIND)].AddItem[1]/100;
			return true;//诀弊饭捞靛俊 利钦茄 磊脚狼 胶懦俊 嘎绰 酒捞袍
		}
	}
	AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,513));
	return false;
}

const int MAX_CORRECT_RARE = 5;
const int Convert[2][MAX_CORRECT_RARE]=
{
	{RARE_POWER,		RARE_POWER,		RARE_POWER,		RARE_VIGOR,			RARE_POWER},
	{RARE_VIGOR,		RARE_VIGOR,		RARE_VIGOR,		RARE_PIERCING,		RARE_PIERCING}
};//020823 lsw
bool CorrectRareKindJustKind(const int iResultSok, const int iTargetSok)
{
	if(iResultSok == iTargetSok)
	{
		return true;
	}
	else
	{
		for(int i = 0; i < MAX_CORRECT_RARE; i++)
		{
			if(	Convert [0][i] == iResultSok)
			{
				if(	Convert [1][i] == iTargetSok)
				{
					return true;
				}
			}
			else if(	Convert [1][i] == iResultSok)
			{
				if(	Convert [0][i] == iTargetSok)
				{
					return true;
				}
			}
		}
	}
	return false;
}
bool CorrectRareKind(const int iResultAttr,const int iCompareAttr)
{
	RareMain *result = ((LPRareMain)(&iResultAttr));
	RareMain *compare = ((LPRareMain)(&iCompareAttr));

	const int iResultSok = result->soksung1;
	const int iTargetSok = compare->soksung1;
	
	if( result->grade != compare->grade){return false;}
	if( result->iHighLevel != compare->iHighLevel){return false;}
	if( result->soksung2 != compare->soksung2){return false;}
	if( result->soksung3 != compare->soksung3){return false;}
	if( result->IsDynamicRare != compare->IsDynamicRare){return false;}

	for(int i = 0; i < MAX_CORRECT_RARE; i++)
	{
		if(	Convert [0][i] == iResultSok)
		{
			if(	Convert [1][i] == iTargetSok)
			{
				return true;
			}
		}
		else if(	Convert [1][i] == iResultSok)
		{
			if(	Convert [0][i] == iTargetSok)
			{
				return true;
			}
		}
	}
	return false;
}

bool CheckBy2ndGM_Insert_to_GMItemList(ItemAttr ia, const int iType)
{
	const int item_no = gm_make_item_result.item_no;//诀弊饭捞靛 何啊 酒捞袍老 版快

	CItem *t;
	t = ItemUnit(ia.item_no);

	if(!t)
	{
		return false;
	}

	if( !ia.item_no )	
	{	AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,514) );
		return false;
	}

	const RareMain *pInRare = (RareMain*)(&ia.attr[IATTR_RARE_MAIN]);
	if(pInRare->soksung2 || pInRare->soksung3)
	{
		AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,880) );
		return false;
	}

	if(DIVIDE_ITEM == t->GetRButton())
	{
		if(ia.attr[IATTR_MUCH]<DIVIDE_ITEM_UPGRDEABLE_MIN || ia.attr[IATTR_MUCH]>DIVIDE_ITEM_UPGRDEABLE_MAX )
		{
			AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,266),DIVIDE_ITEM_UPGRDEABLE_MIN,DIVIDE_ITEM_UPGRDEABLE_MAX);
			return false;
		}
	}

	if(iType)//扁己狼 诀臂
	{
		if( !ia.attr[IATTR_RARE_MAIN] )	//加己捞 绝衬
		{
			AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,516));
			return false;
		}

		for(int ct = 0; ct <2; ct++)//酒捞袍 磊府啊 鞍促( Pos 眉农 )
		{
			if(!memcmp(&g_MultiRareSrc.MultiRareSrc[ct].pos , &IP_base,sizeof(POS)))
			{
				AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,518));
				return false;	
			}
			
			const RareMain *pRare = (RareMain*)(&g_MultiRareSrc.MultiRareSrc[ct].attr.attr[IATTR_RARE_MAIN] );
			
			if(pInRare->soksung1)
			{
				if(MAX_DOUBLE_RARE_GRADE < pInRare->grade + pRare->grade)//021212 lsw
				{
					AddCurrentStatusMessage(FONT_COLOR_MAX, lan->OutputMessage(2,881));
					return false;
				}

				if(pRare->soksung1 == pInRare->soksung1)
				{
					AddCurrentStatusMessage(FONT_COLOR_MAX, lan->OutputMessage(2,890));
					return false;
				}
				else//
				{
					if(CorrectRareKindJustKind(pRare->soksung1, pInRare->soksung1))//促弗单档 阂备窍档 鞍篮扒啊
					{
						return false;
					}
				}
			}
			else
			{
				AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,511));//饭绢啊 酒聪垒酒
				return false;
			}
			const int iTargetNo = g_MultiRareSrc.MultiRareSrc[ct].attr.item_no;
			if(iTargetNo)
			{
				if(ia.item_no != iTargetNo)
				{
					AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,515));
					return false;
				}
			}
		}
		return true;
	}
	else //瘤骏狼 诀臂 
	{
		if(ItemMutantKind[GetItemAttr( item_no, ITEM_KIND)].AddItem[0]/100 == ia.item_no)//鞘夸 酒捞袍 1锅 捞衬?
		{
			return true;
		}

		if(ItemMutantKind[GetItemAttr( item_no, ITEM_KIND)].AddItem[1]/100 == ia.item_no)//鞘夸 酒捞袍 2锅 捞衬?
		{
			return true;
		}
	
		if( !ia.attr[IATTR_RARE_MAIN] )	//加己捞 绝衬
		{
			AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,516));
			return false;
		}

		for(int ct = 0; ct <20; ct++)//酒捞袍 磊府啊 鞍促( Pos 眉农 )
		{
			if(!memcmp(&gm_make_item_list[ct].pos , &IP_base,sizeof(POS)))
			{
				AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,518));
				return false;	
			}
		}
		// 扁瓷 酒捞袍苞 酒囱 酒捞袍阑 备盒 窍磊.
		if(((RareMain*)&ia.attr[IATTR_RARE_MAIN])->IsDynamicRare)//捞 if巩捞 窃荐狼 付瘤阜阑 厘侥秦具 钦聪促.
		{	//扁瓷 酒捞袍 何盒
			if(gm_make_item_result.attr.item_no != ia.item_no)
			{
				AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,515));
				return false;
			}

			if( gm_make_item_result.attr.attr[IATTR_RARE_MAIN] == ia.attr[IATTR_RARE_MAIN] )//加己捞 鞍促..
			{
				
			}
			else//钢萍 扁瓷捞 等促
			{//加己 促弗芭匙
				return false;
			}
		}
		else
		{
			if(gm_make_item_result.attr.item_no != ia.item_no)
			{
				AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,515));
				return false;
			}
			if( gm_make_item_result.attr.attr[IATTR_RARE_MAIN] != ia.attr[IATTR_RARE_MAIN] )//加己捞 促福促..
			{
				if(CorrectRareKind(gm_make_item_result.attr.attr[IATTR_RARE_MAIN],ia.attr[IATTR_RARE_MAIN]))
				{
					//true肺 府畔登搁 宝满澜
				}
				else
				{
					AddCurrentStatusMessage(FONT_COLOR_MAX,lan->OutputMessage(2,517));
					return false;
				}
			}
		}
		return true;
	}
	return false;
}
//010708 lsw
int Call_GM_2ND_Skill_Menu()
{
	CloseAllMenu();

	fRMoveMenu = MM_ITEM_OPEN;		// 困狼 if巩阑 父练且 锭父
	nItemOther = MN_GM_2ND_SKILL;
	y_MenuFocus = 0;

	ZeroMemory( &gm_make_item_result, sizeof(MakeItem) );	//府胶飘 檬扁拳
	ZeroMemory(  gm_make_item_list	, sizeof(MakeItem[MAX_UPGRADE_RARE]) );
	return 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -