📄 rajasystem.cpp
字号:
#include "..\stdafx.h"
#include "DefaultHeader.h"
#define __RAJASYSTEM_H__
#include "RajaSystem.h"
#include <MMSystem.h>//010614 lsw
#include "Kein_Item.h"
#include "OP_Magic.h"
#include "SealStone.h" // 001209 KHS
#include "../LowerLayers/MyLog.h"
#include "UserManager.h"
int g_NoPkMode = false; //021014 lsw
bool g_block_attack = false;//020821 lsw
bool g_block_magic = false;//020821 lsw
bool g_block_move = false;//020821 lsw
bool g_block_steal = false;//020821 lsw
bool g_stop_please_give_life;
bool g_accelator_user_closeconnection;
char GameServerDataPath[ FILENAME_MAX];
extern void SendViewTypeChange( int, int );
extern int initNPCGenerationTable(void);
extern CHARLIST* CheckServerId(WORD id);
extern CHARLIST* CheckServerName(const char* szName);// kyo
extern CHARLIST* CheckNpcId(short int cn);
void SetGlobalBlockValues()
{
g_NoPkMode = ((::GetPrivateProfileInt( "Option", "NeverPK", 0, MAP_SERVER_INI_ ))?true:false);
g_block_attack = ((::GetPrivateProfileInt( "Option", "BlockAttack", 0, MAP_SERVER_INI_ ))?true:false);
g_block_magic = ((::GetPrivateProfileInt( "Option", "BlockMagic", 0, MAP_SERVER_INI_ ))?true:false);
g_block_move = ((::GetPrivateProfileInt( "Option", "BlockMove", 0, MAP_SERVER_INI_ ))?true:false);
g_block_steal = ((::GetPrivateProfileInt( "Option", "BlockSkill", 0, MAP_SERVER_INI_ ))?true:false);
g_stop_please_give_life = ((::GetPrivateProfileInt( "Option", "StopGiveLife", 0, MAP_SERVER_INI_ ))?true:false);
}
// ------------------------------------------------------------------------------------------------------------------------------
// 扁 瓷 : 霸烙辑滚狼 檬扁拳甫 困茄 Init拳老阑 佬绢甸牢促.
// 捞拳老篮 角青叼泛配府俊 乐绢具 茄促.
// 牢 磊 : 'dargon.ini'
// 搬 苞 : 己傍 return 1;
// 酵菩 reutrn < 0 :
// ------------------------------------------------------------------------------------------------------------------------------
int InitGameMakeModeSetting( char *filename )
{
GetPrivateProfileString( "network", "path", "", GameServerDataPath, sizeof( GameServerDataPath ), filename );
if( GameServerDataPath[0] == 0 )
{
return(-1);
}
GetPrivateProfileString( "network", "mapname", "", MapName, sizeof( MapName), filename );
if( MapName[0] == 0 )
{
return(-1);
}
CharUpper( MapName );
SetGlobalBlockValues();
// 030919 HK YGI
extern void LoadAIConfig();
LoadAIConfig();
return 1;
}
void SaveGameServerStatus( void )
{
FILE *fp = fopen( "GameServer.Sav", "wb" );
if( fp == NULL ) return;
fwrite( &g_curr_time, sizeof( g_curr_time ), 1, fp );
fwrite( &CurrentNPCNo, sizeof( CurrentNPCNo ), 1, fp );
fwrite( NPCList, sizeof( CHARLIST ), MAX_NPC_LIST, fp );
fwrite( ItemList, sizeof( ITEMLIST ), MAX_ITEM_LIST, fp );
fwrite( NPCgeneratePosition, sizeof( sNPCgeneratePosition ), MAX_GENERATE_POSITION_, fp );
fwrite( &NPCgeneratePositionMax, sizeof( int ), 1, fp );
// 001209 KHS
fwrite( NationRelation, sizeof( t_NationRelation ) , MAX_NATION * MAX_NATION, fp );
fclose(fp);
}
void LoadGameServerStatus( void )
{
DWORD time;
int i;
FILE *fp = fopen( "GameServer.sav","rb" );
if( fp == NULL ) return;
int usingsaveddata = GetPrivateProfileInt( "Option", "UsingSavedMapServerStatus", 0, MAP_SERVER_INI_ );
if( usingsaveddata )
{
if( YesOrNo( "Load the last MAPSERVER status( Using 'GameServerData.sav' ) ?", "Load" ) == IDYES )
{
}
else
{
fclose(fp);
return;
}
}
else return;
fread( &time, sizeof( g_curr_time ), 1, fp );
fread( &CurrentNPCNo, sizeof( CurrentNPCNo ), 1, fp );
fread( NPCList, sizeof( CHARLIST ), MAX_NPC_LIST, fp );
for( i = 0 ; i < MAX_NPC_LIST ; i ++)
{
}
fread( ItemList, sizeof( ITEMLIST ), MAX_ITEM_LIST, fp );
for( i = 0 ; i < MAX_ITEM_LIST ; i ++)
{
}
fread( NPCgeneratePosition, sizeof( sNPCgeneratePosition ), MAX_GENERATE_POSITION_, fp );
fread( &NPCgeneratePositionMax, sizeof( int ), 1, fp );
// 001209 KHS
fread( NationRelation, sizeof( t_NationRelation ) , MAX_NATION * MAX_NATION, fp );
fclose(fp);
}
/*----------------------------------------------------------------------------------------------------------
// 扁 瓷 : 某腐磐狼 磊悼 Update 磊悼 Upate ぞ
15盒 付促 历厘..
饭骇捞 官差芭唱 Exp俊 函拳啊 乐栏搁 历厘茄促.
// 牢 磊 : 绝娇
// 搬苞蔼 : 诀娇
----------------------------------------------------------------------------------------------------------*/
// 010301 khs 15MIN -> 20MIN...
extern void UpdateCharacterData(t_connection c[], int cn, bool bDirect = false);
void CharacterAutoUpdate()
{ //< CSD-CN-031213
return;
static DWORD time;
if (g_curr_time - time > 60)
{
time = g_curr_time;
}
else
{
return;
}
CUserManager::HASH_USER mpUser = g_pUserManager->GetUserSet();
for (CUserManager::ITOR_USER i = mpUser.begin(); i != mpUser.end(); ++i)
{
const int idUser = i->second;
CHARLIST* pUser = CheckServerId(idUser);
if (pUser != NULL)
{
if (g_curr_time - pUser->timetoupdate > 1200) // 20盒.
{
pUser->timetoupdate = g_curr_time;
UpdateCharacterData(connections, idUser);
}
}
}
} //> CSD-CN-031213
void SendHowManyInMap(short how)
{
t_packet p;
p.h.header.type = CMD_HOW_MANY_IN_MAP;
p.h.header.size = sizeof(t_how_many_in_map);
strcpy(p.u.how_many_in_map.map, MapName);
p.u.how_many_in_map.how = how;
QueuePacket(connections, DB_DEMON, &p, 1);
}
extern CHARLIST* CheckServerId(WORD id);
extern CHARLIST* CheckServerName(const char* szName);// kyo
void RecvBlockAttack( short int cn, bool flag )
{
if( !CheckServerId( cn ) ) return;
CrackMgr.SendHackingUser( cn, USE_GM_TOOL, "block attack on/off" );
g_block_attack = flag;
}
void RecvBlockMove( short int cn, bool flag )
{
if( !CheckServerId( cn ) ) return;
CrackMgr.SendHackingUser( cn, USE_GM_TOOL, "block move on/off" );
g_block_move = flag;
}
void RecvBlockMagic( short int cn, bool flag )
{
if( !CheckServerId( cn ) ) return;
CrackMgr.SendHackingUser( cn, USE_GM_TOOL, "block magic on/off" );
g_block_magic = flag;
}
void RecvBlockGiveLife( short int cn, bool flag )
{
if( !CheckServerId( cn ) ) return;
CrackMgr.SendHackingUser( cn, USE_GM_TOOL, "block give life on/off" );
g_stop_please_give_life = flag;
}
void RecvAbsoluteLogOut( short int cn, short id )
{
if( !CheckServerId( cn ) ) return;
if( !CheckServerId( id ) ) return;
CrackMgr.SendHackingUser( cn, USE_GM_TOOL, "absolute LogOut" );
closeconnection( connections, id, -33 ); // 款康磊俊 狼茄 碍力辆丰..
}
void RecvBlockSkill( short int cn, bool flag )//020821 lsw
{
if( !CheckServerId( cn ) ) return;
CrackMgr.SendHackingUser( cn, USE_GM_TOOL, "block Skill on/off" );
g_block_steal = flag;//020926 lsw
}
// 020708 YGI
void RecvMakeGhost(short int cn, short id)
{ //< CSD-030408
CHARLIST* pTarget = NULL;
if (id <= 1000)
{
pTarget = CheckServerId(id);
if (pTarget == NULL)
{
return;
}
pTarget->Hp = 0;
pTarget->bAlive = DEAD_;
pTarget->viewtype = VIEWTYPE_GHOST_;
pTarget->InitCurse();
SendViewTypeChange(id, VIEWTYPE_GHOST_);
pTarget->SendCharInfoBasic(HP, pTarget->Hp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -