📄 scrp_exe.cpp
字号:
#include "..\stdafx.h"
#include "..\LowerLayers\mylog.h"
#include "..\LowerLayers\servertable.h"
#include "Map.h"
#include "MenuDefine.h"
#include "Chatting.h"
#include "Scrp_int.h"
#include "quest_cpp.h"
#include "OP_magic.h"
#include "citem.h"
#include "SealStoneGameServer.h"
#include "Scrp_exe.h"
#include "NationSys.h" // 010904 LTS
#include "teambattle.h"
#include "LTSSupport.h"
#include "QuestFunction.h" // 021015 kyo
#include "eventmgr.h"
#include "SymbolItemMgr.h" // 030419 kyo
#include "ArenaManager.h"
#include "BattleManager.h"
#include "UserManager.h"
#include "KickOffAll.h" // BBD 040329
int var[ DRAGON_MAX_CONNECTIONS_][ _SCRIPT_VARABLE_POINT_ ] = {0,};
char String[ MAX_STRING_] = {0,};
int EventPC, EventNPC[ DRAGON_MAX_CONNECTIONS_] = {0,};
extern void UpdateCharacterData(t_connection c[], int cn, bool bDirect = false);
extern void SendCMD_MAGIC_POSITION( t_server_magic_position *p);
extern void SendCharInfoSkill( t_connection c[], int cn );
extern void makemyjobexpsetting( int skillno , CHARLIST *ch );
extern void SendLearnSkillOk( int skill_no, t_connection c[], int cn );
extern void RecvCMD_CLIENT_CHARACTER_DEMAND( int cn, t_client_character_demand *p );
extern CKickOffAll g_KickMgr; // BBD 040329
void LogInFile( string szFilePath, char *szFormat, ... ) //kyo
{
FILE *fp;
if(!(fp=fopen(szFilePath.c_str(), "a+")))
{
return;
}
char szMessage[512];//
va_list val;
va_start(val, szFormat);
vsprintf(szMessage, szFormat, val);
va_end(val);
time_t nowTime;
struct tm *now;
time( &nowTime );
now = localtime(&nowTime);
int year = 0, mon = 0, day = 0;
int hour = 0, min = 0, sec = 0;
// Make it usable.
year = now->tm_year + 1900;
mon = now->tm_mon + 1;
day = now->tm_mday;
hour = now->tm_hour;
min = now->tm_min;
sec = now->tm_sec;
char szLog[512];
sprintf( szLog, "%d %d/%d %d:%d:%d\t%s\n", year, mon, day, hour, min, sec, szMessage);
if( !fputs( szLog, fp ) )
{
fclose(fp);
return;
}
fclose(fp);
}
void ReCallScript( void )
{ //< CSD-CN-031213
CUserManager::HASH_USER mpUser = g_pUserManager->GetUserSet();
for (CUserManager::ITOR_USER i = mpUser.begin(); i != mpUser.end(); ++i)
{
const int idUser = i->second;
if (!var[idUser][1])
{
continue;
}
CHARLIST* pUser = CheckServerId(idUser);
if (pUser != NULL)
{
if (var[idUser][3] < g_curr_time )
{
EventPC = idUser;
Script(var[idUser][1]);
}
}
}
} //> CSD-CN-031213
int SearchItemByInv( int item_no, CHARLIST *ch )
{
for( int a=0; a<3; a++ )
for( int b=0; b<3; b++ )
for( int c=0; c<8; c++ )
{
if( ch->inv[a][b][c].item_no == item_no )
{
return 1;
}
}
return 0;
}
int SearchItemByInv( int item_no, CHARLIST *ch, int &a, int &b, int &c )
{
for( a=0; a<3; a++ )
for( b=0; b<3; b++ )
for( c=0; c<8; c++ )
{
if( ch->inv[a][b][c].item_no == item_no )
{
return 1;
}
}
return 0;
}
int SearchItemByEquip( int item_no, CHARLIST *ch )
{
for( int a=0; a<8; a++ )
{
if( ch->equip[a].item_no == item_no ) return 1;
}
return 0;
}
int SearchItemByQuick( int item_no, CHARLIST *ch )
{
for( int a=0; a<6; a++ )
{
if( ch->quick[a].item_no == item_no ) return 1;
}
return 0;
}
// 021107 YGI
int SendDial( short int cn, int npc_index, char *msg, int length )
{
if( !CheckServerIndex( cn ) ) return 0;
t_packet packet;
packet.h.header.type = CMD_CHAT_DATA;
{
packet.u.server_chat_data.server_id = npc_index+10000;
packet.u.server_chat_data.type = (unsigned char)CHATTYPE_NORMAL;
packet.u.server_chat_data.length = (unsigned char)length;
memset(packet.u.server_chat_data.text, 0, TEXT_LENGTH );
memcpy(packet.u.server_chat_data.text, msg, length);
}
packet.h.header.size = sizeof(t_server_chat_data)-TEXT_LENGTH+length;
QueuePacket(connections, cn, &packet, 1);
return 1;
}
/*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -