Название: Гайд по основным Java-файлам ядра сервер L2J_Mobius [Версия для печати] Автор: admin Время: 2024-9-21 10:39 Название: Гайд по основным Java-файлам ядра сервер L2J_Mobius Гайд по основным Java-файлам ядра сервер L2J_Mobius. v# Y2 Y6 _7 B8 _* p( f0 K# U3 q Z
: T0 {: Z7 @# m* g% A Разбор файла QuestManager.java / X! P$ ~, S0 b6 S# y( x ( E+ J1 Q% w# d# C, I% s( QЭтот файл управляет загрузкой, перезагрузкой, выгрузкой и хранением квестов и скриптов на сервере Lineage 2. В нём реализованы функции для управления квестами и скриптами, а также взаимодействия с движком скриптов.! ~0 r4 ~- @4 y( P! Q) _& R- [: H Основные элементы7 S2 l8 z7 f H7 v' c
Лицензия0 m7 K. _" ?+ P* E6 k k& d
Комментарии в начале указывают на лицензию GNU General Public License, что позволяет использовать и модифицировать код в рамках условий лицензии.5 X! `* ^4 K( p. r: }2 X9 Z
Импорты J& l( z, h+ d4 f: \( u
5 |( q# u% Q) r; c, |, J* [ QuestManager.java — управление квестами и скриптами. 8 _5 W! K; t) E1 P i, BПуть: \L2J_Mobius\java\org\l2jmobius\gameserver\instancemanager\ 0 p" d& @8 x' Q) }& ~# s" O! t* v r& V0 ?; L
4 q% h. `0 q' y: m0 U i7 N$ H6 H4 |Давай переведем и разберем код QuestManager.java по частям. Этот класс управляет квестами и скриптами на сервере L2J Mobius. В нем реализованы функции для загрузки, выгрузки, обновления и отслеживания состояния квестов и скриптов.$ J) P8 s- J- k8 G6 F 1. Лицензионное соглашение0 ]5 Q6 `1 @4 ~8 ~( B# A
/*; O `' a( ~$ s. s9 K0 s
* Этот файл является частью проекта L2J Mobius.% l' X: L/ [0 u8 l( C5 @7 {; ^5 {
* ' Y; D8 R! V, |) X
* Эта программа является свободным ПО: вы можете распространять её и/или изменять 3 f F7 M% c+ ]
* её в соответствии с условиями GNU General Public License, опубликованной . \# t3 J7 {- _' ~: x
* Free Software Foundation, либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии. 8 ?/ n( z) i& ?4 D5 k, T/ J
* & ?/ g8 s; i# f4 [
* Эта программа распространяется в надежде, что она будет полезной,. Z+ f) o3 @3 @( Y. ]" ^, Y+ H5 V/ `
* но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии $ X7 [2 `2 N/ ^& z8 Z7 H* M
* КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. : X, @; z4 j$ g7 i! T# |7 _
* См. GNU General Public License для получения более подробной информации.) Q, J4 q7 _* Z. f+ h# u G
* ; w5 _$ y5 p) x
* Вы должны были получить копию GNU General Public License ) x" x' I( G) `
* вместе с этой программой. Если нет, см. <http://www.gnu.org/licenses/>." q. I- _! Q9 V" [ x4 D/ H' a& e
*/
Скопировать код
Это стандартный блок лицензии, который описывает, что этот код является открытым исходным кодом, распространяемым по лицензии GPLv3.; R8 a9 }! ~$ y6 P$ k \# x
0 v) W2 G" q& d8 \: s
9 S! K+ ^9 m! A% g. I$ l 2. Импортируемые библиотеки% G& r2 t* B5 @& v
: d5 k3 b! e5 J2 ?8 i
package org.l2jmobius.gameserver.instancemanager;/ f5 u+ U$ Q& [4 X
: ~8 M; o# u! d& S- A2 x/ I/ C, r
import java.util.Map; 3 G/ o1 x8 }7 g
import java.util.concurrent.ConcurrentHashMap;/ p3 j5 n, l6 `) a5 L( ]
import java.util.logging.Level; ' O! r" ^: W v: w! ?
import java.util.logging.Logger; z9 ?& e" }( `5 i
0 X) ?# B; M2 h; F
import org.l2jmobius.Config;+ C3 |7 g. z* k& ^
import org.l2jmobius.commons.util.CommonUtil; 5 P: v& E0 J" L
import org.l2jmobius.gameserver.model.quest.Quest; ) i! I3 U, y/ ] b& w, j. m
java.util.Map — интерфейс для работы с коллекциями, которые сопоставляют ключи со значениями.java.util.concurrent.ConcurrentHashMap — потокобезопасная реализация карты для использования в многопоточных приложениях.java.util.logging.Logger — класс для логирования информации (вывод сообщений в консоль или лог-файлы).org.l2jmobius.Config — класс конфигурации сервера.org.l2jmobius.commons.util.CommonUtil — утилиты, которые могут использоваться в различных частях программы.org.l2jmobius.gameserver.model.quest.Quest — базовый класс квеста, представляющий игровой квест.org.l2jmobius.gameserver.scripting.ScriptEngineManager — менеджер для работы с игровыми скриптами.5 M: X! L4 {1 d: |/ _( b
; D; ~6 ~/ [; M) x6 d) v3. Описание класса QuestManager # \% D3 T; K' C- Y
/**2 ?% k! J9 i, m- m7 f. T
* Менеджер квестов и скриптов. + `2 X- T. s0 H9 r
* Автор: Zoey76 " R- M4 ?2 ?; e4 \3 M
*// i7 u2 a! c! \5 H& j! P; C& c
public class QuestManager ; N0 D; L- Q$ I2 Y& ^. M- M! p5 S& p
{$ o7 X; T/ g8 |' l" s
private static final Logger LOGGER = Logger.getLogger(QuestManager.class.getName());. `" |3 b. @2 G9 r
* m% y8 n+ n: j0 D5 x9 k% [: S4 Z
/** Карта, содержащая все квесты. */3 x7 l* Z# v8 _) y* L" m
private final Map<String, Quest> _quests = new ConcurrentHashMap<>(); % }( t1 d# i5 x! X
& v) p1 R. ~1 l' q5 Q8 a4 G 4 y' T7 }: Q0 S+ A3 Q, M9 yМетод перезагружает квест по имени папки, в которой он хранится.Если квест с таким именем не найден, возвращается false, иначе вызывается метод reload() у объекта квеста.! R1 z' d+ K4 Y3 a" C( b Метод reload(int questId) # T$ |: L* {! }6 }, `/ N X ]& p$ w$ ?8 z$ Q6 ]) U6 c1 R/ P
/**7 D- @4 p' K& _
* Перезагружает квест по ID. + P, H$ ^7 A; k0 v
* @param questId ID квеста для перезагрузки R# E( O0 q' k2 Z9 {
* @return {@code true} если перезагрузка успешна, {@code false} в противном случае 5 D5 w' n! C0 e; n1 F: Z( H
*/ * f$ ], ~0 ?6 f5 Z
public boolean reload(int questId) & ^- B, O& W) u9 {) M
for (Quest script : _scripts.values()) , ]1 x; S. h4 [$ U Y
{ / s% I8 G2 u I# R2 q
if (script != null) 6 V7 v/ G; b& w' N, S. l: l2 h
{& X% E" p; B8 R6 M) @: O9 _. o
script.unload(false);% `+ ?6 S9 d8 c$ y* o
}! [# k$ c3 Y9 `% @) ^2 y; C
}# @+ l* C; R3 A; F6 {5 L
_scripts.clear(); 8 B3 i+ ?4 H5 i" ] w
}
Скопировать код
Этот метод проходит по всем квестам и скриптам и вызывает метод unload() для каждого, а затем очищает коллекции _quests и _scripts.0 }+ z# r8 X% p6 O& m
2 A0 F# |& y5 ~! QМетод report() ; m7 {+ I$ t% N6 b2 O 7 j, J# h& X# B) W5 j+ u
/**0 \: P8 X. I# u: q8 g) ~
* Логирует количество загруженных квестов и скриптов.- |% f4 C* h' D; w" V
*/ % b. b& r2 r' y5 L- J: N3 z
public void report()6 G; i6 O$ i" z) \; O
{ ; R4 l0 k9 d. M# [6 Y4 \0 _8 }
LOGGER.info(getClass().getSimpleName() + ": Загружено " + _quests.size() + " квестов."); $ w) b3 M V3 K! v4 Y$ ~4 V
Логика работыQuestManager управляет процессом загрузки, перезагрузки и выгрузки квестов и скриптов на сервере. Он поддерживает кэширование квестов и скриптов в картах _quests и _scripts, а также обеспечивает возможность их перезагрузки без перезапуска сервера. % z9 s8 T; ^8 j4 T: xЗаключениеQuestManager.java — это ключевой элемент в управлении системой квестов и скриптов. Основная его функция — это управление квестами и скриптами, их загрузка, перезагрузка, выгрузка и хранение на сервере. + l, L( E, ?' E' B0 `! y$ P& G/ b1 \2 U& g, F. j
6 [9 w! W; k: Z6 Y
( P' L( P/ _" |( R
Добро пожаловать artace.ru - творческий сектор (https://artace.ru/)