1
0
forked from metin2/server

17 Commits

Author SHA1 Message Date
mq1n
418ecc5c24 change line endings to LF for .py files
Changed line endings from CRLF to LF for all .py files to solve issues with pre_qc.py and other potential problems on windows
2024-07-11 10:03:57 +03:00
6616009e92 Merge pull request 'Pin Dockerfile Ubuntu version.' (#24) from halil/server:master into master
Reviewed-on: metin2/server#24
2024-05-01 07:57:36 +03:00
1ada609020 Pin Dockerfile Ubuntu version. 2024-05-01 01:10:02 +03:00
0101618d89 Fixed sectree not found while loading guild buildings 2024-03-25 07:01:22 +02:00
8579828ca6 Implemented official level update fix 2024-03-11 18:08:24 +02:00
3f1ce57fa1 Enforced signed datatypes for char variables, fixing ARM builds 2024-03-03 19:10:49 +02:00
e4cbdcfc4d Remove hardcoded CMake debug flag. Closes #12 2024-03-03 19:03:53 +02:00
bba0294107 Merge pull request 'Refactored the logging code' (#14) from log-rewrite into master
Reviewed-on: metin2/server#14
2024-03-03 19:02:05 +02:00
0aab8162fb Merge branch 'master' into log-rewrite 2024-03-03 18:59:23 +02:00
9fba85f947 Updated README.md with the latest changes 2024-03-03 18:55:48 +02:00
a7f4e4e54d Rewrote the log initialization functions, logs are now saved in rotating files, implemented configurable log levels 2024-03-03 18:51:51 +02:00
7e543bd05f Merge pull request 'fix arm/aarch64 builds.' (#13) from NycuRO/server:fix-arm-aarch into master
Reviewed-on: metin2/server#13
2024-01-09 20:59:11 +02:00
405b05fe59 fix arm/aarch64 builds. 2024-01-09 18:26:50 +02:00
feac4c0598 Applied changes on the db executable. Removed old logging functions. Various global changes. 2024-01-07 22:05:51 +02:00
2f829ae2dc Applied changes on the game executable. 2023-12-31 12:26:59 +02:00
2c8cb0c857 Made a small-scale test with the spdlog library. Incidentally added fmt. 2023-12-30 10:30:52 +02:00
fc3f2f232c CMake build system updates, the docker image automatically compiles quests at build 2023-12-10 10:00:55 +02:00
232 changed files with 3792 additions and 20168 deletions

View File

@@ -5,5 +5,14 @@ cmake-build-release/
# Dockerfile (in order to allow changes without rebuilding)
Dockerfile
# Git files
.gitignore
.gitkeep
# Compiled quests
gamefiles/locale/english/quest/object/
gamefiles/locale/english/quest/pre_qc/
gamefiles/locale/english/quest/qc
# Test folder
test/

1
.gitattributes vendored
View File

@@ -2,6 +2,7 @@
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
*.py eol=lf
###############################################################################
# Set default behavior for command prompt diff.

View File

@@ -1,8 +1,5 @@
cmake_minimum_required(VERSION 3.12)
# Build mode debug/release?
set(CMAKE_BUILD_TYPE Debug)
# Set C++ standard to C++17
set(CMAKE_CXX_STANDARD 17)
@@ -23,15 +20,14 @@ set(METIN2_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
set(METIN2_CPU_TARGET ${CMAKE_SYSTEM_PROCESSOR})
# Git revision
include(FindGit)
find_package(Git)
find_package(GitInfo)
if(GIT_FOUND)
GIT_WC_INFO(${PROJECT_SOURCE_DIR} Metin2)
set(METIN2_REVISION ${Metin2_WC_REVISION_NAME})
set(METIN2_REVISION ${Metin2_WC_REVISION_HASH})
set(METIN2_LAST_CHANGED_DATE ${Metin2_WC_LAST_CHANGED_DATE})
if (${Metin2_WC_LATEST_TAG} NOT STREQUAL "")
if (Metin2_WC_LATEST_TAG)
set(METIN2_LATEST_TAG ${Metin2_WC_LATEST_TAG})
else()
set(METIN2_LATEST_TAG "unknown")

View File

@@ -1,35 +1,42 @@
FROM ubuntu:latest as build
FROM ubuntu:22.04 as build
WORKDIR /app
# Update the system and install various dependencies
RUN apt-get update && \
apt-get install -y git cmake build-essential tar curl zip unzip pkg-config autoconf python3 \
apt-get install -y git cmake ninja-build build-essential tar curl zip unzip pkg-config autoconf python3 \
libdevil-dev libncurses5-dev libbsd-dev
# Arm specific
ENV VCPKG_FORCE_SYSTEM_BINARIES=1
# Install vcpkg and the required libraries
RUN git clone https://github.com/Microsoft/vcpkg.git
RUN bash ./vcpkg/bootstrap-vcpkg.sh
RUN ./vcpkg/vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo
RUN ./vcpkg/vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo fmt spdlog
COPY . .
# Build the binaries
RUN mkdir build/
RUN cd build && cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ..
RUN cd build && make -j $(nproc)
FROM ubuntu:latest as app
FROM ubuntu:22.04 as app
WORKDIR /app
RUN apt-get update && apt-get install -y libdevil-dev libbsd-dev && apt-get clean
RUN apt-get update && apt-get install -y python2 libdevil-dev libbsd-dev && apt-get clean
# Copy the binaries from the build stage
COPY --from=build /app/build/src/db/db /bin/db
COPY --from=build /app/build/src/game/game /bin/game
COPY --from=build /app/build/src/quest/quest /bin/quest
COPY --from=build /app/build/src/quest/qc /bin/qc
# Copy the game files
COPY ./gamefiles/ .
# Compile the quests
RUN cd /app/locale/english/quest && python2 make.py
# Symlink the configuration files
RUN ln -s "./conf/CMD" "CMD"
RUN ln -s ./conf/item_names_en.txt item_names.txt

View File

@@ -39,7 +39,7 @@ Install `vcpkg` according to the [lastest instructions](https://vcpkg.io/en/gett
Build and install the required libraries:
```shell
vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo
vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo fmt spdlog
```
Then, it's time to build your binaries. Your commands should look along the lines of:
@@ -80,6 +80,7 @@ goodies you wish. Also, a lot of time.
- Switched to the [effolkronium/random PRNG](https://github.com/effolkronium/random) instead of the standard C functions.
- Refactored macros to modern C++ functions.
- Network settings are manually configurable through the `PUBLIC_IP`, `PUBLIC_BIND_IP`, `INTERNAL_IP`, `INTERNAL_BIND_IP` settings in the `CONFIG` file. (Might need further work)
- Refactored logging to use [spdlog](https://github.com/gabime/spdlog) for more consistent function calls.
## 4. Bugfixes
**WARNING: This project is based on the "kraizy" leak. That was over 10 years ago.
@@ -88,6 +89,7 @@ This is a very serious security risk and one of the reasons this project is stil
### Gameplay
- Fixed invisibility bug on login/respawn/teleport etc.
- Fixed player level not updating [(thread)](https://metin2.dev/topic/30612-official-level-update-fix-reversed/)
### Exploits
- See the warning above :(
@@ -102,7 +104,6 @@ This is a very serious security risk and one of the reasons this project is stil
- Migrate `conf.txt` and `CONFIG` to a modern dotenv-like format, which would enable pretty nice Docker images.
- Add a health check to the Docker image.
- Use the [fmt](https://fmt.dev/latest/index.html) library for safe and modern string formatting.
- Use a modern logging library to clean up the current mess.
- Handle kernel signals (SIGTERM, SIGHUP etc.) for gracefully shutting down the game server.
- Improve memory safety.
- Use fixed width integer types instead of Microsoft-style typedefs.

View File

@@ -1,176 +0,0 @@
################################################################################
#
# Program: 3D Slicer
#
# Copyright (c) Kitware Inc.
#
# See COPYRIGHT.txt
# or http://www.slicer.org/copyright/copyright.txt for details.
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
# and was partially funded by NIH grant 3P41RR013218-12S1
#
################################################################################
#
# The module defines the following variables:
# GIT_EXECUTABLE - path to git command line client
# GIT_FOUND - true if the command line client was found
# GIT_VERSION_STRING - the version of git found (since CMake 2.8.8)
#
# If the command line client executable is found the macro
# GIT_WC_INFO(<dir> <var-prefix>)
# is defined to extract information of a git working copy at
# a given location.
#
# The macro defines the following variables:
# <var-prefix>_WC_REVISION_HASH - Current SHA1 hash
# <var-prefix>_WC_REVISION - Current SHA1 hash
# <var-prefix>_WC_REVISION_NAME - Name associated with <var-prefix>_WC_REVISION_HASH
# <var-prefix>_WC_URL - output of command `git config --get remote.origin.url'
# <var-prefix>_WC_ROOT - Same value as working copy URL
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
# <var-prefix>_WC_GITSVN - Set to false
#
# ... and also the following ones if it's a git-svn repository:
# <var-prefix>_WC_GITSVN - Set to True if it is a
# <var-prefix>_WC_INFO - output of command `git svn info'
# <var-prefix>_WC_URL - url of the associated SVN repository
# <var-prefix>_WC_ROOT - root url of the associated SVN repository
# <var-prefix>_WC_REVISION - current SVN revision number
# <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
# <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
# <var-prefix>_WC_LAST_CHANGED_LOG - last log of base revision
#
# Example usage:
# find_package(Git)
# if(GIT_FOUND)
# GIT_WC_INFO(${PROJECT_SOURCE_DIR} Project)
# message("Current revision is ${Project_WC_REVISION_HASH}")
# message("git found: ${GIT_EXECUTABLE}")
# endif()
#
# Look for 'git' or 'eg' (easy git)
#
set(git_names git eg)
# Prefer .cmd variants on Windows unless running in a Makefile
# in the MSYS shell.
#
if(WIN32)
if(NOT CMAKE_GENERATOR MATCHES "MSYS")
# Note: Due to a bug in 'git.cmd' preventing it from returning the exit code of 'git',
# we excluded it from the list of executables to search.
# See http://code.google.com/p/msysgit/issues/detail?id=428
# TODO Check if 'git' exists, get the associated version, if the corresponding version
# is known to have a working version of 'git.cmd', use it.
set(git_names git eg.cmd eg)
endif()
endif()
find_program(GIT_EXECUTABLE ${git_names}
PATHS
"C:/Program Files/Git/bin"
"C:/Program Files (x86)/Git/bin"
DOC "git command line client")
# XXX Comment to workaround https://gitlab.kitware.com/cmake/cmake/issues/15448
# mark_as_advanced(GIT_EXECUTABLE)
if(GIT_EXECUTABLE)
execute_process(COMMAND ${GIT_EXECUTABLE} --version
OUTPUT_VARIABLE git_version
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (git_version MATCHES "^git version [0-9]")
string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}")
endif()
unset(git_version)
macro(GIT_WC_INFO dir prefix)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
WORKING_DIRECTORY ${dir}
ERROR_VARIABLE GIT_error
OUTPUT_VARIABLE ${prefix}_WC_REVISION_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(${prefix}_WC_REVISION ${${prefix}_WC_REVISION_HASH})
if(NOT ${GIT_error} EQUAL 0)
message(SEND_ERROR "Command \"${GIT_EXECUTBALE} rev-parse --verify -q --short=7 HEAD\" in directory ${dir} failed with output:\n${GIT_error}")
else(NOT ${GIT_error} EQUAL 0)
execute_process(COMMAND ${GIT_EXECUTABLE} name-rev ${${prefix}_WC_REVISION_HASH}
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_REVISION_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif(NOT ${GIT_error} EQUAL 0)
execute_process(COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_URL
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format="%ci" ${${prefix}_WC_REVISION_HASH}
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_show_output
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX REPLACE "^([0-9][0-9][0-9][0-9]\\-[0-9][0-9]\\-[0-9][0-9]).*"
"\\1" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_show_output}")
set(${prefix}_WC_GITSVN False)
# Check if this git is likely to be a git-svn repository
execute_process(COMMAND ${GIT_EXECUTABLE} config --get-regexp "^svn-remote"
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE git_config_output
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT "${git_config_output}" STREQUAL "")
# In case git-svn is used, attempt to extract svn info
execute_process(COMMAND ${GIT_EXECUTABLE} svn info
WORKING_DIRECTORY ${dir}
TIMEOUT 3
ERROR_VARIABLE git_svn_info_error
OUTPUT_VARIABLE ${prefix}_WC_INFO
RESULT_VARIABLE git_svn_info_result
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(${git_svn_info_result} EQUAL 0)
set(${prefix}_WC_GITSVN True)
string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*"
"\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
"\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Repository Root: ([^\n]+).*"
"\\2" ${prefix}_WC_ROOT "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}")
endif(${git_svn_info_result} EQUAL 0)
endif(NOT "${git_config_output}" STREQUAL "")
# If there is no 'remote.origin', default to "NA" value and print a warning message.
if(NOT ${prefix}_WC_URL)
message(WARNING "No remote origin set for git repository: ${dir}" )
set( ${prefix}_WC_URL "NA" )
else()
set(${prefix}_WC_ROOT ${${prefix}_WC_URL})
endif()
endmacro(GIT_WC_INFO)
endif(GIT_EXECUTABLE)
# Handle the QUIETLY and REQUIRED arguments and set GIT_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Git DEFAULT_MSG GIT_EXECUTABLE)

View File

@@ -0,0 +1,244 @@
################################################################################
#
# Program: FindGitInfo from Slicer
#
# Copyright (c) Kitware Inc.
#
# See COPYRIGHT.txt
# or http://www.slicer.org/copyright/copyright.txt for details.
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This file was originally developed by Jean-Christophe Fillion-Robin,
# Kitware Inc. and was partially funded by NIH grant 3P41RR013218-12S1
#
################################################################################
# If the command line client executable is found the macro
# GIT_WC_INFO(<dir> <var-prefix>)
# is defined to extract information of a git working copy at
# a given location.
#
# The macro defines the following variables:
# <var-prefix>_WC_REVISION_HASH - Current SHA1 hash
# <var-prefix>_WC_REVISION - Current SHA1 hash
# <var-prefix>_WC_REVISION_NAME - Name associated with <var-prefix>_WC_REVISION_HASH
# <var-prefix>_WC_URL - output of command `git config --get remote.origin.url'
# <var-prefix>_WC_ROOT - Same value as working copy URL
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
# <var-prefix>_WC_GITSVN - Set to false
# <var-prefix>_WC_LATEST_TAG - Latest tag found in history
# <var-prefix>_WC_LATEST_TAG_LONG - <last tag>-<commits since then>-g<actual commit hash>
#
# ... and also the following ones if it's a git-svn repository:
# <var-prefix>_WC_GITSVN - Set to True if it is a
# <var-prefix>_WC_INFO - output of command `git svn info'
# <var-prefix>_WC_URL - url of the associated SVN repository
# <var-prefix>_WC_ROOT - root url of the associated SVN repository
# <var-prefix>_WC_REVISION - current SVN revision number
# <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
# <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
# <var-prefix>_WC_LAST_CHANGED_LOG - last log of base revision
#
# Example usage:
# find_package(GitInfo)
# if(GIT_FOUND)
# GIT_WC_INFO(${PROJECT_SOURCE_DIR} Project)
# message("Current revision is ${Project_WC_REVISION_HASH}")
# message("git found: ${GIT_EXECUTABLE}")
# endif()
#
# Look for git. Respect the quiet and required flags passed to this module.
set(FIND_QUIETLY_FLAG "")
if (DEFINED GitInfo_FIND_QUIETLY)
set(FIND_QUIETLY_FLAG "QUIET")
endif ()
set(FIND_REQUIRED_FLAG "")
if (DEFINED GitInfo_FIND_REQUIRED)
set(FIND_REQUIRED_FLAG "REQUIRED")
endif ()
find_package(Git ${FIND_QUIETLY_FLAG} ${FIND_REQUIRED_FLAG})
if(GIT_FOUND)
execute_process(COMMAND ${GIT_EXECUTABLE} --version
OUTPUT_VARIABLE git_version
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (git_version MATCHES "^git version [0-9]")
string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}")
endif()
unset(git_version)
macro(GIT_WC_INFO dir prefix)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
WORKING_DIRECTORY ${dir}
ERROR_VARIABLE GIT_error
OUTPUT_VARIABLE ${prefix}_WC_REVISION_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(${prefix}_WC_REVISION ${${prefix}_WC_REVISION_HASH})
if(NOT ${GIT_error} EQUAL 0)
message(SEND_ERROR "Command \"${GIT_EXECUTBALE} rev-parse --verify -q --short=7 HEAD\" in directory ${dir} failed with output:\n${GIT_error}")
else(NOT ${GIT_error} EQUAL 0)
execute_process(COMMAND ${GIT_EXECUTABLE} name-rev ${${prefix}_WC_REVISION_HASH}
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_REVISION_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif(NOT ${GIT_error} EQUAL 0)
execute_process(COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_URL
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format="%ci" ${${prefix}_WC_REVISION_HASH}
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_show_output
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX REPLACE "^([0-9][0-9][0-9][0-9]\\-[0-9][0-9]\\-[0-9][0-9]).*"
"\\1" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_show_output}")
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_LATEST_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_LATEST_TAG_LONG
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
set(${prefix}_WC_GITSVN False)
# Check if this git is likely to be a git-svn repository
execute_process(COMMAND ${GIT_EXECUTABLE} config --get-regexp "^svn-remote"
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE git_config_output
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT "${git_config_output}" STREQUAL "")
# In case git-svn is used, attempt to extract svn info
execute_process(COMMAND ${GIT_EXECUTABLE} svn info
WORKING_DIRECTORY ${dir}
TIMEOUT 3
ERROR_VARIABLE git_svn_info_error
OUTPUT_VARIABLE ${prefix}_WC_INFO
RESULT_VARIABLE git_svn_info_result
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(${git_svn_info_result} EQUAL 0)
set(${prefix}_WC_GITSVN True)
string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*"
"\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
"\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Repository Root: ([^\n]+).*"
"\\2" ${prefix}_WC_ROOT "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}")
endif(${git_svn_info_result} EQUAL 0)
endif(NOT "${git_config_output}" STREQUAL "")
# If there is no 'remote.origin', default to "NA" value and print a warning message.
if(NOT ${prefix}_WC_URL)
message(WARNING "No remote origin set for git repository: ${dir}" )
set( ${prefix}_WC_URL "NA" )
else()
set(${prefix}_WC_ROOT ${${prefix}_WC_URL})
endif()
endmacro(GIT_WC_INFO)
# Get the version info from the latest tag and set it as the projects version.
#
# Parameters:
# prefix The prefix for all version variables.
#
macro(GIT_VERSION_INFO prefix)
# If this project is not deployed via git, the following version file will
# be used as fallback and needs to be deployed along with the sources. These
# will be generated automatically by depending on the global target
# 'project-version-files', if this project has access to the related git
# repositoy.
set(VERSION_FILE "${PROJECT_SOURCE_DIR}/.version")
if (NOT TARGET project-version-files)
add_custom_target(project-version-files)
endif ()
if (EXISTS "${PROJECT_SOURCE_DIR}/.git")
git_wc_info(${PROJECT_SOURCE_DIR} GIT)
# Add commands and targets for generating the required version file for
# source package deploys. The file will also be to a global property, so
# one is able to access a list of all generated version files, e.g. to
# clean up the source directory after the package has been packed.
add_custom_command(
OUTPUT ${VERSION_FILE}
COMMAND ${GIT_EXECUTABLE} describe --tags > ${VERSION_FILE}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
set_property(GLOBAL APPEND
PROPERTY GIT_GENERATED_VERSION_FILES "${VERSION_FILE}")
add_custom_target(project-version-files-${prefix} DEPENDS ${VERSION_FILE})
add_dependencies(project-version-files project-version-files-${prefix})
# If git is not available (e.g. this git was packed as .tar.gz), try to read
# the version-info from a hidden file in the root directory. This file
# should not be versioned, but added at packaging time.
elseif (EXISTS "${VERSION_FILE}")
file(READ "${VERSION_FILE}" GIT_WC_LATEST_TAG_LONG)
string(STRIP "${GIT_WC_LATEST_TAG_LONG}" GIT_WC_LATEST_TAG_LONG)
# If no version could be gathered by git or the version file, print a
# warning, so the user has to define a version in the backup version file.
else ()
if (${ARGN} EQUAL "REQUIRED")
message(FATAL_ERROR "No version provided by git or .version file")
else ()
message(WARNING "No version provided by git or .version file")
endif()
endif ()
if (GIT_WC_LATEST_TAG_LONG MATCHES "^([^0-9]*)([0-9]+)[.]([0-9]+)(.*)")
set(${prefix}_VERSION ${GIT_WC_LATEST_TAG_LONG} CACHE STRING "" FORCE)
set(${prefix}_VERSION_MAJOR ${CMAKE_MATCH_2} CACHE STRING "" FORCE)
set(${prefix}_VERSION_MINOR ${CMAKE_MATCH_3} CACHE STRING "" FORCE)
if (GIT_WC_LATEST_TAG_LONG MATCHES
"^([^0-9]*)([0-9]+)[.]([0-9]+)[.]([0-9]+)")
set(${prefix}_VERSION_PATCH ${CMAKE_MATCH_4} CACHE STRING "" FORCE)
else ()
set(${prefix}_VERSION_PATCH 0 CACHE STRING "" FORCE)
endif()
if (GIT_WC_LATEST_TAG_LONG MATCHES
"^([^0-9]*)([0-9]+)[.]([0-9]+)(.*)-([0-9]+)-")
set(${prefix}_VERSION_TWEAK ${CMAKE_MATCH_5} CACHE STRING "" FORCE)
else ()
set(${prefix}_VERSION_TWEAK 0 CACHE STRING "" FORCE)
endif()
mark_as_advanced(${prefix}_VERSION
${prefix}_VERSION_MAJOR
${prefix}_VERSION_MINOR
${prefix}_VERSION_PATCH
${prefix}_VERSION_TWEAK)
else ()
message(FATAL_ERROR "Invalid version info: '${GIT_WC_LATEST_TAG_LONG}'.")
endif ()
endmacro()
endif(GIT_FOUND)

View File

@@ -1,10 +1,12 @@
# Ignore compiled quest folder
# Ignore compiled quest folders
object/
pre_qc/
# Quest compiler binaries
qc
qc.core
qc.exe
# Compilde Python files
# Compiled Python files
__pycache__/
*.pyc

View File

@@ -1,4 +1,4 @@
#!/usr/local/bin/python
#!/bin/python2
import pre_qc
import os
os.system('rm -rf object')
@@ -13,7 +13,7 @@ for line in file('locale_list'):
else:
filename = line
if os.system('./qc '+filename):
if os.system('qc '+filename):
print 'Error occured on compile ' + line
os.system('chmod -R 770 object')
import sys

View File

@@ -1,151 +0,0 @@
quest dragon_soul begin
state start begin
when levelup or letter with pc.level >= 30 begin
send_letter(gameforge.dragon_soul._1010_sendLetter)
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when info or button begin
say(gameforge.dragon_soul._1020_say)
end
when 20001.chat.gameforge.dragon_soul._1030_npcChat with pc.level >= 30 begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.dragon_soul._1040_say)
set_state(state_learning)
end
end
state state_learning begin
when letter begin
send_letter(gameforge.dragon_soul._1050_sendLetter)
end
when info or button begin
say(gameforge.dragon_soul._1060_say)
end
when kill begin
if npc.is_pc() then
return
end
if pc.count_item(30270) < 10 then
if drop_gamble_with_flag("ds_drop") then
game.drop_item_with_ownership(30270, 1, 300)
end
end
end
when 20001.chat.gameforge.dragon_soul._1050_sendLetter begin
say_title(mob_name(20001))
if pc.count_item(30270) >= 10 then
say(gameforge.dragon_soul._1070_say)
pc.remove_item(30270, 10)
ds.give_qualification()
char_log(pc.get_player_id(), 'DS_QUALIFICATION', 'SUCCESS')
pc.give_item2(50255)
local today = math.floor(get_global_time() / 86400)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 9)
set_state(state_farming)
else
say(gameforge.dragon_soul._1080_say)
end
end
end
state state_farming begin
when letter begin
send_letter(gameforge.dragon_soul._1090_sendLetter)
end
when info or button begin
say(string.format(gameforge.dragon_soul._1100_say, pc.getf("dragon_soul", "eye_left")))
end
when kill begin
if npc.is_pc() then
return
end
if drop_gamble_with_flag("ds_drop") then
local eye_left = pc.getf("dragon_soul", "eye_left")
local haved_gemstone_number = pc.count_item(30270)
if eye_left > haved_gemstone_number / 10 then
game.drop_item_with_ownership(30270, 1, 300)
end
end
end
when 30270.pick begin
local eye_left = pc.getf("dragon_soul", "eye_left")
if eye_left <= 0 then
return
end
if pc.count_item(30270) >= 10 then
pc.setf("dragon_soul", "eye_left", eye_left - 1)
pc.remove_item(30270, 10)
pc.give_item2(50255)
if 1 == eye_left then
notice_multiline(gameforge.dragon_soul._1110_notice, notice)
set_state(state_closed_season)
end
end
end
when 20001.chat.gameforge.dragon_soul._1120_npcChat begin
say_title(mob_name(20001))
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1130_say)
else
say(gameforge.dragon_soul._1140_say)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 10)
end
end
end
state state_closed_season begin
when letter begin
send_letter(gameforge.dragon_soul._1150_sendLetter)
end
when info or button begin
say(gameforge.dragon_soul._1160_say)
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1170_say)
else
say(gameforge.dragon_soul._1180_say)
end
end
when 20001.chat.gameforge.dragon_soul._1090_sendLetter begin
say_title(mob_name(20001))
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1130_say)
else
say(gameforge.dragon_soul._1140_say)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 10)
set_state(state_farming)
end
end
end
-- deprecated states. so, jump to new state.
state state_1 begin
when login begin
set_state(state_learning)
end
end
state state_2 begin
when login begin
set_state(state_learning)
end
end
state state_3 begin
when login begin
set_state(state_closed_season)
end
end
end

View File

@@ -1,41 +0,0 @@
quest dragon_soul_daily_gift begin
state start begin
function is_event_on()
-- <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> dragon_soul_daily_gift_mgr.quest<73><74><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><EFBFBD><EBBFAA><EFBFBD><EFBFBD> Ȯ<><C8AE>.
local s_time = game.get_event_flag("ds_dg_st")
local e_time = game.get_event_flag("ds_dg_et")
local now = os.time()
return now > s_time and now < e_time
end
when 20001.chat.gameforge.dragon_soul_daily_gift._010_npcChat with dragon_soul_daily_gift.is_event_on() begin
local event_id = game.get_event_flag("ds_dg_id")
if pc.getqf("event_id") != event_id then
say_title(mob_name(20001))
if pc.level < 50 then
say(gameforge.dragon_soul_daily_gift._020_say)
return
elseif 0 == ds.is_qualified() then
say(gameforge.dragon_soul_daily_gift._030_say)
return
else
say(gameforge.dragon_soul_daily_gift._040_say)
pc.setqf("event_id", event_id)
wait()
end
end
say_title(mob_name(20001))
if 0 == get_today_count("dragon_soul_daily_gift", "gift") then
-- <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
say(gameforge.dragon_soul_daily_gift._050_say)
local gift_vnum = game.get_event_flag("ds_dg_item")
pc.give_item2(gift_vnum)
inc_today_count("dragon_soul_daily_gift", "gift")
else
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><>.
say(gameforge.dragon_soul_daily_gift._060_say)
end
end
end
end

View File

@@ -1,90 +0,0 @@
quest dragon_soul_daily_gift_mgr begin
state start begin
function is_event_on()
-- <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> dragon_soul_daily_gift_mgr.quest<73><74><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><EFBFBD><EBBFAA><EFBFBD><EFBFBD> Ȯ<><C8AE>.
local s_time = game.get_event_flag("ds_dg_st")
local e_time = game.get_event_flag("ds_dg_et")
local now = os.time()
return now > s_time and now < e_time
end
function date_getter()
say(gameforge.dragon_soul_gift_mgr._040_say)
say("yy-mm-dd hh:mm")
local date = input()
local _, _, y, m, d, hour, min = string.find(date, "(%d+)-(%d+)-(%d+) (%d+):(%d+)")
return y, m, d, hour, min
end
function print_quest_info()
local s_time = game.get_event_flag("ds_dg_st")
local e_time = game.get_event_flag("ds_dg_et")
local gift_vnum = game.get_event_flag("ds_dg_item")
say(os.date("start time[ENTER] year:%Y, month:%m, day:%d hour:%H minite:%M", s_time))
say(os.date(" end time[ENTER] year:%Y, month:%m, day:%d hour:%H minite:%M", e_time))
say(string.format("gift item[ENTER] vnum : %d", gift_vnum))
say_item_vnum(gift_vnum)
end
when 20001.chat.gameforge.dragon_soul_gift_mgr._010_npcChat with pc.is_gm() begin
local sel = 0
if dragon_soul_daily_gift_mgr.is_event_on() then
say(locale.event_on_going)
local sel = select(locale.event_modify, locale.event_info_print, locale.event_cancel, locale.close)
if 2 == sel then
dragon_soul_daily_gift_mgr.print_quest_info()
return
elseif 3 == sel then
game.set_event_flag("ds_dg_et", 0)
return
elseif 4 == sel then
return
end
end
-- Get start time and end time.
local s_y, s_m, s_d, s_hour, s_min
repeat
say(gameforge.dragon_soul_gift_mgr._020_say)
s_y, s_m, s_d, s_hour, s_min = dragon_soul_daily_gift_mgr.date_getter()
s_y = s_y + 2000
say(string.format("year:%d month:%d day:%d hour:%d min:%d", s_y, s_m, s_d, s_hour, s_min))
until 1 == select(gameforge.locale.yes, gameforge.locale.no)
local e_y, e_m, e_d, e_hour, e_min
repeat
say(gameforge.dragon_soul_gift_mgr._030_say)
e_y, e_m, e_d, e_hour, e_min = dragon_soul_daily_gift_mgr.date_getter()
e_y = e_y + 2000
say(string.format("year:%d month:%d day:%d hour:%d min:%d", e_y, e_m, e_d, e_hour, e_min))
until 1 == select(gameforge.locale.yes, gameforge.locale.no)
local s_time = os.time{year=s_y, month=s_m, day=s_d, hour=s_hour, min=s_min}
local e_time = os.time{year=e_y, month=e_m, day=e_d, hour=e_hour, min=e_min}
-- Get gift item vnum
local gift_vnum = input_number("gift vnum")
-- Print settings and confirm.
say(os.date("start time[ENTER] year:%Y, month:%m, day:%d hour:%H minite:%M", s_time))
say(os.date(" end time[ENTER] year:%Y, month:%m, day:%d hour:%H minite:%M", e_time))
say(string.format("gift item[ENTER] vnum : %d", gift_vnum))
say_item_vnum(gift_vnum)
say(gameforge.dragon_soul_gift_mgr._050_say)
if 2 == select(gameforge.locale.yes, gameforge.locale.no) then
return
end
-- <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> event_id<69><64> <20>ٲٸ<D9B2> <20>ȵ<EFBFBD>.
if 0 == sel then
local event_id = game.get_event_flag("ds_dg_id")
game.set_event_flag("ds_dg_id", event_id + 1)
end
game.set_event_flag("ds_dg_st", s_time)
game.set_event_flag("ds_dg_et", e_time)
game.set_event_flag("ds_dg_item", gift_vnum)
say (gameforge.dragon_soul_gift_mgr._060_say)
end
end
end

View File

@@ -1,9 +0,0 @@
quest dragon_soul_refine begin
state start begin
when 20001.chat.gameforge.dragon_soul_refine._010_npcChat with ds.is_qualified() != 0 begin
say_title(mob_name(20001))
say (gameforge.dragon_soul_refine._020_say)
ds.open_refine_window()
end
end
end

View File

@@ -1,8 +0,0 @@
quest dragon_soul_shop begin
state start begin
when 20001.chat.gameforge.dragon_soul._100_npcChat with ds.is_qualified() begin
say (gameforge.dragon_soul._110_say)
npc.open_shop(13)
end
end
end

View File

@@ -1,103 +0,0 @@
quest event_flame_dungeon_open begin
state start begin
when 20381.chat.gameforge.event_flame_dungeon_open._010_npcChat with pc.get_level() >= 90 begin
say(gameforge.event_flame_dungeon_open._020_say)
wait()
say(gameforge.event_flame_dungeon_open._030_say)
wait()
say(gameforge.event_flame_dungeon_open._080_say)
pc.setqf("event_FD_time", 0)
set_state(run)
end
end
state run begin
when 20381.chat.gameforge.event_flame_dungeon_open._040_npcChat with game.get_event_flag("w21open_event")>0 begin
say(gameforge.event_flame_dungeon_open._050_say)
wait()
local t = pc.getqf("event_FD_time")
local killcount = pc.getqf("kill_done")
if killcount == 0 then
say(gameforge.event_flame_dungeon_open._080_say)
elseif (t==0) or (t+86400 < get_global_time()) then
say(gameforge.event_flame_dungeon_open._060_say)
pc.give_item2(71173, 1)
pc.give_item2(71174, 3)
pc.setqf("event_FD_time", get_global_time())
pc.setqf("kill_count_1", 0)
else
say(gameforge.event_flame_dungeon_open._070_say)
end
end
when letter with game.get_event_flag("w21open_event")>0 begin
send_letter(gameforge.event_flame_dungeon_open._010_npcChat)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
event_flame_dungeon_open.kill_count()
end
when button or info with game.get_event_flag("w21open_event")>0 begin
say_title(gameforge.event_flame_dungeon_open._010_npcChat)
say(string.format(gameforge.levelup._26_say, 100 - pc.getqf("kill_count_1")))
end
when 3101.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3102.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3103.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3104.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3105.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3190.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3191.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 71173.use begin
pc.warp(614200, 706800, 62)
pc.remove_item(71173, 1)
end
function kill_count()
local total_remain = 100
local remain1 = pc.getqf("kill_count_1")
local remain_count = total_remain - remain1
q.set_counter_value(remain_count)
if total_remain == 0 then
pc.setqf("kill_done", 1)
end
end
end
end

View File

@@ -1,717 +0,0 @@
quest flame_dungeon begin
state start begin
--when 20394.click with pc.get_level() >= 90 begin
--pc.give_item2(71175, 1)
--set_state(run)
--end
--end
--state run begin
function setting()
return
{
["bossroom_entry_pos"] = {8109,6867},
["boss_pos"] = {686,637},
["doors_pos"] = {
{320,394},
{293,359},
{333,321},
{378,320},
{400,355},
{394,401}
},
["idoors_pos"] = {
{268,447},
{234,359},
{300,264},
{454,217},
{470,355},
{467,469}
},
["doors_dir"] = {135,90,210,152,90,223},
["idoors_dir"] = {135,90,210,135,90,239},
["dungeon_entry_pos"] = {7762, 6739},-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
["DUNGEON_MAN_bpos"] = {690,722},
["DUNGEON_MAN_pos"] = {354,362},
["LEVEL2_STONE_pos"] = {195,352},
["LEVEL4_TARGET_pos"] = {470,175},
["LEVEL5_STONE_pos"] = {
{486, 345},
{511, 336},
{525, 349},
{521, 365},
{503, 372},
{486, 365},
{500, 354}
},
["LEVEL6_TARGET_pos"] = {511,480},
["outside_entry_pos"] = {6142,7068}, --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ¾<D6B4> <20><><EFBFBD>ִ<EFBFBD> <20><>
["YAK_pos"] = {376, 397} -- <20><>ȯ <20><><EFBFBD><EFBFBD>
}
end
function is_flamed(idx) -- <20><><EFBFBD><EFBFBD><E6BCBA> <20>ִ<EFBFBD><D6B4><EFBFBD> Ȯ<><C8AE>
return idx >= 351 * 10000 and idx < (351 + 1) *10000
end
function make_dungeon() -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local setting = flame_dungeon.setting()
d.new_jump_party(351, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
-- d.spawn_mob_ac_dir(20385, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],0)
-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
d.regen_file("data/dungeon/flame_dungeon/npc.txt")
d.setf("level",0)
for i=1,6 do
d.set_unique("door"..i, d.spawn_mob_ac_dir(20387, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
end
for i=1,6 do
d.set_unique("idoor"..i, d.spawn_mob_ac_dir(20388, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
end
d.setf("clear_count",0)
d.setf("started",0)
d.setf("dungeon_enter",0) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>? // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 0 <20><><EFBFBD><EFBFBD> : 1 // ƨ<><C6A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѽð<D1BD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
end
function go_boss() -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
local setting = flame_dungeon.setting()
if pc.get_level() < 104 then --<2D><><EFBFBD><EFBFBD>Ȯ<EFBFBD><C8AE>
-- syschat(gameforge.flame_dungeon._580_notice)
say(gameforge.flame_dungeon._580_notice)
return
else
--if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ Ȯ<><C8AE>
-- -- say_title(gameforge.flame_dungeon._010_say)
say(gameforge.flame_dungeon._010_say)
local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
if warp == 1 then
d.setf("level",17)
d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_fild_boss.txt")
-- d.spawn_mob(20385,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
d.spawn_mob(6091,setting.boss_pos[1],setting.boss_pos[2])
end
-- else
-- -- syschat(gameforge.flame_dungeon._040_notice)
-- say(gameforge.flame_dungeon._040_notice)
-- return
-- end
end
end
function level_clear() -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>Ŭ<EFBFBD><C5AC><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>Ŭ<EFBFBD><C5AC><EFBFBD><EFBFBD>
d.setf("level",0)
d.clear_regen()
d.purge_area(750000,620000,817400,689400) -- <20><><EFBFBD><EFBFBD>ü -- d.purge() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
end
function clear_timer(inx) -- Ÿ<≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
clear_server_timer ("flame_dungeon_0m_left_timer", inx)
clear_server_timer ("flame_dungeon_1m_left_timer", inx)
clear_server_timer ("flame_dungeon_5m_left_timer", inx)
clear_server_timer ("flame_dungeon_10m_left_timer", inx)
clear_server_timer ("flame_dungeon_15m_left_timer", inx)
clear_server_timer ("flame_dungeon_30m_left_timer", inx)
clear_server_timer ("flame_dungeon_45m_left_timer", inx)
clear_server_timer ("killed_A_1", inx)
clear_server_timer ("killed_A_2", inx)
clear_server_timer ("flame_dungeon_ticket_remove", inx)
end
when login begin
local idx = pc.get_map_index()
local setting = flame_dungeon.setting()
if idx == 351 then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
elseif flame_dungeon.is_flamed(idx) then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
------------------------------------------------------------------------------------------------------------------------------------------------------
--<2D>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD>ƿ´<C6BF>. <20>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD> Ȱ<><C8B0>ȭ <20>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>.
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD>ƿ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E6BCBA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD><C9BC><EFBFBD> Ȱ<><C8B0>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
------------------------------------------------------------------------------------------------------------------------------------------------------
-- pc.set_warp_location(0, 0 , 0) --ƨ<><C6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>κ<EFBFBD>
pc.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ƨ<><C6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local ticketGroup = {71095, 1, 71130, 1}
if d.getf("dungeon_enter") == 0 then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴϸ<C6B4>
local canPass = false
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
canPass = true
break
end
end
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 30 * 60 then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѽð<D1BD><C3B0><EFBFBD> <20>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD>
notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
say(gameforge.flame_dungeon._060_say)
timer("flame_dungeon_warp_timer", 5)
elseif not canPass then
notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
say(gameforge.flame_dungeon._080_say)
timer("flame_dungeon_warp_timer", 5)
elseif pc.get_level() < 100 then
notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
say(gameforge.flame_dungeon._100_say)
timer("flame_dungeon_warp_timer", 5)
end
elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD> Ƽ<><C6BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
pc.remove_item(ticketGroup[i], ticketGroup[i+1])
break
end
end
pc.setf("flame_dungeon","ticket_delete",1)
end
else
pc.setf("flame_dungeon","ticket_delete",0)
end
end
when flame_dungeon_warp_timer.timer begin
local setting = flame_dungeon.setting()
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
when logout begin
local idx = pc.get_map_index()
if flame_dungeon.is_flamed(idx) then
if d.getf("dungeon_enter") == 1 then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>α׾ƿ<D7BE>
pc.setf("flame_dungeon","exit_time",get_global_time()) -- <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD> <20>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD>, <20>ٵ<EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> or <20>׳<EFBFBD> ƨ<><C6A8><EFBFBD>Ÿ<EFBFBD> <20>ȱ<EFBFBD><C8B1><EFBFBD>
end
end
end
when 20394.chat.gameforge.flame_dungeon._110_npcChat begin
local setting = flame_dungeon.setting()
if party.is_party() then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
local party_check = 0
if d.find(party.getf("dungeon_index")) then
party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
end
if d.find(party.getf("dungeon_index")) and party_check then
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5<><35> <20><>?
local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
if dungeon_level == 17 then -- <20><><EFBFBD><EFBFBD>
pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
else
pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
end
else -- 5<><35> <20>ʰ<EFBFBD><CAB0>Ͽ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD>
say_title(mob_name(20394))
say(gameforge.flame_dungeon._590_say)
end
else
local pids = {party.get_member_pids()}
local noTicketMembers = {}
local notEnoughLevelMembers = {}
local ticketCheck = true
local levelCheck = true
local ticketGroup = {71095, 1, 71130, 1}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
break
end
end
if not canPass then
table.insert(noTicketMembers, pc.get_name())
ticketCheck = false
end
if pc.level < 100 then
table.insert(notEnoughLevelMembers, pc.get_name())
levelCheck = false
end
q.end_other_pc_block()
end
if not ticketCheck then
say_title(mob_name(20394))
say(gameforge.flame_dungeon._610_say)
for i, name in next, noTicketMembers, nil do
say(color(1,1,0), " "..name)
end
if levelCheck then
return
else
wait()
end
end
if not levelCheck then
say_title(mob_name(20394))
say(gameforge.flame_dungeon._630_say)
for i, name in next, notEnoughLevelMembers, nil do
say(color(1,1,0), " "..name)
end
return
end
if party.is_leader() then
say(gameforge.flame_dungeon._120_say)
local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
if warp == 1 then
if party.is_map_member_flag_lt("exit_time", get_global_time() - 30 * 60 ) then
flame_dungeon.make_dungeon()
else
--say("test : <20><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ѽð<D1BD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>.")
say(gameforge.flame_dungeon._600_say)
end
end
party.setf("flame_dungeon_boss_kill_count", 0)
else
say(gameforge.flame_dungeon._150_say)
end
end
else
say(gameforge.flame_dungeon._160_say)
end
end
-- when 20394.chat."Test : <20><><EFBFBD>ҽ<EFBFBD>Ȯ<EFBFBD><C8AE>" with is_test_server() begin -- <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
-- local setting = flame_dungeon.setting()
-- pc.setf("flame_dungeon","fdRtest",1)
-- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, 351)
-- end
when 20394.chat."TEST : Init time limit init" with is_test_server() begin -- <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
say("Done")
end
-- when 20385.chat."Test : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" with is_test_server() begin -- <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
-- say("<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : "..d.count_monster())
-- say("level : "..d.getf("level"))
-- say("Dmap index : "..d.get_map_index())
-- say("Pmap index : "..pc.get_map_index())
-- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
-- say("global time : "..get_global_time())
-- if flame_dungeon.is_flamed(d.get_map_index()) then
-- say("in dungeon") -- is_flamed <20>Լ<EFBFBD> üũ
-- end
-- if d.is_unique_dead("stone1") then
-- say("stone1 is dead")
-- else
-- say("stone1 is not dead")
-- end
-- end
-- when 20385.chat."ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" begin -- <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
-- say("<22>ʱ<EFBFBD>ȭ <20>մϴ<D5B4>")
-- flame_dungeon.clear_timer(d.get_map_index())
-- flame_dungeon.make_dungeon()
-- end
when 20385.chat."Test : Boss Room" with is_test_server() begin -- <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
flame_dungeon.go_boss()
end
-- < <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<≯<EFBFBD>>
-- when 20385.chat."<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" begin -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ƨ<><C6A8><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> Ȱ<><C8B0>ȭ
-- local setting = flame_dungeon.setting()
-- say("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ðڽ<C3B0><DABD>ϱ<EFBFBD>?")
-- local warp = select("Ȯ<><C8AE>","<22><><EFBFBD><EFBFBD>")
-- if warp == 1 then
-- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
-- end
-- end
when flame_dungeon_45m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
end
end
when flame_dungeon_30m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
end
end
when flame_dungeon_15m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
end
end
when flame_dungeon_5m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
end
end
when flame_dungeon_1m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
end
end
when flame_dungeon_0m_left_timer.server_timer begin
local setting = flame_dungeon.setting()
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
server_timer("dungeon_end_timer",10,d.get_map_index())
end
end
-- <<<< <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>>>>> --
when 20385.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'<27><> x<><78>° <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> , '1x'<27><> x<><78>° <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local setting = flame_dungeon.setting()
if d.getf("started") == 0 then
say(gameforge.flame_dungeon._230_say)
say(gameforge.flame_dungeon._240_say)
wait()
d.setf("started",1)
-- <20><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD> ƨ<>ܹ<EFBFBD><DCB9>ȴµ<C8B4> <20>ڱ⸸ <20><><EFBFBD>Ƽ<EFBFBD> exit timer<65><72> <20><><EFBFBD>µǸ<C2B5> <20>ȵǴϱ<C7B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD> <20><>
server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>õ<EFBFBD> ó<><C3B3>
-- <20><><EFBFBD><EFBFBD> <20>Ŀ<EFBFBD> Ƽ<><C6BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ƨ<>ܳ<EFBFBD><DCB3><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> Ÿ<≯Ӹ<CCB8> <20>̿<EFBFBD><CCBF><EFBFBD> Ƽ<><C6BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
local pids = {party.get_member_pids()}
local ticketGroup = {71095, 1, 71130, 1}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
break
end
end
if not canPass then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
q.end_other_pc_block()
end
d.setqf2("flame_dungeon","ticket_delete",1)
d.setf("dungeon_enter",1)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
party.setf("dungeon_index", d.get_map_index())
d.setf("party_leader_pid", party.get_leader_pid())
end
if d.getf("level") < 7 then --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴϸ<C6B4>
if d.getf("clear_count") == 6 then -- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
d.setf("level",7)
else
local rand = number(1,6)--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>湮üũ<C3BC><C5A9> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E8BFAD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD> üũ<C3BC><C5A9>
local setlev = 0
d.setf("level",7) -- Ȥ<><C8A4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
for i=1,50 do
setlev = setlev + 1
if setlev > 6 then
setlev = 1
end
if not d.is_unique_dead("door"..setlev) then
rand = rand - 1
if rand == 0 then
d.setf("level",setlev)
d.setf("clear_count",d.getf("clear_count")+1)
break
end
end
end
end
end
if d.getf("level") == 1 then
say(gameforge.flame_dungeon._260_say)
notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
d.kill_unique("door1")
d.kill_unique("idoor1")
d.setf("level",11)
d.regen_file ("data/dungeon/flame_dungeon/".."fd_a.txt")
server_timer ("killed_A_1", 12, d.get_map_index())
elseif d.getf("level") == 11 then
say(gameforge.flame_dungeon._270_say)
say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
elseif d.getf("level") == 2 then
say(gameforge.flame_dungeon._290_say)
say(gameforge.flame_dungeon._300_say)
notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
notice_multiline(gameforge.flame_dungeon._300_say,d.notice)
d.spawn_mob(20386, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- <20><><EFBFBD>μ<EFBFBD> <20><>ȯ
d.kill_unique("door2")
d.kill_unique("idoor2")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_b.txt")
d.setf("level",12)
elseif d.getf("level") == 12 then
say(gameforge.flame_dungeon._310_say)
elseif d.getf("level") == 3 then
say(gameforge.flame_dungeon._260_say)
notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
d.kill_unique("door3")
d.kill_unique("idoor3")
d.setf("level",13)
d.regen_file ("data/dungeon/flame_dungeon/".."fd_c.txt")
server_timer ("killed_A_1", 12, d.get_map_index())
elseif d.getf("level") == 13 then
say(gameforge.flame_dungeon._270_say)
say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
elseif d.getf("level") == 4 then -- 474 178
say(gameforge.flame_dungeon._320_notice)
notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
d.setf("level",14)
d.kill_unique("door4")
d.kill_unique("idoor4")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_d.txt")
d.spawn_mob(6051,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- Ÿ<>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
elseif d.getf("level") == 14 then
say(gameforge.flame_dungeon._330_say)
say(gameforge.flame_dungeon._340_say)
elseif d.getf("level") == 5 then -- 510 355
say(gameforge.flame_dungeon._350_say)
say(gameforge.flame_dungeon._360_say)
notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
d.kill_unique("door5")
d.kill_unique("idoor5")
d.setf("level",15)
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
local vis = { 0,0,0,0,0,0,0}
for i=1,7 do
vis[i] = 0
end
for i = 1, 7 do -- <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD>ȯ
local ran = number(1,7)
local st = 0
for j = 1, 50 do
st = st + 1
if st > 7 then
st = 1
end
if vis[st] == 0 then
ran = ran - 1
if ran == 0 then
vis[st] = 1
d.set_unique("stone5_"..st, d.spawn_mob(20386, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
break
end
end
end
end
elseif d.getf("level") == 15 then
say(gameforge.flame_dungeon._370_say)
elseif d.getf("level") == 6 then -- 507 490
say(gameforge.flame_dungeon._380_say)
notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
d.setf("level",16)
d.kill_unique("door6")
d.kill_unique("idoor6")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_f.txt")
d.spawn_mob(8057, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- Ÿ<>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><>ȯ
elseif d.getf("level") == 16 then
say(gameforge.flame_dungeon._390_say)
say(gameforge.flame_dungeon._400_say)
elseif d.getf("level") == 7 then
-- setskin(NOWINDOW)
flame_dungeon.go_boss()
else
say(gameforge.flame_dungeon._410_say)
end
npc.unlock()
end
when dungeon_end_timer.server_timer begin -- <20><><EFBFBD><EFBFBD> Ÿ<≯<EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>)
local setting = flame_dungeon.setting()
if d.select(get_server_timer_arg()) then
flame_dungeon.clear_timer(d.get_map_index())
d.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
d.exit_all()
d.setf("party_leader_pid", 0)
end
end
when killed_A_1.server_timer begin -- Ÿ<≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 (level1,level3)
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 then -- 1<><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if d.getf("level") == 11 then
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
else
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
end
d.setf("level",0)
else
server_timer ("killed_A_1", 6, get_server_timer_arg())
end
end
end
when killed_A_2.server_timer begin -- Ÿ<≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2 (1<><31> 2 <20><><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><C6B0><20><><EFBFBD>ư<EFBFBD>)
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 then -- 1<><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if d.getf("level") == 11 then
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
else
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
end
d.setf("level",0)
else
server_timer ("killed_A_2", 6, get_server_timer_arg())
end
end
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2<><32><EFBFBD><EFBFBD> <20><><EFBFBD>μ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
local i = number(1, 100) -- 100<30><30><EFBFBD><EFBFBD> 1 Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if i == 1 then
game.drop_item (30329, 1)
end
end
when 20386.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == 30329 and d.getf("level") == 12 begin -- 2<><32><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD><EFBFBD>
local i = number(1, 5) -- 5<><35><EFBFBD><EFBFBD> 1 Ȯ<><C8AE><EFBFBD><EFBFBD> <20><>¥ <20><><EFBFBD><EFBFBD>
if i == 1 then
npc.purge()
item.remove()
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
else
item.remove()
say(gameforge.flame_dungeon._450_say)
end
end
when 6051.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5<><35><EFBFBD><EFBFBD> <20><><EFBFBD>μ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
local i = number(1, 30) -- 30<33><30><EFBFBD><EFBFBD> 1 Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if i == 1 then
game.drop_item (30330, 1)
end
end
when 20386.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == 30330 and d.getf("level") == 15 begin -- 5<><35><EFBFBD><EFBFBD> <20><>¥<EFBFBD><C2A5><EFBFBD><EFBFBD> <20>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD><EFBFBD>
local setting = flame_dungeon.setting()
if npc.get_vid() == d.get_unique_vid("stone5_1") then -- ù<><C3B9>° <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ڸ<EFBFBD><DAB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
npc.purge()
item.remove()
say(gameforge.flame_dungeon._470_say)
d.setf("stonekill",2) -- 2<><32> <20><><EFBFBD><EFBFBD> <20>׿<EFBFBD><D7BF><EFBFBD>
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_2") then
if d.getf("stonekill") == 2 then -- 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>˵<EFBFBD> 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>Կ<EFBFBD><D4BF><EFBFBD> <20><>
npc.purge()
item.remove()
say(gameforge.flame_dungeon._480_say)
d.setf("stonekill",3)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("2<><32>")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
if d.getf("stonekill") == 3 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._500_say)
d.setf("stonekill",4)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("3<><33>")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
if d.getf("stonekill") == 4 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._510_say)
d.setf("stonekill",5)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("4<><34>")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
if d.getf("stonekill") == 5 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._520_say)
d.setf("stonekill",6)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("5<><35>")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
if d.getf("stonekill") == 6 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._530_say)
d.setf("stonekill",7)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("6<><36>")
end
else
if d.getf("stonekill") == 7 then
npc.purge()
item.remove()
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("7<><37>")
end
end
end
when 8057.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD> <20><>
notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
end
when 6091.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- <20><><EFBFBD><EFBFBD> <20>׿<EFBFBD><D7BF><EFBFBD><EFBFBD><EFBFBD>
notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
server_timer("dungeon_end_timer", 60,d.get_map_index())
flame_dungeon.level_clear()
-- <20><>Ƽ<EFBFBD><C6BC> <20><>, <20>߸<EFBFBD>õ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ(104<30><34>, 105<30><35> <20><><EFBFBD><EFBFBD>Ʈ) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ Ŭ<><C5AC><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD>.
if party.is_party() then
party.setf("flame_dungeon_boss_kill_count", 1)
end
end
end
end

View File

@@ -1,541 +0,0 @@
quest main_quest_flame_lv100 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 100 begin
set_state (state1_1)
end
end
-- Ź<><C5B9><EFBFBD><EFBFBD> <20><>ü
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._010_sendLetter)
say(gameforge.main_quest_flame_lv100._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._030_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._040_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._060_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._070_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._080_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> óġ <20><> <20><><EFBFBD><EFBFBD>
pc.setqf("kill_count_1", 0)
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv100._090_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv100.kill_count()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._100_sayTitle)
say(gameforge.main_quest_flame_lv100._110_say)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward, 300 - pc.getqf("kill_count_1")))
end
when 20377.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._120_say)
end
when 2202.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2203.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2204.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2205.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
-- <20><> <20>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> vnum<75><6D> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Ŭ<><C5AC><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20>Ͽ<EFBFBD><CFBF><EFBFBD>.
when 7020.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7021.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7022.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7023.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
function kill_count()
local total_remain = 0
local remain1 = 300 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv100._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._010_sendLetter)
say(gameforge.main_quest_flame_lv100._140_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._150_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 38143000))
pc.give_exp2(38143000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 149000))
pc.change_money(149000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30051),1))
pc.give_item2(30051, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50814),10))
pc.give_item2(50814, 10)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- Ź<><C5B9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>1-1
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._160_sendLetter)
say(gameforge.main_quest_flame_lv100._170_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20001.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._180_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._190_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._200_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._210_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._220_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._230_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin -- <20><><EFBFBD><20><><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD> <20>κ<EFBFBD>. <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ľ<EFBFBD><C4BE><EFBFBD> <20>ȵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> state <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>Ϸ<EFBFBD><CFB7><EFBFBD> <20><> <20>ִ<EFBFBD>.
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv100._240_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
q.set_counter_name(gameforge.main_quest_flame_lv100._250_say)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._260_sayTitle)
say(gameforge.main_quest_flame_lv100._270_say)
say(gameforge.main_quest_flame_lv100._250_say)
local remain1 = 10 - pc.count_item(90010)
local remain2 = 50 - pc.count_item(30010)
local remain3 = 10 - pc.count_item(30025)
local remain4 = 200 - pc.count_item(51001)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
if remain3 < 0 then
remain3 = 0
end
if remain4 < 0 then
remain4 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(90010) ,remain1,item_name(30010) ,remain2))
say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(30025) , remain3,item_name(51001) , remain4))
say()
q.set_counter_value(remain1 + remain2 + remain3 + remain4)
local check = remain1 + remain2 + remain3 + remain4
if check <= 0 then
set_state (state2_3)
end
end
when 20001.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
if pc.count_item(90010) >= 10 and pc.count_item(30010) >= 50
and pc.count_item(30025) >= 10 and pc.count_item(51001) >= 200 then
pc.remove_item ( 90010,10)
pc.remove_item ( 30010,50)
pc.remove_item ( 30025,10)
pc.remove_item ( 51001,200)
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._280_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 150000))
pc.change_money(150000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2))
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1))
pc.give_item2_select(70043)
item.set_socket(2, 60)
set_state (state3_1)
else
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._290_say)
end
end
when leave begin
--q.done()
end
end
state state2_3 begin -- <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ҵ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Ŀ<EFBFBD> <20><><EFBFBD><20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><E7BFA1> <20><><EFBFBD><EFBFBD> <20>ɸ<EFBFBD> state2_2<5F><32> <20>ٽ<EFBFBD> <20>Ѿ<D1BE><EEB0A1> <20>ȴ<EFBFBD>.
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv100._300_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._160_sendLetter)
say(gameforge.main_quest_flame_lv100._310_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20001.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(90010) >= 10 and pc.count_item(30010) >= 50
and pc.count_item(30025) >= 10 and pc.count_item(51001) >= 200 then
pc.remove_item ( 90010,10)
pc.remove_item ( 30010,50)
pc.remove_item ( 30025,10)
pc.remove_item ( 51001,200)
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._280_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 150000))
pc.change_money(150000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2))
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1))
pc.give_item2_select(70043)
item.set_socket(2, 60)
say()
set_state (state3_1)
else
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._290_say)
set_state (state2_2)
end
end
when leave begin
--q.done()
end
end
-- Ź<><C5B9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>1-2
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._320_sendLetter)
say(gameforge.main_quest_flame_lv100._170_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20001.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._330_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._340_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._350_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv100._240_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20016)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20016))
end
q.set_counter_name(gameforge.main_quest_flame_lv100._250_say)
q.set_counter_value(1)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._360_sayTitle)
say(gameforge.main_quest_flame_lv100._370_say)
say(gameforge.main_quest_flame_lv100._250_say)
say(gameforge.main_quest_flame_lv100._380_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20016.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20016))
say(gameforge.main_quest_flame_lv100._390_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._400_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20016))
say(gameforge.main_quest_flame_lv100._410_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._420_say)
pc.give_item2(31077, 1)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_3)
end
when 20001.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._430_say)
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv100._440_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._320_sendLetter)
say(gameforge.main_quest_flame_lv100._310_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20001.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
pc.remove_item(31077, pc.count_item(31077))
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._450_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 35843000))
pc.give_exp2(35843000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 152000))
pc.change_money(152000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10))
pc.give_item2(50708, 10)
say()
say_reward(string.format(gameforge.main_quest_flame_lv99._430_say, 101))
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv101", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@@ -1,521 +0,0 @@
quest main_quest_flame_lv101 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 101 begin
set_state (state1_1)
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._010_sendLetter)
say(gameforge.main_quest_flame_lv101._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._030_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._040_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._050_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv101._070_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._080_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin -- <20>ܼ<EFBFBD> X, <20><><EFBFBD><EFBFBD> X
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv101._090_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
q.set_counter_value(2)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._100_sayTitle)
say(gameforge.main_quest_flame_lv101._110_say)
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31074), 1))
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31079), 1))
say()
say_reward(gameforge.main_quest_flame_lv101._120_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._130_say)
end
when 20393.click begin
say(gameforge.main_quest_flame_lv101._140_say)
set_state (state1_3) -- <20>ܼ<EFBFBD> X, <20><><EFBFBD><EFBFBD> O
end
when kill with pc.get_map_index() >= 351 * 10000 and pc.get_map_index() < (351 + 1) *10000 begin
if number(1,100) == 1 then
pc.give_item2(31074, 1)
set_state (state1_4) -- <20>ܼ<EFBFBD> O, <20><><EFBFBD><EFBFBD> X
end
end
when leave begin
--q.done()
end
end
state state1_3 begin -- <20>ܼ<EFBFBD> X, <20><><EFBFBD><EFBFBD> O
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv101._150_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
q.set_counter_value(1)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._100_sayTitle)
say(gameforge.main_quest_flame_lv101._110_say)
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31074), 1))
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31079), 0))
say()
say_reward(gameforge.main_quest_flame_lv101._120_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._160_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._180_say)
end
when kill with pc.get_map_index() >= 351 * 10000 and pc.get_map_index() < (351 + 1) *10000 begin
if number(1,100) == 1 then
pc.give_item2(31074, 1)
set_state ("state1_5") -- <20>ܼ<EFBFBD> O, <20><><EFBFBD><EFBFBD> O
end
end
when leave begin
--q.done()
end
end
state state1_4 begin -- <20>ܼ<EFBFBD> O, <20><><EFBFBD><EFBFBD> X
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv101._190_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
q.set_counter_value(1)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._100_sayTitle)
say(gameforge.main_quest_flame_lv101._110_say)
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31074), 0))
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31079), 1))
say()
say_reward(gameforge.main_quest_flame_lv101._120_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._200_say)
end
when 20393.click begin
say(gameforge.main_quest_flame_lv101._140_say)
set_state (state1_5)
end
when leave begin
--q.done()
end
end
state state1_5 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv101._210_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._010_sendLetter)
say(gameforge.main_quest_flame_lv101._220_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
target.delete("__TARGET__")
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.remove_item(31074, pc.count_item(31074))
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._230_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv101._250_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(gameforge.main_quest_flame_lv101._260_sayTitle)
say(gameforge.main_quest_flame_lv101._270_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._280_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 37003000))
pc.give_exp2(37003000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 153000))
pc.change_money(153000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30047),2))
pc.give_item2(30047, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(27992),2)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pc.give_item2(27992, 1)
pc.give_item2(27992, 1)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ص<EFBFBD>
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv101._290_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._290_sendLetter)
say(gameforge.main_quest_flame_lv101._300_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv101._290_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._310_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._330_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv101._340_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._350_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv101._360_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._290_sendLetter)
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
main_quest_flame_lv101.item_count()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._100_sayTitle)
say(gameforge.main_quest_flame_lv101._520_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31080), 1 - pc.count_item(31080)))
end
when 20380.chat.gameforge.main_quest_flame_lv101._290_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._370_say)
end
when 2206.kill begin
if number(1,100) == 1 then
pc.give_item2(31080, 1)
main_quest_flame_lv101.item_count()
end
end
function item_count()
if pc.count_item(31080) >= 1 then
set_state ("state2_3")
end
q.set_counter_value(1 - pc.count_item(31080))
end
when leave begin
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv101._380_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._290_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._290_sendLetter)
say(gameforge.main_quest_flame_lv101._390_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv101._290_sendLetter begin
target.delete("__TARGET__")
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.remove_item(31080, pc.count_item(31080))
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._400_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2( 48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 154000))
pc.change_money(154000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72024),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȭ
pc.give_item2_select(72024)
item.set_socket(2, 180)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71094),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.give_item2(71094, 1)
say()
set_state (state2_4)
end
when leave begin
--q.done()
end
end
state state2_4 begin
when enter begin
--<2D>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.setqf("limit_time", get_time() + 60*60*24)
end
when login begin
--<2D>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
local remain_time = pc.getqf("limit_time") - get_time()
timer("time_over", remain_time)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._290_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._290_sendLetter)
say(gameforge.main_quest_flame_lv101._390_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
local remain_time = pc.getqf("limit_time") - get_time()
local left_hour = math.mod(remain_time / (60 * 60), 24);
local left_minute = math.mod(remain_time / 60, 60);
say(string.format(gameforge.main_quest_flame_lv101._410_say, left_hour, left_minute))
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv101._290_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._420_say)
end
when time_over.timer begin
set_state ("state3_1")
end
when leave begin
pc.setqf("limit_time", 0);
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv101._430_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._430_sendLetter)
say(gameforge.main_quest_flame_lv101._300_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv101._430_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._440_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._450_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv101._340_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv101._470_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._430_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._480_sayTitle)
say(gameforge.main_quest_flame_lv101._490_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv101._430_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._500_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._510_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(gameforge.main_quest_lv27._120_sayTitle)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2( 48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 156000))
pc.change_money( 156000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72016),1)) -- <20><>3<EFBFBD><33> <20><>
pc.give_item2_select(72016)
item.set_socket(2, 60)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 102))
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv102", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@@ -1,623 +0,0 @@
quest main_quest_flame_lv102 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 102 begin
set_state (state1_1)
end
end
-- <20><><EFBFBD><EFBFBD>
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv102._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._010_sendLetter)
say(gameforge.main_quest_flame_lv102._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._030_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._040_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._050_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._060_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD> <20>κ<EFBFBD>.
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv102._070_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
main_quest_flame_lv102.kill_count()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._080_sayTitle)
say(gameforge.main_quest_flame_lv102._090_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȳ<EFBFBD><C8B3><EFBFBD>
local remain1 = 30 - pc.getqf("mob1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 30 - pc.getqf("mob2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 30 - pc.getqf("mob3")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 30 - pc.getqf("mob4")
if remain4 < 0 then
remain4 = 0
end
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_flame_lv102._100_say,mob_name(6005), remain1,mob_name(6006), remain2))
say(string.format(gameforge.main_quest_flame_lv102._110_say,mob_name(6007), remain3,mob_name(6008), remain4))
end
when 20377.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._120_say)
end
when 6005.kill begin
if number(1,1) == 1 then
local kill_count = pc.getqf("mob1")
pc.setqf("mob1", kill_count + 1)
main_quest_flame_lv102.kill_count()
end
end
when 6006.kill begin
if number(1,1) == 1 then
local kill_count = pc.getqf("mob2")
pc.setqf("mob2", kill_count + 1)
main_quest_flame_lv102.kill_count()
end
end
when 6007.kill begin
if number(1,1) == 1 then
local kill_count = pc.getqf("mob3")
pc.setqf("mob3", kill_count + 1)
main_quest_flame_lv102.kill_count()
end
end
when 6008.kill begin
if number(1,1) == 1 then
local kill_count = pc.getqf("mob4")
pc.setqf("mob4", kill_count + 1)
main_quest_flame_lv102.kill_count()
end
end
function kill_count()
local total_remain = 0
local remain1 = 30 - pc.getqf("mob1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 30 - pc.getqf("mob2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 30 - pc.getqf("mob3")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 30 - pc.getqf("mob4")
if remain4 < 0 then
remain4 = 0
end
total_remain = remain1 + remain2 + remain3 + remain4
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv102._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._010_sendLetter)
say(gameforge.main_quest_flame_lv102._140_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._150_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._170_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 49584000))
pc.give_exp2( 49584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 157000))
pc.change_money(157000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72723),1)) -- ȭ<><C8AD><EFBFBD><EFBFBD> <20>ູ(<28><>)
pc.give_item2(72723, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70050),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ
pc.give_item2(70050, 1)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD> <20>߸<EFBFBD>õ?!
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv102._180_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._180_sendLetter)
say(gameforge.main_quest_flame_lv102._190_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._200_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._220_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._250_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._050_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._260_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv102._270_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._180_sendLetter)
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._280_sayTitle)
say(gameforge.main_quest_flame_lv102._290_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31081), 10 - pc.count_item(31081)))
say_reward(gameforge.main_quest_flame_lv102._300_sayReward)
end
when 20380.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._310_say)
end
when kill with pc.get_map_index() >= 351 * 10000 and pc.get_map_index() < (351 + 1) *10000 begin
if number(1,50) == 1 then
pc.give_item2(31081, 1)
main_quest_flame_lv102.item_count()
end
end
function item_count()
if pc.count_item(31081) >= 10 then
set_state ("state2_3")
end
q.set_counter_value(10 - pc.count_item(31081))
end
when leave begin
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv102._320_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._180_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._180_sendLetter)
say(gameforge.main_quest_flame_lv102._140_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin
target.delete("__TARGET__")
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.remove_item(31081, pc.count_item(31081))
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._330_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(gameforge.main_quest_lv27._120_sayTitle)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 52484000))
pc.give_exp2( 52484000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 159000))
pc.change_money( 159000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72301),5)) -- <20><EFBFBD><E0BAB9> <20><>
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_1)
end
when leave begin
--q.done()
end
end
-- Ź<><C5B9><EFBFBD><EFBFBD> <20><>ȭ
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv102._350_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._350_sendLetter)
say(gameforge.main_quest_flame_lv102._190_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._360_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._380_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._390_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._050_say)
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv102._410_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._350_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._420_sayTitle)
say(gameforge.main_quest_flame_lv102._430_say)
say(gameforge.main_quest_lv97._670_counterName)
local remain1 = 50 - pc.count_item(50819)
local remain2 = 100 - pc.count_item(51001)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(50819) ,remain1,item_name(51001) ,remain2))
q.set_counter_value(remain1 + remain2)
if remain1 + remain2 == 0 then
set_state ("state3_3")
end
end
when 20017.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin
if pc.count_item(50819) >= 50 and pc.count_item(51001) >= 100 then
pc.remove_item ( 50819,50)
pc.remove_item ( 51001,100)
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._440_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2( 48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 160000))
pc.change_money( 160000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10)) -- <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
pc.give_item2(50708, 10)
say()
set_state (state4_1)
else
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._450_say)
end
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv102._460_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._350_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20017)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20017))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._350_sendLetter)
say(gameforge.main_quest_flame_lv102._470_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20017.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin
if pc.count_item(50819) >= 50 and pc.count_item(51001) >= 100 then
pc.remove_item ( 50819,50)
pc.remove_item ( 51001,100)
target.delete("__TARGET__")
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._440_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2( 48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 160000))
pc.change_money( 160000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10)) -- <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
pc.give_item2(50708, 10)
say()
set_state (state4_1)
else
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._450_say)
set_state (state3_2)
end
end
when leave begin
--q.done()
end
end
-- <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD>
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv102._480_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20017)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20017))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._480_sendLetter)
say(gameforge.main_quest_flame_lv102._490_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20017.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._500_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._510_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._520_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._050_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._530_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state4_2)
end
when leave begin
--q.done()
end
end
state state4_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv102._540_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._480_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._480_sendLetter)
say(gameforge.main_quest_flame_lv102._140_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20017.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._550_say)
end
when 20377.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._560_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._570_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._580_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 42584000))
pc.give_exp2(42584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 161000))
pc.change_money( 161000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(76011),1)) -- <20><><EFBFBD><EFBFBD>
pc.give_item2_select(76011)
item.set_socket(2, 60)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50707),5)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pc.give_item2(50707, 5)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 103))
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv103", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@@ -1,694 +0,0 @@
quest main_quest_flame_lv103 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 103 begin
set_state (state1_1)
end
end
-- <20><><EFBFBD><EFBFBD><E6BCBA> <20><><EFBFBD><EFBFBD>
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._010_sendLetter)
say(gameforge.main_quest_flame_lv103._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._030_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._040_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._060_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv103._070_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20393)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20393))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._080_sayTitle)
say(gameforge.main_quest_flame_lv103._090_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._100_say)
end
when 20393.click begin
target.delete("__TARGET__")
say_title(mob_name(20393))
say(gameforge.main_quest_flame_lv103._110_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state1_3)
end
when leave begin
--q.done()
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._010_sendLetter)
say(gameforge.main_quest_flame_lv103._120_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._130_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._150_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._170_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 42554000))
pc.give_exp2( 42554000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 163000))
pc.change_money( 163000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._180_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._180_sendLetter)
say(gameforge.main_quest_flame_lv103._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._190_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._200_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._210_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> óġ <20><> <20><><EFBFBD><EFBFBD>
pc.setqf("kill_count_1", 0)
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv103._230_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._180_sendLetter)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv103.kill_count_state2_2()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._240_sayTitle)
say(gameforge.main_quest_flame_lv103._250_say)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward,"<22><><EFBFBD><20><><EFBFBD><EFBFBD>", 1000 - pc.getqf("kill_count_1")))
say_reward(gameforge.main_quest_flame_lv103._260_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv103._180_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._270_say)
end
when kill with pc.get_map_index() >= 351 * 10000 and pc.get_map_index() < (351 + 1) *10000 begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv103.kill_count_state2_2()
end
function kill_count_state2_2()
local total_remain = 0
local remain1 = 1000 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state2_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv103._280_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._180_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._180_sendLetter)
say(gameforge.main_quest_flame_lv103._120_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._290_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 53784000))
pc.give_exp2(53784000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 164000))
pc.change_money(164000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70024),1)) -- <20><EFBFBD><E0BAB9> <20><><EFBFBD><EFBFBD>
pc.give_item2(70024, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30039),3)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pc.give_item2(30039, 3)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_1)
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD><E6BCBA> <20><>ĩ<EFBFBD>Ÿ<EFBFBD>
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._300_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._300_sendLetter)
say(gameforge.main_quest_flame_lv103._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._300_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._310_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> óġ <20><> <20><><EFBFBD><EFBFBD>
pc.setqf("kill_count_1", 0)
pc.setqf("kill_count_2", 0)
pc.setqf("kill_count_3", 0)
pc.setqf("kill_count_4", 0)
pc.setqf("kill_count_5", 0)
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv103._330_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._300_sendLetter)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv103.kill_count_state3_2()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._340_sayTitle)
say(gameforge.main_quest_flame_lv103._350_say)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv98._680_counterName)
local total_remain = 0
local remain1 = 50 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
local remain2 = 50 - pc.getqf("kill_count_2")
if remain2 < 0 then
remain2 = 0
end
total_remain = total_remain + remain2
local remain3 = 50 - pc.getqf("kill_count_3")
if remain3 < 0 then
remain3 = 0
end
total_remain = total_remain + remain3
local remain4 = 50 - pc.getqf("kill_count_4")
if remain4 < 0 then
remain4 = 0
end
total_remain = total_remain + remain4
local remain5 = 50 - pc.getqf("kill_count_5")
if remain5 < 0 then
remain5 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6005), remain1,mob_name(6006), remain2))
say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6007), remain3,mob_name(6008), remain4))
say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6009), remain5))
say_reward(gameforge.main_quest_flame_lv103._260_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv103._300_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._360_say)
end
when 6005.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
when 6006.kill begin
local kill_count = pc.getqf("kill_count_2")
pc.setqf("kill_count_2", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
when 6007.kill begin
local kill_count = pc.getqf("kill_count_3")
pc.setqf("kill_count_3", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
when 6008.kill begin
local kill_count = pc.getqf("kill_count_4")
pc.setqf("kill_count_4", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
when 6009.kill begin
local kill_count = pc.getqf("kill_count_5")
pc.setqf("kill_count_5", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
function kill_count_state3_2()
local total_remain = 0
local remain1 = 50 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
local remain2 = 50 - pc.getqf("kill_count_2")
if remain2 < 0 then
remain2 = 0
end
total_remain = total_remain + remain2
local remain3 = 50 - pc.getqf("kill_count_3")
if remain3 < 0 then
remain3 = 0
end
total_remain = total_remain + remain3
local remain4 = 50 - pc.getqf("kill_count_4")
if remain4 < 0 then
remain4 = 0
end
total_remain = total_remain + remain4
local remain5 = 50 - pc.getqf("kill_count_5")
if remain5 < 0 then
remain5 = 0
end
total_remain = total_remain + remain5
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state3_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
pc.setqf("kill_count_2", 0)
pc.setqf("kill_count_3", 0)
pc.setqf("kill_count_4", 0)
pc.setqf("kill_count_5", 0)
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv103._370_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._300_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._300_sendLetter)
say(gameforge.main_quest_flame_lv103._120_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._300_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._380_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 54491000))
pc.give_exp2(54491000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 166000))
pc.change_money(166000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72001),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.give_item2_select(72001)
item.set_socket(2, 60)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state4_1)
end
when leave begin
--q.done()
end
end
-- <20>߸<EFBFBD>õ <20><><EFBFBD><EFBFBD>1-1
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._390_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._390_sendLetter)
say(gameforge.main_quest_flame_lv103._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._390_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._400_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state4_2)
end
when leave begin
--q.done()
end
end
state state4_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv103._410_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._390_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._080_sayTitle)
say(gameforge.main_quest_flame_lv103._420_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv103._390_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv103._430_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv103._440_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv103._460_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state4_3)
end
when leave begin
--q.done()
end
end
state state4_3 begin
when enter begin
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> óġ <20><> <20><><EFBFBD><EFBFBD>
pc.setqf("kill_count_1", 0)
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv103._480_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._390_sendLetter)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv103.kill_count_state4_3()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._490_sayTitle)
say(gameforge.main_quest_flame_lv103._500_say)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_flame_lv103._510_say)
say(string.format(gameforge.main_quest_lv90._1190_say,mob_name(8057), 1 - pc.getqf("kill_count_1")))
say_reward(gameforge.main_quest_flame_lv103._260_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv103._390_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._520_say)
end
when 8057.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv103.kill_count_state4_3()
end
function kill_count_state4_3()
local total_remain = 0
local remain1 = 1 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state4_4")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
--q.done()
end
end
state state4_4 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv103._530_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._390_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._390_sendLetter)
say(gameforge.main_quest_flame_lv103._120_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._390_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._540_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 49586000))
pc.give_exp2(49586000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 167000))
pc.change_money(167000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(31078),1)) -- <20><>ȭ<EFBFBD><C8AD> -- <20><><EFBFBD><EFBFBD>
pc.give_item2(31078, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǰ
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
pc.give_item2_select(70043)
item.set_socket(2, 60)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 104))
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv104", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@@ -1,738 +0,0 @@
quest main_quest_flame_lv104 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 104 begin
set_state (state1_1)
end
end
-- <20>߸<EFBFBD>õ <20><><EFBFBD><EFBFBD> 1-2
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv104._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._010_sendLetter)
say(gameforge.main_quest_flame_lv104._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv104._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._030_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._040_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> óġ <20><> <20><><EFBFBD><EFBFBD>
pc.setqf("kill_count_1", 0)
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv104._060_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._010_sendLetter)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
-- <20><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߸<EFBFBD>õ<EFBFBD><C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Ŭ<><C5AC><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20>ϴ<EFBFBD> <20>ڵ<EFBFBD>.
if party.is_party() then
local map_index = pc.get_map_index()
-- <20><><EFBFBD><EFBFBD><E6BCBA> <20><><EFBFBD><EFBFBD><EFBFBD>ߴٴ<DFB4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
if map_index >= 351 * 10000 and map_index < (351 + 1) *10000 then
pc.setqf("in_dungeon", 1)
else -- <20><><EFBFBD><EFBFBD><E6BCBA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD>ش<EFBFBD>.
if pc.getqf("in_dungeon") == 1 then
if party.getf("flame_dungeon_boss_kill_count") == 1 then
set_state (state1_3)
end
pc.setqf("in_dungeon", 0)
end
end
end
main_quest_flame_lv104.kill_count()
end
when logout begin
if party.is_party() then
if party.getf("flame_dungeon_boss_kill_count") == 0 then
pc.setqf("in_dungeon", 0)
end
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._070_sayTitle)
say(gameforge.main_quest_flame_lv104._080_say)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6091), 1 - pc.getqf("kill_count_1")))
say_reward(gameforge.main_quest_flame_lv104._090_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv104._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._100_say)
end
when 31078.use begin -- <20><>ȭ<EFBFBD><C8AD>
affect.add(apply.MAX_HP, 1000, 60 * 60)
affect.add(apply.DEF_GRADE_BONUS, 25, 60 * 60)
affect.add(apply.MELEE_MAGIC_ATTBONUS_PER, 10, 60 * 60)
pc.remove_item(31078,1)
end
when 6091.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv104.kill_count()
end
function kill_count()
local total_remain = 0
local remain1 = 1 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
pc.setqf("in_dungeon", 0)
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv104._120_notice,notice)
say_title(mob_name(6091))
say(gameforge.main_quest_flame_lv104._110_say)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._010_sendLetter)
say(gameforge.main_quest_flame_lv104._130_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv104._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._140_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._150_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._160_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 64491000))
pc.give_exp2(64491000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 168000))
pc.change_money(168000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71026),1)) -- <20><>ö
pc.give_item2(71026, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71025),2)) -- <20>߰<EFBFBD><DFB0><EFBFBD>
pc.give_item2(71025, 1)
pc.give_item2(71025, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70102),5)) -- <20><><EFBFBD><EFBFBD>
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50706),20)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pc.give_item2(50706, 20)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>1-1
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv104._170_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._170_sendLetter)
say(gameforge.main_quest_flame_lv104._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv104._170_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._180_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._190_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv104._200_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._170_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._210_sayTitle)
say(gameforge.main_quest_flame_lv104._220_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv104._170_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._230_say)
end
when 20380.chat.gameforge.main_quest_flame_lv104._170_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._240_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._250_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._260_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._270_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_3)
end
when leave begin
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv104._280_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._170_sendLetter)
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
main_quest_flame_lv104.item_count_state2_3()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._280_notice)
say(gameforge.main_quest_flame_lv104._290_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv97._670_counterName)
local item_count = pc.getqf("item_count_1")
local remain = 5 - item_count
if remain < 0 then
remain = 0
end
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31082), remain))
say_reward(gameforge.main_quest_flame_lv104._090_sayReward)
main_quest_flame_lv104.item_count_state2_3()
end
when 20380.chat.gameforge.main_quest_flame_lv104._170_sendLetter with pc.count_item(31082) > 0 begin
pc.remove_item(31082, 1)
-- <20><>ǰ <20><><EFBFBD><EFBFBD>
if number(1, 100) <= 90 then
local item_count = pc.getqf("item_count_1")
item_count = item_count + 1
pc.setqf("item_count_1", item_count)
if item_count < 5 then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
say_title(mob_name(20380))
say(string.format(gameforge.main_quest_flame_lv104._300_say, 5 - item_count))
else -- <20><>ǰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ä<><C3A4>.
pc.remove_item(31082, pc.count_item(31082))
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._310_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 57583000))
pc.give_exp2(57583000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 170000))
pc.change_money( 170000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72723),1)) -- ȭ<><C8AD><EFBFBD><EFBFBD> <20>ູ(<28><>)
pc.give_item2(72723, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70050),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ
pc.give_item2(70050, 1)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_1)
end
else -- <20><>ǰ <20><><EFBFBD><EFBFBD>
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._320_say)
end
main_quest_flame_lv104.item_count_state2_3()
end
when 6005.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
when 6006.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
when 6007.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
when 6008.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
when 6009.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
function item_count_state2_3()
local item_count = pc.getqf("item_count_1")
local remain = 5 - item_count
if remain <= 0 then
remain = 0
end
q.set_counter_value(remain)
end
when leave begin
pc.setqf("item_count_1", 0)
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>1-2
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv104._330_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._330_sendLetter)
say(gameforge.main_quest_flame_lv104._340_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv104._330_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._350_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._360_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv104._370_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._330_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._280_notice)
say(gameforge.main_quest_flame_lv104._380_say)
say(gameforge.main_quest_lv97._670_counterName)
local remain1 = 100 - pc.count_item(50814)
if remain1 < 0 then
remain1 = 0
end
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(50814) ,remain1))
say()
q.set_counter_value(remain1)
if remain1 == 0 then
set_state (state3_3)
end
end
when 20380.chat.gameforge.main_quest_flame_lv104._330_sendLetter begin
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if pc.count_item(50814) >= 100 then
pc.remove_item(50814, 100)
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._390_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._400_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._410_say)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 46581000))
pc.give_exp2(46581000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 171000))
pc.change_money( 171000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30045),2)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ħ
pc.give_item2(30045, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50817),10)) -- <20><>Ȱ<EFBFBD>ɾ<EFBFBD>
pc.give_item2(50817, 10)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state4_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._420_say)
end
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv104._430_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._330_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._280_notice)
say(gameforge.main_quest_flame_lv104._440_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv104._330_sendLetter begin
target.delete("__TARGET__")
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if pc.count_item(50814) >= 100 then
pc.remove_item(50814, 100)
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._390_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._400_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._410_say)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 46581000))
pc.give_exp2(46581000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 171000))
pc.change_money( 171000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30045),2)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ħ
pc.give_item2(30045, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50817),10)) -- <20><>Ȱ<EFBFBD>ɾ<EFBFBD>
pc.give_item2(50817, 10)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state4_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._420_say)
set_state (state3_2)
end
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>1-3
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv104._450_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._450_sendLetter)
say(gameforge.main_quest_flame_lv104._340_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv104._450_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._460_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._470_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state4_2)
end
when leave begin
--q.done()
end
end
state state4_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv104._480_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._450_sendLetter)
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
main_quest_flame_lv104.item_count_state4_2()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._450_sendLetter)
say(gameforge.main_quest_flame_lv104._490_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv97._670_counterName)
local remain = 5 - pc.count_item(31024)
if remain < 0 then
remain = 0
end
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31024), remain))
end
when 20380.chat.gameforge.main_quest_flame_lv104._450_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._500_say)
end
when 3291.kill begin
if number(1,1) == 1 then
pc.give_item2(31024, 1)
main_quest_flame_lv104.item_count_state4_2()
end
end
function item_count_state4_2()
if pc.count_item(31024) >= 5 then
set_state ("state4_3")
end
q.set_counter_value(5 - pc.count_item(31024))
end
when leave begin
--q.done()
end
end
state state4_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv104._520_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._450_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._450_sendLetter)
say(gameforge.main_quest_flame_lv104._440_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv104._450_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31024) < 5 then
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._500_say)
set_state (state4_2)
else
pc.remove_item(31024, 5)
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._510_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 45580000))
pc.give_exp2( 45580000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 173000))
pc.change_money(173000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǰ
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
pc.give_item2_select(70043)
item.set_socket(2, 60)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(31083),3)) -- <20><><EFBFBD><EFBFBD> <20>ָӴ<D6B8>
pc.give_item2(31083, 3)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 105))
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_quest_state ("main_quest_flame_lv105", "state0")
set_state (__COMPLETE__)
end
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@@ -1,541 +0,0 @@
quest main_quest_flame_lv105 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 105 begin
set_state (state1_1)
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv105._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._010_sendLetter)
say(gameforge.main_quest_flame_lv105._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin
target.delete("__TARGET__")
pc.remove_item(31083, 3)
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._030_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._040_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._050_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._060_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._070_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> óġ <20><> <20><><EFBFBD><EFBFBD>
pc.setqf("kill_count_1", 0)
pc.setqf("kill_count_2", 0)
pc.setqf("kill_count_3", 0)
pc.setqf("kill_count_4", 0)
pc.setqf("kill_count_5", 0)
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv105._080_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._010_sendLetter)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv105.kill_count_state1_2()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._090_sayTitle)
say(gameforge.main_quest_flame_lv105._100_say)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv98._680_counterName)
local remain1 = 10 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 10 - pc.getqf("kill_count_2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 10 - pc.getqf("kill_count_3")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 10 - pc.getqf("kill_count_4")
if remain4 < 0 then
remain4 = 0
end
local remain5 = 10 - pc.getqf("kill_count_5")
if remain5 < 0 then
remain5 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6005), remain1,mob_name(6006), remain2))
say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6007), remain3,mob_name(6008), remain4))
say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6009), remain5))
say_reward(gameforge.main_quest_flame_lv105._110_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._120_say)
end
when 6005.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
when 6006.kill begin
local kill_count = pc.getqf("kill_count_2")
pc.setqf("kill_count_2", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
when 6007.kill begin
local kill_count = pc.getqf("kill_count_3")
pc.setqf("kill_count_3", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
when 6008.kill begin
local kill_count = pc.getqf("kill_count_4")
pc.setqf("kill_count_4", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
when 6009.kill begin
local kill_count = pc.getqf("kill_count_5")
pc.setqf("kill_count_5", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
function kill_count_state1_2()
local total_remain = 0
local remain1 = 10 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
local remain2 = 10 - pc.getqf("kill_count_2")
if remain2 < 0 then
remain2 = 0
end
total_remain = total_remain + remain2
local remain3 = 10 - pc.getqf("kill_count_3")
if remain3 < 0 then
remain3 = 0
end
total_remain = total_remain + remain3
local remain4 = 10 - pc.getqf("kill_count_4")
if remain4 < 0 then
remain4 = 0
end
total_remain = total_remain + remain4
local remain5 = 10 - pc.getqf("kill_count_5")
if remain5 < 0 then
remain5 = 0
end
total_remain = total_remain + remain5
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
pc.setqf("kill_count_2", 0)
pc.setqf("kill_count_3", 0)
pc.setqf("kill_count_4", 0)
pc.setqf("kill_count_5", 0)
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv105._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._010_sendLetter)
say(gameforge.main_quest_flame_lv105._140_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._150_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 174000))
pc.change_money(174000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30033),3)) -- <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD>
pc.give_item2(30033, 3)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD>
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv105._160_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._160_sendLetter)
say(gameforge.main_quest_flame_lv105._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._170_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._180_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._070_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> óġ <20><> <20><><EFBFBD><EFBFBD>
pc.setqf("kill_count_1", 0)
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv105._190_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._160_sendLetter)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
-- <20><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߸<EFBFBD>õ<EFBFBD><C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Ŭ<><C5AC><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20>ϴ<EFBFBD> <20>ڵ<EFBFBD>.
if party.is_party() then
local map_index = pc.get_map_index()
-- <20><><EFBFBD><EFBFBD><E6BCBA> <20><><EFBFBD><EFBFBD><EFBFBD>ߴٴ<DFB4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
if map_index >= 351 * 10000 and map_index < (351 + 1) *10000 then
pc.setqf("in_dungeon", 1)
else -- <20><><EFBFBD><EFBFBD><E6BCBA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD>ش<EFBFBD>.
if pc.getqf("in_dungeon") == 1 then
if party.getf("flame_dungeon_boss_kill_count") == 1 then
set_state (state2_3)
end
pc.setqf("in_dungeon", 0)
end
end
end
main_quest_flame_lv105.kill_count_state2_2()
end
when logout begin
if party.is_party() then
if party.getf("flame_dungeon_boss_kill_count") == 0 then
pc.setqf("in_dungeon", 0)
end
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._200_sayTitle)
say(gameforge.main_quest_flame_lv105._210_say)
--<2D><><EFBFBD><EFBFBD> óġ <20><> <20>ȳ<EFBFBD><C8B3><EFBFBD>
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6091), 1 - pc.getqf("kill_count_1")))
say_reward(gameforge.main_quest_flame_lv105._110_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._220_say)
end
when 6091.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv105.kill_count_state2_2()
end
function kill_count_state2_2()
local total_remain = 0
local remain1 = 1 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state2_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
pc.setqf("in_dungeon", 0)
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv105._230_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._160_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._160_sendLetter)
say(gameforge.main_quest_flame_lv105._140_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._240_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 60583000))
pc.give_exp2(60583000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 175000))
pc.change_money(175000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71026),1)) -- <20><>ö
pc.give_item2(71026, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71025),2)) -- <20>߰<EFBFBD><DFB0><EFBFBD>
pc.give_item2(71025, 1)
pc.give_item2(71025, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72001),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.give_item2_select(72001)
item.set_socket(2, 60)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_1)
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv105._250_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._250_sendLetter)
say(gameforge.main_quest_flame_lv105._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._250_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._260_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._270_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._070_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(31083),1))
pc.give_item2(31083, 1)
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv105._280_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._250_sendLetter)
q.set_counter_name(gameforge.main_quest_flame_lv105._290_say)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._300_sayTitle)
say(gameforge.main_quest_flame_lv105._310_say)
say_title(gameforge.main_quest_flame_lv105._290_say)
say(gameforge.main_quest_flame_lv105._320_say)
say()
say_reward(gameforge.main_quest_flame_lv105._110_sayReward)
end
when 20390.take with item.vnum == 31083 begin
item.remove()
say_title(gameforge.main_quest_flame_lv105._330_sayTitle)
say(gameforge.main_quest_flame_lv105._340_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_3)
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv105._350_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._250_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._250_sendLetter)
say(gameforge.main_quest_flame_lv105._140_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._250_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._360_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._370_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._380_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(177000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 177000))
pc.change_money(177000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72024),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȭ
pc.give_item2_select(72024)
item.set_socket(2, 180)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71094),1)) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.give_item2(71094, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71001),5)) -- <09>־ȼ<D6BE><C8BC><EFBFBD>
pc.give_item2(71001, 5)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (__COMPLETE__)
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@@ -1,483 +0,0 @@
quest main_quest_flame_lv99 begin
state start begin
when login or levelup or enter with pc.get_level() >= 99 begin
if pc.getf("main_quest_lv98", "__status")==main_quest_lv98.__COMPLETE__ then
set_state ( state0 )
end
end
end
state state0 begin
when login or levelup or enter with pc.level >= 99 begin
set_state (state1_1)
end
end
-- <20>ٽ<EFBFBD> <20><><EFBFBD>۵Ǵ<DBB5> <20><><EFBFBD><EFBFBD> : <20>ӹ<EFBFBD><D3B9>ޱ<EFBFBD>
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv99._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._010_sendLetter)
say(gameforge.main_quest_flame_lv99._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv99._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._030_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._050_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._060_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._070_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._080_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin -- <20>ٽ<EFBFBD> <20><><EFBFBD>۵Ǵ<DBB5> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(string.format(gameforge.main_quest_flame_lv99._090_notice, 127, 928),notice)
end
when letter begin
target.pos ("__TARGET__",127,928,62,"")
send_letter (gameforge.main_quest_flame_lv99._010_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._100_sayTitle)
say(gameforge.main_quest_flame_lv99._110_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_info)
end
when 20377.chat.gameforge.main_quest_flame_lv99._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._120_say)
end
-- <20><><EFBFBD><EFBFBD> --
when __TARGET__.target.arrive begin
target.delete("__TARGET__")
set_state (state1_3)
end
when leave begin
--q.done()
end
end
state state1_3 begin -- <20>ٽ<EFBFBD> <20><><EFBFBD>۵Ǵ<DBB5> <20><><EFBFBD><EFBFBD> : <20>Ϸ<EFBFBD> & <20><><EFBFBD><EFBFBD><EFBFBD>ޱ<EFBFBD>
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv99._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._010_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._010_sendLetter)
say(gameforge.main_quest_flame_lv99._140_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv99._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._150_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._160_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._170_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 33003000))
pc.give_exp2( 33003000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 145000))
pc.change_money( 145000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50705),10))
pc.give_item2(50705, 10)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD>1-1 : <20>ӹ<EFBFBD><D3B9>ޱ<EFBFBD>
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv99._180_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._180_sendLetter)
say(gameforge.main_quest_flame_lv99._020_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv99._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._190_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._070_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin -- <20><><EFBFBD><EFBFBD>1-1 : <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> ã<>ư<EFBFBD><C6B0><EFBFBD> <20><><EFBFBD><EFBFBD>..
when letter begin
send_letter(gameforge.main_quest_flame_lv99._180_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._180_sendLetter)
say(gameforge.main_quest_flame_lv99._200_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._210_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._240_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state2_3)
end
when leave begin
--q.done()
end
end
state state2_3 begin -- <20><><EFBFBD><EFBFBD>1-1 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
when enter begin
notice_multiline(gameforge.main_quest_flame_lv99._250_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._180_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._260_sayTitle)
say(gameforge.main_quest_flame_lv99._270_say)
end
when 20380.chat.gameforge.main_quest_flame_lv99._180_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._280_say)
end
when 2202.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 2203.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 2204.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 2205.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
-- <20><> <20>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> vnum<75><6D> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Ŭ<><C5AC><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20>Ͽ<EFBFBD><CFBF><EFBFBD>.
when 7020.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 7021.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 7022.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 7023.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD>1-1 : <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD>ư<EFBFBD><C6B0><EFBFBD>.
state state2_4 begin
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv99._290_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._180_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._180_sendLetter)
say(gameforge.main_quest_flame_lv99._200_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._300_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 37003000))
pc.give_exp2(37003000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 146000))
pc.change_money(146000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72001),1))
pc.give_item2_select(72001)
item.set_socket(2, 60)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30046),1))
pc.give_item2(30046, 1)
say()
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_1)
end
when leave begin
--q.done()
end
end
-- <20><><EFBFBD><EFBFBD>1-2 : <20>ӹ<EFBFBD><D3B9>ޱ<EFBFBD>
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv99._310_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._310_sendLetter)
say(gameforge.main_quest_flame_lv99._320_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._310_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._330_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._340_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._350_say)
wait()--<2D>߰<EFBFBD> <20><>ȭ
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._360_say)
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin -- <20><><EFBFBD><EFBFBD>1-2
when enter begin
notice_multiline(gameforge.main_quest_flame_lv99._370_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._310_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20391)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20391))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._380_sayTitle)
say(gameforge.main_quest_flame_lv99._390_say)
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31076), 1 - pc.count_item(31076)))
--say_reward(locale.target_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._310_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._400_say)
end
-- <20>¾<EFBFBD><C2BE><EFBFBD> NPC<50><43> Ŭ<><C5AC><EFBFBD>Ͽ<EFBFBD> <20>¾<EFBFBD><C2BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 20391.click begin
target.delete("__TARGET__")
pc.give_item2(31076, 1)
set_state (state3_3)
end
when leave begin
--q.done()
end
end
state state3_3 begin -- <20><><EFBFBD><EFBFBD>1-2
when enter begin
-- notice <20><><EFBFBD><EFBFBD>
notice_multiline(gameforge.main_quest_flame_lv99._410_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._310_sendLetter)
--npc Ÿ<><C5B8>
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._310_sendLetter)
say(gameforge.main_quest_flame_lv99._200_say)
--npc Ÿ<><C5B8> <20>ȳ<EFBFBD><C8B3><EFBFBD>
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._310_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31076) >= 1 then
pc.remove_item ( 31076, pc.count_item(31076))
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._420_say)
--<2D><><EFBFBD><EFBFBD>
wait()--reward
say_title(gameforge.main_quest_lv27._120_sayTitle)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 35003000))
pc.give_exp2(35003000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 147000))
pc.change_money(147000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30021),1))
pc.give_item2(30021, 1)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 100))
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv100", "state0")
else
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._400_say)
set_state (state3_2)
end
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@@ -1,484 +0,0 @@
quest main_quest_lv60 begin
state start begin
when login or levelup or enter with pc.get_level() >= 60 begin
if pc.getf("main_quest_lv55", "__status")==main_quest_lv55.__COMPLETE__ then
set_state ( quest1_begin )
end
end
end
state run begin
when login or levelup or enter with pc.get_level() >= 60 begin
set_state ( quest1_begin )
end
end
state quest1_begin begin
when letter begin --<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>1
send_letter(gameforge.main_quest_lv60._10_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local vid_20011 = find_npc_by_vnum(20011)
if 0 != vid_20011 then
target.vid("__TARGET__", vid_20011, mob_name(20011))
end
end
when button or info begin -- <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD>
say_title(gameforge.main_quest_lv60._10_sendLetter)
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._20_say)
say("")
end
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._30_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv60._40_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._50_say)
say("")
set_state ( quest2_begin )
end
end
state quest2_begin begin
-----------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>2------------
when letter begin
send_letter(gameforge.main_quest_lv60._60_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._60_sendLetter)
say(gameforge.main_quest_lv60._70_say)
say("")
end
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._80_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._90_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv60._100_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._110_say)
set_state (quest2_ongoing)
end
end
state quest2_ongoing begin --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD>ϰ<EFBFBD> Ź<><C5B9><EFBFBD><EFBFBD> <20>޾ƿ<DEBE><C6BF><EFBFBD><EFBFBD><EFBFBD> <20>̼<EFBFBD><CCBC><EFBFBD> <20>޾Ҵ<DEBE>.
-----------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>2------------
when letter begin
send_letter(gameforge.main_quest_lv60._60_sendLetter)
-- <20><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> npc<70><63> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.)
local v = find_npc_by_vnum(20371)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20371))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._60_sendLetter)
say(gameforge.main_quest_lv60._120_say)
say("")
end
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>õ<EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>.
when 20011.gameforge.main_quest_lv60._60_sendLetter begin
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._130_say)
say("")
end
--<2D><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
when 20371.click begin
target.delete("__TARGET__")
say_reward(gameforge.main_quest_lv60._140_sayReward)
pc.give_item2 ( 31001 )
say("")
set_state (quest2_end)
end
end
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ź<><C5B9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
state quest2_end begin
-----------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>2------------
when letter begin
send_letter(gameforge.main_quest_lv60._60_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._60_sendLetter)
say(gameforge.main_quest_lv60._150_say)
say("")
end
when __TARGET__.target.click begin
pc.remove_item ( 31001, 1 )
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._160_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._170_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._180_say)
say("")
wait()
say_title(locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 980000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 175000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71001).." ".."10"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50721).." ".."10"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50725).." ".."10"..locale.count_postfix))
say("")
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> --
-- <20>̰<EFBFBD><CCB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
pc.give_exp2(980000)
pc.change_money(175000)
pc.give_item2(71001, 10) -- <20>־ȼ<D6BE><C8BC><EFBFBD>
pc.give_item2(50721, 10) -- <20><><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD>
pc.give_item2(50725, 10) -- <20><>â<EFBFBD><C3A2>
set_state (quest3_begin)
end
end
state quest3_begin begin
-------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>3---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
end
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._240_say)
say("")
set_state (quest3_ongoing1)
end
end
state quest3_ongoing1 begin
-------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>3---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20><>ġ<EFBFBD><C4A1> ǥ<><C7A5><EFBFBD>Ѵ<EFBFBD>.--
--------------------------------
--------------------------------
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
end
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>õ<EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>.
when 20011.chat.gameforge.main_quest_lv60._220_sendLetter begin
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._260_say)
say("")
end
--<2D><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1000<30><30><EFBFBD><EFBFBD> 1 Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD>.
when 2305.kill begin
if number (1,100) == 1 then
pc.give_item2 (31002, 1 )
say_reward(gameforge.main_quest_lv60._270_sayReward)
say("")
--3.<2E><><EFBFBD><EFBFBD>
set_state (quest3_end1)
end
end
end
-- <20><><EFBFBD><EFBFBD><EBB9AE><EFBFBD><EFBFBD> <20>ϳ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
state quest3_end1 begin
-------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>3---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
end
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._280_say)
say("")
wait()
--@@@@@@@@@<40><><EFBFBD><EFBFBD>@@@@@@@@@@--
--1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
pc.remove_item (31002, 1 )
say(gameforge.main_quest_lv60._290_say)
say("")
set_state (quest3_ongoing2)
end
end
state quest3_ongoing2 begin
--<2D><> <20><><EFBFBD>¿<EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD> '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>' <20><><EFBFBD><EFBFBD>Ʈ <20>÷<EFBFBD><C3B7>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
-- <20>ʱⰪ<CAB1><E2B0AA> 9<><39> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31> <20>ٿ<EFBFBD> 0<><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
-- 0<><30> <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>ȭ<EFBFBD><C8AD>Ų<EFBFBD><C5B2>.
when enter begin
pc.setqf("remain_item",9)
end
--*************************--
-------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>3_1---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20><>ġ<EFBFBD><C4A1> ǥ<><C7A5><EFBFBD>Ѵ<EFBFBD>.--
--------------------------------
--------------------------------
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
q.set_counter(gameforge.main_quest_lv60._250_counter, pc.getqf("remain_item"))
end
-----------------------------
--*************************--
--<2D><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1000<30><30><EFBFBD><EFBFBD> 1 Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٿ<EFBFBD><D9BF>ش<EFBFBD>.
when 2305.kill begin
if number (1,100) == 1 then
local remain_item_prev = pc.getqf("remain_item")
pc.setqf("remain_item",remain_item_prev-1)
pc.give_item2 (31002, 1 )
notice(string.format(gameforge.main_quest_lv60._300_say,pc.getqf("remain_item")))
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>Ѿ<D1BE><EEB0A3>.
if pc.getqf("remain_item")==0 then
-- <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20><>ġ ǥ<>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD> --
-------------------------------------
-------------------------------------
set_state (quest3_end2)
end
end
end
end
state quest3_end2 begin
--*************************--
-------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>3_1---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
q.set_counter(gameforge.main_quest_lv60._250_counter, pc.getqf("remain_item"))
end
-----------------------------
--*************************--
when __TARGET__.target.click begin
target.delete("__TARGET__")
pc.remove_item (31002, pc.count_item (31002) )
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._310_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._320_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._330_say)
say("")
wait()
say_title(locale.reward)
----"12345678901234567890123456789012345678901234567890"|
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 3300000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71094).." ".."3"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30056)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30025)))
say("")
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> --
pc.give_exp2(3300000)
pc.give_item2(71094, 3) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> * 3
pc.give_item2(30056) -- <20>Ź<EFBFBD><C5B9><EFBFBD>
pc.give_item2(30025) -- <20>Ź<EFBFBD><C5B9><EFBFBD> <20><><EFBFBD>ָӴ<D6B8>
set_state (quest4_begin)
end
end
state quest4_begin begin
--*************************--
-------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>4-----------
when letter begin
send_letter(gameforge.main_quest_lv60._340_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._340_sendLetter)
say(gameforge.main_quest_lv60._350_say)
say("")
end
-----------------------------
--*************************--
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._360_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._370_say)
say("")
wait()
say_title(pc.getname())
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._380_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._390_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._400_say)
say("")
wait()
----"12345678901234567890123456789012345678901234567890"|
say_reward(gameforge.main_quest_lv60._410_sayReward)
say("")
--@@@ <20><><EFBFBD><EFBFBD> @@@--
--1. <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>.
clear_letter()
set_quest_state ("main_quest_lv66", "state_0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@@ -1,375 +0,0 @@
quest main_quest_lv66 begin
state start begin
end
state state_0 begin
when login or levelup or enter with pc.level >= 66 begin
set_state (state_1)
end
end
state state_1 begin
when letter begin
send_letter (gameforge.main_quest_lv66._10_sendLetter)
local v = find_npc_by_vnum (20011)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
end
when button or info begin
say_title (gameforge.main_quest_lv66._10_sendLetter)
say (gameforge.main_quest_lv66._20_say)
end
when 20011.chat.gameforge.main_quest_lv66._10_sendLetter begin
target.delete("__TARGET__")
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._30_say)
end
when 1091.kill begin
-- target.delete("__TARGET__")
set_state (state_2)
end
end
state state_2 begin
when letter begin
local v = find_npc_by_vnum (20011)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._10_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._10_sendLetter)
say (gameforge.main_quest_lv66._40_say)
end
when 20011.chat.gameforge.main_quest_lv66._10_sendLetter begin
target.delete("__TARGET__")
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._50_say)
set_state (state_3)
end
end
state state_3 begin
when letter begin
local v = find_npc_by_vnum (20011)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv66._60_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._60_sendLetter)
say(gameforge.main_quest_lv66._70_say)
end
when 20011.chat.gameforge.main_quest_lv66._60_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.main_quest_lv66._80_say)
wait()
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._90_say)
wait()
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._100_say)
wait()
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._110_say)
wait()
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._120_say)
wait()
--say_title ("<22><><EFBFBD><EFBFBD> :")
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 5800000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72301).." ".."3"..locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30046)))
pc.give_exp2(5800000)
pc.give_item2(72301) -- <20><EFBFBD><E0BAB9> <20><> * 3
pc.give_item2(72301)
pc.give_item2(72301)
pc.give_item2(30046) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
set_state (state_4)
end
end
state state_4 begin
when letter begin
local v = find_npc_by_vnum (pc_find_square_guard_vid())
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._130_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._130_sendLetter)
say (gameforge.main_quest_lv66._140_say)
end
when 11000.chat.gameforge.main_quest_lv66._130_sendLetter or 11002.chat.gameforge.main_quest_lv66._130_sendLetter or 11004.chat.gameforge.main_quest_lv66._130_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(11000))
say(gameforge.main_quest_lv66._150_say)
wait()
say_title(mob_name(11000))
say(gameforge.main_quest_lv66._160_say)
set_state (state_5)
end
end
state state_5 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv66._170_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv66._170_sendLetter)
say (gameforge.main_quest_lv66._140_say)
end
when 20369.chat.gameforge.main_quest_lv66._170_sendLetter begin
target.delete("__TARGET__")
say_title(gameforge.main_quest_lv66._190_sayTitle)
say(gameforge.main_quest_lv66._200_say)
set_state (state_6)
end
end
state state_6 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._210_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._210_sendLetter)
say (gameforge.main_quest_lv66._220_say)
end
when 20369.chat.gameforge.main_quest_lv66._210_sendLetter begin
target.delete("__TARGET__")
say_title(gameforge.main_quest_lv66._190_sayTitle)
say(gameforge.main_quest_lv66._230_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv66._240_say)
wait()
say_title(gameforge.main_quest_lv66._190_sayTitle)
say(gameforge.main_quest_lv66._250_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv66._260_say)
wait()
say_title(gameforge.main_quest_lv66._190_sayTitle)
say(gameforge.main_quest_lv66._270_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv66._280_say)
wait()
say_title(mob_name(20369))
say(gameforge.main_quest_lv66._290_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._310_say)
set_state (state_7)
end
end
state state_7 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._320_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._320_sendLetter)
say (gameforge.main_quest_lv66._330_say)
end
when 20369.chat.gameforge.main_quest_lv66._320_sendLetter begin
target.delete("__TARGET__")
say_title( gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._340_say)
wait()
say_title( gameforge.main_quest_lv66._300_sayTitle)
say(string.format(gameforge.main_quest_lv66._350_say,item_name(30033)))
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv66._360_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._370_say)
set_state (state_8)
end
end
state state_8 begin
when enter begin
pc.setqf ("rgd_kill", 0)
pc.setqf ("state_8_start", get_global_time())
notice_multiline(string.format(gameforge.main_quest_lv66._380_notice, 30), notice)
timer("rgd_kill_timer", 30 * 60 / 2)
end
when letter begin
send_letter (gameforge.main_quest_lv66._390_sendLetter)
local t = pc.getqf ("state_8_start") + 30 * 60 - get_global_time()
q.set_clock(locale.stash.enlarge_1_timer, t)
q.set_counter_name (mob_name (2313))
q.set_counter_value (200)
end
when button or info begin
say_title (gameforge.main_quest_lv66._390_sendLetter)
say (string.format(gameforge.main_quest_lv66._400_say, 200))
local t = pc.getqf ("state_8_start") + 30 * 60 - get_global_time()
if t < 0 then
say(gameforge.main_quest_lv66._410_say)
else
say(string.format(gameforge.main_quest_lv66._420_say, t / 60))
end
end
when 2313.kill begin
if pc.getqf("rgd_kill") >= 200 - 1 then
pc.give_item2 (31003, 1)
pc.setqf ("rgd_kill", 0)
q.set_counter_value (0)
set_state (state_9)
else
pc.setqf ("rgd_kill", pc.getqf ("rgd_kill") + 1)
q.set_counter_value (200 - pc.getqf ("rgd_kill"))
end
end
when rgd_kill_timer.timer begin
local t = pc.getqf ("state_8_start") + 30 * 60 - get_global_time()
notice (string.format(gameforge.main_quest_lv66._420_say, t / 60))
end
end
state state_9 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._390_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._390_sendLetter)
say(gameforge.main_quest_lv66._430_say)
end
when 20369.chat.gameforge.main_quest_lv66._390_sendLetter begin
target.delete("__TARGET__")
pc.remove_item (31003, 1)
if (pc.getqf ("state_8_start") + 30 * 60 - get_global_time()) >= 0 then
q.done()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._440_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._450_say)
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 2900000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 200000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30033)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50727).." ".."10"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50728).." ".."10"..locale.count_postfix))
pc.give_exp2(2900000)
pc.change_money(200000)
pc.give_item2(30033) -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD>
pc.give_item2(50727, 10) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10
pc.give_item2(50728, 10) -- <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD> 10
else
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._460_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._470_say)
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 2000000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 100000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50727).." ".."10"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50728).." ".."10"..locale.count_postfix))
pc.give_exp2(2000000)
pc.change_money(100000)
pc.give_item2(50727, 10) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10
pc.give_item2(50728, 10) -- <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD> 10
end
set_state (state_10)
end
end
state state_10 begin
when letter begin
local v = find_npc_by_vnum (20370)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._480_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._480_sendLetter)
say(gameforge.main_quest_lv66._490_say)
end
when 20370.chat.gameforge.main_quest_lv66._480_sendLetter begin
target.delete("__TARGET__")
say_title( mob_name(20370))
say(gameforge.main_quest_lv66._500_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv66._510_say)
wait()
say_title ( mob_name(20370))
say(gameforge.main_quest_lv66._520_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv66._530_say)
wait()
say_title ( mob_name(20370))
say(gameforge.main_quest_lv66._540_say)
wait()
say_title ( mob_name(20370))
say(gameforge.main_quest_lv66._550_say)
set_state (state_11)
end
end
state state_11 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._560_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._560_sendLetter)
say (gameforge.main_quest_lv66._570_say)
end
when 20369.chat.gameforge.main_quest_lv66._560_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._580_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv66._590_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._600_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._610_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._620_say)
set_state (__COMPLETE__)
q.done()
set_quest_state ("main_quest_lv72", "state_0")
end
end
state __COMPLETE__ begin
end
end

View File

@@ -1,220 +0,0 @@
quest main_quest_lv72 begin
state start begin
end
state state_0 begin
when login or levelup or enter with pc.level >= 72 begin
set_state (state_1)
end
end
state state_1 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv72._10_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv72._10_sendLetter)
say (gameforge.main_quest_lv72._20_say)
end
when 20369.chat.gameforge.main_quest_lv72._10_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._30_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._40_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._50_say)
set_state (state_2)
end
end
state state_2 begin
when letter begin
local v = find_npc_by_vnum (20372)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv72._60_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv72._60_sendLetter)
say (gameforge.main_quest_lv72._70_say)
end
when 20372.click begin
target.delete("__TARGET__")
say(gameforge.main_quest_lv72._80_say)
wait()
say_title(mob_name(20372))
say(gameforge.main_quest_lv72._90_say)
wait()
say_title(mob_name(20372))
say(gameforge.main_quest_lv72._100_say)
wait()
say(gameforge.main_quest_lv72._110_say)
pc.give_item2 (30160, 1)
set_state (report_discovery)
end
end
state report_discovery begin
when button or info begin
return
end
when 20369.chat.gameforge.main_quest_lv72._60_sendLetter begin
pc.remove_item (30160)
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._120_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv72._130_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._140_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv72._150_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._160_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._170_say)
wait()
if number (1,2) == 1 then
drug = 30009
else
drug = 30083
end
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 3100000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70005)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(drug)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30039)))
pc.give_exp2(3100000)
pc.give_item2(70005) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.give_item2(drug) -- <20>˼<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> (+<2B><> <20><><EFBFBD><EFBFBD>)
pc.give_item2(30039) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
set_state (state_4)
end
end
state state_4 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv72._180_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv72._180_sendLetter)
say(gameforge.main_quest_lv72._190_say)
end
when 20369.chat.gameforge.main_quest_lv72._180_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._200_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._210_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._220_say)
pc.setqf ("collect_beads", 0)
set_state (state_5)
end
end
state state_5 begin
when letter begin
send_letter(gameforge.main_quest_lv72._180_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv72._180_sendLetter)
say(gameforge.main_quest_lv72._190_say)
end
when 1105.kill or 1106.kill or 1107.kill begin
if number(1, 100) > 1 then
return
end
local n = pc.getqf ("pass_beads")
local i = pc.count_item (31005)
if n < 50 and pc.count_item (31005) < 50 - n then
notice_multiline(gameforge.main_quest_lv72._240_notice, notice)
notice_multiline(string.format(gameforge.main_quest_lv72._250_notice, 50 - n - 1), notice)
pc.give_item2 (31005, 1)
end
end
when 20369.chat.gameforge.main_quest_lv72._180_sendLetter with pc.count_item (31005) > 0 begin
local now = get_global_time()
local today = now - math.mod (now, 86400)
local can_report_num
if pc.getqf ("last_access_date") != today then
pc.setqf ("last_access_date", today)
pc.setqf ("blue_bead_todays_report_num", 1)
else
local reported_num = pc.getqf("blue_bead_todays_report_num")
if 10 - reported_num <= 0 then
say(gameforge.main_quest_lv72._260_say)
return
else
if not pc.is_gm() then
pc.setqf ("blue_bead_todays_report_num", reported_num + 1)
end
end
end
pc.remove_item (31005, 1)
local n = pc.getqf("pass_beads")
if number (1,100) > 60 then
say_title (mob_name(20369))
say(gameforge.main_quest_lv72._270_say)
return
elseif n < 50 -1 then
pc.setqf ("pass_beads", n + 1)
say_title (gameforge.main_quest_lv66._300_sayTitle)
say (string.format(gameforge.main_quest_lv72._280_say, 50 - n - 1))
else
pc.setqf("pass_beads", 0)
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._290_say)
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 20000000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 225000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71035).." ".."3"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72024)))
pc.give_exp2(20000000)
pc.change_money(225000)
pc.give_item2(71035)
pc.give_item2(71035)
pc.give_item2(71035)
pc.give_item2(70043)
pc.give_item2(72024)
wait()
say(gameforge.main_quest_lv72._300_say)
set_state (__COMPLETE__)
q.done()
set_quest_state ("main_quest_lv78", "state_0")
end
end
end
state __COMPLETE__ begin
end
end

View File

@@ -1,228 +0,0 @@
quest main_quest_lv78 begin
state start begin
end
state state_0 begin
when login or levelup or enter with pc.level >= 78 begin
set_state (state_1)
end
end
state state_1 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv78._10_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv78._10_sendLetter)
say (gameforge.main_quest_lv78._20_say)
end
when 20369.chat.gameforge.main_quest_lv78._10_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._30_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._40_say)
set_state (make_red_bead)
end
end
state make_red_bead begin
when enter begin
pc.setqf ("first_make_time", 0)
end
when 2205.kill or 2204.kill or 2203.kill begin
if number(1, 500) == 1 then
pc.give_item2 (31007, 1)
end
end
when 20369.chat.gameforge.main_quest_lv78._10_sendLetter begin
if pc.count_item (31006) >= 20 then
say_title (mob_name(20369))
say(string.format(gameforge.main_quest_lv78._50_say, 20))
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 36000000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72725)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70024)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70004)))
pc.give_exp2(36000000)
pc.give_item2(72725) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ູ(<28><>)
pc.give_item2(70024) -- <20><EFBFBD><E0BAB9> <20><><EFBFBD><EFBFBD>
pc.give_item2(70004) -- <20>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.remove_item (31006, pc.count_item (31006))
set_state (state_2)
return
end
local t = get_global_time()
local today = t - math.mod (t, 86400)
if pc.getqf ("first_make_time") != today then
pc.setqf ("first_make_time", today)
pc.setqf ("make_count", 0)
end
if pc.count_item (90010) < 1 or pc.count_item (30019) < 1 or
pc.count_item (31007) < 1 then
say_title (gameforge.main_quest_lv66._300_sayTitle)
say (gameforge.main_quest_lv78._60_say)
return
end
local n = pc.getqf ("make_count")
if n >= 7 then
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._70_say)
return
else
pc.remove_item(90010, 1)
pc.remove_item(30019, 1)
pc.remove_item(31007, 1)
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._80_say)
wait()
pc.setqf ("make_count", n + 1)
local n = number (1,100)
if n > 60 then
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._90_say)
wait()
elseif pc.count_item (31006) < 20 then
pc.give_item2 (31006, 1)
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._100_say)
say_item_vnum(31006)
wait ()
else
say_title (mob_name(20369))
say(string.format(gameforge.main_quest_lv78._50_say, 20))
wait()
say_title (locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 36000000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72725)))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70024)))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70004)))
pc.give_exp2(36000000)
pc.give_item2(72725) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ູ(<28><>)
pc.give_item2(70024) -- <20><EFBFBD><E0BAB9> <20><><EFBFBD><EFBFBD>
pc.give_item2(70004) -- <20>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.remove_item (31006, pc.count_item (31006))
set_state (state_2)
end
end
end
end
state state_2 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv78._110_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv78._110_sendLetter)
say(gameforge.main_quest_lv78._120_say)
end
when 20369.chat.gameforge.main_quest_lv78._110_sendLetter with pc.count_item (31004) < 100 begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._130_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._140_say)
end
when 2315.kill or 2314.kill begin
if number (1, 300) == 1 then
pc.give_item2 (31004, 1)
local n = pc.count_item (31004)
if n < 100 then
notice (string.format(gameforge.main_quest_lv78._150_say, 100 - n))
else
notice_multiline(gameforge.main_quest_lv78._160_notice, notice)
end
end
end
when 20369.chat.gameforge.main_quest_lv78._110_sendLetter with pc.count_item (31004) >= 100 begin
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._170_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv78._180_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._190_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._200_say)
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48000000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 230000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72729)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70035)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70003)))
pc.give_exp2(48000000)
pc.change_money(230000)
pc.give_item2(72729) -- ȭ<><C8AD><EFBFBD><EFBFBD> <20>ູ(<28><>)
pc.give_item2(70035) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö
pc.give_item2(70003) -- <20><><EFBFBD><EFBFBD>
pc.remove_item (31004, pc.count_item (31004))
set_state (state_3)
end
end
state state_3 begin
when letter begin
local v = find_npc_by_vnum (20018)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv78._210_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv78._210_sendLetter)
say(gameforge.main_quest_lv78._220_say)
end
when 20018.chat.gameforge.main_quest_lv78._210_sendLetter begin
target.delete("__TARGET__")
say_title ( mob_name(20018))
say(gameforge.main_quest_lv78._230_say)
wait()
say_title ( pc.get_name ())
say(gameforge.main_quest_lv78._240_say)
wait()
say_title ( mob_name(20018))
say(gameforge.main_quest_lv78._250_say)
wait()
say_title ( pc.get_name ())
say(gameforge.main_quest_lv78._260_say)
wait()
say_title ( mob_name(20018))
say(gameforge.main_quest_lv78._270_say)
wait()
say_title ( pc.get_name ())
say(gameforge.main_quest_lv78._280_say)
wait()
say_title ( mob_name(20018))
say(gameforge.main_quest_lv78._290_say)
wait()
say_title(locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30319).." ".."2"..locale.count_postfix))
pc.give_item2(30319,2)
wait()
say(gameforge.main_quest_lv78._300_say)
set_state (__COMPLETE__)
q.done()
set_quest_state("main_quest_lv84", "state_0")
end
end
state __COMPLETE__ begin
end
end

View File

@@ -1,151 +0,0 @@
quest main_quest_lv84 begin
state start begin
end
state state_0 begin
when login or levelup or enter with pc.level >= 84 begin
set_state (state_1)
end
end
state state_1 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv84._10_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv84._10_sendLetter)
say(gameforge.main_quest_lv84._20_say)
end
when 20369.chat.gameforge.main_quest_lv84._10_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._30_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._40_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._50_say)
pc.give_item2(31008)
set_state (state_4)
end
end
state state_4 begin
when letter begin
send_letter(gameforge.main_quest_lv84._60_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv84._60_sendLetter)
say(gameforge.main_quest_lv84._70_say)
end
when 31008.use with pc.get_map_index() >= 2160000 and pc.get_map_index() < 2170000 begin --and pc.getf("devilcatacomb_zone", "level") == 5 begin
party.give_buff(303, POINT_ATT_SPEED, 20, 13, 1800, 0, true, true)
party.give_buff(303, POINT_MOV_SPEED, 20, 12, 1800, 0, true, true)
party.give_buff(303, POINT_CASTING_SPEED, 20, 0, 1800, 0, true, true)
party.give_buff(303, POINT_ATTBONUS_MONSTER, 30, 0, 1800, 0, true, true)
party.give_buff(303, POINT_MAX_HP_PCT, 10, 0, 1800, 0, true, true)
party.give_buff(303, POINT_MAX_SP_PCT, 10, 0, 1800, 0, true, true)
say(gameforge.main_quest_lv84._80_say)
end
when 2591.kill begin
say_title(locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 63000000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71026).." ".."2"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70051)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70050)))
pc.give_exp2(63000000)
pc.change_money(250000)
pc.give_item2(71026) -- <20><>ö
pc.give_item2(71026) -- <20><>ö
pc.give_item2(70051) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
pc.give_item2(70050) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ
set_state (state_2)
end
end
state state_2 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv84._90_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv84._90_sendLetter)
say (gameforge.main_quest_lv84._100_say)
end
when 20369.chat.gameforge.main_quest_lv84._90_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._110_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._120_say)
end
when 2597.kill begin
say_reward(gameforge.main_quest_lv84._130_sayReward)
say(gameforge.main_quest_lv84._140_say)
set_state (state_3)
end
end
state state_3 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv84._150_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv84._150_sendLetter)
say (gameforge.main_quest_lv84._160_say)
end
when 20369.chat.gameforge.main_quest_lv84._150_sendLetter begin
target.delete("__TARGET__")
say_title (" ")
say(gameforge.main_quest_lv84._170_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._180_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._190_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._200_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._210_say)
wait()
say_title (locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 84000000))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 250000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71025).." ".."2"..locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70038)))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71107)))
pc.give_exp2(84000000)
pc.change_money(250000)
pc.give_item2(71025) -- <20>߰<EFBFBD><DFB0><EFBFBD>
pc.give_item2(71025) -- <20>߰<EFBFBD><DFB0><EFBFBD>
pc.give_item2(70038) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pc.give_item2(71107) -- õ<><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
end
end

File diff suppressed because it is too large Load Diff

View File

@@ -1,768 +0,0 @@
quest main_quest_lv91 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 91 begin
set_state (state1_1)
end
end
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
-----------------<1> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-1-----------------
state state1_1 begin
when letter begin
send_letter (gameforge.main_quest_lv91._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._010_sendLetter)
say(gameforge.main_quest_lv91._020_say)
end
when 20378.chat.gameforge.main_quest_lv91._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._030_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._050_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._060_say)
wait()
set_state (state1_2)
end
end
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._010_sendLetter)
--q.set_counter_name(locale.main_quest_lv91.remain_mob)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._070_sayTitle)
say(gameforge.main_quest_lv91._080_say)
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
--say_title(gameforge.main_quest_lv91._760_say)
--local remain = 10 - pc.getqf("mob1_1_killed")
--if remain < 0 then
-- remain = 0
--end
--q.set_counter_value(remain)
--say_title(string.format(gameforge.main_quest_lv91._770_say,mob_name(3205),remain))
end
--[[
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20378.chat.gameforge.main_quest_lv91._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._520_say)
end
--]]
when 3205.kill begin
local mob1_1_killed = pc.getqf("mob1_1_killed")
if mob1_1_killed < 10 then
pc.setqf("mob1_1_killed", mob1_1_killed + 1)
local remain = 10 - pc.getqf("mob1_1_killed")
if remain < 0 then
remain = 0
end
--q.set_counter_value(remain)
if remain == 0 then
say_title(mob_name(3205))
say(gameforge.main_quest_lv91._100_say)
notice_multiline(gameforge.main_quest_lv91._090_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._090_2_notice,notice)
set_state (state1_3)
end
end
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv91._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
--q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv91._010_sendLetter)
say(gameforge.main_quest_lv91._110_say)
end
when 20378.chat.gameforge.main_quest_lv91._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._120_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._130_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._150_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 18803050))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30051),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50814),10,locale.count_postfix))
say("")
pc.give_exp2(18803050)
--pc.change_money(0)
pc.give_item2(30051, 1)
pc.give_item2(50814, 10)
set_state (state2_1)
end
end
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
-----------------<2> <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Żȯ<C5BB>϶<EFBFBD>!-----------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv91._160_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._160_sendLetter)
say(gameforge.main_quest_lv91._170_say)
end
when 20378.chat.gameforge.main_quest_lv91._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._180_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._190_say)
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._160_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._200_sayTitle)
say(gameforge.main_quest_lv91._210_say)
say_item_vnum(31075)
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- say()
-- say()
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20378.chat.gameforge.main_quest_lv91._160_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._220_say)
end
when 3291.kill begin
if number(1,500) == 1 then
if pc.count_item(31075) < 1 then
notice_multiline(gameforge.main_quest_lv91._230_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._230_2_notice,notice)
pc.give_item2(31075, 1)
set_state (state2_3)
end
end
end
end
-- <20><><EFBFBD><EFBFBD>Ʈ <20>Ϸ<EFBFBD>
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv91._160_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._160_sendLetter)
say(gameforge.main_quest_lv91._240_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3291.kill begin
if number(1,500) == 1 then
if pc.count_item(31075) < 1 then
notice_multiline(gameforge.main_quest_lv91._230_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._230_2_notice,notice)
pc.give_item2(31075, 1)
end
end
end
when 20378.chat.gameforge.main_quest_lv91._160_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31075) >= 1 then
pc.remove_item ( 31075, pc.count_item(31075))
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._250_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._260_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 24873650))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50722),20,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72016),1,locale.count_postfix))
say("")
pc.give_exp2(24873650)
--pc.change_money(0)
pc.give_item2(50722, 20)
pc.give_item2_select(72016)
item.set_socket(2, 120)
set_state (state3_1)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._220_say)
set_state (state2_2)
end
end
end
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
-----------------<3> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1-----------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv91._270_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._270_sendLetter)
say(gameforge.main_quest_lv91._280_say)
end
when 20380.chat.gameforge.main_quest_lv91._270_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._290_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._300_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._310_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._320_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._330_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._340_say)
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._270_sendLetter)
q.set_counter_name(gameforge.main_quest_lv90._1180_say)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._350_sayTitle)
say(gameforge.main_quest_lv91._360_say)
say_item_vnum(31018)
say(gameforge.main_quest_lv90._1180_say)
local remain = 10 - pc.getqf("item3_1_checked")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv90._1190_say,item_name(31018),remain))
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20380.chat.gameforge.main_quest_lv91._270_sendLetter with pc.count_item(31018) > 0 begin
if pc.count_item(31018) > 0 then
pc.remove_item(31018, 1)
if number(1, 100 ) <= 70 then -- <20><>ǰ <20><><EFBFBD><EFBFBD>
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._380_say)
pc.setqf("item3_1_checked", pc.getqf("item3_1_checked") + 1)
local remain = 10 - pc.getqf("item3_1_checked")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.getqf("item3_1_checked") >= 10 then -- <20><>ǰ <20><><EFBFBD><EFBFBD> <20>޼<EFBFBD>
pc.remove_item(31018, pc.count_item(31018))
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._390_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 25805450))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 214000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30009),2,locale.count_postfix))
say("")
pc.give_exp2(25805450)
pc.change_money(214000)
pc.give_item2(30009, 2)
set_state (state4_1)
q.set_counter_name("")
else -- <20><>ǰ <20><><EFBFBD><EFBFBD> <20>̴<EFBFBD>
say(string.format(gameforge.main_quest_lv91._400_say,remain))
end
else -- <20><>ǰ <20><><EFBFBD><EFBFBD>
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._370_say)
end
end
end
when 3601.kill or 3602.kill or 3603.kill or 3604.kill or 3605.kill begin
if number(1,300) == 1 then
pc.give_item2(31018, 1)
notice_multiline(gameforge.main_quest_lv91._410_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._410_2_notice,notice)
end
end
end
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
-----------------<4> <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-2-----------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv91._420_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._420_sendLetter)
say(gameforge.main_quest_lv91._430_say)
end
when 20380.chat.gameforge.main_quest_lv91._420_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._440_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._450_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._460_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._470_say)
set_state (state4_2)
end
end
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._420_sendLetter)
q.set_counter_name(gameforge.main_quest_lv90._1180_say)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._480_sayTitle)
say(gameforge.main_quest_lv91._490_say)
say_item_vnum(31019)
say(gameforge.main_quest_lv90._1180_say)
local remain = 3 - pc.getqf("item4_1_checked")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv90._1190_say,item_name(31019),remain))
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20380.chat.gameforge.main_quest_lv91._420_sendLetter with pc.count_item(31019) > 0 begin
if pc.count_item(31019) > 0 then
local cur_t = get_global_time() - 60 * 60 * 9
local today_date = cur_t - math.mod(cur_t,86400)
local last_checked_date = pc.getqf("last_checked_date")
if today_date ~= last_checked_date then
pc.setqf("last_checked_date", today_date)
pc.setqf("today_item4_1_checked",0)
end
local today_item4_1_checked = pc.getqf("today_item4_1_checked")
if today_item4_1_checked >= 1 then --1<><31> <20><>ǰ <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._500_say)
else -- <20><>ǰ <20>õ<EFBFBD>.
pc.remove_item(31019, 1)
if number(1, 100 ) <= 70 then -- <20><>ǰ <20><><EFBFBD><EFBFBD>
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._510_say)
pc.setqf("item4_1_checked", pc.getqf("item4_1_checked") + 1)
pc.setqf("today_item4_1_checked", pc.getqf("today_item4_1_checked") + 1)
local remain = 3 - pc.getqf("item4_1_checked")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.getqf("item4_1_checked") >= 3 then -- <20><>ǰ <20><><EFBFBD><EFBFBD> <20>޼<EFBFBD>
pc.remove_item(31019, pc.count_item(31019))
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._520_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 27874000))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 225000))
say("")
pc.give_exp2(27874000)
pc.change_money(225000)
set_state (state5_1)
q.set_counter_name("")
else -- <20><>ǰ <20><><EFBFBD><EFBFBD> <20>̴<EFBFBD>
say(string.format(gameforge.main_quest_lv91._530_say,remain))
end
else -- <20><>ǰ <20><><EFBFBD><EFBFBD>
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._540_say)
end
end
end
end
when 3690.kill or 3691.kill begin
if number(1,300) == 1 then
pc.give_item2(31019, 1)
notice_multiline(gameforge.main_quest_lv91._550_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._550_2_notice,notice)
end
end
end
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
-----------------<5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ-----------------
state state5_1 begin
when letter begin
send_letter(gameforge.main_quest_lv91._560_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._560_sendLetter)
say(gameforge.main_quest_lv91._570_say)
end
when 20378.chat.gameforge.main_quest_lv91._560_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv91._580_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv91._590_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._600_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv91._610_say)
set_state (state5_2)
end
end
state state5_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._560_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._620_sayTitle)
say(gameforge.main_quest_lv91._630_say)
say_item_vnum(31020)
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
when 20382.click begin
if pc.count_item(31020) < 1 then
pc.give_item2(31020, 1)
notice_multiline(gameforge.main_quest_lv91._640_1_notice,notice)
set_state (state5_3)
end
end
when 20380.chat.gameforge.main_quest_lv91._560_sendLetter with pc.count_item(31020) >= 1 begin
target.delete("__TARGET__")
pc.remove_item(31020, pc.count_item(31020))
say_title(mob_name(20380))
say(gameforge.main_quest_lv91._650_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._660_say)
wait()
say_title(mob_name(20380))
say(gameforge.main_quest_lv91._670_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 6766050))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30045),2,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv91._780_say)
pc.give_exp2(6766050)
--pc.change_money(0)
pc.give_item2(30045, 2)
clear_letter()
set_quest_state ("main_quest_lv92", "state0")
set_state (__COMPLETE__)
end
end
-- <20><><EFBFBD><EFBFBD>Ʈ <20>Ϸ<EFBFBD>
state state5_3 begin
when letter begin
send_letter(gameforge.main_quest_lv91._560_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._560_sendLetter)
say(gameforge.main_quest_lv91._680_say)
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>н<EFBFBD> <20><><EFBFBD><EFBFBD>.
when 20382.click begin
if pc.count_item(31020) < 1 then
pc.give_item2(31020, 1)
notice_multiline(gameforge.main_quest_lv91._640_1_notice,notice)
end
end
when 20380.chat.gameforge.main_quest_lv91._560_sendLetter with pc.count_item(31020) >= 1 begin
target.delete("__TARGET__")
pc.remove_item(31020, pc.count_item(31020))
say_title(mob_name(20380))
say(gameforge.main_quest_lv91._650_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._660_say)
wait()
say_title(mob_name(20380))
say(gameforge.main_quest_lv91._670_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 6766050))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30045),2,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv91._780_say)
pc.give_exp2(6766050)
--pc.change_money(0)
pc.give_item2(30045, 2)
clear_letter()
set_quest_state ("main_quest_lv92", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@@ -1,699 +0,0 @@
quest main_quest_lv92 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 92 begin
set_state (state1_1)
end
end
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>ƶ<EFBFBD>!1-2------------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv92._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._010_sendLetter)
say(gameforge.main_quest_lv92._020_say)
end
when 20378.chat.gameforge.main_quest_lv92._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._030_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._040_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._050_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._060_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._070_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._080_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._090_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._100_say)
set_state (state1_2)
q.set_counter_value(4)
end
end
--<2D><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv92._010_sendLetter)
local remain_item = 4 - pc.count_item(31010)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_name("<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
q.set_counter_value(remain_item)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv92._110_sayTitle)
say(gameforge.main_quest_lv92._120_say)
say_item_vnum(31010)
say(gameforge.main_quest_lv90._1180_say)
local remain_item = 4 - pc.count_item(31010)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
say_reward(string.format("%s: %d %s",item_name(31010),remain_item,locale.count_postfix))
-- say()
-- say_reward(locale.main_quest_lv92.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20378.chat.gameforge.main_quest_lv92._010_sendLetter begin
if pc.count_item(31010) >= 4 then
pc.remove_item ( 31010, pc.count_item(31010))
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._160_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 33874000))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 200000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50817),10,locale.count_postfix))
say("")
pc.give_exp2(33874000)
pc.change_money(200000)
pc.give_item2(50817, 10)
set_state (state2_1)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._130_say)
set_state (state1_2)
end
end
when 3504.kill or 3505.kill begin
if number(1,500) == 1 then
if pc.count_item(31010) < 4 then
pc.give_item2(31010, 1)
--<2D><><EFBFBD><EFBFBD>Ʈ <20>޴<EFBFBD> â ī<><C4AB>Ʈ
local remain_item = 4 - pc.count_item(31010)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
if pc.count_item(31010) >= 4 then
notice_multiline(gameforge.main_quest_lv92._140_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._140_2_notice,notice)
set_state (state1_3)
end
end
end
end
end
state state1_3 begin
when letter begin
q.set_counter_name("")
send_letter(gameforge.main_quest_lv92._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._010_sendLetter)
say(gameforge.main_quest_lv92._150_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3504.kill or 3505.kill begin
if number(1,500) == 1 then
if pc.count_item(31010) < 4 then
pc.give_item2(31010, 1)
--<2D><><EFBFBD><EFBFBD>Ʈ <20>޴<EFBFBD> â ī<><C4AB>Ʈ
local remain_item = 4 - pc.count_item(31010)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
if pc.count_item(31010) >= 4 then
notice_multiline(gameforge.main_quest_lv92._140_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._140_2_notice,notice)
end
end
end
end
when 20378.chat.gameforge.main_quest_lv92._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31010) >= 4 then
pc.remove_item ( 31010, pc.count_item(31010))
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._160_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 33874000))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 200000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50817),10,locale.count_postfix))
say("")
pc.give_exp2(33874000)
pc.change_money(200000)
pc.give_item2(50817, 10)
set_state (state2_1)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._130_say)
set_state (state1_2)
end
end
end
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
state state2_1 begin
when letter begin
q.set_counter_name("")
send_letter(gameforge.main_quest_lv92._170_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._170_sendLetter)
say(gameforge.main_quest_lv92._180_say)
end
when 20378.chat.gameforge.main_quest_lv92._170_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._190_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._200_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._210_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._220_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._230_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._240_say)
set_state (state2_2)
end
end
--<2D><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>--
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv92._170_sendLetter)
local v = find_npc_by_vnum(20379)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20379))
end
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv92._250_sayTitle)
say(gameforge.main_quest_lv92._260_say)
say_item_vnum(31010)
-- say()
-- say_reward(locale.main_quest_lv92.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20378.chat.gameforge.main_quest_lv92._170_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._270_say)
end
when 20379.chat.gameforge.main_quest_lv92._170_sendLetter begin
say_title(mob_name(20379))
say(gameforge.main_quest_lv92._280_say)
notice_multiline(gameforge.main_quest_lv92._290_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._290_2_notice,notice)
pc.give_item2(31010, 1)
set_state (state2_3)
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv92._170_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._170_sendLetter)
say(gameforge.main_quest_lv92._360_say)
end
when 20378.chat.gameforge.main_quest_lv92._170_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31010) >= 1 then
pc.remove_item ( 31010, pc.count_item(31010))
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._300_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._310_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._320_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._330_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._340_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._350_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 20874600))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30047),2,locale.count_postfix))
say("")
pc.give_exp2(20874600)
--pc.change_money(0)
pc.give_item2(30047, 2)
set_state (state3_1)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._270_say)
set_state (state2_2)
end
end
end
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD>1-1------------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv92._370_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._370_sendLetter)
say(gameforge.main_quest_lv92._380_say)
end
when 20378.chat.gameforge.main_quest_lv92._370_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv92._390_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._400_say)
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv92._370_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._370_sendLetter)
say(gameforge.main_quest_lv92._410_say)
end
when 20380.chat.gameforge.main_quest_lv92._370_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv92._420_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._430_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv92._440_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._450_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv92._460_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._470_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv92._480_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._490_say)
set_state (state3_3)
end
end
state state3_3 begin
when letter begin
q.set_counter_name("<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
send_letter(gameforge.main_quest_lv92._370_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv92._500_sayTitle)
say(gameforge.main_quest_lv92._510_say)
say_item_vnum(31022)
say(gameforge.main_quest_lv90._1180_say)
local remain_item = 10 - pc.count_item(31022)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
say_reward(string.format("%s: %d %s",item_name(31022),remain_item,locale.count_postfix))
-- say()
-- say_reward(locale.main_quest_lv92.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20380.chat.gameforge.main_quest_lv92._370_sendLetter begin
if pc.count_item(31022) >= 10 then
pc.remove_item ( 31022, pc.count_item(31022))
say_title(mob_name(20380))
say(gameforge.main_quest_lv92._540_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 34874000))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27992),2,locale.count_postfix))
say("")
pc.give_exp2(34874000)
--pc.change_money(0)
pc.give_item2(27992, 1)
pc.give_item2(27992, 1)
set_state (state4_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_lv92._520_say)
end
end
when 3490.kill or 3491.kill begin
if number(1,500) == 1 then
if pc.count_item(31022) < 10 then
pc.give_item2(31022, 1)
local remain_item = 10 - pc.count_item(31022)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
if pc.count_item(31022) >= 10 then
notice_multiline(gameforge.main_quest_lv92._530_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._530_2_notice,notice)
set_state (state3_4)
end
end
end
end
end
state state3_4 begin
when letter begin
q.set_counter_name("")
send_letter(gameforge.main_quest_lv92._370_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._370_sendLetter)
say(gameforge.main_quest_lv92._550_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3490.kill or 3491.kill begin
if number(1,500) == 1 then
if pc.count_item(31022) < 10 then
pc.give_item2(31022, 1)
if pc.count_item(31022) >= 10 then
notice_multiline(gameforge.main_quest_lv92._530_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._530_2_notice,notice)
end
end
end
end
when 20380.chat.gameforge.main_quest_lv92._370_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31022) >= 10 then
pc.remove_item ( 31022, pc.count_item(31022))
say_title(mob_name(20380))
say(gameforge.main_quest_lv92._540_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 34874000))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27992),2,locale.count_postfix))
say("")
pc.give_exp2(34874000)
--pc.change_money(0)
pc.give_item2(27992, 1)
pc.give_item2(27992, 1)
set_state (state4_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_lv92._520_say)
set_state (state3_3)
end
end
end
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
------------------------------------<2D>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv92._560_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._560_sendLetter)
say(gameforge.main_quest_lv92._570_say)
end
when 20378.chat.gameforge.main_quest_lv92._560_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv92._580_say)
wait()
say(gameforge.main_quest_lv92._590_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv92._600_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 24911280))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27993),2,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv92._610_say)
pc.give_exp2(24911280)
--pc.change_money(0)
pc.give_item2(27993, 1)
pc.give_item2(27993, 1)
clear_letter()
set_quest_state ("main_quest_lv93", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@@ -1,715 +0,0 @@
quest main_quest_lv93 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 93 begin
set_state (state1_1)
end
end
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-1------------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._010_sendLetter)
say(gameforge.main_quest_lv93._020_say)
end
when 20378.chat.gameforge.main_quest_lv93._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv93._030_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv93._040_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._050_say)
set_state (state1_2)
end
end
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv93._010_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._010_sendLetter)
say(gameforge.main_quest_lv93._130_say)
end
when 20380.chat.gameforge.main_quest_lv93._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._060_say)
wait()
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._070_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._080_say)
set_state (state1_3)
end
end
--<2D><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>--
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv93._010_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv93._090_sayTitle)
say(gameforge.main_quest_lv93._100_say)
say_item_vnum(31029)
-- say()
-- say_reward(locale.main_quest_lv93.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20380.chat.gameforge.main_quest_lv93._010_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._110_say)
end
when 3191.kill begin
if number(1,1000) == 1 then
if pc.count_item(31029) < 1 then
pc.give_item2(31029, 1)
if pc.count_item(31029) >= 1 then
notice_multiline(gameforge.main_quest_lv93._120_1_notice,notice)
set_state (state1_4)
end
end
end
end
end
state state1_4 begin
when letter begin
send_letter(gameforge.main_quest_lv93._010_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._010_sendLetter)
say(gameforge.main_quest_lv93._130_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3191.kill begin
if number(1,1000) == 1 then
if pc.count_item(31029) < 1 then
pc.give_item2(31029, 1)
if pc.count_item(31029) >= 1 then
notice_multiline(gameforge.main_quest_lv93._120_1_notice,notice)
set_state (state1_4)
end
end
end
end
when 20380.chat.gameforge.main_quest_lv93._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31029) >= 1 then
pc.remove_item ( 31029, pc.count_item(31029))
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._140_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 27874422))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27994),1,locale.count_postfix))
say("")
pc.give_exp2(27874422)
--pc.change_money(0)
pc.give_item2(27994, 1)
set_state (state2_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._110_say)
set_state (state1_3)
end
end
end
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-2------------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._150_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._150_sendLetter)
say(gameforge.main_quest_lv93._160_say)
end
when 20380.chat.gameforge.main_quest_lv93._150_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._170_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._180_say)
set_state (state2_2)
end
end
--<2D><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>--
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv93._150_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv93._190_sayTitle)
say(gameforge.main_quest_lv93._200_say)
say_item_vnum(31030)
-- say()
-- say_reward(locale.main_quest_lv93.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20380.chat.gameforge.main_quest_lv93._150_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._210_say)
end
when 3791.kill begin
if number(1,1000) == 1 then
if pc.count_item(31030) < 1 then
pc.give_item2(31030, 1)
if pc.count_item(31030) >= 1 then
notice_multiline(gameforge.main_quest_lv93._220_1_notice,notice)
notice_multiline(gameforge.main_quest_lv93._220_2_notice,notice)
set_state (state2_3)
end
end
end
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv93._150_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._150_sendLetter)
say(gameforge.main_quest_lv93._230_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3791.kill begin
if number(1,1000) == 1 then
if pc.count_item(31030) < 1 then
pc.give_item2(31030, 1)
if pc.count_item(31030) >= 1 then
notice_multiline(gameforge.main_quest_lv93._220_1_notice,notice)
notice_multiline(gameforge.main_quest_lv93._220_2_notice,notice)
set_state (state2_3)
end
end
end
end
when 20380.chat.gameforge.main_quest_lv93._150_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31030) >= 1 then
pc.remove_item ( 31030, pc.count_item(31030))
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._240_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 28914020))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 302000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30048),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50819),10,locale.count_postfix))
say("")
pc.give_exp2(28914020)
pc.change_money(302000)
pc.give_item2(30048, 1)
pc.give_item2(50819, 10)
set_state (state3_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._210_say)
set_state (state2_2)
end
end
end
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-3------------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._250_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._250_sendLetter)
say(gameforge.main_quest_lv93._260_say)
end
when 20380.chat.gameforge.main_quest_lv93._250_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv93._270_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._280_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv93._290_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._300_say)
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv93._250_sendLetter)
local v = find_npc_by_vnum(20008)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20008))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._310_sayTitle)
say(gameforge.main_quest_lv93._320_say)
end
when 20008.chat.gameforge.main_quest_lv93._250_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20008))
say(gameforge.main_quest_lv93._330_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._340_say)
wait()
say_title(mob_name(20008))
say(gameforge.main_quest_lv93._350_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._360_say)
wait()
say_title(mob_name(20008))
say(gameforge.main_quest_lv93._370_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 17904600))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 30000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71094),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72024),1,locale.count_postfix))
say("")
pc.give_exp2(17904600)
pc.change_money(30000)
pc.give_item2(71094, 1)
pc.give_item2_select(72024)
set_state (state3_3)
clear_letter()
local cur_t = get_global_time()
pc.setf("main_quest_lv93","ockgu_access_time",cur_t)
end
end
state state3_3 begin
when login with get_global_time() - pc.getf("main_quest_lv93","ockgu_access_time") >= 24*60*60 begin
set_state (state4_1)
end
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
if get_global_time() - pc.getf("main_quest_lv93","ockgu_access_time") >= 24*60*60 then
set_state (state4_1)
else
say_title(mob_name(20008))
say(gameforge.main_quest_lv93._390_say)
end
end
end
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
------------------------------------<2D><><EFBFBD>°<EFBFBD>ȭ1-4-----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._400_npcChat)
local v = find_npc_by_vnum(20008)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20008))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._400_npcChat)
say(gameforge.main_quest_lv93._410_say)
end
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._420_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._430_say)
wait()
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._440_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._450_say)
wait()
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._460_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._470_say)
wait()
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._480_say)
set_state (state4_2)
end
end
-- <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv93._400_npcChat)
q.set_counter_name(gameforge.main_quest_lv94._1080_say)
end
when button or info begin
say_title(gameforge.main_quest_lv93._490_sayTitle)
say(gameforge.main_quest_lv93._500_say)
say_item_vnum_inline(50724,0,3)
say_item_vnum_inline(50726,1,3)
say_item_vnum_inline(50707,2,3)
local remain1 = 200 - pc.count_item(50724)
local remain2 = 200 - pc.count_item(50726)
local remain3 = 200 - pc.count_item(50707)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
if remain3 < 0 then
remain3 = 0
end
say(string.format(gameforge.main_quest_lv93._630_say,item_name(50724) ,remain1,item_name(50726) ,remain2,item_name(50707) , remain3))
q.set_counter_value(remain1 + remain2 + remain3)
if remain1 + remain2 + remain3 == 0 then
notice_multiline(gameforge.main_quest_lv93._650_1_notice,notice)
notice_multiline(gameforge.main_quest_lv93._650_2_notice,notice)
end
end
--[[
when 50724.pick or 50724.take or 50726.pick or 50726.take or 50707.pick or 50707.take begin
local remain1 = 200 - pc.count_item(50724)
local remain2 = 200 - pc.count_item(50726)
local remain3 = 200 - pc.count_item(50707)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
end
]]--
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
if pc.count_item(50724) >= 200 and pc.count_item(50726) >= 200 and pc.count_item(50707) >= 200 then
pc.remove_item ( 50724,200)
pc.remove_item ( 50726,200)
pc.remove_item ( 50707,200)
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._520_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._530_say)
set_state (state4_3)
clear_letter()
local cur_t = get_global_time()
pc.setf("main_quest_lv93","item4_make_start_time",cur_t)
else
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._640_say)
end
end
end
state state4_3 begin
when login with get_global_time() - pc.getf("main_quest_lv93","item4_make_start_time") >= 24*60*60 begin
set_state (state4_4)
q.set_counter_name("")
end
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._540_say)
end
end
state state4_4 begin
when letter begin
send_letter(gameforge.main_quest_lv93._400_npcChat)
local v = find_npc_by_vnum(20008)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20008))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._400_npcChat)
say(gameforge.main_quest_lv93._550_say)
end
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._560_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._570_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 31374000))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(31031),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50706),20,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72301),5,locale.count_postfix))
say("")
pc.give_exp2(31374000)
--pc.change_money(0)
pc.give_item2(31031, 1)
pc.give_item2(50706, 20)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
set_state (state5_1)
end
end
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
------------------------------------<2D>ž<EFBFBD> <20><><EFBFBD><EFBFBD>1-1-----------------------------------
state state5_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._580_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._580_sendLetter)
say(gameforge.main_quest_lv93._590_say)
end
when 20380.chat.gameforge.main_quest_lv93._580_sendLetter begin
target.delete("__TARGET__")
pc.remove_item(31031,pc.count_item(31031))
say_title(mob_name( 20380))
say(gameforge.main_quest_lv93._600_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._610_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 19920820))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 335000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72723),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70050),1,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv93._620_say)
pc.give_exp2(19920820)
pc.change_money(335000)
pc.give_item2(72723, 1)
pc.give_item2_select(70050)
item.set_socket(2, 120)
clear_letter()
set_quest_state ("main_quest_lv94", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

File diff suppressed because it is too large Load Diff

View File

@@ -1,731 +0,0 @@
quest main_quest_lv95 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 95 begin
set_state (state1_1)
end
end
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>------------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._010_sendLetter)
say(gameforge.main_quest_lv95._020_say)
end
when 20378.chat.gameforge.main_quest_lv95._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._030_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._040_say)
wait()
set_state (state1_2)
end
end
--<2D><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._010_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv95._070_sayTitle)
say(gameforge.main_quest_lv95._080_say)
--say_item_vnum(31015)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ƿԴ<C6BF>.--
when 20378.chat.gameforge.main_quest_lv95._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._090_say)
say("")
end
when 3904.kill begin
if pc.count_item(31015) < 1 then
pc.give_item2 ( 31015, 1 )
notice_multiline(gameforge.main_quest_lv95._100_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._100_2_notice,notice)
notice_multiline(gameforge.main_quest_lv95._750_say,notice)
set_state (state1_3)
end
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv95._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._010_sendLetter)
say(gameforge.main_quest_lv95._110_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3904.kill begin
if pc.count_item(31015) < 1 then
pc.give_item2 ( 31015, 1 )
notice_multiline(gameforge.main_quest_lv95._100_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._100_2_notice,notice)
notice_multiline(gameforge.main_quest_lv95._750_say,notice)
end
end
when 20378.chat.gameforge.main_quest_lv95._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31015) >= 1 then
pc.remove_item ( 31015, pc.count_item(31015))
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._120_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._140_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._150_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._170_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 27532396))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 302000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27994),1,locale.count_postfix))
say("")
pc.give_exp2(27532396)
pc.change_money(302000)
pc.give_item2(27994, 1)
set_state (state2_1)
else --<2D>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Դ<EFBFBD>.
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._090_say)
say("")
set_state (state1_2)
end
end
end
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._180_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._180_sendLetter)
say(gameforge.main_quest_lv95._190_say)
end
when 20378.chat.gameforge.main_quest_lv95._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._200_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._220_say)
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._180_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv95._230_sayTitle)
say(gameforge.main_quest_lv95._240_say)
say_item_vnum(31037)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20378.chat.gameforge.main_quest_lv95._180_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._250_say)
end
when 3890.kill begin
if pc.count_item(31037) < 1 then
if number (1,5) == 1 then
if pc.count_item(31037) < 1 then
pc.give_item2 ( 31037, 1 )
end
notice_multiline(gameforge.main_quest_lv95._260_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._260_2_notice,notice)
set_state (state2_3)
end
end
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv95._180_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._180_sendLetter)
say(gameforge.main_quest_lv95._270_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3890.kill begin
if pc.count_item(31037) < 1 then
if number (1,5) == 1 then
if pc.count_item(31037) < 1 then
pc.give_item2 ( 31037, 1 )
end
notice_multiline(gameforge.main_quest_lv95._260_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._260_2_notice,notice)
end
end
end
when 20378.chat.gameforge.main_quest_lv95._180_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31037) >= 1 then
pc.remove_item ( 31037, pc.count_item(31037))
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._280_say)
wait()
say(gameforge.main_quest_lv95._290_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._300_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._310_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 29032586))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30048),1,locale.count_postfix))
say("")
pc.give_exp2(29032586)
--pc.change_money(0)
pc.give_item2(30048, 1)
set_state (state3_1)
else -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._250_say)
set_state (state2_2)
end
end
end
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
------------------------------------<2D><><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>------------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._320_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._320_sendLetter)
say(gameforge.main_quest_lv95._330_say)
end
when 20378.chat.gameforge.main_quest_lv95._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._340_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._350_say)
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._320_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv95._370_sayTitle)
say(gameforge.main_quest_lv95._380_say)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20378.chat.gameforge.main_quest_lv95._320_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._390_say)
end
when 3891.kill begin
notice_multiline(gameforge.main_quest_lv95._400_notice,notice)
say(gameforge.main_quest_lv95._410_say)
wait()
say(gameforge.main_quest_lv95._420_say)
set_state (state3_3)
end
end
state state3_3 begin
when letter begin
send_letter(gameforge.main_quest_lv95._320_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._320_sendLetter)
say(gameforge.main_quest_lv95._430_say)
end
when 20378.chat.gameforge.main_quest_lv95._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._440_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._450_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._460_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 33003907))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71094),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72024),1,locale.count_postfix))
say("")
pc.give_exp2(33003907)
--pc.change_money(0)
pc.give_item2(71094, 1)
pc.give_item2_select(72024)
item.set_socket(2, 180)
set_state (state4_1)
end
end
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-1-----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._470_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._470_sendLetter)
say(gameforge.main_quest_lv95._480_say)
end
when 20378.chat.gameforge.main_quest_lv95._470_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._490_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._510_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._520_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._530_say)
set_state (state4_2)
end
end
-- <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._470_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv95._540_sayTitle)
say(gameforge.main_quest_lv95._550_say)
say_item_vnum(31043)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
-- Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC> --
when 20378.chat.gameforge.main_quest_lv95._470_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._560_say)
end
when 3303.kill begin
if pc.count_item(31043) < 1 then
if number (1,5) == 1 then
pc.give_item2 ( 31043, 1 )
notice_multiline(gameforge.main_quest_lv95._570_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._570_2_notice,notice)
set_state (state4_3)
end
end
end
end
state state4_3 begin
when letter begin
send_letter(gameforge.main_quest_lv95._470_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._470_sendLetter)
say(gameforge.main_quest_lv95._580_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3303.kill begin
if pc.count_item(31043) < 1 then
if number (1,5) == 1 then
pc.give_item2 ( 31043, 1 )
notice_multiline(gameforge.main_quest_lv95._570_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._570_2_notice,notice)
end
end
end
when 20378.chat.gameforge.main_quest_lv95._470_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31043) >= 1 then
pc.remove_item ( 31043, pc.count_item(31043))
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._590_say)
wait()
say_reward(gameforge.main_quest_lv95._600_sayReward)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._610_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._620_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 30943586))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 335000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72301),5,locale.count_postfix))
say("")
pc.give_exp2(30943586)
pc.change_money(335000)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
set_state (state5_1)
else
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._560_say)
set_state (state4_2)
end
end
end
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
------------------------------------õ<><C3B5><EFBFBD><EFBFBD> <20><>ȭ1-2-----------------------------------
-- <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> --
state state5_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._630_sendLetter)
q.set_counter_name(gameforge.main_quest_lv95._760_say)
end
when button or info begin
if pc.get_map_index() == 1 then
addmapsignal(500 * 100, 500 * 100)
addmapsignal(600 * 100, 500 * 100)
addmapsignal(700 * 100, 300 * 100)
end
say_title(gameforge.main_quest_lv95._640_sayTitle)
say(gameforge.main_quest_lv95._650_say)
say_item_vnum(31043)
say(gameforge.main_quest_lv95._760_say)
local remain = 2 - pc.count_item(31043)
if remain < 0 then
remain = 0
end
say_reward(string.format(gameforge.main_quest_lv95._770_sayReward,item_name(31043),remain))
q.set_counter_value(remain)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
-- Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC> --
when 20378.chat.gameforge.main_quest_lv95._630_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._660_say)
end
when 3303.kill begin
if pc.count_item(31043) < 2 then
if number (1,4) == 1 then
pc.give_item2 ( 31043, 1 )
local remain = 2 - pc.count_item(31043)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.count_item(31043) >= 2 then
set_state (state5_2)
end
end
end
end
end
state state5_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._630_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv95._630_sendLetter)
say(gameforge.main_quest_lv95._670_say)
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3303.kill begin
if pc.count_item(31043) < 2 then
if number (1,4) == 1 then
pc.give_item2 ( 31043, 1 )
end
end
end
when 20378.chat.gameforge.main_quest_lv95._630_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31043) >= 2 then
pc.remove_item ( 31043, pc.count_item(31043))
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._680_say)
wait()
say_reward(gameforge.main_quest_lv95._690_sayReward)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._700_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._710_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._720_say)
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 31932545))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 337000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72723),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70050),1,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv95._740_say)
pc.give_exp2(31932545)
pc.change_money(337000)
pc.give_item2(72723, 1)
pc.give_item2(70050, 1)
clear_letter()
set_quest_state ("main_quest_lv96", "state0")
set_state (__COMPLETE__)
else
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._660_say)
set_state (state5_1)
end
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@@ -1,750 +0,0 @@
quest main_quest_lv96 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 96 begin
set_state (state1_1)
end
end
------------------------------------<2D><><EFBFBD>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD>1-1------------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv96._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._010_sendLetter)
say(gameforge.main_quest_lv96._020_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._030_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._060_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv96._070_say)
say("")
set_state (state1_2)
end
end
--<2D><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv96._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv96._570_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv96._080_sayTitle)
say(gameforge.main_quest_lv96._090_say)
say("")
say_item_vnum(31038)
say(gameforge.main_quest_lv96._570_counterName)
local remain = 100 - pc.count_item(31038)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward,item_name(31038),remain))
-- say()
-- say_reward(locale.main_quest_lv96.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ƿԴ<C6BF>.--
when 20378.chat.gameforge.main_quest_lv96._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._100_say)
say("")
end
when 3701.kill or 3702.kill or 3703.kill or 3704.kill or 3705.kill or 3790.kill or 3791.kill begin
if pc.count_item(31038) < 100 then
if number (1,50) == 1 then
pc.give_item2 ( 31038, 1 )
local remain = 100 - pc.count_item(31038)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.count_item(31038) >= 100 then
notice_multiline(gameforge.main_quest_lv96._110_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._110_2_notice,notice)
set_state (state1_3)
end
end
end
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv96._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv96._010_sendLetter)
say(gameforge.main_quest_lv96._120_say)
say("")
say("")
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3701.kill or 3702.kill or 3703.kill or 3704.kill or 3705.kill or 3790.kill or 3791.kill begin
if pc.count_item(31038) < 100 then
if number (1,50) == 1 then
pc.give_item2 ( 31038, 1 )
if pc.count_item(31038) >= 100 then
notice_multiline(gameforge.main_quest_lv96._110_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._110_2_notice,notice)
end
end
end
end
when 20378.chat.gameforge.main_quest_lv96._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31038) >= 100 then
pc.remove_item ( 31038, pc.count_item(31038))
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._130_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 39032537))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 346000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30051),1,locale.count_postfix))
say("")
pc.give_exp2(39032537)
pc.change_money(346000)
pc.give_item2(30051, 1)
set_state (state2_1)
else --<2D>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Դ<EFBFBD>.
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._100_say)
say("")
set_state (state1_2)
end
end
end
------------------------------------<2D><><EFBFBD>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD>1-2------------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._140_sendLetter)
say(gameforge.main_quest_lv96._150_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._140_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._160_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv96._190_say)
say("")
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
q.set_counter_name(gameforge.main_quest_lv96._570_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv96._200_sayTitle)
say(gameforge.main_quest_lv96._210_say)
say("")
say_item_vnum_inline(31039,0,2)
say_item_vnum_inline(31040,1,2)
say(gameforge.main_quest_lv96._570_counterName)
local remain1 = 1 - pc.count_item(31039)
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.count_item(31040)
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
say_reward(string.format(gameforge.main_quest_lv96._580_sayReward,item_name(31039),remain1))
say_reward(string.format(gameforge.main_quest_lv96._580_sayReward,item_name(31040),remain2))
-- say()
-- say_reward(locale.main_quest_lv96.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20378.chat.gameforge.main_quest_lv96._140_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._220_say)
say("")
end
when 3801.kill or 3802.kill or 3803.kill or 3804.kill or 3805.kill or 3890.kill or 3891.kill begin
if pc.count_item(31039) < 1 or pc.count_item(31040) < 1 then
if number (1,100) == 1 then
if pc.count_item(31039) < 1 then
pc.give_item2 ( 31039, 1 )
end
if pc.count_item(31040) < 1 then
pc.give_item2 ( 31040, 1 )
end
local remain1 = 1 - pc.count_item(31039)
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.count_item(31040)
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
notice_multiline(gameforge.main_quest_lv96._230_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._230_2_notice,notice)
set_state (state2_3)
end
end
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv96._140_sendLetter)
say(gameforge.main_quest_lv96._240_say)
say("")
say("")
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3801.kill or 3802.kill or 3803.kill or 3804.kill or 3805.kill or 3890.kill or 3891.kill begin
if pc.count_item(31039) < 1 or pc.count_item(31040) < 1 then
if number (1,100) == 1 then
if pc.count_item(31039) < 1 then
pc.give_item2 ( 31039, 1 )
end
if pc.count_item(31040) < 1 then
pc.give_item2 ( 31040, 1 )
end
notice_multiline(gameforge.main_quest_lv96._230_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._230_2_notice,notice)
end
end
end
when 20378.chat.gameforge.main_quest_lv96._140_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31039) >= 1 and pc.count_item(31040) >= 1 then
pc.remove_item ( 31039, pc.count_item(31039))
pc.remove_item ( 31040, pc.count_item(31040))
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._250_say)
say("")
set_state (state2_4)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._220_say)
say("")
set_state (state2_2)
end
end
end
--<2D><><EFBFBD>ڿ<EFBFBD><DABF>Է<EFBFBD>
state state2_4 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._140_sendLetter)
say(gameforge.main_quest_lv96._260_say)
say("")
say("")
end
when 20380.chat.gameforge.main_quest_lv96._140_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_lv96._270_say)
say("")
wait()
say_title(mob_name(20380))
say(gameforge.main_quest_lv96._290_say)
say("")
set_state (state2_5)
end
end
--<2D>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5BFA1>
state state2_5 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._140_sendLetter)
say(gameforge.main_quest_lv96._240_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._140_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._590_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 40732586))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 357000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72016),1,locale.count_postfix))
say("")
pc.give_exp2(40732586)
pc.change_money(357000)
pc.give_item2_select(72016)
item.set_socket(2, 120)
set_state (state3_1)
end
end
------------------------------------<2D><><EFBFBD>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD>1-3------------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv96._300_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._300_sendLetter)
say(gameforge.main_quest_lv96._310_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._300_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._320_say)
say("")
wait()
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(31073),1,locale.count_postfix))
say("")
wait()
if pc.count_item(31073) < 1 then
pc.give_item2(31073,1)
end
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._330_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv96._340_say)
say("")
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv96._300_sendLetter)
q.set_counter_name(gameforge.main_quest_lv96._570_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv96._350_sayTitle)
say(gameforge.main_quest_lv96._360_say)
say("")
say_item_vnum(31039)
say(gameforge.main_quest_lv96._570_counterName)
local remain = 100 - pc.getqf("checked_pocket")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv96._580_sayReward,item_name(31039),remain))
-- say()
-- say_reward(locale.main_quest_lv96.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
when 31073.use begin
affect.add(apply.CON, 10, 60 * 60)
affect.add(apply.INT, 10, 60 * 60)
affect.add(apply.STR, 10, 60 * 60)
affect.add(apply.DEX, 10, 60 * 60)
pc.remove_item(31073,1)
end
when 3801.kill or 3802.kill or 3803.kill or 3804.kill or 3805.kill or 3890.kill or 3891.kill begin
if number (1,100) == 1 then
pc.give_item2 ( 31039, 1 )
notice_multiline(gameforge.main_quest_lv96._620_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._620_2_notice,notice)
end
end
when 20380.chat.gameforge.main_quest_lv96._300_sendLetter with pc.count_item(31039) > 0 begin
pc.remove_item (31039, 1)
if number(1,100) <= 70 then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv96._370_say)
say("")
local checked = pc.getqf("checked_pocket")
pc.setqf("checked_pocket", checked + 1)
local remain = 100 - pc.getqf("checked_pocket")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.getqf("checked_pocket") >= 100 then
pc.remove_item ( 31039, pc.count_item(31039))
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv96._380_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 42983593))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30009),2,locale.count_postfix))
say("")
pc.give_exp2(42983593)
--pc.change_money(0)
pc.give_item2(30009, 2)
set_state (state4_1)
else
say(string.format(gameforge.main_quest_lv96._390_say,remain))
say("")
end
else -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv96._630_say)
say("")
end
end
end
------------------------------------<2D><><EFBFBD>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD>1-4-----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv96._400_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._400_sendLetter)
say(gameforge.main_quest_lv96._410_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._400_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._420_say)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._430_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv96._450_say)
say("")
set_state (state4_2)
end
end
-- <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv96._400_sendLetter)
q.set_counter_name(gameforge.main_quest_lv96._480_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv96._460_sayTitle)
say(gameforge.main_quest_lv96._470_say)
say("")
say_title(gameforge.main_quest_lv96._480_counterName)
local remain1 = 1 - pc.getqf("kill_tree1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("kill_tree2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("kill_tree3")
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
say_reward(string.format(gameforge.main_quest_lv96._490_say,mob_name(3911) ,remain1, mob_name(3912),remain2 , mob_name(3913),remain3))
say("")
-- say()
-- say_reward(locale.main_quest_lv96.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
-- Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC> --
when 20378.chat.gameforge.main_quest_lv96._400_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._500_say)
say("")
end
when 3911.kill begin
pc.setqf("kill_tree1",1)
if pc.getqf("kill_tree1") == 1 and pc.getqf("kill_tree2") == 1 and pc.getqf("kill_tree3") == 1 then
notice_multiline(gameforge.main_quest_lv96._510_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._510_2_notice,notice)
set_state (state4_3)
end
local remain1 = 1 - pc.getqf("kill_tree1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("kill_tree2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("kill_tree3")
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
end
when 3912.kill begin
pc.setqf("kill_tree2",1)
if pc.getqf("kill_tree1") == 1 and pc.getqf("kill_tree2") == 1 and pc.getqf("kill_tree3") == 1 then
notice_multiline(gameforge.main_quest_lv96._510_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._510_2_notice,notice)
set_state (state4_3)
end
local remain1 = 1 - pc.getqf("kill_tree1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("kill_tree2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("kill_tree3")
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
end
when 3913.kill begin
pc.setqf("kill_tree3",1)
if pc.getqf("kill_tree1") == 1 and pc.getqf("kill_tree2") == 1 and pc.getqf("kill_tree3") == 1 then
notice_multiline(gameforge.main_quest_lv96._510_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._510_2_notice,notice)
set_state (state4_3)
end
local remain1 = 1 - pc.getqf("kill_tree1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("kill_tree2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("kill_tree3")
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
end
end
state state4_3 begin
when letter begin
send_letter(gameforge.main_quest_lv96._400_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv96._400_sendLetter)
say(gameforge.main_quest_lv96._520_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._400_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._530_say)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._550_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 44941086))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 379000))
say("")
say_title(gameforge.main_quest_lv96._560_sayTitle)
pc.give_exp2(44941086)
pc.change_money(379000)
clear_letter()
if pc.count_item(31073) > 1 then
pc.remove_item(31073,pc.count_item(31073))
end
set_quest_state ("main_quest_lv97", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@@ -1,657 +0,0 @@
quest main_quest_lv97 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 97 begin
set_state (state1_1)
end
end
----------------------------------õ<><C3B5><EFBFBD>ų<EFBFBD> óġ----------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv97._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._010_sendLetter)
say(gameforge.main_quest_lv97._020_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._030_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._040_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._050_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._060_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._070_say)
say("")
set_state (state1_2)
end
end
--<2D><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv97._010_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv97._080_sayTitle)
say(gameforge.main_quest_lv97._090_say)
-- say("")
-- say_reward(locale.main_quest_lv97.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ƿԴ<C6BF>.--
when 20378.chat.gameforge.main_quest_lv97._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._650_say)
end
when 3905.kill begin
if pc.count_item(31074) < 1 then
pc.give_item2 ( 31074, 1 )
end
notice_multiline(gameforge.main_quest_lv97._100_notice,notice)
say(gameforge.main_quest_lv97._110_say)
say("")
wait()
say(gameforge.main_quest_lv97._120_say)
say("")
set_state (state1_3)
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv97._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._010_sendLetter)
say(gameforge.main_quest_lv97._130_say)
say("")
say("")
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3905.kill begin
if pc.count_item(31074) < 1 then
pc.give_item2 ( 31074, 1 )
end
notice_multiline(gameforge.main_quest_lv97._100_notice,notice)
say(gameforge.main_quest_lv97._110_say)
say("")
wait()
say(gameforge.main_quest_lv97._120_say)
say("")
end
when 20378.chat.gameforge.main_quest_lv97._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31074) >= 1 then
pc.remove_item ( 31074, pc.count_item(31074))
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._140_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._150_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._160_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._190_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 45941088))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30045),2,locale.count_postfix))
say("")
pc.give_exp2(45941088)
--pc.change_money(0)
pc.give_item2(30045, 2)
set_state (state2_1)
else --<2D>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Դ<EFBFBD>.
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._650_say)
set_state (state1_2)
end
end
end
---------------------------------- <20>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ----------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv97._200_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._200_sendLetter)
say(gameforge.main_quest_lv97._210_say)
say("")
say("")
end
when 20377.chat.gameforge.main_quest_lv97._200_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._220_say)
say("")
wait()
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._230_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._260_say)
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv97._200_sendLetter)
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._270_sayTitle)
say(gameforge.main_quest_lv97._280_say)
say("")
say_item_vnum(31041)
say("")
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20377.chat.gameforge.main_quest_lv97._200_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._290_say)
say("")
end
when 20001.chat.gameforge.main_quest_lv97._200_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.main_quest_lv97._660_say)
if pc.count_item(31041) < 1 then
pc.give_item2(31041, 1)
notice_multiline(gameforge.main_quest_lv97._300_notice,notice)
end
set_state (state2_3)
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv97._200_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._200_sendLetter)
say(gameforge.main_quest_lv97._300_notice)
say("")
say("")
end
when 20377.chat.gameforge.main_quest_lv97._200_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31041) >= 1 then
pc.remove_item ( 31041, pc.count_item(31041))
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._310_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 41032531))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format ("%s: %d %s", item_name(71001),3,locale.count_postfix))
say("")
pc.give_exp2(41032531)
--pc.change_money(0)
pc.give_item2(71001, 3)
set_state (state3_1)
else -- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߷ȴ<DFB7>.
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._170_say)
say("")
set_state (state2_2)
end
end
end
---------------------------------- <20>Ĺ<EFBFBD> Ȱ<><C8B0> Ȯ<><C8AE>----------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv97._320_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._320_sendLetter)
say(gameforge.main_quest_lv97._330_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._340_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._350_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._370_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._380_say)
say("")
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv97._320_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv97._390_sayTitle)
say(gameforge.main_quest_lv97._400_say)
say("")
say_title(gameforge.main_quest_lv97._670_counterName)
local remain1 = 2 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("mob3_3_kill")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 1 - pc.getqf("mob3_4_kill")
if remain4 < 0 then
remain4 = 0
end
q.set_counter_value(remain1 + remain2 + remain3 + remain4)
say_reward(string.format(gameforge.main_quest_lv97._680_sayReward,mob_name(3907),remain1,mob_name(3908),remain2))
say_reward(string.format(gameforge.main_quest_lv97._680_sayReward,mob_name(3909),remain3,mob_name(3910),remain4))
-- say("")
-- say_reward(locale.main_quest_lv97.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
when 20378.chat.gameforge.main_quest_lv97._320_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._410_say)
say("")
end
function kill_count()
local remain1 = 2 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("mob3_3_kill")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 1 - pc.getqf("mob3_4_kill")
if remain4 < 0 then
remain4 = 0
end
local total_remain = remain1 + remain2 + remain3 + remain4
q.set_counter_value(total_remain)
return total_remain
end
when 3907.kill begin
pc.setqf("mob3_1_kill",pc.getqf("mob3_1_kill") + 1)
if main_quest_lv97.kill_count() == 0 then
notice_multiline(gameforge.main_quest_lv97._690_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._690_2_notice,notice)
set_state (state3_3)
end
end
when 3908.kill begin
pc.setqf("mob3_2_kill",pc.getqf("mob3_2_kill") + 1)
if main_quest_lv97.kill_count() == 0 then
notice_multiline(gameforge.main_quest_lv97._690_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._690_2_notice,notice)
set_state (state3_3)
end
end
when 3909.kill begin
pc.setqf("mob3_3_kill",pc.getqf("mob3_3_kill") + 1)
if main_quest_lv97.kill_count() == 0 then
notice_multiline(gameforge.main_quest_lv97._690_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._690_2_notice,notice)
set_state (state3_3)
end
end
when 3910.kill begin
pc.setqf("mob3_4_kill",pc.getqf("mob3_4_kill") + 1)
if main_quest_lv97.kill_count() == 0 then
notice_multiline(gameforge.main_quest_lv97._690_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._690_2_notice,notice)
set_state (state3_3)
end
end
end
state state3_3 begin
when letter begin
send_letter(gameforge.main_quest_lv97._320_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv97._320_sendLetter)
say(gameforge.main_quest_lv97._420_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._430_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 47898648))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 214000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30033),3,locale.count_postfix))
say("")
pc.give_exp2(47898648)
pc.change_money(214000)
pc.give_item2(30033, 3)
set_state (state4_1)
end
end
---------------------------------- <20><>ȣ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD> <20><><EFBFBD><EFBFBD>, õ<><C3B5><EFBFBD>ų<EFBFBD>----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv97._440_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._440_sendLetter)
say(gameforge.main_quest_lv97._450_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._440_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._460_say)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._480_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._490_say)
say("")
set_state (state4_2)
end
end
-- <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv97._440_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv97._700_sayTitle)
say(gameforge.main_quest_lv97._710_say)
end
-- Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC> --
when 20378.chat.gameforge.main_quest_lv97._440_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._530_say)
say("")
end
when 3910.kill begin
notice_multiline(gameforge.main_quest_lv97._550_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._550_2_notice,notice)
set_state (state4_3)
end
end
-- <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> --
state state4_3 begin
when letter begin
send_letter(gameforge.main_quest_lv97._440_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv97._510_sayTitle)
say(gameforge.main_quest_lv97._520_say)
say("")
end
-- Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC> --
when 20378.chat.gameforge.main_quest_lv97._440_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._540_say)
say("")
end
when 3906.kill begin -- õ<><C3B5><EFBFBD>ų<EFBFBD> óġ
notice_multiline(gameforge.main_quest_lv97._560_notice,notice)
say(gameforge.main_quest_lv97._570_say)
say("")
wait()
say(gameforge.main_quest_lv97._580_say)
say("")
if pc.count_item(31017) < 1 then
pc.give_item2(31017, 1)
end
set_state (state4_4)
end
end
state state4_4 begin
when letter begin
send_letter(gameforge.main_quest_lv97._440_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._440_sendLetter)
say(gameforge.main_quest_lv97._420_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._440_sendLetter begin
pc.remove_item(31017,pc.count_item(31017))
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._590_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._600_say)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._610_say)
say("")
wait()
say_reward(gameforge.main_quest_lv97._620_sayReward)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._630_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 49586571))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 225000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70024),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30039),3,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv97._640_sayTitle)
pc.give_exp2(49586571)
pc.change_money(225000)
pc.give_item2(70024, 1)
pc.give_item2(30039, 3)
clear_letter()
set_quest_state ("main_quest_lv98", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@@ -1,774 +0,0 @@
quest main_quest_lv98 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 98 begin
set_state (state1_1)
end
end
----------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 1-1----------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._010_sendLetter)
say(gameforge.main_quest_lv98._020_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20378.chat.gameforge.main_quest_lv98._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._030_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._040_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv98._050_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._060_say)
say("")
set_state (state1_2)
end
end
--<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv98._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv98._660_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv98._540_sayTitle)
say(gameforge.main_quest_lv98._550_say)
say("")
say_item_vnum(31026)
say_title(gameforge.main_quest_lv98._660_counterName)
local remain = 100 - pc.count_item(31026)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv98._670_sayReward,item_name(31026),remain))
-- say()
-- say_reward(locale.main_quest_lv98.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ƿԴ<C6BF>.--
when 20378.chat.gameforge.main_quest_lv98._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._070_say)
say("")
end
when 3601.kill or 3602.kill or 3603.kill or 3604.kill or 3605.kill or 3690.kill or 3691.kill begin
if number (1,50) == 1 then
if pc.count_item(31026) < 100 then
pc.give_item2 ( 31026, 1 )
local remain = 100 - pc.count_item(31026)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.count_item(31026) >= 100 then
notice_multiline(gameforge.main_quest_lv98._080_1_notice, notice)
notice_multiline(gameforge.main_quest_lv98._080_2_notice,notice)
set_state (state1_3)
end
end
end
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv98._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv98._010_sendLetter)
say(gameforge.main_quest_lv98._560_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3601.kill or 3602.kill or 3603.kill or 3604.kill or 3605.kill or 3690.kill or 3691.kill begin
if number (1,50) == 1 then
if pc.count_item(31026) < 100 then
pc.give_item2 ( 31026, 1 )
if pc.count_item(31026) >= 100 then
notice_multiline(gameforge.main_quest_lv98._080_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._080_2_notice,notice)
end
end
end
end
when 20378.chat.gameforge.main_quest_lv98._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31026) >= 100 then
pc.remove_item ( 31026, pc.count_item(31026))
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._090_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 40898550))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 346000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72308),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(76011),1,locale.count_postfix))
say("")
pc.give_exp2(40898550)
pc.change_money(346000)
pc.give_item2(72308, 1)
pc.give_item2_select(76011)
item.set_socket(2, 120)
set_state (state2_1)
else --<2D>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Դ<EFBFBD>.
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._070_say)
say("")
set_state (state1_2)
end
end
end
---------------------------------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 1-2 ----------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._130_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._130_sendLetter)
say(gameforge.main_quest_lv98._140_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20378.chat.gameforge.main_quest_lv98._130_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._150_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv98._160_say)
say("")
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv98._130_sendLetter)
q.set_counter_name(gameforge.main_quest_lv98._660_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv98._130_sendLetter)
say(gameforge.main_quest_lv98._590_say)
say("")
say_item_vnum(31042)
say_title(gameforge.main_quest_lv98._660_counterName)
local remain = 100 - pc.count_item(31042)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv98._670_sayReward,item_name(31042),remain))
-- say()
-- say_reward(locale.main_quest_lv98.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>--
when 20378.chat.gameforge.main_quest_lv98._130_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._170_say)
say("")
end
when 3401.kill or 3402.kill or 3403.kill or 3404.kill or 3405.kill or 3490.kill or 3491.kill begin
if number (1,50) == 1 then
if pc.count_item(31042) < 100 then
pc.give_item2 ( 31042, 1 )
local remain = 100 - pc.count_item(31042)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.count_item(31042) >= 100 then
notice_multiline(gameforge.main_quest_lv98._180_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._180_2_notice,notice)
set_state (state2_3)
end
end
end
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv98._130_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv98._130_sendLetter)
say(gameforge.main_quest_lv98._600_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
-- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD>.
when 3401.kill or 3402.kill or 3403.kill or 3404.kill or 3405.kill or 3490.kill or 3491.kill begin
if number (1,50) == 1 then
if pc.count_item(31042) < 100 then
pc.give_item2 ( 31042, 1 )
if pc.count_item(31042) >= 100 then
notice_multiline(gameforge.main_quest_lv98._180_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._180_2_notice,notice)
end
end
end
end
when 20378.chat.gameforge.main_quest_lv98._130_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31042) >= 100 then
pc.remove_item ( 31042, pc.count_item(31042))
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._190_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 42646751))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 357000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71026),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71025),2,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70102),5,locale.count_postfix))
say("")
pc.give_exp2(42646751)
pc.change_money(357000)
pc.give_item2(71026, 1)
pc.give_item2(71025, 1)
pc.give_item2(71025, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
set_state (state3_1)
else -- <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߷ȴ<DFB7>.
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._170_say)
say("")
set_state (state2_2)
end
end
end
---------------------------------- <20><>Ȱ <20><><EFBFBD><EFBFBD>----------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._200_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._200_sendLetter)
say(gameforge.main_quest_lv98._210_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20377.chat.gameforge.main_quest_lv98._200_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._220_say)
say("")
wait()
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._260_say)
say("")
wait()
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._280_say)
say("")
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv98._200_sendLetter)
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv98._610_sayTitle)
say(gameforge.main_quest_lv98._620_say)
say("")
say(gameforge.main_quest_lv98._680_counterName)
local remain1 = 50 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
say_reward(string.format(gameforge.main_quest_lv98._690_sayReward,mob_name(3805),remain1,mob_name(3890),remain2))
-- say()
-- say_reward(locale.main_quest_lv98.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
when 20377.chat.gameforge.main_quest_lv98._200_sendLetter begin
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._300_say)
say("")
end
when 3805.kill begin
local mob3_1_kill = pc.getqf("mob3_1_kill")
if mob3_1_kill < 50 then
pc.setqf("mob3_1_kill",mob3_1_kill +1)
local remain1 = 50 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
end
if pc.getqf("mob3_1_kill") >= 50 and pc.getqf("mob3_2_kill") >= 1 then
notice_multiline(gameforge.main_quest_lv98._310_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._310_2_notice,notice)
set_state (state3_3)
end
end
when 3890.kill begin
local mob3_2_kill = pc.getqf("mob3_2_kill")
if mob3_2_kill < 1 then
pc.setqf("mob3_2_kill",1)
local remain1 = 50 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
end
if pc.getqf("mob3_1_kill") >= 50 and pc.getqf("mob3_2_kill") >= 1 then
notice_multiline(gameforge.main_quest_lv98._310_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._310_2_notice,notice)
set_state (state3_3)
end
end
end
state state3_3 begin
when letter begin
send_letter(gameforge.main_quest_lv98._200_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv98._200_sendLetter)
say(gameforge.main_quest_lv98._630_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20377.chat.gameforge.main_quest_lv98._200_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._320_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584941))
--say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30021),1,locale.count_postfix))
say("")
pc.give_exp2(48584941)
--pc.change_money(0)
pc.give_item2(30021, 1)
set_state (state4_1)
end
end
---------------------------------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>λ<EFBFBD>----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._330_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._330_sendLetter)
say(gameforge.main_quest_lv98._340_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20377.chat.gameforge.main_quest_lv98._330_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._350_say)
say("")
wait()
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._360_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv98._380_say)
say("")
set_state (state4_2)
end
end
-- <20>λ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv98._330_sendLetter)
q.set_counter_name(gameforge.main_quest_lv98._700_counterName)
local v_npc1 = find_npc_by_vnum(20381)
local v_npc2 = find_npc_by_vnum(9002)
local v_npc3 = find_npc_by_vnum(9003)
local v_npc4 = find_npc_by_vnum(9001)
if 0 != v_npc1 and pc.getqf("click_npc1") ~= 1 then
target.vid("__target_npc1__", v_npc1, mob_name(20381))
end
if 0 != v_npc2 and pc.getqf("click_npc2") ~= 1 then
target.vid("__target_npc2__", v_npc2, mob_name(9002))
end
if 0 != v_npc3 and pc.getqf("click_npc3") ~= 1 then
target.vid("__target_npc3__", v_npc3, mob_name(9003))
end
if 0 != v_npc4 and pc.getqf("click_npc4") ~= 1 then
target.vid("__target_npc4__", v_npc4, mob_name(9001))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._640_sayTitle)
say(gameforge.main_quest_lv98._650_say)
say("")
say_title(gameforge.main_quest_lv98._700_counterName)
local npc1 = " "
if pc.getqf("click_npc1") == 1 then
npc1 = "O"
end
local npc2 = " "
if pc.getqf("click_npc2") == 1 then
npc2 = "O"
end
local npc3 = " "
if pc.getqf("click_npc3") == 1 then
npc3 = "O"
end
local npc4 = " "
if pc.getqf("click_npc4") == 1 then
npc4 = "O"
end
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
say(string.format(gameforge.main_quest_lv98._710_say,npc1,npc2))
say(string.format(gameforge.main_quest_lv98._720_say,npc3,npc4))
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
-- Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC> --
when 20377.chat.gameforge.main_quest_lv98._330_sendLetter begin
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._390_say)
say("")
wait()
end
when __target_npc1__.target.click or 20381.click with pc.getqf("click_npc1") ~= 1 begin -- <20><><EFBFBD><EFBFBD>
target.delete("__target_npc1__")
pc.setqf("click_npc1",1)
say_title(mob_name(20381))
say(gameforge.main_quest_lv98._400_say)
say("")
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
if pc.getqf("click_npc1") == 1 and pc.getqf("click_npc2") == 1 and pc.getqf("click_npc3") == 1 and pc.getqf("click_npc4") == 1 then
notice_multiline(gameforge.main_quest_lv98._440_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._440_2_notice,notice)
set_state (state4_3)
end
end
when __target_npc2__.target.click or 9002.click with pc.getqf("click_npc2") ~= 1 begin -- <20><><EFBFBD>
target.delete("__target_npc2__")
pc.setqf("click_npc2",1)
say_title(mob_name(9002))
say(gameforge.main_quest_lv98._410_say)
say("")
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
if pc.getqf("click_npc1") == 1 and pc.getqf("click_npc2") == 1 and pc.getqf("click_npc3") == 1 and pc.getqf("click_npc4") == 1 then
notice_multiline(gameforge.main_quest_lv98._440_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._440_2_notice,notice)
set_state (state4_3)
end
end
when __target_npc3__.target.click or 9003.click with pc.getqf("click_npc3") ~= 1 begin -- <20><>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD>
target.delete("__target_npc3__")
pc.setqf("click_npc3",1)
say_title(mob_name(9003))
say(gameforge.main_quest_lv98._430_say)
say("")
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
if pc.getqf("click_npc1") == 1 and pc.getqf("click_npc2") == 1 and pc.getqf("click_npc3") == 1 and pc.getqf("click_npc4") == 1 then
notice_multiline(gameforge.main_quest_lv98._440_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._440_2_notice,notice)
set_state (state4_3)
end
end
when __target_npc4__.target.click or 9001.click with pc.getqf("click_npc4") ~= 1 begin -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
target.delete("__target_npc4__")
pc.setqf("click_npc4",1)
say_title(mob_name(9001))
say(gameforge.main_quest_lv98._420_say)
say("")
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
if pc.getqf("click_npc1") == 1 and pc.getqf("click_npc2") == 1 and pc.getqf("click_npc3") == 1 and pc.getqf("click_npc4") == 1 then
notice_multiline(gameforge.main_quest_lv98._440_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._440_2_notice,notice)
set_state (state4_3)
end
end
end
state state4_3 begin
when letter begin
send_letter(gameforge.main_quest_lv98._330_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._330_sendLetter)
say(gameforge.main_quest_lv98._630_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20377.chat.gameforge.main_quest_lv98._330_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._450_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 32033398))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 379000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30015),2,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70043),1,locale.count_postfix))
say("")
pc.give_exp2(32033398)
pc.change_money(379000)
pc.give_item2(30015, 2)
pc.give_item2_select(70043)
item.set_socket(2, 60)
set_state (state5_1)
end
end
----------------------------------<2D>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>----------------------------------
state state5_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._480_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._480_sendLetter)
say(gameforge.main_quest_lv98._490_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20378.chat.gameforge.main_quest_lv98._480_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._500_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._520_say)
say("")
wait()
--<2D><><EFBFBD><EFBFBD>
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 38739560))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 390000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30006),1,locale.count_postfix))
say("")
pc.give_exp2(38739560)
pc.change_money(390000)
pc.give_item2(30006, 1)
clear_letter()
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@@ -1,44 +0,0 @@
quest new_christmas_2012 begin
state start begin
function has_santa()
return (game.get_event_flag("new_xmas_event") > 0)
end
when 20126.chat.gameforge.new_christmas._010_npcChat begin
say_title(mob_name(20126))
say (gameforge.new_christmas._020_say )
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas._030_say )
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas._040_say )
wait()
set_quest_state("new_christmas_2012_nog", "nog_first_give")
set_quest_state("new_christmas_2012_sock", "baby_dear_give")
set_state ("__COMPLETE__")
end
when login or enter with new_christmas_2012.has_santa() begin
if pc.get_map_index() == 1 or pc.get_map_index() == 21 or pc.get_map_index() == 41 then
if find_npc_by_vnum(20384) == 0 then
if pc.get_map_index() == 1 then
mob.spawn(20384, 625, 676, 0, 0 )
elseif pc.get_map_index() == 21 then
mob.spawn(20384, 542, 551, 0, 0)
elseif pc.get_map_index() == 41 then
mob.spawn(20384, 442, 717, 0, 0)
end
end
end
end
end
state __COMPLETE__ begin
when 20126.chat."init christmas quest" with is_test_server() or pc.is_gm() begin
set_state ("start")
set_quest_state("new_christmas_2012_nog", "start")
set_quest_state("new_christmas_2012_sock", "start")
say ("init complete")
end
end
end

View File

@@ -1,36 +0,0 @@
quest new_christmas_2012_nog begin
state start begin
end
state nog_first_give begin
when 20126.chat.gameforge.new_christmas._050_npcChat begin
say_title(mob_name(20126))
say (gameforge.new_christmas._060_say)
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas._070_say)
wait()
pc.give_item2 (50216, 6)
pc.setqf ("last_nog_give_time", get_global_time())
say_title(mob_name(20126))
say (gameforge.new_christmas._080_say)
set_state(nog_give)
end
end
state nog_give begin
when 20126.chat.gameforge.new_christmas._090_npcChat begin
say_title(mob_name(20126))
say (gameforge.new_christmas._100_say)
wait()
if get_global_time() - pc.getqf ("last_nog_give_time") >= 86400 then
say_title(mob_name(20126))
say (gameforge.new_christmas._110_say)
pc.setqf ("last_nog_give_time", get_global_time())
pc.give_item2 (50216, 6)
else
say_title(mob_name(20126))
say (gameforge.new_christmas._120_say)
end
end
end
end

View File

@@ -1,70 +0,0 @@
quest new_christmas_2012_sock begin
state start begin
end
state baby_dear_give begin
when 20126.chat.gameforge.new_christmas_sock._010_npcChat begin
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._020_say)
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._030_say)
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._040_say)
wait()
say_title(mob_name(20126))
pc.give_item2_select (53007, 1)
item.set_socket (0, get_global_time() + 7200)
pc.setqf ("last_reindeer_give_time", get_global_time())
set_state(sock_take)
end
end
state sock_take begin
when 20126.chat.gameforge.new_christmas_sock._080_npcChat begin
if get_global_time() - pc.getqf ("last_reindeer_give_time") < 86400 then
say_title (mob_name (20126))
say (gameforge.new_christmas_sock._090_say)
else
say_title (mob_name (20126))
say (gameforge.new_christmas_sock._040_say)
pc.give_item2_select (53007, 1)
item.set_socket (0, get_global_time() + 7200)
pc.setqf ("last_reindeer_give_time", get_global_time())
end
end
when 20126.chat."reset flags / reindeer, socks" with is_test_server() begin
pc.setqf ("last_reindeer_give_time", 0)
pc.setqf("last_sock_cooldown_time", 0)
end
when 20126.chat.gameforge.new_christmas_sock._050_npcChat begin
if get_time() < pc.getqf("last_sock_cooldown_time") then
say_title (mob_name(20126))
say (gameforge.new_christmas_sock._100_say)
else
local n = pc.count_item(50010)
if n < 5 then
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._060_say)
wait()
else
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._070_say)
wait()
pc.remove_item (50010, 5)
say_title(locale.reward)
pc.give_item2(71144)
say_reward (string.format("%s : 1%s",item_name(71144), locale.count_postfix))
if is_test_server() then
pc.setqf("last_sock_cooldown_time", get_time() + 20)
else
pc.setqf("last_sock_cooldown_time", get_time()+60*60*24) -----------------------------------24 stunden nun
end
end
end
end
end
end

View File

@@ -1,470 +0,0 @@
quest spider_dungeon_3floor_boss begin
state start begin
--2, <20><><EFBFBD><EFBFBD> <20><> <20>ð<EFBFBD>.
when spider_end_timer.server_timer with game.get_event_flag("spider_dead"..get_channel_id()) == 0 begin --
warp_all_in_area_to_area(82700, 612700, 93700,625700, 69100, 614800, 69100, 614800)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(),0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
purge_area(82700, 612700, 93700,625700)
end
when spider_dead_timer.server_timer begin
warp_all_in_area_to_area(82700, 612700, 93700,625700, 69100, 614800, 69100, 614800)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(), 0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
purge_area(82700, 612700, 93700,625700)
end
when login or levelup or enter with pc.get_level() >= 50 begin
set_state( step1 )
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
end
state step1 begin
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --<2D>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._50_npcChat begin --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5BFA1> <20><><EFBFBD><EFBFBD> <20>ɾ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._60_say)
set_state( step2 )
pc.give_item2(76019)
end
end
state step2 begin --<2D>񼮿<EFBFBD> Ź<><C5B9><EFBFBD><EFBFBD> <20>߷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --<2D>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
-----------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>2------------
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._70_sendLetter)
local v = find_npc_by_vnum(30130)
if 0 != v then
target.vid("__TARGET__", v, mob_name(30130))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._70_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._80_say)
say("")
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._70_sendLetter begin
target.delete("__TARGET__")
say_title(pc.getname())
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._90_say)
set_state(step3)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._50_npcChat begin
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._100_say)
end
end
state step3 begin --Ź<><C5B9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>񿡰<EFBFBD> <20><><EFBFBD>ư<EFBFBD><C6B0><EFBFBD>.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --<2D>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20355)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20355))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._120_say)
say("")
end
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>õ<EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>.
when 20355.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20355))
say(gameforge.spider_dungeon_3floor_boss._130_say)
set_state(step4)
end
end
state step4 begin --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ź<><C5B9><EFBFBD><EFBFBD> <20>ñ<EFBFBD><C3B1><EFBFBD>.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --<2D>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
-----------<2D><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>2------------
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._140_say)
say("")
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._150_say)
say("")
set_state(step5)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20355))
say(gameforge.spider_dungeon_3floor_boss._130_say)
end
end
state step5 begin --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --<2D>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20355)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20355))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._170_sayTitle)
say(gameforge.spider_dungeon_3floor_boss._180_say)
say("")
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._190_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._200_say)
say("")
set_state(step6) pc.give_item2(76019)
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._160_say)
say("")
end
end
state step6 begin --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ͻ<EFBFBD>Ų<EFBFBD><C5B2>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --<2D>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._190_npcChat)
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._190_npcChat)
say(gameforge.spider_dungeon_3floor_boss._200_say)
say("")
end
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>õ<EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._190_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._230_say)
set_state(boss_ok)
end
end
state boss_ok begin -- <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ẕ́<C5B9> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --<2D>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._210_npcChat begin
if pc.count_item(30025) > 0 and pc.count_item(30056) > 0 and pc.count_item(30057) > 0 and pc.count_item(30058) > 0 and pc.count_item(30059) > 0 and pc.count_item(30326) > 0 then
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._250_say)
pc.remove_item(30025, 1)
pc.remove_item(30056, 1)
pc.remove_item(30057, 1)
pc.remove_item(30058, 1)
pc.remove_item(30059, 1)
pc.remove_item(30326, 1)
if math.random(1,2000) <= 1000 then
say(gameforge.spider_dungeon_3floor_boss._260_say)
pc.give_item2(30324, 1)
else
say(gameforge.spider_dungeon_3floor_boss._270_say)
end
else
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._280_say)
end
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
if game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
local starttime = game.get_event_flag("spider_lair_start_time_"..get_channel_id())
local current_time = get_global_time()
if party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if starttime + 300 >= current_time and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) and game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
say(gameforge.spider_dungeon_3floor_boss._300_say) -- <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
pc.setqf("firstIn",1)
pc.setqf("retry_limit_time", starttime + 1200 + 3600 )
set_state(inLair)
pc.warp(88100,614800)
return
end
else
say(gameforge.spider_dungeon_3floor_boss._310_say) -- <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
return
end
else
local remain_time = (game.get_event_flag("spider_lair_end_time_"..get_channel_id() ) - get_global_time()) / 60
if remain_time < 0 then
say(gameforge.spider_dungeon_3floor_boss._410_say)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(),0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
return
end
say(gameforge.spider_dungeon_3floor_boss._320_say)
--- here we should change to string.format %s key
say(string.format(gameforge.spider_dungeon_3floor_boss._330_say, math.ceil(remain_time)))
return
end
elseif pc.getqf("retry_limit_time") > get_global_time() then
local access_limit = (pc.getqf("retry_limit_time") - get_global_time()) / 60
say(gameforge.spider_dungeon_3floor_boss._340_say)
-- here we should also change to string.format %s key
say(string.format(gameforge.spider_dungeon_3floor_boss._350_say, math.ceil(access_limit)))
return
elseif party.is_leader() then
if false == pc.can_warp() then
say(gameforge.spider_dungeon_3floor_boss._360_say)
return
end
if pc.count_item(30324) > 0 then
say(gameforge.spider_dungeon_3floor_boss._370_say)
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
set_state(inLair)
pc.remove_item(30324, 1)
mob.spawn(2094,369,551,0,0)
--<2D><> <20><><EFBFBD><EFBFBD>.
game.set_event_flag("spider_lair_ongoing_"..get_channel_id() , 1)
game.set_event_flag("spider_lair_start_time_"..get_channel_id() , get_global_time())
game.set_event_flag("spider_lair_end_time_"..get_channel_id() , get_global_time() + 1200)
game.set_event_flag("spider_lair_leader_"..get_channel_id() , party.get_leader_pid())
pc.setqf("retry_limit_time", get_global_time() + 1200 + 3600 )
pc.setqf("firstIn",1)
server_timer("spider_end_timer", 1200 )
pc.warp(88100,614800)
end
return
else
say(gameforge.spider_dungeon_3floor_boss._380_say)
return
end
else --<2D><><EFBFBD><EFBFBD> <20>ƴϴ<C6B4>.
say(gameforge.spider_dungeon_3floor_boss._390_say)
return
end
end
end
state inLair begin
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --<2D>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when login begin
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>.
--if pc.getqf("firstIn") == 1 and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if get_global_time() < pc.getqf("retry_limit_time") - 3600 and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
pc.setqf("firstIn",0)
elseif pc.getx() >= 827 and pc.getx() <= 937 and pc.gety() >= 6127 and pc.gety() <= 6257 then
pc.warp(95900,571000)
pc.remove_item(30327, 1)
else -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ðܳ<C3B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ۿ<EFBFBD><DBBF><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20>ϰ<EFBFBD> <20>Ǹ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
pc.remove_item(30327, 1)
set_state( boss_ok )
local limit = pc.getqf("retry_limit_time")
if limit > ( get_global_time() + 3600 ) then
limit = ( get_global_time() + 3600 )
end
pc.setqf("retry_limit_time", limit )
local duration = limit - get_global_time()
end
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
if game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
local starttime = game.get_event_flag("spider_lair_start_time_"..get_channel_id())
local current_time = get_global_time()
if party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if starttime + 300 >= current_time and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) and game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
say(gameforge.spider_dungeon_3floor_boss._300_say) -- <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE>
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
pc.warp(88100,614800)
return
end
end
end
end
end
when 2092.kill begin --<2D><><EFBFBD>հŹ<D5B0> <20><><EFBFBD><EFBFBD>
server_timer("spider_dead_timer", 180)
game.set_event_flag("spider_dead"..get_channel_id(), 1)
notice_multiline(gameforge.spider_dungeon_3floor_boss._400_say,notice_in_map)
end
when 2095.kill begin --<2D>Ź̾<C5B9> <20><><EFBFBD><EFBFBD>
local kingVid = game.get_event_flag("king_vid")
local remain_egg = game.get_event_flag("remain_egg"..get_channel_id())
notice_multiline(gameforge.spider_dungeon_3floor_boss._420_notice,notice_in_map)
if remain_egg > 0 then
remain_egg = remain_egg - 1
game.set_event_flag("remain_egg"..get_channel_id(), remain_egg)
end
--<2D>Ź<EFBFBD><C5B9><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD> <20><><EFBFBD><EFBFBD>
npc.set_vid_attack_mul(kingVid, 10/(remain_egg + 1))
--<2D>Ź̰<C5B9> <20>޴<EFBFBD> <20><><EFBFBD>ط<EFBFBD> <20><><EFBFBD><EFBFBD>
npc.set_vid_damage_mul(kingVid, 10/(remain_egg + 1))
end
-- 2012.4.5 <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD>
when 30327.use with pc.getx() >= 827 and pc.get_map_index() == 217 and pc.getx() <= 937 and pc.gety() >= 6127 and pc.gety() <= 6257 begin
--say("<22>ʹ<EFBFBD>ȣ : "..pc.get_map_index())
pc.remove_item(30327, 1)
i = mob.spawn(2095,400,566,0,0)
mob.spawn(2095,400,594,0,0)
mob.spawn(2095,362,600,0,0)
mob.spawn(2095,337,599,0,0)
mob.spawn(2095,335,581,0,0)
mob.spawn(2095,344,562,0,0)
mob.spawn(2095,364,588,0,0)
mob.spawn(2095,379,562,0,0)
mob.spawn(2095,368,525,0,0)
local kingVid = mob.spawn(2092,367,588,0,0)
game.set_event_flag("king_vid",kingVid)
--game.set_event_flag("remain_egg",9)
game.set_event_flag("remain_egg"..get_channel_id(), 9)
end
end
end

View File

@@ -1,158 +0,0 @@
quest test_att_resist begin
state start begin
when 20001.chat."ATT_TEST : ITEM - BASIC" with is_test_server() begin
say("Test items for basic")
say("Check damage with these")
local item_armor
local item_helmet
local item_bracelet
local job = pc.get_job()
if job == 0 then -- WARRIOR
item_armor = 11299
item_helmet = 12249
item_bracelet = 14109
elseif job==1 then -- ASSASSIN
item_armor = 11499
item_helmet = 12389
item_bracelet = 14109
elseif job==2 then -- SURA
item_armor = 11699
item_helmet = 12529
item_bracelet = 14109
elseif job==3 then -- SHAMAN
item_armor = 11899
item_helmet = 12669
item_bracelet = 14109
end
pc.give_item2_select(item_armor)
pc.give_item2_select(item_helmet)
pc.give_item2_select(item_bracelet)
end
when 20001.chat."ATT_TEST : ITEM - FIRE" with is_test_server() begin
say("Test items for Fire resist")
say("Use items and Type /state to check resist stat")
local item_armor
local item_helmet
local item_bracelet
local job = pc.get_job()
if job == 0 then -- WARRIOR
item_armor = 11299
item_helmet = 12249
item_bracelet = 14109
elseif job==1 then -- ASSASSIN
item_armor = 11499
item_helmet = 12389
item_bracelet = 14109
elseif job==2 then -- SURA
item_armor = 11699
item_helmet = 12529
item_bracelet = 14109
elseif job==3 then -- SHAMAN
item_armor = 11899
item_helmet = 12669
item_bracelet = 14109
end
pc.give_item2_select(item_armor)
item.set_value(0, 35, 15)
pc.give_item2_select(item_helmet)
item.set_value(0, 35, 15)
pc.give_item2_select(item_bracelet)
item.set_value(0, 35, 15)
end
when 20001.chat."ATT_TEST : ITEM - ELEC" with is_test_server() begin
say("Test items for ELEC resist")
say("Use items and Type /state to check resist stat")
local item_armor
local item_helmet
local item_bracelet
local job = pc.get_job()
if job == 0 then -- WARRIOR
item_armor = 11299
item_helmet = 12249
item_bracelet = 14109
elseif job==1 then -- ASSASSIN
item_armor = 11499
item_helmet = 12389
item_bracelet = 14109
elseif job==2 then -- SURA
item_armor = 11699
item_helmet = 12529
item_bracelet = 14109
elseif job==3 then -- SHAMAN
item_armor = 11899
item_helmet = 12669
item_bracelet = 14109
end
pc.give_item2_select(item_armor)
item.set_value(0, 36, 15)
pc.give_item2_select(item_helmet)
item.set_value(0, 36, 15)
pc.give_item2_select(item_bracelet)
item.set_value(0, 36, 15)
end
when 20001.chat."ATT_TEST : ITEM - WIND" with is_test_server() begin
say("Test items for WIND resist")
say("Use items and Type /state to check resist stat")
local item_armor
local item_helmet
local item_bracelet
local job = pc.get_job()
if job == 0 then -- WARRIOR
item_armor = 11299
item_helmet = 12249
item_bracelet = 14109
elseif job==1 then -- ASSASSIN
item_armor = 11499
item_helmet = 12389
item_bracelet = 14109
elseif job==2 then -- SURA
item_armor = 11699
item_helmet = 12529
item_bracelet = 14109
elseif job==3 then -- SHAMAN
item_armor = 11899
item_helmet = 12669
item_bracelet = 14109
end
pc.give_item2_select(item_armor)
item.set_value(0, 38, 15)
pc.give_item2_select(item_helmet)
item.set_value(0, 38, 15)
pc.give_item2_select(item_bracelet)
item.set_value(0, 38, 15)
end
when 20001.chat."ATT_TEST : MOB - FIRE" with is_test_server() begin
say("spawn FIRE monster")
say("check damage with basic and resist armors")
mob.spawn(2201, pc.get_local_x(), pc.get_local_y(),0,1,1)
end
when 20001.chat."ATT_TEST : MOB - ELEC" with is_test_server() begin
say("spawn ELEC monster")
say("check damage with basic and resist armors")
mob.spawn(2401, pc.get_local_x(), pc.get_local_y(),0,1,1)
end
when 20001.chat."ATT_TEST : MOB - WIND" with is_test_server() begin
say("spawn WIND monster")
say("check damage with basic and resist armors")
mob.spawn(777, pc.get_local_x(), pc.get_local_y(),0,1,1)
end
end
end

View File

@@ -1,23 +0,0 @@
#!/usr/local/bin/python
import pre_qc
import os
import sys
os.system('rm -rf object')
os.system('mkdir object')
#os.system('rm -rf pre_qc')
os.system('mkdir pre_qc')
os.system('chgrp quest object')
for line in file('locale_list'):
r = pre_qc.run (line)
if r == True:
filename = 'pre_qc/'+line
else:
filename = line
if os.system('./qc '+filename):
print 'Error occured on compile ' + line
os.system('chmod -R 770 object')
import sys
sys.exit(-1)
os.system('chmod -R 770 object')

View File

@@ -1,8 +0,0 @@
quest test begin
state start begin
when 20355.chat."bbbb" begin
setskin(NOWINDOW)
say_show_item(90013)
end
end
end

View File

@@ -1,3 +1,6 @@
#ifndef __INC_METIN2_UTILS_H__
#define __INC_METIN2_UTILS_H__
/*----- atoi function -----*/
inline bool str_to_number (bool& out, const char *in)
{
@@ -72,3 +75,5 @@ inline bool str_to_number (float& out, const char *in)
}
/*----- atoi function -----*/
#endif

View File

@@ -10,6 +10,6 @@
#define __COMPILER__ "@METIN2_COMPILER@"
#define __CPU_TARGET__ "@METIN2_CPU_TARGET@"
void WriteVersion(std::ostream& out);
void WriteVersion();
#endif

View File

@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.8)
project(db CXX)
file(GLOB_RECURSE sources
src/*.cpp src/*.h
src/*.cpp src/*.h
)
# Add the src directory to the include path
@@ -11,18 +11,25 @@ include_directories(src)
add_executable(${PROJECT_NAME} ${sources})
# Set the default log level based on the build type
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
message(STATUS "This is a debug build. Log level will be set to 'trace' for target '${PROJECT_NAME}'.")
target_compile_definitions(${PROJECT_NAME} PRIVATE SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
endif()
# Treat char variables as signed, especially useful for ARM builds
target_compile_options(${PROJECT_NAME} PUBLIC -fsigned-char)
# Find dependencies
#
# vcpkg dependencies
#
# Boost
find_package(Boost COMPONENTS system REQUIRED)
target_link_libraries (${PROJECT_NAME} PRIVATE Boost::boost Boost::system)
# Pthreads
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
# LibBSD
target_link_libraries(${PROJECT_NAME} PRIVATE bsd)
# Libevent
find_package(Libevent CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE libevent::core libevent::extra libevent::pthreads)
@@ -31,4 +38,16 @@ target_link_libraries(${PROJECT_NAME} PRIVATE libevent::core libevent::extra lib
find_package(effolkronium_random CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE effolkronium_random)
#
# System-provided dependencies
#
# Pthreads
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
# LibBSD
target_link_libraries(${PROJECT_NAME} PRIVATE bsd)
target_link_libraries(${PROJECT_NAME} PRIVATE libpoly libsql libthecore)

View File

@@ -406,13 +406,13 @@ AuctionResult AuctionManager::EnrollInAuction(CItemCache* item_cache, TAuctionIt
CItemCache* c = GetItemCache (item_info.item_id);
if (c != NULL)
{
sys_err ("item id : %d is already in AuctionManager", item_info.item_id);
SPDLOG_ERROR("item id : {} is already in AuctionManager", item_info.item_id);
return AUCTION_FAIL;
}
if (!Auction.InsertItemInfo (&item_info))
{
sys_err ("item id : %d is already in AuctionBoard", item_info.item_id);
SPDLOG_ERROR("item id : {} is already in AuctionBoard", item_info.item_id);
return AUCTION_FAIL;
}
@@ -429,19 +429,19 @@ AuctionResult AuctionManager::EnrollInSale(CItemCache* item_cache, TSaleItemInfo
CItemCache* c = GetItemCache (item_info.item_id);
if (c != NULL)
{
sys_err ("item id : %d is already in AuctionManager", item_info.item_id);
SPDLOG_ERROR("item id : {} is already in AuctionManager", item_info.item_id);
return AUCTION_FAIL;
}
if (!Wish.GetItemInfoCache (WishBoard::Key (item_info.item_num, item_info.wisher_id)))
{
sys_err ("item_num : %d, wisher_id : %d is not in wish auction.", item_info.item_num, item_info.wisher_id);
SPDLOG_ERROR("item_num : {}, wisher_id : {} is not in wish auction.", item_info.item_num, item_info.wisher_id);
return AUCTION_FAIL;
}
if (!Sale.InsertItemInfo (&item_info))
{
sys_err ("item id : %d is already in SaleBoard", item_info.item_id);
SPDLOG_ERROR("item id : {} is already in SaleBoard", item_info.item_id);
return AUCTION_FAIL;
}
@@ -457,7 +457,7 @@ AuctionResult AuctionManager::EnrollInWish(TWishItemInfo &item_info)
{
if (!Wish.InsertItemInfo (&item_info))
{
sys_err ("wisher_id : %d, item_num : %d is already in WishBoard", item_info.offer_id, item_info.item_num);
SPDLOG_ERROR("wisher_id : {}, item_num : {} is already in WishBoard", item_info.offer_id, item_info.item_num);
return AUCTION_FAIL;
}
@@ -469,7 +469,7 @@ AuctionResult AuctionManager::Bid(DWORD bidder_id, const char* bidder_name, DWOR
CItemCache* c = GetItemCache (item_id);
if (c == NULL)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}
@@ -506,7 +506,7 @@ AuctionResult AuctionManager::Impur(DWORD purchaser_id, const char* purchaser_na
CItemCache* c = GetItemCache (item_id);
if (c == NULL)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}
@@ -533,14 +533,14 @@ AuctionResult AuctionManager::GetAuctionedItem (DWORD actor_id, DWORD item_id, T
CItemCache* c = GetItemCache (item_id);
if (c == NULL)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}
CAuctionItemInfoCache* item_info_cache = Auction.GetItemInfoCache(item_id);
if (item_info_cache == NULL)
{
sys_err ("how can this accident happen?");
SPDLOG_ERROR("how can this accident happen?");
return AUCTION_FAIL;
}
@@ -561,14 +561,14 @@ AuctionResult AuctionManager::BuySoldItem (DWORD actor_id, DWORD item_id, TPlaye
CItemCache* c = GetItemCache (item_id);
if (c == NULL)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}
CSaleItemInfoCache* item_info_cache = Sale.GetItemInfoCache(item_id);
if (item_info_cache == NULL)
{
sys_err ("how can this accident happen?");
SPDLOG_ERROR("how can this accident happen?");
return AUCTION_FAIL;
}
@@ -584,14 +584,14 @@ AuctionResult AuctionManager::CancelAuction (DWORD actor_id, DWORD item_id, TPla
CItemCache* c = GetItemCache (item_id);
if (c == NULL)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}
CAuctionItemInfoCache* item_info_cache = Auction.GetItemInfoCache(item_id);
if (item_info_cache == NULL)
{
sys_err ("how can this accident happen?");
SPDLOG_ERROR("how can this accident happen?");
return AUCTION_FAIL;
}
TAuctionItemInfo* item_info = item_info_cache->Get(false);
@@ -618,14 +618,14 @@ AuctionResult AuctionManager::CancelSale (DWORD actor_id, DWORD item_id, TPlayer
CItemCache* c = GetItemCache (item_id);
if (c == NULL)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}
CSaleItemInfoCache* item_info_cache = Sale.GetItemInfoCache(item_id);
if (item_info_cache == NULL)
{
sys_err ("how can this accident happen?");
SPDLOG_ERROR("how can this accident happen?");
return AUCTION_FAIL;
}
TSaleItemInfo* item_info = item_info_cache->Get(false);
@@ -639,13 +639,13 @@ AuctionResult AuctionManager::DeleteAuctionItem (DWORD actor_id, DWORD item_id)
{
if (DeleteItemCache (item_id) == false)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}
if (Auction.DeleteItemInfoCache (item_id) == NULL)
{
sys_err ("how can this accident happen?");
SPDLOG_ERROR("how can this accident happen?");
return AUCTION_FAIL;
}
return AUCTION_SUCCESS;
@@ -655,13 +655,13 @@ AuctionResult AuctionManager::DeleteSaleItem (DWORD actor_id, DWORD item_id)
{
if (DeleteItemCache (item_id) == false)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}
if (Sale.DeleteItemInfoCache (item_id) == NULL)
{
sys_err ("how can this accident happen?");
SPDLOG_ERROR("how can this accident happen?");
return AUCTION_FAIL;
}
return AUCTION_SUCCESS;
@@ -672,7 +672,7 @@ AuctionResult AuctionManager::ReBid(DWORD bidder_id, const char* bidder_name, DW
CItemCache* c = GetItemCache (item_id);
if (c == NULL)
{
sys_err ("item id : %d does not exist in auction.", item_id);
SPDLOG_ERROR("item id : {} does not exist in auction.", item_id);
return AUCTION_FAIL;
}

View File

@@ -50,7 +50,7 @@ bool CBlockCountry::Load()
if (pMsg->Get()->uiNumRows == 0)
{
sys_err(" DirectQuery failed(%s)", szQuery);
SPDLOG_ERROR(" DirectQuery failed({})", szQuery);
delete pMsg;
return false;
}
@@ -64,7 +64,7 @@ bool CBlockCountry::Load()
strlcpy(block_ip->country, row[2], sizeof(block_ip->country));
m_block_ip.push_back(block_ip);
sys_log(0, "BLOCKED_IP : %u - %u", block_ip->ip_from, block_ip->ip_to);
SPDLOG_DEBUG("BLOCKED_IP : {} - {}", block_ip->ip_from, block_ip->ip_to);
}
delete pMsg;
@@ -79,7 +79,7 @@ bool CBlockCountry::Load()
if (pMsg->Get()->uiNumRows == 0)
{
sys_err(" DirectQuery failed(%s)", szQuery);
SPDLOG_ERROR(" DirectQuery failed({})", szQuery);
delete pMsg;
return true;
}
@@ -91,7 +91,7 @@ bool CBlockCountry::Load()
m_block_exception.push_back(strdup(login));
sys_log(0, "BLOCK_EXCEPTION = %s", login);
SPDLOG_DEBUG("BLOCK_EXCEPTION = {}", login);
}
delete pMsg;
@@ -129,7 +129,7 @@ bool CBlockCountry::IsBlockedCountryIp(const char *user_ip)
void CBlockCountry::SendBlockedCountryIp(CPeer *peer)
{
sys_log(0, "SendBlockedCountryIp start");
SPDLOG_DEBUG("SendBlockedCountryIp start");
BLOCK_IP *block_ip;
BLOCK_IP_VECTOR::iterator iter;
TPacketBlockCountryIp packet;
@@ -145,9 +145,9 @@ void CBlockCountry::SendBlockedCountryIp(CPeer *peer)
peer->Encode(&packet, sizeof(packet));
}
sys_log(0, "[DONE] CBlockCountry::SendBlockedCountryIp() : count = %d",
SPDLOG_DEBUG("[DONE] CBlockCountry::SendBlockedCountryIp() : count = {}",
m_block_ip.size());
sys_log(0, "SendBlockedCountryIp end");
SPDLOG_DEBUG("SendBlockedCountryIp end");
} /* end of CBlockCountry::SendBlockedCountryIp() */

View File

@@ -44,8 +44,7 @@ void CItemCache::Delete()
//char szQuery[QUERY_MAX_LEN];
//szQuery[QUERY_MAX_LEN] = '\0';
if (g_test_server)
sys_log(0, "ItemCache::Delete : DELETE %u", m_data.id);
SPDLOG_TRACE("ItemCache::Delete : DELETE {}", m_data.id);
m_data.vnum = 0;
m_bNeedQuery = true;
@@ -64,8 +63,7 @@ void CItemCache::OnFlush()
snprintf(szQuery, sizeof(szQuery), "DELETE FROM item%s WHERE id=%u", GetTablePostfix(), m_data.id);
CDBManager::instance().ReturnQuery(szQuery, QID_ITEM_DESTROY, 0, NULL);
if (g_test_server)
sys_log(0, "ItemCache::Flush : DELETE %u %s", m_data.id, szQuery);
SPDLOG_TRACE("ItemCache::Flush : DELETE {} {}", m_data.id, szQuery);
}
else
{
@@ -141,8 +139,7 @@ void CItemCache::OnFlush()
char szItemQuery[QUERY_MAX_LEN + QUERY_MAX_LEN + 100];
snprintf(szItemQuery, sizeof(szItemQuery), "REPLACE INTO item%s (%s) VALUES(%s)", GetTablePostfix(), szColumns, szValues);
if (g_test_server)
sys_log(0, "ItemCache::Flush :REPLACE (%s)", szItemQuery);
SPDLOG_TRACE("ItemCache::Flush :REPLACE ({})", szItemQuery);
CDBManager::instance().ReturnQuery(szItemQuery, QID_ITEM_SAVE, 0, NULL);
@@ -167,8 +164,7 @@ CPlayerTableCache::~CPlayerTableCache()
void CPlayerTableCache::OnFlush()
{
if (g_test_server)
sys_log(0, "PlayerTableCache::Flush : %s", m_data.name);
SPDLOG_TRACE("PlayerTableCache::Flush : {}", m_data.name);
char szQuery[QUERY_MAX_LEN];
CreatePlayerSaveQuery(szQuery, sizeof(szQuery), &m_data);
@@ -211,7 +207,7 @@ void CItemPriceListTableCache::UpdateList(const TItemPriceListTable* pUpdateList
if (pUpdateList->byCount > SHOP_PRICELIST_MAX_NUM)
{
sys_err("Count overflow!");
SPDLOG_ERROR("Count overflow!");
return;
}
@@ -238,8 +234,8 @@ void CItemPriceListTableCache::UpdateList(const TItemPriceListTable* pUpdateList
m_bNeedQuery = true;
sys_log(0,
"ItemPriceListTableCache::UpdateList : OwnerID[%u] Update [%u] Items, Delete [%u] Items, Total [%u] Items",
SPDLOG_DEBUG(
"ItemPriceListTableCache::UpdateList : OwnerID[{}] Update [{}] Items, Delete [{}] Items, Total [{}] Items",
m_data.dwOwnerID, pUpdateList->byCount, nDeletedNum, m_data.byCount);
}
@@ -266,7 +262,7 @@ void CItemPriceListTableCache::OnFlush()
CDBManager::instance().ReturnQuery(szQuery, QID_ITEMPRICE_SAVE, 0, NULL);
}
sys_log(0, "ItemPriceListTableCache::Flush : OwnerID[%u] Update [%u]Items", m_data.dwOwnerID, m_data.byCount);
SPDLOG_DEBUG("ItemPriceListTableCache::Flush : OwnerID[{}] Update [{}]Items", m_data.dwOwnerID, m_data.byCount);
m_bNeedQuery = false;
}
@@ -287,8 +283,7 @@ void CAuctionItemInfoCache::Delete()
if (m_data.item_num == 0)
return;
if (g_test_server)
sys_log(0, "CAuctionItemInfoCache::Delete : DELETE %u", m_data.item_id);
SPDLOG_TRACE("CAuctionItemInfoCache::Delete : DELETE {}", m_data.item_id);
m_data.item_num = 0;
m_bNeedQuery = true;

File diff suppressed because it is too large Load Diff

View File

@@ -16,84 +16,84 @@ bool CClientManager::InitializeTables()
{
if (!InitializeMobTable())
{
sys_err("InitializeMobTable FAILED");
SPDLOG_ERROR("InitializeMobTable FAILED");
return false;
}
if (!MirrorMobTableIntoDB())
{
sys_err("MirrorMobTableIntoDB FAILED");
SPDLOG_ERROR("MirrorMobTableIntoDB FAILED");
return false;
}
if (!InitializeItemTable())
{
sys_err("InitializeItemTable FAILED");
SPDLOG_ERROR("InitializeItemTable FAILED");
return false;
}
if (!MirrorItemTableIntoDB())
{
sys_err("MirrorItemTableIntoDB FAILED");
SPDLOG_ERROR("MirrorItemTableIntoDB FAILED");
return false;
}
if (!InitializeShopTable())
{
sys_err("InitializeShopTable FAILED");
SPDLOG_ERROR("InitializeShopTable FAILED");
return false;
}
if (!InitializeSkillTable())
{
sys_err("InitializeSkillTable FAILED");
SPDLOG_ERROR("InitializeSkillTable FAILED");
return false;
}
if (!InitializeRefineTable())
{
sys_err("InitializeRefineTable FAILED");
SPDLOG_ERROR("InitializeRefineTable FAILED");
return false;
}
if (!InitializeItemAttrTable())
{
sys_err("InitializeItemAttrTable FAILED");
SPDLOG_ERROR("InitializeItemAttrTable FAILED");
return false;
}
if (!InitializeItemRareTable())
{
sys_err("InitializeItemRareTable FAILED");
SPDLOG_ERROR("InitializeItemRareTable FAILED");
return false;
}
if (!InitializeBanwordTable())
{
sys_err("InitializeBanwordTable FAILED");
SPDLOG_ERROR("InitializeBanwordTable FAILED");
return false;
}
if (!InitializeLandTable())
{
sys_err("InitializeLandTable FAILED");
SPDLOG_ERROR("InitializeLandTable FAILED");
return false;
}
if (!InitializeObjectProto())
{
sys_err("InitializeObjectProto FAILED");
SPDLOG_ERROR("InitializeObjectProto FAILED");
return false;
}
if (!InitializeObjectTable())
{
sys_err("InitializeObjectTable FAILED");
SPDLOG_ERROR("InitializeObjectTable FAILED");
return false;
}
if (!InitializeMonarch())
{
sys_err("InitializeMonarch FAILED");
SPDLOG_ERROR("InitializeMonarch FAILED");
return false;
}
@@ -117,7 +117,7 @@ bool CClientManager::InitializeRefineTable()
if (m_pRefineTable)
{
sys_log(0, "RELOAD: refine_proto");
SPDLOG_DEBUG("RELOAD: refine_proto");
delete [] m_pRefineTable;
m_pRefineTable = NULL;
}
@@ -153,7 +153,7 @@ bool CClientManager::InitializeRefineTable()
}
}
sys_log(0, "REFINE: id %ld cost %d prob %d mat1 %lu cnt1 %d", prt->id, prt->cost, prt->prob, prt->materials[0].vnum, prt->materials[0].count);
SPDLOG_TRACE("REFINE: id {} cost {} prob {} mat1 {} cnt1 {}", prt->id, prt->cost, prt->prob, prt->materials[0].vnum, prt->materials[0].count);
prt++;
}
@@ -203,7 +203,7 @@ bool CClientManager::InitializeMobTable()
cCsvTable nameData;
if(!nameData.Load("mob_names.txt",'\t'))
{
fprintf(stderr, "mob_names.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>\n");
SPDLOG_ERROR("mob_names.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>");
isNameFile = false;
} else {
nameData.Next(); //<2F><><EFBFBD><EFBFBD>row <20><><EFBFBD><EFBFBD>.
@@ -224,7 +224,7 @@ bool CClientManager::InitializeMobTable()
cCsvTable test_data;
if(!test_data.Load("mob_proto_test.txt",'\t'))
{
fprintf(stderr, "<EFBFBD>׽<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20>״<EFBFBD><D7B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.\n");
SPDLOG_ERROR("<EFBFBD>׽<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20>״<EFBFBD><D7B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.");
isTestFile = false;
}
//2. (c)[test_map_mobTableByVnum](vnum:TMobTable) <20><> <20><><EFBFBD><EFBFBD>.
@@ -243,7 +243,7 @@ bool CClientManager::InitializeMobTable()
if (!Set_Proto_Mob_Table(test_mob_table, test_data, localMap))
{
fprintf(stderr, "<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.\n");
SPDLOG_ERROR("<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.");
}
test_map_mobTableByVnum.insert(std::map<DWORD, TMobTable *>::value_type(test_mob_table->dwVnum, test_mob_table));
@@ -264,7 +264,7 @@ bool CClientManager::InitializeMobTable()
//1. <20><><EFBFBD><EFBFBD> <20>б<EFBFBD>.
cCsvTable data;
if(!data.Load("mob_proto.txt",'\t')) {
fprintf(stderr, "mob_proto.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>\n");
SPDLOG_ERROR("mob_proto.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>");
return false;
}
data.Next(); //<2F><><EFBFBD><EFBFBD> row <20>Ѿ<D1BE><EEB0A1>
@@ -283,14 +283,14 @@ bool CClientManager::InitializeMobTable()
data.Destroy();
if(!data.Load("mob_proto.txt",'\t'))
{
fprintf(stderr, "mob_proto.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>\n");
SPDLOG_ERROR("mob_proto.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>");
return false;
}
data.Next(); //<2F><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Į<><C4AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κ<EFBFBD>)
//2.2 ũ<><20>°<EFBFBD> mob_table <20><><EFBFBD><EFBFBD>
if (!m_vec_mobTable.empty())
{
sys_log(0, "RELOAD: mob_proto");
SPDLOG_DEBUG("RELOAD: mob_proto");
m_vec_mobTable.clear();
}
m_vec_mobTable.resize(data.m_File.GetRowCount()-1 + addNumber);
@@ -378,7 +378,7 @@ bool CClientManager::InitializeMobTable()
if (!Set_Proto_Mob_Table(mob_table, data, localMap))
{
fprintf(stderr, "<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.\n");
SPDLOG_ERROR("<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.");
}
@@ -388,7 +388,7 @@ bool CClientManager::InitializeMobTable()
vnumSet.insert(mob_table->dwVnum);
sys_log(1, "MOB #%-5d %-24s %-24s level: %-3u rank: %u empire: %d", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
SPDLOG_TRACE("MOB #{:<5} {:24} {:24} level: {:<3} rank: {} empire: {}", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
++mob_table;
}
@@ -402,7 +402,7 @@ bool CClientManager::InitializeMobTable()
test_data;
if(!test_data.Load("mob_proto_test.txt",'\t'))
{
fprintf(stderr, "<EFBFBD>׽<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20>״<EFBFBD><D7B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.\n");
SPDLOG_ERROR("<EFBFBD>׽<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20>״<EFBFBD><D7B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.");
isTestFile = false;
}
if(isTestFile) {
@@ -419,10 +419,10 @@ bool CClientManager::InitializeMobTable()
if (!Set_Proto_Mob_Table(mob_table, test_data, localMap))
{
fprintf(stderr, "<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.\n");
SPDLOG_ERROR("<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.");
}
sys_log(0, "MOB #%-5d %-24s %-24s level: %-3u rank: %u empire: %d", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
SPDLOG_DEBUG("MOB #{:<5} {:24} {:24} level: {:<3} rank: {} empire: {}", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
++mob_table;
}
@@ -453,7 +453,7 @@ bool CClientManager::InitializeShopTable()
if (!pRes2->uiNumRows)
{
sys_err("InitializeShopTable : Table count is zero.");
SPDLOG_ERROR("InitializeShopTable : Table count is zero.");
return false;
}
@@ -508,7 +508,7 @@ bool CClientManager::InitializeShopTable()
while (it != map_shop.end())
{
memcpy((m_pShopTable + i), (it++)->second, sizeof(TShopTable));
sys_log(0, "SHOP: #%d items: %d", (m_pShopTable + i)->dwVnum, (m_pShopTable + i)->byItemCount);
SPDLOG_DEBUG("SHOP: #{} items: {}", (m_pShopTable + i)->dwVnum, (m_pShopTable + i)->byItemCount);
++i;
}
@@ -529,7 +529,7 @@ bool CClientManager::InitializeQuestItemTable()
if (!pRes->uiNumRows)
{
sys_err("query error or no rows: %s", query);
SPDLOG_ERROR("query error or no rows: {}", query);
return false;
}
@@ -556,7 +556,7 @@ bool CClientManager::InitializeQuestItemTable()
if (m_map_itemTableByVnum.find(tbl.dwVnum) != m_map_itemTableByVnum.end())
{
sys_err("QUEST_ITEM_ERROR! %lu vnum already exist! (name %s)", tbl.dwVnum, tbl.szLocaleName);
SPDLOG_ERROR("QUEST_ITEM_ERROR! {} vnum already exist! (name {})", tbl.dwVnum, tbl.szLocaleName);
continue;
}
@@ -603,7 +603,7 @@ bool CClientManager::InitializeItemTable()
cCsvTable nameData;
if(!nameData.Load("item_names.txt",'\t'))
{
fprintf(stderr, "item_names.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>\n");
SPDLOG_ERROR("item_names.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>");
isNameFile = false;
} else {
nameData.Next();
@@ -622,7 +622,7 @@ bool CClientManager::InitializeItemTable()
cCsvTable test_data;
if(!test_data.Load("item_proto_test.txt",'\t'))
{
fprintf(stderr, "item_proto_test.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>\n");
SPDLOG_ERROR("item_proto_test.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>");
//return false;
} else {
test_data.Next(); //<2F><><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20>Ѿ<D1BE><EEB0A1>.
@@ -639,7 +639,7 @@ bool CClientManager::InitializeItemTable()
if (!Set_Proto_Item_Table(test_item_table, test_data, localMap))
{
fprintf(stderr, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.\n");
SPDLOG_ERROR("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.");
}
test_map_itemTableByVnum.insert(std::map<DWORD, TItemTable *>::value_type(test_item_table->dwVnum, test_item_table));
@@ -666,14 +666,14 @@ bool CClientManager::InitializeItemTable()
cCsvTable data;
if(!data.Load("item_proto.txt",'\t'))
{
fprintf(stderr, "item_proto.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>\n");
SPDLOG_ERROR("item_proto.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>");
return false;
}
data.Next(); //<2F><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Į<><C4AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κ<EFBFBD>)
if (!m_vec_itemTable.empty())
{
sys_log(0, "RELOAD: item_proto");
SPDLOG_DEBUG("RELOAD: item_proto");
m_vec_itemTable.clear();
m_map_itemTableByVnum.clear();
}
@@ -693,7 +693,7 @@ bool CClientManager::InitializeItemTable()
data.Destroy();
if(!data.Load("item_proto.txt",'\t'))
{
fprintf(stderr, "item_proto.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>\n");
SPDLOG_ERROR("item_proto.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>");
return false;
}
data.Next(); //<2F><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Į<><C4AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κ<EFBFBD>)
@@ -715,7 +715,7 @@ bool CClientManager::InitializeItemTable()
if (!Set_Proto_Item_Table(item_table, data, localMap))
{
fprintf(stderr, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.\n");
SPDLOG_ERROR("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.");
}
@@ -782,7 +782,7 @@ bool CClientManager::InitializeItemTable()
test_data.Destroy();
if(!test_data.Load("item_proto_test.txt",'\t'))
{
fprintf(stderr, "item_proto_test.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>\n");
SPDLOG_ERROR("item_proto_test.txt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>");
//return false;
} else {
test_data.Next(); //<2F><><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20>Ѿ<D1BE><EEB0A1>.
@@ -798,7 +798,7 @@ bool CClientManager::InitializeItemTable()
if (!Set_Proto_Item_Table(item_table, test_data, localMap))
{
fprintf(stderr, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.\n");
SPDLOG_ERROR("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.");
}
@@ -823,7 +823,7 @@ bool CClientManager::InitializeItemTable()
{
TItemTable * item_table = &(*(it++));
sys_log(1, "ITEM: #%-5lu %-24s %-24s VAL: %ld %ld %ld %ld %ld %ld WEAR %lu ANTI %lu IMMUNE %lu REFINE %lu REFINE_SET %u MAGIC_PCT %u",
SPDLOG_TRACE("ITEM: #{:<5} {:24} {:24} VAL: {} {} {} {} {} {} WEAR {} ANTI {} IMMUNE {} REFINE {} REFINE_SET {} MAGIC_PCT {}",
item_table->dwVnum,
item_table->szName,
item_table->szLocaleName,
@@ -865,13 +865,13 @@ bool CClientManager::InitializeSkillTable()
if (!pRes->uiNumRows)
{
sys_err("no result from skill_proto");
SPDLOG_ERROR("no result from skill_proto");
return false;
}
if (!m_vec_skillTable.empty())
{
sys_log(0, "RELOAD: skill_proto");
SPDLOG_DEBUG("RELOAD: skill_proto");
m_vec_skillTable.clear();
}
@@ -929,7 +929,7 @@ bool CClientManager::InitializeSkillTable()
str_to_number(t.bSkillAttrType, data[col++]);
str_to_number(t.dwTargetRange, data[col++]);
sys_log(0, "SKILL: #%d %s flag %u point %s affect %u cooldown %s", t.dwVnum, t.szName, t.dwFlag, t.szPointOn, t.dwAffectFlag, t.szCooldownPoly);
SPDLOG_TRACE("SKILL: #{} {} flag {} point {} affect {} cooldown {}", t.dwVnum, t.szName, t.dwFlag, t.szPointOn, t.dwAffectFlag, t.szCooldownPoly);
m_vec_skillTable.push_back(t);
}
@@ -961,7 +961,7 @@ bool CClientManager::InitializeBanwordTable()
}
}
sys_log(0, "BANWORD: total %d", m_vec_banwordTable.size());
SPDLOG_DEBUG("BANWORD: total {}", m_vec_banwordTable.size());
return true;
}
@@ -977,13 +977,13 @@ bool CClientManager::InitializeItemAttrTable()
if (!pRes->uiNumRows)
{
sys_err("no result from item_attr");
SPDLOG_ERROR("no result from item_attr");
return false;
}
if (!m_vec_itemAttrTable.empty())
{
sys_log(0, "RELOAD: item_attr");
SPDLOG_DEBUG("RELOAD: item_attr");
m_vec_itemAttrTable.clear();
}
@@ -1016,7 +1016,7 @@ bool CClientManager::InitializeItemAttrTable()
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_SHIELD], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_EAR], data[col++]);
sys_log(0, "ITEM_ATTR: %-20s %4lu { %3d %3d %3d %3d %3d } { %d %d %d %d %d %d %d }",
SPDLOG_TRACE("ITEM_ATTR: {:20} {:4} ( {:3} {:3} {:3} {:3} {:3} ) ( {} {} {} {} {} {} {} )",
t.szApply,
t.dwProb,
t.lValues[0],
@@ -1051,13 +1051,13 @@ bool CClientManager::InitializeItemRareTable()
if (!pRes->uiNumRows)
{
sys_err("no result from item_attr_rare");
SPDLOG_ERROR("no result from item_attr_rare");
return false;
}
if (!m_vec_itemRareTable.empty())
{
sys_log(0, "RELOAD: item_attr_rare");
SPDLOG_DEBUG("RELOAD: item_attr_rare");
m_vec_itemRareTable.clear();
}
@@ -1090,7 +1090,7 @@ bool CClientManager::InitializeItemRareTable()
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_SHIELD], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_EAR], data[col++]);
sys_log(0, "ITEM_RARE: %-20s %4lu { %3d %3d %3d %3d %3d } { %d %d %d %d %d %d %d }",
SPDLOG_TRACE("ITEM_RARE: {:20} {:4} ( {:3} {:3} {:3} {:3} {:3} ) ( {} {} {} {} {} {} {} )",
t.szApply,
t.dwProb,
t.lValues[0],
@@ -1129,7 +1129,7 @@ bool CClientManager::InitializeLandTable()
if (!m_vec_kLandTable.empty())
{
sys_log(0, "RELOAD: land");
SPDLOG_DEBUG("RELOAD: land");
m_vec_kLandTable.clear();
}
@@ -1156,7 +1156,7 @@ bool CClientManager::InitializeLandTable()
str_to_number(t.bGuildLevelLimit, data[col++]);
str_to_number(t.dwPrice, data[col++]);
sys_log(0, "LAND: %lu map %-4ld %7ldx%-7ld w %-4ld h %-4ld", t.dwID, t.lMapIndex, t.x, t.y, t.width, t.height);
SPDLOG_TRACE("LAND: {} map {:<4} {:7}x{:<7} w {:<4} h {:<4}", t.dwID, t.lMapIndex, t.x, t.y, t.width, t.height);
m_vec_kLandTable.push_back(t);
}
@@ -1232,7 +1232,7 @@ bool CClientManager::InitializeObjectProto()
if (!m_vec_kObjectProto.empty())
{
sys_log(0, "RELOAD: object_proto");
SPDLOG_DEBUG("RELOAD: object_proto");
m_vec_kObjectProto.clear();
}
@@ -1280,7 +1280,7 @@ bool CClientManager::InitializeObjectProto()
t.lNPCY = std::max(t.lRegion[1], t.lRegion[3])+300;
// END_OF_ADD_BUILDING_NPC
sys_log(0, "OBJ_PROTO: vnum %lu price %lu mat %lu %lu",
SPDLOG_TRACE("OBJ_PROTO: vnum {} price {} mat {} {}",
t.dwVnum, t.dwPrice, t.kMaterials[0].dwItemVnum, t.kMaterials[0].dwCount);
m_vec_kObjectProto.push_back(t);
@@ -1301,7 +1301,7 @@ bool CClientManager::InitializeObjectTable()
if (!m_map_pkObjectTable.empty())
{
sys_log(0, "RELOAD: object");
SPDLOG_DEBUG("RELOAD: object");
m_map_pkObjectTable.clear();
}
@@ -1327,7 +1327,7 @@ bool CClientManager::InitializeObjectTable()
str_to_number(k->zRot, data[col++]);
str_to_number(k->lLife, data[col++]);
sys_log(0, "OBJ: %lu vnum %lu map %-4ld %7ldx%-7ld life %ld",
SPDLOG_DEBUG("OBJ: {} vnum {} map {:<4} {:7}x{:<7} life {}",
k->dwID, k->dwVnum, k->lMapIndex, k->x, k->y, k->lLife);
m_map_pkObjectTable.insert(std::make_pair(k->dwID, k));

View File

@@ -21,7 +21,7 @@ void CClientManager::LoadEventFlag()
TPacketSetEventFlag p;
strlcpy(p.szFlagName, row[0], sizeof(p.szFlagName));
str_to_number(p.lValue, row[1]);
sys_log(0, "EventFlag Load %s %d", p.szFlagName, p.lValue);
SPDLOG_DEBUG("EventFlag Load {} {}", p.szFlagName, p.lValue);
m_map_lEventFlag.insert(std::make_pair(std::string(p.szFlagName), p.lValue));
ForwardPacket(HEADER_DG_SET_EVENT_FLAG, &p, sizeof(TPacketSetEventFlag));
}
@@ -56,10 +56,10 @@ void CClientManager::SetEventFlag(TPacketSetEventFlag* p)
//CDBManager::instance().ReturnQuery(szQuery, QID_QUEST_SAVE, 0, NULL);
CDBManager::instance().AsyncQuery(szQuery);
sys_log(0, "HEADER_GD_SET_EVENT_FLAG : Changed CClientmanager::SetEventFlag(%s %d) ", p->szFlagName, p->lValue);
SPDLOG_DEBUG("HEADER_GD_SET_EVENT_FLAG : Changed CClientmanager::SetEventFlag({} {}) ", p->szFlagName, p->lValue);
return;
}
sys_log(0, "HEADER_GD_SET_EVENT_FLAG : No Changed CClientmanager::SetEventFlag(%s %d) ", p->szFlagName, p->lValue);
SPDLOG_DEBUG("HEADER_GD_SET_EVENT_FLAG : No Changed CClientmanager::SetEventFlag({} {}) ", p->szFlagName, p->lValue);
}
void CClientManager::SendEventFlagsOnSetup(CPeer* peer)

View File

@@ -10,7 +10,7 @@
void CClientManager::GuildCreate(CPeer * peer, DWORD dwGuildID)
{
sys_log(0, "GuildCreate %u", dwGuildID);
SPDLOG_DEBUG("GuildCreate {}", dwGuildID);
ForwardPacket(HEADER_DG_GUILD_LOAD, &dwGuildID, sizeof(DWORD));
CGuildManager::instance().Load(dwGuildID);
@@ -18,14 +18,14 @@ void CClientManager::GuildCreate(CPeer * peer, DWORD dwGuildID)
void CClientManager::GuildChangeGrade(CPeer* peer, TPacketGuild* p)
{
sys_log(0, "GuildChangeGrade %u %u", p->dwGuild, p->dwInfo);
SPDLOG_DEBUG("GuildChangeGrade {} {}", p->dwGuild, p->dwInfo);
ForwardPacket(HEADER_DG_GUILD_CHANGE_GRADE, p, sizeof(TPacketGuild));
}
void CClientManager::GuildAddMember(CPeer* peer, TPacketGDGuildAddMember * p)
{
CGuildManager::instance().TouchGuild(p->dwGuild);
sys_log(0, "GuildAddMember %u %u", p->dwGuild, p->dwPID);
SPDLOG_DEBUG("GuildAddMember {} {}", p->dwGuild, p->dwPID);
char szQuery[512];
@@ -42,7 +42,7 @@ void CClientManager::GuildAddMember(CPeer* peer, TPacketGDGuildAddMember * p)
if (pmsg->Get()->uiNumRows == 0)
{
sys_err("Query failed when getting guild member data %s", pmsg->stQuery.c_str());
SPDLOG_ERROR("Query failed when getting guild member data {}", pmsg->stQuery.c_str());
return;
}
@@ -67,7 +67,7 @@ void CClientManager::GuildAddMember(CPeer* peer, TPacketGDGuildAddMember * p)
void CClientManager::GuildRemoveMember(CPeer* peer, TPacketGuild* p)
{
sys_log(0, "GuildRemoveMember %u %u", p->dwGuild, p->dwInfo);
SPDLOG_DEBUG("GuildRemoveMember {} {}", p->dwGuild, p->dwInfo);
char szQuery[512];
snprintf(szQuery, sizeof(szQuery), "DELETE FROM guild_member%s WHERE pid=%u and guild_id=%u", GetTablePostfix(), p->dwInfo, p->dwGuild);
@@ -81,25 +81,25 @@ void CClientManager::GuildRemoveMember(CPeer* peer, TPacketGuild* p)
void CClientManager::GuildSkillUpdate(CPeer* peer, TPacketGuildSkillUpdate* p)
{
sys_log(0, "GuildSkillUpdate %d", p->amount);
SPDLOG_DEBUG("GuildSkillUpdate {}", p->amount);
ForwardPacket(HEADER_DG_GUILD_SKILL_UPDATE, p, sizeof(TPacketGuildSkillUpdate));
}
void CClientManager::GuildExpUpdate(CPeer* peer, TPacketGuildExpUpdate* p)
{
sys_log(0, "GuildExpUpdate %d", p->amount);
SPDLOG_DEBUG("GuildExpUpdate {}", p->amount);
ForwardPacket(HEADER_DG_GUILD_EXP_UPDATE, p, sizeof(TPacketGuildExpUpdate), 0, peer);
}
void CClientManager::GuildChangeMemberData(CPeer* peer, TPacketGuildChangeMemberData* p)
{
sys_log(0, "GuildChangeMemberData %u %u %d %d", p->pid, p->offer, p->level, p->grade);
SPDLOG_DEBUG("GuildChangeMemberData {} {} {} {}", p->pid, p->offer, p->level, p->grade);
ForwardPacket(HEADER_DG_GUILD_CHANGE_MEMBER_DATA, p, sizeof(TPacketGuildChangeMemberData), 0, peer);
}
void CClientManager::GuildDisband(CPeer* peer, TPacketGuild* p)
{
sys_log(0, "GuildDisband %u", p->dwGuild);
SPDLOG_DEBUG("GuildDisband {}", p->dwGuild);
char szQuery[512];
@@ -141,12 +141,12 @@ void CClientManager::GuildWar(CPeer* peer, TPacketGuildWar* p)
switch (p->bWar)
{
case GUILD_WAR_SEND_DECLARE:
sys_log(0, "GuildWar: GUILD_WAR_SEND_DECLARE type(%s) guild(%d - %d)", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
SPDLOG_DEBUG("GuildWar: GUILD_WAR_SEND_DECLARE type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
CGuildManager::instance().AddDeclare(p->bType, p->dwGuildFrom, p->dwGuildTo);
break;
case GUILD_WAR_REFUSE:
sys_log(0, "GuildWar: GUILD_WAR_REFUSE type(%s) guild(%d - %d)", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
SPDLOG_DEBUG("GuildWar: GUILD_WAR_REFUSE type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
CGuildManager::instance().RemoveDeclare(p->dwGuildFrom, p->dwGuildTo);
break;
/*
@@ -160,10 +160,10 @@ void CClientManager::GuildWar(CPeer* peer, TPacketGuildWar* p)
*/
case GUILD_WAR_WAIT_START:
sys_log(0, "GuildWar: GUILD_WAR_WAIT_START type(%s) guild(%d - %d)", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
SPDLOG_DEBUG("GuildWar: GUILD_WAR_WAIT_START type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
case GUILD_WAR_RESERVE: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if (p->bWar != GUILD_WAR_WAIT_START)
sys_log(0, "GuildWar: GUILD_WAR_RESERVE type(%s) guild(%d - %d)", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
SPDLOG_DEBUG("GuildWar: GUILD_WAR_RESERVE type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
CGuildManager::instance().RemoveDeclare(p->dwGuildFrom, p->dwGuildTo);
if (!CGuildManager::instance().ReserveWar(p))
@@ -174,23 +174,23 @@ void CClientManager::GuildWar(CPeer* peer, TPacketGuildWar* p)
break;
case GUILD_WAR_ON_WAR: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ų<EFBFBD><C5B2>. (<28>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>)
sys_log(0, "GuildWar: GUILD_WAR_ON_WAR type(%s) guild(%d - %d)", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
SPDLOG_DEBUG("GuildWar: GUILD_WAR_ON_WAR type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
CGuildManager::instance().RemoveDeclare(p->dwGuildFrom, p->dwGuildTo);
CGuildManager::instance().StartWar(p->bType, p->dwGuildFrom, p->dwGuildTo);
break;
case GUILD_WAR_OVER: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
sys_log(0, "GuildWar: GUILD_WAR_OVER type(%s) guild(%d - %d)", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
SPDLOG_DEBUG("GuildWar: GUILD_WAR_OVER type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
CGuildManager::instance().RecvWarOver(p->dwGuildFrom, p->dwGuildTo, p->bType, p->lWarPrice);
break;
case GUILD_WAR_END: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
sys_log(0, "GuildWar: GUILD_WAR_END type(%s) guild(%d - %d)", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
SPDLOG_DEBUG("GuildWar: GUILD_WAR_END type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
CGuildManager::instance().RecvWarEnd(p->dwGuildFrom, p->dwGuildTo);
return; // NOTE: RecvWarEnd<6E><64><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
case GUILD_WAR_CANCEL :
sys_log(0, "GuildWar: GUILD_WAR_CANCEL type(%s) guild(%d - %d)", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
SPDLOG_DEBUG("GuildWar: GUILD_WAR_CANCEL type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
CGuildManager::instance().CancelWar(p->dwGuildFrom, p->dwGuildTo);
break;
}
@@ -205,20 +205,20 @@ void CClientManager::GuildWarScore(CPeer* peer, TPacketGuildWarScore * p)
void CClientManager::GuildChangeLadderPoint(TPacketGuildLadderPoint* p)
{
sys_log(0, "GuildChangeLadderPoint Recv %u %d", p->dwGuild, p->lChange);
SPDLOG_DEBUG("GuildChangeLadderPoint Recv {} {}", p->dwGuild, p->lChange);
CGuildManager::instance().ChangeLadderPoint(p->dwGuild, p->lChange);
}
void CClientManager::GuildUseSkill(TPacketGuildUseSkill* p)
{
sys_log(0, "GuildUseSkill Recv %u %d", p->dwGuild, p->dwSkillVnum);
SPDLOG_DEBUG("GuildUseSkill Recv {} {}", p->dwGuild, p->dwSkillVnum);
CGuildManager::instance().UseSkill(p->dwGuild, p->dwSkillVnum, p->dwCooltime);
SendGuildSkillUsable(p->dwGuild, p->dwSkillVnum, false);
}
void CClientManager::SendGuildSkillUsable(DWORD guild_id, DWORD dwSkillVnum, bool bUsable)
{
sys_log(0, "SendGuildSkillUsable Send %u %d %s", guild_id, dwSkillVnum, bUsable?"true":"false");
SPDLOG_DEBUG("SendGuildSkillUsable Send {} {} {}", guild_id, dwSkillVnum, bUsable?"true":"false");
TPacketGuildSkillUsableChange p;

View File

@@ -11,7 +11,6 @@
extern std::string g_stLocale;
extern bool CreatePlayerTableFromRes(MYSQL_RES * res, TPlayerTable * pkTab);
extern int g_test_server;
extern int g_log;
bool CClientManager::InsertLogonAccount(const char * c_pszLogin, DWORD dwHandle, const char * c_pszIP)
{
@@ -49,7 +48,7 @@ bool CClientManager::DeleteLogonAccount(const char * c_pszLogin, DWORD dwHandle)
if (pkLD->GetConnectedPeerHandle() != dwHandle)
{
sys_err("%s tried to logout in other peer handle %lu, current handle %lu", szLogin, dwHandle, pkLD->GetConnectedPeerHandle());
SPDLOG_ERROR("{} tried to logout in other peer handle {}, current handle {}", szLogin, dwHandle, pkLD->GetConnectedPeerHandle());
return false;
}
@@ -87,7 +86,7 @@ void CClientManager::QUERY_LOGIN_BY_KEY(CPeer * pkPeer, DWORD dwHandle, TPacketG
if (!pkLoginData)
{
sys_log(0, "LOGIN_BY_KEY key not exist %s %lu", szLogin, p->dwLoginKey);
SPDLOG_DEBUG("LOGIN_BY_KEY key not exist {} {}", szLogin, p->dwLoginKey);
pkPeer->EncodeReturn(HEADER_DG_LOGIN_NOT_EXIST, dwHandle);
return;
}
@@ -96,7 +95,7 @@ void CClientManager::QUERY_LOGIN_BY_KEY(CPeer * pkPeer, DWORD dwHandle, TPacketG
if (FindLogonAccount(r.login))
{
sys_log(0, "LOGIN_BY_KEY already login %s %lu", r.login, p->dwLoginKey);
SPDLOG_DEBUG("LOGIN_BY_KEY already login {} {}", r.login, p->dwLoginKey);
TPacketDGLoginAlready ptog;
strlcpy(ptog.szLogin, szLogin, sizeof(ptog.szLogin));
pkPeer->EncodeHeader(HEADER_DG_LOGIN_ALREADY, dwHandle, sizeof(TPacketDGLoginAlready));
@@ -106,7 +105,7 @@ void CClientManager::QUERY_LOGIN_BY_KEY(CPeer * pkPeer, DWORD dwHandle, TPacketG
if (strcasecmp(r.login, szLogin))
{
sys_log(0, "LOGIN_BY_KEY login differ %s %lu input %s", r.login, p->dwLoginKey, szLogin);
SPDLOG_DEBUG("LOGIN_BY_KEY login differ {} {} input {}", r.login, p->dwLoginKey, szLogin);
pkPeer->EncodeReturn(HEADER_DG_LOGIN_NOT_EXIST, dwHandle);
return;
}
@@ -115,7 +114,7 @@ void CClientManager::QUERY_LOGIN_BY_KEY(CPeer * pkPeer, DWORD dwHandle, TPacketG
{
const DWORD * pdwClientKey = pkLoginData->GetClientKey();
sys_log(0, "LOGIN_BY_KEY client key differ %s %lu %lu %lu %lu, %lu %lu %lu %lu",
SPDLOG_DEBUG("LOGIN_BY_KEY client key differ {} {} {} {} {}, {} {} {} {}",
r.login,
p->adwClientKey[0], p->adwClientKey[1], p->adwClientKey[2], p->adwClientKey[3],
pdwClientKey[0], pdwClientKey[1], pdwClientKey[2], pdwClientKey[3]);
@@ -137,7 +136,7 @@ void CClientManager::QUERY_LOGIN_BY_KEY(CPeer * pkPeer, DWORD dwHandle, TPacketG
info->pAccountTable = pkTab;
strlcpy(info->ip, p->szIP, sizeof(info->ip));
sys_log(0, "LOGIN_BY_KEY success %s %lu %s", r.login, p->dwLoginKey, info->ip);
SPDLOG_DEBUG("LOGIN_BY_KEY success {} {} {}", r.login, p->dwLoginKey, info->ip);
char szQuery[QUERY_MAX_LEN];
snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), r.id);
CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info);
@@ -164,11 +163,11 @@ void CClientManager::RESULT_LOGIN_BY_KEY(CPeer * peer, SQLMsg * msg)
snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), account_id);
std::unique_ptr<SQLMsg> pMsg(CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER));
sys_log(0, "RESULT_LOGIN_BY_KEY FAIL player_index's NULL : ID:%d", account_id);
SPDLOG_DEBUG("RESULT_LOGIN_BY_KEY FAIL player_index's NULL : ID:{}", account_id);
if (pMsg->Get()->uiNumRows == 0)
{
sys_log(0, "RESULT_LOGIN_BY_KEY FAIL player_index's NULL : ID:%d", account_id);
SPDLOG_DEBUG("RESULT_LOGIN_BY_KEY FAIL player_index's NULL : ID:{}", account_id);
// PLAYER_INDEX_CREATE_BUG_FIX
//snprintf(szQuery, sizeof(szQuery), "INSERT IGNORE INTO player_index%s (id) VALUES(%lu)", GetTablePostfix(), info->pAccountTable->id);
@@ -332,14 +331,14 @@ void CreateAccountPlayerDataFromRes(MYSQL_RES * pRes, TAccountTable * pkTab)
str_to_number(pkTab->players[j].bChangeName, row[col++]);
}
sys_log(0, "%s %lu %lu hair %u",
SPDLOG_DEBUG("{} {} {} hair {}",
pkTab->players[j].szName, pkTab->players[j].x, pkTab->players[j].y, pkTab->players[j].wHairPart);
break;
}
}
/*
if (j == PLAYER_PER_ACCOUNT)
sys_err("cannot find player_id on this account (login: %s id %lu account %lu %lu %lu)",
SPDLOG_ERROR("cannot find player_id on this account (login: {} id {} account {} {} {})",
pkTab->login, player_id,
pkTab->players[0].dwID,
pkTab->players[1].dwID,
@@ -358,7 +357,7 @@ void CClientManager::RESULT_LOGIN(CPeer * peer, SQLMsg * msg)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>?
if (msg->Get()->uiNumRows == 0)
{
sys_log(0, "RESULT_LOGIN: no account");
SPDLOG_DEBUG("RESULT_LOGIN: no account");
peer->EncodeHeader(HEADER_DG_LOGIN_NOT_EXIST, info->dwHandle, 0);
delete info;
return;
@@ -368,7 +367,7 @@ void CClientManager::RESULT_LOGIN(CPeer * peer, SQLMsg * msg)
if (!info->pAccountTable)
{
sys_log(0, "RESULT_LOGIN: no account : WRONG_PASSWD");
SPDLOG_DEBUG("RESULT_LOGIN: no account : WRONG_PASSWD");
peer->EncodeReturn(HEADER_DG_LOGIN_WRONG_PASSWD, info->dwHandle);
delete info;
}
@@ -407,7 +406,7 @@ void CClientManager::RESULT_LOGIN(CPeer * peer, SQLMsg * msg)
// <20>ٸ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD> <20>̹<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20>ع<EFBFBD><D8B9>ȴٸ<C8B4>.. <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ߴٰ<DFB4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
if (!InsertLogonAccount(info->pAccountTable->login, peer->GetHandle(), info->ip))
{
sys_log(0, "RESULT_LOGIN: already logon %s", info->pAccountTable->login);
SPDLOG_DEBUG("RESULT_LOGIN: already logon {}", info->pAccountTable->login);
TPacketDGLoginAlready p;
strlcpy(p.szLogin, info->pAccountTable->login, sizeof(p.szLogin));
@@ -417,7 +416,7 @@ void CClientManager::RESULT_LOGIN(CPeer * peer, SQLMsg * msg)
}
else
{
sys_log(0, "RESULT_LOGIN: login success %s rows: %lu", info->pAccountTable->login, msg->Get()->uiNumRows);
SPDLOG_DEBUG("RESULT_LOGIN: login success {} rows: {}", info->pAccountTable->login, msg->Get()->uiNumRows);
if (msg->Get()->uiNumRows > 0)
CreateAccountPlayerDataFromRes(msg->Get()->pSQLResult, info->pAccountTable);
@@ -456,23 +455,20 @@ void CClientManager::QUERY_LOGOUT(CPeer * peer, DWORD dwHandle,const char * data
{
if (pLoginData->GetAccountRef().players[n].dwID == 0)
{
if (g_test_server)
sys_log(0, "LOGOUT %s %d", packet->login, pLoginData->GetAccountRef().players[n].dwID);
SPDLOG_TRACE("LOGOUT {} {}", packet->login, pLoginData->GetAccountRef().players[n].dwID);
continue;
}
pid[n] = pLoginData->GetAccountRef().players[n].dwID;
if (g_log)
sys_log(0, "LOGOUT InsertLogoutPlayer %s %d", packet->login, pid[n]);
SPDLOG_TRACE("LOGOUT InsertLogoutPlayer {} {}", packet->login, pid[n]);
InsertLogoutPlayer(pid[n]);
}
if (DeleteLogonAccount(packet->login, peer->GetHandle()))
{
if (g_log)
sys_log(0, "LOGOUT %s ", packet->login);
SPDLOG_TRACE("LOGOUT {} ", packet->login);
}
}

View File

@@ -13,11 +13,11 @@ void CClientManager::QUERY_PARTY_CREATE(CPeer* peer, TPacketPartyCreate* p)
{
pm.insert(make_pair(p->dwLeaderPID, TPartyMember()));
ForwardPacket(HEADER_DG_PARTY_CREATE, p, sizeof(TPacketPartyCreate), peer->GetChannel(), peer);
sys_log(0, "PARTY Create [%lu]", p->dwLeaderPID);
SPDLOG_DEBUG("PARTY Create [{}]", p->dwLeaderPID);
}
else
{
sys_err("PARTY Create - Already exists [%lu]", p->dwLeaderPID);
SPDLOG_ERROR("PARTY Create - Already exists [{}]", p->dwLeaderPID);
}
}
@@ -28,13 +28,13 @@ void CClientManager::QUERY_PARTY_DELETE(CPeer* peer, TPacketPartyDelete* p)
if (it == pm.end())
{
sys_err("PARTY Delete - Non exists [%lu]", p->dwLeaderPID);
SPDLOG_ERROR("PARTY Delete - Non exists [{}]", p->dwLeaderPID);
return;
}
pm.erase(it);
ForwardPacket(HEADER_DG_PARTY_DELETE, p, sizeof(TPacketPartyDelete), peer->GetChannel(), peer);
sys_log(0, "PARTY Delete [%lu]", p->dwLeaderPID);
SPDLOG_DEBUG("PARTY Delete [{}]", p->dwLeaderPID);
}
void CClientManager::QUERY_PARTY_ADD(CPeer* peer, TPacketPartyAdd* p)
@@ -44,7 +44,7 @@ void CClientManager::QUERY_PARTY_ADD(CPeer* peer, TPacketPartyAdd* p)
if (it == pm.end())
{
sys_err("PARTY Add - Non exists [%lu]", p->dwLeaderPID);
SPDLOG_ERROR("PARTY Add - Non exists [{}]", p->dwLeaderPID);
return;
}
@@ -52,10 +52,10 @@ void CClientManager::QUERY_PARTY_ADD(CPeer* peer, TPacketPartyAdd* p)
{
it->second.insert(std::make_pair(p->dwPID, TPartyInfo()));
ForwardPacket(HEADER_DG_PARTY_ADD, p, sizeof(TPacketPartyAdd), peer->GetChannel(), peer);
sys_log(0, "PARTY Add [%lu] to [%lu]", p->dwPID, p->dwLeaderPID);
SPDLOG_DEBUG("PARTY Add [{}] to [{}]", p->dwPID, p->dwLeaderPID);
}
else
sys_err("PARTY Add - Already [%lu] in party [%lu]", p->dwPID, p->dwLeaderPID);
SPDLOG_ERROR("PARTY Add - Already [{}] in party [{}]", p->dwPID, p->dwLeaderPID);
}
void CClientManager::QUERY_PARTY_REMOVE(CPeer* peer, TPacketPartyRemove* p)
@@ -65,7 +65,7 @@ void CClientManager::QUERY_PARTY_REMOVE(CPeer* peer, TPacketPartyRemove* p)
if (it == pm.end())
{
sys_err("PARTY Remove - Non exists [%lu] cannot remove [%lu]",p->dwLeaderPID, p->dwPID);
SPDLOG_ERROR("PARTY Remove - Non exists [{}] cannot remove [{}]",p->dwLeaderPID, p->dwPID);
return;
}
@@ -75,10 +75,10 @@ void CClientManager::QUERY_PARTY_REMOVE(CPeer* peer, TPacketPartyRemove* p)
{
it->second.erase(pit);
ForwardPacket(HEADER_DG_PARTY_REMOVE, p, sizeof(TPacketPartyRemove), peer->GetChannel(), peer);
sys_log(0, "PARTY Remove [%lu] to [%lu]", p->dwPID, p->dwLeaderPID);
SPDLOG_DEBUG("PARTY Remove [{}] to [{}]", p->dwPID, p->dwLeaderPID);
}
else
sys_err("PARTY Remove - Cannot find [%lu] in party [%lu]", p->dwPID, p->dwLeaderPID);
SPDLOG_ERROR("PARTY Remove - Cannot find [{}] in party [{}]", p->dwPID, p->dwLeaderPID);
}
void CClientManager::QUERY_PARTY_STATE_CHANGE(CPeer* peer, TPacketPartyStateChange* p)
@@ -88,7 +88,7 @@ void CClientManager::QUERY_PARTY_STATE_CHANGE(CPeer* peer, TPacketPartyStateChan
if (it == pm.end())
{
sys_err("PARTY StateChange - Non exists [%lu] cannot state change [%lu]",p->dwLeaderPID, p->dwPID);
SPDLOG_ERROR("PARTY StateChange - Non exists [{}] cannot state change [{}]",p->dwLeaderPID, p->dwPID);
return;
}
@@ -96,7 +96,7 @@ void CClientManager::QUERY_PARTY_STATE_CHANGE(CPeer* peer, TPacketPartyStateChan
if (pit == it->second.end())
{
sys_err("PARTY StateChange - Cannot find [%lu] in party [%lu]", p->dwPID, p->dwLeaderPID);
SPDLOG_ERROR("PARTY StateChange - Cannot find [{}] in party [{}]", p->dwPID, p->dwLeaderPID);
return;
}
@@ -106,7 +106,7 @@ void CClientManager::QUERY_PARTY_STATE_CHANGE(CPeer* peer, TPacketPartyStateChan
pit->second.bRole = 0;
ForwardPacket(HEADER_DG_PARTY_STATE_CHANGE, p, sizeof(TPacketPartyStateChange), peer->GetChannel(), peer);
sys_log(0, "PARTY StateChange [%lu] at [%lu] from %d %d",p->dwPID, p->dwLeaderPID, p->bRole, p->bFlag);
SPDLOG_DEBUG("PARTY StateChange [{}] at [{}] from {} {}",p->dwPID, p->dwLeaderPID, p->bRole, p->bFlag);
}
void CClientManager::QUERY_PARTY_SET_MEMBER_LEVEL(CPeer* peer, TPacketPartySetMemberLevel* p)
@@ -116,7 +116,7 @@ void CClientManager::QUERY_PARTY_SET_MEMBER_LEVEL(CPeer* peer, TPacketPartySetMe
if (it == pm.end())
{
sys_err("PARTY SetMemberLevel - Non exists [%lu] cannot level change [%lu]",p->dwLeaderPID, p->dwPID);
SPDLOG_ERROR("PARTY SetMemberLevel - Non exists [{}] cannot level change [{}]",p->dwLeaderPID, p->dwPID);
return;
}
@@ -124,12 +124,12 @@ void CClientManager::QUERY_PARTY_SET_MEMBER_LEVEL(CPeer* peer, TPacketPartySetMe
if (pit == it->second.end())
{
sys_err("PARTY SetMemberLevel - Cannot find [%lu] in party [%lu]", p->dwPID, p->dwLeaderPID);
SPDLOG_ERROR("PARTY SetMemberLevel - Cannot find [{}] in party [{}]", p->dwPID, p->dwLeaderPID);
return;
}
pit->second.bLevel = p->bLevel;
ForwardPacket(HEADER_DG_PARTY_SET_MEMBER_LEVEL, p, sizeof(TPacketPartySetMemberLevel), peer->GetChannel());
sys_log(0, "PARTY SetMemberLevel pid [%lu] level %d",p->dwPID, p->bLevel);
SPDLOG_DEBUG("PARTY SetMemberLevel pid [{}] level {}",p->dwPID, p->bLevel);
}

View File

@@ -13,7 +13,6 @@ extern bool g_bHotBackup;
extern std::string g_stLocale;
extern int g_test_server;
extern int g_log;
//
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -236,7 +235,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
if (!pkLD || pkLD->IsPlay())
{
sys_log(0, "PLAYER_LOAD_ERROR: LoginData %p IsPlay %d", pkLD, pkLD ? pkLD->IsPlay() : 0);
SPDLOG_DEBUG("PLAYER_LOAD_ERROR: LoginData {} IsPlay {}", (void*) pkLD, pkLD ? pkLD->IsPlay() : 0);
peer->EncodeHeader(HEADER_DG_PLAYER_LOAD_FAILED, dwHandle, 0);
return;
}
@@ -265,7 +264,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
TItemCacheSet * pSet = GetItemCacheSet(pTab->id);
sys_log(0, "[PLAYER_LOAD] ID %s pid %d gold %d ", pTab->name, pTab->id, pTab->gold);
SPDLOG_DEBUG("[PLAYER_LOAD] ID {} pid {} gold {} ", pTab->name, pTab->id, pTab->gold);
//--------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> & AFFECT & QUEST <20>ε<EFBFBD> :
@@ -293,8 +292,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
memcpy(&s_items[dwCount++], p, sizeof(TPlayerItem));
}
if (g_test_server)
sys_log(0, "ITEM_CACHE: HIT! %s count: %u", pTab->name, dwCount);
SPDLOG_TRACE("ITEM_CACHE: HIT! {} count: {}", pTab->name, dwCount);
peer->EncodeHeader(HEADER_DG_ITEM_LOAD, dwHandle, sizeof(DWORD) + sizeof(TPlayerItem) * dwCount);
peer->EncodeDWORD(dwCount);
@@ -354,7 +352,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
//----------------------------------
else
{
sys_log(0, "[PLAYER_LOAD] Load from PlayerDB pid[%d]", packet->player_id);
SPDLOG_DEBUG("[PLAYER_LOAD] Load from PlayerDB pid[{}]", packet->player_id);
char queryStr[QUERY_MAX_LEN];
@@ -554,26 +552,26 @@ void CClientManager::RESULT_COMPOSITE_PLAYER(CPeer * peer, SQLMsg * pMsg, DWORD
MYSQL_RES * pSQLResult = pMsg->Get()->pSQLResult;
if (!pSQLResult)
{
sys_err("null MYSQL_RES QID %u", dwQID);
SPDLOG_ERROR("null MYSQL_RES QID {}", dwQID);
return;
}
switch (dwQID)
{
case QID_PLAYER:
sys_log(0, "QID_PLAYER %u %u", info->dwHandle, info->player_id);
SPDLOG_DEBUG("QID_PLAYER {} {}", info->dwHandle, info->player_id);
RESULT_PLAYER_LOAD(peer, pSQLResult, info.get());
break;
case QID_ITEM:
sys_log(0, "QID_ITEM %u", info->dwHandle);
SPDLOG_DEBUG("QID_ITEM {}", info->dwHandle);
RESULT_ITEM_LOAD(peer, pSQLResult, info->dwHandle, info->player_id);
break;
case QID_QUEST:
{
sys_log(0, "QID_QUEST %u", info->dwHandle);
SPDLOG_DEBUG("QID_QUEST {}", info->dwHandle);
RESULT_QUEST_LOAD(peer, pSQLResult, info->dwHandle, info->player_id);
//aid<69><64><EFBFBD><EFBFBD>
ClientHandleInfo* temp1 = info.get();
@@ -586,42 +584,42 @@ void CClientManager::RESULT_COMPOSITE_PLAYER(CPeer * peer, SQLMsg * pMsg, DWORD
break;
if( pLoginData1 == NULL )
break;
sys_log(0,"info of pLoginData1 before call ItemAwardfunction %d",pLoginData1);
SPDLOG_DEBUG("info of pLoginData1 before call ItemAwardfunction {}", (void*) pLoginData1);
ItemAward(peer,pLoginData1->GetAccountRef().login);
}
break;
case QID_AFFECT:
sys_log(0, "QID_AFFECT %u", info->dwHandle);
SPDLOG_DEBUG("QID_AFFECT {}", info->dwHandle);
RESULT_AFFECT_LOAD(peer, pSQLResult, info->dwHandle);
break;
/*
case QID_PLAYER_ITEM_QUEST_AFFECT:
sys_log(0, "QID_PLAYER_ITEM_QUEST_AFFECT %u", info->dwHandle);
SPDLOG_DEBUG("QID_PLAYER_ITEM_QUEST_AFFECT {}", info->dwHandle);
RESULT_PLAYER_LOAD(peer, pSQLResult, info->dwHandle);
if (!pMsg->Next())
{
sys_err("RESULT_COMPOSITE_PLAYER: QID_PLAYER_ITEM_QUEST_AFFECT: ITEM FAILED");
SPDLOG_ERROR("RESULT_COMPOSITE_PLAYER: QID_PLAYER_ITEM_QUEST_AFFECT: ITEM FAILED");
return;
}
case QID_ITEM_QUEST_AFFECT:
sys_log(0, "QID_ITEM_QUEST_AFFECT %u", info->dwHandle);
SPDLOG_DEBUG("QID_ITEM_QUEST_AFFECT {}", info->dwHandle);
RESULT_ITEM_LOAD(peer, pSQLResult, info->dwHandle, info->player_id);
if (!pMsg->Next())
{
sys_err("RESULT_COMPOSITE_PLAYER: QID_PLAYER_ITEM_QUEST_AFFECT: QUEST FAILED");
SPDLOG_ERROR("RESULT_COMPOSITE_PLAYER: QID_PLAYER_ITEM_QUEST_AFFECT: QUEST FAILED");
return;
}
case QID_QUEST_AFFECT:
sys_log(0, "QID_QUEST_AFFECT %u", info->dwHandle);
SPDLOG_DEBUG("QID_QUEST_AFFECT {}", info->dwHandle);
RESULT_QUEST_LOAD(peer, pSQLResult, info->dwHandle);
if (!pMsg->Next())
sys_err("RESULT_COMPOSITE_PLAYER: QID_PLAYER_ITEM_QUEST_AFFECT: AFFECT FAILED");
SPDLOG_ERROR("RESULT_COMPOSITE_PLAYER: QID_PLAYER_ITEM_QUEST_AFFECT: AFFECT FAILED");
else
RESULT_AFFECT_LOAD(peer, pSQLResult, info->dwHandle);
@@ -645,7 +643,7 @@ void CClientManager::RESULT_PLAYER_LOAD(CPeer * peer, MYSQL_RES * pRes, ClientHa
if (!pkLD || pkLD->IsPlay())
{
sys_log(0, "PLAYER_LOAD_ERROR: LoginData %p IsPlay %d", pkLD, pkLD ? pkLD->IsPlay() : 0);
SPDLOG_DEBUG("PLAYER_LOAD_ERROR: LoginData {} IsPlay {}", (void*) pkLD, pkLD ? pkLD->IsPlay() : 0);
peer->EncodeHeader(HEADER_DG_PLAYER_LOAD_FAILED, pkInfo->dwHandle, 0);
return;
}
@@ -683,7 +681,7 @@ void CClientManager::RESULT_ITEM_LOAD(CPeer * peer, MYSQL_RES * pRes, DWORD dwHa
CreateItemCacheSet(dwPID);
// ITEM_LOAD_LOG_ATTACH_PID
sys_log(0, "ITEM_LOAD: count %u pid %u", dwCount, dwPID);
SPDLOG_DEBUG("ITEM_LOAD: count {} pid {}", dwCount, dwPID);
// END_OF_ITEM_LOAD_LOG_ATTACH_PID
if (dwCount)
@@ -725,7 +723,7 @@ void CClientManager::RESULT_AFFECT_LOAD(CPeer * peer, MYSQL_RES * pRes, DWORD dw
str_to_number(r.lSPCost, row[6]);
}
sys_log(0, "AFFECT_LOAD: count %d PID %u", s_elements.size(), dwPID);
SPDLOG_DEBUG("AFFECT_LOAD: count {} PID {}", s_elements.size(), dwPID);
DWORD dwCount = s_elements.size();
@@ -764,7 +762,7 @@ void CClientManager::RESULT_QUEST_LOAD(CPeer * peer, MYSQL_RES * pRes, DWORD dwH
str_to_number(r.lValue, row[3]);
}
sys_log(0, "QUEST_LOAD: count %d PID %u", s_table.size(), s_table[0].dwPID);
SPDLOG_DEBUG("QUEST_LOAD: count {} PID {}", s_table.size(), s_table[0].dwPID);
DWORD dwCount = s_table.size();
@@ -778,8 +776,7 @@ void CClientManager::RESULT_QUEST_LOAD(CPeer * peer, MYSQL_RES * pRes, DWORD dwH
*/
void CClientManager::QUERY_PLAYER_SAVE(CPeer * peer, DWORD dwHandle, TPlayerTable * pkTab)
{
if (g_test_server)
sys_log(0, "PLAYER_SAVE: %s", pkTab->name);
SPDLOG_TRACE("PLAYER_SAVE: {}", pkTab->name);
PutPlayerCache(pkTab);
}
@@ -829,7 +826,7 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
if (row[0] && dwPID > 0)
{
peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_ALREADY, dwHandle, 0);
sys_log(0, "ALREADY EXIST AccountChrIdx %d ID %d", packet->account_index, dwPID);
SPDLOG_DEBUG("ALREADY EXIST AccountChrIdx {} ID {}", packet->account_index, dwPID);
return;
}
}
@@ -861,7 +858,7 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
if (*row[0] != '0')
{
sys_log(0, "ALREADY EXIST name %s, row[0] %s query %s", packet->player_table.name, row[0], queryStr);
SPDLOG_DEBUG("ALREADY EXIST name {}, row[0] {} query {}", packet->player_table.name, row[0], queryStr);
peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_ALREADY, dwHandle, 0);
return;
}
@@ -886,7 +883,7 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
packet->player_table.job, packet->player_table.voice, packet->player_table.dir, packet->player_table.x, packet->player_table.y, packet->player_table.z,
packet->player_table.hp, packet->player_table.sp, packet->player_table.sRandomHP, packet->player_table.sRandomSP, packet->player_table.stat_point, packet->player_table.stamina, packet->player_table.part_base, packet->player_table.part_base, packet->player_table.gold);
sys_log(0, "PlayerCreate accountid %d name %s level %d gold %d, st %d ht %d job %d",
SPDLOG_DEBUG("PlayerCreate accountid {} name {} level {} gold {}, st {} ht {} job {}",
packet->account_id,
packet->player_table.name,
packet->player_table.level,
@@ -899,20 +896,18 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
CDBManager::instance().EscapeString(text, packet->player_table.skills, sizeof(packet->player_table.skills));
queryLen += snprintf(queryStr + queryLen, sizeof(queryStr) - queryLen, "'%s', ", text);
if (g_test_server)
sys_log(0, "Create_Player queryLen[%d] TEXT[%s]", queryLen, text);
SPDLOG_TRACE("Create_Player queryLen[{}] TEXT[{}]", queryLen, text);
CDBManager::instance().EscapeString(text, packet->player_table.quickslot, sizeof(packet->player_table.quickslot));
queryLen += snprintf(queryStr + queryLen, sizeof(queryStr) - queryLen, "'%s')", text);
std::unique_ptr<SQLMsg> pMsg2(CDBManager::instance().DirectQuery(queryStr));
if (g_test_server)
sys_log(0, "Create_Player queryLen[%d] TEXT[%s]", queryLen, text);
SPDLOG_TRACE("Create_Player queryLen[{}] TEXT[{}]", queryLen, text);
if (pMsg2->Get()->uiAffectedRows <= 0)
{
peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_ALREADY, dwHandle, 0);
sys_log(0, "ALREADY EXIST3 query: %s AffectedRows %lu", queryStr, pMsg2->Get()->uiAffectedRows);
SPDLOG_DEBUG("ALREADY EXIST3 query: {} AffectedRows {}", queryStr, pMsg2->Get()->uiAffectedRows);
return;
}
@@ -924,7 +919,7 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
if (pMsg3->Get()->uiAffectedRows <= 0)
{
sys_err("QUERY_ERROR: %s", queryStr);
SPDLOG_ERROR("QUERY_ERROR: {}", queryStr);
snprintf(queryStr, sizeof(queryStr), "DELETE FROM player%s WHERE id=%d", GetTablePostfix(), player_id);
CDBManager::instance().DirectQuery(queryStr);
@@ -954,7 +949,7 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_SUCCESS, dwHandle, sizeof(TPacketDGCreateSuccess));
peer->Encode(&pack, sizeof(TPacketDGCreateSuccess));
sys_log(0, "7 name %s job %d", pack.player.szName, pack.player.byJob);
SPDLOG_DEBUG("7 name {} job {}", pack.player.szName, pack.player.byJob);
s_createTimeByAccountID[packet->account_id] = time(0);
}
@@ -985,7 +980,7 @@ void CClientManager::__QUERY_PLAYER_DELETE(CPeer* peer, DWORD dwHandle, TPlayerD
{
if (strlen(r.social_id) < 7 || strncmp(packet->private_code, r.social_id + strlen(r.social_id) - 7, 7))
{
sys_log(0, "PLAYER_DELETE FAILED len(%d)", strlen(r.social_id));
SPDLOG_DEBUG("PLAYER_DELETE FAILED len({})", strlen(r.social_id));
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
peer->EncodeBYTE(packet->account_index);
return;
@@ -998,7 +993,7 @@ void CClientManager::__QUERY_PLAYER_DELETE(CPeer* peer, DWORD dwHandle, TPlayerD
if (pTab->level >= m_iPlayerDeleteLevelLimit)
{
sys_log(0, "PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d", pTab->level, m_iPlayerDeleteLevelLimit);
SPDLOG_DEBUG("PLAYER_DELETE FAILED LEVEL {} >= DELETE LIMIT {}", pTab->level, m_iPlayerDeleteLevelLimit);
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
peer->EncodeBYTE(packet->account_index);
return;
@@ -1006,7 +1001,7 @@ void CClientManager::__QUERY_PLAYER_DELETE(CPeer* peer, DWORD dwHandle, TPlayerD
if (pTab->level < m_iPlayerDeleteLevelLimitLower)
{
sys_log(0, "PLAYER_DELETE FAILED LEVEL %u < DELETE LIMIT %d", pTab->level, m_iPlayerDeleteLevelLimitLower);
SPDLOG_DEBUG("PLAYER_DELETE FAILED LEVEL {} < DELETE LIMIT {}", pTab->level, m_iPlayerDeleteLevelLimitLower);
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
peer->EncodeBYTE(packet->account_index);
return;
@@ -1022,7 +1017,7 @@ void CClientManager::__QUERY_PLAYER_DELETE(CPeer* peer, DWORD dwHandle, TPlayerD
ClientHandleInfo * pi = new ClientHandleInfo(dwHandle, packet->player_id);
pi->account_index = packet->account_index;
sys_log(0, "PLAYER_DELETE TRY: %s %d pid%d", packet->login, packet->player_id, packet->account_index + 1);
SPDLOG_DEBUG("PLAYER_DELETE TRY: {} {} pid{}", packet->login, packet->player_id, packet->account_index + 1);
CDBManager::instance().ReturnQuery(szQuery, QID_PLAYER_DELETE, peer->GetHandle(), pi);
}
@@ -1049,7 +1044,7 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
if (deletedLevelLimit >= m_iPlayerDeleteLevelLimit && !IsChinaEventServer())
{
sys_log(0, "PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d", deletedLevelLimit, m_iPlayerDeleteLevelLimit);
SPDLOG_DEBUG("PLAYER_DELETE FAILED LEVEL {} >= DELETE LIMIT {}", deletedLevelLimit, m_iPlayerDeleteLevelLimit);
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1);
peer->EncodeBYTE(pi->account_index);
return;
@@ -1057,7 +1052,7 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
if (deletedLevelLimit < m_iPlayerDeleteLevelLimitLower)
{
sys_log(0, "PLAYER_DELETE FAILED LEVEL %u < DELETE LIMIT %d", deletedLevelLimit, m_iPlayerDeleteLevelLimitLower);
SPDLOG_DEBUG("PLAYER_DELETE FAILED LEVEL {} < DELETE LIMIT {}", deletedLevelLimit, m_iPlayerDeleteLevelLimitLower);
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1);
peer->EncodeBYTE(pi->account_index);
return;
@@ -1071,7 +1066,7 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
if (pIns->Get()->uiAffectedRows == 0 || pIns->Get()->uiAffectedRows == (uint32_t)-1)
{
sys_log(0, "PLAYER_DELETE FAILED %u CANNOT INSERT TO player%s_deleted", dwPID, GetTablePostfix());
SPDLOG_DEBUG("PLAYER_DELETE FAILED {} CANNOT INSERT TO player{}_deleted", dwPID, GetTablePostfix());
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1);
peer->EncodeBYTE(pi->account_index);
@@ -1079,7 +1074,7 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
sys_log(0, "PLAYER_DELETE SUCCESS %u", dwPID);
SPDLOG_DEBUG("PLAYER_DELETE SUCCESS {}", dwPID);
char account_index_string[16];
@@ -1123,7 +1118,7 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
if (pMsg->Get()->uiAffectedRows == 0 || pMsg->Get()->uiAffectedRows == (uint32_t)-1)
{
sys_log(0, "PLAYER_DELETE FAIL WHEN UPDATE account table");
SPDLOG_DEBUG("PLAYER_DELETE FAIL WHEN UPDATE account table");
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1);
peer->EncodeBYTE(pi->account_index);
return;
@@ -1158,7 +1153,7 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
else
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
sys_log(0, "PLAYER_DELETE FAIL NO ROW");
SPDLOG_DEBUG("PLAYER_DELETE FAIL NO ROW");
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1);
peer->EncodeBYTE(pi->account_index);
}
@@ -1217,7 +1212,7 @@ void CClientManager::QUERY_HIGHSCORE_REGISTER(CPeer* peer, TPacketGDHighscore *
char szQuery[128];
snprintf(szQuery, sizeof(szQuery), "SELECT value FROM highscore%s WHERE board='%s' AND pid = %u", GetTablePostfix(), data->szBoard, data->dwPID);
sys_log(0, "HEADER_GD_HIGHSCORE_REGISTER: PID %u", data->dwPID);
SPDLOG_DEBUG("HEADER_GD_HIGHSCORE_REGISTER: PID {}", data->dwPID);
ClientHandleInfo * pi = new ClientHandleInfo(0);
strlcpy(pi->login, data->szBoard, sizeof(pi->login));
@@ -1289,8 +1284,7 @@ void CClientManager::InsertLogoutPlayer(DWORD pid)
if (it != m_map_logout.end())
{
// <20><><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><D2B0><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD>
if (g_log)
sys_log(0, "LOGOUT: Update player time pid(%d)", pid);
SPDLOG_TRACE("LOGOUT: Update player time pid({})", pid);
it->second->time = time(0);
return;
@@ -1301,8 +1295,7 @@ void CClientManager::InsertLogoutPlayer(DWORD pid)
pLogout->time = time(0);
m_map_logout.insert(std::make_pair(pid, pLogout));
if (g_log)
sys_log(0, "LOGOUT: Insert player pid(%d)", pid);
SPDLOG_TRACE("LOGOUT: Insert player pid({})", pid);
}
void CClientManager::DeleteLogoutPlayer(DWORD pid)

View File

@@ -171,7 +171,7 @@ bool CConfig::GetParam(const char*key, int index, DWORD *Param)
str_to_number(*Param, szParam[index]);
sys_log(0, "GetParam %d", *Param);
SPDLOG_DEBUG("GetParam {}", *Param);
return true;
}
const char * CConfig::Get(const char* key)

View File

@@ -98,7 +98,7 @@ int CDBManager::Connect(int iSlot, const char * db_address, const int db_port, c
if (iSlot < 0 || iSlot >= SQL_MAX_NUM)
return false;
sys_log(0, "CREATING DIRECT_SQL");
SPDLOG_INFO("CREATING DIRECT_SQL");
m_directSQL[iSlot] = new CAsyncSQL2;
if (!m_directSQL[iSlot]->Setup(db_address, user, pwd, db_name, g_stLocale.c_str(), true, db_port))
{
@@ -107,7 +107,7 @@ int CDBManager::Connect(int iSlot, const char * db_address, const int db_port, c
}
sys_log(0, "CREATING MAIN_SQL");
SPDLOG_INFO("CREATING MAIN_SQL");
m_mainSQL[iSlot] = new CAsyncSQL2;
if (!m_mainSQL[iSlot]->Setup(db_address, user, pwd, db_name, g_stLocale.c_str(), false, db_port))
{
@@ -115,7 +115,7 @@ int CDBManager::Connect(int iSlot, const char * db_address, const int db_port, c
return false;
}
sys_log(0, "CREATING ASYNC_SQL");
SPDLOG_INFO("CREATING ASYNC_SQL");
m_asyncSQL[iSlot] = new CAsyncSQL2;
if (!m_asyncSQL[iSlot]->Setup(db_address, user, pwd, db_name, g_stLocale.c_str(), false, db_port))
{
@@ -137,7 +137,7 @@ extern int g_query_count[2];
void CDBManager::ReturnQuery(const char * c_pszQuery, int iType, IDENT dwIdent, void * udata, int iSlot)
{
assert(iSlot < SQL_MAX_NUM);
//sys_log(0, "ReturnQuery %s", c_pszQuery);
//SPDLOG_DEBUG("ReturnQuery {}", c_pszQuery);
CQueryInfo * p = new CQueryInfo;
p->iType = iType;
@@ -166,14 +166,14 @@ unsigned int CDBManager::EscapeString(void *to, const void *from, unsigned int l
void CDBManager::SetLocale(const char * szLocale)
{
const std::string stLocale(szLocale);
sys_log(0, "SetLocale start" );
SPDLOG_DEBUG("SetLocale start");
for (int n = 0; n < SQL_MAX_NUM; ++n)
{
m_mainSQL[n]->SetLocale(stLocale);
m_directSQL[n]->SetLocale(stLocale);
m_asyncSQL[n]->SetLocale(stLocale);
}
sys_log(0, "End setlocale %s", szLocale);
SPDLOG_DEBUG("End setlocale {}", szLocale);
}
void CDBManager::QueryLocaleSet()

View File

@@ -145,8 +145,8 @@ void CGuildManager::ParseResult(SQLResult * pRes)
str_to_number(r_info.gold, row[6]);
str_to_number(r_info.level, row[7]);
sys_log(0,
"GuildWar: %-24s ladder %-5d win %-3d draw %-3d loss %-3d",
SPDLOG_DEBUG(
"GuildWar: {:24} ladder {:<5} win {:<3} draw {:<3} loss {:<3}",
r_info.szName,
r_info.ladder_point,
r_info.win,
@@ -170,17 +170,17 @@ void CGuildManager::Initialize()
*str = '\0';
if (!polyPower.Analyze(str))
sys_err("cannot set power poly: %s", str);
SPDLOG_ERROR("cannot set power poly: {}", str);
else
sys_log(0, "POWER_POLY: %s", str);
SPDLOG_DEBUG("POWER_POLY: {}", str);
if (!CConfig::instance().GetValue("POLY_HANDICAP", str, sizeof(str)))
*str = '\0';
if (!polyHandicap.Analyze(str))
sys_err("cannot set handicap poly: %s", str);
SPDLOG_ERROR("cannot set handicap poly: {}", str);
else
sys_log(0, "HANDICAP_POLY: %s", str);
SPDLOG_DEBUG("HANDICAP_POLY: {}", str);
QueryRanking();
}
@@ -234,7 +234,7 @@ void CGuildManager::ResultRanking(MYSQL_RES * pRes)
if (iLadderPoint != iLastLadderPoint)
++iRank;
sys_log(0, "GUILD_RANK: %-24s %2d %d", row[1], iRank, iLadderPoint);
SPDLOG_DEBUG("GUILD_RANK: {:24} {:2} {}", row[1], iRank, iLadderPoint);
map_kLadderPointRankingByGID.insert(std::make_pair(dwGID, iRank));
}
@@ -250,7 +250,7 @@ void CGuildManager::Update()
{
// UNKNOWN_GUILD_MANAGE_UPDATE_LOG
/*
sys_log(0, "GuildManager::Update size %d now %d top %d, %s(%u) vs %s(%u)",
SPDLOG_DEBUG("GuildManager::Update size {} now {} top {}, {}({}) vs {}({})",
m_WarMap.size(),
now,
m_pqOnWar.top().first,
@@ -307,7 +307,7 @@ void CGuildManager::Update()
p.dwGuildTo = ws.GID[1];
CClientManager::instance().ForwardPacket(HEADER_DG_GUILD_WAR, &p, sizeof(p));
sys_log(0, "GuildWar: GUILD sending start of wait start war %d %d", ws.GID[0], ws.GID[1]);
SPDLOG_DEBUG("GuildWar: GUILD sending start of wait start war {} {}", ws.GID[0], ws.GID[1]);
}
}
@@ -402,7 +402,7 @@ bool CGuildManager::IsHalfWinLadderPoint(DWORD dwGuildWinner, DWORD dwGuildLoser
void CGuildManager::ProcessDraw(DWORD dwGuildID1, DWORD dwGuildID2)
{
sys_log(0, "GuildWar: \tThe war between %d and %d is ended in draw", dwGuildID1, dwGuildID2);
SPDLOG_DEBUG("GuildWar: \tThe war between {} and {} is ended in draw", dwGuildID1, dwGuildID2);
GuildWarDraw(dwGuildID1);
GuildWarDraw(dwGuildID2);
@@ -416,7 +416,7 @@ void CGuildManager::ProcessWinLose(DWORD dwGuildWinner, DWORD dwGuildLoser)
{
GuildWarWin(dwGuildWinner);
GuildWarLose(dwGuildLoser);
sys_log(0, "GuildWar: \tWinner : %d Loser : %d", dwGuildWinner, dwGuildLoser);
SPDLOG_DEBUG("GuildWar: \tWinner : {} Loser : {}", dwGuildWinner, dwGuildLoser);
int iPoint = GetLadderPoint(dwGuildLoser);
int gain = (int)(iPoint * 0.05);
@@ -425,7 +425,7 @@ void CGuildManager::ProcessWinLose(DWORD dwGuildWinner, DWORD dwGuildLoser)
if (IsHalfWinLadderPoint(dwGuildWinner, dwGuildLoser))
gain /= 2;
sys_log(0, "GuildWar: \tgain : %d loss : %d", gain, loss);
SPDLOG_DEBUG("GuildWar: \tgain : {} loss : {}", gain, loss);
ChangeLadderPoint(dwGuildWinner, gain);
ChangeLadderPoint(dwGuildLoser, -loss);
@@ -435,7 +435,7 @@ void CGuildManager::ProcessWinLose(DWORD dwGuildWinner, DWORD dwGuildLoser)
void CGuildManager::RemoveWar(DWORD GID1, DWORD GID2)
{
sys_log(0, "GuildWar: RemoveWar(%d, %d)", GID1, GID2);
SPDLOG_DEBUG("GuildWar: RemoveWar({}, {})", GID1, GID2);
if (GID1 > GID2)
std::swap(GID2, GID1);
@@ -469,13 +469,13 @@ void CGuildManager::WarEnd(DWORD GID1, DWORD GID2, bool bForceDraw)
if (GID1 > GID2)
std::swap(GID2, GID1);
sys_log(0, "GuildWar: WarEnd %d %d", GID1, GID2);
SPDLOG_DEBUG("GuildWar: WarEnd {} {}", GID1, GID2);
itertype(m_WarMap[GID1]) itWarMap = m_WarMap[GID1].find(GID2);
if (itWarMap == m_WarMap[GID1].end())
{
sys_err("GuildWar: war not exist or already ended. [1]");
SPDLOG_ERROR("GuildWar: war not exist or already ended. [1]");
return;
}
@@ -484,7 +484,7 @@ void CGuildManager::WarEnd(DWORD GID1, DWORD GID2, bool bForceDraw)
if (!pData || pData->bEnd)
{
sys_err("GuildWar: war not exist or already ended. [2]");
SPDLOG_ERROR("GuildWar: war not exist or already ended. [2]");
return;
}
@@ -527,7 +527,7 @@ void CGuildManager::WarEnd(DWORD GID1, DWORD GID2, bool bForceDraw)
//
void CGuildManager::RecvWarOver(DWORD dwGuildWinner, DWORD dwGuildLoser, bool bDraw, int lWarPrice)
{
sys_log(0, "GuildWar: RecvWarOver : winner %u vs %u draw? %d war_price %d", dwGuildWinner, dwGuildLoser, bDraw ? 1 : 0, lWarPrice);
SPDLOG_DEBUG("GuildWar: RecvWarOver : winner {} vs {} draw? {} war_price {}", dwGuildWinner, dwGuildLoser, bDraw ? 1 : 0, lWarPrice);
DWORD GID1 = dwGuildWinner;
DWORD GID2 = dwGuildLoser;
@@ -570,13 +570,13 @@ void CGuildManager::RecvWarOver(DWORD dwGuildWinner, DWORD dwGuildLoser, bool bD
void CGuildManager::RecvWarEnd(DWORD GID1, DWORD GID2)
{
sys_log(0, "GuildWar: RecvWarEnded : %u vs %u", GID1, GID2);
SPDLOG_DEBUG("GuildWar: RecvWarEnded : {} vs {}", GID1, GID2);
WarEnd(GID1, GID2, true); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ѿ<EFBFBD> <20>Ѵ<EFBFBD>.
}
void CGuildManager::StartWar(BYTE bType, DWORD GID1, DWORD GID2, CGuildWarReserve * pkReserve)
{
sys_log(0, "GuildWar: StartWar(%d,%d,%d)", bType, GID1, GID2);
SPDLOG_DEBUG("GuildWar: StartWar({},{},{})", bType, GID1, GID2);
if (GID1 > GID2)
std::swap(GID1, GID2);
@@ -610,7 +610,7 @@ void CGuildManager::UpdateScore(DWORD dwGainGID, DWORD dwOppGID, int iScoreDelta
if (!p || p->bEnd)
{
sys_err("GuildWar: war not exist or already ended.");
SPDLOG_ERROR("GuildWar: war not exist or already ended.");
return;
}
@@ -634,7 +634,7 @@ void CGuildManager::UpdateScore(DWORD dwGainGID, DWORD dwOppGID, int iScoreDelta
iNewBetScore = p->iBetScore[1];
}
sys_log(0, "GuildWar: SendGuildWarScore guild %u wartype %u score_delta %d betscore_delta %d result %u, %u",
SPDLOG_DEBUG("GuildWar: SendGuildWarScore guild {} wartype {} score_delta {} betscore_delta {} result {}, {}",
dwGainGID, p->bType, iScoreDelta, iBetScoreDelta, iNewScore, iNewBetScore);
CClientManager::instance().for_each_peer(FSendGuildWarScore(dwGainGID, dwOppGID, iNewScore, iNewBetScore));
@@ -648,7 +648,7 @@ void CGuildManager::AddDeclare(BYTE bType, DWORD guild_from, DWORD guild_to)
if (m_DeclareMap.find(di) == m_DeclareMap.end())
m_DeclareMap.insert(di);
sys_log(0, "GuildWar: AddDeclare(Type:%d,from:%d,to:%d)", bType, guild_from, guild_to);
SPDLOG_DEBUG("GuildWar: AddDeclare(Type:{},from:{},to:{})", bType, guild_from, guild_to);
}
void CGuildManager::RemoveDeclare(DWORD guild_from, DWORD guild_to)
@@ -663,7 +663,7 @@ void CGuildManager::RemoveDeclare(DWORD guild_from, DWORD guild_to)
if (it != m_DeclareMap.end())
m_DeclareMap.erase(it);
sys_log(0, "GuildWar: RemoveDeclare(from:%d,to:%d)", guild_from, guild_to);
SPDLOG_DEBUG("GuildWar: RemoveDeclare(from:{},to:{})", guild_from, guild_to);
}
bool CGuildManager::TakeBetPrice(DWORD dwGuildTo, DWORD dwGuildFrom, int lWarPrice)
@@ -673,14 +673,14 @@ bool CGuildManager::TakeBetPrice(DWORD dwGuildTo, DWORD dwGuildFrom, int lWarPri
if (it_from == m_map_kGuild.end() || it_to == m_map_kGuild.end())
{
sys_log(0, "TakeBetPrice: guild not exist %u %u",
SPDLOG_DEBUG("TakeBetPrice: guild not exist {} {}",
dwGuildFrom, dwGuildTo);
return false;
}
if (it_from->second.gold < lWarPrice || it_to->second.gold < lWarPrice)
{
sys_log(0, "TakeBetPrice: not enough gold %u %d to %u %d",
SPDLOG_DEBUG("TakeBetPrice: not enough gold {} {} to {} {}",
dwGuildFrom, it_from->second.gold, dwGuildTo, it_to->second.gold);
return false;
}
@@ -704,8 +704,8 @@ bool CGuildManager::WaitStart(TPacketGuildWar * p)
TGuildWaitStartInfo info(p->bType, p->dwGuildFrom, p->dwGuildTo, p->lWarPrice, p->lInitialScore, NULL);
m_pqWaitStart.push(std::make_pair(dwCurTime + GetGuildWarWaitStartDuration(), info));
sys_log(0,
"GuildWar: WaitStart g1 %d g2 %d price %d start at %u",
SPDLOG_DEBUG(
"GuildWar: WaitStart g1 {} g2 {} price {} start at {}",
p->dwGuildFrom,
p->dwGuildTo,
p->lWarPrice,
@@ -742,8 +742,8 @@ void CGuildManager::ChangeLadderPoint(DWORD GID, int change)
snprintf(buf, sizeof(buf), "UPDATE guild%s SET ladder_point=%d WHERE id=%u", GetTablePostfix(), r.ladder_point, GID);
CDBManager::instance().AsyncQuery(buf);
sys_log(0, "GuildManager::ChangeLadderPoint %u %d", GID, r.ladder_point);
sys_log(0, "%s", buf);
SPDLOG_DEBUG("GuildManager::ChangeLadderPoint {} {}", GID, r.ladder_point);
SPDLOG_DEBUG("{}", buf);
// Packet <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TPacketGuildLadder p;
@@ -760,14 +760,14 @@ void CGuildManager::ChangeLadderPoint(DWORD GID, int change)
void CGuildManager::UseSkill(DWORD GID, DWORD dwSkillVnum, DWORD dwCooltime)
{
// GUILD_SKILL_COOLTIME_BUG_FIX
sys_log(0, "UseSkill(gid=%d, skill=%d) CoolTime(%d:%d)", GID, dwSkillVnum, dwCooltime, CClientManager::instance().GetCurrentTime() + dwCooltime);
SPDLOG_DEBUG("UseSkill(gid={}, skill={}) CoolTime({}:{})", GID, dwSkillVnum, dwCooltime, CClientManager::instance().GetCurrentTime() + dwCooltime);
m_pqSkill.push(std::make_pair(CClientManager::instance().GetCurrentTime() + dwCooltime, TGuildSkillUsed(GID, dwSkillVnum)));
// END_OF_GUILD_SKILL_COOLTIME_BUG_FIX
}
void CGuildManager::MoneyChange(DWORD dwGuild, DWORD dwGold)
{
sys_log(0, "GuildManager::MoneyChange %d %d", dwGuild, dwGold);
SPDLOG_DEBUG("GuildManager::MoneyChange {} {}", dwGuild, dwGold);
TPacketDGGuildMoneyChange p;
p.dwGuild = dwGuild;
@@ -788,12 +788,12 @@ void CGuildManager::DepositMoney(DWORD dwGuild, INT iGold)
if (it == m_map_kGuild.end())
{
sys_err("No guild by id %u", dwGuild);
SPDLOG_ERROR("No guild by id {}", dwGuild);
return;
}
it->second.gold += iGold;
sys_log(0, "GUILD: %u Deposit %u Total %d", dwGuild, iGold, it->second.gold);
SPDLOG_DEBUG("GUILD: {} Deposit {} Total {}", dwGuild, iGold, it->second.gold);
MoneyChange(dwGuild, it->second.gold);
}
@@ -804,7 +804,7 @@ void CGuildManager::WithdrawMoney(CPeer* peer, DWORD dwGuild, INT iGold)
if (it == m_map_kGuild.end())
{
sys_err("No guild by id %u", dwGuild);
SPDLOG_ERROR("No guild by id {}", dwGuild);
return;
}
@@ -812,7 +812,7 @@ void CGuildManager::WithdrawMoney(CPeer* peer, DWORD dwGuild, INT iGold)
if (it->second.gold >= iGold)
{
it->second.gold -= iGold;
sys_log(0, "GUILD: %u Withdraw %d Total %d", dwGuild, iGold, it->second.gold);
SPDLOG_DEBUG("GUILD: {} Withdraw {} Total {}", dwGuild, iGold, it->second.gold);
TPacketDGGuildMoneyWithdraw p;
p.dwGuild = dwGuild;
@@ -830,7 +830,7 @@ void CGuildManager::WithdrawMoneyReply(DWORD dwGuild, BYTE bGiveSuccess, INT iGo
if (it == m_map_kGuild.end())
return;
sys_log(0, "GuildManager::WithdrawMoneyReply : guild %u success %d gold %d", dwGuild, bGiveSuccess, iGold);
SPDLOG_DEBUG("GuildManager::WithdrawMoneyReply : guild {} success {} gold {}", dwGuild, bGiveSuccess, iGold);
if (!bGiveSuccess)
it->second.gold += iGold;
@@ -938,16 +938,16 @@ void CGuildManager::BootReserveWar()
if (i == 0 || (int) t.dwTime - CClientManager::instance().GetCurrentTime() < 0)
{
if (i == 0)
sys_log(0, "%s : DB was shutdowned while war is being.", buf);
SPDLOG_DEBUG("{} : DB was shutdowned while war is being.", buf);
else
sys_log(0, "%s : left time lower than 5 minutes, will be canceled", buf);
SPDLOG_DEBUG("{} : left time lower than 5 minutes, will be canceled", buf);
pkReserve->Draw();
delete pkReserve;
}
else
{
sys_log(0, "%s : OK", buf);
SPDLOG_DEBUG("{} : OK", buf);
m_map_kWarReserve.insert(std::make_pair(t.dwID, pkReserve));
}
}
@@ -1024,7 +1024,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
polyPower.SetVar("mc", mc);
t.lPowerFrom = (int) polyPower.Eval();
sys_log(0, "GuildWar: %u lvp %d rkp %d alv %d mc %d power %d", GID1, lvp, rkp, alv, mc, t.lPowerFrom);
SPDLOG_DEBUG("GuildWar: {} lvp {} rkp {} alv {} mc {} power {}", GID1, lvp, rkp, alv, mc, t.lPowerFrom);
// <20>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD>
TGuild & k2 = TouchGuild(GID2);
@@ -1040,7 +1040,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
polyPower.SetVar("mc", mc);
t.lPowerTo = (int) polyPower.Eval();
sys_log(0, "GuildWar: %u lvp %d rkp %d alv %d mc %d power %d", GID2, lvp, rkp, alv, mc, t.lPowerTo);
SPDLOG_DEBUG("GuildWar: {} lvp {} rkp {} alv {} mc {} power {}", GID2, lvp, rkp, alv, mc, t.lPowerTo);
// <20>ڵ<EFBFBD>ĸ <20><><EFBFBD><EFBFBD>
if (t.lPowerTo > t.lPowerFrom)
@@ -1055,7 +1055,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
}
t.lHandicap = (int) polyHandicap.Eval();
sys_log(0, "GuildWar: handicap %d", t.lHandicap);
SPDLOG_DEBUG("GuildWar: handicap {}", t.lHandicap);
// <20><><EFBFBD><EFBFBD>
char szQuery[512];
@@ -1069,7 +1069,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
if (pmsg->Get()->uiAffectedRows == 0 || pmsg->Get()->uiInsertID == 0 || pmsg->Get()->uiAffectedRows == (uint32_t)-1)
{
sys_err("GuildWar: Cannot insert row");
SPDLOG_ERROR("GuildWar: Cannot insert row");
return false;
}
@@ -1101,7 +1101,7 @@ void CGuildManager::ProcessReserveWar()
TGuild & r_1 = m_map_kGuild[r.dwGuildFrom];
TGuild & r_2 = m_map_kGuild[r.dwGuildTo];
sys_log(0, "GuildWar: started GID1 %u GID2 %u %d time %d min %d", r.dwGuildFrom, r.dwGuildTo, r.bStarted, dwCurTime - r.dwTime, iMin);
SPDLOG_DEBUG("GuildWar: started GID1 {} GID2 {} {} time {} min {}", r.dwGuildFrom, r.dwGuildTo, r.bStarted, dwCurTime - r.dwTime, iMin);
if (iMin <= 0)
{
@@ -1152,7 +1152,7 @@ bool CGuildManager::Bet(DWORD dwID, const char * c_pszLogin, DWORD dwGold, DWORD
if (it == m_map_kWarReserve.end())
{
sys_log(0, "WAR_RESERVE: Bet: cannot find reserve war by id %u", dwID);
SPDLOG_DEBUG("WAR_RESERVE: Bet: cannot find reserve war by id {}", dwID);
snprintf(szQuery, sizeof(szQuery), "INSERT INTO item_award (login, vnum, socket0, given_time) VALUES('%s', %d, %u, NOW())",
c_pszLogin, ITEM_ELK_VNUM, dwGold);
CDBManager::instance().AsyncQuery(szQuery);
@@ -1161,7 +1161,7 @@ bool CGuildManager::Bet(DWORD dwID, const char * c_pszLogin, DWORD dwGold, DWORD
if (!it->second->Bet(c_pszLogin, dwGold, dwGuild))
{
sys_log(0, "WAR_RESERVE: Bet: cannot bet id %u, login %s, gold %u, guild %u", dwID, c_pszLogin, dwGold, dwGuild);
SPDLOG_DEBUG("WAR_RESERVE: Bet: cannot bet id {}, login {}, gold {}, guild {}", dwID, c_pszLogin, dwGold, dwGuild);
snprintf(szQuery, sizeof(szQuery), "INSERT INTO item_award (login, vnum, socket0, given_time) VALUES('%s', %d, %u, NOW())",
c_pszLogin, ITEM_ELK_VNUM, dwGold);
CDBManager::instance().AsyncQuery(szQuery);
@@ -1271,19 +1271,19 @@ bool CGuildWarReserve::Bet(const char * pszLogin, DWORD dwGold, DWORD dwGuild)
if (m_data.dwGuildFrom != dwGuild && m_data.dwGuildTo != dwGuild)
{
sys_log(0, "GuildWarReserve::Bet: invalid guild id");
SPDLOG_DEBUG("GuildWarReserve::Bet: invalid guild id");
return false;
}
if (m_data.bStarted)
{
sys_log(0, "GuildWarReserve::Bet: war is already started");
SPDLOG_DEBUG("GuildWarReserve::Bet: war is already started");
return false;
}
if (mapBet.find(pszLogin) != mapBet.end())
{
sys_log(0, "GuildWarReserve::Bet: failed. already bet");
SPDLOG_DEBUG("GuildWarReserve::Bet: failed. already bet");
return false;
}
@@ -1295,7 +1295,7 @@ bool CGuildWarReserve::Bet(const char * pszLogin, DWORD dwGold, DWORD dwGuild)
if (pmsg->Get()->uiAffectedRows == 0 || pmsg->Get()->uiAffectedRows == (uint32_t)-1)
{
sys_log(0, "GuildWarReserve::Bet: failed. cannot insert row to guild_war_bet table");
SPDLOG_DEBUG("GuildWarReserve::Bet: failed. cannot insert row to guild_war_bet table");
return false;
}
@@ -1311,7 +1311,7 @@ bool CGuildWarReserve::Bet(const char * pszLogin, DWORD dwGold, DWORD dwGuild)
CDBManager::instance().AsyncQuery(szQuery);
sys_log(0, "GuildWarReserve::Bet: success. %s %u war_id %u bet %u : %u", pszLogin, dwGuild, m_data.dwID, m_data.dwBetFrom, m_data.dwBetTo);
SPDLOG_DEBUG("GuildWarReserve::Bet: success. {} {} war_id {} bet {} : {}", pszLogin, dwGuild, m_data.dwID, m_data.dwBetFrom, m_data.dwBetTo);
mapBet.insert(std::make_pair(pszLogin, std::make_pair(dwGuild, dwGold)));
TPacketGDGuildWarBet pckBet;
@@ -1338,7 +1338,7 @@ void CGuildWarReserve::Draw()
if (mapBet.empty())
return;
sys_log(0, "WAR_REWARD: Draw. war_id %u", m_data.dwID);
SPDLOG_DEBUG("WAR_REWARD: Draw. war_id {}", m_data.dwID);
itertype(mapBet) it = mapBet.begin();
@@ -1368,7 +1368,7 @@ void CGuildWarReserve::Draw()
if (iRow > 0)
{
sys_log(0, "WAR_REWARD: QUERY: %s", szQuery);
SPDLOG_DEBUG("WAR_REWARD: QUERY: {}", szQuery);
CDBManager::instance().AsyncQuery(szQuery);
}
@@ -1381,18 +1381,18 @@ void CGuildWarReserve::End(int iScoreFrom, int iScoreTo)
{
DWORD dwWinner;
sys_log(0, "WAR_REWARD: End: From %u %d To %u %d", m_data.dwGuildFrom, iScoreFrom, m_data.dwGuildTo, iScoreTo);
SPDLOG_DEBUG("WAR_REWARD: End: From {} {} To {} {}", m_data.dwGuildFrom, iScoreFrom, m_data.dwGuildTo, iScoreTo);
if (m_data.lPowerFrom > m_data.lPowerTo)
{
if (m_data.lHandicap > iScoreFrom - iScoreTo)
{
sys_log(0, "WAR_REWARD: End: failed to overcome handicap, From is strong but To won");
SPDLOG_DEBUG("WAR_REWARD: End: failed to overcome handicap, From is strong but To won");
dwWinner = m_data.dwGuildTo;
}
else
{
sys_log(0, "WAR_REWARD: End: success to overcome handicap, From win!");
SPDLOG_DEBUG("WAR_REWARD: End: success to overcome handicap, From win!");
dwWinner = m_data.dwGuildFrom;
}
}
@@ -1400,12 +1400,12 @@ void CGuildWarReserve::End(int iScoreFrom, int iScoreTo)
{
if (m_data.lHandicap > iScoreTo - iScoreFrom)
{
sys_log(0, "WAR_REWARD: End: failed to overcome handicap, To is strong but From won");
SPDLOG_DEBUG("WAR_REWARD: End: failed to overcome handicap, To is strong but From won");
dwWinner = m_data.dwGuildFrom;
}
else
{
sys_log(0, "WAR_REWARD: End: success to overcome handicap, To win!");
SPDLOG_DEBUG("WAR_REWARD: End: success to overcome handicap, To win!");
dwWinner = m_data.dwGuildTo;
}
}
@@ -1427,17 +1427,17 @@ void CGuildWarReserve::End(int iScoreFrom, int iScoreTo)
dwWinnerBet = m_data.dwBetTo;
else
{
sys_err("WAR_REWARD: fatal error, winner does not exist!");
SPDLOG_ERROR("WAR_REWARD: fatal error, winner does not exist!");
return;
}
if (dwWinnerBet == 0)
{
sys_err("WAR_REWARD: total bet money on winner is zero");
SPDLOG_ERROR("WAR_REWARD: total bet money on winner is zero");
return;
}
sys_log(0, "WAR_REWARD: End: Total bet: %u, Winner bet: %u", dwTotalBet, dwWinnerBet);
SPDLOG_DEBUG("WAR_REWARD: End: Total bet: {}, Winner bet: {}", dwTotalBet, dwWinnerBet);
itertype(mapBet) it = mapBet.begin();
@@ -1459,7 +1459,7 @@ void CGuildWarReserve::End(int iScoreFrom, int iScoreTo)
double ratio = (double) it->second.second / dwWinnerBet;
// 10% <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>й<EFBFBD>
sys_log(0, "WAR_REWARD: %s %u ratio %f", it->first.c_str(), it->second.second, ratio);
SPDLOG_DEBUG("WAR_REWARD: {} {} ratio {}", it->first.c_str(), it->second.second, ratio);
DWORD dwGold = (DWORD) (dwTotalBet * ratio * 0.9);
@@ -1480,7 +1480,7 @@ void CGuildWarReserve::End(int iScoreFrom, int iScoreTo)
if (iRow > 0)
{
sys_log(0, "WAR_REWARD: query: %s", szQuery);
SPDLOG_DEBUG("WAR_REWARD: query: {}", szQuery);
CDBManager::instance().AsyncQuery(szQuery);
}

View File

@@ -68,13 +68,13 @@ bool PlayerHB::Query(DWORD id)
if (pos < 0)
{
sys_err("cannot find %s ", szFind);
// sys_err("cannot find %s in %s", szFind, m_stCreateTableQuery.c_str());
SPDLOG_ERROR("cannot find {} ", szFind);
// SPDLOG_ERROR("cannot find {} in {}", szFind, m_stCreateTableQuery.c_str());
return false;
}
snprintf(szQuery, sizeof(szQuery), "CREATE TABLE IF NOT EXISTS %s%s", szTableName, m_stCreateTableQuery.c_str() + strlen(szFind));
// sys_log(0, "%s", szQuery);
// SPDLOG_DEBUG("{}", szQuery);
std::unique_ptr<SQLMsg> pMsg(CDBManager::instance().DirectQuery(szQuery, SQL_HOTBACKUP));
m_stTableName = szTableName;
}

View File

@@ -60,7 +60,7 @@ void ItemAwardManager::Load(SQLMsg * pMsg)
strcpy(cmdStr,whyStr); //<2F><><EFBFBD>ɾ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ū<EFBFBD><C5AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ūȭ <20>DZ<EFBFBD> <20><><EFBFBD><EFBFBD>
char command[20] = "";
strcpy(command,CClientManager::instance().GetCommand(cmdStr).c_str()); // command <20><><EFBFBD><EFBFBD>
//sys_err("%d, %s",pItemAward->dwID,command);
//SPDLOG_ERROR("{}, {}",pItemAward->dwID,command);
if( !(strcmp(command,"GIFT") )) // command <20><> GIFT<46≯<EFBFBD>
{
TPacketItemAwardInfromer giftData;
@@ -74,7 +74,7 @@ void ItemAwardManager::Load(SQLMsg * pMsg)
m_map_award.insert(std::make_pair(dwID, kData));
printf("ITEM_AWARD load id %u bMall %d \n", kData->dwID, kData->bMall);
sys_log(0, "ITEM_AWARD: load id %lu login %s vnum %lu count %u socket %lu", kData->dwID, kData->szLogin, kData->dwVnum, kData->dwCount, kData->dwSocket0);
SPDLOG_DEBUG("ITEM_AWARD: load id {} login {} vnum {} count {} socket {}", kData->dwID, kData->szLogin, kData->dwVnum, kData->dwCount, kData->dwSocket0);
std::set<TItemAward *> & kSet = m_map_kSetAwardByLogin[kData->szLogin];
kSet.insert(kData);
@@ -99,7 +99,7 @@ void ItemAwardManager::Taken(DWORD dwAwardID, DWORD dwItemID)
if (it == m_map_award.end())
{
sys_log(0, "ITEM_AWARD: Taken ID not exist %lu", dwAwardID);
SPDLOG_DEBUG("ITEM_AWARD: Taken ID not exist {}", dwAwardID);
return;
}

View File

@@ -79,7 +79,7 @@ TItemIDRangeTable CItemIDRangeManager::GetRange()
}
for (int i = 0; i < 10; ++i)
sys_err("ItemIDRange: NO MORE ITEM ID RANGE");
SPDLOG_ERROR("ItemIDRange: NO MORE ITEM ID RANGE");
return ret;
}
@@ -112,7 +112,7 @@ bool CItemIDRangeManager::BuildRange(DWORD dwMin, DWORD dwMax, TItemIDRangeTable
if ((dwMax < dwItemMaxID) || (dwMax - dwItemMaxID < cs_dwMinimumRemainCount))
{
sys_log(0, "ItemIDRange: Build %u ~ %u start: %u\tNOT USE remain count is below %u",
SPDLOG_DEBUG("ItemIDRange: Build {} ~ {} start: {}\tNOT USE remain count is below {}",
dwMin, dwMax, dwItemMaxID, cs_dwMinimumRemainCount);
}
else
@@ -136,12 +136,12 @@ bool CItemIDRangeManager::BuildRange(DWORD dwMin, DWORD dwMax, TItemIDRangeTable
if (count > 0)
{
sys_err("ItemIDRange: Build: %u ~ %u\thave a item", range.dwUsableItemIDMin, range.dwMax);
SPDLOG_ERROR("ItemIDRange: Build: {} ~ {}\thave a item", range.dwUsableItemIDMin, range.dwMax);
return false;
}
else
{
sys_log(0, "ItemIDRange: Build: %u ~ %u start:%u", range.dwMin, range.dwMax, range.dwUsableItemIDMin);
SPDLOG_TRACE("ItemIDRange: Build: {} ~ {} start:{}", range.dwMin, range.dwMax, range.dwUsableItemIDMin);
return true;
}
}

View File

@@ -2,16 +2,18 @@
#ifndef __INC_METIN_II_ITEM_ID_RANGE_MANAGER_H__
#define __INC_METIN_II_ITEM_ID_RANGE_MANAGER_H__
namespace {
static const uint32_t cs_dwMaxItemID = 4290000000UL;
static const uint32_t cs_dwMinimumRange = 10000000UL;
static const uint32_t cs_dwMinimumRemainCount = 10000UL;
}
class CItemIDRangeManager : public singleton<CItemIDRangeManager>
{
private :
const static DWORD cs_dwMaxItemID = 4290000000UL;
const static DWORD cs_dwMinimumRange = 10000000UL;
const static DWORD cs_dwMinimumRemainCount = 10000UL;
private:
std::list<TItemIDRangeTable> m_listData;
public :
public:
CItemIDRangeManager();
void Build();

View File

@@ -78,11 +78,11 @@ void CLoginData::SetPlay(bool bOn)
{
if (bOn)
{
sys_log(0, "SetPlay on %lu %s", GetKey(), m_data.login);
SPDLOG_DEBUG("SetPlay on {} {}", GetKey(), m_data.login);
SetLogonTime();
}
else
sys_log(0, "SetPlay off %lu %s", GetKey(), m_data.login);
SPDLOG_DEBUG("SetPlay off {} {}", GetKey(), m_data.login);
m_bPlay = bOn;
m_lastPlayTime = CClientManager::instance().GetCurrentTime();

View File

@@ -38,8 +38,6 @@ int g_iItemCacheFlushSeconds = 60*5;
//g_iLogoutSeconds <20><>ġ<EFBFBD><C4A1> g_iPlayerCacheFlushSeconds <20><> g_iItemCacheFlushSeconds <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
int g_iLogoutSeconds = 60*10;
int g_log = 1;
// MYSHOP_PRICE_LIST
int g_iItemPriceListTableCacheFlushSeconds = 540;
@@ -52,9 +50,9 @@ extern const char * _malloc_options;
void emergency_sig(int sig)
{
if (sig == SIGSEGV)
sys_log(0, "SIGNAL: SIGSEGV");
SPDLOG_DEBUG("SIGNAL: SIGSEGV");
else if (sig == SIGUSR1)
sys_log(0, "SIGNAL: SIGUSR1");
SPDLOG_DEBUG("SIGNAL: SIGUSR1");
if (sig == SIGSEGV)
abort();
@@ -62,7 +60,8 @@ void emergency_sig(int sig)
int main()
{
WriteVersion(std::cout);
WriteVersion();
log_init();
#ifdef __FreeBSD__
_malloc_options = "A";
@@ -93,7 +92,7 @@ int main()
#ifdef __AUCTION__
AuctionManager::instance().Initialize();
#endif
sys_log(0, "Metin2DBCacheServer Start\n");
SPDLOG_DEBUG("Metin2DBCacheServer Start");
CClientManager::instance().MainLoop();
@@ -113,9 +112,11 @@ int main()
break;
usleep(1000);
sys_log(0, "WAITING_QUERY_COUNT %d", iCount);
SPDLOG_DEBUG("WAITING_QUERY_COUNT {}", iCount);
}
log_destroy();
return 1;
}
@@ -133,45 +134,31 @@ int Start()
{
if (!CConfig::instance().LoadFile("conf.txt"))
{
fprintf(stderr, "Loading conf.txt failed.\n");
SPDLOG_ERROR("Loading conf.txt failed.");
return false;
}
if (!CConfig::instance().GetValue("TEST_SERVER", &g_test_server))
{
fprintf(stderr, "Real Server\n");
SPDLOG_INFO("Real Server");
}
else
fprintf(stderr, "Test Server\n");
SPDLOG_INFO("Test Server");
if (!CConfig::instance().GetValue("LOG", &g_log))
{
fprintf(stderr, "Log Off");
g_log= 0;
}
else
{
g_log = 1;
fprintf(stderr, "Log On");
}
int tmpValue;
int heart_beat = 50;
if (!CConfig::instance().GetValue("CLIENT_HEART_FPS", &heart_beat))
{
fprintf(stderr, "Cannot find CLIENT_HEART_FPS configuration.\n");
SPDLOG_ERROR("Cannot find CLIENT_HEART_FPS configuration.");
return false;
}
log_set_expiration_days(3);
if (CConfig::instance().GetValue("LOG_KEEP_DAYS", &tmpValue))
if (CConfig::instance().GetValue("LOG_LEVEL", &tmpValue))
{
tmpValue = std::clamp(tmpValue, 3, 30);
log_set_expiration_days(tmpValue);
fprintf(stderr, "Setting log keeping days to %d\n", tmpValue);
SPDLOG_INFO("Setting log level to {}", tmpValue);
tmpValue = std::clamp(tmpValue, SPDLOG_LEVEL_TRACE, SPDLOG_LEVEL_OFF);
log_set_level(tmpValue);
}
thecore_init(heart_beat, emptybeat);
@@ -182,12 +169,12 @@ int Start()
if (CConfig::instance().GetValue("LOCALE", szBuf, 256))
{
g_stLocale = szBuf;
sys_log(0, "LOCALE set to %s", g_stLocale.c_str());
SPDLOG_INFO("LOCALE set to {}", g_stLocale.c_str());
// CHINA_DISABLE_HOTBACKUP
if ("gb2312" == g_stLocale)
{
sys_log(0, "CIBN_LOCALE: DISABLE_HOTBACKUP");
SPDLOG_INFO("CIBN_LOCALE: DISABLE_HOTBACKUP");
g_bHotBackup = false;
}
// END_OF_CHINA_DISABLE_HOTBACKUP
@@ -197,8 +184,8 @@ int Start()
if (CConfig::instance().GetValue("DISABLE_HOTBACKUP", &iDisableHotBackup))
{
if (iDisableHotBackup)
{
sys_log(0, "CONFIG: DISABLE_HOTBACKUP");
{
SPDLOG_INFO("CONFIG: DISABLE_HOTBACKUP");
g_bHotBackup = false;
}
}
@@ -206,7 +193,7 @@ int Start()
if (!CConfig::instance().GetValue("TABLE_POSTFIX", szBuf, 256))
{
sys_err("TABLE_POSTFIX not configured use default");
SPDLOG_WARN("TABLE_POSTFIX not configured use default");
szBuf[0] = '\0';
}
@@ -215,20 +202,20 @@ int Start()
if (CConfig::instance().GetValue("PLAYER_CACHE_FLUSH_SECONDS", szBuf, 256))
{
str_to_number(g_iPlayerCacheFlushSeconds, szBuf);
sys_log(0, "PLAYER_CACHE_FLUSH_SECONDS: %d", g_iPlayerCacheFlushSeconds);
SPDLOG_INFO("PLAYER_CACHE_FLUSH_SECONDS: {}", g_iPlayerCacheFlushSeconds);
}
if (CConfig::instance().GetValue("ITEM_CACHE_FLUSH_SECONDS", szBuf, 256))
{
str_to_number(g_iItemCacheFlushSeconds, szBuf);
sys_log(0, "ITEM_CACHE_FLUSH_SECONDS: %d", g_iItemCacheFlushSeconds);
SPDLOG_INFO("ITEM_CACHE_FLUSH_SECONDS: {}", g_iItemCacheFlushSeconds);
}
// MYSHOP_PRICE_LIST
if (CConfig::instance().GetValue("ITEM_PRICELIST_CACHE_FLUSH_SECONDS", szBuf, 256))
{
str_to_number(g_iItemPriceListTableCacheFlushSeconds, szBuf);
sys_log(0, "ITEM_PRICELIST_CACHE_FLUSH_SECONDS: %d", g_iItemPriceListTableCacheFlushSeconds);
SPDLOG_INFO("ITEM_PRICELIST_CACHE_FLUSH_SECONDS: {}", g_iItemPriceListTableCacheFlushSeconds);
}
// END_OF_MYSHOP_PRICE_LIST
//
@@ -241,7 +228,7 @@ int Start()
int iIDStart;
if (!CConfig::instance().GetValue("PLAYER_ID_START", &iIDStart))
{
sys_err("PLAYER_ID_START not configured");
SPDLOG_ERROR("PLAYER_ID_START not configured");
return false;
}
@@ -249,7 +236,7 @@ int Start()
if (CConfig::instance().GetValue("NAME_COLUMN", szBuf, 256))
{
fprintf(stderr, "%s %s", g_stLocaleNameColumn.c_str(), szBuf);
SPDLOG_INFO("{} {}", g_stLocaleNameColumn, szBuf);
g_stLocaleNameColumn = szBuf;
}
@@ -260,7 +247,7 @@ int Start()
if (CConfig::instance().GetValue("SQL_PLAYER", line, 256))
{
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
sys_log(0, "connecting to MySQL server (player)");
SPDLOG_DEBUG("Connecting to MySQL server (player)");
int iRetry = 5;
@@ -268,27 +255,25 @@ int Start()
{
if (CDBManager::instance().Connect(SQL_PLAYER, szAddr, iPort, szDB, szUser, szPassword))
{
sys_log(0, " OK");
SPDLOG_INFO("Connected to MySQL server (player)");
break;
}
sys_log(0, " failed, retrying in 5 seconds");
fprintf(stderr, " failed, retrying in 5 seconds");
SPDLOG_ERROR("Connection to MySQL server (player) failed, retrying in 5 seconds");
sleep(5);
} while (iRetry--);
fprintf(stderr, "Success PLAYER\n");
SetPlayerDBName(szDB);
}
else
{
sys_err("SQL_PLAYER not configured");
SPDLOG_ERROR("SQL_PLAYER not configured");
return false;
}
if (CConfig::instance().GetValue("SQL_ACCOUNT", line, 256))
{
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
sys_log(0, "connecting to MySQL server (account)");
SPDLOG_DEBUG("connecting to MySQL server (account)");
int iRetry = 5;
@@ -296,26 +281,26 @@ int Start()
{
if (CDBManager::instance().Connect(SQL_ACCOUNT, szAddr, iPort, szDB, szUser, szPassword))
{
sys_log(0, " OK");
SPDLOG_DEBUG(" OK");
break;
}
sys_log(0, " failed, retrying in 5 seconds");
fprintf(stderr, " failed, retrying in 5 seconds");
SPDLOG_DEBUG(" failed, retrying in 5 seconds");
SPDLOG_ERROR(" failed, retrying in 5 seconds");
sleep(5);
} while (iRetry--);
fprintf(stderr, "Success ACCOUNT\n");
SPDLOG_INFO("Success ACCOUNT");
}
else
{
sys_err("SQL_ACCOUNT not configured");
SPDLOG_ERROR("SQL_ACCOUNT not configured");
return false;
}
if (CConfig::instance().GetValue("SQL_COMMON", line, 256))
{
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
sys_log(0, "connecting to MySQL server (common)");
SPDLOG_DEBUG("connecting to MySQL server (common)");
int iRetry = 5;
@@ -323,26 +308,26 @@ int Start()
{
if (CDBManager::instance().Connect(SQL_COMMON, szAddr, iPort, szDB, szUser, szPassword))
{
sys_log(0, " OK");
SPDLOG_DEBUG(" OK");
break;
}
sys_log(0, " failed, retrying in 5 seconds");
fprintf(stderr, " failed, retrying in 5 seconds");
SPDLOG_DEBUG(" failed, retrying in 5 seconds");
SPDLOG_ERROR(" failed, retrying in 5 seconds");
sleep(5);
} while (iRetry--);
fprintf(stderr, "Success COMMON\n");
SPDLOG_INFO("Success COMMON");
}
else
{
sys_err("SQL_COMMON not configured");
SPDLOG_ERROR("SQL_COMMON not configured");
return false;
}
if (CConfig::instance().GetValue("SQL_HOTBACKUP", line, 256))
{
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
sys_log(0, "connecting to MySQL server (hotbackup)");
SPDLOG_DEBUG("connecting to MySQL server (hotbackup)");
int iRetry = 5;
@@ -350,37 +335,35 @@ int Start()
{
if (CDBManager::instance().Connect(SQL_HOTBACKUP, szAddr, iPort, szDB, szUser, szPassword))
{
sys_log(0, " OK");
SPDLOG_DEBUG(" OK");
break;
}
sys_log(0, " failed, retrying in 5 seconds");
fprintf(stderr, " failed, retrying in 5 seconds");
SPDLOG_DEBUG(" failed, retrying in 5 seconds");
SPDLOG_ERROR(" failed, retrying in 5 seconds");
sleep(5);
}
while (iRetry--);
fprintf(stderr, "Success HOTBACKUP\n");
SPDLOG_INFO("Success HOTBACKUP");
}
else
{
sys_err("SQL_HOTBACKUP not configured");
SPDLOG_ERROR("SQL_HOTBACKUP not configured");
return false;
}
sys_log(0, "ClientManager initialization.. ");
if (!CClientManager::instance().Initialize())
{
sys_log(0, " failed");
SPDLOG_ERROR("ClientManager initialization failed");
return false;
}
sys_log(0, " OK");
SPDLOG_INFO("ClientManager initialization OK");
if (!PlayerHB::instance().Initialize())
if (!PlayerHB::instance().Initialize())
{
sys_err("cannot initialize player hotbackup");
SPDLOG_ERROR("cannot initialize player hotbackup");
return false;
}

View File

@@ -44,7 +44,7 @@ namespace marriage
unique_ptr<SQLMsg> pmsg(CDBManager::instance().DirectQuery(szQuery));
SQLResult * pRes = pmsg->Get();
sys_log(0, "MarriageList(size=%lu)", pRes->uiNumRows);
SPDLOG_DEBUG("MarriageList(size={})", pRes->uiNumRows);
if (pRes->uiNumRows > 0)
{
@@ -65,7 +65,7 @@ namespace marriage
m_MarriageByPID.insert(make_pair(pid1, pMarriage));
m_MarriageByPID.insert(make_pair(pid2, pMarriage));
sys_log(0, "Marriage %lu: LP:%d TM:%u ST:%d %10lu:%16s %10lu:%16s ", uiRow, love_point, time, is_married, pid1, name1, pid2, name2);
SPDLOG_DEBUG("Marriage {}: LP:{} TM:{} ST:{} {:10}:{:16} {:10}:{:16} ", uiRow, love_point, time, is_married, pid1, name1, pid2, name2);
}
}
return true;
@@ -92,7 +92,7 @@ namespace marriage
DWORD now = CClientManager::instance().GetCurrentTime();
if (IsMarried(dwPID1) || IsMarried(dwPID2))
{
sys_err("cannot marry already married character. %d - %d", dwPID1, dwPID2);
SPDLOG_ERROR("cannot marry already married character. {} - {}", dwPID1, dwPID2);
return;
}
@@ -106,11 +106,11 @@ namespace marriage
SQLResult* res = pmsg->Get();
if (res->uiAffectedRows == 0 || res->uiAffectedRows == (uint32_t)-1)
{
sys_err("cannot insert marriage");
SPDLOG_ERROR("cannot insert marriage");
return;
}
sys_log(0, "MARRIAGE ADD %u %u", dwPID1, dwPID2);
SPDLOG_DEBUG("MARRIAGE ADD {} {}", dwPID1, dwPID2);
TMarriage* pMarriage = new TMarriage(dwPID1, dwPID2, 0, now, 0, szName1, szName2);
m_Marriages.insert(pMarriage);
@@ -131,7 +131,7 @@ namespace marriage
TMarriage* pMarriage = Get(dwPID1);
if (!pMarriage || pMarriage->GetOther(dwPID1) != dwPID2)
{
sys_err("not under marriage : %u %u", dwPID1, dwPID2);
SPDLOG_ERROR("not under marriage : {} {}", dwPID1, dwPID2);
return;
}
@@ -146,11 +146,11 @@ namespace marriage
SQLResult* res = pmsg->Get();
if (res->uiAffectedRows == 0 || res->uiAffectedRows == (uint32_t)-1)
{
sys_err("cannot update marriage : PID:%u %u", dwPID1, dwPID2);
SPDLOG_ERROR("cannot update marriage : PID:{} {}", dwPID1, dwPID2);
return;
}
sys_log(0, "MARRIAGE UPDATE PID:%u %u LP:%u ST:%d", dwPID1, dwPID2, iLovePoint, byMarried);
SPDLOG_DEBUG("MARRIAGE UPDATE PID:{} {} LP:{} ST:{}", dwPID1, dwPID2, iLovePoint, byMarried);
pMarriage->love_point = iLovePoint;
pMarriage->is_married = byMarried;
@@ -168,7 +168,7 @@ namespace marriage
if (pMarriage)
{
sys_log(0, "Break Marriage pid1 %d pid2 %d Other %d", dwPID1, dwPID2, pMarriage->GetOther(dwPID1));
SPDLOG_DEBUG("Break Marriage pid1 {} pid2 {} Other {}", dwPID1, dwPID2, pMarriage->GetOther(dwPID1));
}
if (!pMarriage || pMarriage->GetOther(dwPID1) != dwPID2)
{
@@ -176,9 +176,9 @@ namespace marriage
for (; it != m_MarriageByPID.end(); ++it)
{
sys_log(0, "Marriage List pid1 %d pid2 %d", it->second->pid1, it->second->pid2);
SPDLOG_DEBUG("Marriage List pid1 {} pid2 {}", it->second->pid1, it->second->pid2);
}
sys_err("not under marriage : PID:%u %u", dwPID1, dwPID2);
SPDLOG_ERROR("not under marriage : PID:{} {}", dwPID1, dwPID2);
return;
}
@@ -192,11 +192,11 @@ namespace marriage
SQLResult* res = pmsg->Get();
if (res->uiAffectedRows == 0 || res->uiAffectedRows == (uint32_t)-1)
{
sys_err("cannot delete marriage : PID:%u %u", dwPID1, dwPID2);
SPDLOG_ERROR("cannot delete marriage : PID:{} {}", dwPID1, dwPID2);
return;
}
sys_log(0, "MARRIAGE REMOVE PID:%u %u", dwPID1, dwPID2);
SPDLOG_DEBUG("MARRIAGE REMOVE PID:{} {}", dwPID1, dwPID2);
m_Marriages.erase(pMarriage);
m_MarriageByPID.erase(dwPID1);
@@ -215,13 +215,13 @@ namespace marriage
TMarriage* pMarriage = Get(dwPID1);
if (!pMarriage || pMarriage->GetOther(dwPID1) != dwPID2)
{
sys_err("not under marriage : PID:%u %u", dwPID1, dwPID2);
SPDLOG_ERROR("not under marriage : PID:{} {}", dwPID1, dwPID2);
return;
}
if (pMarriage->is_married)
{
sys_err("already married, cannot change engage to marry : PID:%u %u", dwPID1, dwPID2);
SPDLOG_ERROR("already married, cannot change engage to marry : PID:{} {}", dwPID1, dwPID2);
return;
}
@@ -236,11 +236,11 @@ namespace marriage
SQLResult* res = pmsg->Get();
if (res->uiAffectedRows == 0 || res->uiAffectedRows == (uint32_t)-1)
{
sys_err("cannot change engage to marriage : PID:%u %u", dwPID1, dwPID2);
SPDLOG_ERROR("cannot change engage to marriage : PID:{} {}", dwPID1, dwPID2);
return;
}
sys_log(0, "MARRIAGE ENGAGE->MARRIAGE PID:%u %u", dwPID1, dwPID2);
SPDLOG_DEBUG("MARRIAGE ENGAGE->MARRIAGE PID:{} {}", dwPID1, dwPID2);
pMarriage->is_married = 1;
TPacketMarriageUpdate p;
@@ -313,7 +313,7 @@ namespace marriage
itertype(m_mapRunningWedding) it = m_mapRunningWedding.find(make_pair(dwPID1, dwPID2));
if (it == m_mapRunningWedding.end())
{
sys_err("try to end wedding %u %u", dwPID1, dwPID2);
SPDLOG_ERROR("try to end wedding {} {}", dwPID1, dwPID2);
return;
}

View File

@@ -1,3 +1,5 @@
#include "stdafx.h"
#include "Monarch.h"
#include <common/utils.h>
#include "Main.h"
@@ -53,8 +55,7 @@ void CMonarch::ElectMonarch()
++s[idx];
if (g_test_server)
sys_log (0, "[MONARCH_VOTE] pid(%d) come to vote candidacy pid(%d)", it->second->pid, m_vec_MonarchCandidacy[idx].pid);
SPDLOG_TRACE("[MONARCH_VOTE] pid({}) come to vote candidacy pid({})", it->second->pid, m_vec_MonarchCandidacy[idx].pid);
}
delete [] s;
@@ -167,8 +168,7 @@ bool CMonarch::TakeMoney(int Empire, DWORD pid, int64_t Money)
CDBManager::instance().AsyncQuery(szQuery);
if (g_test_server)
sys_log(0, "[MONARCH] Take money empire(%d) money(%lld)", Empire, m_MonarchInfo.money[Empire]);
SPDLOG_TRACE("[MONARCH] Take money empire({}) money({})", Empire, m_MonarchInfo.money[Empire]);
return true;
}
@@ -197,8 +197,7 @@ bool CMonarch::LoadMonarch()
str_to_number(p->money[Empire], row[idx++]);
strlcpy(p->date[Empire], row[idx++], sizeof(p->date[Empire]));
if (g_test_server)
sys_log(0, "[LOAD_MONARCH] Empire %d pid %d money %lld windate %s", Empire, p->pid[Empire], p->money[Empire], p->date[Empire]);
SPDLOG_TRACE("[LOAD_MONARCH] Empire {} pid {} money {} windate {}", Empire, p->pid[Empire], p->money[Empire], p->date[Empire]);
}
delete pMsg;
@@ -230,8 +229,7 @@ bool CMonarch::SetMonarch(const char * name)
strlcpy(p->name[Empire], row[idx++], sizeof(p->name[Empire]));
p->money[Empire] = atoll(row[idx++]);
if (g_test_server)
sys_log(0, "[Set_MONARCH] Empire %d pid %d money %lld windate %s", Empire, p->pid[Empire], p->money[Empire], p->date[Empire]);
SPDLOG_TRACE("[Set_MONARCH] Empire {} pid {} money {} windate {}", Empire, p->pid[Empire], p->money[Empire], p->date[Empire]);
}
delete pMsg;
@@ -278,7 +276,7 @@ bool CMonarch::DelMonarch(const char * name)
if (pMsg->Get()->uiNumRows == 0)
{
sys_err(" DirectQuery failed(%s)", szQuery);
SPDLOG_ERROR(" DirectQuery failed({})", szQuery);
delete pMsg;
return false;
}

View File

@@ -29,15 +29,15 @@ void CPeer::OnAccept()
static DWORD current_handle = 0;
m_dwHandle = ++current_handle;
sys_log(0, "Connection accepted. (host: %s handle: %u)", m_host, m_dwHandle);
SPDLOG_DEBUG("Connection accepted. (host: {} handle: {})", m_host, m_dwHandle);
}
void CPeer::OnClose()
{
m_state = STATE_CLOSE;
sys_log(0, "Connection closed. (host: %s)", m_host);
sys_log(0, "ItemIDRange: returned. %u ~ %u", m_itemRange.dwMin, m_itemRange.dwMax);
SPDLOG_DEBUG("Connection closed. (host: {})", m_host);
SPDLOG_DEBUG("ItemIDRange: returned. {} ~ {}", m_itemRange.dwMin, m_itemRange.dwMax);
CItemIDRangeManager::instance().UpdateRange(m_itemRange.dwMin, m_itemRange.dwMax);
@@ -69,7 +69,7 @@ bool CPeer::PeekPacket(int & iBytesProceed, BYTE & header, DWORD & dwHandle, DWO
const char * buf = (const char *) GetRecvBuffer(iBytesProceed + 9);
if (!buf) {
sys_err("PeekPacket: Failed to get network buffer!");
SPDLOG_ERROR("PeekPacket: Failed to get network buffer!");
return false;
}
@@ -87,7 +87,7 @@ bool CPeer::PeekPacket(int & iBytesProceed, BYTE & header, DWORD & dwHandle, DWO
// Ensure that all the data was fully received
if (iBytesProceed + dwLength + 9 > (DWORD) GetRecvLength())
{
sys_log(0, "PeekPacket: not enough buffer size: len %u, recv %d",
SPDLOG_DEBUG("PeekPacket: not enough buffer size: len {}, recv {}",
9+dwLength, GetRecvLength()-iBytesProceed);
return false;
}
@@ -95,7 +95,7 @@ bool CPeer::PeekPacket(int & iBytesProceed, BYTE & header, DWORD & dwHandle, DWO
// Ensure that all the required data is available in a contiguous area
buf = (const char *) GetRecvBuffer(iBytesProceed + dwLength + 9);
if (!buf) {
sys_err("PeekPacket: Failed to get network buffer!");
SPDLOG_ERROR("PeekPacket: Failed to get network buffer!");
return false;
}
@@ -112,7 +112,7 @@ void CPeer::EncodeHeader(BYTE header, DWORD dwHandle, DWORD dwSize)
{
HEADER h;
sys_log(1, "EncodeHeader %u handle %u size %u", header, dwHandle, dwSize);
SPDLOG_TRACE("EncodeHeader {} handle {} size {}", header, dwHandle, dwSize);
h.bHeader = header;
h.dwHandle = dwHandle;
@@ -149,7 +149,7 @@ void CPeer::SendSpareItemIDRange()
if (SetSpareItemIDRange(CItemIDRangeManager::instance().GetRange()) == false)
{
sys_log(0, "ItemIDRange: spare range set error");
SPDLOG_DEBUG("ItemIDRange: spare range set error");
m_itemSpareRange.dwMin = m_itemSpareRange.dwMax = m_itemSpareRange.dwUsableItemIDMin = 0;
}
@@ -163,7 +163,7 @@ bool CPeer::SetItemIDRange(TItemIDRangeTable itemRange)
if (itemRange.dwMin == 0 || itemRange.dwMax == 0 || itemRange.dwUsableItemIDMin == 0) return false;
m_itemRange = itemRange;
sys_log(0, "ItemIDRange: SET %s %u ~ %u start: %u", GetPublicIP(), m_itemRange.dwMin, m_itemRange.dwMax, m_itemRange.dwUsableItemIDMin);
SPDLOG_DEBUG("ItemIDRange: SET {} {} ~ {} start: {}", GetPublicIP(), m_itemRange.dwMin, m_itemRange.dwMax, m_itemRange.dwUsableItemIDMin);
return true;
}
@@ -173,7 +173,7 @@ bool CPeer::SetSpareItemIDRange(TItemIDRangeTable itemRange)
if (itemRange.dwMin == 0 || itemRange.dwMax == 0 || itemRange.dwUsableItemIDMin == 0) return false;
m_itemSpareRange = itemRange;
sys_log(0, "ItemIDRange: SPARE SET %s %u ~ %u start: %u", GetPublicIP(), m_itemSpareRange.dwMin, m_itemSpareRange.dwMax,
SPDLOG_DEBUG("ItemIDRange: SPARE SET {} {} ~ {} start: {}", GetPublicIP(), m_itemSpareRange.dwMin, m_itemSpareRange.dwMax,
m_itemSpareRange.dwUsableItemIDMin);
return true;
@@ -183,14 +183,14 @@ bool CPeer::CheckItemIDRangeCollision(TItemIDRangeTable itemRange)
{
if (m_itemRange.dwMin < itemRange.dwMax && m_itemRange.dwMax > itemRange.dwMin)
{
sys_err("ItemIDRange: Collision!! this %u ~ %u check %u ~ %u",
SPDLOG_ERROR("ItemIDRange: Collision!! this {} ~ {} check {} ~ {}",
m_itemRange.dwMin, m_itemRange.dwMax, itemRange.dwMin, itemRange.dwMax);
return false;
}
if (m_itemSpareRange.dwMin < itemRange.dwMax && m_itemSpareRange.dwMax > itemRange.dwMin)
{
sys_err("ItemIDRange: Collision with spare range this %u ~ %u check %u ~ %u",
SPDLOG_ERROR("ItemIDRange: Collision with spare range this {} ~ {} check {} ~ {}",
m_itemSpareRange.dwMin, m_itemSpareRange.dwMax, itemRange.dwMin, itemRange.dwMax);
return false;
}

View File

@@ -23,12 +23,12 @@ void CPeerBase::Destroy()
bool CPeerBase::Accept(bufferevent* bufev, sockaddr* addr)
{
if (!bufev) {
sys_err("Cannot accept empty bufferevent!");
SPDLOG_ERROR("Cannot accept empty bufferevent!");
return false;
}
if (m_bufferevent != nullptr) {
sys_err("Peer is already initialized");
SPDLOG_ERROR("Peer is already initialized");
return false;
}
@@ -57,7 +57,7 @@ bool CPeerBase::Accept(bufferevent* bufev, sockaddr* addr)
// Trigger the OnAccept event
OnAccept();
sys_log(0, "ACCEPT FROM %s", m_host);
SPDLOG_DEBUG("ACCEPT FROM {}", m_host);
return true;
}
@@ -86,12 +86,12 @@ void CPeerBase::Encode(const void* data, size_t size)
{
if (!m_bufferevent)
{
sys_err("Bufferevent not ready!");
SPDLOG_ERROR("Bufferevent not ready!");
return;
}
if (bufferevent_write(m_bufferevent, data, size) != 0) {
sys_err("Buffer write error!");
SPDLOG_ERROR("Buffer write error!");
return;
}
}
@@ -100,7 +100,7 @@ void CPeerBase::RecvEnd(size_t proceed_bytes)
{
if (!m_bufferevent)
{
sys_err("Bufferevent not ready!");
SPDLOG_ERROR("Bufferevent not ready!");
return;
}
@@ -112,7 +112,7 @@ size_t CPeerBase::GetRecvLength()
{
if (!m_bufferevent)
{
sys_err("Bufferevent not ready!");
SPDLOG_ERROR("Bufferevent not ready!");
return 0;
}
@@ -124,7 +124,7 @@ const void * CPeerBase::GetRecvBuffer(ssize_t ensure_bytes)
{
if (!m_bufferevent)
{
sys_err("Bufferevent not ready!");
SPDLOG_ERROR("Bufferevent not ready!");
return nullptr;
}
@@ -136,7 +136,7 @@ size_t CPeerBase::GetSendLength()
{
if (!m_bufferevent)
{
sys_err("Bufferevent not ready!");
SPDLOG_ERROR("Bufferevent not ready!");
return 0;
}

View File

@@ -84,7 +84,7 @@ void CPrivManager::AddCharPriv(DWORD pid, BYTE type, int value)
{
if (MAX_PRIV_NUM <= type)
{
sys_err("PRIV_MANAGER: AddCharPriv: wrong char priv type(%u) recved", type);
SPDLOG_ERROR("PRIV_MANAGER: AddCharPriv: wrong char priv type({}) recved", type);
return;
}
@@ -108,7 +108,7 @@ void CPrivManager::AddCharPriv(DWORD pid, BYTE type, int value)
m_aPrivChar[type].insert(std::make_pair(pid, p));
// TODO send packet
sys_log(0, "AddCharPriv %d %d %d", pid, type, value);
SPDLOG_DEBUG("AddCharPriv {} {} {}", pid, type, value);
SendChangeCharPriv(pid, type, value);
}
@@ -119,7 +119,7 @@ void CPrivManager::AddGuildPriv(DWORD guild_id, BYTE type, int value, time_t dur
{
if (MAX_PRIV_NUM <= type)
{
sys_err("PRIV_MANAGER: AddGuildPriv: wrong guild priv type(%u) recved", type);
SPDLOG_ERROR("PRIV_MANAGER: AddGuildPriv: wrong guild priv type({}) recved", type);
return;
}
@@ -141,14 +141,14 @@ void CPrivManager::AddGuildPriv(DWORD guild_id, BYTE type, int value, time_t dur
SendChangeGuildPriv(guild_id, type, value, end);
// END_OF_ADD_GUILD_PRIV_TIME
sys_log(0, "Guild Priv guild(%d) type(%d) value(%d) duration_sec(%d)", guild_id, type, value, duration_sec);
SPDLOG_DEBUG("Guild Priv guild({}) type({}) value({}) duration_sec({})", guild_id, type, value, duration_sec);
}
void CPrivManager::AddEmpirePriv(BYTE empire, BYTE type, int value, time_t duration_sec)
{
if (MAX_PRIV_NUM <= type)
{
sys_err("PRIV_MANAGER: AddEmpirePriv: wrong empire priv type(%u) recved", type);
SPDLOG_ERROR("PRIV_MANAGER: AddEmpirePriv: wrong empire priv type({}) recved", type);
return;
}
@@ -173,7 +173,7 @@ void CPrivManager::AddEmpirePriv(BYTE empire, BYTE type, int value, time_t durat
SendChangeEmpirePriv(empire, type, value, end);
// END_OF_ADD_EMPIRE_PRIV_TIME
sys_log(0, "Empire Priv empire(%d) type(%d) value(%d) duration_sec(%d)", empire, type, value, duration_sec);
SPDLOG_DEBUG("Empire Priv empire({}) type({}) value({}) duration_sec({})", empire, type, value, duration_sec);
}
/**

View File

@@ -206,7 +206,7 @@ int get_Item_SubType_Value(int type_value, string inputString)
// assert <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>..
if (_countof(arSubType) <= type_value)
{
sys_err("SubType : Out of range!! (type_value: %d, count of registered subtype: %d", type_value, _countof(arSubType));
SPDLOG_ERROR("SubType : Out of range!! (type_value: {}, count of registered subtype: {}", type_value, _countof(arSubType));
return -1;
}
@@ -683,7 +683,7 @@ bool Set_Proto_Mob_Table(TMobTable *mobTable, cCsvTable &csvTable,std::map<int,c
str_to_number(mobTable->bDeathBlowPoint, csvTable.AsStringByIndex(col++));
str_to_number(mobTable->bRevivePoint, csvTable.AsStringByIndex(col++));
sys_log(0, "MOB #%-5d %-24s level: %-3u rank: %u empire: %d", mobTable->dwVnum, mobTable->szLocaleName, mobTable->bLevel, mobTable->bRank, mobTable->bEmpire);
SPDLOG_TRACE("MOB #{:<5} {:24} level: {:<3} rank: {} empire: {}", mobTable->dwVnum, mobTable->szLocaleName, mobTable->bLevel, mobTable->bRank, mobTable->bEmpire);
return true;
}
@@ -739,9 +739,9 @@ bool Set_Proto_Item_Table(TItemTable *itemTable, cCsvTable &csvTable,std::map<in
for (int j = 0; j < i; ++j)
dataStream << dataArray[j] << ",";
//fprintf(stderr, "ItemProto Reading Failed : Invalid value.\n");
sys_err("ItemProto Reading Failed : Invalid value. (index: %d, col: %d, value: %s)", i, col, csvTable.AsStringByIndex(col));
sys_err("\t%d ~ %d Values: %s", 0, i, dataStream.str().c_str());
//SPDLOG_ERROR("ItemProto Reading Failed : Invalid value.");
SPDLOG_ERROR("ItemProto Reading Failed : Invalid value. (index: {}, col: {}, value: {})", i, col, csvTable.AsStringByIndex(col));
SPDLOG_ERROR("\t{} ~ {} Values: {}", 0, i, dataStream.str().c_str());
exit(0);
}
@@ -768,7 +768,7 @@ bool Set_Proto_Item_Table(TItemTable *itemTable, cCsvTable &csvTable,std::map<in
int end_vnum = atoi(s_end_vnum.c_str());
if (0 == start_vnum || (0 != end_vnum && end_vnum < start_vnum))
{
sys_err ("INVALID VNUM %s", s.c_str());
SPDLOG_ERROR("INVALID VNUM {}", s.c_str());
return false;
}
itemTable->dwVnum = start_vnum;

View File

@@ -1,15 +1,8 @@
#include <fmt/core.h>
#include <version.h>
void WriteVersion(std::ostream& out) {
out << "Metin2 DB Cache version " << __COMMIT_TAG__ << " "
<< "(rev. " << __REVISION__ << ", date: " << __COMMIT_DATE__ << ")"
<< std::endl;
out << "OS: " << __OS_NAME__ << ", "
<< "target arch: " << __CPU_TARGET__ << ", "
<< "compiler: " << __COMPILER__
<< std::endl;
out << std::endl;
void WriteVersion() {
fmt::println("Metin2 DB Cache version {} (rev. {}, date: {})", __COMMIT_TAG__, __REVISION__, __COMMIT_DATE__);
fmt::println("OS: {}, target arch: {}, compiler: {}", __OS_NAME__, __CPU_TARGET__, __COMPILER__);
}

View File

@@ -3,15 +3,29 @@ cmake_minimum_required(VERSION 3.8)
project(game CXX)
file(GLOB_RECURSE sources
src/*.cpp src/*.h
src/*.cpp src/*.h
)
# Add the src directory to the include path
include_directories(src)
add_executable(${PROJECT_NAME} ${sources})
# Set the default log level based on the build type
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
message(STATUS "This is a debug build. Log level will be set to 'trace' for target '${PROJECT_NAME}'.")
target_compile_definitions(${PROJECT_NAME} PRIVATE SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
endif()
# Treat char variables as signed, especially useful for ARM builds
target_compile_options(${PROJECT_NAME} PUBLIC -fsigned-char)
# Find dependencies
#
# vcpkg dependencies
#
# MySQL
find_package(unofficial-libmysql REQUIRED)
target_link_libraries(${PROJECT_NAME} unofficial::libmysql::libmysql)
@@ -28,11 +42,6 @@ target_link_libraries (${PROJECT_NAME} Boost::boost)
find_package(Libevent CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} libevent::core libevent::extra libevent::pthreads)
# DevIL
find_package(DevIL REQUIRED)
include_directories(${IL_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${IL_LIBRARIES})
# LZO
find_package(LZO REQUIRED)
if (LZO_FOUND)
@@ -40,6 +49,19 @@ if (LZO_FOUND)
target_link_libraries(${PROJECT_NAME} ${LZO_LIBRARIES})
endif (LZO_FOUND)
# effolkronium/random
find_package(effolkronium_random CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} effolkronium_random)
#
# System-provided dependencies
#
# DevIL
find_package(DevIL REQUIRED)
include_directories(${IL_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${IL_LIBRARIES})
# Pthreads
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
@@ -48,8 +70,8 @@ target_link_libraries(${PROJECT_NAME} Threads::Threads)
# LibBSD
target_link_libraries(${PROJECT_NAME} bsd)
# effolkronium/random
find_package(effolkronium_random CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} effolkronium_random)
#
# Project-provided dependencies
#
target_link_libraries(${PROJECT_NAME} libgame libpoly libsql libthecore liblua)

View File

@@ -31,7 +31,7 @@ time_t UseBlueDragonSkill(LPCHARACTER pChar, unsigned int idx)
{
case 0:
{
sys_log(0, "BlueDragon: Using Skill Breath");
SPDLOG_DEBUG("BlueDragon: Using Skill Breath");
FSkillBreath f(pChar);
@@ -43,7 +43,7 @@ time_t UseBlueDragonSkill(LPCHARACTER pChar, unsigned int idx)
case 1:
{
sys_log(0, "BlueDragon: Using Skill Weak Breath");
SPDLOG_DEBUG("BlueDragon: Using Skill Weak Breath");
FSkillWeakBreath f(pChar);
@@ -55,7 +55,7 @@ time_t UseBlueDragonSkill(LPCHARACTER pChar, unsigned int idx)
case 2:
{
sys_log(0, "BlueDragon: Using Skill EarthQuake");
SPDLOG_DEBUG("BlueDragon: Using Skill EarthQuake");
FSkillEarthQuake f(pChar);
@@ -71,7 +71,7 @@ time_t UseBlueDragonSkill(LPCHARACTER pChar, unsigned int idx)
break;
default:
sys_err("BlueDragon: Wrong Skill Index: %d", idx);
SPDLOG_ERROR("BlueDragon: Wrong Skill Index: {}", idx);
return 0;
}

View File

@@ -32,7 +32,7 @@ unsigned int BlueDragon_GetSkillFactor(const size_t cnt, ...)
{
va_end(vl);
lua_settop( L, stack_top );
sys_err("BlueDragon: wrong key list");
SPDLOG_ERROR("BlueDragon: wrong key list");
return 0;
}
@@ -43,7 +43,7 @@ unsigned int BlueDragon_GetSkillFactor(const size_t cnt, ...)
{
va_end(vl);
lua_settop( L, stack_top );
sys_err("BlueDragon: wrong key table %s", key);
SPDLOG_ERROR("BlueDragon: wrong key table {}", key);
return 0;
}
}
@@ -53,7 +53,7 @@ unsigned int BlueDragon_GetSkillFactor(const size_t cnt, ...)
if (false == lua_isnumber(L, -1))
{
lua_settop( L, stack_top );
sys_err("BlueDragon: Last key is not a number");
SPDLOG_ERROR("BlueDragon: Last key is not a number");
return 0;
}
@@ -86,7 +86,7 @@ unsigned int BlueDragon_GetRangeFactor(const char* key, const int val)
{
lua_settop( L, stack_top );
sys_err("BlueDragon: no required table %s", key);
SPDLOG_ERROR("BlueDragon: no required table {}", key);
return 0;
}
@@ -100,7 +100,7 @@ unsigned int BlueDragon_GetRangeFactor(const char* key, const int val)
{
lua_settop( L, stack_top );
sys_err("BlueDragon: wrong table index %s %d", key, i);
SPDLOG_ERROR("BlueDragon: wrong table index {} {}", key, i);
return 0;
}
@@ -111,7 +111,7 @@ unsigned int BlueDragon_GetRangeFactor(const char* key, const int val)
{
lua_settop( L, stack_top );
sys_err("BlueDragon: no min value set %s", key);
SPDLOG_ERROR("BlueDragon: no min value set {}", key);
return 0;
}
@@ -126,7 +126,7 @@ unsigned int BlueDragon_GetRangeFactor(const char* key, const int val)
{
lua_settop( L, stack_top );
sys_err("BlueDragon: no max value set %s", key);
SPDLOG_ERROR("BlueDragon: no max value set {}", key);
return 0;
}
@@ -143,7 +143,7 @@ unsigned int BlueDragon_GetRangeFactor(const char* key, const int val)
{
lua_settop( L, stack_top );
sys_err("BlueDragon: no pct value set %s", key);
SPDLOG_ERROR("BlueDragon: no pct value set {}", key);
return 0;
}
@@ -184,7 +184,7 @@ unsigned int BlueDragon_GetIndexFactor(const char* container, const size_t idx,
{
lua_settop( L, stack_top );
sys_err("BlueDragon: no required table %s", key);
SPDLOG_ERROR("BlueDragon: no required table {}", key);
return 0;
}
@@ -194,7 +194,7 @@ unsigned int BlueDragon_GetIndexFactor(const char* container, const size_t idx,
{
lua_settop( L, stack_top );
sys_err("BlueDragon: wrong table index %s %d", key, idx);
SPDLOG_ERROR("BlueDragon: wrong table index {} {}", key, idx);
return 0;
}
@@ -205,7 +205,7 @@ unsigned int BlueDragon_GetIndexFactor(const char* container, const size_t idx,
{
lua_settop( L, stack_top );
sys_err("BlueDragon: no min value set %s", key);
SPDLOG_ERROR("BlueDragon: no min value set {}", key);
return 0;
}

View File

@@ -30,7 +30,7 @@ struct FSkillBreath
if ((signed)BlueDragon_GetSkillFactor(2, "Skill0", "damage_area") < DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()))
{
sys_log(0, "BlueDragon: Breath too far (%d)", DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()) );
SPDLOG_DEBUG("BlueDragon: Breath too far ({})", DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()) );
return;
}
@@ -124,7 +124,7 @@ struct FSkillBreath
ch->Damage( pAttacker, dam, DAMAGE_TYPE_ICE );
sys_log(0, "BlueDragon: Breath to %s pct(%d) dam(%d) overlap(%d)", ch->GetName(), pct, dam, overlapDamageCount);
SPDLOG_DEBUG("BlueDragon: Breath to {} pct({}) dam({}) overlap({})", ch->GetName(), pct, dam, overlapDamageCount);
}
}
}
@@ -155,7 +155,7 @@ struct FSkillWeakBreath
if ((signed)BlueDragon_GetSkillFactor(2, "Skill1", "damage_area") < DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()))
{
sys_log(0, "BlueDragon: Breath too far (%d)", DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()) );
SPDLOG_DEBUG("BlueDragon: Breath too far ({})", DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()) );
return;
}
@@ -166,7 +166,7 @@ struct FSkillWeakBreath
ch->Damage( pAttacker, dam, DAMAGE_TYPE_ICE );
sys_log(0, "BlueDragon: WeakBreath to %s addPct(%d) dam(%d)", ch->GetName(), addPct, dam);
SPDLOG_DEBUG("BlueDragon: WeakBreath to {} addPct({}) dam({})", ch->GetName(), addPct, dam);
}
}
}
@@ -209,7 +209,7 @@ struct FSkillEarthQuake
if ((signed)BlueDragon_GetSkillFactor(2, "Skill2", "damage_area") < DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()))
{
sys_log(0, "BlueDragon: Breath too far (%d)", DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()) );
SPDLOG_DEBUG("BlueDragon: Breath too far ({})", DISTANCE_APPROX(pAttacker->GetX()-ch->GetX(), pAttacker->GetY()-ch->GetY()) );
return;
}
@@ -274,7 +274,7 @@ struct FSkillEarthQuake
SkillAttackAffect( ch, 1000, IMMUNE_STUN, AFFECT_STUN, POINT_NONE, 0, AFF_STUN, sec, "BDRAGON_STUN" );
sys_log(0, "BlueDragon: EarthQuake to %s addPct(%d) dam(%d) sec(%d)", ch->GetName(), addPct, dam, sec);
SPDLOG_DEBUG("BlueDragon: EarthQuake to {} addPct({}) dam({}) sec({})", ch->GetName(), addPct, dam, sec);
VECTOR vec;

View File

@@ -37,7 +37,7 @@ bool CClientPackageCryptInfo::LoadPackageCryptFile( const char* pCryptFile )
if (0 == iCryptKeySize)
{
sys_log(0, "[PackageCryptInfo] failed to load crypt key. (file: %s, key size: %d)", pCryptFile, iCryptKeySize);
SPDLOG_WARN("[PackageCryptInfo] failed to load crypt key. (file: {}, key size: {})", pCryptFile, iCryptKeySize);
m_nCryptKeyPackageCnt -= iPackageCnt;
}
else
@@ -47,7 +47,7 @@ bool CClientPackageCryptInfo::LoadPackageCryptFile( const char* pCryptFile )
memcpy( &m_vecPackageCryptKeys[nCurKeySize], &iCryptKeySize, sizeof(int));
fread( &m_vecPackageCryptKeys[nCurKeySize + sizeof(int)], sizeof(BYTE), iCryptKeySize, fp );
sys_log(0, "[PackageCryptInfo] %s loaded. (key size: %d, count: %d, total: %d)", pCryptFile, iCryptKeySize, iPackageCnt, m_nCryptKeyPackageCnt);
SPDLOG_WARN("[PackageCryptInfo] {} loaded. (key size: {}, count: {}, total: {})", pCryptFile, iCryptKeySize, iPackageCnt, m_nCryptKeyPackageCnt);
}
}
@@ -81,7 +81,7 @@ bool CClientPackageCryptInfo::LoadPackageCryptFile( const char* pCryptFile )
fread(&dwSDBFileCnt, sizeof(DWORD), 1, fp);
sys_log(0, "[PackageCryptInfo] SDB Loaded. (Name Hash : %d, Stream Size: %d, File Count: %d)", dwPackageNameHash,dwPackageStreamSize, dwSDBFileCnt);
SPDLOG_INFO("[PackageCryptInfo] SDB Loaded. (Name Hash : {}, Stream Size: {}, File Count: {})", dwPackageNameHash,dwPackageStreamSize, dwSDBFileCnt);
for( int j = 0; j < (int)dwSDBFileCnt; ++j )
{
@@ -91,7 +91,7 @@ bool CClientPackageCryptInfo::LoadPackageCryptFile( const char* pCryptFile )
strRelatedMapName.resize( dwMapNameSize );
fread(&strRelatedMapName[0], sizeof(BYTE), dwMapNameSize, fp);
sys_log(0, "[PackageCryptInfo] \t SDB each file info loaded.(MapName: %s, NameHash: %X)", strRelatedMapName.c_str(), dwFileNameHash);
SPDLOG_INFO("[PackageCryptInfo] \t SDB each file info loaded.(MapName: {}, NameHash: {})", strRelatedMapName.c_str(), dwFileNameHash);
BYTE bSDBStreamSize;
std::vector<BYTE> vecSDBStream;
@@ -152,16 +152,16 @@ bool CClientPackageCryptInfo::LoadPackageCryptInfo( const char* pCryptInfoDir )
//if (strncmp( &(pDirEnt->d_name[0]), szPrefixCryptInfoFile, strlen(szPrefixCryptInfoFile)) )
if (std::string::npos == std::string(pDirEnt->d_name).find(szPrefixCryptInfoFile))
{
sys_log(0, "[PackageCryptInfo] %s is not crypt file. pass!", pDirEnt->d_name);
SPDLOG_DEBUG("[PackageCryptInfo] {} is not crypt file. pass!", pDirEnt->d_name);
continue;
}
std::string strFullPathName = std::string(pCryptInfoDir) + std::string(pDirEnt->d_name);
sys_log(0, "[PackageCryptInfo] Try to load crypt file: %s", strFullPathName.c_str());
SPDLOG_DEBUG("[PackageCryptInfo] Try to load crypt file: {}", strFullPathName.c_str());
if (false == LoadPackageCryptFile( strFullPathName.c_str() ))
sys_err("[PackageCryptInfo] Failed to load %s", strFullPathName.c_str());
SPDLOG_DEBUG("[PackageCryptInfo] Failed to load {}", strFullPathName.c_str());
}
closedir(pDir);
@@ -207,15 +207,13 @@ bool CClientPackageCryptInfo::GetRelatedMapSDBStreams(const char* pMapName, BYTE
TPackageSDBMap::iterator it = m_mapPackageSDB.find( strLowerMapName.c_str() );
if( it == m_mapPackageSDB.end() || it->second.vecSDBInfos.size() == 0 )
{
//sys_err("GetRelatedMapSDBStreams Failed(%s)", strLowerMapName.c_str());
SPDLOG_ERROR("GetRelatedMapSDBStreams Failed({})", strLowerMapName.c_str());
return false;
}
*ppData = it->second.GetSerializedStream();
iDataSize = it->second.GetSize();
//sys_log(0, "GetRelatedMapSDBStreams Size(%d)", iDataSize);
return true;
}

View File

@@ -84,7 +84,7 @@ EVENTFUNC( DragonLair_Collapse_Event )
if ( pInfo == NULL )
{
sys_err( "DragonLair_Collapse_Event> <Factor> Null pointer" );
SPDLOG_ERROR("DragonLair_Collapse_Event> <Factor> Null pointer" );
return 0;
}
@@ -146,7 +146,7 @@ DWORD CDragonLair::GetEstimatedTime() const
void CDragonLair::OnDragonDead(LPCHARACTER pDragon)
{
sys_log(0, "DragonLair: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׾<EFBFBD><D7BE><EFBFBD>ȿ");
SPDLOG_DEBUG("DragonLair: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׾<EFBFBD><D7BE><EFBFBD>ȿ");
LogManager::instance().DragonSlayLog( GuildID_, pDragon->GetMobTable().dwVnum, StartTime_, get_global_time() );
}
@@ -174,7 +174,7 @@ bool CDragonLairManager::Start(int MapIndexFrom, int BaseMapIndex, DWORD GuildID
{
int instanceMapIndex = SECTREE_MANAGER::instance().CreatePrivateMap(BaseMapIndex);
if (instanceMapIndex == 0) {
sys_err("CDragonLairManager::Start() : no private map index available");
SPDLOG_ERROR("CDragonLairManager::Start() : no private map index available");
return false;
}
@@ -203,8 +203,6 @@ bool CDragonLairManager::Start(int MapIndexFrom, int BaseMapIndex, DWORD GuildID
strMapBasePath += "/" + pRegionInfo->strMapName + "/instance_regen.txt";
sys_log(0, "%s", strMapBasePath.c_str());
regen_do(strMapBasePath.c_str(), instanceMapIndex, pTargetMap->m_setting.iBaseX, pTargetMap->m_setting.iBaseY, NULL, true);
return true;

View File

@@ -147,7 +147,7 @@ bool DSManager::RefreshItemAttributes(LPITEM pDS)
{
if (!pDS->IsDragonSoul())
{
sys_err ("This item(ID : %d) is not DragonSoul.", pDS->GetID());
SPDLOG_ERROR("This item(ID : {}) is not DragonSoul.", pDS->GetID());
return false;
}
@@ -159,13 +159,13 @@ bool DSManager::RefreshItemAttributes(LPITEM pDS)
if (!m_pTable->GetBasicApplys(ds_type, vec_basic_applys))
{
sys_err ("There is no BasicApply about %d type dragon soul.", ds_type);
SPDLOG_ERROR("There is no BasicApply about {} type dragon soul.", ds_type);
return false;
}
if (!m_pTable->GetAdditionalApplys(ds_type, vec_addtional_applys))
{
sys_err ("There is no AdditionalApply about %d type dragon soul.", ds_type);
SPDLOG_ERROR("There is no AdditionalApply about {} type dragon soul.", ds_type);
return false;
}
@@ -173,7 +173,7 @@ bool DSManager::RefreshItemAttributes(LPITEM pDS)
int basic_apply_num, add_min, add_max;
if (!m_pTable->GetApplyNumSettings(ds_type, grade_idx, basic_apply_num, add_min, add_max))
{
sys_err ("In ApplyNumSettings, INVALID VALUES Group type(%d), GRADE idx(%d)", ds_type, grade_idx);
SPDLOG_ERROR("In ApplyNumSettings, INVALID VALUES Group type({}), GRADE idx({})", ds_type, grade_idx);
return false;
}
@@ -217,7 +217,7 @@ bool DSManager::PutAttributes(LPITEM pDS)
{
if (!pDS->IsDragonSoul())
{
sys_err ("This item(ID : %d) is not DragonSoul.", pDS->GetID());
SPDLOG_ERROR("This item(ID : {}) is not DragonSoul.", pDS->GetID());
return false;
}
@@ -229,12 +229,12 @@ bool DSManager::PutAttributes(LPITEM pDS)
if (!m_pTable->GetBasicApplys(ds_type, vec_basic_applys))
{
sys_err ("There is no BasicApply about %d type dragon soul.", ds_type);
SPDLOG_ERROR("There is no BasicApply about {} type dragon soul.", ds_type);
return false;
}
if (!m_pTable->GetAdditionalApplys(ds_type, vec_addtional_applys))
{
sys_err ("There is no AdditionalApply about %d type dragon soul.", ds_type);
SPDLOG_ERROR("There is no AdditionalApply about {} type dragon soul.", ds_type);
return false;
}
@@ -242,7 +242,7 @@ bool DSManager::PutAttributes(LPITEM pDS)
int basic_apply_num, add_min, add_max;
if (!m_pTable->GetApplyNumSettings(ds_type, grade_idx, basic_apply_num, add_min, add_max))
{
sys_err ("In ApplyNumSettings, INVALID VALUES Group type(%d), GRADE idx(%d)", ds_type, grade_idx);
SPDLOG_ERROR("In ApplyNumSettings, INVALID VALUES Group type({}), GRADE idx({})", ds_type, grade_idx);
return false;
}
@@ -276,7 +276,7 @@ bool DSManager::PutAttributes(LPITEM pDS)
}
if (!MakeDistinctRandomNumberSet(list_probs, random_set))
{
sys_err ("MakeDistinctRandomNumberSet error.");
SPDLOG_ERROR("MakeDistinctRandomNumberSet error.");
return false;
}
@@ -350,7 +350,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
float sum = 0.f;
if (-1 == idx)
{
sys_err ("Gamble is failed. ds_type(%d), grade_idx(%d)", ds_type, grade_idx);
SPDLOG_ERROR("Gamble is failed. ds_type({}), grade_idx({})", ds_type, grade_idx);
return false;
}
@@ -375,8 +375,8 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
if (NULL == pDH)
{
sys_err ("Cannot create DRAGON_HEART(%d).", DRAGON_HEART_VNUM);
return NULL;
SPDLOG_ERROR("Cannot create DRAGON_HEART({}).", (int) DRAGON_HEART_VNUM);
return false;
}
pItem->SetCount(pItem->GetCount() - 1);
@@ -402,7 +402,7 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
{
if (NULL == ch || NULL == pItem)
{
sys_err ("NULL POINTER. ch(%p) or pItem(%p)", ch, pItem);
SPDLOG_ERROR("NULL POINTER. ch({}) or pItem({})", (void*) ch, (void*) pItem);
return false;
}
@@ -514,7 +514,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
if (!ch->DragonSoul_RefineWindow_CanRefine())
{
sys_err ("%s do not activate DragonSoulRefineWindow. But how can he come here?", ch->GetName());
SPDLOG_ERROR("{} do not activate DragonSoulRefineWindow. But how can he come here?", ch->GetName());
ch->ChatPacket(CHAT_TYPE_INFO, "[SYSTEM ERROR]You cannot upgrade dragon soul without refine window.");
return false;
}
@@ -595,7 +595,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
// Ŭ<>󿡼<EFBFBD> <20>ѹ<EFBFBD> <20><><EFBFBD><EFBFBD> üũ<C3BC><C5A9> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> count != need_count<6E><74><EFBFBD><EFBFBD> invalid Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> ũ<><C5A9>.
if (count != need_count)
{
sys_err ("Possiblity of invalid client. Name %s", ch->GetName());
SPDLOG_ERROR("Possiblity of invalid client. Name {}", ch->GetName());
BYTE bSubHeader = count < need_count? DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL : DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL;
SendRefineResultPacket(ch, bSubHeader, NPOS);
return false;
@@ -610,7 +610,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
if (-1 == (result_grade = Gamble(vec_probs)))
{
sys_err ("Gamble failed. See RefineGardeTables' probabilities");
SPDLOG_ERROR("Gamble failed. See RefineGardeTables' probabilities");
return false;
}
@@ -618,7 +618,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
if (NULL == pResultItem)
{
sys_err ("INVALID DRAGON SOUL(%d)", MakeDragonSoulVnum(ds_type, (BYTE)result_grade, 0, 0));
SPDLOG_ERROR("INVALID DRAGON SOUL({})", MakeDragonSoulVnum(ds_type, (BYTE)result_grade, 0, 0));
return false;
}
@@ -674,7 +674,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
if (!ch->DragonSoul_RefineWindow_CanRefine())
{
sys_err ("%s do not activate DragonSoulRefineWindow. But how can he come here?", ch->GetName());
SPDLOG_ERROR("{} do not activate DragonSoulRefineWindow. But how can he come here?", ch->GetName());
ch->ChatPacket(CHAT_TYPE_INFO, "[SYSTEM ERROR]You cannot use dragon soul refine window.");
return false;
}
@@ -747,7 +747,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
// Ŭ<>󿡼<EFBFBD> <20>ѹ<EFBFBD> <20><><EFBFBD><EFBFBD> üũ<C3BC><C5A9> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> count != need_count<6E><74><EFBFBD><EFBFBD> invalid Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> ũ<><C5A9>.
if (count != need_count)
{
sys_err ("Possiblity of invalid client. Name %s", ch->GetName());
SPDLOG_ERROR("Possiblity of invalid client. Name {}", ch->GetName());
BYTE bSubHeader = count < need_count? DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL : DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL;
SendRefineResultPacket(ch, bSubHeader, NPOS);
return false;
@@ -764,7 +764,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
if (-1 == (result_step = Gamble(vec_probs)))
{
sys_err ("Gamble failed. See RefineStepTables' probabilities");
SPDLOG_ERROR("Gamble failed. See RefineStepTables' probabilities");
return false;
}
@@ -772,7 +772,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
if (NULL == pResultItem)
{
sys_err ("INVALID DRAGON SOUL(%d)", MakeDragonSoulVnum(ds_type, grade_idx, (BYTE)result_step, 0));
SPDLOG_ERROR("INVALID DRAGON SOUL({})", MakeDragonSoulVnum(ds_type, grade_idx, (BYTE)result_step, 0));
return false;
}
@@ -835,7 +835,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
if (!ch->DragonSoul_RefineWindow_CanRefine())
{
sys_err ("%s do not activate DragonSoulRefineWindow. But how can he come here?", ch->GetName());
SPDLOG_ERROR("{} do not activate DragonSoulRefineWindow. But how can he come here?", ch->GetName());
ch->ChatPacket(CHAT_TYPE_INFO, "[SYSTEM ERROR]You cannot use dragon soul refine window.");
return false;
}
@@ -953,7 +953,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
pResult = ITEM_MANAGER::instance().CreateItem(MakeDragonSoulVnum(bType, bGrade, bStep, bStrength + 1));
if (NULL == pResult)
{
sys_err ("INVALID DRAGON SOUL(%d)", MakeDragonSoulVnum(bType, bGrade, bStep, bStrength + 1));
SPDLOG_ERROR("INVALID DRAGON SOUL({})", MakeDragonSoulVnum(bType, bGrade, bStep, bStrength + 1));
return false;
}
pDragonSoul->RemoveFromCharacter();
@@ -978,7 +978,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
pResult = ITEM_MANAGER::instance().CreateItem(MakeDragonSoulVnum(bType, bGrade, bStep, bStrength - 1));
if (NULL == pResult)
{
sys_err ("INVALID DRAGON SOUL(%d)", MakeDragonSoulVnum(bType, bGrade, bStep, bStrength - 1));
SPDLOG_ERROR("INVALID DRAGON SOUL({})", MakeDragonSoulVnum(bType, bGrade, bStep, bStrength - 1));
return false;
}
pDragonSoul->CopyAttributeTo(pResult);

View File

@@ -14,7 +14,7 @@ static Pixel * LoadOldGuildMarkImageFile()
if (!fp)
{
sys_err("cannot open %s", OLD_MARK_INDEX_FILENAME);
SPDLOG_ERROR("cannot open {}", OLD_MARK_INDEX_FILENAME);
return NULL;
}
@@ -69,7 +69,7 @@ bool GuildMarkConvert(const std::vector<DWORD> & vecGuildID)
pkImage->PutData(0, 0, 512, 512, oldImagePtr);
pkImage->Save("guild_mark_real.tga");
*/
sys_log(0, "Guild Mark Converting Start.");
SPDLOG_INFO("Guild Mark Converting Start.");
char line[256];
DWORD guild_id;
@@ -82,7 +82,7 @@ bool GuildMarkConvert(const std::vector<DWORD> & vecGuildID)
if (find(vecGuildID.begin(), vecGuildID.end(), guild_id) == vecGuildID.end())
{
sys_log(0, " skipping guild ID %u", guild_id);
SPDLOG_INFO(" skipping guild ID {}", guild_id);
continue;
}
@@ -92,7 +92,7 @@ bool GuildMarkConvert(const std::vector<DWORD> & vecGuildID)
if (row >= 42)
{
sys_err("invalid mark_id %u", mark_id);
SPDLOG_ERROR("invalid mark_id {}", mark_id);
continue;
}
@@ -128,7 +128,7 @@ bool GuildMarkConvert(const std::vector<DWORD> & vecGuildID)
system("move /Y guild_mark.tga guild_mark.tga.removable");
#endif
sys_log(0, "Guild Mark Converting Complete.");
SPDLOG_INFO("Guild Mark Converting Complete.");
return true;
}

View File

@@ -56,7 +56,7 @@ bool CGuildMarkImage::Save(const char* c_szFileName)
bool CGuildMarkImage::Build(const char * c_szFileName)
{
sys_log(0, "GuildMarkImage: creating new file %s", c_szFileName);
SPDLOG_INFO("GuildMarkImage: creating new file {}", c_szFileName);
Destroy();
Create();
@@ -70,7 +70,7 @@ bool CGuildMarkImage::Build(const char * c_szFileName)
if (!ilTexImage(WIDTH, HEIGHT, 1, 4, IL_BGRA, IL_UNSIGNED_BYTE, data))
{
sys_err("GuildMarkImage: cannot initialize image");
SPDLOG_ERROR("GuildMarkImage: cannot initialize image");
return false;
}
@@ -95,19 +95,19 @@ bool CGuildMarkImage::Load(const char * c_szFileName)
if (!ilLoad(IL_TYPE_UNKNOWN, (const ILstring) c_szFileName))
{
sys_err("GuildMarkImage: %s cannot open file.", c_szFileName);
SPDLOG_ERROR("GuildMarkImage: {} cannot open file.", c_szFileName);
return false;
}
if (ilGetInteger(IL_IMAGE_WIDTH) != WIDTH)
{
sys_err("GuildMarkImage: %s width must be %u", c_szFileName, WIDTH);
SPDLOG_ERROR("GuildMarkImage: {} width must be {}", c_szFileName, (int) WIDTH);
return false;
}
if (ilGetInteger(IL_IMAGE_HEIGHT) != HEIGHT)
{
sys_err("GuildMarkImage: %s height must be %u", c_szFileName, HEIGHT);
SPDLOG_ERROR("GuildMarkImage: {} height must be {}", c_szFileName, (int) HEIGHT);
return false;
}
@@ -139,7 +139,7 @@ bool CGuildMarkImage::SaveMark(DWORD posMark, BYTE * pbImage)
{
if (posMark >= MARK_TOTAL_COUNT)
{
sys_err("GuildMarkImage::CopyMarkFromData: Invalid mark position %u", posMark);
SPDLOG_ERROR("GuildMarkImage::CopyMarkFromData: Invalid mark position {}", posMark);
return false;
}
@@ -178,13 +178,13 @@ bool CGuildMarkImage::SaveBlockFromCompressedData(DWORD posBlock, const BYTE * p
if (LZO_E_OK != lzo1x_decompress_safe(pbComp, dwCompSize, (BYTE *) apxBuf, &sizeBuf, CLZO::Instance().GetWorkMemory()))
{
sys_err("GuildMarkImage::CopyBlockFromCompressedData: cannot decompress, compressed size = %u", dwCompSize);
SPDLOG_ERROR("GuildMarkImage::CopyBlockFromCompressedData: cannot decompress, compressed size = {}", dwCompSize);
return false;
}
if (sizeBuf != sizeof(apxBuf))
{
sys_err("GuildMarkImage::CopyBlockFromCompressedData: image corrupted, decompressed size = %u", sizeBuf);
SPDLOG_ERROR("GuildMarkImage::CopyBlockFromCompressedData: image corrupted, decompressed size = {}", sizeBuf);
return false;
}
@@ -200,7 +200,7 @@ bool CGuildMarkImage::SaveBlockFromCompressedData(DWORD posBlock, const BYTE * p
void CGuildMarkImage::BuildAllBlocks() // <20>̹<EFBFBD><CCB9><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD>ȭ
{
Pixel apxBuf[SGuildMarkBlock::SIZE];
sys_log(0, "GuildMarkImage::BuildAllBlocks");
SPDLOG_INFO("GuildMarkImage::BuildAllBlocks");
for (UINT row = 0; row < BLOCK_ROW_COUNT; ++row)
for (UINT col = 0; col < BLOCK_COL_COUNT; ++col)
@@ -290,10 +290,9 @@ void SGuildMarkBlock::Compress(const Pixel * pxBuf)
if (LZO_E_OK != lzo1x_1_compress((const BYTE *) pxBuf, sizeof(Pixel) * SGuildMarkBlock::SIZE, m_abCompBuf, &m_sizeCompBuf, CLZO::Instance().GetWorkMemory()))
{
sys_err("SGuildMarkBlock::Compress: Error! %u > %u", sizeof(Pixel) * SGuildMarkBlock::SIZE, m_sizeCompBuf);
SPDLOG_ERROR("SGuildMarkBlock::Compress: Error! {} > {}", sizeof(Pixel) * SGuildMarkBlock::SIZE, m_sizeCompBuf);
return;
}
//sys_log(0, "SGuildMarkBlock::Compress %u > %u", sizeof(Pixel) * SGuildMarkBlock::SIZE, m_sizeCompBuf);
m_crc = GetCRC32((const char *) pxBuf, sizeof(Pixel) * SGuildMarkBlock::SIZE);
}

View File

@@ -80,7 +80,7 @@ bool CGuildMarkManager::SaveMarkIndex()
if (!fp)
{
sys_err("MarkManager::SaveMarkIndex: cannot open index file.");
SPDLOG_ERROR("MarkManager::SaveMarkIndex: cannot open index file.");
return false;
}
@@ -88,7 +88,7 @@ bool CGuildMarkManager::SaveMarkIndex()
fprintf(fp, "%u %u\n", it->first, it->second);
fclose(fp);
sys_log(0, "MarkManager::SaveMarkIndex: index count %d", m_mapGID_MarkID.size());
SPDLOG_INFO("MarkManager::SaveMarkIndex: index count {}", m_mapGID_MarkID.size());
return true;
}
@@ -116,7 +116,7 @@ void CGuildMarkManager::SaveMarkImage(DWORD imgIdx)
if (GetMarkImageFilename(imgIdx, path))
if (!__GetImage(imgIdx)->Save(path.c_str()))
sys_err("%s Save failed\n", path.c_str());
SPDLOG_ERROR("{} Save failed", path.c_str());
}
CGuildMarkImage * CGuildMarkManager::__GetImage(DWORD imgIdx)
@@ -152,7 +152,6 @@ bool CGuildMarkManager::AddMarkIDByGuildID(DWORD guildID, DWORD markID)
if (markID >= MAX_IMAGE_COUNT * CGuildMarkImage::MARK_TOTAL_COUNT)
return false;
//sys_log(0, "MarkManager: guild_id=%d mark_id=%d", guildID, markID);
m_mapGID_MarkID.insert(std::map<DWORD, DWORD>::value_type(guildID, markID));
m_setFreeMarkID.erase(markID);
return true;
@@ -217,14 +216,14 @@ DWORD CGuildMarkManager::SaveMark(DWORD guildID, BYTE * pbMarkImage)
{
if ((idMark = __AllocMarkID(guildID)) == INVALID_MARK_ID)
{
sys_err("CGuildMarkManager: cannot alloc mark id %u", guildID);
SPDLOG_ERROR("CGuildMarkManager: cannot alloc mark id {}", guildID);
return false;
}
else
sys_log(0, "SaveMark: mark id alloc %u", idMark);
SPDLOG_INFO("SaveMark: mark id alloc {}", idMark);
}
else
sys_log(0, "SaveMark: mark id found %u", idMark);
SPDLOG_INFO("SaveMark: mark id found {}", idMark);
DWORD imgIdx = (idMark / CGuildMarkImage::MARK_TOTAL_COUNT);
CGuildMarkImage * pkImage = __GetImage(imgIdx);
@@ -267,7 +266,7 @@ void CGuildMarkManager::GetDiffBlocks(DWORD imgIdx, const DWORD * crcList, std::
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
if (m_mapIdx_Image.end() == m_mapIdx_Image.find(imgIdx))
{
sys_err("invalid idx %u", imgIdx);
SPDLOG_ERROR("invalid idx {}", imgIdx);
return;
}
@@ -294,7 +293,7 @@ bool CGuildMarkManager::GetBlockCRCList(DWORD imgIdx, DWORD * crcList)
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
if (m_mapIdx_Image.end() == m_mapIdx_Image.find(imgIdx))
{
sys_err("invalid idx %u", imgIdx);
SPDLOG_ERROR("invalid idx {}", imgIdx);
return false;
}
@@ -354,7 +353,7 @@ void CGuildMarkManager::SaveSymbol(const char* filename)
FILE* fp = fopen(filename, "wb");
if (!fp)
{
sys_err("Cannot open Symbol file (name: %s)", filename);
SPDLOG_ERROR("Cannot open Symbol file (name: {})", filename);
return;
}
@@ -375,7 +374,7 @@ void CGuildMarkManager::SaveSymbol(const char* filename)
void CGuildMarkManager::UploadSymbol(DWORD guildID, int iSize, const BYTE* pbyData)
{
sys_log(0, "GuildSymbolUpload guildID %u Size %d", guildID, iSize);
SPDLOG_INFO("GuildSymbolUpload guildID {} Size {}", guildID, iSize);
if (m_mapSymbol.find(guildID) == m_mapSymbol.end())
m_mapSymbol.insert(std::make_pair(guildID, TGuildSymbol()));

View File

@@ -90,7 +90,7 @@ bool COXEventManager::Enter(LPCHARACTER pkChar)
{
if (GetStatus() == OXEVENT_FINISH)
{
sys_log(0, "OXEVENT : map finished. but char enter. %s", pkChar->GetName());
SPDLOG_WARN("OXEVENT : map finished. but char enter. {}", pkChar->GetName());
return false;
}
@@ -106,7 +106,7 @@ bool COXEventManager::Enter(LPCHARACTER pkChar)
}
else
{
sys_log(0, "OXEVENT : wrong pos enter %d %d", pos.x, pos.y);
SPDLOG_ERROR("OXEVENT : wrong pos enter {} {}", pos.x, pos.y);
return false;
}
@@ -190,7 +190,7 @@ EVENTFUNC(oxevent_timer)
if ( info == NULL )
{
sys_err( "oxevent_timer> <Factor> Null pointer" );
SPDLOG_ERROR("oxevent_timer> <Factor> Null pointer" );
return 0;
}

View File

@@ -30,7 +30,7 @@ EVENTFUNC(petsystem_update_event)
petsystem_event_info* info = dynamic_cast<petsystem_event_info*>( event->info );
if ( info == NULL )
{
sys_err( "check_speedhack_event> <Factor> Null pointer" );
SPDLOG_ERROR("check_speedhack_event> <Factor> Null pointer" );
return 0;
}
@@ -166,7 +166,7 @@ DWORD CPetActor::Summon(const char* petName, LPITEM pSummonItem, bool bSpawnFar)
if (0 == m_pkChar)
{
sys_err("[CPetSystem::Summon] Failed to summon the pet. (vnum: %d)", m_dwVnum);
SPDLOG_ERROR("[CPetSystem::Summon] Failed to summon the pet. (vnum: {})", m_dwVnum);
return 0;
}
@@ -223,7 +223,7 @@ bool CPetActor::_UpdateFollowAI()
{
if (0 == m_pkChar->m_pkMobData)
{
//sys_err("[CPetActor::_UpdateFollowAI] m_pkChar->m_pkMobData is NULL");
SPDLOG_ERROR("[CPetActor::_UpdateFollowAI] m_pkChar->m_pkMobData is NULL");
return false;
}
@@ -480,14 +480,14 @@ void CPetSystem::DeletePet(DWORD mobVnum)
if (m_petActorMap.end() == iter)
{
sys_err("[CPetSystem::DeletePet] Can't find pet on my list (VNUM: %d)", mobVnum);
SPDLOG_ERROR("[CPetSystem::DeletePet] Can't find pet on my list (VNUM: {})", mobVnum);
return;
}
CPetActor* petActor = iter->second;
if (0 == petActor)
sys_err("[CPetSystem::DeletePet] Null Pointer (petActor)");
SPDLOG_ERROR("[CPetSystem::DeletePet] Null Pointer (petActor)");
else
delete petActor;
@@ -508,7 +508,7 @@ void CPetSystem::DeletePet(CPetActor* petActor)
}
}
sys_err("[CPetSystem::DeletePet] Can't find petActor(0x%x) on my list(size: %d) ", petActor, m_petActorMap.size());
SPDLOG_ERROR("[CPetSystem::DeletePet] Can't find petActor({}) on my list(size: {}) ", (void*) petActor, m_petActorMap.size());
}
void CPetSystem::Unsummon(DWORD vnum, bool bDeleteFromList)
@@ -517,7 +517,7 @@ void CPetSystem::Unsummon(DWORD vnum, bool bDeleteFromList)
if (0 == actor)
{
sys_err("[CPetSystem::GetByVnum(%d)] Null Pointer (petActor)", vnum);
SPDLOG_ERROR("[CPetSystem::GetByVnum({})] Null Pointer (petActor)", vnum);
return;
}
actor->Unsummon();
@@ -576,7 +576,7 @@ CPetActor* CPetSystem::GetByVID(DWORD vid) const
if (0 == petActor)
{
sys_err("[CPetSystem::GetByVID(%d)] Null Pointer (petActor)", vid);
SPDLOG_ERROR("[CPetSystem::GetByVID({})] Null Pointer (petActor)", vid);
continue;
}

View File

@@ -26,10 +26,10 @@ bool CSpeedServerManager::Initialize()
{
for (int i = 1; i < EMPIRE_MAX_NUM; i++)
{
sys_log (0,"speed manager init");
SPDLOG_DEBUG("speed manager init");
if(!Empire[i].Initialize (i))
{
sys_err ("EMPIRE %d Exp Bonus Manager Init fail",i);
SPDLOG_ERROR("EMPIRE {} Exp Bonus Manager Init fail",i);
return false;
}
}
@@ -39,7 +39,7 @@ bool CSpeedServerManager::Initialize()
bool CSpeedServerEmpireExp::Initialize (BYTE e)
{
empire = e;
sys_log (0, "empire exp init %d", empire);
SPDLOG_DEBUG("empire exp init {}", empire);
snprintf (file_name, sizeof(file_name), "%s/exp_bonus_table_%d.txt", LocaleService_GetBasePath().c_str(), empire);
for (int i = 1; i < 6; i++)
@@ -66,7 +66,7 @@ bool CSpeedServerEmpireExp::LoadWdayExpTable(int wday, char *str)
char *t;
char *h, *m, *e;
int hour, min, exp;
sys_log (0, "str %s", str);
SPDLOG_DEBUG("str {}", str);
strtok (str, delim);
p = strtok (NULL, ";");
n = strtok (NULL, ";");
@@ -78,11 +78,11 @@ bool CSpeedServerEmpireExp::LoadWdayExpTable(int wday, char *str)
m = strtok (NULL, delim);
if (!str_to_number (hour, h) || !str_to_number (min, m) || !str_to_number (exp, e))
{
sys_log (0, "h m e : %s %s %s",h, m, e);
sys_err ("Invalid argument. Please insert hh:mm exp");
SPDLOG_DEBUG("h m e : {} {} {}",h, m, e);
SPDLOG_ERROR("Invalid argument. Please insert hh:mm exp");
return false;
}
sys_log (0, "h m e : %s %s %s",h, m, e);
SPDLOG_DEBUG("h m e : {} {} {}",h, m, e);
lst.push_back (HME (hour, min, exp));
p = strtok (n, ";");
@@ -100,7 +100,7 @@ bool CSpeedServerEmpireExp::WriteExpTable()
{
FILE *fp;
sys_log (0, "write");
SPDLOG_DEBUG("write");
if (0==file_name || 0==file_name[0])
return false;
@@ -140,7 +140,7 @@ bool CSpeedServerEmpireExp::LoadExpTable()
char temp[256];
const char *delim = " \t\r\n";
sys_log (0, "load");
SPDLOG_DEBUG("load");
if (0==file_name || 0==file_name[0])
return false;
@@ -198,7 +198,7 @@ bool CSpeedServerEmpireExp::LoadExpTable()
v = strtok (temp, delim);
v = strtok (NULL, delim);
sys_log (0, "holiday %s", v);
SPDLOG_DEBUG("holiday {}", v);
p = strtok (NULL, ";");
n = strtok (NULL, ";");
@@ -210,11 +210,11 @@ bool CSpeedServerEmpireExp::LoadExpTable()
m = strtok (NULL, delim);
if (!str_to_number (hour, h) || !str_to_number (min, m) || !str_to_number (exp, e))
{
sys_log (0, "h m e : %s %s %s",h, m, e);
sys_err ("Invalid argument. Please insert hh:mm exp");
SPDLOG_DEBUG("h m e : {} {} {}",h, m, e);
SPDLOG_ERROR("Invalid argument. Please insert hh:mm exp");
return false;
}
sys_log (0, "h m e : %s %s %s",h, m, e);
SPDLOG_DEBUG("h m e : {} {} {}",h, m, e);
lst.push_back (HME (hour, min, exp));
p = strtok (n, ";");
@@ -225,11 +225,11 @@ bool CSpeedServerEmpireExp::LoadExpTable()
|| !str_to_number ( mon, strtok (NULL, "."))
|| !str_to_number ( day, strtok (NULL, ".")))
{
sys_err ("Invalid Date");
SPDLOG_ERROR("Invalid Date");
return false;
}
sys_log (0, "y m d %d %d %d",year, mon, day);
SPDLOG_DEBUG("y m d {} {} {}",year, mon, day);
holiday_map.insert (std::pair <Date, std::list <HME> > (Date (year - 1900, mon - 1, day), lst));
}
@@ -265,7 +265,7 @@ void CSpeedServerManager::InitWdayExpTableOfEmpire (BYTE empire, int wday)
{
if (empire > EMPIRE_MAX_NUM)
{
sys_err ("invalid empire");
SPDLOG_ERROR("invalid empire");
return;
}
@@ -294,7 +294,7 @@ std::list <HME>& CSpeedServerEmpireExp::GetHolidayExpTable(Date date, bool &is_e
else
{
is_exist = false;
sys_err ("Cannot find Holiday %d %d %d",date.year, date.mon, date.day);
SPDLOG_ERROR("Cannot find Holiday {} {} {}",date.year, date.mon, date.day);
}
return it->second;
}
@@ -318,7 +318,7 @@ void CSpeedServerManager::InitHolidayExpTableOfEmpire (BYTE empire, Date date)
{
if (empire > EMPIRE_MAX_NUM)
{
sys_err ("invalid empire");
SPDLOG_ERROR("invalid empire");
return;
}
@@ -327,7 +327,7 @@ void CSpeedServerManager::InitHolidayExpTableOfEmpire (BYTE empire, Date date)
void CSpeedServerEmpireExp::InitHolidayExpTable(Date date)
{
sys_log (0, "init holiday");
SPDLOG_DEBUG("init holiday");
std::map <Date, std::list <HME> >::iterator it = holiday_map.find(date);
if (it == holiday_map.end())
{

View File

@@ -11,7 +11,6 @@
#include "char.h"
#include "item.h"
#include "ani.h"
#include "dev_log.h"
const char* FN_race_name(int race)
{
@@ -141,7 +140,7 @@ bool ANI::load()
{
if (false == load_one_race(race, dir_name[race]))
{
sys_err("ANI directory = %s", dir_name[race]);
SPDLOG_ERROR("ANI directory = {}", dir_name[race]);
return false;
}
}
@@ -200,7 +199,7 @@ bool ANI::load_one_race(int race, const char *dir_name)
for (int weapon = WEAPON_SWORD; weapon < WEAPON_NUM_TYPES; ++weapon)
{
dev_log(LOG_DEB0, "ANI (%s,%s)", FN_race_name(race), FN_weapon_type(weapon));
SPDLOG_TRACE("ANI ({},{})", FN_race_name(race), FN_weapon_type(weapon));
for (BYTE combo = 1; combo <= 8; ++combo)
{
@@ -212,11 +211,11 @@ bool ANI::load_one_race(int race, const char *dir_name)
m_speed[race][1][weapon][combo] = load_one_weapon(dir_name, weapon, combo, true);
m_speed[race][1][weapon][0] = std::min(m_speed[race][1][weapon][0], m_speed[race][1][weapon][combo]); // <20>ּҰ<D6BC>
dev_log(LOG_DEB0, "combo%02d speed=%d horse=%d",
SPDLOG_TRACE("combo{:02} speed={} horse={}",
combo, m_speed[race][0][weapon][combo], m_speed[race][1][weapon][combo]);
}
dev_log(LOG_DEB0, "minspeed=%u", m_speed[race][0][weapon][0]);
SPDLOG_TRACE("minspeed={}", m_speed[race][0][weapon][0]);
}
return true;
@@ -331,7 +330,7 @@ DWORD ani_attack_speed(LPCHARACTER ch)
int weapon = item->GetSubType();
/*
dev_log(LOG_DEB0, "%s : (race,weapon) = (%s,%s) POINT_ATT_SPEED = %d",
SPDLOG_TRACE("{} : (race,weapon) = ({},{}) POINT_ATT_SPEED = {}",
ch->GetName(),
FN_race_name(race),
FN_weapon_type(weapon),

View File

@@ -67,7 +67,7 @@ bool CArenaManager::AddArena(DWORD mapIdx, WORD startA_X, WORD startA_Y, WORD st
if (pArenaMap->AddArena(mapIdx, startA_X, startA_Y, startB_X, startB_Y) == false)
{
sys_log(0, "CArenaManager::AddArena - AddMap Error MapID: %d", mapIdx);
SPDLOG_ERROR("CArenaManager::AddArena - AddMap Error MapID: {}", mapIdx);
return false;
}
@@ -80,7 +80,7 @@ bool CArenaMap::AddArena(DWORD mapIdx, WORD startA_X, WORD startA_Y, WORD startB
{
if (iter->CheckArea(startA_X, startA_Y, startB_X, startB_Y) == false)
{
sys_log(0, "CArenaMap::AddArena - Same Start Position set. stA(%d, %d) stB(%d, %d)", startA_X, startA_Y, startB_X, startB_Y);
SPDLOG_ERROR("CArenaMap::AddArena - Same Start Position set. stA({}, {}) stB({}, {})", startA_X, startA_Y, startB_X, startB_Y);
return false;
}
}
@@ -111,7 +111,7 @@ void CArenaMap::Destroy()
{
itertype(m_listArena) iter = m_listArena.begin();
sys_log(0, "ARENA: ArenaMap will be destroy. mapIndex(%d)", m_dwMapIndex);
SPDLOG_DEBUG("ARENA: ArenaMap will be destroy. mapIndex({})", m_dwMapIndex);
for (; iter != m_listArena.end(); iter++)
{
@@ -212,7 +212,7 @@ EVENTFUNC(ready_to_start_event)
if ( info == NULL )
{
sys_err( "ready_to_start_event> <Factor> Null pointer" );
SPDLOG_ERROR("ready_to_start_event> <Factor> Null pointer" );
return 0;
}
@@ -220,7 +220,7 @@ EVENTFUNC(ready_to_start_event)
if (pArena == NULL)
{
sys_err("ARENA: Arena start event info is null.");
SPDLOG_ERROR("ARENA: Arena start event info is null.");
return 0;
}
@@ -229,18 +229,18 @@ EVENTFUNC(ready_to_start_event)
if (chA == NULL || chB == NULL)
{
sys_err("ARENA: Player err in event func ready_start_event");
SPDLOG_ERROR("ARENA: Player err in event func ready_start_event");
if (chA != NULL)
{
chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
sys_log(0, "ARENA: Oppernent is disappered. MyPID(%d) OppPID(%d)", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
}
if (chB != NULL)
{
chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
sys_log(0, "ARENA: Oppernent is disappered. MyPID(%d) OppPID(%d)", pArena->GetPlayerBPID(), pArena->GetPlayerAPID());
SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerBPID(), pArena->GetPlayerAPID());
}
pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
@@ -370,7 +370,7 @@ EVENTFUNC(ready_to_start_event)
chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
sys_log(0, "ARENA: Something wrong in event func. info->state(%d)", info->state);
SPDLOG_DEBUG("ARENA: Something wrong in event func. info->state({})", info->state);
pArena->EndDuel();
@@ -388,7 +388,7 @@ EVENTFUNC(duel_time_out)
if ( info == NULL )
{
sys_err( "duel_time_out> <Factor> Null pointer" );
SPDLOG_ERROR("duel_time_out> <Factor> Null pointer" );
return 0;
}
@@ -396,7 +396,7 @@ EVENTFUNC(duel_time_out)
if (pArena == NULL)
{
sys_err("ARENA: Time out event error");
SPDLOG_ERROR("ARENA: Time out event error");
return 0;
}
@@ -408,13 +408,13 @@ EVENTFUNC(duel_time_out)
if (chA != NULL)
{
chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
sys_log(0, "ARENA: Oppernent is disappered. MyPID(%d) OppPID(%d)", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
}
if (chB != NULL)
{
chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
sys_log(0, "ARENA: Oppernent is disappered. MyPID(%d) OppPID(%d)", pArena->GetPlayerBPID(), pArena->GetPlayerAPID());
SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerBPID(), pArena->GetPlayerAPID());
}
pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
@@ -445,7 +445,7 @@ EVENTFUNC(duel_time_out)
info->state++;
sys_log(0, "ARENA: Because of time over, duel is end. PIDA(%d) vs PIDB(%d)", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
SPDLOG_DEBUG("ARENA: Because of time over, duel is end. PIDA({}) vs PIDB({})", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
return PASSES_PER_SEC(10);
break;
@@ -496,7 +496,7 @@ bool CArena::StartDuel(LPCHARACTER pCharFrom, LPCHARACTER pCharTo, int nSetPoint
pCharTo->PointChange(POINT_HP, pCharTo->GetMaxHP() - pCharTo->GetHP());
pCharTo->PointChange(POINT_SP, pCharTo->GetMaxSP() - pCharTo->GetSP());
sys_log(0, "ARENA: Start Duel with PID_A(%d) vs PID_B(%d)", GetPlayerAPID(), GetPlayerBPID());
SPDLOG_DEBUG("ARENA: Start Duel with PID_A({}) vs PID_B({})", GetPlayerAPID(), GetPlayerBPID());
return true;
}
@@ -577,7 +577,7 @@ void CArena::EndDuel()
m_mapObserver.clear();
sys_log(0, "ARENA: End Duel PID_A(%d) vs PID_B(%d)", GetPlayerAPID(), GetPlayerBPID());
SPDLOG_DEBUG("ARENA: End Duel PID_A({}) vs PID_B({})", GetPlayerAPID(), GetPlayerBPID());
Clear();
}
@@ -756,7 +756,7 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> <20>¸<EFBFBD><C2B8>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>."), pCharA->GetName());
SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> <20>¸<EFBFBD><C2B8>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>."), pCharA->GetName());
sys_log(0, "ARENA: Duel is end. Winner %s(%d) Loser %s(%d)",
SPDLOG_DEBUG("ARENA: Duel is end. Winner {}({}) Loser {}({})",
pCharA->GetName(), GetPlayerAPID(), pCharB->GetName(), GetPlayerBPID());
}
else
@@ -770,7 +770,7 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
SendChatPacketToObserver(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
sys_log(0, "ARENA: %s(%d) won a round vs %s(%d)",
SPDLOG_DEBUG("ARENA: {}({}) won a round vs {}({})",
pCharA->GetName(), GetPlayerAPID(), pCharB->GetName(), GetPlayerBPID());
}
}
@@ -783,7 +783,7 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> <20>¸<EFBFBD><C2B8>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>."), pCharB->GetName());
SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> <20>¸<EFBFBD><C2B8>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>."), pCharB->GetName());
sys_log(0, "ARENA: Duel is end. Winner(%d) Loser(%d)", GetPlayerBPID(), GetPlayerAPID());
SPDLOG_DEBUG("ARENA: Duel is end. Winner({}) Loser({})", GetPlayerBPID(), GetPlayerAPID());
}
else
{
@@ -796,13 +796,13 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
SendChatPacketToObserver(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
sys_log(0, "ARENA : PID(%d) won a round. Opp(%d)", GetPlayerBPID(), GetPlayerAPID());
SPDLOG_DEBUG("ARENA : PID({}) won a round. Opp({})", GetPlayerBPID(), GetPlayerAPID());
}
}
else
{
// wtf
sys_log(0, "ARENA : OnDead Error (%d, %d) (%d, %d)", m_dwPIDA, m_dwPIDB, dwPIDA, dwPIDB);
SPDLOG_WARN("ARENA : OnDead Error ({}, {}) ({}, {})", m_dwPIDA, m_dwPIDB, dwPIDA, dwPIDB);
}
int potion = quest::CQuestManager::instance().GetEventFlag("arena_potion_limit_count");
@@ -951,7 +951,7 @@ void CArena::OnDisconnect(DWORD pid)
if (GetPlayerB() != NULL)
GetPlayerB()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
sys_log(0, "ARENA : Duel is end because of Opp(%d) is disconnect. MyPID(%d)", GetPlayerAPID(), GetPlayerBPID());
SPDLOG_DEBUG("ARENA : Duel is end because of Opp({}) is disconnect. MyPID({})", GetPlayerAPID(), GetPlayerBPID());
EndDuel();
}
else if (m_dwPIDB == pid)
@@ -959,7 +959,7 @@ void CArena::OnDisconnect(DWORD pid)
if (GetPlayerA() != NULL)
GetPlayerA()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."));
sys_log(0, "ARENA : Duel is end because of Opp(%d) is disconnect. MyPID(%d)", GetPlayerBPID(), GetPlayerAPID());
SPDLOG_DEBUG("ARENA : Duel is end because of Opp({}) is disconnect. MyPID({})", GetPlayerBPID(), GetPlayerAPID());
EndDuel();
}
}
@@ -1057,7 +1057,7 @@ bool CArenaManager::RegisterObserverPtr(LPCHARACTER pChar, DWORD mapIdx, WORD Ob
if (iter == m_mapArenaMap.end())
{
sys_log(0, "ARENA : Cannot find ArenaMap. %d %d %d", mapIdx, ObserverX, ObserverY);
SPDLOG_ERROR("ARENA : Cannot find ArenaMap. {} {} {}", mapIdx, ObserverX, ObserverY);
return false;
}
@@ -1089,7 +1089,7 @@ bool CArena::RegisterObserverPtr(LPCHARACTER pChar)
if (iter == m_mapObserver.end())
{
sys_log(0, "ARENA : not in ob list");
SPDLOG_ERROR("ARENA : not in ob list");
return false;
}

View File

@@ -576,7 +576,7 @@ void AuctionManager::Boot (const char* &data, WORD size)
{
if (decode_2bytes(data) != sizeof(TPlayerItem))
{
sys_err("TPlayerItem table size error");
SPDLOG_ERROR("TPlayerItem table size error");
thecore_shutdown();
return;
}
@@ -597,7 +597,7 @@ void AuctionManager::Boot (const char* &data, WORD size)
}
if (decode_2bytes(data) != sizeof(TAuctionItemInfo))
{
sys_err("TAuctionItemInfo table size error");
SPDLOG_ERROR("TAuctionItemInfo table size error");
thecore_shutdown();
return;
}
@@ -617,7 +617,7 @@ void AuctionManager::Boot (const char* &data, WORD size)
}
if (decode_2bytes(data) != sizeof(TSaleItemInfo))
{
sys_err("TSaleItemInfo table size error");
SPDLOG_ERROR("TSaleItemInfo table size error");
thecore_shutdown();
return;
}
@@ -638,7 +638,7 @@ void AuctionManager::Boot (const char* &data, WORD size)
if (decode_2bytes(data) != sizeof(TWishItemInfo))
{
sys_err("TWishItemInfo table size error");
SPDLOG_ERROR("TWishItemInfo table size error");
thecore_shutdown();
return;
}
@@ -659,7 +659,7 @@ void AuctionManager::Boot (const char* &data, WORD size)
if (decode_2bytes(data) != (sizeof(DWORD) + sizeof(DWORD) + sizeof(int)))
{
sys_err("my_bid table size error");
SPDLOG_ERROR("my_bid table size error");
thecore_shutdown();
return;
}
@@ -702,7 +702,7 @@ bool AuctionManager::InsertItem (TPlayerItem* player_item)
if (!item)
{
sys_err("cannot create item vnum %d id %u",player_item->vnum, player_item->id);
SPDLOG_ERROR("cannot create item vnum {} id {}",player_item->vnum, player_item->id);
return false;
}
@@ -756,7 +756,7 @@ bool AuctionManager::DeleteItem (DWORD item_id)
// return false;
// if (it->second + changing_amount < 0)
// {
// sys_err ("Cannot have money under 0.");
// SPDLOG_ERROR("Cannot have money under 0.");
// return false;
// }
//
@@ -876,7 +876,7 @@ void AuctionManager::enroll_auction (LPCHARACTER ch, LPITEM item, BYTE empire, i
{
if (ch != item->GetOwner())
{
sys_err ("Item %d's owner is %s, not %s",ch->GetName(), item->GetOwner()->GetName());
SPDLOG_ERROR("Item {}'s owner is {}, not {}", ch->GetName(), item->GetOwner()->GetName());
return;
}
if (item->IsEquipped())
@@ -887,14 +887,14 @@ void AuctionManager::enroll_auction (LPCHARACTER ch, LPITEM item, BYTE empire, i
if (GetAuctionItemInfo (item->GetID()))
{
sys_err ("Item %d is already in auction.", item->GetID());
SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
ch->ChatPacket(CHAT_TYPE_INFO, "<EFBFBD>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ž<EFBFBD>. <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>?");
return;
}
if (item->GetWindow() == AUCTION)
{
sys_err ("Item %d is already in auction.", item->GetID());
SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
ch->ChatPacket(CHAT_TYPE_INFO, "<EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>..");
return;
}
@@ -913,7 +913,7 @@ void AuctionManager::enroll_sale (LPCHARACTER ch, LPITEM item, DWORD wisher_id,
{
if (ch != item->GetOwner())
{
sys_err ("Item %d's owner is %s, not %s",ch->GetName(), item->GetOwner()->GetName());
SPDLOG_ERROR("Item {}'s owner is {}, not {}", ch->GetName(), item->GetOwner()->GetName());
return;
}
if (item->IsEquipped())
@@ -924,14 +924,14 @@ void AuctionManager::enroll_sale (LPCHARACTER ch, LPITEM item, DWORD wisher_id,
if (GetSaleItemInfo (item->GetID()))
{
sys_err ("Item %d is already in auction.", item->GetID());
SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
ch->ChatPacket(CHAT_TYPE_INFO, "<EFBFBD>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ž<EFBFBD>. <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>?");
return;
}
if (item->GetWindow() == AUCTION)
{
sys_err ("Item %d is already in auction.", item->GetID());
SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
ch->ChatPacket(CHAT_TYPE_INFO, "<EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>..");
return;
}
@@ -982,7 +982,7 @@ void AuctionManager::immediate_purchase (LPCHARACTER ch, DWORD item_id)
if (item_info == NULL)
{
sys_err ("Invild item id : %d", item_id);
SPDLOG_ERROR("Invild item id : {}", item_id);
return;
}
@@ -1063,7 +1063,7 @@ void AuctionManager::rebid (LPCHARACTER ch, DWORD item_id, int bid_price)
bool lock = mb.second;
if (money == -1)
{
sys_err ("Do bid first. How can you rebid? pid %d, item_id %d",ch->GetPlayerID(), item_id);
SPDLOG_ERROR("Do bid first. How can you rebid? pid {}, item_id {}", ch->GetPlayerID(), item_id);
return;
}
@@ -1095,7 +1095,7 @@ void AuctionManager::bid_cancel (LPCHARACTER ch, DWORD item_id)
bool lock = mb.second;
if (money == -1)
{
sys_err ("Do bid first. How can you bid cancel? pid %d, item_id %d",ch->GetPlayerID(), item_id);
SPDLOG_ERROR("Do bid first. How can you bid cancel? pid {}, item_id {}",ch->GetPlayerID(), item_id);
return;
}
@@ -1303,7 +1303,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
if (!GetInventoryItem(player_item->id))
{
sys_err ("AUCTION_CMD %d : invalid item_id %d", cmd, item_id);
SPDLOG_ERROR("AUCTION_CMD {} : invalid item_id {}", cmd, item_id);
break;
}
@@ -1333,7 +1333,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
{
if (!Wish.DeleteItemInfo (commander_id, cmd_result->target))
{
sys_err ("Cannot cancel wish, invalid player_id : %d, item_num : %d", commander_id, cmd_result->target);
SPDLOG_ERROR("Cannot cancel wish, invalid player_id : {}, item_num : {}", commander_id, cmd_result->target);
}
else if (ch != NULL)
{

View File

@@ -105,19 +105,19 @@ bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)
int battle_melee_attack(LPCHARACTER ch, LPCHARACTER victim)
{
if (test_server&&ch->IsPC())
sys_log(0, "battle_melee_attack : [%s] attack to [%s]", ch->GetName(), victim->GetName());
SPDLOG_TRACE("battle_melee_attack : [{}] attack to [{}]", ch->GetName(), victim->GetName());
if (!victim || ch == victim)
return BATTLE_NONE;
if (test_server&&ch->IsPC())
sys_log(0, "battle_melee_attack : [%s] attack to [%s]", ch->GetName(), victim->GetName());
SPDLOG_TRACE("battle_melee_attack : [{}] attack to [{}]", ch->GetName(), victim->GetName());
if (!battle_is_attackable(ch, victim))
return BATTLE_NONE;
if (test_server&&ch->IsPC())
sys_log(0, "battle_melee_attack : [%s] attack to [%s]", ch->GetName(), victim->GetName());
SPDLOG_TRACE("battle_melee_attack : [{}] attack to [{}]", ch->GetName(), victim->GetName());
// <20>Ÿ<EFBFBD> üũ
int distance = DISTANCE_APPROX(ch->GetX() - victim->GetX(), ch->GetY() - victim->GetY());
@@ -140,8 +140,7 @@ int battle_melee_attack(LPCHARACTER ch, LPCHARACTER victim)
if (distance > max)
{
if (test_server)
sys_log(0, "VICTIM_FAR: %s distance: %d max: %d", ch->GetName(), distance, max);
SPDLOG_TRACE("VICTIM_FAR: {} distance: {} max: {}", ch->GetName(), distance, max);
return BATTLE_NONE;
}
@@ -367,7 +366,7 @@ void Item_GetDamage(LPITEM pkItem, int* pdamMin, int* pdamMax)
}
if (pkItem->GetType() != ITEM_WEAPON)
sys_err("Item_GetDamage - !ITEM_WEAPON vnum=%d, type=%d", pkItem->GetOriginalVnum(), pkItem->GetType());
SPDLOG_ERROR("Item_GetDamage - !ITEM_WEAPON vnum={}, type={}", pkItem->GetOriginalVnum(), pkItem->GetType());
*pdamMin = pkItem->GetValue(3);
*pdamMax = pkItem->GetValue(4);
@@ -394,7 +393,7 @@ int CalcMeleeDamage(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, bool bIgnoreDe
break;
case WEAPON_BOW:
sys_err("CalcMeleeDamage should not handle bows (name: %s)", pkAttacker->GetName());
SPDLOG_ERROR("CalcMeleeDamage should not handle bows (name: {})", pkAttacker->GetName());
return 0;
default:
@@ -677,8 +676,7 @@ int battle_hit(LPCHARACTER pkAttacker, LPCHARACTER pkVictim)
iDam = attMul * tempIDam + 0.5f;
//PROF_UNIT puHit("Hit");
if (test_server)
sys_log(0, "battle_hit : [%s] attack to [%s] : dam: %d", pkAttacker->GetName(), pkVictim->GetName(), iDam);
SPDLOG_TRACE("battle_hit : [{}] attack to [{}] : dam: {}", pkAttacker->GetName(), pkVictim->GetName(), iDam);
//PROF_UNIT puDam("Dam");
if (pkVictim->Damage(pkAttacker, iDam, DAMAGE_TYPE_NORMAL))
@@ -740,7 +738,7 @@ void SET_ATTACKED_TIME(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
{
// 2013 09 11 CYH debugging log
/*sys_log(0, "%s attack test log! time (delta, limit)=(%u, %u). ch->m_kAttackLog.dwvID(%u) victim->GetVID(%u)",
/*SPDLOG_DEBUG("{} attack test log! time (delta, limit)=({}, {}). ch->m_kAttackLog.dwvID({}) victim->GetVID({})",
ch->GetName(),
current_time - ch->m_kAttackLog.dwTime,
GET_ATTACK_SPEED(ch),
@@ -748,7 +746,7 @@ bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
victim->GetVID()
);
sys_log(0, "%s attack test log! time (delta, limit)=(%u, %u). victim->m_AttackedLog.dwPID(%u) ch->GetPlayerID(%u)",
SPDLOG_DEBUG("{} attack test log! time (delta, limit)=({}, {}). victim->m_AttackedLog.dwPID({}) ch->GetPlayerID({})",
ch->GetName(),
current_time - victim->m_AttackedLog.dwAttackedTime,
GET_ATTACK_SPEED(ch),
@@ -764,7 +762,7 @@ bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
if (test_server)
{
sys_log(0, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d",
SPDLOG_TRACE("{} attack hack! time (delta, limit)=({}, {}) hack_count {}",
ch->GetName(),
current_time - ch->m_kAttackLog.dwTime,
GET_ATTACK_SPEED(ch),
@@ -793,7 +791,7 @@ bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
if (test_server)
{
sys_log(0, "%s Attack Speed HACK! time (delta, limit)=(%u, %u), hack_count = %d",
SPDLOG_TRACE("{} Attack Speed HACK! time (delta, limit)=({}, {}), hack_count = {}",
ch->GetName(),
current_time - victim->m_AttackedLog.dwAttackedTime,
GET_ATTACK_SPEED(ch),

View File

@@ -27,7 +27,7 @@ public:
if (level >= _countof(beltGradeByLevelTable))
{
sys_err("CBeltInventoryHelper::GetBeltGradeByRefineLevel - Overflow level (%d", level);
SPDLOG_ERROR("CBeltInventoryHelper::GetBeltGradeByRefineLevel - Overflow level ({})", level);
return 0;
}

View File

@@ -10,7 +10,6 @@
#include "stdafx.h"
#include "constants.h"
#include "log.h"
#include "dev_log.h"
#include "locale_service.h"
#include "item.h"
#include "blend_item.h"
@@ -37,7 +36,7 @@ bool Blend_Item_init()
char file_name[256];
snprintf (file_name, sizeof(file_name), "%s/blend.txt", LocaleService_GetBasePath().c_str());
sys_log(0, "Blend_Item_init %s ", file_name);
SPDLOG_INFO("Blend_Item_init {} ", file_name);
DO_ALL_BLEND_INFO(iter)
{
@@ -48,7 +47,7 @@ bool Blend_Item_init()
if (false==Blend_Item_load(file_name))
{
sys_err("<Blend_Item_init> fail");
SPDLOG_ERROR("<Blend_Item_init> fail");
return false;
}
return true;
@@ -108,7 +107,7 @@ bool Blend_Item_load(char *file)
if (0 == (blend_item_info->apply_type = FN_get_apply_type(v)))
{
sys_err ("Invalid apply_type(%s)", v);
SPDLOG_ERROR("Invalid apply_type({})", v);
return false;
}
}
@@ -222,7 +221,7 @@ bool Blend_Item_set_value(LPITEM item)
apply_value = blend_info->apply_value [FN_random_index()];
apply_duration = blend_info->apply_duration [FN_random_index()];
}
sys_log (0, "blend_item : type : %d, value : %d, du : %d", apply_type, apply_value, apply_duration);
SPDLOG_DEBUG("blend_item : type : {}, value : {}, du : {}", apply_type, apply_value, apply_duration);
item->SetSocket(0, apply_type);
item->SetSocket(1, apply_value);
item->SetSocket(2, apply_duration);

View File

@@ -10,7 +10,6 @@
#include "stdafx.h"
#include "constants.h"
#include "block_country.h"
#include "dev_log.h"
#define DEC_ITER(iter) std::vector<T_BLOCK_IP*>::iterator iter
#define DO_ALL_BLOCKED_IP(iter) for ((iter)=s_blocked_ip.begin(); (iter)!=s_blocked_ip.end(); ++(iter))
@@ -36,7 +35,7 @@ std::set<std::string> s_block_exception;
// static functions
static void __add_block_exception(const char *login)
{
dev_log(LOG_DEB0, "BLOCK_EXCEPTION_ADD : %s", login);
SPDLOG_TRACE("BLOCK_EXCEPTION_ADD : {}", login);
DEC_EXCEPTION_ITER(iter);
std::string string_login(login);
@@ -52,7 +51,7 @@ dev_log(LOG_DEB0, "BLOCK_EXCEPTION_ADD : %s", login);
static void __del_block_exception(const char *login)
{
dev_log(LOG_DEB0, "BLOCK_EXCEPTION_DEL : %s", login);
SPDLOG_TRACE("BLOCK_EXCEPTION_DEL : {}", login);
DEC_EXCEPTION_ITER(iter);
std::string string_login(login);
@@ -80,7 +79,7 @@ void add_blocked_country_ip(TPacketBlockCountryIp *data)
s_blocked_ip.push_back(block_ip);
dev_log(LOG_DEB0, "BLOCKED_IP = %u - %u", block_ip->ip_from, block_ip->ip_to);
SPDLOG_TRACE("BLOCKED_IP = {} - {}", block_ip->ip_from, block_ip->ip_to);
}
@@ -119,7 +118,7 @@ bool is_blocked_country_ip(const char *user_ip)
if (INADDR_NONE == in_address)
#endif
{
dev_log(LOG_INFO, "BLOCKED_COUNTRY_IP (%s) : YES", user_ip);
SPDLOG_INFO("BLOCKED_COUNTRY_IP ({}) : YES", user_ip);
return true; // <20><><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>ó<EFBFBD><C3B3>
}
ip_number = htonl(st_addr.s_addr);
@@ -129,12 +128,12 @@ bool is_blocked_country_ip(const char *user_ip)
block_ip = *iter;
if ( block_ip->ip_from <= ip_number && ip_number <= block_ip->ip_to )
{
dev_log(LOG_INFO, "BLOCKED_COUNTRY_IP (%s) : YES", user_ip);
SPDLOG_INFO("BLOCKED_COUNTRY_IP ({}) : YES", user_ip);
return true;
}
}
dev_log(LOG_INFO, "BLOCKED_COUNTRY_IP (%s) : NO", user_ip);
SPDLOG_DEBUG("BLOCKED_COUNTRY_IP ({}) : NO", user_ip);
return false;
}

View File

@@ -51,7 +51,7 @@ void CBuffOnAttributes::RemoveBuffFromItem(LPITEM pItem)
}
else
{
sys_err ("Buff ERROR(type %d). This item(%d) attr_type(%d) was not in buff pool", m_bPointType, pItem->GetVnum(), attr.bType);
SPDLOG_ERROR("Buff ERROR(type {}). This item({}) attr_type({}) was not in buff pool", m_bPointType, pItem->GetVnum(), attr.bType);
return;
}
}

View File

@@ -96,7 +96,7 @@ void CObject::EncodeInsertPacket(LPENTITY entity)
if (!(d = entity->GetDesc()))
return;
sys_log(0, "ObjectInsertPacket vid %u vnum %u rot %f %f %f",
SPDLOG_DEBUG("ObjectInsertPacket vid {} vnum {} rot {} {} {}",
m_dwVID, m_data.dwVnum, m_data.xRot, m_data.yRot, m_data.zRot);
TPacketGCCharacterAdd pack;
@@ -132,7 +132,7 @@ void CObject::EncodeRemovePacket(LPENTITY entity)
if (!(d = entity->GetDesc()))
return;
sys_log(0, "ObjectRemovePacket vid %u", m_dwVID);
SPDLOG_DEBUG("ObjectRemovePacket vid {}", m_dwVID);
TPacketGCCharacterDelete pack;
@@ -153,7 +153,7 @@ bool CObject::Show(int lMapIndex, int x, int y)
if (!tree)
{
sys_err("cannot find sectree by %dx%d mapindex %d", x, y, lMapIndex);
SPDLOG_ERROR("cannot find sectree by {}x{} mapindex {}", x, y, lMapIndex);
return false;
}
@@ -292,7 +292,7 @@ void CObject::RegenNPC()
if (!m_chNPC)
{
sys_err("Cannot create guild npc");
SPDLOG_ERROR("Cannot create guild npc");
return;
}
@@ -461,7 +461,7 @@ void CLand::DeleteObject(DWORD dwID)
if (!(pkObj = FindObject(dwID)))
return;
sys_log(0, "Land::DeleteObject %u", dwID);
SPDLOG_DEBUG("Land::DeleteObject {}", dwID);
CManager::instance().UnregisterObject(pkObj);
M2_DESTROY_CHARACTER (pkObj->GetNPC());
@@ -506,14 +506,14 @@ bool CLand::RequestCreateObject(DWORD dwVnum, int lMapIndex, int x, int y, float
if (!pkProto)
{
sys_err("Invalid Object vnum %u", dwVnum);
SPDLOG_ERROR("Invalid Object vnum {}", dwVnum);
return false;
}
const TMapRegion * r = rkSecTreeMgr.GetMapRegion(lMapIndex);
if (!r)
return false;
sys_log(0, "RequestCreateObject(vnum=%u, map=%d, pos=(%d,%d), rot=(%.1f,%.1f,%.1f) region(%d,%d ~ %d,%d)",
SPDLOG_DEBUG("RequestCreateObject(vnum={}, map={}, pos=({},{}), rot=({:.1f},{:.1f},{:.1f}) region({},{} ~ {},{})",
dwVnum, lMapIndex, x, y, xRot, yRot, zRot, r->sx, r->sy, r->ex, r->ey);
x += r->sx;
@@ -539,7 +539,7 @@ bool CLand::RequestCreateObject(DWORD dwVnum, int lMapIndex, int x, int y, float
if (tsx < sx || tex > ex || tsy < sy || tey > ey)
{
sys_err("invalid position: object is outside of land region\nLAND: %d %d ~ %d %d\nOBJ: %d %d ~ %d %d", sx, sy, ex, ey, osx, osy, oex, oey);
SPDLOG_ERROR("invalid position: object is outside of land region\nLAND: {} {} ~ {} {}\nOBJ: {} {} ~ {} {}", sx, sy, ex, ey, osx, osy, oex, oey);
return false;
}
@@ -548,7 +548,7 @@ bool CLand::RequestCreateObject(DWORD dwVnum, int lMapIndex, int x, int y, float
{
if (rkSecTreeMgr.ForAttrRegion(lMapIndex, osx, osy, oex, oey, (int)zRot, ATTR_OBJECT, ATTR_REGION_MODE_CHECK))
{
sys_err("another object already exist");
SPDLOG_ERROR("another object already exist");
return false;
}
FIsIn f (osx, osy, oex, oey);
@@ -556,7 +556,7 @@ bool CLand::RequestCreateObject(DWORD dwVnum, int lMapIndex, int x, int y, float
if (f.bIn)
{
sys_err("another object already exist");
SPDLOG_ERROR("another object already exist");
return false;
}
}
@@ -581,12 +581,12 @@ void CLand::RequestDeleteObject(DWORD dwID)
{
if (!FindObject(dwID))
{
sys_err("no object by id %u", dwID);
SPDLOG_ERROR("no object by id {}", dwID);
return;
}
db_clientdesc->DBPacket(HEADER_GD_DELETE_OBJECT, 0, &dwID, sizeof(DWORD));
sys_log(0, "RequestDeleteObject id %u", dwID);
SPDLOG_DEBUG("RequestDeleteObject id {}", dwID);
}
void CLand::RequestDeleteObjectByVID(DWORD dwVID)
@@ -595,13 +595,13 @@ void CLand::RequestDeleteObjectByVID(DWORD dwVID)
if (!(pkObj = FindObjectByVID(dwVID)))
{
sys_err("no object by vid %u", dwVID);
SPDLOG_ERROR("no object by vid {}", dwVID);
return;
}
DWORD dwID = pkObj->GetID();
db_clientdesc->DBPacket(HEADER_GD_DELETE_OBJECT, 0, &dwID, sizeof(DWORD));
sys_log(0, "RequestDeleteObject vid %u id %u", dwVID, dwID);
SPDLOG_DEBUG("RequestDeleteObject vid {} id {}", dwVID, dwID);
}
void CLand::SetOwner(DWORD dwGuild)
@@ -621,7 +621,7 @@ void CLand::RequestUpdate(DWORD dwGuild)
a[1] = dwGuild;
db_clientdesc->DBPacket(HEADER_GD_UPDATE_LAND, 0, &a[0], sizeof(DWORD) * 2);
sys_log(0, "RequestUpdate id %u guild %u", a[0], a[1]);
SPDLOG_DEBUG("RequestUpdate id {} guild {}", a[0], a[1]);
}
////////////////////////////////////////////////////////////////////////////////////
@@ -654,7 +654,7 @@ bool CManager::LoadObjectProto(const TObjectProto * pProto, int size) // from DB
TObjectProto & r = m_vec_kObjectProto[i];
// BUILDING_NPC
sys_log(0, "ObjectProto %u price %u upgrade %u upg_limit %u life %d NPC %u",
SPDLOG_DEBUG("ObjectProto {} price {} upgrade {} upg_limit {} life {} NPC {}",
r.dwVnum, r.dwPrice, r.dwUpgradeVnum, r.dwUpgradeLimitTime, r.lLife, r.dwNPCVnum);
// END_OF_BUILDING_NPC
@@ -665,11 +665,11 @@ bool CManager::LoadObjectProto(const TObjectProto * pProto, int size) // from DB
if (NULL == ITEM_MANAGER::instance().GetTable(r.kMaterials[j].dwItemVnum))
{
sys_err(" mat: ERROR!! no item by vnum %u", r.kMaterials[j].dwItemVnum);
SPDLOG_ERROR(" mat: ERROR!! no item by vnum {}", r.kMaterials[j].dwItemVnum);
return false;
}
sys_log(0, " mat: %u %u", r.kMaterials[j].dwItemVnum, r.kMaterials[j].dwCount);
SPDLOG_TRACE(" mat: {} {}", r.kMaterials[j].dwItemVnum, r.kMaterials[j].dwCount);
}
m_map_pkObjectProto.insert(std::make_pair(r.dwVnum, &m_vec_kObjectProto[i]));
@@ -700,7 +700,7 @@ bool CManager::LoadLand(TLand * pTable) // from DB
CLand * pkLand = M2_NEW CLand(pTable);
m_map_pkLand.insert(std::make_pair(pkLand->GetID(), pkLand));
sys_log(0, "LAND: %u map %d %dx%d w %u h %u",
SPDLOG_INFO("LAND: {} map {} {}x{} w {} h {}",
pTable->dwID, pTable->lMapIndex, pTable->x, pTable->y, pTable->width, pTable->height);
return true;
@@ -712,7 +712,7 @@ void CManager::UpdateLand(TLand * pTable)
if (!pkLand)
{
sys_err("cannot find land by id %u", pTable->dwID);
SPDLOG_ERROR("cannot find land by id {}", pTable->dwID);
return;
}
@@ -736,7 +736,7 @@ void CManager::UpdateLand(TLand * pTable)
e.height = pTable->height;
e.dwGuildID = pTable->dwGuildID;
sys_log(0, "BUILDING: UpdateLand %u pos %dx%d guild %u", e.dwID, e.x, e.y, e.dwGuildID);
SPDLOG_INFO("BUILDING: UpdateLand {} pos {}x{} guild {}", e.dwID, e.x, e.y, e.dwGuildID);
CGuild *guild = CGuildManager::instance().FindGuild(pTable->dwGuildID);
while (it != cont.end())
@@ -766,7 +766,7 @@ CLand * CManager::FindLand(DWORD dwID)
CLand * CManager::FindLand(int lMapIndex, int x, int y)
{
sys_log(0, "BUILDING: FindLand %d %d %d", lMapIndex, x, y);
SPDLOG_DEBUG("BUILDING: FindLand {} {} {}", lMapIndex, x, y);
const TMapRegion * r = SECTREE_MANAGER::instance().GetMapRegion(lMapIndex);
@@ -815,11 +815,16 @@ CLand * CManager::FindLandByGuild(DWORD GID)
bool CManager::LoadObject(TObject * pTable, bool isBoot) // from DB
{
// Skip loading if the target map is not available on this core
// Source: https://metin2.dev/topic/23614-solving-a-very-old-problem-what-most-people-ignore/#comment-163073
if (!map_allow_find(pTable->lMapIndex))
return false;
CLand * pkLand = FindLand(pTable->dwLandID);
if (!pkLand)
{
sys_log(0, "Cannot find land by id %u", pTable->dwLandID);
SPDLOG_ERROR("Cannot find land by id {}", pTable->dwLandID);
return false;
}
@@ -827,11 +832,11 @@ bool CManager::LoadObject(TObject * pTable, bool isBoot) // from DB
if (!pkProto)
{
sys_err("Cannot find object %u in prototype (id %u)", pTable->dwVnum, pTable->dwID);
SPDLOG_ERROR("Cannot find object {} in prototype (id {})", pTable->dwVnum, pTable->dwID);
return false;
}
sys_log(0, "OBJ: id %u vnum %u map %d pos %dx%d", pTable->dwID, pTable->dwVnum, pTable->lMapIndex, pTable->x, pTable->y);
SPDLOG_DEBUG("OBJ: id {} vnum {} map {} pos {}x{}", pTable->dwID, pTable->dwVnum, pTable->lMapIndex, pTable->x, pTable->y);
LPOBJECT pkObj = M2_NEW CObject(pTable, pkProto);
@@ -880,7 +885,7 @@ void CManager::FinalizeBoot()
}
// BUILDING_NPC
sys_log(0, "FinalizeBoot");
SPDLOG_DEBUG("FinalizeBoot");
// END_OF_BUILDING_NPC
itertype(m_map_pkLand) it2 = m_map_pkLand.begin();
@@ -892,7 +897,7 @@ void CManager::FinalizeBoot()
const TLand & r = pkLand->GetData();
// LAND_MASTER_LOG
sys_log(0, "LandMaster map_index=%d pos=(%d, %d)", r.lMapIndex, r.x, r.y);
SPDLOG_DEBUG("LandMaster map_index={} pos=({}, {})", r.lMapIndex, r.x, r.y);
// END_OF_LAND_MASTER_LOG
if (r.dwGuildID != 0)
@@ -911,7 +916,7 @@ void CManager::FinalizeBoot()
void CManager::DeleteObject(DWORD dwID) // from DB
{
sys_log(0, "OBJ_DEL: %u", dwID);
SPDLOG_DEBUG("OBJ_DEL: {}", dwID);
itertype(m_map_pkObjByID) it = m_map_pkObjByID.find(dwID);
@@ -975,7 +980,7 @@ void CManager::SendLandList(LPDESC d, int lMapIndex)
++wCount;
}
sys_log(0, "SendLandList map %d count %u elem_size: %d", lMapIndex, wCount, buf.size());
SPDLOG_DEBUG("SendLandList map {} count {} elem_size: {}", lMapIndex, wCount, buf.size());
if (wCount != 0)
{
@@ -996,13 +1001,13 @@ void CManager::ClearLand(DWORD dwLandID)
if ( pLand == NULL )
{
sys_log(0, "LAND_CLEAR: there is no LAND id like %d", dwLandID);
SPDLOG_WARN("LAND_CLEAR: there is no LAND id like {}", dwLandID);
return;
}
pLand->ClearLand();
sys_log(0, "LAND_CLEAR: request Land Clear. LandID: %d", pLand->GetID());
SPDLOG_DEBUG("LAND_CLEAR: request Land Clear. LandID: {}", pLand->GetID());
}
void CManager::ClearLandByGuildID(DWORD dwGuildID)
@@ -1011,13 +1016,13 @@ void CManager::ClearLandByGuildID(DWORD dwGuildID)
if ( pLand == NULL )
{
sys_log(0, "LAND_CLEAR: there is no GUILD id like %d", dwGuildID);
SPDLOG_WARN("LAND_CLEAR: there is no GUILD id like {}", dwGuildID);
return;
}
pLand->ClearLand();
sys_log(0, "LAND_CLEAR: request Land Clear. LandID: %d", pLand->GetID());
SPDLOG_DEBUG("LAND_CLEAR: request Land Clear. LandID: {}", pLand->GetID());
}
void CLand::ClearLand()

View File

@@ -241,7 +241,7 @@ EVENTFUNC(castle_siege_event)
if ( info == NULL )
{
sys_err( "castle_siege_event> <Factor> Null pointer" );
SPDLOG_ERROR("castle_siege_event> <Factor> Null pointer" );
return 0;
}
@@ -320,7 +320,7 @@ EVENTFUNC(castle_stone_event)
if (info == NULL)
{
sys_err( "castle_stone_event> <Factor> Null pointer" );
SPDLOG_ERROR("castle_stone_event> <Factor> Null pointer" );
return 0;
}
@@ -470,7 +470,7 @@ bool castle_boot()
else
{
fclose(fp);
sys_err("wrong empire number is null");
SPDLOG_ERROR("wrong empire number is null");
return false;
}
}
@@ -526,7 +526,7 @@ void castle_save()
if (NULL == fp)
{
sys_err("<FAIL> fopen(%s)", castle_file);
SPDLOG_ERROR("<FAIL> fopen({})", castle_file);
return;
}

File diff suppressed because it is too large Load Diff

View File

@@ -71,7 +71,7 @@ EVENTFUNC(affect_event)
if ( info == NULL )
{
sys_err( "affect_event> <Factor> Null pointer" );
SPDLOG_ERROR("affect_event> <Factor> Null pointer" );
return 0;
}
@@ -174,7 +174,7 @@ void CHARACTER::StartAffectEvent()
char_event_info* info = AllocEventInfo<char_event_info>();
info->ch = this;
m_pkAffectEvent = event_create(affect_event, info, passes_per_sec);
sys_log(1, "StartAffectEvent %s %p %p", GetName(), this, get_pointer(m_pkAffectEvent));
SPDLOG_DEBUG("StartAffectEvent {} {} {}", GetName(), (void*) this, (void*) get_pointer(m_pkAffectEvent));
}
void CHARACTER::ClearAffect(bool bSave)
@@ -357,7 +357,7 @@ void CHARACTER::SaveAffect()
if (IS_NO_SAVE_AFFECT(pkAff->dwType))
continue;
sys_log(1, "AFFECT_SAVE: %u %u %d %d", pkAff->dwType, pkAff->bApplyOn, pkAff->lApplyValue, pkAff->lDuration);
SPDLOG_DEBUG("AFFECT_SAVE: {} {} {} {}", pkAff->dwType, pkAff->bApplyOn, pkAff->lApplyValue, pkAff->lDuration);
p.dwPID = GetPlayerID();
p.elem.dwType = pkAff->dwType;
@@ -390,7 +390,7 @@ EVENTFUNC(load_affect_login_event)
if ( info == NULL )
{
sys_err( "load_affect_login_event_info> <Factor> Null pointer" );
SPDLOG_ERROR("load_affect_login_event_info> <Factor> Null pointer" );
return 0;
}
@@ -426,14 +426,14 @@ EVENTFUNC(load_affect_login_event)
}
else if (d->IsPhase(PHASE_GAME))
{
sys_log(1, "Affect Load by Event");
SPDLOG_DEBUG("Affect Load by Event");
ch->LoadAffect(info->count, (TPacketAffectElement*)info->data);
M2_DELETE_ARRAY(info->data);
return 0;
}
else
{
sys_err("input_db.cpp:quest_login_event INVALID PHASE pid %d", ch->GetPlayerID());
SPDLOG_ERROR("input_db.cpp:quest_login_event INVALID PHASE pid {}", ch->GetPlayerID());
M2_DELETE_ARRAY(info->data);
return 0;
}
@@ -445,8 +445,7 @@ void CHARACTER::LoadAffect(DWORD dwCount, TPacketAffectElement * pElements)
if (!GetDesc()->IsPhase(PHASE_GAME))
{
if (test_server)
sys_log(0, "LOAD_AFFECT: Creating Event", GetName(), dwCount);
SPDLOG_TRACE("LOAD_AFFECT: Creating Event", GetName(), dwCount);
load_affect_login_event_info* info = AllocEventInfo<load_affect_login_event_info>();
@@ -462,8 +461,7 @@ void CHARACTER::LoadAffect(DWORD dwCount, TPacketAffectElement * pElements)
ClearAffect(true);
if (test_server)
sys_log(0, "LOAD_AFFECT: %s count %d", GetName(), dwCount);
SPDLOG_TRACE("LOAD_AFFECT: {} count {}", GetName(), dwCount);
TAffectFlag afOld = m_afAffectFlag;
@@ -488,15 +486,12 @@ void CHARACTER::LoadAffect(DWORD dwCount, TPacketAffectElement * pElements)
if (pElements->bApplyOn >= POINT_MAX_NUM)
{
sys_err("invalid affect data %s ApplyOn %u ApplyValue %d",
SPDLOG_ERROR("invalid affect data {} ApplyOn {} ApplyValue {}",
GetName(), pElements->bApplyOn, pElements->lApplyValue);
continue;
}
if (test_server)
{
sys_log(0, "Load Affect : Affect %s %d %d", GetName(), pElements->dwType, pElements->bApplyOn );
}
SPDLOG_TRACE("Load Affect : Affect {} {} {}", GetName(), pElements->dwType, pElements->bApplyOn );
CAffect* pkAff = CAffect::Acquire();
m_list_pkAffect.push_back(pkAff);
@@ -544,7 +539,7 @@ bool CHARACTER::AddAffect(DWORD dwType, BYTE bApplyOn, int lApplyValue, DWORD dw
if (lDuration == 0)
{
sys_err("Character::AddAffect lDuration == 0 type %d", lDuration, dwType);
SPDLOG_ERROR("Character::AddAffect lDuration == 0 type {}", lDuration, dwType);
lDuration = 1;
}
@@ -587,8 +582,7 @@ bool CHARACTER::AddAffect(DWORD dwType, BYTE bApplyOn, int lApplyValue, DWORD dw
}
sys_log(1, "AddAffect %s type %d apply %d %d flag %u duration %d", GetName(), dwType, bApplyOn, lApplyValue, dwFlag, lDuration);
sys_log(0, "AddAffect %s type %d apply %d %d flag %u duration %d", GetName(), dwType, bApplyOn, lApplyValue, dwFlag, lDuration);
SPDLOG_DEBUG("AddAffect {} type {} apply {} {} flag {} duration {}", GetName(), dwType, bApplyOn, lApplyValue, dwFlag, lDuration);
pkAff->dwType = dwType;
pkAff->bApplyOn = bApplyOn;
@@ -703,8 +697,7 @@ bool CHARACTER::RemoveAffect(CAffect * pkAff)
}
CheckMaximumPoints();
if (test_server)
sys_log(0, "AFFECT_REMOVE: %s (flag %u apply: %u)", GetName(), pkAff->dwFlag, pkAff->bApplyOn);
SPDLOG_TRACE("AFFECT_REMOVE: {} (flag {} apply: {})", GetName(), pkAff->dwFlag, pkAff->bApplyOn);
if (IsPC())
{
@@ -801,7 +794,7 @@ bool CHARACTER::IsGoodAffect(BYTE bAffectType) const
void CHARACTER::RemoveBadAffect()
{
sys_log(0, "RemoveBadAffect %s", GetName());
SPDLOG_DEBUG("RemoveBadAffect {}", GetName());
// <20><>
RemovePoison();
RemoveFire();

View File

@@ -26,7 +26,6 @@
#include "exchange.h"
#include "shop_manager.h"
#include "castle.h"
#include "dev_log.h"
#include "ani.h"
#include "BattleArena.h"
#include "packet.h"
@@ -179,8 +178,7 @@ void CHARACTER::DistributeSP(LPCHARACTER pkKiller, int iMethod)
bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
{
if (test_server)
sys_log(0, "[TEST_SERVER] Attack : %s type %d, MobBattleType %d", GetName(), bType, !GetMobBattleType() ? 0 : GetMobAttackRange());
SPDLOG_TRACE("[TEST_SERVER] Attack : {} type {}, MobBattleType {}", GetName(), bType, !GetMobBattleType() ? 0 : GetMobAttackRange());
//PROF_UNIT puAttack("Attack");
if (!CanMove())
return false;
@@ -238,7 +236,7 @@ bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
break;
default:
sys_err("Unhandled battle type %d", GetMobBattleType());
SPDLOG_ERROR("Unhandled battle type {}", GetMobBattleType());
iRet = BATTLE_NONE;
break;
}
@@ -249,18 +247,16 @@ bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
{
if (dwCurrentTime - m_dwLastSkillTime > 1500)
{
sys_log(1, "HACK: Too long skill using term. Name(%s) PID(%u) delta(%u)",
SPDLOG_DEBUG("HACK: Too long skill using term. Name({}) PID({}) delta({})",
GetName(), GetPlayerID(), (dwCurrentTime - m_dwLastSkillTime));
return false;
}
}
sys_log(1, "Attack call ComputeSkill %d %s", bType, pkVictim?pkVictim->GetName():"");
SPDLOG_DEBUG("Attack call ComputeSkill {} {}", bType, pkVictim?pkVictim->GetName():"");
iRet = ComputeSkill(bType, pkVictim);
}
//if (test_server && IsPC())
// sys_log(0, "%s Attack %s type %u ret %d", GetName(), pkVictim->GetName(), bType, iRet);
if (iRet == BATTLE_DAMAGE || iRet == BATTLE_DEAD)
{
OnMove(true);
@@ -278,7 +274,7 @@ bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
void CHARACTER::DeathPenalty(BYTE bTown)
{
sys_log(1, "DEATH_PERNALY_CHECK(%s) town(%d)", GetName(), bTown);
SPDLOG_DEBUG("DEATH_PERNALY_CHECK({}) town({})", GetName(), bTown);
Cube_close(this);
@@ -289,14 +285,14 @@ void CHARACTER::DeathPenalty(BYTE bTown)
if (GetLevel() < 10)
{
sys_log(0, "NO_DEATH_PENALTY_LESS_LV10(%s)", GetName());
SPDLOG_DEBUG("NO_DEATH_PENALTY_LESS_LV10({})", GetName());
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>."));
return;
}
if (Random::get(0, 2))
{
sys_log(0, "NO_DEATH_PENALTY_LUCK(%s)", GetName());
SPDLOG_DEBUG("NO_DEATH_PENALTY_LUCK({})", GetName());
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>."));
return;
}
@@ -310,7 +306,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
{
if (FindAffect(AFFECT_NO_DEATH_PENALTY))
{
sys_log(0, "NO_DEATH_PENALTY_AFFECT(%s)", GetName());
SPDLOG_DEBUG("NO_DEATH_PENALTY_AFFECT({})", GetName());
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>."));
RemoveAffect(AFFECT_NO_DEATH_PENALTY);
return;
@@ -320,7 +316,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
{
if (FindAffect(AFFECT_NO_DEATH_PENALTY))
{
sys_log(0, "NO_DEATH_PENALTY_AFFECT(%s)", GetName());
SPDLOG_DEBUG("NO_DEATH_PENALTY_AFFECT({})", GetName());
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>."));
RemoveAffect(AFFECT_NO_DEATH_PENALTY);
return;
@@ -361,7 +357,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
if (IsEquipUniqueItem(UNIQUE_ITEM_TEARDROP_OF_GODNESS))
iLoss /= 2;
sys_log(0, "DEATH_PENALTY(%s) EXP_LOSS: %d percent %d%%", GetName(), iLoss, aiExpLossPercents[std::min(gPlayerMaxLevel, GetLevel())]);
SPDLOG_DEBUG("DEATH_PENALTY({}) EXP_LOSS: {} percent {}%", GetName(), iLoss, aiExpLossPercents[std::min(gPlayerMaxLevel, GetLevel())]);
PointChange(POINT_EXP, -iLoss, true);
}
@@ -381,7 +377,7 @@ EVENTFUNC(StunEvent)
if ( info == NULL )
{
sys_err( "StunEvent> <Factor> Null pointer" );
SPDLOG_ERROR("StunEvent> <Factor> Null pointer" );
return 0;
}
@@ -408,7 +404,7 @@ void CHARACTER::Stun()
m_pkParty->SendMessage(this, PM_ATTACKED_BY, 0, 0);
}
sys_log(1, "%s: Stun %p", GetName(), this);
SPDLOG_DEBUG("{}: Stun {}", GetName(), (void*) this);
PointChange(POINT_HP_RECOVERY, -GetPoint(POINT_HP_RECOVERY));
PointChange(POINT_SP_RECOVERY, -GetPoint(POINT_SP_RECOVERY));
@@ -452,7 +448,7 @@ EVENTFUNC(dead_event)
if ( info == NULL )
{
sys_err( "dead_event> <Factor> Null pointer" );
SPDLOG_ERROR("dead_event> <Factor> Null pointer" );
return 0;
}
@@ -469,7 +465,7 @@ EVENTFUNC(dead_event)
if (NULL == ch)
{
sys_err("DEAD_EVENT: cannot find char pointer with %s id(%d)", info->isPC ? "PC" : "MOB", info->dwID );
SPDLOG_ERROR("DEAD_EVENT: cannot find char pointer with {} id({})", info->isPC ? "PC" : "MOB", info->dwID );
return 0;
}
@@ -487,7 +483,7 @@ EVENTFUNC(dead_event)
ch->WarpSet(pos.x, pos.y);
else
{
sys_err("cannot find spawn position (name %s)", ch->GetName());
SPDLOG_ERROR("cannot find spawn position (name {})", ch->GetName());
ch->WarpSet(EMPIRE_START_X(ch->GetEmpire()), EMPIRE_START_Y(ch->GetEmpire()));
}
@@ -619,8 +615,7 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
for (int i = 0; i < iSplitCount; ++i)
{
int iGold = Random::get(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax) / iSplitCount;
if (test_server)
sys_log(0, "iGold %d", iGold);
SPDLOG_TRACE("iGold {}", iGold);
iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100;
iGold *= iGoldMultipler;
@@ -629,11 +624,8 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
continue ;
}
if (test_server)
{
sys_log(0, "Drop Moeny MobGoldAmountRate %d %d", CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker), iGoldMultipler);
sys_log(0, "Drop Money gold %d GoldMin %d GoldMax %d", iGold, GetMobTable().dwGoldMax, GetMobTable().dwGoldMax);
}
SPDLOG_TRACE("Drop Moeny MobGoldAmountRate {} {}", CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker), iGoldMultipler);
SPDLOG_TRACE("Drop Money gold {} GoldMin {} GoldMax {}", iGold, GetMobTable().dwGoldMax, GetMobTable().dwGoldMax);
// NOTE: <20><> <20><>ź<EFBFBD><C5BA> <20><> 3<><33> <20><> ó<><C3B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold)))
@@ -741,7 +733,7 @@ void CHARACTER::Reward(bool bItemDrop)
iGold *= GetGoldMultipler();
int iSplitCount = Random::get(25, 35);
sys_log(0, "WAEGU Dead gold %d split %d", iGold, iSplitCount);
SPDLOG_TRACE("WAEGU Dead gold {} split {}", iGold, iSplitCount);
for (int i = 1; i <= iSplitCount; ++i)
{
@@ -818,8 +810,7 @@ void CHARACTER::Reward(bool bItemDrop)
// <20><> <20><><EFBFBD><EFBFBD>
//
//PROF_UNIT pu2("r2");
if (test_server)
sys_log(0, "Drop money : Attacker %s", pkAttacker->GetName());
SPDLOG_TRACE("Drop money : Attacker {}", pkAttacker->GetName());
RewardGold(pkAttacker);
//pu2.Pop();
@@ -852,7 +843,7 @@ void CHARACTER::Reward(bool bItemDrop)
pos.x += GetX();
pos.y += GetY();
sys_log(0, "DROP_ITEM: %s %d %d from %s", item->GetName(), pos.x, pos.y, GetName());
SPDLOG_DEBUG("DROP_ITEM: {} {} {} from {}", item->GetName(), pos.x, pos.y, GetName());
}
else
{
@@ -894,7 +885,7 @@ void CHARACTER::Reward(bool bItemDrop)
if (!item)
{
sys_err("item null in vector idx %d", iItemIdx + 1);
SPDLOG_ERROR("item null in vector idx {}", iItemIdx + 1);
continue;
}
@@ -908,7 +899,7 @@ void CHARACTER::Reward(bool bItemDrop)
pos.x += GetX();
pos.y += GetY();
sys_log(0, "DROP_ITEM: %s %d %d by %s", item->GetName(), pos.x, pos.y, GetName());
SPDLOG_DEBUG("DROP_ITEM: {} {} {} by {}", item->GetName(), pos.x, pos.y, GetName());
}
}
else
@@ -922,7 +913,7 @@ void CHARACTER::Reward(bool bItemDrop)
if (!item)
{
sys_err("item null in vector idx %d", iItemIdx + 1);
SPDLOG_ERROR("item null in vector idx {}", iItemIdx + 1);
continue;
}
@@ -950,7 +941,7 @@ void CHARACTER::Reward(bool bItemDrop)
pos.x += GetX();
pos.y += GetY();
sys_log(0, "DROP_ITEM: %s %d %d by %s", item->GetName(), pos.x, pos.y, GetName());
SPDLOG_DEBUG("DROP_ITEM: {} {} {} by {}", item->GetName(), pos.x, pos.y, GetName());
}
}
}
@@ -1029,7 +1020,7 @@ void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
bool isDropAllEquipments = false;
TItemDropPenalty & r = table[iAlignIndex];
sys_log(0, "%s align %d inven_pct %d equip_pct %d", GetName(), iAlignIndex, r.iInventoryPct, r.iEquipmentPct);
SPDLOG_DEBUG("{} align {} inven_pct {} equip_pct {}", GetName(), iAlignIndex, r.iInventoryPct, r.iEquipmentPct);
bool bDropInventory = r.iInventoryPct >= Random::get(1, 1000);
bool bDropEquipment = r.iEquipmentPct >= Random::get(1, 100);
@@ -1144,7 +1135,7 @@ void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
item->AddToGround(GetMapIndex(), pos);
item->StartDestroyEvent();
sys_log(0, "DROP_ITEM_PK: %s %d %d from %s", item->GetName(), pos.x, pos.y, GetName());
SPDLOG_DEBUG("DROP_ITEM_PK: {} {} {} from {}", item->GetName(), pos.x, pos.y, GetName());
LogManager::instance().ItemLog(this, item, "DEAD_DROP", (window == INVENTORY) ? "INVENTORY" : ((window == EQUIPMENT) ? "EQUIPMENT" : ""));
pos.x = GetX() + Random::get(-7, 7) * 20;
@@ -1294,14 +1285,14 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
{
if (!isForked)
{
sys_log(1, "DEAD: %s %p WITH PENALTY", GetName(), this);
SPDLOG_DEBUG("DEAD: {} {} WITH PENALTY", GetName(), (void*) this);
SET_BIT(m_pointsInstant.instant_flag, INSTANT_FLAG_DEATH_PENALTY);
LogManager::instance().CharLog(this, pkKiller->GetRaceNum(), "DEAD_BY_NPC", pkKiller->GetName());
}
}
else
{
sys_log(1, "DEAD_BY_PC: %s %p KILLER %s %p", GetName(), this, pkKiller->GetName(), get_pointer(pkKiller));
SPDLOG_DEBUG("DEAD_BY_PC: {} {} KILLER {} {}", GetName(), (void*) this, pkKiller->GetName(), (void*) get_pointer(pkKiller));
REMOVE_BIT(m_pointsInstant.instant_flag, INSTANT_FLAG_DEATH_PENALTY);
if (GetEmpire() != pkKiller->GetEmpire())
@@ -1351,7 +1342,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
pkKiller->UpdateAlignment(-20000);
else
{
sys_log(0, "ALIGNMENT PARTY count %d amount %d", f.m_iCount, f.m_iAmount);
SPDLOG_DEBUG("ALIGNMENT PARTY count {} amount {}", f.m_iCount, f.m_iAmount);
f.m_iStep = 1;
pkKiller->GetParty()->ForEachOnlineMember(f);
@@ -1374,13 +1365,12 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
}
else
{
sys_log(1, "DEAD: %s %p", GetName(), this);
SPDLOG_DEBUG("DEAD: {} {}", GetName(), (void*) this);
REMOVE_BIT(m_pointsInstant.instant_flag, INSTANT_FLAG_DEATH_PENALTY);
}
ClearSync();
//sys_log(1, "stun cancel %s[%d]", GetName(), (DWORD)GetVID());
event_cancel(&m_pkStunEvent); // <20><><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>δ<EFBFBD>.
if (IsPC())
@@ -1469,7 +1459,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
{
if (m_pkDeadEvent)
{
sys_log(1, "DEAD_EVENT_CANCEL: %s %p %p", GetName(), this, get_pointer(m_pkDeadEvent));
SPDLOG_DEBUG("DEAD_EVENT_CANCEL: {} {} {}", GetName(), (void*) this, (void*) get_pointer(m_pkDeadEvent));
event_cancel(&m_pkDeadEvent);
}
@@ -1505,7 +1495,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
}
}
sys_log(1, "DEAD_EVENT_CREATE: %s %p %p", GetName(), this, get_pointer(m_pkDeadEvent));
SPDLOG_DEBUG("DEAD_EVENT_CREATE: {} {} {}", GetName(), (void*) this, (void*) get_pointer(m_pkDeadEvent));
}
if (m_pkExchange != NULL)
@@ -1530,7 +1520,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
}
else
{
sys_err("DragonLair: Dragon killed by nobody");
SPDLOG_ERROR("DragonLair: Dragon killed by nobody");
}
}
}
@@ -1641,7 +1631,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
DWORD dwGold = 1000;
int iSplitCount = Random::get(10, 13);
sys_log(0, "WAEGU DropGoldOnHit %d times", GetMaxSP());
SPDLOG_TRACE("WAEGU DropGoldOnHit {} times", GetMaxSP());
for (int i = 1; i <= iSplitCount; ++i)
{
@@ -2471,14 +2461,12 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp)
}
*/
if (test_server)
{
sys_log(0, "Bonus Exp : Ramadan Candy: %d MallExp: %d PointExp: %d",
to->GetPoint(POINT_RAMADAN_CANDY_BONUS_EXP),
to->GetPoint(POINT_MALL_EXPBONUS),
to->GetPoint(POINT_EXP)
);
}
SPDLOG_TRACE("Bonus Exp : Ramadan Candy: {} MallExp: {} PointExp: {}",
to->GetPoint(POINT_RAMADAN_CANDY_BONUS_EXP),
to->GetPoint(POINT_MALL_EXPBONUS),
to->GetPoint(POINT_EXP)
);
// <20><>ȹ<EFBFBD><C8B9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2005.04.21 <20><><EFBFBD><EFBFBD> 85%
iExp = iExp * CHARACTER_MANAGER::instance().GetMobExpRate(to) / 100;
@@ -2581,7 +2569,7 @@ namespace NPartyExpDistribute
break;
default:
sys_err("Unknown party exp distribution mode %d", m_iMode);
SPDLOG_ERROR("Unknown party exp distribution mode {}", m_iMode);
return;
}
@@ -2705,8 +2693,6 @@ LPCHARACTER CHARACTER::DistributeExp()
di.pAttacker = pAttacker;
di.pParty = NULL;
//sys_log(0, "__ pq_damage %s %d", pAttacker->GetName(), iDam);
//pq_damage.push(di);
damage_info_table.push_back(di);
}
}
@@ -2714,7 +2700,6 @@ LPCHARACTER CHARACTER::DistributeExp()
for (std::map<LPPARTY, TDamageInfo>::iterator it = map_party_damage.begin(); it != map_party_damage.end(); ++it)
{
damage_info_table.push_back(it->second);
//sys_log(0, "__ pq_damage_party [%u] %d", it->second.pParty->GetLeaderPID(), it->second.iDam);
}
SetExp(0);
@@ -2725,16 +2710,13 @@ LPCHARACTER CHARACTER::DistributeExp()
if (m_pkChrStone) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ѱ<EFBFBD><D1B1><EFBFBD>.
{
//sys_log(0, "__ Give half to Stone : %d", iExpToDistribute>>1);
int iExp = iExpToDistribute >> 1;
m_pkChrStone->SetExp(m_pkChrStone->GetExp() + iExp);
iExpToDistribute -= iExp;
}
sys_log(1, "%s total exp: %d, damage_info_table.size() == %d, TotalDam %d",
SPDLOG_DEBUG("{} total exp: {}, damage_info_table.size() == {}, TotalDam {}",
GetName(), iExpToDistribute, damage_info_table.size(), iTotalDam);
//sys_log(1, "%s total exp: %d, pq_damage.size() == %d, TotalDam %d",
//GetName(), iExpToDistribute, pq_damage.size(), iTotalDam);
if (damage_info_table.empty())
return NULL;
@@ -2762,14 +2744,12 @@ LPCHARACTER CHARACTER::DistributeExp()
if (fPercent > 1.0f)
{
sys_err("DistributeExp percent over 1.0 (fPercent %f name %s)", fPercent, di->pAttacker->GetName());
SPDLOG_ERROR("DistributeExp percent over 1.0 (fPercent {} name {})", fPercent, di->pAttacker->GetName());
fPercent = 1.0f;
}
iExp += (int) (iExpToDistribute * fPercent);
//sys_log(0, "%s given exp percent %.1f + 20 dam %d", GetName(), fPercent * 100.0f, di.iDam);
di->Distribute(this, iExp);
// 100% <20><> <20>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
@@ -2791,11 +2771,10 @@ LPCHARACTER CHARACTER::DistributeExp()
if (fPercent > 1.0f)
{
sys_err("DistributeExp percent over 1.0 (fPercent %f name %s)", fPercent, di.pAttacker->GetName());
SPDLOG_ERROR("DistributeExp percent over 1.0 (fPercent {} name {})", fPercent, di.pAttacker->GetName());
fPercent = 1.0f;
}
//sys_log(0, "%s given exp percent %.1f dam %d", GetName(), fPercent * 100.0f, di.iDam);
di.Distribute(this, (int) (iExpToDistribute * fPercent));
}
}
@@ -2840,7 +2819,7 @@ void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount)
{
LPITEM pkNewArrow = FindSpecifyItem(dwVnum);
sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow));
SPDLOG_DEBUG("UseArrow : FindSpecifyItem {} {}", dwVnum, (void*) get_pointer(pkNewArrow));
if (pkNewArrow)
EquipItem(pkNewArrow);
@@ -2926,8 +2905,6 @@ class CFuncShoot
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_BOW)) / 100;
//sys_log(0, "%s arrow %s dam %d", m_me->GetName(), pkVictim->GetName(), iDam);
m_me->OnMove(true);
pkVictim->OnMove();
@@ -2953,8 +2930,6 @@ class CFuncShoot
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_MAGIC)) / 100;
//sys_log(0, "%s arrow %s dam %d", m_me->GetName(), pkVictim->GetName(), iDam);
m_me->OnMove(true);
pkVictim->OnMove();
@@ -3007,7 +2982,7 @@ class CFuncShoot
if (pkVictim->CanBeginFight())
pkVictim->BeginFight(m_me);
sys_log(0, "%s kwankeyok %s", m_me->GetName(), pkVictim->GetName());
SPDLOG_DEBUG("{} kwankeyok {}", m_me->GetName(), pkVictim->GetName());
m_me->ComputeSkill(m_bType, pkVictim);
m_me->UseArrow(pkArrow, iUseArrow);
}
@@ -3025,7 +3000,7 @@ class CFuncShoot
if (pkVictim->CanBeginFight())
pkVictim->BeginFight(m_me);
sys_log(0, "%s gigung %s", m_me->GetName(), pkVictim->GetName());
SPDLOG_DEBUG("{} gigung {}", m_me->GetName(), pkVictim->GetName());
m_me->ComputeSkill(m_bType, pkVictim);
m_me->UseArrow(pkArrow, iUseArrow);
}
@@ -3043,7 +3018,7 @@ class CFuncShoot
if (pkVictim->CanBeginFight())
pkVictim->BeginFight(m_me);
sys_log(0, "%s hwajo %s", m_me->GetName(), pkVictim->GetName());
SPDLOG_DEBUG("{} hwajo {}", m_me->GetName(), pkVictim->GetName());
m_me->ComputeSkill(m_bType, pkVictim);
m_me->UseArrow(pkArrow, iUseArrow);
}
@@ -3062,7 +3037,7 @@ class CFuncShoot
if (pkVictim->CanBeginFight())
pkVictim->BeginFight(m_me);
sys_log(0, "%s horse_wildattack %s", m_me->GetName(), pkVictim->GetName());
SPDLOG_DEBUG("{} horse_wildattack {}", m_me->GetName(), pkVictim->GetName());
m_me->ComputeSkill(m_bType, pkVictim);
m_me->UseArrow(pkArrow, iUseArrow);
}
@@ -3087,7 +3062,7 @@ class CFuncShoot
if (pkVictim->CanBeginFight())
pkVictim->BeginFight(m_me);
sys_log(0, "%s - Skill %d -> %s", m_me->GetName(), m_bType, pkVictim->GetName());
SPDLOG_DEBUG("{} - Skill {} -> {}", m_me->GetName(), m_bType, pkVictim->GetName());
m_me->ComputeSkill(m_bType, pkVictim);
}
break;
@@ -3100,7 +3075,7 @@ class CFuncShoot
if (pkVictim->CanBeginFight())
pkVictim->BeginFight(m_me);
sys_log(0, "%s - Skill %d -> %s", m_me->GetName(), m_bType, pkVictim->GetName());
SPDLOG_DEBUG("{} - Skill {} -> {}", m_me->GetName(), m_bType, pkVictim->GetName());
m_me->ComputeSkill(m_bType, pkVictim);
// TODO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><> <20>ϱ<EFBFBD>
@@ -3128,7 +3103,7 @@ class CFuncShoot
break;*/
default:
sys_err("CFuncShoot: I don't know this type [%d] of range attack.", (int) m_bType);
SPDLOG_ERROR("CFuncShoot: I don't know this type [{}] of range attack.", (int) m_bType);
break;
}
@@ -3138,7 +3113,7 @@ class CFuncShoot
bool CHARACTER::Shoot(BYTE bType)
{
sys_log(1, "Shoot %s type %u flyTargets.size %zu", GetName(), bType, m_vec_dwFlyTargets.size());
SPDLOG_DEBUG("Shoot {} type {} flyTargets.size {}", GetName(), bType, m_vec_dwFlyTargets.size());
if (!CanMove())
{
@@ -3186,7 +3161,7 @@ void CHARACTER::FlyTarget(DWORD dwTargetVID, int x, int y, BYTE bHeader)
pack.y = y;
}
sys_log(1, "FlyTarget %s vid %d x %d y %d", GetName(), pack.dwTargetVID, pack.x, pack.y);
SPDLOG_DEBUG("FlyTarget {} vid {} x {} y {}", GetName(), pack.dwTargetVID, pack.x, pack.y);
PacketAround(&pack, sizeof(pack), this);
}
@@ -3326,7 +3301,7 @@ void CHARACTER::SetKillerMode(bool isOn)
m_iKillerModePulse = thecore_pulse();
UpdatePacket();
sys_log(0, "SetKillerMode Update %s[%d]", GetName(), GetPlayerID());
SPDLOG_DEBUG("SetKillerMode Update {}[{}]", GetName(), GetPlayerID());
}
bool CHARACTER::IsKillerMode() const
@@ -3359,7 +3334,7 @@ void CHARACTER::SetPKMode(BYTE bPKMode)
m_bPKMode = bPKMode;
UpdatePacket();
sys_log(0, "PK_MODE: %s %d", GetName(), m_bPKMode);
SPDLOG_DEBUG("PK_MODE: {} {}", GetName(), m_bPKMode);
}
BYTE CHARACTER::GetPKMode() const
@@ -3562,7 +3537,6 @@ void CHARACTER::UpdateAggrPointEx(LPCHARACTER pAttacker, EDamageType type, int d
if (info.iAggro < 0)
info.iAggro = 0;
//sys_log(0, "UpdateAggrPointEx for %s by %s dam %d total %d", GetName(), pAttacker->GetName(), dam, total);
if (GetParty() && dam > 0 && type != DAMAGE_TYPE_SPECIAL)
{
LPPARTY pParty = GetParty();

View File

@@ -125,7 +125,7 @@ bool CHARACTER::DragonSoul_RefineWindow_Open(LPENTITY pEntity)
if (NULL == d)
{
sys_err ("User(%s)'s DESC is NULL POINT.", GetName());
SPDLOG_ERROR("User({})'s DESC is NULL POINT.", GetName());
return false;
}

Some files were not shown because too many files have changed in this diff Show More