elite*gold: 0
Join Date: Jan 2010
Posts: 416
Received Thanks: 95
|
BUG python make.py - change_empire_item.quest
change_empire_item.quest:
Code:
quest change_empire_item begin
state start begin
when 71054.use begin
local count = pc.get_change_empire_count() ;
if count >= 1 then
say("You can not change the Kingdom")
say("")
return
end
say_reward("Change Kingdom")
say("")
say("Escape into another Kingdom.")
say("A Guild Leader can not change the Kingdom...")
say("You first need to close your guild.")
say("Married couples need to get divorced before.")
say("The cost of a 500k be imperial exchange")
say("")
say("Want to really change the kingdom?")
say("")
local s = select("Change Kingdom", "Kingdom does not change")
if s == 1 then
change_empire.move_pc()
end
end
when 71054.use begin
say("You have the kingdom changed successfully.")
say("The rulers of the new kingdom called you welcome!")
if get_time() < pc.getqf("next_use_time") then
say("You can not change the Kingdom.")
say("")
if pc.is_gm() then
say("GM¬°¤F´ú¸Õ¥i¥H³]©w®É¶¡")
say("")
local s = select("*«·s³]©w", "¨ú®ø")
if s == 1 then
say("®É¶¡ªì©l¤Æ¤F")
pc.setqf("next_use_time", 0)
end
end
return
end
if change_empire.move_pc() == true then
pc.setqf("next_use_time", get_time() + 86400 * 7)
end
end
function move_pc()
if pc.is_engaged() then
say("You are married.")
say("You can not change the Kingdom.")
say("")
return false
end
if pc.is_married() then
say("You are married.")
say("You can not change the Kingdom.")
say("")
return false
end
if pc.is_polymorphed() then
say("You are Transformed.")
say("You can not change the Kingdom.")
say("")
return false
end
if pc.has_guild() then
say("You are in a guild.")
say("You can not change the Kingdom.")
say("")
return false
end
if pc.money < 500000 then
say("You do not have enough Gold.")
say("To switch the kingdom may you need 500k Gold.")
say("")
return false
end
say("They go into exile.")
local s = select("Milgaard", "Lithmose", "Dendera", "Cancel")
if 4==s then
return false
end
say("")
say_reward("Want to really change the Kingdom?")
say_reward("For treason there is no excuse!")
say("")
local a = select("Switch", "Do not switch")
if 2== a then
return false
end
local ret = pc.change_empire(s)
local oldempire = pc.get_empire()
if ret == 999 then
say("You have successfully changed the Kingdom.")
say("Please relog.")
say("")
pc.change_gold(-500000)
pc.remove_item(71054) ;
char_log(0, "CHANGE_EMPIRE",string.format("%d -> %d", oldempire, s))
return true
else
if ret == 1 then
say("You are already in this kingdom.")
say("Please choose a different kingdom.")
say("")
say("")
elseif ret == 2 then
say("Change kingdom is not yet possible.")
say("You can switch to the kingdom yet, since you recently have been in a guild.")
say("")
say("")
elseif ret == 3 then
say("Change kingdom is not yet possible.")
say("You can switch to the kingdom yet, since you were married very recently.")
say("")
end
end
return false
end
end
end
quest_functions:
Code:
__fish_real_refine_rod
__get_empire_priv_string
__get_guild_priv_string
__get_guildid_byname
__give_char_priv
__give_empire_priv
__give_guild_priv
__refine_pick
addimage
addmapsignal
affect.add
affect.add_collect
affect.add_collect_point
affect.add_hair
affect.remove
affect.remove_bad
affect.remove_collect
affect.remove_good
affect.remove_hair
arena.add_observer
arena.get_duel_list
arena.is_in_arena
arena.start_duel
bool_to_str
building.get_land_id
building.get_land_info
building.has_land
building.reconstruct
building.set_land_owner
BuildSkillList
char_log
chat
clear_letter
clear_server_timer
clearmapsignal
cleartimer
cmdchat
color
command
complete_quest
complete_quest_state
confirm
d.check_eliminated
d.clear_regen
d.count_monster
d.exit
d.exit_all
d.exit_all_to_start_position
d.get_kill_mob_count
d.get_kill_stone_count
d.get_map_index
d.getf
d.is_unique_dead
d.is_use_potion
d.join
d.jump_all
d.jump_all_local
d.kill_all
d.kill_unique
d.new_jump
d.new_jump_all
d.notice
d.purge
d.purge_unique
d.regen_file
d.revived
d.select
d.set_dest
d.set_exit_all_at_eliminate
d.set_regen_file
d.set_unique
d.set_warp_at_eliminate
d.setf
d.setqf
d.spawn
d.spawn_goto_mob
d.spawn_group
d.spawn_mob
d.spawn_move_group
d.spawn_move_unique
d.spawn_name_mob
d.spawn_stone_door
d.spawn_unique
d.spawn_wooden_door
d.unique_get_hp_perc
d.unique_set_def_grade
d.unique_set_hp
d.unique_set_maxhp
delay
find_npc_by_vnum
find_pc_by_name
find_pc_cond
forked.get_pass_start_pos
forked.get_sungzi_start_pos
forked.cleardeadcount
forked.decdeadcount
forked.getbosskillcount
forked.getdeadcount
forked.getlevellimit
forked.getmobkillcount
forked.getpassmapindex
forked.getpassmapindexbyempire
forked.getpasspath
forked.getpasspathbyempire
forked.getpassstartposx
forked.getpassstartposy
forked.getsungzimapindex
forked.getsungzipath
forked.getsungziposx
forked.getsungziposy
forked.incbosskillcount
forked.inckillcount
forked.incmobkillcount
forked.initforked
forked.initkillcount
forked.initmobkillcount
forked.isforkedmapindex
forked.issungzimapindex
forked.setdeadcount
forked.purge_all_monsters
forked.is_registered_user
forked.register_user
forked.warp_all_in_map
game.drop_item
game.get_event_flag
game.get_guild_name
game.get_safebox_level
game.get_warp_guild_war_list
game.open_mall
game.open_safebox
game.request_make_guild
game.set_event_flag
game.set_safebox_level
get_global_time
get_kill_player_id
get_locale
get_quest_state
get_server_timer_arg
get_start_mapindex
get_start_pos_X
get_start_pos_Y
get_time
give_cash
goldbar.quest
guild.around_ranking_string
guild.change_master_with_limit
guild.get_any_war
guild.get_ladder_point
guild.get_member_count
guild.get_name
guild.get_rank
guild.get_reserve_war_table
guild.get_warp_war_list
guild.high_ranking_string
guild.is_bet
guild.is_war
guild.level
guild.name
guild.war_bet
guild.war_enter
highscore.register
highscore.show
horse.advance
horse.feed
horse.get_grade
horse.get_health
horse.get_health_pct
horse.get_hp
horse.get_level
horse.get_name
horse.get_stamina
horse.get_stamina_pct
horse.is_dead
horse.is_mine
horse.is_riding
horse.revive
horse.ride
horse.set_level
horse.set_name
horse.summon
horse.unride
horse.unsummon
input
is_allow_map
is_test_server
item.get_cell
item.get_count
item.get_id
item.get_level
item.get_name
item.get_refine_vnum
item.get_size
item.get_socket
item.get_sub_type
item.get_type
item.get_value
item.get_vnum
item.has_flag
item.next_refine_vnum
item.remove
item.select
item.select_cell
item.set_socket
item_name
kill_all_in_map
kill_in_my_level
loop_timer
makequestbutton
marriage.divorce_time_check
marriage.end_wedding
marriage.engage_to
marriage.find_married_vid
marriage.get_married_time
marriage.get_wedding_list
marriage.join_wedding
marriage.marry_to
marriage.remove
marriage.set_to_marriage
marriage.warp_to_my_marriage_map
marriage.wedding_dark
marriage.wedding_is_playing_music
marriage.wedding_music
marriage.wedding_snow
math.ceil
math.floor
math.max
math.mod
math.random
member.chat
member.clear_ready
member.set_ready
mgmt.monarch_change_lord
mgmt.monarch_state
mob.spawn
mob.spawn_group
mob_name
mob_vnum
move_pc
next_time_is_now
next_time_set
notice
notice_all
notice_in_map
npc.dec_remain_hairdye_count
npc.dec_remain_skill_book_count
npc.get_empire
npc.get_guild
npc.get_race
npc.get_remain_hairdye_count
npc.get_remain_skill_book_count
npc.getrace
npc.is_near
npc.is_near_vid
npc.is_pc
npc.is_quest
npc.kill
npc.lock
npc.open_shop
npc.purge
npc.unlock
npc_get_job
npc_is_same_empire
npc_is_same_job
number
oh.candidacy
oh.candidacy_list
oh.candidacy_name
oh.candidacycount
oh.election
oh.frog_to_empire_money
oh.info
oh.isguildmaster
oh.ismonarch
oh.monarchbless
oh.monarchdefenseup
oh.monarchpowerup
oh.spawnguard
oh.spawnmob
oh.takemonarchmoney
oh.transfer
oh.warp
oxevent.close
oxevent.end_event
oxevent.end_event_force
oxevent.get_attender
oxevent.get_status
oxevent.give_item
oxevent.open
oxevent.quiz
party.chat
party.clear_ready
party.get_max_level
party.get_near_count
party.getf
party.is_leader
party.is_party
party.run_cinematic
party.setf
party.setqf
party.show_cinematic
party.syschat
pc.aggregate_monster
pc.change_alignment
pc.change_empire
pc.change_gold
pc.change_money
pc.change_name
pc.change_sex
pc.change_sp
pc.changealignment
pc.changegold
pc.changemoney
pc.clear_one_skill
pc.clear_skill
pc.clear_sub_skill
pc.count_item
pc.countitem
pc.delqf
pc.destroy_guild
pc.diamond_refine
pc.enough_inventory
pc.forget_my_attacker
pc.get_alignment
pc.get_armor
pc.get_change_empire_count
pc.get_empire
pc.get_equip_refine_level
pc.get_exp
pc.get_gm_level
pc.get_gold
pc.get_guild
pc.get_horse_level
pc.get_hp
pc.get_job
pc.get_ht
pc.get_iq
pc.get_st
pc.get_dx
pc.get_leadership
pc.get_level
pc.get_local_x
pc.get_local_y
pc.get_map_index
pc.get_max_hp
pc.get_max_sp
pc.get_money
pc.get_name
pc.get_next_exp
pc.get_part
pc.get_playtime
pc.get_premium_remain_sec
pc.get_real_alignment
pc.get_sex
pc.get_skill_group
pc.get_skill_level
pc.get_sp
pc.get_start_location
pc.get_vid
pc.get_war_map
pc.get_weapon
pc.get_x
pc.get_y
pc.getarmor
pc.getcurrentmapindex
pc.getempire
pc.getf
pc.getgold
pc.getguild
pc.gethp
pc.getleadership
pc.getmaxhp
pc.getmaxsp
pc.getmoney
pc.getname
pc.getplaytime
pc.getqf
pc.getsp
pc.getweapon
pc.getx
pc.gety
pc.give_exp
pc.give_exp_perc
pc.give_exp2
pc.give_gold
pc.give_item
pc.give_item_from_special_item_group
pc.give_item2
pc.give_lotto
pc.has_guild
pc.has_master_skill
pc.hasguild
pc.have_map_scroll
pc.have_pos_scroll
pc.in_dungeon
pc.is_clear_skill_group
pc.is_engaged
pc.is_gm
pc.is_guild_master
pc.is_horse_alive
pc.is_married
pc.is_mount
pc.is_polymorphed
pc.is_skill_book_no_delay
pc.isguildmaster
pc.learn_grand_master_skill
pc.mining
pc.mount
pc.ore_refine
pc.pc_attract_ranger
pc.polymorph
pc.refine_equip
pc.remove_from_guild
pc.remove_item
pc.remove_polymorph
pc.remove_skill_book_no_delay
pc.removeitem
pc.reset_point
pc.revive_horse
pc.select
pc.send_block_mode
pc.set_part
pc.set_skill_group
pc.set_skill_level
pc.set_warp_location
pc.set_warp_location_local
pc.setf
pc.setqf
pc.teleport
pc.unmount
pc.warp
pc.warp_exit
pc.warp_local
pc.warp_to_guild_war_observer_position
pc_find_skill_teacher_vid
pc_find_square_guard_vid
pc_get_exp_bonus
pc_get_village_map_index
pc_is_novice
q.done
q.getcurrentquestindex
q.no_send
q.set_clock
q.set_clock_name
q.set_clock_value
q.set_counter
q.set_counter_name
q.set_counter_value
q.set_icon
q.set_quest_state
q.set_state
q.set_title
q.set_title2
q.setstate
q.start
q.yield
raw_script
regen_in_map
restart_quest
say
say_in_map
say_item
say_item_vnum
say_npc_name
say_pc_name
say_reward
say_title
select
select_item
select_table
send_letter
send_letter_ex
server_loop_timer
server_timer
set_quest_state
set_state
setbgimage
setcolor
setleftimage
setmapcenterposition
setskin
setstate
show_horse_menu
skill_group_dialog
string.format
string.byte
string.char
string.len
string.sub
sys_log
syschat
table.foreach
table.foreachi
table.getn
table.insert
table.remove
table_get_random_item
target.clear
target.delete
target.id
target.npc
target.pc
target.pos
target.vid
test_chat
time_hour_to_sec
time_min_to_sec
time_to_str
timer
tonumber
tostring
type
under_han
wait
warp_all_except_my_empire_in_map
warp_all_in_map
warp_all_my_empire_in_map
warp_all_to_village
warp_all_to_village_except_my_empire
warp_to_village
getenergytime
getenergytyp
getenergyvalue
mysql_query
setenergy
setenergytime
string.trim
costume_system_create
costume_system_read
costume_system_update
PetGiveExp
evoca
inizializza
npc.get_level
show_pet_menu
quest_lib.lua:
Code:
CONFIRM_NO = 0
CONFIRM_YES = 1
CONFIRM_OK = 1
CONFIRM_TIMEOUT = 2
MALE = 0
FEMALE = 1
--quest.create = function(f) return coroutine.create(f) end
--quest.process = function(co,args) return coroutine.resume(co, args) end
setstate = q.setstate
newstate = q.setstate
q.set_clock = function(name, value) q.set_clock_name(name) q.set_clock_value(value) end
q.set_counter = function(name, value) q.set_counter_name(name) q.set_counter_value(value) end
c_item_name = function(vnum) return ("[ITEM value;"..vnum.."]") end
c_mob_name = function(vnum) return ("[MOB value;"..vnum.."]") end
-- d.set_folder = function (path) raw_script("[SET_PATH path;"..path.."]") end
-- d.set_folder = function (path) path.show_cinematic("[SET_PATH path;"..path.."]") end
-- party.run_cinematic = function (path) party.show_cinematic("[RUN_CINEMATIC value;"..path.."]") end
newline = "[ENTER]"
function color256(r, g, b) return "[COLOR r;"..(r/255.0).."|g;"..(g/255.0).."|b;"..(b/255.0).."]" end
function color(r,g,b) return "[COLOR r;"..r.."|g;"..g.."|b;"..b.."]" end
function delay(v) return "[DELAY value;"..v.."]" end
function setcolor(r,g,b) raw_script(color(r,g,b)) end
function setdelay(v) raw_script(delay(v)) end
function resetcolor(r,g,b) raw_script("[/COLOR]") end
function resetdelay(v) raw_script("[/DELAY]") end
-- minimap¿¡ µ¿±×¶ó¹Ì Ç¥½Ã
function addmapsignal(x,y) raw_script("[ADDMAPSIGNAL x;"..x.."|y;"..y.."]") end
-- minimap µ¿±×¶ó¹Ìµé ¸ðµÎ Ŭ¸®¾î
function clearmapsignal() raw_script("[CLEARMAPSIGNAL]") end
-- Ŭ¶óÀÌ¾ðÆ®¿¡¼* º¸¿©ÁÙ ´ëÈ*â ¹è°æ ±×¸²À» Á¤ÇÑ´Ù.
function setbgimage(src) raw_script("[BGIMAGE src;") raw_script(src) raw_script("]") end
-- ´ëÈ*â¿¡ À̹ÌÁö¸¦ º¸¿©ÁØ´Ù.
function addimage(x,y,src) raw_script("[IMAGE x;"..x.."|y;"..y) raw_script("|src;") raw_script(src) raw_script("]") end
function makequestbutton(name)
raw_script("[QUESTBUTTON idx;")
raw_script(""..q.getcurrentquestindex())
raw_script("|name;")
raw_script(name) raw_script("]")
end
function make_quest_button_ex(name, icon_type, icon_name)
test_chat(icon_type)
test_chat(icon_name)
raw_script("[QUESTBUTTON idx;")
raw_script(""..q.getcurrentquestindex())
raw_script("|name;")
raw_script(name)
raw_script("|icon_type;")
raw_script(icon_type)
raw_script("|icon_name;")
raw_script(icon_name)
raw_script("]")
end
function make_quest_button(name) makequestbutton(name) end
function send_letter_ex(name, icon_type, icon_name) make_quest_button_ex(name, icon_type, icon_name) setskin(NOWINDOW) q.set_title(name) q.start() end
function send_letter(name) makequestbutton(name) setskin(NOWINDOW) q.set_title(name) q.start() end
function clear_letter() q.done() end
function say_title(name) say(color256(255, 230, 186)..name..color256(196, 196, 196)) end
function say_reward(name) say(color256(255, 200, 200)..name..color256(196, 196, 196)) end
function say_pc_name() say(pc.get_name()..":") end
function say_size(width, height) say("[WINDOW_SIZE width;"..width.."|height;"..height.."]") end
function setmapcenterposition(x,y)
raw_script("[SETCMAPPOS x;")
raw_script(x.."|y;")
raw_script(y.."]")
end
function say_item(name, vnum, desc)
say("[INSERT_IMAGE image_type;item|idx;"..vnum.."|title;"..name.."|desc;"..desc.."]")
end
function say_item_vnum(vnum)
say_item(item_name(vnum), vnum, "")
end
function pc_is_novice()
if pc.get_skill_group()==0 then
return true
else
return false
end
end
function pc_get_exp_bonus(exp, text)
say_reward(text)
pc.give_exp2(exp)
set_quest_state("levelup", "run")
end
function pc_get_village_map_index(index)
return village_map[pc.get_empire()][index]
end
village_map = {
{1, 3},
{21, 23},
{41, 43},
}
function npc_is_same_empire()
if pc.get_empire()==npc.empire then
return true
else
return false
end
end
function npc_get_skill_teacher_race(pc_empire, pc_job, sub_job)
if 1==sub_job then
if 0==pc_job then
return WARRIOR1_NPC_LIST[pc_empire]
elseif 1==pc_job then
return ASSASSIN1_NPC_LIST[pc_empire]
elseif 2==pc_job then
return SURA1_NPC_LIST[pc_empire]
elseif 3==pc_job then
return SHAMAN1_NPC_LIST[pc_empire]
end
elseif 2==sub_job then
if 0==pc_job then
return WARRIOR2_NPC_LIST[pc_empire]
elseif 1==pc_job then
return ASSASSIN2_NPC_LIST[pc_empire]
elseif 2==pc_job then
return SURA2_NPC_LIST[pc_empire]
elseif 3==pc_job then
return SHAMAN2_NPC_LIST[pc_empire]
end
end
return 0
end
function pc_find_square_guard_vid()
if pc.get_empire()==1 then
return find_npc_by_vnum(11000)
elseif pc.get_empire()==2 then
return find_npc_by_vnum(11002)
elseif pc.get_empire()==3 then
return find_npc_by_vnum(11004)
end
return 0
end
function pc_find_skill_teacher_vid(sub_job)
local vnum=npc_get_skill_teacher_race(pc.get_empire(), pc.get_job(), sub_job)
return find_npc_by_vnum(vnum)
end
function pc_find_square_guard_vid()
local pc_empire=pc.get_empire()
if pc_empire==1 then
return find_npc_by_vnum(11000)
elseif pc_empire==2 then
return find_npc_by_vnum(11002)
elseif pc_empire==3 then
return find_npc_by_vnum(11004)
end
end
function npc_is_same_job()
local pc_job=pc.get_job()
local npc_vnum=npc.get_race()
-- test_chat("pc.job:"..pc.get_job())
-- test_chat("npc_race:"..npc.get_race())
-- test_chat("pc.skill_group:"..pc.get_skill_group())
if pc_job==0 then
if table_is_in(WARRIOR1_NPC_LIST, npc_vnum) then return true end
if table_is_in(WARRIOR2_NPC_LIST, npc_vnum) then return true end
elseif pc_job==1 then
if table_is_in(ASSASSIN1_NPC_LIST, npc_vnum) then return true end
if table_is_in(ASSASSIN2_NPC_LIST, npc_vnum) then return true end
elseif pc_job==2 then
if table_is_in(SURA1_NPC_LIST, npc_vnum) then return true end
if table_is_in(SURA2_NPC_LIST, npc_vnum) then return true end
elseif pc_job==3 then
if table_is_in(SHAMAN1_NPC_LIST, npc_vnum) then return true end
if table_is_in(SHAMAN2_NPC_LIST, npc_vnum) then return true end
end
return false
end
function npc_get_job()
local npc_vnum=npc.get_race()
if table_is_in(WARRIOR1_NPC_LIST, npc_vnum) then return COND_WARRIOR_1 end
if table_is_in(WARRIOR2_NPC_LIST, npc_vnum) then return COND_WARRIOR_2 end
if table_is_in(ASSASSIN1_NPC_LIST, npc_vnum) then return COND_ASSASSIN_1 end
if table_is_in(ASSASSIN2_NPC_LIST, npc_vnum) then return COND_ASSASSIN_2 end
if table_is_in(SURA1_NPC_LIST, npc_vnum) then return COND_SURA_1 end
if table_is_in(SURA2_NPC_LIST, npc_vnum) then return COND_SURA_2 end
if table_is_in(SHAMAN1_NPC_LIST, npc_vnum) then return COND_SHAMAN_1 end
if table_is_in(SHAMAN2_NPC_LIST, npc_vnum) then return COND_SHAMAN_2 end
return 0
end
function time_min_to_sec(value)
return 60*value
end
function time_hour_to_sec(value)
return 3600*value
end
function next_time_set(value, test_value)
local nextTime=get_time()+value
if is_test_server() then
nextTime=get_time()+test_value
end
pc.setqf("__NEXT_TIME__", nextTime)
end
function next_time_is_now(value)
if get_time()>=pc.getqf("__NEXT_TIME__") then
return true
else
return false
end
end
function table_get_random_item(self)
return self[number(1, table.getn(self))]
end
function table_is_in(self, test)
for i = 1, table.getn(self) do
if self[i]==test then
return true
end
end
return false
end
function giveup_quest_menu(title)
local s=select("ÁøÇàÇÑ´Ù", "Æ÷±âÇÑ´Ù")
if 2==s then
say(title.." Äù½ºÆ®¸¦ Á¤¸»·Î")
say("Æ÷±âÇϽðڽÀ´Ï±î?")
local s=select("³×, ±×·¸½À´Ï´Ù", "¾Æ´Õ´Ï´Ù")
if 1==s then
say(title.."Äù½ºÆ®¸¦ Æ÷±âÇß½À´Ï´Ù")
restart_quest()
end
end
end
function restart_quest()
set_state("start")
q.done()
end
function complete_quest()
set_state("__COMPLETE__")
q.done()
end
function giveup_quest()
set_state("__GIVEUP__")
q.done()
end
function complete_quest_state(state_name)
set_state(state_name)
q.done()
end
function test_chat(log)
if is_test_server() then
chat(log)
end
end
function bool_to_str(is)
if is then
return "true"
else
return "false"
end
end
WARRIOR1_NPC_LIST = {20300, 20320, 20340, }
WARRIOR2_NPC_LIST = {20301, 20321, 20341, }
ASSASSIN1_NPC_LIST = {20302, 20322, 20342, }
ASSASSIN2_NPC_LIST = {20303, 20323, 20343, }
SURA1_NPC_LIST = {20304, 20324, 20344, }
SURA2_NPC_LIST = {20305, 20325, 20345, }
SHAMAN1_NPC_LIST = {20306, 20326, 20346, }
SHAMAN2_NPC_LIST = {20307, 20327, 20347, }
function skill_group_dialog(e, j, g) -- e = Á¦±¹, j = Á÷¾÷, g = ±×·ì
e = 1 -- XXX ¸Þ½ÃÁö°¡ ³ª¶óº°·Î ÀÖ´Ù°¡ Çϳª·Î ÅëÇյǾúÀ½
-- ´Ù¸¥ Á÷¾÷À̰ųª ´Ù¸¥ Á¦±¹ÀÏ °æ¿ì
if pc.job != j then
say(locale.skill_group.dialog[e][pc.job][3])
elseif pc.get_skill_group() == 0 then
if pc.level < 5 then
say(locale.skill_group.dialog[e][j][g][1])
return
end
say(locale.skill_group.dialog[e][j][g][2])
local answer = select(locale.yes, locale.no)
if answer == 1 then
--say(locale.skill_group.dialog[e][j][g][2])
pc.set_skill_group(g)
else
--say(locale.skill_group.dialog[e][j][g][3])
end
--elseif pc.get_skill_group() == g then
--say(locale.skill_group.dialog[e][j][g][4])
--else
--say(locale.skill_group.dialog[e][j][g][5])
end
end
function show_horse_menu()
if horse.is_mine() then
say(locale.horse_menu.menu)
local s = 0
if horse.is_dead() then
s = select(locale.horse_menu.revive, locale.horse_menu.ride, locale.horse_menu.unsummon, locale.horse_menu.close)
else
s = select(locale.horse_menu.feed, locale.horse_menu.ride, locale.horse_menu.unsummon, locale.horse_menu.close)
end
if s==1 then
if horse.is_dead() then
horse.revive()
else
local food = horse.get_grade() + 50054 - 1
if pc.countitem(food) > 0 then
pc.removeitem(food, 1)
horse.feed()
else
say(locale.need_item_prefix..item_name(food)..locale.need_item_postfix);
end
end
elseif s==2 then
horse.ride()
elseif s==3 then
horse.unsummon()
elseif s==4 then
-- do nothing
end
end
end
npc_index_table = {
['race'] = npc.getrace,
['empire'] = npc.get_empire,
}
pc_index_table = {
['weapon'] = pc.getweapon,
['level'] = pc.get_level,
['hp'] = pc.gethp,
['maxhp'] = pc.getmaxhp,
['sp'] = pc.getsp,
['maxsp'] = pc.getmaxsp,
['exp'] = pc.get_exp,
['nextexp'] = pc.get_next_exp,
['job'] = pc.get_job,
['money'] = pc.getmoney,
['gold'] = pc.getmoney,
['name'] = pc.getname,
['playtime'] = pc.getplaytime,
['leadership'] = pc.getleadership,
['empire'] = pc.getempire,
['skillgroup'] = pc.get_skill_group,
['x'] = pc.getx,
['y'] = pc.gety,
['local_x'] = pc.get_local_x,
['local_y'] = pc.get_local_y,
}
item_index_table = {
['vnum'] = item.get_vnum,
['name'] = item.get_name,
['size'] = item.get_size,
['count'] = item.get_count,
['type'] = item.get_type,
['sub_type'] = item.get_sub_type,
['refine_vnum'] = item.get_refine_vnum,
['level'] = item.get_level,
}
guild_war_bet_price_table =
{
10000,
30000,
50000,
100000
}
function npc_index(t,i)
local npit = npc_index_table
if npit[i] then
return npit[i]()
else
return rawget(t,i)
end
end
function pc_index(t,i)
local pit = pc_index_table
if pit[i] then
return pit[i]()
else
return rawget(t,i)
end
end
function item_index(t, i)
local iit = item_index_table
if iit[i] then
return iit[i]()
else
return rawget(t, i)
end
end
setmetatable(pc,{__index=pc_index})
setmetatable(npc,{__index=npc_index})
setmetatable(item,{__index=item_index})
--coroutineÀ» ÀÌ¿ëÇÑ ¼±ÅÃÇ× Ã³¸®
function select(...)
return q.yield('select', arg)
end
function select_table(table)
return q.yield('select', table)
end
-- coroutineÀ» ÀÌ¿ëÇÑ ´ÙÀ½ ¿£ÅÍ ±â´Ù¸®±â
function wait()
q.yield('wait')
end
function input()
return q.yield('input')
end
function confirm(vid, msg, timeout)
return q.yield('confirm', vid, msg, timeout)
end
function select_item()
setskin(NOWINDOW)
return q.yield('select_item')
end
---System costume ---
function costume_system_create()
os.execute("mysql -u rancoroso --password='123456' player --execute=\"INSERT INTO costume_system(pid) VALUES ('".. pc.get_player_id() .."')\"")
end
function costume_system_read(type_v)
local mysql_read = (mysql_query("SELECT "..type_v.." as result_value from player.costume_system where pid = ('".. pc.get_player_id() .."')") or {["result_value"] = 0})
return mysql_read.result_value[1]
end
function costume_system_update(type_s, value)
if type_s == "part_main_old" then
if value < 41002 then
os.execute("mysql -u rancoroso --password='123456' player --execute=\"UPDATE costume_system SET "..type_s.." =('"..value.."') where pid = ('".. pc.get_player_id() .."')\"")
end
elseif type_s == "part_hair_old" then
os.execute("mysql -u rancoroso --password='123456' player --execute=\"UPDATE costume_system SET "..type_s.." =('"..value.."') where pid = ('".. pc.get_player_id() .."')\"")
end
end
mysql_query = function(query)
if not pre then
local rt = io.open('CONFIG', 'r'):read('*all')
pre = string.gsub(rt, '.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+', '-h%1 -u%2 -p%3 -D%4')
end
math.randomseed(os.time())
local fi, t, out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
os.execute('mysql '..pre..' --e='..string.format('%q', query)..' > '..fi)
for av in io.open(fi, 'r'):lines() do table.insert(t,split(av, '\t')) end; os.remove(fi);
for i = 2, table.getn(t) do table.foreach(t[i],function(a, b)
out[i-1] = out[i-1] or {}
out[i-1][a] = tonumber(b) or b
out[t[1][a]] = out[t[1][a]] or {}
out[t[1][a]][i-1] = tonumber(b) or b
end) end
return out
end
function split(str, delim, maxNb)
if str == nil then
return str
end
if string.find(str, delim) == nil then
return { str }
end
if maxNb == nil or maxNb < 1 then maxNb = 0 end
local result = {}
local pat = "(.-)" .. delim .. "()"
local nb = 0
local lastPos
for part, pos in string.gfind(str, pat) do
nb = nb + 1
result[nb] = part
lastPos = pos
if nb == maxNb then break end
end
if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos)
end
return result
end
--- System costume fim ----
--- System energy ---
function setenergy(typ,value,timez)
pc.setqf("energy_value", value)
pc.setqf("energy_date", get_time() + timez)
pc.setqf("energy_typ", typ)
end
function setenergytime(timez)
pc.setqf("energy_date", timez)
end
function getenergytyp()
return pc.getqf("energy_typ")
end
function getenergyvalue()
return pc.getqf("energy_value")
end
function getenergytime()
return pc.getqf("energy_date")
end
function split(str, delim, maxNb)
if str == nil then return str end
if string.find(str, delim) == nil then return { str } end
if maxNb == nil or maxNb < 1 then maxNb = 0 end
local result = {}
local pat = "(.-)" .. delim .. "()"
local nb = 0
local lastPos
for part, pos in string.gfind(str, pat) do
nb = nb + 1
result[nb] = part
lastPos = pos
if nb == maxNb then break end
end
if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end
return result
end
mysql_query = function(query)
local rt = io.open('CONFIG','r'):read('*all')
local pre= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
math.randomseed(os.time())
local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi)
for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
out[i-1] = out[i-1] or {}
out[i-1][a] = b
out[t[1][a]] = out[t[1][a]] or {}
out[t[1][a]][i-1] = b
end) end
return out
end
-- Entferne Leerzeichen vor und nach dem String
function string.trim(str)
return (string.gsub(str, "^%s*(.-)%s*$", "%1"))
end
-- String zu Array über Seperator
function string.explode(str, sep)
if sep == "" or str == "" then
error("Fehlende Parameter")
end
local pos, t = 1, {}
for s, e in function() return string.find(str, sep, pos) end do
table.insert(t, string.trim(string.sub(str, pos, s-1)))
pos = e+1
end
table.insert(t, string.trim(string.sub(str, pos)))
return t
end
--- System energy end ---
--- System vouchers ---
function give_cash(mycash)
os.execute("mysql -u rancoroso --password='123456' account --execute='UPDATE account SET cash = cash + ".. mycash .." WHERE id = ".. pc.get_account_id() ..";'")
os.execute("mysql -u rancoroso --password='123456' log --execute='INSERT INTO log_vouchers (account_id, cash, data) VALUES (".. pc.get_account_id() ..", ".. mycash ..", NOW());'")
end
--- System vouchers end ---
--- System pet ---
PetExpTable = {
[1] = 300, [2] = 600, [3] = 900,
[4] = 1200, [5] = 1500, [6] = 1800,
[7] = 2100, [8] = 2400, [9] = 2700,
[10] = 3000, [11] = 3300, [12] = 3600,
[13] = 3900, [14] = 4200, [15] = 4500,
[16] = 4800, [17] = 5100, [18] = 5400,
[19] = 5700, [20] = 6000, [21] = 6300,
[22] = 6600, [23] = 6900, [24] = 7200,
[25] = 7500, [26] = 7800, [27] = 8100,
[28] = 8400, [29] = 8700, [30] = 9000,
[31] = 9300, [32] = 9600, [33] = 9900,
[34] = 10200, [35] = 10500, [36] = 10800,
[37] = 11100, [38] = 11400, [39] = 11700,
[40] = 12000, [41] = 12300, [42] = 12600,
[43] = 12900, [44] = 13200, [45] = 13500,
[46] = 13800, [47] = 14100, [48] = 14400,
[49] = 14700, [50] = 15000, [51] = 15300,
[52] = 15600, [53] = 15900, [54] = 16200,
[55] = 16500, [56] = 16800, [57] = 17100,
[58] = 17400, [59] = 17700, [60] = 18000,
[61] = 18300, [62] = 18600, [63] = 18900,
[64] = 19200, [65] = 19500, [66] = 19800,
[67] = 20100, [68] = 20400, [69] = 20700,
[70] = 21000, [71] = 21300, [72] = 21600,
[73] = 21900, [74] = 22200, [75] = 22500,
[76] = 22800, [77] = 23100, [78] = 23400,
[79] = 23700, [80] = 24000, [81] = 24300,
[82] = 24600, [83] = 24900, [84] = 25200,
[85] = 25500, [86] = 25800, [87] = 26100,
[88] = 26400, [89] = 26700, [90] = 27000,
[91] = 27300, [92] = 27600, [93] = 27900,
[94] = 28200, [95] = 28500, [96] = 28800,
[97] = 29100, [98] = 29400, [99] = 29700,
[100] = 30000, [101] = 30300, [102] = 30600,
[103] = 30900, [104] = 31200, [105] = 31500,
[106] = 31800, [107] = 32100, [108] = 32400,
[109] = 32700, [110] = 33000, [111] = 33300,
[112] = 33600, [113] = 33900, [114] = 34200,
[115] = 34500, [116] = 34800, [117] = 35100,
[118] = 35400, [119] = 35700, [120] = 36000,
[121] = 36300, [122] = 36600, [123] = 36900,
[124] = 37200, [125] = 37500, [126] = 37800,
[127] = 38100, [128] = 38400, [129] = 38700,
[130] = 39000, [131] = 39300, [132] = 39600,
[133] = 39900, [134] = 40200, [135] = 40500,
[136] = 40800, [137] = 41100, [138] = 41400,
[139] = 41700, [140] = 42000, [141] = 42300,
[142] = 42600, [143] = 42900, [144] = 43200,
[145] = 43500, [146] = 43800, [147] = 44100,
[148] = 44400, [149] = 44700, [150] = 45000,
}
PetBonus = {
{ "offensivo", { "Valore Attacco Fisico","Valore Attacco Magico", }, { "Forte Vs War","Forte Vs Ninja","Forte Vs Sura","Forte Vs Shamy","Forte Vs Mostri", }, { "Danni Critici","Danni Trafiggenti", }, { "Stordimento","Avvelenamento","Rallentamento", }, },
{ "difensivo", { "Difesa Attacco Fisico","Difesa Attacco Magico", }, { "Res. Spada","Res. Spadone","Res. Pugnali","Res. Campana","Res. Ventaglio","Res. Freccia","Res. Magia", }, { "Max HP","Max MP", }, { "Rigenerazione HP","Rigenerazione MP", }, },
{ 1, { 53,55, }, { 59,60,61,62,63, }, { 15,16, }, { 13,12,14, }, },
{ 2, { 54,56, }, { 29,30,31,32,33,34,37, }, { 1,2, }, { 10,11, }, },
}
PetArray = {
{53001, "fenice_rossa", "Fenice Rossa", 30068, PetExpTable, { 3,1,3,1, }, },
{53002, "fenice_blu", "Fenice Blu", 30068, PetExpTable, { 3,3,1,1, }, },
{53003, "renna", "Renna", 30068, PetExpTable, { 3,1,1,3, }, },
{53005, "azarel", "Azarel", 30068, PetExpTable, { 2,1,3,2, }, },
{53006, "cane", "Cane", 30068, PetExpTable, { 1,3,1,3, }, },
{53007, "leone", "Leone", 30068, PetExpTable, { 1,1,3,3, }, },
{53008, "cinghiale", "Cinghiale", 30068, PetExpTable, { 1,3,3,1, }, },
{53009, "tigre", "Tigre", 30068, PetExpTable, { 2,3,2,1, }, },
}
PET_NAME = 1
PET_LEVEL = 2
PET_EXP = 3
PET_TYPE = 1
PET_BON1 = 2
PET_BON2 = 3
PET_BON3 = 4
PET_BON4 = 5
PET_SUMMON = 0
PET_UNSUMMON = 1
PET_READ = 0
PET_WRITE = 1
PET_DATA = 0
PET_BONUS = 1
function inizializza(i)
say_title("Pet System:")
say("")
say("Ciao, hai adottato un nuovo cucciolo")
say("per poterlo evocare, come prima cosa")
say("dovrai dargli un nome.")
local scelta = select("Voglio dargli un nome","Non ora")
if scelta == 2 then
return -1
end
say_title("Pet System:")
say("")
say("Assegna un nome al tuo cucciolo")
say("")
say_reward("Nome:")
local PetName = tostring(input())
if PetName == "" then
say_title("Pet System:")
say("")
say_reward("Non puoi lasciare l'input vuoto!")
return -1
end
local DATA_PATH = "locale/germany/quest/pet/"
local LOCAL_PATH = pc.get_name().."/"
local PET_FILE = PetArray[i][2]..".txt"
local PET_BONUS_FILE = PetArray[i][2].."_bonus.txt"
if pc.getqf("local_path") != 1 then
os.execute("cd "..DATA_PATH.." && mkdir "..LOCAL_PATH.." && chmod 777 "..LOCAL_PATH)
pc.setqf("local_path", 1)
end
local file = io.open(DATA_PATH..LOCAL_PATH..PET_FILE , "w")
file:write(PetName.."\n1\n0\n") --nome livello exp
io.close(file)
local bonus = io.open(DATA_PATH..LOCAL_PATH..PET_BONUS_FILE , "w")
bonus:write("0\n0\n0\n0\n0\n")
io.close(bonus)
os.execute("cd "..DATA_PATH..LOCAL_PATH.." && chmod 777 *.txt")
return 0
end
function GetGrade(i)
local PetLevel = tonumber(data_tool(i, PET_LEVEL, PET_DATA, PET_READ))
local x = 0
local y = 0
local Grade = 1
while true do
x = x + 1
y = y + 1
if y == 10 then
Grade = Grade + 1
y = 0
end
if x == PetLevel then
return Grade
end
end
end
function evoca(i, stato)
local bonus = { 3,4,5,6, }
local status = PetArray[i][6]
local PetGrade = tonumber(GetGrade(i))
local PetName = data_tool(i, PET_NAME, PET_DATA, PET_READ)
local PetLevel = tonumber(data_tool(i, PET_LEVEL, PET_DATA, PET_READ))
local horse_level = horse.get_level()
local apply = 0
local level = 21 + i
if stato == PET_SUMMON then
local z = 1
while true do
if bonus[z] == nil then break end
apply = PetGrade*status[z]
affect.add_collect(bonus[z], apply, 60*60*8)
z = z + 1
end
horse.set_level(level)
horse.set_name(PetName)
horse.summon()
chat("Il pet e' stato evocato")
horse.set_level(horse_level)
else
local z = 1
while true do
if bonus[z] == nil then break end
apply = PetGrade*status[z]
affect.remove_collect(bonus[z], apply, 60*60*8)
z = z + 1
end
horse.set_level(level)
horse.unsummon()
chat("Il tuo pet e' andato a riposare")
horse.set_level(horse_level)
end
end
function PetInfo(x)
while true do
say_title("Pet System:")
say("Informazioni abilita':")
say("")
say("Lo stile "..PetBonus[x][1].." si divide in 4")
say("categorie principali.")
say("potrai sviluppare una sola tecnica per categoria")
local y = 0
if x == 1 then
y = select( "Valore Attacco","Attacco Vs. Razza","Aumento del danno","Tecniche Speciali","Indietro")
else
y = select( "Valore Difesa","Difesa Vs. Arma","Aumento dei valori vitali","Tecniche Rigenerative","Indietro")
end
if y == 5 then
break
end
while true do
say_title("Pet System:")
say("Informazioni abilita':")
say("")
say("Con l'apprendimento di questa tecnica potrai")
say("incrementare il valore "..PetBonus[x][1])
say("Tecniche disponibili:")
say("")
local z = 1
while true do
if PetBonus[x][y+1][z] == nil then break end
say_reward(PetBonus[x][y+1][z])
z = z + 1
end
local b = select("Indietro")
if b == 1 then
break
end
end
end
end
function PetSet(i, t)
say_title("Pet System:")
say("Gestione abilita':")
say("")
say("Hai scelto uno stile di combattimento")
say("del tipo "..PetBonus[t][1].." per il tuo pet")
say_reward("confermi?")
local conferma = select("Si","No")
if conferma == 2 then
return
end
say_title("Pet System:")
say("Gestione abilita':")
say("")
say("Una volta scelto lo stile di combattimento")
say("hai la possibilita' di allenare nuove abilita'")
say("scegli con cura le abilita' da sviluppare")
say("")
local k = select("Scelgo ora","Scelgo dopo")
if k == 2 then
return
end
local w = 2
local bonus = {}
local bon = {}
while true do
if PetBonus[t][w] == nil then break end
say_title("Pet System:")
say("Gestione abilita': ")
say("")
say_reward("Puoi allenare solo una delle seguenti abilita'")
say_reward("sceglila con cura...")
say("")
local x = select_table( PetBonus[t][w] )
bonus[w-1] = x
bon[w-1] = PetBonus[t][w][x]
w = w + 1
end
say_title("Pet System:")
say("Gestione abilita':")
say("")
say("Hai scelto:")
say("")
say("Bonus 1: "..bon[1])
say("Bonus 2: "..bon[2])
say("Bonus 3: "..bon[3])
say("Bonus 4: "..bon[4])
say("")
say_reward("Confermi?")
say("")
local c = select("Si","No")
if c == 2 then
return
end
data_tool(i, t.."\n"..bonus[1].."\n"..bonus[2].."\n"..bonus[3].."\n"..bonus[4].."\n", PET_BONUS, PET_WRITE)
end
function PetMenuAbi(i)
local check = tonumber(data_tool(i, PET_TYPE, PET_BONUS, PET_READ))
local status = PetArray[i][6]
local PetGrade = tonumber(GetGrade(i))
local PetType = tonumber(data_tool(i, PET_TYPE, PET_BONUS, PET_READ))
local bon1 = tonumber(data_tool(i, PET_BON1, PET_BONUS, PET_READ))
local bon2 = tonumber(data_tool(i, PET_BON2, PET_BONUS, PET_READ))
local bon3 = tonumber(data_tool(i, PET_BON3, PET_BONUS, PET_READ))
local bon4 = tonumber(data_tool(i, PET_BON4, PET_BONUS, PET_READ))
if check == 0 then
while true do
say_title("Pet System:")
say("Benvenuto nel sistema di gestione abilita'")
say("come prima cosa devi decidere che tipo")
say("di istruzione vuoi dare al tuo pet")
local z = select( "Offensiva","Difensiva","Informazioni","Chiudi")
if z == 1 then
PetSet(i, z)
return
elseif z == 2 then
PetSet(i, z)
return
elseif z == 3 then
while true do
say_title("Pet System:")
say("Informazioni abilita':")
say("")
say("Ogni pet può sviluppare 4 abilita'")
say("a seconda dello stile di combattimento")
say("")
local x = select( "Stile Offensivo","Stile Difensivo","Indietro")
if x == 1 then
PetInfo(x)
elseif x == 2 then
PetInfo(x)
elseif x == 3 then
break
end
end
elseif z == 4 then
break
end
end
else
say_title("Pet System:")
say("Gestione abilita':")
say("")
say_reward("Cosa desideri fare?")
say("")
local y = select("Stato abilita'","Reset Abilita'","Chiudi")
if y == 1 then
local point = {}
local p = 1
while true do
if status[p] == nil then break end
point[p] = status[p]*PetGrade
p = p + 1
end
say_title("Pet System:")
say("Stato abilita':")
say("")
say_reward("Status:")
say("VIT: +"..point[1])
say("INT: +"..point[2])
say("STR: +"..point[3])
say("DEX: +"..point[4])
say_reward("Bonus:")
say(PetBonus[PetType][2][bon1]..": +"..PetGrade)
say(PetBonus[PetType][3][bon2]..": +"..PetGrade)
say(PetBonus[PetType][4][bon3]..": +"..PetGrade)
say(PetBonus[PetType][5][bon4]..": +"..PetGrade)
elseif y == 2 then
say_title("Pet System:")
say("Reset abilita'")
say("che tipo di istruzione vuoi dare al tuo pet?")
say_reward("Ricorda il reset può essere usato ogni 3 giorni")
local j = select("Stile Offensivo","Stile Difensivo","Chiudi")
if j == 1 then
PetSet(i, j)
elseif j == 2 then
PetSet(i, j)
else
return
end
elseif y == 3 then
return
end
end
end
function show_pet_menu(i)
local PetName = data_tool(i, PET_NAME, PET_DATA, PET_READ)
local PetRace = PetArray[i][3]
local PetFood = PetArray[i][4]
local PetGrade = tonumber(GetGrade(i))
local PetLevel = tonumber(data_tool(i, PET_LEVEL, PET_DATA, PET_READ))
local PetExp = tonumber(data_tool(i, PET_EXP, PET_DATA, PET_READ))
local PetNextExp = PetArray[i][5][PetLevel]
while true do
say_title("Pet System:")
say("Benvenuto nel sistema di gestione del pet")
say("")
say_reward("cosa desideri fare?")
local s = select("Stato Pet", "Ciba Pet", "Abilita' Pet", "Altro", "Chiudi" )
if s == 4 then
say_title("Pet System:")
say("Benvenuto nel sistema di gestione del pet")
say("")
say_reward("cosa desideri fare?")
local z = select( "Cambia Nome", "Manda via", "Indietro", "Chiudi" )
if z == 1 then
say_title("Pet System:")
say("")
say("Assegna un nuovo nome al tuo cucciolo")
say("")
say_reward("Nome:")
local PetNewName = tostring(input())
if PetNewName == "" then
say_title("Pet System:")
say("")
say_reward("Non puoi lasciare l'input vuoto!")
return
end
if PetNewName == nome then
say_title("Pet System:")
say("")
say_reward("Non puoi usare lo stesso nome!")
return
end
data_tool(i, PetNewName.."\n"..PetLevel.."\n"..PetExp.."\n", PET_DATA, PET_WRITE)
evoca(i, PET_UNSUMMON)
evoca(i, PET_SUMMON)
return
elseif z == 2 then
evoca(i, PET_UNSUMMON)
return
elseif z == 3 then
elseif z == 4 then
break
end
elseif s == 1 then
say_title("Pet System:")
say("")
say("Nome: "..PetName)
say("Razza: "..PetRace)
say("Livello: "..PetLevel)
say("Grado Istruzione: "..PetGrade)
say("Exp: "..PetExp.." / "..PetNextExp)
say("Salute: "..horse.get_health_pct().."%")
say("Resistenza: "..horse.get_stamina_pct().."%")
say("Cibo: "..item_name(PetFood))
return
elseif s == 2 then
if pc.countitem(PetFood) > 0 then
say_title("Pet System:")
say("")
say("Il tuo cucciolo e' felice")
say("per l'ottimo spuntino che ha fatto")
pc.removeitem(PetFood, 1)
horse.feed()
return
else
say_title("Pet System:")
say("")
say("Per cibare il tuo cucciolo")
say("hai bisogno di: "..item_name(PetFood))
say("")
return
end
elseif s == 3 then
if PetLevel >= 10 then
PetMenuAbi(i)
return
else
say_title("Pet System:")
say("")
say_reward("Il Pet deve essere almeno Lv 10")
return
end
elseif s == 5 then
break
end
end
end
function PetGiveExp(i, Point)
local PetName = data_tool(i, PET_NAME, PET_DATA, PET_READ)
local PetLevel = tonumber(data_tool(i, PET_LEVEL, PET_DATA, PET_READ))
local PetExp = tonumber(data_tool(i, PET_EXP, PET_DATA, PET_READ))
local PetNextExp = PetArray[i][5][PetLevel]
if PetLevel == 150 then
return
end
local PetNewExp = PetExp + Point
while true do
if PetNewExp < PetNextExp then break end
PetNewExp = PetNewExp - PetNextExp
PetLevel = PetLevel + 1
end
data_tool(i, PetName.."\n"..PetLevel.."\n"..PetNewExp.."\n", PET_DATA, PET_WRITE)
end
function data_tool(i, linea, tipo, modo)
local DATA_PATH = "locale/germany/quest/pet/"
local LOCAL_PATH = pc.get_name().."/"
local x = 1
local file = ""
local PET_FILE = ""
local PET_BACKUP = ""
if tipo == PET_DATA then
PET_FILE = PetArray[i][2]..".txt"
PET_BACKUP = PetArray[i][2]..".bak"
elseif tipo == PET_BONUS then
PET_FILE = PetArray[i][2].."_bonus.txt"
PET_BACKUP = PetArray[i][2].."_bonus.bak"
end
if modo == PET_READ then
file = io.open(DATA_PATH..LOCAL_PATH..PET_FILE, "r")
while true do
local line = file:read("*l")
if line == nil then
break
end
text = string.gsub(line, "\n", "")
if x == linea then
io.close(file)
return text
end
x = x + 1
end
io.close(file)
elseif modo == PET_WRITE then
os.execute("cd "..DATA_PATH..LOCAL_PATH.." && mv "..PET_FILE.." "..PET_BACKUP)
file = io.open(DATA_PATH..LOCAL_PATH..PET_FILE, "w")
file:write(linea)
io.close(file)
os.execute("cd "..DATA_PATH..LOCAL_PATH.." && chmod 777 "..PET_FILE)
end
end
--- System pet end ---
--Àü¿ª º¯¼ö Á¢±Ù°ú °ü·ÃµÈ °è¿*
NOWINDOW = 0
NORMAL = 1
CINEMATIC = 2
SCROLL = 3
WARRIOR = 0
ASSASSIN = 1
SURA = 2
SHAMAN = 3
COND_WARRIOR_0 = 8
COND_WARRIOR_1 = 16
COND_WARRIOR_2 = 32
COND_WARRIOR = 56
COND_ASSASSIN_0 = 64
COND_ASSASSIN_1 = 128
COND_ASSASSIN_2 = 256
COND_ASSASSIN = 448
COND_SURA_0 = 512
COND_SURA_1 = 1024
COND_SURA_2 = 2048
COND_SURA = 3584
COND_SHAMAN_0 = 4096
COND_SHAMAN_1 = 8192
COND_SHAMAN_2 = 16384
COND_SHAMAN = 28672
PART_MAIN = 0
PART_HAIR = 3
GUILD_CREATE_ITEM_VNUM = 70101
QUEST_SCROLL_TYPE_KILL_MOB = 1
QUEST_SCROLL_TYPE_KILL_ANOTHER_EMPIRE = 2
apply = {
["MAX_HP"] = 1,
["MAX_SP"] = 2,
["CON"] = 3,
["INT"] = 4,
["STR"] = 5,
["DEX"] = 6,
["ATT_SPEED"] = 7,
["MOV_SPEED"] = 8,
["CAST_SPEED"] = 9,
["HP_REGEN"] = 10,
["SP_REGEN"] = 11,
["POISON_PCT"] = 12,
["STUN_PCT"] = 13,
["SLOW_PCT"] = 14,
["CRITICAL_PCT"] = 15,
["PENETRATE_PCT"] = 16,
["ATTBONUS_HUMAN"] = 17,
["ATTBONUS_ANIMAL"] = 18,
["ATTBONUS_ORC"] = 19,
["ATTBONUS_MILGYO"] = 20,
["ATTBONUS_UNDEAD"] = 21,
["ATTBONUS_DEVIL"] = 22,
["STEAL_HP"] = 23,
["STEAL_SP"] = 24,
["MANA_BURN_PCT"] = 25,
["DAMAGE_SP_RECOVER"] = 26,
["BLOCK"] = 27,
["DODGE"] = 28,
["RESIST_SWORD"] = 29,
["RESIST_TWOHAND"] = 30,
["RESIST_DAGGER"] = 31,
["RESIST_BELL"] = 32,
["RESIST_FAN"] = 33,
["RESIST_BOW"] = 34,
["RESIST_FIRE"] = 35,
["RESIST_ELEC"] = 36,
["RESIST_MAGIC"] = 37,
["RESIST_WIND"] = 38,
["REFLECT_MELEE"] = 39,
["REFLECT_CURSE"] = 40,
["POISON_REDUCE"] = 41,
["KILL_SP_RECOVER"] = 42,
["EXP_DOUBLE_BONUS"] = 43,
["GOLD_DOUBLE_BONUS"] = 44,
["ITEM_DROP_BONUS"] = 45,
["POTION_BONUS"] = 46,
["KILL_HP_RECOVER"] = 47,
["IMMUNE_STUN"] = 48,
["IMMUNE_SLOW"] = 49,
["IMMUNE_FALL"] = 50,
["SKILL"] = 51,
["BOW_DISTANCE"] = 52,
["ATT_GRADE_BONUS"] = 53,
["DEF_GRADE_BONUS"] = 54,
["MAGIC_ATT_GRADE"] = 55,
["MAGIC_DEF_GRADE"] = 56,
["CURSE_PCT"] = 57,
["MAX_STAMINA"] = 58,
["ATTBONUS_WARRIOR"] = 59,
["ATTBONUS_ASSASSIN"] = 60,
["ATTBONUS_SURA"] = 61,
["ATTBONUS_SHAMAN"] = 62,
["ATTBONUS_MONSTER"] = 63,
}
-- ·¹º§¾÷ Äù½ºÆ® -_-
special = {}
special.fortune_telling =
{
-- { prob Å©¸® item money remove money
{ 1, 0, 20, 20, 0 }, -- 10
{ 499, 0, 10, 10, 0 }, -- 5
{ 2500, 0, 5, 5, 0 }, -- 1
{ 5000, 0, 0, 0, 0 },
{ 1500, 0, -5, -5, 20000 },
{ 499, 0, -10, -10, 20000 },
{ 1, 0, -20, -20, 20000 },
}
special.questscroll_reward =
{
{1, 1500, 3000, 30027, 0, 0 },
{2, 1500, 3000, 30028, 0, 0 },
{3, 1000, 2000, 30034, 30018, 0 },
{4, 1000, 2000, 30034, 30011, 0 },
{5, 1000, 2000, 30011, 30034, 0 },
{6, 1000, 2000, 27400, 0, 0 },
{7, 2000, 4000, 30023, 30003, 0 },
{8, 2000, 4000, 30005, 30033, 0 },
{9, 2000, 8000, 30033, 30005, 0 },
{10, 4000, 8000, 30021, 30033, 30045},
{11, 4000, 8000, 30045, 30022, 30046},
{12, 5000, 12000, 30047, 30045, 30055},
{13, 5000, 12000, 30051, 30017, 30058},
{14, 5000, 12000, 30051, 30007, 30041},
{15, 5000, 15000, 30091, 30017, 30018},
{16, 3500, 6500, 30021, 30033, 0 },
{17, 4000, 9000, 30051, 30033, 0 },
{18, 4500, 10000, 30056, 30057, 30058},
{19, 4500, 10000, 30059, 30058, 30041},
{20, 5000, 15000, 0, 0, 0 },
}
special.active_skill_list = {
{
{ 1, 2, 3, 4, 5, 6},
{ 16, 17, 18, 19, 20, 21},
},
{
{31, 32, 33, 34, 35, 36},
{46, 47, 48, 49, 50, 51},
},
{
{61, 62, 63, 64, 65, 66},
{76, 77, 78, 79, 80, 81},
},
{
{91, 92, 93, 94, 95, 96},
{106, 107, 108, 109, 110, 111},
},
}
special.skill_reset_cost = {
2000,
2000,
2000,
2000,
2000,
2000,
4000,
6000,
8000,
10000,
14000,
18000,
22000,
28000,
34000,
41000,
50000,
59000,
70000,
90000,
101000,
109000,
114000,
120000,
131000,
141000,
157000,
176000,
188000,
200000,
225000,
270000,
314000,
348000,
393000,
427000,
470000,
504000,
554000,
600000,
758000,
936000,
1103000,
1276000,
1407000,
1568000,
1704000,
1860000,
2080000,
2300000,
2700000,
3100000,
3500000,
3900000,
4300000,
4800000,
5300000,
5800000,
6400000,
7000000,
8000000,
9000000,
10000000,
11000000,
12000000,
13000000,
14000000,
15000000,
16000000,
17000000,
}
special.levelup_img =
{
[101] = "dog.tga",
[102] = "wolf.tga",
[103] = "wolf.tga",
[104] = "wolf.tga",
[105] = "wolf.tga",
[105] = "wolf.tga",
[106] = "wolf.tga",
[107] = "wolf.tga",
[108] = "wild_boar.tga",
[109] = "wild_boar.tga",
[110] = "bear.tga",
[111] = "bear.tga",
[112] = "bear.tga",
[113] = "bear.tga",
[114] = "tiger.tga",
[115] = "tiger.tga",
[301] = "bak_inf.tga",
[302] = "bak_gung.tga",
[303] = "bak_gen1.tga",
[304] = "bak_gen2.tga",
[401] = "huk_inf.tga",
[402] = "huk_dol.tga",
[403] = "huk_gen1.tga",
[404] = "huk_gen2.tga",
[501] = "o_inf.tga",
[502] = "o_jol.tga",
[503] = "o_gung.tga",
[504] = "o_jang.tga",
[601] = "ung_inf.tga",
[602] = "ung_chuk.tga",
[603] = "ung_tu.tga",
[701] = "mil_chu.tga",
[702] = "mil_na.tga",
[703] = "mil_na.tga",
[704] = "mil_na.tga",
[735] = "mil_jip.tga",
[901] = "sigwi.tga",
[903] = "gwoijil.tga",
[2001] = "spider.tga",
[2002] = "spider.tga",
[2003] = "spider.tga",
[2004] = "spider.tga",
[2005] = "spider.tga",
[2102] = "2102.tga",
[2103] = "2103.tga",
}
special.levelup_quest = {
-- monster kill monster kill
-- vnum qty. vnum qty. exp percent
{ 0 , 0 , 0 , 0 , 0 } , -- lev 1
{ 101 , 10 , 102 , 5 , 10 } , -- lev 2
{ 101 , 20 , 102 , 10 , 10 } , -- lev 3
{ 102 , 15 , 103 , 5 , 10 } , -- lev 4
{ 103 , 10 , 104 , 10 , 10 } , -- lev 5
{ 104 , 20 , 108 , 10 , 10 } , -- lev 6
{ 108 , 10 , 105 , 5 , 10 } , -- lev 7
{ 108 , 20 , 105 , 10 , 10 } , -- lev 8
{ 105 , 15 , 109 , 5 , 10 } , -- lev 9
{ 105 , 20 , 109 , 10 , 10 } , -- lev 10
{ 109 , 10 , 110 , 5 , 10 } , -- lev 11
{ 110 , 15 , 106 , 10 , 10 } , -- lev 12
{ 106 , 20 , 111 , 5 , 10 } , -- lev 13
{ 111 , 15 , 107 , 5 , 10 } , -- lev 14
{ 111 , 20 , 107 , 10 , 10 } , -- lev 15
{ 107 , 15 , 114 , 5 , 10 } , -- lev 16
{ 107 , 20 , 114 , 10 , 10 } , -- lev 17
{ 114 , 10 , 112 , 10 , 10 } , -- lev 18
{ 112 , 20 , 113 , 10 , 10 } , -- lev 19
{ 113 , 20 , 302 , 15 , 10 } , -- lev 20
{ 302 , 20 , 115 , 10 , "2-10" } , -- lev 21
{ 115 , 25 , 304 , 10 , "2-10" } , -- lev 22
{ 304 , 20 , 401 , 40 , "2-10" } , -- lev 23
{ 401 , 60 , 402 , 80 , "2-10" } , -- lev 24
{ 501 , 80 , 404 , 20 , "2-10" } , -- lev 25
{ 502 , 80 , 406 , 20 , "2-10" } , -- lev 26
{ 406 , 30 , 504 , 20 , "2-10" } , -- lev 27
{ 631 , 35 , 504 , 30 , "2-10" } , -- lev 28
{ 631 , 40 , 632 , 30 , "2-10" } , -- lev 29
{ 632 , 40 , 2102 , 30 , "2-10" } , -- lev 30
{ 632 , 50 , 2102 , 45 , "2-5" } , -- lev 31
{ 633 , 45 , 2001 , 40 , "2-5" } , -- lev 32
{ 701 , 35 , 2103 , 30 , "2-5" } , -- lev 33
{ 701 , 40 , 2103 , 40 , "2-5" } , -- lev 34
{ 702 , 40 , 2002 , 30 , "2-5" } , -- lev 35
{ 704 , 20 , 2106 , 20 , "2-5" } , -- lev 36
{ 733 , 30 , 2003 , 20 , "2-5" } , -- lev 37
{ 734 , 40 , 2004 , 20 , "2-5" } , -- lev 38
{ 706 , 40 , 2005 , 30 , "2-5" } , -- lev 39
{ 707 , 40 , 2108 , 20 , "2-5" } , -- lev 40
{ 901 , 40 , 5123 , 25 , "2-5" } , -- lev 41
{ 902 , 30 , 5123 , 30 , "2-5" } , -- lev 42
{ 902 , 40 , 2031 , 35 , "2-5" } , -- lev 43
{ 903 , 40 , 2031 , 40 , "2-5" } , -- lev 44
{ 731 , 50 , 2032 , 45 , "2-5" } , -- lev 45
{ 732 , 30 , 5124 , 30 , "2-5" } , -- lev 46
{ 903 , 35 , 5125 , 30 , "2-5" } , -- lev 47
{ 904 , 40 , 5125 , 35 , "2-5" } , -- lev 48
{ 733 , 40 , 2033 , 45 , "2-5" } , -- lev 49
{ 734 , 40 , 5126 , 20 , "2-5" } , -- lev 50
{ 735 , 50 , 5126 , 30 , "1-4" } , -- lev 51
{ 904 , 45 , 2034 , 45 , "1-4" } , -- lev 52
{ 904 , 50 , 2034 , 50 , "1-4" } , -- lev 53
{ 736 , 40 , 1001 , 30 , "1-4" } , -- lev 54
{ 737 , 40 , 1301 , 35 , "1-4" } , -- lev 55
{ 905 , 50 , 1002 , 30 , "1-4" } , -- lev 56
{ 905 , 60 , 1002 , 40 , "1-4" } , -- lev 57
{ 906 , 45 , 1303 , 40 , "1-4" } , -- lev 58
{ 906 , 50 , 1303 , 45 , "1-4" } , -- lev 59
{ 907 , 45 , 1003 , 40 , "1-4" } , -- lev 60
}
special.levelup_reward1 =
{
-- warrior assassin sura shaman
{ 0, 0, 0, 0 },
{ 11200, 11400, 11600, 11800 }, -- °©¿Ê lev2
{ 12200, 12340, 12480, 12620 }, -- Åõ±¸ lev3
{ 13000, 13000, 13000, 13000 } -- ¹æÆÐ lev4
}
-- levelup_reward1 Å×À̺í Å©±âº¸´Ù ·¹º§ÀÌ ³ô¾ÆÁö¸é ¾Æ·¡
-- Å×À̺íÀ» ÀÌ¿ëÇÏ¿© ¾ÆÀÌÅÛÀ» ÁØ´Ù.
special.levelup_reward3 = {
-- pct item # item count
{ 33, 27002, 10 }, -- 25%
{ 67, 27005, 10 }, -- 25%
--{ 75, 27101, 5 }, -- 25%
{ 100, 27114, 5 }, -- 25%
}
special.levelup_reward_gold21 =
{
{ 10000, 20 },
{ 20000, 50 },
{ 40000, 25 },
{ 80000, 3 },
{ 100000, 2 },
}
special.levelup_reward_gold31 =
{
{ 20000, 20 },
{ 40000, 40 },
{ 60000, 25 },
{ 80000, 10 },
{ 100000, 5 },
}
special.levelup_reward_gold41 =
{
{ 40000, 20 },
{ 60000, 40 },
{ 80000, 25 },
{ 100000, 10 },
{ 150000, 5 },
}
special.levelup_reward_gold51 =
{
{ 60000, 20 },
{ 80000, 40 },
{ 100000, 25 },
{ 150000, 10 },
{ 200000, 5 },
}
special.levelup_reward_exp21 =
{
{ 2, 9 },
{ 3, 14 },
{ 4, 39 },
{ 6, 24 },
{ 8, 9 },
{ 10, 4 },
}
special.levelup_reward_exp31 =
{
{ 2, 10 },
{ 2.5, 15 },
{ 3, 40 },
{ 3.5, 25 },
{ 4, 8 },
{ 4.5, 5 },
{ 5, 2 },
}
special.levelup_reward_exp41 =
{
{ 2, 10 },
{ 2.5, 15 },
{ 3, 40 },
{ 3.5, 25 },
{ 4, 8 },
{ 4.5, 5 },
{ 5, 2 },
}
special.levelup_reward_exp51 =
{
{ 1, 10 },
{ 1.5, 15 },
{ 2, 40 },
{ 2.5, 25 },
{ 3, 8 },
{ 3.5, 5 },
{ 4, 2 },
}
special.levelup_reward_item_21 =
{
-- no couple ring
{ { 27002, 10 }, { 27005, 10 }, { 27114, 10 } }, -- lev 21
{ 15080, 15100, 15120, 15140 }, -- lev 22
{ 16080, 16100, 16120, 16140 }, -- lev 23
{ 17080, 17100, 17120, 17140 }, -- lev 24
{ { 27002, 10 }, { 27005, 10 }, { 27114, 10 } }, -- lev 25
{ { 27003, 20 }, { 27006, 20 }, { 27114, 10 } }, -- over lev 25
-- with couple ring
-- { { 27002, 10 }, { 27005, 10 }, { 27114, 10 }, { 70301, 1 } }, -- lev 21
-- { 15080, 15100, 15120, 15140, 70301 }, -- lev 22
-- { 16080, 16100, 16120, 16140, 70301 }, -- lev 23
-- { 17080, 17100, 17120, 17140, 70301 }, -- lev 24
-- { { 27002, 10 }, { 27005, 10 }, { 27114, 10 }, { 70301, 1 } }, -- lev 25
-- { { 27003, 20 }, { 27006, 20 }, { 27114, 10 } }, -- over lev 25
}
special.warp_to_pos = {
-- ½Â·æ°î
{
{ 402100, 673900 },
{ 270400, 739900 },
{ 321300, 808000 },
},
--µµ¿°È*Áö
{
--A 5994 7563
--B 5978 6222
--C 7307 6898
{ 599400, 756300 },
{ 597800, 622200 },
{ 730700, 689800 },
},
--¿µºñ»ç¸·
{
--A 2178 6272
{ 217800, 627200 },
--B 2219 5027
{ 221900, 502700 },
--C 3440 5025
{ 344000, 502500 },
},
--¼*ÇÑ»ê
{
--A 4342 2906
{ 434200, 290600 },
--B 3752 1749
{ 375200, 174900 },
--C 4918 1736
{ 491800, 173600 },
},
}
special.devil_tower =
{
--{ 123, 608 },
{ 2048+126, 6656+384 },
{ 2048+134, 6656+147 },
{ 2048+369, 6656+629 },
{ 2048+369, 6656+401 },
{ 2048+374, 6656+167 },
{ 2048+579, 6656+616 },
{ 2048+578, 6656+392 },
{ 2048+575, 6656+148 },
}
special.lvq_map = {
{ -- "A1" 1
{},
{ { 440, 565 }, { 460, 771 }, { 668, 800 },},
{ { 440, 565 }, { 460, 771 }, { 668, 800 },},
{ { 440, 565 }, { 460, 771 }, { 668, 800 },},
{{496, 401}, {494, 951}, {542, 1079}, {748, 9741},},
{{496, 401}, {494, 951}, {542, 1079}, {748, 9741},},
{{496, 401}, {494, 951}, {542, 1079}, {748, 9741},},
{{496, 401}, {494, 951}, {542, 1079}, {748, 9741},},
{{496, 401}, {494, 951}, {542, 1079}, {748, 9741},},
{{496, 401}, {494, 951}, {542, 1079}, {748, 9741},},
{{496, 401}, {494, 951}, {542, 1079}, {748, 9741},},
{{496, 401}, {494, 951}, {542, 1079}, {748, 9741},},
{{853,557}, {845,780}, {910,956},},
{{853,557}, {845,780}, {910,956},},
{{340, 179}, {692, 112}, {787, 256}, {898, 296},},
{{340, 179}, {692, 112}, {787, 256}, {898, 296},},
{{340, 179}, {692, 112}, {787, 256}, {898, 296},},
{{340, 179}, {692, 112}, {787, 256}, {898, 296},},
{{340, 179}, {692, 112}, {787, 256}, {898, 296},},
{{340, 179}, {692, 112}, {787, 256}, {898, 296},},
{{340, 179}, {692, 112}, {787, 256}, {898, 296},},
{{224,395}, {137,894}, {206,830}, {266,1067},},
{{224,395}, {137,894}, {206,830}, {266,1067},},
{{224,395}, {137,894}, {206,830}, {266,1067},},
{{405,74}},
{{405,74}},
{{405,74}},
{{405,74}},
{{405,74}},
{{405,74}},
{{405,74}},
{{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}},
{{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}},
},
{ -- "A2" 2
{},
{{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }},
{{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }},
{{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}},
{{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}},
{{640,1437}},
{{640,1437}},
{{640,1437}},
{{244,1309}, {4567,1080}, {496,885}, {798,975}, {1059,1099}, {855,1351},},
{{244,1309}, {4567,1080}, {496,885}, {798,975}, {1059,1099}, {855,1351},},
{{244,1309}, {4567,1080}, {496,885}, {798,975}, {1059,1099}, {855,1351},},
{{244,1309}, {4567,1080}, {496,885}, {798,975}, {1059,1099}, {855,1351},},
{{193,772}, {390,402}, {768,600}, {1075,789}, {1338,813},},
{{193,772}, {390,402}, {768,600}, {1075,789}, {1338,813},},
},
{ -- "A3" 3
{},
{{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }},
{{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }},
{{ 948,804 }},
{{ 948,804 }},
{{ 948,804 }},
{{438, 895}, {725, 864}, {632, 671},},
{{438, 895}, {725, 864}, {632, 671},},
{{438, 895}, {725, 864}, {632, 671},},
{{438, 895}, {725, 864}, {632, 671},},
{{438, 895}, {725, 864}, {632, 671},},
{{847, 412}, {844, 854}, {823, 757}, {433, 407},},
{{847, 412}, {844, 854}, {823, 757}, {433, 407},},
{{847, 412}, {844, 854}, {823, 757}, {433, 407},},
{{847, 412}, {844, 854}, {823, 757}, {433, 407},},
{{847, 412}, {844, 854}, {823, 757}, {433, 407},},
{{316,168}, {497,130}, {701,157}, {858,316},},
{{316,168}, {497,130}, {701,157}, {858,316},},
{{316,168}, {497,130}, {701,157}, {858,316},},
{{316,168}, {497,130}, {701,157}, {858,316},},
{{316,168}, {497,130}, {701,157}, {858,316},},
{{316,168}, {497,130}, {701,157}, {858,316},},
{{316,168}, {497,130}, {701,157}, {858,316},},
{{200,277}, {130,646}, {211,638}, {291,851},},
{{200,277}, {130,646}, {211,638}, {291,851},},
{{200,277}, {130,646}, {211,638}, {291,851},},
{{100,150}},
{{100,150}},
{{100,150}},
{{100,150}},
{{100,150}},
{{100,150}},
},
{}, -- 4
{}, -- 5
{}, -- 6
{}, -- 7
{}, -- 8
{}, -- 9
{}, -- 10
{}, -- 11
{}, -- 12
{}, -- 13
{}, -- 14
{}, -- 15
{}, -- 16
{}, -- 17
{}, -- 18
{}, -- 19
{}, -- 20
{ -- "B1" 21
{},
{{412,635}, {629,428}, {829,586},},
{{412,635}, {629,428}, {829,586},},
{{412,635}, {629,428}, {829,586},},
{{329,643}, {632,349}, {905,556},},
{{329,643}, {632,349}, {905,556},},
{{329,643}, {632,349}, {905,556},},
{{329,643}, {632,349}, {905,556},},
{{329,643}, {632,349}, {905,556},},
{{329,643}, {632,349}, {905,556},},
{{329,643}, {632,349}, {905,556},},
{{329,643}, {632,349}, {905,556},},
{{866,822}, {706,224}, {247,722},},
{{866,822}, {706,224}, {247,722},},
{{617,948}, {353,221},},
{{617,948}, {353,221},},
{{617,948}, {353,221},},
{{617,948}, {353,221},},
{{617,948}, {353,221},},
{{617,948}, {353,221},},
{{617,948}, {353,221},},
{{496,1089}, {890,1043},},
{{496,1089}, {890,1043},},
{{496,1089}, {890,1043},},
{{876,1127}},
{{876,1127}},
{{876,1127}},
{{876,1127}},
{{876,1127}},
{{876,1127}},
{{876,1127}},
{{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}},
{{876,1127}}, {{876,1127}}, {{876,1127}}, {{908,87}}, {{908,87}}, {{908,87}}, {{908,87}}, {{908,87}}, {{908,87}},
},
{ -- "B2" 22
{},
{{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }},
{{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }},
{{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}},
{{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}},
{{746,1438}},
{{746,1438}},
{{746,1438}},
{{ 172,810}, {288,465}, {475,841}, {303,156}, {687,466},},
{{ 172,810}, {288,465}, {475,841}, {303,156}, {687,466},},
{{ 172,810}, {288,465}, {475,841}, {303,156}, {687,466},},
{{ 172,810}, {288,465}, {475,841}, {303,156}, {687,466},},
{{787,235}, {1209,382}, {1350,571}, {1240,852}, {1254,1126}, {1078,1285}, {727,1360},},
{{787,235}, {1209,382}, {1350,571}, {1240,852}, {1254,1126}, {1078,1285}, {727,1360},},
},
{ -- "B3" 23
{},
{{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }},
{{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }},
{{ 106,88 }},
{{ 106,88 }},
{{ 106,88 }},
{{230, 244}, {200, 444}, {594, 408},},
{{230, 244}, {200, 444}, {594, 408},},
{{230, 244}, {200, 444}, {594, 408},},
{{230, 244}, {200, 444}, {594, 408},},
{{230, 244}, {200, 444}, {594, 408},},
{{584,204}, {720,376}, {861,272},},
{{584,204}, {720,376}, {861,272},},
{{584,204}, {720,376}, {861,272},},
{{584,204}, {720,376}, {861,272},},
{{584,204}, {720,376}, {861,272},},
{{566,694}, {349,574}, {198,645},},
{{566,694}, {349,574}, {198,645},},
{{566,694}, {349,574}, {198,645},},
{{566,694}, {349,574}, {198,645},},
{{566,694}, {349,574}, {198,645},},
{{566,694}, {349,574}, {198,645},},
{{566,694}, {349,574}, {198,645},},
{{816,721}, {489,823},},
{{816,721}, {489,823},},
{{816,721}, {489,823},},
{{772,140}},
{{772,140}},
{{772,140}},
{{772,140}},
{{772,140}},
{{772,140}},
},
{}, -- 24
{}, -- 25
{}, -- 26
{}, -- 27
{}, -- 28
{}, -- 29
{}, -- 30
{}, -- 31
{}, -- 32
{}, -- 33
{}, -- 34
{}, -- 35
{}, -- 36
{}, -- 37
{}, -- 38
{}, -- 39
{}, -- 40
{ -- "C1" 41
{},
{{385,446}, {169,592}, {211,692}, {632,681},},
{{385,446}, {169,592}, {211,692}, {632,681},},
{{385,446}, {169,592}, {211,692}, {632,681},},
{{385,374}, {227,815}, {664,771},},
{{385,374}, {227,815}, {664,771},},
{{385,374}, {227,815}, {664,771},},
{{385,374}, {227,815}, {664,771},},
{{385,374}, {227,815}, {664,771},},
{{385,374}, {227,815}, {664,771},},
{{385,374}, {227,815}, {664,771},},
{{385,374}, {227,815}, {664,771},},
{{169,362}, {368,304}, {626,409}, {187,882}, {571,858},},
{{169,362}, {368,304}, {626,409}, {187,882}, {571,858},},
{{178,275}, {365,242}, {644,313}, {194,950}, {559,936},},
{{178,275}, {365,242}, {644,313}, {194,950}, {559,936},},
{{178,275}, {365,242}, {644,313}, {194,950}, {559,936},},
{{178,275}, {365,242}, {644,313}, {194,950}, {559,936},},
{{178,275}, {365,242}, {644,313}, {194,950}, {559,936},},
{{178,275}, {365,242}, {644,313}, {194,950}, {559,936},},
{{178,275}, {365,242}, {644,313}, {194,950}, {559,936},},
{{452,160}, {536,1034}, {184,1044},},
{{452,160}, {536,1034}, {184,1044},},
{{452,160}, {536,1034}, {184,1044},},
{{137,126}},
{{137,126}},
{{137,126}},
{{137,126}},
{{137,126}},
{{137,126}},
{{137,126}},
{{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}},
{{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}},
},
{ -- "C2" 42
{},
{{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}},
{{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}},
{{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}},
{{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}},
{{1409,139}},
{{1409,139}},
{{1409,139}},
{{991,222}, {1201,525}, {613,232}, {970,751}, {1324,790},},
{{991,222}, {1201,525}, {613,232}, {970,751}, {1324,790},},
{{991,222}, {1201,525}, {613,232}, {970,751}, {1324,790},},
{{991,222}, {1201,525}, {613,232}, {970,751}, {1324,790},},
{{192,211}, {247,600}, {249,882}, {987,981}, {1018,1288}, {1303,1174},},
{{192,211}, {247,600}, {249,882}, {987,981}, {1018,1288}, {1303,1174},},
},
{ -- "C3" 43
{},
{{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}},
{{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}},
{{901,151}},
{{901,151}},
{{901,151}},
{{421, 189}, {167, 353},},
{{421, 189}, {167, 353},},
{{421, 189}, {167, 353},},
{{421, 189}, {167, 353},},
{{421, 189}, {167, 353},},
{{679,459}, {505,709},},
{{679,459}, {505,709},},
{{679,459}, {505,709},},
{{679,459}, {505,709},},
{{679,459}, {505,709},},
{{858,638}, {234,596},},
{{858,638}, {234,596},},
{{858,638}, {234,596},},
{{858,638}, {234,596},},
{{858,638}, {234,596},},
{{858,638}, {234,596},},
{{858,638}, {234,596},},
{{635,856}, {324,855},},
{{635,856}, {324,855},},
{{635,856}, {324,855},},
{{136,899}},
{{136,899}},
{{136,899}},
{{136,899}},
{{136,899}},
{{136,899}},
},
{}, -- 44
{}, -- 45
{}, -- 46
{}, -- 47
{}, -- 48
{}, -- 49
{}, -- 50
{}, -- 51
{}, -- 52
{}, -- 53
{}, -- 54
{}, -- 55
{}, -- 56
{}, -- 57
{}, -- 58
{}, -- 59
{}, -- 60
}
function BuildSkillList(job, group)
local skill_vnum_list = {}
local skill_name_list = {}
if pc.get_skill_group() != 0 then
local skill_list = special.active_skill_list[job+1][group]
table.foreachi( skill_list,
function(i, t)
local lev = pc.get_skill_level(t)
if lev > 0 then
local name = locale.GM_SKILL_NAME_DICT[t]
if name != nil then
table.insert(skill_vnum_list, t)
table.insert(skill_name_list, name)
end
end
end
)
end
table.insert(skill_vnum_list, 0)
table.insert(skill_name_list, locale.cancel)
return { skill_vnum_list, skill_name_list }
end
PREMIUM_EXP = 0
PREMIUM_ITEM = 1
PREMIUM_SAFEBOX = 2
PREMIUM_AUTOLOOT = 3
PREMIUM_FISH_MIND = 4
PREMIUM_MARRIAGE_FAST = 5
PREMIUM_GOLD = 6
-- point type start
POINT_NONE = 0
POINT_LEVEL = 1
POINT_VOICE = 2
POINT_EXP = 3
POINT_NEXT_EXP = 4
POINT_HP = 5
POINT_MAX_HP = 6
POINT_SP = 7
POINT_MAX_SP = 8
POINT_STAMINA = 9 --½ºÅ׹̳Ê
POINT_MAX_STAMINA = 10 --ÃÖ´ë ½ºÅ׹̳Ê
POINT_GOLD = 11
POINT_ST = 12 --±Ù·Â
POINT_HT = 13 --ü·Â
POINT_DX = 14 --¹Îø¼º
POINT_IQ = 15 --Á¤½Å·Â
POINT_DEF_GRADE = 16
POINT_ATT_SPEED = 17 --°ø°Ý¼Óµµ
POINT_ATT_GRADE = 18 --°ø°Ý·Â MAX
POINT_MOV_SPEED = 19 --À̵¿¼Óµµ
POINT_CLIENT_DEF_GRADE = 20 --¹æ¾îµî±Þ
POINT_CASTING_SPEED = 21 --ÁÖ¹®¼Óµµ (Äð´Ù¿îŸÀÓ*100) / (100 + À̰ª) = ÃÖÁ¾ Äð´Ù¿î ŸÀÓ
POINT_MAGIC_ATT_GRADE = 22 --¸¶¹ý°ø°Ý·Â
POINT_MAGIC_DEF_GRADE = 23 --¸¶¹ý¹æ¾î·Â
POINT_EMPIRE_POINT = 24 --Á¦±¹Á¡¼ö
POINT_LEVEL_STEP = 25 --ÇÑ ·¹º§¿¡¼*ÀÇ ´Ü°è.. (1 2 3 µÉ ¶§ º¸»ó 4 µÇ¸é ·¹º§ ¾÷)
POINT_STAT = 26 --´É·ÂÄ¡ ¿Ã¸± ¼ö ÀÖ´Â °³¼ö
POINT_SUB_SKILL = 27 --º¸Á¶ ½ºÅ³ Æ÷ÀÎÆ®
POINT_SKILL = 28 --¾×Ƽºê ½ºÅ³ Æ÷ÀÎÆ®
POINT_WEAPON_MIN = 29 --¹«±â ÃÖ¼Ò µ¥¹ÌÁö
POINT_WEAPON_MAX = 30 --¹«±â ÃÖ´ë µ¥¹ÌÁö
POINT_PLAYTIME = 31 --Ç÷¹À̽ð£
POINT_HP_REGEN = 32 --HP ȸº¹·ü
POINT_SP_REGEN = 33 --SP ȸº¹·ü
POINT_BOW_DISTANCE = 34 --Ȱ »çÁ¤°Å¸® Áõ°¡Ä¡ (meter)
POINT_HP_RECOVERY = 35 --ü·Â ȸº¹ Áõ°¡·®
POINT_SP_RECOVERY = 36 --Á¤½Å·Â ȸº¹ Áõ°¡·®
POINT_POISON_PCT = 37 --µ¶ È®·ü
POINT_STUN_PCT = 38 --±âÀý È®·ü
POINT_SLOW_PCT = 39 --½½·Î¿ì È®·ü
POINT_CRITICAL_PCT = 40 --Å©¸®Æ¼Äà Ȯ·ü
POINT_PENETRATE_PCT = 41 --°üÅëŸ°Ý È®·ü
POINT_CURSE_PCT = 42 --ÀúÁÖ È®·ü
POINT_ATTBONUS_HUMAN = 43 --Àΰ£¿¡°Ô °*ÇÔ
POINT_ATTBONUS_ANIMAL = 44 --µ¿¹°¿¡°Ô µ¥¹ÌÁö % Áõ°¡
POINT_ATTBONUS_ORC = 45 --¿õ±Í¿¡°Ô µ¥¹ÌÁö % Áõ°¡
POINT_ATTBONUS_MILGYO = 46 --¹Ð±³¿¡°Ô µ¥¹ÌÁö % Áõ°¡
POINT_ATTBONUS_UNDEAD = 47 --½Ãü¿¡°Ô µ¥¹ÌÁö % Áõ°¡
POINT_ATTBONUS_DEVIL = 48 --¸¶±Í(¾Ç¸¶)¿¡°Ô µ¥¹ÌÁö % Áõ°¡
POINT_ATTBONUS_INSECT = 49 --¹ú·¹Á·
POINT_ATTBONUS_FIRE = 50 --È*¿°Á·
POINT_ATTBONUS_ICE = 51 --ºù¼³Á·
POINT_ATTBONUS_DESERT = 52 --»ç¸·Á·
POINT_ATTBONUS_MONSTER = 53 --¸ðµç ¸ó½ºÅÍ¿¡°Ô °*ÇÔ
POINT_ATTBONUS_WARRIOR = 54 --¹«»ç¿¡°Ô °*ÇÔ
POINT_ATTBONUS_ASSASSIN = 55 --ÀÚ°´¿¡°Ô °*ÇÔ
POINT_ATTBONUS_SURA = 56 --¼ö¶ó¿¡°Ô °*ÇÔ
POINT_ATTBONUS_SHAMAN = 57 --¹«´ç¿¡°Ô °*ÇÔ
-- ADD_TRENT_MONSTER
POINT_ATTBONUS_TREE = 58 --³ª¹«¿¡°Ô °*ÇÔ 20050729.myevan UNUSED5
-- END_OF_ADD_TRENT_MONSTER
POINT_RESIST_WARRIOR = 59 --¹«»ç¿¡°Ô ÀúÇ×
POINT_RESIST_ASSASSIN = 60 --ÀÚ°´¿¡°Ô ÀúÇ×
POINT_RESIST_SURA = 61 --¼ö¶ó¿¡°Ô ÀúÇ×
POINT_RESIST_SHAMAN = 62 --¹«´ç¿¡°Ô ÀúÇ×
POINT_STEAL_HP = 63 --»ý¸í·Â Èí¼ö
POINT_STEAL_SP = 64 --Á¤½Å·Â Èí¼ö
POINT_MANA_BURN_PCT = 65 --¸¶³ª ¹ø
--/ ÇÇÇØ½Ã º¸³Ê½º =/
POINT_DAMAGE_SP_RECOVER = 66 --°ø°Ý´çÇÒ ½Ã Á¤½Å·Â ȸº¹ È®·ü
POINT_BLOCK = 67 --ºí·°À²
POINT_DODGE = 68 --ȸÇÇÀ²
POINT_RESIST_SWORD = 69
POINT_RESIST_TWOHAND = 70
POINT_RESIST_DAGGER = 71
POINT_RESIST_BELL = 72
POINT_RESIST_FAN = 73
POINT_RESIST_BOW = 74 --È*»ì ÀúÇ× : ´ë¹ÌÁö °¨¼Ò
POINT_RESIST_FIRE = 75 --È*¿° ÀúÇ× : È*¿°°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
POINT_RESIST_ELEC = 76 --Àü±â ÀúÇ× : Àü±â°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
POINT_RESIST_MAGIC = 77 --¼ú¹ý ÀúÇ× : ¸ðµç¼ú¹ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
POINT_RESIST_WIND = 78 --¹Ù¶÷ ÀúÇ× : ¹Ù¶÷°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
POINT_REFLECT_MELEE = 79 --°ø°Ý ¹Ý»ç
--/ Ư¼ö ÇÇÇØ½Ã =/
POINT_REFLECT_CURSE = 80 --ÀúÁÖ ¹Ý»ç
POINT_POISON_REDUCE = 81 --µ¶µ¥¹ÌÁö °¨¼Ò
--/ Àû ¼Ò¸ê½Ã =/
POINT_KILL_SP_RECOVER = 82 --Àû ¼Ò¸ê½Ã MP ȸº¹
POINT_EXP_DOUBLE_BONUS = 83
POINT_GOLD_DOUBLE_BONUS = 84
POINT_ITEM_DROP_BONUS = 85
--/ ȸº¹ °ü·Ã =/
POINT_POTION_BONUS = 86
POINT_KILL_HP_RECOVERY = 87
POINT_IMMUNE_STUN = 88
POINT_IMMUNE_SLOW = 89
POINT_IMMUNE_FALL = 90
--========
POINT_PARTY_ATTACKER_BONUS = 91
POINT_PARTY_TANKER_BONUS = 92
POINT_ATT_BONUS = 93
POINT_DEF_BONUS = 94
POINT_ATT_GRADE_BONUS = 95
POINT_DEF_GRADE_BONUS = 96
POINT_MAGIC_ATT_GRADE_BONUS = 97
POINT_MAGIC_DEF_GRADE_BONUS = 98
POINT_RESIST_NORMAL_DAMAGE = 99
POINT_HIT_HP_RECOVERY = 100
POINT_HIT_SP_RECOVERY = 101
POINT_MANASHIELD = 102 --Èæ½Å¼öÈ£ ½ºÅ³¿¡ ÀÇÇÑ ¸¶³ª½¯µå È¿°ú Á¤µµ
POINT_PARTY_BUFFER_BONUS = 103
POINT_PARTY_SKILL_MASTER_BONUS = 104
POINT_HP_RECOVER_CONTINUE = 105
POINT_SP_RECOVER_CONTINUE = 106
POINT_STEAL_GOLD = 107
POINT_POLYMORPH = 108 --º¯½ÅÇÑ ¸ó½ºÅÍ ¹øÈ£
POINT_MOUNT = 109 --Ÿ°íÀÖ´Â ¸ó½ºÅÍ ¹øÈ£
POINT_PARTY_HASTE_BONUS = 110
POINT_PARTY_DEFENDER_BONUS = 111
POINT_STAT_RESET_COUNT = 112 --ÇÇÀÇ ´Ü¾à »ç¿ëÀ» ÅëÇÑ ½ºÅÝ ¸®¼Â Æ÷ÀÎÆ® (1´ç 1Æ÷ÀÎÆ® ¸®¼Â°¡´É)
POINT_HORSE_SKILL = 113
POINT_MALL_ATTBONUS = 114 --°ø°Ý·Â +x%
POINT_MALL_DEFBONUS = 115 --¹æ¾î·Â +x%
POINT_MALL_EXPBONUS = 116 --°æÇèÄ¡ +x%
POINT_MALL_ITEMBONUS = 117 --¾ÆÀÌÅÛ µå·ÓÀ² x/10¹è
POINT_MALL_GOLDBONUS = 118 --µ· µå·ÓÀ² x/10¹è
POINT_MAX_HP_PCT = 119 --ÃÖ´ë»ý¸í·Â +x%
POINT_MAX_SP_PCT = 120 --ÃÖ´ëÁ¤½Å·Â +x%
POINT_SKILL_DAMAGE_BONUS = 121 --½ºÅ³ µ¥¹ÌÁö *(100+x)%
POINT_NORMAL_HIT_DAMAGE_BONUS = 122 --ÆòŸ µ¥¹ÌÁö *(100+x)%
-- DEFEND_BONUS_ATTRIBUTES
POINT_SKILL_DEFEND_BONUS = 123 --½ºÅ³ ¹æ¾î µ¥¹ÌÁö
POINT_NORMAL_HIT_DEFEND_BONUS = 124 --ÆòŸ ¹æ¾î µ¥¹ÌÁö
-- END_OF_DEFEND_BONUS_ATTRIBUTES
-- PC_BANG_ITEM_ADD
POINT_PC_BANG_EXP_BONUS = 125 --PC¹æ Àü¿ë °æÇèÄ¡ º¸³Ê½º
POINT_PC_BANG_DROP_BONUS = 126 --PC¹æ Àü¿ë µå·Ó·ü º¸³Ê½º
-- END_PC_BANG_ITEM_ADD
-- POINT_MAX_NUM = 128 common/length.h
-- point type start
|