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

📄 smallmenu.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include "stdafx.h"
#include <ddraw.h>
#include <Io.h>
#include "Hangul.h"
#include "dragon.h"
#include "SmallMenuSet.h"
#include "Menu.h"
#include "Resource.h"
#include "SmallMenu.h"
#include "Hong_Sub.h"
#include "Hong_Sprite.h"
#include "stdio.h"
#include "directsound.h"
#include "directinput.h"
#include "Char.h"
#include "Effect.h"
#include "map.h"
#include "tool.h"
#include "MenuSet.h"
#include "convert565to555.h"
#include "Math.h"
#include "MenuNetwork.h"
#include "GameProc.h"
#include "CharDataTable.h"
#include "object.h"
#include "Item.h"
#include <direct.h>
#include "linecommand.h"
#include "word.h"
#include "kh_cpp.h"
#include "counseler.h"
#include "skillTool.h"
#include "menudef2.h"
#include "MagicSys.h"
#include "skill_lsw.h"
#include "battle.h"
#include "Chat.h"
#include "CurrentMsgMgr.h"
#include "skill.h"
#include "TextOutMgr.h"
#include "MailMgr.h"
#include "Menu.h"
#include "HunterSystem.h"
#include "QuestFunction.h"	// 021024 kyo
#include "ExchangeMgr.h"
#include "ArenaManager.h"
#include "FrameMgr.h" //030703 lsw


using namespace battle;

extern void GetFriendGroup();

bool g_bDualMagicBookOpen = false;//soto-030421
int g_SetGuildMarkViewOn;
const char string_up_point_abilit[][10] = { "STR", "DEX", "CON", "WIS", "INT", "CHA", "ENDU", "MOVP", "MOR", "LUCK", "WS", "PS", 
"MAG_T", "DEV_T", "CASTING", "HP", "MANA", "DIVINE", "HEALTH" };

extern void GetRealTime( int &mon, int &day, int &hour );

extern void DeleteBetaFile( char *dir );
extern  int		GetItemAttr2(int sprno, int item_id, int attr);		//011018 KHS 噶肚
extern int g_SelectServerIndex;
extern void CheckImage( int type, int nImageNumber );
int g_GuildMax;
char string_ability[11][5] = { "STR", "DEX", "CON", "WIS", "INT", "CHA", "MOVP", "ENDU", "MOR", "WS", "LUCK" };
char PosOfNation[][20] = { "", "", "", "The King","The King", "","The King" };

CQuestSmallmapDot quest_dot;


CBitBuf		guild_mark_main;
#define _RGB16BIT555(r,g,b) ((b%32) + ((g%32) << 5) + ((r%32) << 10))
#define _RGB16BIT565(r,g,b) ((b%32) + ((g%64) << 6) + ((r%32) << 11))

int g_Note_Meeting;
char g_Note_Meeting_message[256];

int	smallmenu_img2[MAX_IMAGE2]=	{ 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 };		// spr2 阑 捞侩茄 刀赋皋春.. --> 橇府且锭 捞侩
float paytable[9] = { 1.2f, 1.1f, 1.0f, 1.0f, 0.9f, 0.8f, 0.7f, 0.6f, 0.5f };
/*
typedef struct tag_board			// 烙矫
{
char	text[4][20];
}DIRECTBOARD, *LPDIRECTBOARD;

  DIRECTBOARD board_test;
  void PutDirectBoardMenu( const LPDIRECTBOARD lpDB );
  void PutBoardMenu( int cn, char *name );
*/

extern void PutDirectBoardMenu( const DIRECTBOARDDATA *lpDB );
extern void PutBoardMenu( int cn, char *name );
extern void StartMenuFree();	// 胶鸥飘 皋春俊辑 皋葛府 荤侩阑 橇府 矫难霖促.
extern void CheckPeaceBattle();	// 敲饭弊甫 捞侩秦辑 皋春俊辑 乔胶葛靛 硅撇 葛靛烙阑 官层霖促.

extern void ViewGuildCommandInfo2( );	// 辨付 疙飞狼 沥焊甫 焊咯霖促. 角力肺 沥焊甫 嘛绢 霖促.
extern void ViewEarCommandInfo2( );		// 角力肺 沥焊甫 嘛绢 霖促.


