📄 px_ls_uninit.c
字号:
/* must been first include begin */
#include "..\ProjectX_Common\ProjectX_Copyright.h"
#include "..\ProjectX_Common\ProjectX_Common.h"
/* must been first include end */
/* std and common include */
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
//program specify include
#include "..\ProjectX_Common\ProjectX_Shared.h"
#include "..\ProjectX_Common\ProjectX_Utils.h"
#include "..\ProjectX_Common\ProjectX_MessageCode.h"
#include "px_ls_common.h"
#include "px_ls_config.h"
#include "px_ls_state.h"
#include "px_ls_statistic.h"
#include "px_ls_time_service.h"
#include "px_ls_ui.h"
#include "px_ls_account.h"
#include "px_ls_antihack.h"
#include "px_ls_battle_guid.h"
#include "px_ls_blacklist.h"
#include "px_ls_char.h"
#include "px_ls_char_class.h"
#include "px_ls_charge.h"
#include "px_ls_chat_radio.h"
#include "px_ls_chat_video.h"
#include "px_ls_community.h"
#include "px_ls_friends.h"
#include "px_ls_gm.h"
#include "px_ls_item.h"
#include "px_ls_log.h"
#include "px_ls_lottery.h"
#include "px_ls_map.h"
#include "px_ls_marriage.h"
#include "px_ls_master_prentice.h"
#include "px_ls_module_dbes.h"
#include "px_ls_module_rs.h"
#include "px_ls_module_work.h"
#include "px_ls_monster.h"
#include "px_ls_npc.h"
#include "px_ls_passive_effect.h"
#include "px_ls_pet.h"
#include "px_ls_pk.h"
#include "px_ls_roup.h"
#include "px_ls_skill.h"
#include "px_ls_speed_frame.h"
#include "px_ls_stranger.h"
#include "px_ls_task.h"
#include "px_ls_team.h"
#include "px_ls_trade.h"
#include "px_ls_trap.h"
#include "px_ls_version.h"
#include "px_ls_war_guid.h"
#include "px_ls_uninit.h"
/* extern variant define */
/* frame base */
extern FRAME_FBS_BASE * frame_fbs_base_head; /* fbs */
extern FRAME_FCE_BASE * frame_fce_base_head; /* fce */
extern FRAME_FCM_BASE * frame_fcm_base_head; /* fcm */
extern FRAME_FCP_BASE * frame_fcp_base_head; /* fcp */
extern FRAME_FCR_BASE * frame_fcr_base_head; /* fcr */
extern FRAME_FHR_BASE * frame_fhr_base_head; /* fhr */
extern FRAME_FLR_BASE * frame_flr_base_head; /* flr */
extern FRAME_FMR_BASE * frame_fmr_base_head; /* fmr */
extern FRAME_FMS_BASE * frame_fms_base_head; /* fms */
extern FRAME_FPR_BASE * frame_fpr_base_head; /* fpr */
extern FRAME_FSR_BASE * frame_fsr_base_head; /* fsr */
extern FRAME_FSS_BASE * frame_fss_base_head; /* fss */
extern PX_LS_EXP_BASE * exp_base_head; /* exp */
/* item_defence base */
extern ITEM_AMULET_BASE * item_amulet_base_head; /* 项链 */
extern ITEM_ARMOR_BASE * item_armor_base_head; /* 衣服 */
extern ITEM_BELT_BASE * item_belt_base_head; /* 腰带 */
extern ITEM_BOOT_BASE * item_boot_base_head; /* 靴子 */
extern ITEM_EYE_BASE * item_eye_base_head; /* 眼罩 */
extern ITEM_GLOVE_BASE * item_glove_base_head; /* 护手 */
extern ITEM_GUARDIANSHIP_BASE * item_guardianship_base_head; /* 守护 */
extern ITEM_HELM_BASE * item_helm_base_head; /* 头盔 */
extern ITEM_LEGGUARD_BASE * item_legguard_base_head; /* 护腿 */
extern ITEM_MANTLE_BASE * item_mantle_base_head; /* 披风 */
extern ITEM_RING_BASE * item_ring_base_head; /* 戒指 */
extern ITEM_SHIELD_BASE * item_shield_base_head; /* 盾牌 */
extern ITEM_SHIRT_BASE * item_shirt_base_head; /* 内衣 */
extern ITEM_WING_BASE * item_wing_base_head; /* 翅膀 */
extern ITEM_TALISMAN_BASE * item_talisman_base_head; /* 护身符 */
/* item_weapon base */
extern ITEM_AX_BASE * item_ax_base_head; /* 斧子 */
extern ITEM_BOW_BASE * item_bow_base_head; /* 弓 */
extern ITEM_CROSSBOW_BASE * item_crossbow_base_head; /* 弩 */
extern ITEM_DANGGER_BASE * item_dangger_base_head; /* 匕首 */
extern ITEM_DECONTICATETOOL_BASE * item_deconticatetool_base_head; /* 剥皮工具 */
extern ITEM_HERBALTOOL_BASE * item_herbaltool_base_head; /* 收集草药工具 */
extern ITEM_LEAF_BASE * item_leaf_base_head; /* 亡灵荷叶 */
extern ITEM_MACE_BASE * item_mace_base_head; /* 顶头锤 */
extern ITEM_MAGICSTAFF_BASE * item_magicstaff_base_head; /* 法杖 */
extern ITEM_MININGTOOL_BASE * item_miningtool_base_head; /* 采矿工具 */
extern ITEM_POWERSTAFF_BASE * item_powerstaff_base_head; /* 权杖 */
extern ITEM_REAMER_BASE * item_reamer_base_head; /* 刀 */
extern ITEM_SHAFT_BASE * item_shaft_base_head; /* 矛 */
extern ITEM_SPEAR_BASE * item_spear_base_head; /* 枪 */
extern ITEM_STAVE_BASE * item_stave_base_head; /* 棍棒 */
extern ITEM_SWORD_BASE * item_sword_base_head; /* 剑 */
/* item_staff base */
extern ITEM_CONSUMER_BASE * item_consumer_base_head; /* 消耗品 */
extern ITEM_GEM_BASE * item_gem_base_head; /* 珠宝 */
extern ITEM_GUID_BASE * item_guid_base_head; /* 战盟或者血盟物品 */
extern ITEM_PET_SPAWN_BASE * item_pet_spawn_base_head; /* 宠物 */
extern ITEM_RESTORE_BASE * item_restore_base_head; /* 恢复药剂 */
extern ITEM_SKILL_BASE * item_skill_base_head; /* 技能书或者技能石 */
extern ITEM_SPECIAL_BASE * item_special_base_head; /* 特殊物品 */
extern ITEM_STATE_BASE * item_state_base_head; /* 恢复状态类 */
extern ITEM_TASK_BASE * item_task_base_head; /* 任务 */
/* entity base */
extern PET_BASE * pet_base_head;
extern TASK_BASE * task_base_head;
extern TRAP_BASE * trap_base_head; /* 陷阱基配置 */
extern MONSTER_BASE * monster_base_head; /* 怪物基配置 */
extern NPC_BASE * npc_base_head; /* npc基配置 */
extern TELEPORT_POINT_BASE * teleport_point_base_head; /* 传送点基配置 */
/* entity refresh base */
extern MONSTER_REFRESH * refresh_monster_head; /* 怪物刷新 */
extern REVENGE_MONSTER_REFRESH * refresh_revenge_monster_head; /* 复仇怪物刷新 */
extern NPC_REFRESH * refresh_npc_fix_head; /* 仅刷新一次的NPC */
extern NPC_REFRESH * refresh_npc_nofix_head; /* 需要连续不停的刷新的npc */
extern TRAP_REFRESH * refresh_trap_head; /* 陷阱刷新 */
/* entity search key */
extern ACCOUNT_KEY * account_key_head; /* 帐号 */
extern CHAR_GROP_INFO * char_group_info_key_head; /* 集群内LS服务器链表 */
extern BATTLE_GUID_KEY * battle_guid_key_head; /* 血盟 */
extern CHAT_RADIO_KEY * chat_radio_key_head;
extern CHAT_VIDEO_KEY * chat_video_key_head;
extern LOTTERY_KEY * lottery_key_head;
extern ROUP_KEY * roup_key_head; /* 拍卖 */
extern WAR_GUID_KEY * war_guid_key_head; /* 战盟 */
extern MONSTER_KEY * monster_key_head; /* 怪物 */
extern TEAM_KEY * team_key_head; /* 组队 */
extern TRAP_KEY * trap_key_head; /* 陷阱 */
extern SCROLL_DOOR_KEY * scroll_door_key_head; /* 传送门 */
extern NPC_KEY * npc_key_head; /* npc */
extern GM_KEY * gm_key_head; /* gm */
extern TRADE_KEY * trade_key_head; /* 交易 */
extern MARRIAGE_KEY * marriage_key_head; /* 婚姻 */
extern MASTER_PRENTICE_KEY * master_prentice_key_head; /* 师徒关系 */
extern ITEM_GROUND_KEY * item_ground_key_head; /* 处于地面上或者类似的道具 */
extern PK_PVP_KEY * pk_pvp_key_head; /* single player vs single player using pk */
extern PK_WVW_KEY * pk_wvw_key_head; /* war_guid vs war_guid using pk */
extern PK_TVT_KEY * pk_tvt_key_head; /* team vs team using pk */
/* activity or event base */
extern EVENT_REVENGE * event_revenge_base_head;
/* 以下为服务器全局变量 */
extern PX_LS_CONFIG * g_config; /* LS服务器配置信息 */
extern PX_LS_CL_VERSION * g_cl_version_head; /* cl版本访问控制 */
extern PX_LS_IPBAN * g_ip_ban_head; /* ip访问控制 */
extern PX_LS_STATISTIC * g_stat; /* 统计信息 */
extern PX_LS_TIME_SERVICE * g_time_service; /* 服务器时间服务 */
extern PX_LS_MAP * g_map_head; /* 小型地图,适用于MapVersion > 1.00.0142 */
extern char ** pcfg_buf;
extern PX_LS_STATE * g_state; /* 服务器全局状态 */
extern HANDLE h_winsock2; /* winsock2 句柄 */
extern char base_path[FILENAME_MAX]; /* 程序基文件地址 */
/* 总入口 */
void ls_uninit_subproc(){
ls_uninit_basepath();
ls_uninit_configuration();
ls_uninit_base_map();
ls_uninit_entity();
ls_uninit_item();
ls_uninit_event();
ls_uninit_refresh();
ls_uninit_stat();
return;
}
/*
* stat uninit
*/
void ls_uninit_stat(){
if (g_stat != NULL) {
ms_free(g_stat);
g_stat = NULL;
}
return;
}
/*
* basepath & configuration uninit
*/
void ls_uninit_basepath(){
base_path[0] = '\0';
return;
}
void ls_uninit_configuration(){
if (g_config != NULL) {
ms_free(g_config);
g_config = NULL;
}
return;
}
/*
* base map uninit
*/
void ls_uninit_base_map(){
/* pass */
int i;
PX_LS_MAP * pmb;
TRANCE_ENTITY * pte;
TRANCE_ENTITY * pnte; /* pNext trance entity */
for(i = 0;i < g_stat->num_key_map;i++){
pmb = g_map_head + i;
/* 传送卷轴 */
for(pte = pmb->ptrance_scroll_door;pte != NULL;pte = pnte){
pnte = pte->pNext;
ms_free(pte);
}
pmb->ptrance_scroll_door = NULL; /* need? FIXME! */
/* 陷阱 */
for(pte = pmb->ptrance_trap;pte != NULL;pte = pnte){
pnte = pte->pNext;
ms_free(pte);
}
pmb->ptrance_trap = NULL; /* need? FIXME! */
/* 怪物 */
for(pte = pmb->ptrance_monster;pte != NULL;pte = pnte){
pnte = pte->pNext;
ms_free(pte);
}
pmb->ptrance_monster = NULL; /* need? FIXME! */
/* 玩家 */
for(pte = pmb->ptrance_player;pte != NULL;pte = pnte){
pnte = pte->pNext;
ms_free(pte);
}
pmb->ptrance_player = NULL; /* need? FIXME! */
/* NPC */
for(pte = pmb->ptrance_npc;pte != NULL;pte = pnte){
pnte = pte->pNext;
ms_free(pte);
}
pmb->ptrance_npc = NULL; /* need? FIXME! */
/* GM */
for(pte = pmb->ptrance_gm;pte != NULL;pte = pnte){
pnte = pte->pNext;
ms_free(pte);
}
pmb->ptrance_gm = NULL; /* need? FIXME! */
}
ms_free(g_map_head);
g_map_head = NULL;
return;
}
/*
* entity uninit
*/
/* main entry */
void ls_uninit_entity(){
ls_uninit_entity_trap();
ls_uninit_entity_monster();
ls_uninit_entity_player();
ls_uninit_entity_npc();
ls_uninit_entity_gm();
ls_uninit_entity_teleport_point();
ls_uninit_frame();
return;
}
/* 陷阱 */
void ls_uninit_entity_trap(){
if (trap_base_head != NULL) {
ms_free(trap_base_head);
trap_base_head = NULL;
}
return;
}
/* 怪物 */
void ls_uninit_entity_monster(){
if (monster_base_head != NULL) {
ms_free(monster_base_head);
monster_base_head = NULL;
}
return;
}
/* 玩家 */
void ls_uninit_entity_player(){
/* current no config read,then got no uninit */
return;
}
/* npc */
void ls_uninit_entity_npc(){
if (npc_base_head != NULL) {
ms_free(npc_base_head);
npc_base_head = NULL;
}
return;
}
/* gm */
void ls_uninit_entity_gm(){
/* current no config read,then got no uninit */
return;
}
/* 地图上的传送点标志 */
void ls_uninit_entity_teleport_point(){
if (teleport_point_base_head != NULL) {
ms_free(teleport_point_base_head);
teleport_point_base_head = NULL;
}
return;
}
/* 读取与帧数相关的配置 */
void ls_uninit_frame(){
ls_uninit_frame_fbs();
ls_uninit_frame_fce();
ls_uninit_frame_fcm();
ls_uninit_frame_fcp();
ls_uninit_frame_fcr();
ls_uninit_frame_fhr();
ls_uninit_frame_flr();
ls_uninit_frame_fmr();
ls_uninit_frame_fms();
ls_uninit_frame_fpr();
ls_uninit_frame_fsr();
ls_uninit_frame_fss();
ls_uninit_entity_exp();
return;
}
/* fbs */
void ls_uninit_frame_fbs(){
if (frame_fbs_base_head != NULL) {
ms_free(frame_fbs_base_head);
frame_fbs_base_head = NULL;
}
return;
}
/* fce */
void ls_uninit_frame_fce(){
if (frame_fce_base_head != NULL) {
ms_free(frame_fce_base_head);
frame_fce_base_head = NULL;
}
return;
}
/* fcm */
void ls_uninit_frame_fcm(){
if (frame_fcm_base_head != NULL) {
ms_free(frame_fcm_base_head);
frame_fcm_base_head = NULL;
}
return;
}
/* fcp */
void ls_uninit_frame_fcp(){
if (frame_fcp_base_head != NULL) {
ms_free(frame_fcp_base_head);
frame_fcp_base_head = NULL;
}
return;
}
/* fcr */
void ls_uninit_frame_fcr(){
if (frame_fcr_base_head != NULL) {
ms_free(frame_fcr_base_head);
frame_fcr_base_head = NULL;
}
return;
}
/* fhr */
void ls_uninit_frame_fhr(){
if (frame_fhr_base_head != NULL) {
ms_free(frame_fhr_base_head);
frame_fhr_base_head = NULL;
}
return;
}
/* flr */
void ls_uninit_frame_flr(){
if (frame_flr_base_head != NULL) {
ms_free(frame_flr_base_head);
frame_flr_base_head = NULL;
}
return;
}
/* fmr */
void ls_uninit_frame_fmr(){
if (frame_fmr_base_head != NULL) {
ms_free(frame_fmr_base_head);
frame_fmr_base_head = NULL;
}
return;
}
/* fms */
void ls_uninit_frame_fms(){
if (frame_fms_base_head != NULL) {
ms_free(frame_fms_base_head);
frame_fms_base_head = NULL;
}
return;
}
/* fpr */
void ls_uninit_frame_fpr(){
if (frame_fpr_base_head != NULL) {
ms_free(frame_fpr_base_head);
frame_fpr_base_head = NULL;
}
return;
}
/* fsr */
void ls_uninit_frame_fsr(){
if (frame_fsr_base_head != NULL) {
ms_free(frame_fsr_base_head);
frame_fsr_base_head = NULL;
}
return;
}
/* fss */
void ls_uninit_frame_fss(){
if (frame_fss_base_head != NULL) {
ms_free(frame_fss_base_head);
frame_fss_base_head = NULL;
}
return;
}
/* exp */
void ls_uninit_entity_exp(){
if (exp_base_head != NULL) {
ms_free(exp_base_head);
exp_base_head = NULL;
}
return;
}
/*
* item uninit
*/
/* main item entry */
void ls_uninit_item(){
ls_uninit_item_defence();
ls_uninit_item_weapon();
ls_uninit_item_staff();
return;
}
/* main sub_item_defence entry */
void ls_uninit_item_defence(){
ls_uninit_item_defence_armor();
ls_uninit_item_defence_boot();
ls_uninit_item_defence_eye();
ls_uninit_item_defence_shirt();
ls_uninit_item_defence_helm();
ls_uninit_item_defence_belt();
ls_uninit_item_defence_glove();
ls_uninit_item_defence_ring();
ls_uninit_item_defence_shield();
ls_uninit_item_defence_amulet();
ls_uninit_item_defence_wing();
ls_uninit_item_defence_guardianship();
ls_uninit_item_defence_legguard();
ls_uninit_item_defence_mantle();
ls_uninit_item_defence_talisman();
return;
}
/* main sub_item_weapon entry */
void ls_uninit_item_weapon(){
ls_uninit_item_weapon_ax();
ls_uninit_item_weapon_bow();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -