📄 smallmenu.cpp
字号:
#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 + -