1
0
forked from metin2/server

12 Commits
0.1.0 ... 0.2.0

231 changed files with 3781 additions and 20164 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/

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

@ -3,16 +3,20 @@ 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)
@ -20,16 +24,19 @@ RUN cd build && make -j $(nproc)
FROM ubuntu:latest 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.
@ -102,7 +103,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);
@ -819,7 +819,7 @@ bool CManager::LoadObject(TObject * pTable, bool isBoot) // from DB
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 +827,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 +880,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 +892,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 +911,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 +975,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 +996,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 +1011,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;
}

View File

@ -62,8 +62,7 @@ bool CHARACTER::StartRiding()
MountVnum(dwMountVnum);
if(test_server)
sys_log(0, "Ride Horse : %s ", GetName());
SPDLOG_TRACE("Ride Horse : {} ", GetName());
return true;
}
@ -106,7 +105,7 @@ EVENTFUNC(horse_dead_event)
if ( info == NULL )
{
sys_err( "horse_dead_event> <Factor> Null pointer" );
SPDLOG_ERROR("horse_dead_event> <Factor> Null pointer" );
return 0;
}
@ -151,7 +150,7 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
if (IsRiding())
return;
sys_log(0, "HorseSummon : %s lv:%d bSummon:%d fromFar:%d", GetName(), GetLevel(), bSummon, bFromFar);
SPDLOG_DEBUG("HorseSummon : {} lv:{} bSummon:{} fromFar:{}", GetName(), GetLevel(), bSummon, bFromFar);
int x = GetX();
int y = GetY();
@ -210,7 +209,7 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
if (!m_chHorse->Show(GetMapIndex(), x, y, GetZ()))
{
M2_DESTROY_CHARACTER(m_chHorse);
sys_err("cannot show monster");
SPDLOG_ERROR("cannot show monster");
m_chHorse = NULL;
return;
}

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