CBbsTitle	c_BbsTitle[ MAX_BBS_TITLE ];
char		s_BbsTextBuf[ MAX_STRING_ ];	// 霸矫魄 夯巩

void EatItem(const ItemAttr item, const POS ItemPos)//020501 lsw 酒捞袍 冈绰 窃荐 公炼扒 捞芭 何福技夸
{
	int not_delete = 0;
	int item_no = item.item_no, much = 0;
	CItem *t = ItemUnit( item_no );
	
	if( !t ){return;}
	
	const int iUseitemKind = t->GetItemKind();
	int iNoDelete = 0;
	switch(iUseitemKind)
	{
	case IK_POTION_BOX:// 林赣聪甫 努腐沁促.
		{
			GetItemByPotionBox( item_no, much );
			if( !much ){return;}
			iNoDelete = 1;
		}break;
	case IK_POTION_BAG:		// BBD 040213 器记归 眠啊
	case IK_CANDLE:
	case IK_GOOD_CANDLE:
		{
			iNoDelete = 2;
		}break;
	default:
		{
		}break;
	}
	::InsertMagic( Hero, Hero, 247, 0, 0,0,0,0 );
	
	ITEMATTR *pItem = GetItemByPos(ItemPos);
	if(pItem)//瘤况廉 滚府搁 救登垒酒
	{
		::CallItemVirtualFunction(VF_EAT_ITEM, item_no );
	}
	
	POS UsePos;
	SetItemPos(USE, &UsePos);
	// BBD 040213 林籍父 眠啊: 酒贰仇篮 酒捞袍宫绰巴阑 辑滚茄抛 倾遏罐绰 仇捞促
	SendMoveItem( pItem->item_no, ItemPos, UsePos);
	
	if(!iNoDelete)
	{
		::DeleteItem(ItemPos);
	}
}

void CBbsTitle::SetBbsTitle( short no, DWORD time, char *name, char *title )
{
	int len;
	m_Time = time;
	m_Number = no;
	
	m_Year = (short ) (m_Time / 10000);
	m_Month = (short) ( ( m_Time - m_Year*10000 ) / 100 );
	m_Day = (short) (m_Time % 100);
	
	len = strlen(name);
	strncpy( m_Name, name, len );
	m_Name[len] = NULL;
	
	len = strlen(title);
	if(sp_BbsTextTitle) delete sp_BbsTextTitle;
	sp_BbsTextTitle = new char[len+1];
	
	strncpy( sp_BbsTextTitle, title, len );
	sp_BbsTextTitle[len] = NULL;
	
	is_first = true;
	delete m_szMessage;
}

int GetBankItemWeight()		// 公霸俊 蝶弗 焊包丰....
{
	int weight=0;
	int a, b, c;
	for(a=0;a<5;a++)
		for(b=0;b<3;b++)
			for(c=0;c<6;c++)
				if( BankItemAttr[a][b][c].item_no ) weight += GetWeight( BankItemAttr[a][b][c] );
				return weight; 
}

int GetCurrentBankItemPay()	// 泅犁 篮青狼 公霸俊 蝶弗 焊包丰
{ 
	return (int)( GetBankItemWeight() * paytable[4]); 
}	

///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////


CHouse::CHouse()
{
	//	strcpy(m_Explain1, lan->OutputMessage(7,111)); //010215 lsw
	//	strcpy(m_Explain2, lan->OutputMessage(7,112)); //010215 lsw
	strcpy(m_Explain1, "够毫"); //010215 lsw
	strcpy(m_Explain2, "梅毫"); //010215 lsw
	
	strcpy(m_Owner, "Kein"); 
	strcpy(m_Kind, "APT");
}
char* CHouse::GetDur()
{
	wsprintf(temp, "%d/%d", m_Duration, m_DurationMax);
	return temp;
}

void CHouse::SetExplain( char *exp1, char *exp2 )
{
	wsprintf(m_Explain1, "%s", exp1);
	wsprintf(m_Explain2, "%s", exp2);
}


void CHouse::ReadHouse( char * buf )
{
	char *token;
	token = strtok(buf, "\t\n");
	m_Id = atoi(token);
	
	token= strtok(NULL, "\t\n") ;
	m_Image = atoi(token);
	
	token= strtok(NULL, "\t\n") ;
	strcpy(m_Name, token);
	
	token= strtok(NULL, "\t\n") ;
	strcpy(m_HanName, token);
	
	int *data = &m_Width;
	
	for( int a=0; a<18; a++)
	{
		token= strtok(NULL, "\t\n") ;
		*data = atoi(token);
		data++;
	}
}

CHouse	House[HOUSE_MAX_TABLE]; 
bool ReadHouseTable()
{
	char buf[511] ;
	
	FILE *fp ;
	char	filename[MAX_FILENAME], filenameBin[MAX_FILENAME];
	
	sprintf(filename, "./itemtable/housetable.txt");
	sprintf(filenameBin, "./itemtable/housetable.bin");
	
	if( fp= Fopen(filename, "rt") )
	{
		int i=0;
		while( !feof(fp) && i<HOUSE_MAX_TABLE)
		{
			fgets(buf, 511, fp);
			if( *buf == ';' ) continue;
			House[i].ReadHouse(buf);
			i++;
		}
		fclose(fp);
		
		if(fp=Fopen( filenameBin, "wb" ) )
		{
			char *tt = (char *) House;
			char crc=0;
			for( int i=0; i< sizeof(CHouse)*HOUSE_MAX_TABLE; i++ )
			{
				crc += *tt;
				tt++;
			}
			fwrite( &crc, 1, 1, fp );
			fwrite( House, sizeof(CHouse), HOUSE_MAX_TABLE, fp);
			fwrite( &crc, 1, 1, fp );
			fclose(fp);
		}
	}
	
	else
	{
		if(fp=Fopen( filenameBin, "rb" ) )
		{
			char *tt = (char *) House;
			char crc=0, crc1, crc2;
			fread( &crc1, 1, 1, fp );
			fread( House, sizeof(CHouse), HOUSE_MAX_TABLE, fp);
			fread( &crc2, 1, 1, fp );
			fclose(fp);
			
			for( int i=0; i< sizeof(CHouse)*HOUSE_MAX_TABLE; i++ )
			{
				crc += *tt;
				tt++;
			}
			if( crc != crc1 || crc != crc2 ) JustMsg(lan->OutputMessage(6,68) );//CheckSumError = 1;//010215 lsw
		}
		else return 0;
	}
	return 1;
}


void CMyHouse::AddHouse( CHouse house, int *count )
{
	CMyHouse *link = this;
	CMyHouse *target;
	
	target = new CMyHouse;
	target->data = house;
	
	target->data.m_DurationMax = house.m_Duration;
	
	while( link->next )
	{
		link = link->next;		
	}
	
	link->next = target;
	target->prev = link;
	(*count)++;
	return;
}

void CMyHouse::FreeAll()
{
	CMyHouse *temp = this;
	if( temp == NULL ) return;
	
	while( temp->next )
	{
		CMyHouse *temp2 = temp->next;
		delete temp;
		temp = temp2;
	}
}

void CMyHouse::DeleteHouse( int *count )
{
	prev = next;
	(*count)--;
	delete this;
	return;
}

int CMyHouse::Repair()
{
	if( !data.m_DurationMax ) JustMsg( lan->OutputMessage(6,67) );//010215 lsw
	return(int) ((data.m_DurationMax - data.m_Duration)*data.m_Price*.9/data.m_DurationMax+.5);
}

//------------------------------------------------------------
// 胶隔甘俊辑 涅胶飘 困摹 沥焊甫 啊福媚 临锭 荤侩... ( 龋铰阑 困秦..)
int ConvMapnameToMapnumber( char *mapname )
{
	CharUpper( mapname );
	for( int c =0; MapInfo[c].mapfile[0] ; c ++)
		if( strcmp( mapname, MapInfo[c].mapfile ) == 0 ) return c;
		
		return -1;
}

void CQuestSmallmapDot::Setting( int num, int xx, int yy )
{
	map_num = num; 
	x = xx/TILE_SIZE*200/g_Map.file.wWidth; 
	y = yy/TILE_SIZE*200/g_Map.file.wHeight; 
	on = 160;
}

void CQuestSmallmapDot::Setting( char *map_name, int xx, int yy )
{
	int num = ConvMapnameToMapnumber( map_name );
	if( num = -1 ) return;
	
	Setting( num, xx, yy );	
}



//################################### 甘 眉牢瘤俊 蝶弗 肺爹 拳搁 ######################################
void SettingChangMapMenu( int ct )
{
	int gauge = 211;
	
	if( GetSysInfo( SI_GAME_MAKE_MODE ) )
	{
		char str[10];
		char ch = ct/10+'A';
		if( ch >= 'A' && ch <= 'Z' ) sprintf( str, "%c", ch );
		FieldTypeTextPut( 100, GAME_SCREEN_YSIZE-30, ct, 0, str );
	}
	for(int k=0; k < ct && ct < 440 ; k++) FieldTypeNomalPut(0, 0, 105+k, GAME_SCREEN_YSIZE-10, gauge);	// 瞒坷福绰 霸捞瘤官 嘛扁
	
	
	
}
//#####################################################################################################

//  概流 酒捞能 濒冠捞扁...
CMagicOnCheck	MagicOnFlag;

// pgup, pgdn 栏肺 胶隔 窃荐 倒酒 促聪扁...
const int smallmenu1[] = 
{
	MN_DIVIDE_ITEM,
		MN_ITEM,
		MN_PARTY,
		
		MN_FACE,
		
		MN_STATUS,
		MN_ABILITY,
		MN_ARIGEMENT,
		MN_TACTICS,
		
		MN_SYSTEM,
		MN_SYSTEM_OPTION,
		MN_SYSTEM_LOGOUT,
		//				MN_LEVELUP,
		
		MN_ITEM_MAKE,
		MN_ITEM_MAKE_SELECT,
		
		MN_GM_2ND_SKILL,//010708 lsw
		
		MN_OK_MESSAGEBOX,
		MN_OKCANCEL_MESSAGEBOX,
		MN_ITEM_MESSAGEBOX,
		
		MN_GOD_EDELBLHOY,
		MN_GOD_TEFFERY,
		MN_GOD_LETTY,
		MN_GOD_OREM,
		
		
		MN_SKILLGUILD_BUY			,
		MN_SKILLGUILD_SELL			,
		//				MN_SKILLGUILD_SKILL			,
		//				MN_SKILLGUILD_ITEM			,
		//				MN_SKILLGUILD_REPAIR		,
		
		MN_BANK_DEPOSIT,
		MN_BANK_DEFRAYAL,
		MN_BANK_CUSTODY,
		MN_BANK_MAIN,
		MN_BANK_LOAN,
		MN_BANK_REPAYMENT,
		MN_BANK_AUCTION,
		MN_BANK_AUCTION_SALE,
		
		MN_BLACKSMITH,			// 流诀 辨靛
		MN_FARM	,	
		MN_RESTAURANT,
		MN_HERBSHOP,	
		MN_SHAMBLES	,
		MN_CANDLE	,
		MN_SLOPSHOP	,
		MN_ALCHEMY	,
		MN_WOODWORKING,
		MN_BOWCRAFT	,
		MN_SHIPYARD	,
		MN_TOWNHALL ,
		MN_TOWNHALL_PUBLICNOTICE ,
		MN_TOWNHALL_BUILDING,
		MN_TOWNHALL_COMMERCE1,
		MN_TOWNHALL_COMMERCE2,
		MN_TOWNHALL_COMMERCE3,
		MN_TOWNHALL_HOUSEREPAIR,
		MN_TOWNHALL_GUILD,
		MN_TOWNHALL_FORUM,
		MN_TOWNHALL_EVENT,
		MN_TOWNHALL_RANK1,
		MN_TOWNHALL_RANK2,
		MN_TOWNHALL_NOTICE4,
		MN_TOWNHALL_NOTICE3,
		MN_TOWNHALL_NOTICE2,
		MN_TOWNHALL_NOTICE1,
		MN_TOWNHALL_COMMERCE4,
		MN_TOWNHALL_CONSTRUCTION,
		
		MN_GOD1,
		MN_GOD2,
		MN_GOD3,
		
		MN_MAGICBOOK,
		MN_FUNCTION,
		
		MN_DRINK_MAIN,
		MN_DRINK_RUMOR,	
		MN_DRINK_BUY,	
		
		MN_SHOP_MAIN,
		MN_SHOP_SELL,
		MN_SHOP_BUY,	
		
		MN_HEAL_MAIN,
		MN_HEAL_HEALING,
		MN_HEAL_PREVENTING,
		MN_HEAL_LEARN,
		
		MN_INN_MAIN,
		MN_INN_REST,

⌨️ 快捷键说明

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