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

📄 scrp_exe.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 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 + -