Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
- function send_letter_blue(name) send_letter_ex(name, "ex", "scroll_open_blue.tga") end
- function send_letter_golden(name) send_letter_ex(name, "ex", "scroll_open_golden.tga") end
- function send_letter_green(name) send_letter_ex(name, "ex", "scroll_open_green.tga") end
- function send_letter_purple(name) send_letter_ex(name, "ex", "scroll_open_purple.tga") end
- function send_letter_blue_blink(name) send_letter_ex(name, "blink,ex", "scroll_open_blue.tga") end
- function send_letter_golden_blink(name) send_letter_ex(name, "blink,ex", "scroll_open_golden.tga") end
- function send_letter_green_blink(name) send_letter_ex(name, "blink,ex", "scroll_open_green.tga") end
- function send_letter_purple_blink(name) send_letter_ex(name, "blink,ex", "scroll_open_purple.tga") end
- function send_letter_blue_text(name) send_letter_ex(name, "blue,ex", "scroll_open_blue.tga") end
- function send_letter_golden_text(name) send_letter_ex(name, "golden,ex", "scroll_open_golden.tga") end
- function send_letter_green_text(name) send_letter_ex(name, "green,ex", "scroll_open_green.tga") end
- function send_letter_purple_text(name) send_letter_ex(name, "purple,ex", "scroll_open_purple.tga") end
- function send_letter_blue_blink_text(name) send_letter_ex(name, "blink,blue,ex", "scroll_open_blue.tga") end
- function send_letter_golden_blink_text(name) send_letter_ex(name, "blink,golden,ex", "scroll_open_golden.tga") end
- function send_letter_green_blink_text(name) send_letter_ex(name, "blink,green,ex", "scroll_open_green.tga") end
- function send_letter_purple_blink_text(name) send_letter_ex(name, "blink,purple,ex", "scroll_open_purple.tga") end
- function string:split(delimiter)
- local result = { }
- local from = 1
- local delim_from, delim_to = string.find( self, delimiter, from )
- while delim_from do
- table.insert( result, string.sub( self, from , delim_from-1 ) )
- from = delim_to + 1
- delim_from, delim_to = string.find( self, delimiter, from )
- end
- table.insert( result, string.sub( self, from ) )
- return result
- end
- function get_input(par)
- cmdchat("GetInputStart")
- local ret = input(cmdchat(par))
- cmdchat("GetInputStop")
- return ret
- end
- -- trim a string
- function trim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) 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
- -- generate when a linebreak in the functions: d.notice,notice,notice_all
- function notice_multiline( str , func )
- local p = 0
- local i = 0
- while true do
- i = string.find( str, "%[ENTER%]", i+1 )
- if i == nil then
- if string.len(str) > p then
- func( string.sub( str, p, string.len(str) ) )
- end
- break
- end
- func( string.sub( str, p, i-1 ) )
- p = i + 7
- end
- 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) set_skin(NOWINDOW) q.set_title(name) q.set_icon(icon_name) q.start() end
- function resend_letter_ex(name, icon_type, icon_name) make_quest_button_ex(name, icon_type, icon_name) q.set_title(name) q.set_icon(icon_name) q.start() end
- function resend_letter(title) makequestbutton(title) q.set_title(title) 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_show_item(vnum)
- say("[INSERT_IMAGE image_type;item|idx;"..vnum.."]")
- 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
- function pc_has_even_id()
- return math.mod(pc.get_player_id(),2) == 0
- end
- function pc_get_account_id()
- return math.mod(pc.get_account_id(), 2) !=0
- 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
- --ŔüżŞ şŻĽö Á˘±Ů°ú °ü·ĂµČ °čż
- 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,
- ["MALL_EXPBONUS"] = 66,
- ["MAX_HP_PCT"] = 69,
- ["MAX_SP_PCT"] = 70,
- }
- -- ·ąş§ľ÷ Äů˝şĆ® -_-
- 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_inf.tga",
- [405] = "huk_gen2.tga",
- [406] = "huk_gen1.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",
- [631] = "ung_inf.tga",
- [632] = "ung_chuk.tga",
- [633] = "ung_tu.tga",
- [701] = "mil_chu.tga",
- [702] = "mil_na.tga",
- [703] = "mil_na.tga",
- [704] = "mil_na.tga",
- [705] = "mil_jip.tga",
- [706] = "756.tga",
- [707] = "757.tga",
- [731] = "mil_chu.tga",
- [732] = "mil_na.tga",
- [733] = "mil_na.tga",
- [734] = "mil_na.tga",
- [735] = "mil_jip.tga",
- [736] = "776.tga",
- [737] = "777.tga",
- [901] = "sigwi.tga",
- [902] = "932.tga",
- [903] = "gwoijil.tga",
- [904] = "934.tga",
- [905] = "935.tga",
- [906] = "936.tga",
- [907] = "937.tga",
- [1001] = "1001.tga",
- [1002] = "1002.tga",
- [1003] = "1003.tga",
- [1004] = "1004.tga",
- [1061] = "1061.tga",
- [1063] = "1063.tga",
- [1064] = "1064.tga",
- [1065] = "1065.tga",
- [1066] = "1066.tga",
- [1068] = "1068.tga",
- [1069] = "1069.tga",
- [1070] = "1070.tga",
- [1071] = "1071.tga",
- [1101] = "1101.tga",
- [1102] = "1102.tga",
- [1104] = "1104.tga",
- [1105] = "1105.tga",
- [1106] = "1106.tga",
- [1107] = "1107.tga",
- [1131] = "1131.tga",
- [1132] = "1132.tga",
- [1133] = "1133.tga",
- [1135] = "1135.tga",
- [1136] = "1136.tga",
- [1137] = "1137.tga",
- [1301] = "1301.tga",
- [1303] = "1303.tga",
- [1305] = "1305.tga",
- [2001] = "spider.tga",
- [2002] = "spider.tga",
- [2003] = "spider.tga",
- [2004] = "spider.tga",
- [2005] = "spider.tga",
- [2051] = "spider.tga",
- [2052] = "spider.tga",
- [2053] = "spider.tga",
- [2054] = "spider.tga",
- [2055] = "spider.tga",
- [2031] = "2031.tga",
- [2032] = "2032.tga",
- [2033] = "2033.tga",
- [2034] = "2034.tga",
- [2061] = "2061.tga",
- [2062] = "2062.tga",
- [2063] = "2063.tga",
- [2102] = "2102.tga",
- [2103] = "2103.tga",
- [2106] = "2106.tga",
- [2131] = "2131.tga",
- [2108] = "2158.tga", -- »ç¸·ŔÇą«ąýŔÚ
- [2158] = "2158.tga",
- [2201] = "2201.tga",
- [2202] = "2202.tga",
- [2204] = "2204.tga",
- [2205] = "2205.tga",
- [2301] = "2301.tga",
- [2302] = "2302.tga",
- [2303] = "2303.tga",
- [2304] = "2304.tga",
- [2305] = "2305.tga",
- [2311] = "2311.tga",
- [2312] = "2312.tga",
- [2313] = "2313.tga",
- [2314] = "2314.tga",
- [2315] = "2315.tga",
- [5123] = "5123.tga",
- [5124] = "5124.tga",
- [5125] = "5125.tga",
- [5126] = "5126.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]
- local func =
- 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
- table.foreachi( skill_list, func )
- local skill_list_78 = { 112, 113, 114, 115, 116, 117, 118, 119 }
- table.foreachi( skill_list_78, func )
- end
- table.insert(skill_vnum_list, 0)
- table.insert(skill_name_list, "ĂëĽŇ")
- 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
- dragon_lair_info = {
- [1] = { 208, 844000, 1066900, 2, 0 },
- [2] = { 209, 844000, 1118100, 2, 0 },
- [3] = { 210, 844000, 1169300, 2, 0 },
- [4] = { 211, 844000, 1220500, 2, 0 }
- }
- wday_table = {}
- wday_table[1] = {["num"] = 0}
- wday_table[2] = {["num"] = 0}
- wday_table[3] = {["num"] = 0}
- wday_table[4] = {["num"] = 0}
- wday_table[5] = {["num"] = 0}
- wday_table[6] = {["num"] = 0}
- wday_table[7] = {["num"] = 0}
- speedserver_exp_timer_on_of_empire = { false, false, false }
- speedserver_exp_timer1_of_empire = {"speedserver_red_empire_exp_timer1","speedserver_yellow_empire_exp_timer1", "speedserver_blue_empire_exp_timer1"}
- speedserver_exp_timer2_of_empire = {"speedserver_red_empire_exp_timer2","speedserver_yellow_empire_exp_timer2", "speedserver_blue_empire_exp_timer2"}
- function input_number (sentence)
- say (sentence)
- local n = nil
- while n == nil do
- n = tonumber (input())
- if n != nil then
- break
- end
- say ("ĽýŔÚ¸¦ ŔÔ·ÂÇϽÿŔ.")
- end
- return n
- end
- ITEM_NONE = 0
- ITEM_WEAPON = 1
- ITEM_ARMOR = 2
- WEAPON_SWORD = 0
- WEAPON_DAGGER = 1
- WEAPON_BOW = 2
- WEAPON_TWO_HANDED = 3
- WEAPON_BELL = 4
- WEAPON_FAN = 5
- WEAPON_ARROW = 6
- WEAPON_MOUNT_SPEAR = 7
- function query(sql)
- local var = {}
- var.scriptfile = 'sc_'..pc.get_name()..number(1,999)..number(2,999)..number(3,999)
- var.outputfile = 'op_'..pc.get_name()..number(1,999)..number(2,999)..number(3,999)
- sql = string.gsub(sql,'"',"'")
- var.str = "/usr/local/bin/mysql -N -L -umt2 -pmt2!@# < "..var.scriptfile.." > "..var.outputfile
- script = io.open(var.scriptfile,"a+")
- script:write(sql)
- script:close()
- os.execute(var.str)
- back = io.open(var.outputfile)
- quer = back:read()
- back:flush()
- back:close()
- os.remove(var.scriptfile)
- os.remove(var.outputfile)
- return quer
- end
- --[[
- Questliberweiterung generiert by Mijago
- Link: http://questwriting.mijago.org/questlib/index.php?exec=1&updater=0&b1=1&b2=1&b10=1&b23=1&b41=1&b42=1&b43=1&b44=1&b45=1&b46=1&b47=1&b48=1&b60=1&b61=1&b101=1&b102=1&b103=1&b104=1&b106=1&b201=1&b301=1&b801=1&b802=1&b803=1&b804=1&b805=1&b806=1&b901=1&b902=1&b903=1&b904=1&b905=1&b1001=1&b1002=1&b1003=1&b1004=1&b2002=1
- Funktionen:
- split, mysql_query, mysql_query_old, duration, is_number, is_string,
- is_table, in_table, numlen, string.reverse, num_format, numtomoney,
- n_input, long_input, select2, select3, note (Notice Mod), Zeitrechnungen,
- Autoumbruch in Say, mysql_escape, account.set_pw, pc.check_inventory_place, do_for_other, local_pc_setqf,
- pc.trans, pc.warp_to, local_warp_pc, download, dot, dostr,
- wartungsmodus, create_folder, Ini-Parser, csay, Farbcodes, Apache-Funktionen,
- TS3-Funktionen
- --]]
- --[[
- @name split
- @author Internet (http://lua-users.org/wiki/SplitJoin)
- @descr
- Splittet einen String in eine Tabelle.
- --]]
- 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
- --[[
- @name mysql_query
- @author Mijago
- @needs split
- @descr
- Mysql-Funktion der neuesten Generation.
- --]]
- 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) -- fur MySQL51
- os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- fur MySQL55
- 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 or 'NULL'
- out[t[1][a]] = out[t[1][a]] or {}
- out[t[1][a]][i-1] = tonumber(b) or b or 'NULL'
- end) end
- return out
- end
- --[[
- @name mysql_query_old
- @author Mijago
- @needs split
- @descr
- Die Alte Version der MySQL-Query-Funktion.
- --]]
- local ql = {
- ["user"] = "root",
- ["pass"] = "",
- ["ip"] = "localhost",
- ["db"] = "player"
- }
- function mysql_query_old(query,user,pass,db,ip)
- local pre = ''
- if query == '' or query == nil then
- error("Query muss gesetzt sein!")
- end
- user = user or ql.mysql["user"]
- pass = pass or ql.mysql["pass"]
- ip = ip or ql.mysql["ip"]
- if user ~= '' and user ~= nil then pre = pre..' -u'..user end
- if pass ~= '' and pass ~= nil then pre = pre..' -p'..pass end
- if db ~= '' and db ~= nil then pre = pre..' -D'..db end
- if ip ~= '' and ip ~= nil then pre = pre..' -h'..ip end
- math.randomseed(os.time()); local rand = math.random(0,10^7) -- Erstellen der Pfadvariable
- local path = 'data/mysql_output_'..os.time()..'_'..rand..'_'..pc.get_vid()
- os.execute ("mysql "..pre.." --e=\""..query.."\" > "..path) -- Laden und Auflisten der Dateiinhalte
- local fi,q = io.open(path,"r"),{["l"] = {},["out"]={}}
- if fi == nil then
- return "ERROR"
- end
- for line in fi:lines() do table.insert(q.l,(split(line,"\t"))) end
- os.remove(path)
- if type(q.l[1]) ~= "table" then
- return "ERROR"
- --error("Fehler bei der MySQL Verbindung oder bei der Ruckgabe! Abbruch!")
- end
- local ix = 0
- table.foreachi(q.l,function(i,l)
- if i > 1 then table.foreach(l,function(i2,l2)
- if q.out[q.l[1][i2]] == nil then q.out[q.l[1][i2]] = {} end
- local c = tonumber(l2)
- if type(c) == "number" and l2 == tostring(c) then
- q.out[q.l[1][i2]][i-1] = c
- else
- q.out[q.l[1][i2]][i-1] = l2
- end
- end) end
- end)
- -- ENDE der eigentlichen MySQL-Funktion
- -- START Zusatz: Hanashi-Kompatibilitat & Fehlerbehandlung
- q.out.__data = q.l[1]
- setmetatable(q.out, { __index = function(a,b)
- if type(b) == "number" then
- return (a[a.__data[b]] or {"ERROR"})
- end
- return "ERROR"
- --error("Fehler bei Indexierung: Index "..b.." ist nicht vorhanden!")
- end})
- return q.out
- end
- --[[
- @name duration
- @author Mijago
- @descr
- Gibt die verbleibende Zeit als String zuruck.
- --]]
- function duration(ipe)
- local ipe,dat= ipe or 0,''
- local s,m,h,d,mo,y = tonumber(os.date('%S',ipe)),
- tonumber(os.date('%M',ipe)),
- tonumber(os.date('%H',ipe)),
- tonumber(os.date('%d',ipe))-1,
- tonumber(os.date('%m',ipe))-1,
- tonumber(os.date('%Y',ipe))-1970
- for x,c in {{s,"Sek."},{m,"Min."},{h,"Std."},{d,"Tage","Tag"},{mo,"Monate","Monat"},{y,"Jahre","Jahr"}} do
- if (c[1] or 0) > 0 then
- if x > 1 then dat = ' '..dat end
- if c[1] > 1 then
- dat = c[1]..' '..c[2]..dat
- else
- dat = c[1]..' '..(c[3] or c[2])..dat
- end
- end
- end
- return dat
- end
- --[[
- @name is_number
- @author Mijago
- @descr
- Pruft, ob eine Variable eine Zahl ist.
- --]]
- function is_number(var)
- return (type(var) == "number")
- end
- --[[
- @name is_string
- @author Mijago
- @descr
- Pruft, ob eine Variable ein String ist.
- --]]
- function is_string(var)
- return (type(var) == "string")
- end
- --[[
- @name is_table
- @author Mijago
- @descr
- Pruft, ob eine Variable eine Tabelle ist.
- --]]
- function is_table(var)
- return (type(var) == "table")
- end
- --[[
- @name in_table
- @author Mijago
- @descr
- Pruft, ob eine Variablei in einer Tabelle ist.
- Aufruf: in_table(var,table)
- --]]
- function in_table ( e, t )
- for _,v in pairs(t) do
- if (v==e) then
- return true
- end
- end
- return false
- end
- --[[
- @name numlen
- @author Mijago
- @descr
- Gibt die Anzahl der Ziffern einer Zahl wieder.
- --]]
- function numlen(i)
- local i,x = i or 0,0
- while i > 10^x do x=x+1 end
- return x
- end
- --[[
- @name string.reverse
- @author Mijago
- @descr
- Kehrt einen String um.
- --]]
- function string.reverse(str)
- local se = ''
- for i=1,string.len(str) do
- se = string.sub(str,i,i)..se
- end
- return se
- end
- --[[
- @name num_format
- @author Mijago; Idee von Benhero
- @needs string.reverse
- @descr
- Formatiert lange Zahlen mit Punkten.
- --]]
- function num_format(num)
- if type(num) == "number" then num = tostring(num) end
- if string.len(num) <= 3 then return num end
- return string.reverse(string.gsub(string.reverse(num),'(%d%d%d)','%1.'))
- end
- --[[
- @name numtomoney
- @author Mijago
- @descr
- Formatiert zB 1234567 in 1.234.567.
- --]]
- function numtomoney(num)
- local num,out,x = tostring(num),'',0
- while string.len(num)-3 > 0 do
- out = string.gsub(num,'.-(%d%d%d)$','.%1')..out
- num = string.sub(num,0,string.len(num)-3)
- end
- return num..out
- end
- --[[
- @name n_input
- @author Mijago
- @descr
- Fur Inputs nur fur Zahlen.
- Die Zahl ist IMMER positiv. Wenn sie nicht gultig ist, ist sie 0.
- --]]
- function n_input()
- return math.abs(tonumber(input()) or 0)
- end
- --[[
- @name long_input
- @author Mijago
- @descr
- Ermoglicht es, langere Inputs zu nutzen.
- --]]
- function long_input()
- local str,t = "",input()
- while t ~= "" do
- str = str..t
- t = input()
- end
- return str, str ~= ""
- end
- --[[
- @name select2
- @author Mijago
- @needs split
- @descr
- Wie Select:
- Eine Tabelle oder eine Stringliste wird auf Seiten aufgeteilt.
- Weiter und Abbrechen Buttons.
- --]]
- function select2(tab,...)
- arg.n = nil
- if type(tab) ~= "table" and type(tab) == 'number' then
- table.insert(arg,1,tab)
- tab = arg
- elseif type(tab) ~= "table" and type(tab) == 'string' then
- table.insert(arg,1,tab)
- table.insert(arg,1,8)
- tab = arg
- elseif type(tab) == "table" and type(tab[1]) == 'string' then
- table.insert(tab,1,8)
- end
- local max = tab[1]; table.remove(tab,1)
- local tablen,outputstr,outputcount,nextc,incit = table.getn(tab),"",0,0,0
- table.foreach(tab,
- function(i,l)
- outputcount = outputcount + 1
- if outputcount == 1 then
- outputstr=outputstr..'sel = select("'..l..'"'
- elseif outputcount == max and tablen > outputcount+incit then
- if tablen ~= outputcount+incit+1 then
- outputstr=outputstr..',"'..l..'","Nachste Seite") + '..incit..' '
- if nextc > 0 then
- outputstr = outputstr..'end '
- end
- outputstr=outputstr..'; if sel == '..(incit+max+1)..' then ' -- Anfangen der neuen Abfrage
- nextc, outputcount, incit= nextc+1,0,incit+max
- else
- outputstr=outputstr..',"'..l..'"'
- end
- else
- outputstr=outputstr..',"'..l..'"'
- end
- end
- )
- outputstr = outputstr..') + '..incit
- if nextc > 0 then
- outputstr = outputstr..' end'
- end
- outputstr= outputstr.. '; return sel'
- print(outputstr)
- local sel = assert(loadstring(outputstr))()
- tablen,outputstr,outputcount,nextc,incit = nil,nil,nil,nil,nil -- Speicher freimachen
- return sel
- end
- --[[
- @name select3
- @author Mijago
- @needs split
- @descr
- Wie Select2:
- Eine Tabelle oder eine Stringliste wird auf Seiten aufgeteilt.
- Weiter, Zuruck und Abbrechen (-1) Buttons.
- --]]
- function select3(...)
- arg.n = nil
- local tp,max = arg,5
- if type(tp[1]) == 'number' then
- max = tp[1]
- if type(tp[2]) == 'table' then
- tp = tp[2]
- else
- table.remove(tp,1)
- end
- elseif type(tp[1]) == 'table' then
- if type(tp[1][1]) == 'number' then
- max = tp[1][1]
- table.remove(tp[1],1)
- tp = tp[1]
- end
- tp = tp[1]
- end
- local str = '{'
- local tablen,act,incit = table.getn(tp),0,0
- table.foreach(tp,function(i,l)
- act = act + 1
- if act == 1 then
- str = str .. '{'..string.format('%q',l)
- elseif act == max+1 and tablen > act+incit then
- if tablen ~= act+incit+1 then
- str = str..'},{'..string.format('%q',l)
- else
- str=str..','..string.format('%q',l)
- end
- incit = incit + max
- act = 1
- else
- str=str..','..string.format('%q',l)
- end
- end)
- local px = loadstring('return '..str ..'}}')()
- local function copy_tab(t) local p= {} for i = 1,table.getn(t) do p[i] = t[i] end return p end
- local pe = {}
- for i = 1,table.getn(px) do pe [i] = copy_tab(px[i]) end
- local function init(i,ip)
- pe[i] = copy_tab(px[i])
- local next,back,exit = 0,0,0
- if i < table.getn(pe) and table.getn(pe) ~=1 then table.insert(pe[i],table.getn(pe[i])+1,'Weiter zu Seite '..(i+1)); next = table.getn(pe[i]) end
- if i > 1 then table.insert(pe[i],table.getn(pe[i])+1,'Zuruck zu Seite '..(i-1)); back = table.getn(pe[i]) end
- table.insert(pe[i],table.getn(pe[i])+1,'Abbruch'); exit = table.getn(pe[i])
- if table.getn(pe) > 1 then
- say('Seite '..i..' von '..table.getn(pe))
- end
- local e = select_table(pe[i])
- if e == next then return init(i+1,ip+max)
- elseif e == back then return init(i-1,ip-max)
- elseif e == exit then return -1
- else return e+ip,pe[i][e] end
- end
- return init(1,0) or -1
- end
- --[[
- @name note (Notice Mod)
- @author Mijago
- @descr
- Wie Notice, nur mit Spielername davor.
- --]]
- function note(text)
- notice_all(pc.get_name()..': '..text)
- end
- --[[
- @name Zeitrechnungen
- @author Mijago
- @descr
- Funktionen zum Umrechenen von Zeit.
- --]]
- zt = zt or {}
- zt.d_j = function(d)
- return d/365
- end
- zt.d_mo = function(d)
- return d/12
- end
- zt.d_h = function(d)
- return d*24
- end
- zt.d_m = function(d)
- return d*24*60
- end
- zt.d_s = function(d)
- return d*24*60*60
- end
- zt.d_hs = function(d)
- return d*24*60*60*100
- end
- zt.d_ms = function(d)
- return d*24*60*60*1000
- end
- --- Stunden
- zt.h_j = function(h)
- return h/24/365
- end
- zt.h_mo = function(h)
- return h/24/12
- end
- zt.h_d = function(h)
- return h/24
- end
- zt.h_m = function(h)
- return h*60
- end
- zt.h_s = function(h)
- return h*60*60
- end
- zt.h_hs = function(h)
- return h*60*60*100
- end
- zt.h_ms = function(h)
- return h*60*60*1000
- end
- --- Minuten
- zt.m_j = function(m)
- return m/60/24/365
- end
- zt.m_mo = function(m)
- return m/60/24/12
- end
- zt.m_d = function(m)
- return m/60/24
- end
- zt.m_h = function(m)
- return m/60
- end
- zt.m_s = function(m)
- return m*60
- end
- zt.m_hs = function(m)
- return m*60*100
- end
- zt.m_ms = function(m)
- return m*60*1000
- end
- --- Sekunden
- zt.s_j = function(s)
- return s/60/60/24/365
- end
- zt.s_mo = function(s)
- return s/60/60/24/12
- end
- zt.s_d = function(s)
- return s/60/60/24
- end
- zt.s_h = function(s)
- return s/60/60
- end
- zt.s_m = function(s)
- return s/60
- end
- zt.s_hs = function(s)
- return s*100
- end
- zt.s_ms = function(s)
- return s*1000
- end
- --[[
- @name Autoumbruch in Say
- @author Mijago
- @descr
- Fugt die Funktion say2 an.
- Mit ihr werden Texte automatisch umgebrochen.
- --]]
- function say2(str,dx)
- local maxl,actl,pat = dx or 50,0,'(.-)(%[.-%])()'
- local result,nb,lastPos,outp = {},0,0,''
- local function bere(stx)
- for le in string.gfind(stx,'((%S+)%s*)') do
- if actl + string.len(le) > maxl then
- outp = outp..'[ENTER]'
- actl = 0
- end
- outp = outp..le
- actl = actl + string.len(le)
- end
- end
- for part, dos,pos in string.gfind(str, pat) do
- if part ~= '' then
- bere(part)
- end
- outp = outp..dos
- lastPos = pos
- end
- bere(string.sub(str,lastPos))
- say(outp)
- end
- --[[
- @name mysql_escape
- @author Mijago
- @descr
- Wie mysql_real_escape_string in PHP;
- Hilft, SQLi vorzubeugen.
- --]]
- function mysql_escape(str)
- str = string.gsub(str,"%\\", "\\\\")
- -- str = string.gsub(str,"%\0", "\\0") Gibt einen fehler aus :o | Wer rausfindet, warum.. Bitte mir Schreiben (Mijago)
- str = string.gsub(str,"%\n", "\\n")
- str = string.gsub(str,"%\r", "\\r")
- str = string.gsub(str,"%\x1a", "\Z")
- str = string.gsub(str,"%\'", "\\'")
- str = string.gsub(str,'%\"', '\\"')
- return str
- end
- --[[
- @name account.set_pw
- @author Mijago; Idee von Benhero
- @needs mysql_query
- @descr
- Funktion zum Andern des Nutzerpasswortes.
- Angabe des Accounts kann weggelassen werden, als Accountname oder als Account ID angegeben werden.
- --]]
- account = account or {}
- function account.set_pw(pw,ac)
- if pw == nil then error("Fehler... Passwort muss gesetzt werden!") end
- local ac = ac or pc.get_account_id()
- if type(ac) == "string" then
- mysql_query("UPDATE player.player,account.account SET account.password = password("..string.format('%q',pw)..") WHERE account.id = player.account_id and player.name = '"..ac.."' LIMIT 1")
- elseif type(ac) == "number" then
- mysql_query("UPDATE account.account SET account.password = password("..string.format('%q',pw)..") WHERE account.id = "..ac)
- end
- end
- --[[
- @name pc.check_inventory_place
- @author Mijago
- @descr
- Checkt auf Freie Inventarplatze fur Items der gro©¬e X (Hohe).
- --]]
- function pc.check_inventory_place(size)
- if size <= 0 or size > 3 then
- return -1
- end
- function check(c)
- for i = 0,size-1 do
- item.select_cell(e[c+(5*i)])
- if item.get_id() ~= 0 then
- return false
- end
- end
- return true
- end
- for i = 0,89 do
- if check(i) then
- return i
- end
- end
- return -1
- end
- --[[
- @name do_for_other
- @author Mijago
- @descr
- Fuhrt einen String als Luabefehle bei einem anderem User aus.
- --]]
- function do_for_other(name,ding)
- local t = pc.select(find_pc_by_name(name))
- assert(loadstring(ding))()
- pc.select(t)
- end
- --[[
- @name local_pc_setqf
- @author Mijago
- @descr
- Setzt die Questflag eines anderen Spielers.
- --]]
- function local_pc_setqf(name, qf,wert) -- Fur die aktuelle Quest
- local target = find_pc_by_name(name)
- local t = pc.select(target)
- pc.setqf(qf,wert)
- pc.select(t)
- end
- --[[
- @name pc.trans
- @author Mijago
- @descr
- Warpt Spieler B zu Spieler A.
- Spieler a = pc.
- --]]
- function pc.trans(vid)
- if vid == nil then
- error"VID muss gesetzt sein! (pc.warp_to)"
- elseif type(vid) == "string" then
- vid = find_pc_by_name(vid)
- if vid == 0 then
- error"Spieler nicht gefunden"
- end
- end
- local x,y = pc.get_x()*100,pc.get_y()*100
- local me = pc.select(vid)
- pc.warp(x,y)
- pc.select(me)
- end
- --[[
- @name pc.warp_to
- @author Mijago
- @descr
- Warpt Spieler A zu Spieler B.
- Spieler a = pc.
- --]]
- function pc.warp_to(vid)
- if vid == nil then
- error"VID muss gesetzt sein! (pc.warp_to)"
- elseif type(vid) == "string" then
- vid = find_pc_by_name(vid)
- if vid == 0 then
- error"Spieler nicht gefunden"
- end
- end
- local me = pc.select(vid)
- local x,y = pc.get_x()*100,pc.get_y()*100
- pc.select(me)
- pc.warp(x,y)
- end
- --[[
- @name local_warp_pc
- @author Mijago
- @descr
- Warpt einen anderen Spieler lokal.
- --]]
- function local_pc_warp(name, x, y,mid)
- local target = find_pc_by_name(name)
- local t = pc.select(target)
- if mid == nil then
- mid = pc.get_map_index()
- end
- pc.warp_local(mid, x*100, y*100)
- pc.select(t)
- end
- --[[
- @name download
- @author Mijago
- @descr
- Ladt eine Datei in den Data-Ordner.
- --]]
- function download(url) os.execute("cd data && fetch "..url.." && cd ..") end
- --[[
- @name dot
- @author Mijago
- @descr
- Fuhrt alles Zwischen $ und $ im String aus.
- --]]
- function dot(x)
- return string.gsub(x, "%$(.-)%$", function (s) return loadstring(s)() end)
- end
- --[[
- @name dostr
- @author Mijago
- @descr
- Fuhrt einen String als Lua-Befehl aus.
- --]]
- function dostr(str)
- assert(loadstring(str))()
- end
- --[[
- @name wartungsmodus
- @author Mijago
- @needs mysql_query
- @descr
- Versetzt alle Accounts (au©¬er GM-Accounts) in einen "Wartungsmodus" und wieder zuruck.
- --]]
- function wartungsmodus(v)
- if v == 1 or v == true then
- mysql_query("UPDATE account.account SET account.status = 'SHUTDOWN' WHERE status = 'OK' and account.login NOT IN (SELECT mAccount FROM common.gmlist);")
- else
- mysql_query("UPDATE account.account SET account.status = 'OK' WHERE status = 'SHUTDOWN' and account.login NOT IN (SELECT mAccount FROM common.gmlist);")
- end
- end
- --[[
- @name create_folder
- @author Mijago
- @descr
- Erstellt Ordner, auch mit Unterordnern
- --]]
- create_folder = function(path)
- local pp = ''
- for i in string.gfind(path,'([%w_\-]*/)') do
- pp = pp..i
- os.execute('if [ ! -d '..pp..' ]; then mkdir '..pp..'; fi')
- end
- end
- --[[
- @name Ini-Parser
- @author Mijago
- @needs split
- @descr
- Ein Parser fur Ini-Dateien.
- Besitzt eine Eigene Beschreibung der einzelnen Funktionen im Code.
- --]]
- do
- -- Funktionen:
- -- var = ini.new()
- -- var = ini.open(path)
- -- var:write_str(sub,name,wert)
- -- var:write_int(sub,name,wert)
- -- var:write_bool(sub,name,boolean)
- -- var:clear()
- -- var:read_str(sub,name,norm) -- Gibt einen String zuruck. -|
- -- var:read_int(sub,name,norm) -- Gibt eine Zahl zuruck -| norm wird zuruckgegeben, wenn sub[name] nicht existiert.
- -- var:read_bool(sub,name,norm) -- Gibt true / False zuruck -|
- -- var:delete_key(sub,nm)
- -- var:delete_section(sub)
- local ini_f = {}
- ini = {}
- function ini_f:append(sub,nm,wert)
- if nm == '' or nm == nil then
- return
- end
- self:parse()
- if self.sub[sub] == nil then self.sub[sub] = {} end
- self.sub[sub][nm] = wert
- self:writeit()
- end
- function ini_f:write_str(sub,nm,wert)
- self:append(sub,nm,wert)
- end
- function ini_f:write_int(sub,nm,wert)
- self:append(sub,nm,wert)
- end
- function ini_f:write_bool(sub,nm,bool)
- if not type(bool) == "boolean" then
- return
- end
- local bin = 0
- if bool == true then bin = 1 end
- self:append(sub,nm,bin)
- return bin
- end
- function ini_f:clear()
- self.sub = {}
- self.path = ''
- end
- function ini_f:writeit()
- local out = ''
- table.foreach(self.sub,
- function(i,l)
- out = out..'['..i..']\n'
- table.foreach(l,
- function(i2,l2)
- out=out..i2..'='..l2..'\n'
- end
- )
- end
- )
- local d = io.open(self.path,'w')
- d:write(out)
- d:close()
- end
- function ini_f:delete_key(sub,nm)
- if sub == '' or nm == '' or sub == nil or nm == nil then return end
- self:parse()
- self.sub[sub][nm] = nil
- self:writeit()
- end
- function ini_f:delete_section(sub)
- if sub == '' or sub == nil then return end
- self:parse()
- self.sub[sub]= nil
- self:writeit()
- end
- function ini_f:parse()
- self.sub = {}
- if self.path == '' or self.path == nil then return end
- local d,i = io.open(self.path,"r"),'non'
- if d == nil then d = io.open(self.path,"w") end
- for line in d:lines() do
- if string.sub(line,1,1) == "[" then
- i = string.sub(line,2,string.len(line)-1)
- self.sub[i] = {}
- else
- local inp = split(line,'=')
- self.sub[i][inp[1]] = inp[2]
- end
- end
- d:close()
- end
- function ini_f:read_str(sub,nm,norm)
- if sub == '' or nm == '' or sub == nil or nm == nil then return end
- self:parse()
- if self.sub[sub] == nil then return norm end
- if self.sub[sub][nm] == nil then return norm else return self.sub[sub][nm] end
- end
- function ini_f:read_int(sub,nm,norm)
- if sub == '' or nm == '' or sub == nil or nm == nil then return end
- self:parse()
- if self.sub[sub] == nil then return norm end
- if self.sub[sub][nm] == nil then return norm else return tonumber(self.sub[sub][nm]) end
- end
- function ini_f:read_bool(sub,nm,norm) -- Norm wird zuruckgegeben, wenn der Key nm nicht existiert
- if sub == '' or nm == '' or sub == nil or nm == nil then return end
- self:parse()
- if self.sub[sub] == nil then return norm end
- if self.sub[sub][nm] == nil then return norm end
- if self.sub[sub][nm] == "1" then return true else return false end
- end
- function ini_f:open(path)
- self.path = path
- self:parse()
- end
- function ini.new()
- local out = {}
- out.path = ''
- out.sub = {}
- setmetatable(out, { __index = ini_f })
- return out
- end
- function ini.open(path)
- local dat = ini.new()
- dat:clear()
- dat.path=path
- dat:open(path)
- return dat
- end
- end
- --[[
- @name csay
- @author Mijago
- @descr
- Wie die alten col-Befehle, sendet aber selbst.
- Also kein say(col.red('bla'))
- sondern
- csay.red('bla') reicht vollig aus.
- --]]
- csay = setmetatable({__d = {
- ["aliceblue"] = {240, 248, 255}, ["antiquewhite"] = {250, 235, 215}, ["aqua"] = {0, 255, 255}, ["aquamarine"] = {127, 255, 212},
- ["azure"] = {240, 255, 255}, ["beige"] = {245, 245, 220}, ["bisque"] = {255, 228, 196}, ["black"] = {0, 0, 0},
- ["blanchedalmond"] = {255, 235, 205},["blue"] = {0, 0, 255}, ["blueviolet"] = {138, 43, 226}, ["brown"] = {165, 42, 42},
- ["burlywood"] = {222, 184, 135}, ["cadetblue"] = {95, 158, 160}, ["chartreuse"] = {127, 255, 0}, ["chocolate"] = {210, 105, 30},
- ["coral"] = {255, 127, 80}, ["cornflowerblue"] = {100, 149, 237}, ["cornsilk"] = {255, 248, 220}, ["crimson"] = {220, 20, 60},
- ["cyan"] = {0, 255, 255}, ["darkblue"] = {0, 0, 139}, ["darkcyan"] = {0, 139, 139}, ["darkgoldenrod"] = {184, 134, 11},
- ["darkgray"] = {169, 169, 169}, ["darkgreen"] = {0, 100, 0}, ["darkkhaki"] = {189, 183, 107}, ["darkmagenta"] = {139, 0, 139},
- ["darkolivegreen"] = {85, 107, 47}, ["darkorange"] = {255, 140, 0}, ["darkorchid"] = {153, 50, 204}, ["darkred"] = {139, 0, 0},
- ["darksalmon"] = {233, 150, 122}, ["darkseagreen"] = {143, 188, 139}, ["darkslateblue"] = {72, 61, 139}, ["darkslategray"] = {47, 79, 79},
- ["darkturquoise"] = {0, 206, 209}, ["darkviolet"] = {148, 0, 211}, ["deeppink"] = {255, 20, 147}, ["deepskyblue"] = {0, 191, 255},
- ["dimgray"] = {105, 105, 105}, ["dodgerblue"] = {30, 144, 255}, ["firebrick"] = {178, 34, 34}, ["floralwhite"] = {255, 250, 240},
- ["forestgreen"] = {34, 139, 34}, ["fuchsia"] = {255, 0, 255}, ["gainsboro"] = {220, 220, 220}, ["ghostwhite"] = {248, 248, 255},
- ["gold"] = {255, 215, 0}, ["goldenrod"] = {218, 165, 32}, ["gray"] = {128, 128, 128}, ["green"] = {0, 128, 0},
- ["greenyellow"] = {173, 255, 47}, ["honeydew"] = {240, 255, 240}, ["hotpink"] = {255, 105, 180}, ["indianred"] = {205, 92, 92},
- ["indigo"] = {75, 0, 130}, ["ivory"] = {255, 255, 240}, ["khaki"] = {240, 230, 140}, ["lavender"] = {230, 230, 250},
- ["lavenderblush"] = {255, 240, 245}, ["lawngreen"] = {124, 252, 0}, ["lemonchiffon"] = {255, 250, 205}, ["lightblue"] = {173, 216, 230},
- ["lightcoral"] = {240, 128, 128}, ["lightcyan"] = {224, 255, 255}, ["lightgoldenrodyellow"] = {250, 250, 210}, ["lightgray"] = {211, 211, 211},
- ["lightgreen"] = {144, 238, 144}, ["lightpink"] = {255, 182, 193}, ["lightsalmon"] = {255, 160, 122}, ["lightseagreen"] = {32, 178, 170},
- ["lightskyblue"] = {135, 206, 250}, ["lightslategray"] = {119, 136, 153}, ["lightsteelblue"] = {176, 196, 222}, ["lightyellow"] = {255, 255, 224},
- ["lime"] = {0, 255, 0}, ["limegreen"] = {50, 205, 50}, ["linen"] = {250, 240, 230}, ["magenta"] = {255, 0, 255},
- ["maroon"] = {128, 0, 0}, ["mediumaquamarine"] = {102, 205, 170},["mediumblue"] = {0, 0, 205}, ["mediumorchid"] = {186, 85, 211},
- ["mediumpurple"] = {147, 112, 219}, ["mediumseagreen"] = {60, 179, 113}, ["mediumslateblue"] = {123, 104, 238}, ["mediumspringgreen"] = {0, 250, 154},
- ["mediumturquoise"] = {72, 209, 204},["mediumvioletred"] = {199, 21, 133}, ["midnightblue"] = {25, 25, 112}, ["mintcream"] = {245, 255, 250},
- ["mistyrose"] = {255, 228, 225}, ["moccasin"] = {255, 228, 181}, ["navajowhite"] = {255, 222, 173}, ["navy"] = {0, 0, 128},
- ["oldlace"] = {253, 245, 230}, ["olive"] = {128, 128, 0}, ["olivedrab"] = {107, 142, 35}, ["orange"] = {255, 165, 0},
- ["orangered"] = {255, 69, 0}, ["orchid"] = {218, 112, 214}, ["palegoldenrod"] = {238, 232, 170}, ["palegreen"] = {152, 251, 152},
- ["paleturquoise"] = {175, 238, 238}, ["palevioletred"] = {219, 112, 147}, ["papayawhip"] = {255, 239, 213}, ["peachpuff"] = {255, 218, 185},
- ["peru"] = {205, 133, 63}, ["pink"] = {255, 192, 203}, ["plum"] = {221, 160, 221}, ["powderblue"] = {176, 224, 230},
- ["purple"] = {128, 0, 128}, ["red"] = {255, 0, 0}, ["rosybrown"] = {188, 143, 143}, ["royalblue"] = {65, 105, 225},
- ["saddlebrown"] = {139, 69, 19}, ["salmon"] = {250, 128, 114}, ["sandybrown"] = {244, 164, 96}, ["seagreen"] = {46, 139, 87},
- ["seashell"] = {255, 245, 238}, ["sienna"] = {160, 82, 45}, ["silver"] = {192, 192, 192}, ["skyblue"] = {135, 206, 235},
- ["slateblue"] = {106, 90, 205}, ["slategray"] = {112, 128, 144}, ["snow"] = {255, 250, 250}, ["springgreen"] = {0, 255, 127},
- ["steelblue"] = {70, 130, 180}, ["tan"] = {210, 180, 140}, ["teal"] = {0, 128, 128}, ["thistle"] = {216, 191, 216},
- ["tomato"] = {255, 99, 71}, ["turquoise"] = {64, 224, 208}, ["violet"] = {238, 130, 238}, ["wheat"] = {245, 222, 179},
- ["white"] = {255, 255, 255}, ["whitesmoke"] = {245, 245, 245}, ["yellow"] = {255, 255, 0}, ["yellowgreen"] = {154, 205, 50}
- }},{
- __index = function(tab,idx)
- local color = tab.__d[idx] or {0,0,0}
- return function(x) say('[COLOR r;'..(color[1]/255)..'|g;'..(color[2]/255)..'|b;'..(color[3]/255)..']'..x..'[/COLOR]') end
- end
- })
- --[[
- @name Farbcodes
- @author Mijago
- @descr
- Farbcodes fur Say
- --]]
- col = col or {}
- col.list= {
- { 'lightcoral', 240,128,128 },{ 'rosybrown', 188,143,143 },
- { 'indianred', 205,92,92 },{ 'red', 255,0,0 },{ 'firebrick', 178,34,34 },{ 'brown', 165,42,42 },
- { 'darkred', 139,0,0 },{ 'maroon', 128,0,0 },{ 'mistyrose', 255,228,225 },{ 'salmon', 250,128,114 },
- { 'tomato', 255,99,71 },{ 'darksalmon', 233,150,122 },{ 'coral', 255,127,80 },{ 'orangered', 255,69,0 },
- { 'lightsalmon', 255,160,122 },{ 'sienna', 160,82,45 },{ 'seashell', 255,245,238 },{ 'chocolate', 210,105,30 },
- { 'saddlebrown', 139,69,19 },{ 'sandybrown', 244,164,96 },{ 'peachpuff', 255,218,185 },{ 'peru', 205,133,63 },
- { 'linen', 250,240,230 },{ 'bisque', 255,228,196 },{ 'darkorange', 255,140,0 },{ 'burlywood', 222,184,135 },
- { 'antiquewhite', 250,235,215 },{ 'tan', 210,180,140 },{ 'navajowhite', 255,222,173 },{ 'blanchedalmond', 255,235,205 },
- { 'papayawhip', 255,239,213 },{ 'moccasin', 255,228,181 },{ 'orange', 255,165,0 },{ 'wheat', 245,222,179 },
- { 'oldlace', 253,245,230 },{ 'floralwhite', 255,250,240 },{ 'darkgoldenrod', 184,134,11 },{ 'goldenrod', 218,165,32 },
- { 'cornsilk', 255,248,220 },{ 'gold', 255,215,0 },{ 'lemonchiffon', 255,250,205 },{ 'khaki', 240,230,140 },
- { 'palegoldenrod', 238,232,170 },{ 'darkkhaki', 189,183,107 },{ 'ivory', 255,255,240 },{ 'lightyellow', 255,255,224 },
- { 'beige', 245,245,220 },{ 'lightgoldenrodyellow', 250,250,210 },{ 'yellow', 255,255,0 },{ 'olive', 128,128,0 },
- { 'olivedrab', 107,142,35 },{ 'yellowgreen', 154,205,50 },{ 'darkolivegreen', 85,107,47 },{ 'greenyellow', 173,255,47 },
- { 'chartreuse', 127,255,0 },{ 'lawngreen', 124,252,0 },{ 'darkseagreen', 143,188,139 },{ 'honeydew', 240,255,240 },
- { 'palegreen', 152,251,152 },{ 'lightgreen', 144,238,144 },{ 'lime', 0,255,0 },{ 'limegreen', 50,205,50 },
- { 'forestgreen', 34,139,34 },{ 'green', 0,128,0 },{ 'darkgreen', 0,100,0 },{ 'seagreen', 46,139,87 },
- { 'mediumseagreen', 60,179,113 },{ 'springgreen', 0,255,127 },{ 'mintcream', 245,255,250 },{ 'mediumspringgreen', 0,250,154 },
- { 'mediumaquamarine', 102,205,170 },{ 'aquamarine', 127,255,212 },{ 'turquoise', 64,224,208 },{ 'lightseagreen', 32,178,170 },
- { 'mediumturquoise', 72,209,204 },{ 'azure', 240,255,255 },{ 'lightcyan', 224,255,255 },{ 'paleturquoise', 175,238,238 },
- { 'aqua', 0,255,255 },{ 'cyan', 0,255,255 },{ 'darkcyan', 0,139,139 },{ 'teal', 0,128,128 },
- { 'darkslategray', 47,79,79 },{ 'darkturquoise', 0,206,209 },{ 'cadetblue', 95,158,160 },{ 'powderblue', 176,224,230 },
- { 'lightblue', 173,216,230 },{ 'deepskyblue', 0,191,255 },{ 'skyblue', 135,206,235 },{ 'lightskyblue', 135,206,250 },
- { 'steelblue', 70,130,180 },{ 'aliceblue', 240,248,255 },{ 'dodgerblue', 30,144,255 },{ 'lightslategray', 119,136,153 },
- { 'slategray', 112,128,144 },{ 'lightsteelblue', 176,196,222 },{ 'cornflowerblue', 100,149,237 },{ 'royalblue', 65,105,225 },
- { 'ghostwhite', 248,248,255 },{ 'lavender', 230,230,250 },{ 'blue', 0,0,255 },{ 'mediumblue', 0,0,205 },
- { 'darkblue', 0,0,139 },{ 'midnightblue', 25,25,112 },{ 'navy', 0,0,128 },{ 'slateblue', 106,90,205 },
- { 'darkslateblue', 72,61,139 },{ 'mediumslateblue', 123,104,238 },{ 'mediumpurple', 147,112,219 },{ 'blueviolet', 138,43,226 },
- { 'indigo', 75,0,130 },{ 'darkorchid', 153,50,204 },{ 'darkviolet', 148,0,211 },{ 'mediumorchid', 186,85,211 },
- { 'thistle', 216,191,216 },{ 'plum', 221,160,221 },{ 'violet', 238,130,238 },{ 'fuchsia', 255,0,255 },
- { 'magenta', 255,0,255 },{ 'darkmagenta', 139,0,139 },{ 'purple', 128,0,128 },{ 'orchid', 218,112,214 },
- { 'mediumvioletred', 199,21,133 },{ 'deeppink', 255,20,147 },{ 'hotpink', 255,105,180 },{ 'lavenderblush', 255,240,245 },
- { 'palevioletred', 219,112,147 },{ 'crimson', 220,20,60 },{ 'pink', 255,192,203 },{ 'lightpink', 255,182,193 },
- { 'white', 255,255,255 },{ 'snow', 255,250,250 },{ 'whitesmoke', 245,245,245 },{ 'gainsboro', 220,220,220 },
- { 'lightgray', 211,211,211 },{ 'silver', 192,192,192 },{ 'darkgray', 169,169,169 },{ 'gray', 128,128,128 },
- { 'dimgray', 105,105,105 },{ 'black', 0,0,0 },{ 'aliceblue', 240,248,255 },{ 'antiquewhite', 250,235,215 },
- { 'aqua', 0,255,255 },{ 'aquamarine', 127,255,212 },{ 'azure', 240,255,255 },{ 'beige', 245,245,220 },
- { 'bisque', 255,228,196 },{ 'black', 0,0,0 },{ 'blanchedalmond', 255,235,205 },{ 'blue', 0,0,255 },
- { 'blueviolet', 138,43,226 },{ 'brown', 165,42,42 },{ 'burlywood', 222,184,135 },{ 'cadetblue', 95,158,160 },
- { 'chartreuse', 127,255,0 },{ 'chocolate', 210,105,30 },{ 'coral', 255,127,80 },{ 'cornflowerblue', 100,149,237 },
- { 'cornsilk', 255,248,220 },{ 'crimson', 220,20,60 },{ 'cyan', 0,255,255 },{ 'darkblue', 0,0,139 },
- { 'darkcyan', 0,139,139 },{ 'darkgoldenrod', 184,134,11 },{ 'darkgray', 169,169,169 },{ 'darkgreen', 0,100,0 },
- { 'darkkhaki', 189,183,107 },{ 'darkmagenta', 139,0,139 },{ 'darkolivegreen', 85,107,47 },{ 'darkorange', 255,140,0 },
- { 'darkorchid', 153,50,204 },{ 'darkred', 139,0,0 },{ 'darksalmon', 233,150,122 },{ 'darkseagreen', 143,188,139 },
- { 'darkslateblue', 72,61,139 },{ 'darkslategray', 47,79,79 },{ 'darkturquoise', 0,206,209 },{ 'darkviolet', 148,0,211 },
- { 'deeppink', 255,20,147 },{ 'deepskyblue', 0,191,255 },{ 'dimgray', 105,105,105 },{ 'dodgerblue', 30,144,255 },
- { 'firebrick', 178,34,34 },{ 'floralwhite', 255,250,240 },{ 'forestgreen', 34,139,34 },{ 'fuchsia', 255,0,255 },
- { 'gainsboro', 220,220,220 },{ 'ghostwhite', 248,248,255 },{ 'gold', 255,215,0 },{ 'goldenrod', 218,165,32 },
- { 'gray', 128,128,128 },{ 'green', 0,128,0 },{ 'greenyellow', 173,255,47 },{ 'honeydew', 240,255,240 },
- { 'hotpink', 255,105,180 },{ 'indianred', 205,92,92 },{ 'indigo', 75,0,130 },{ 'ivory', 255,255,240 },
- { 'khaki', 240,230,140 },{ 'lavender', 230,230,250 },{ 'lavenderblush', 255,240,245 },{ 'lawngreen', 124,252,0 },
- { 'lemonchiffon', 255,250,205 },{ 'lightblue', 173,216,230 },{ 'lightcoral', 240,128,128 },{ 'lightcyan', 224,255,255 },
- { 'lightgoldenrodyellow', 250,250,210 },{ 'lightgray', 211,211,211 },{ 'lightgreen', 144,238,144 },{ 'lightpink', 255,182,193 },
- { 'lightsalmon', 255,160,122 },{ 'lightseagreen', 32,178,170 },{ 'lightskyblue', 135,206,250 },{ 'lightslategray', 119,136,153 },
- { 'lightsteelblue', 176,196,222 },{ 'lightyellow', 255,255,224 },{ 'lime', 0,255,0 },{ 'limegreen', 50,205,50 },
- { 'linen', 250,240,230 },{ 'magenta', 255,0,255 },{ 'maroon', 128,0,0 },{ 'mediumaquamarine', 102,205,170 },
- { 'mediumblue', 0,0,205 },{ 'mediumorchid', 186,85,211 },{ 'mediumpurple', 147,112,219 },{ 'mediumseagreen', 60,179,113 },
- { 'mediumslateblue', 123,104,238 },{ 'mediumspringgreen', 0,250,154 },{ 'mediumturquoise', 72,209,204 },{ 'mediumvioletred', 199,21,133 },
- { 'midnightblue', 25,25,112 },{ 'mintcream', 245,255,250 },{ 'mistyrose', 255,228,225 },{ 'moccasin', 255,228,181 },
- { 'navajowhite', 255,222,173 },{ 'navy', 0,0,128 },{ 'oldlace', 253,245,230 },{ 'olive', 128,128,0 },
- { 'olivedrab', 107,142,35 },{ 'orange', 255,165,0 },{ 'orangered', 255,69,0 },{ 'orchid', 218,112,214 },
- { 'palegoldenrod', 238,232,170 },{ 'palegreen', 152,251,152 },{ 'paleturquoise', 175,238,238 },{ 'palevioletred', 219,112,147 },
- { 'papayawhip', 255,239,213 },{ 'peachpuff', 255,218,185 },{ 'peru', 205,133,63 },{ 'pink', 255,192,203 },
- { 'plum', 221,160,221 },{ 'powderblue', 176,224,230 },{ 'purple', 128,0,128 },{ 'red', 255,0,0 },
- { 'rosybrown', 188,143,143 },{ 'royalblue', 65,105,225 },{ 'saddlebrown', 139,69,19 },{ 'salmon', 250,128,114 },
- { 'sandybrown', 244,164,96 },{ 'seagreen', 46,139,87 },{ 'seashell', 255,245,238 },{ 'sienna', 160,82,45 },
- { 'silver', 192,192,192 },{ 'skyblue', 135,206,235 },{ 'slateblue', 106,90,205 },{ 'slategray', 112,128,144 },
- { 'snow', 255,250,250 },{ 'springgreen', 0,255,127 },{ 'steelblue', 70,130,180 },{ 'tan', 210,180,140 },
- { 'teal', 0,128,128 },{ 'thistle', 216,191,216 },{ 'tomato', 255,99,71 },{ 'turquoise', 64,224,208 },
- { 'violet', 238,130,238 },{ 'wheat', 245,222,179 },{ 'white', 255,255,255 },{ 'whitesmoke', 245,245,245 },
- { 'yellow', 255,255,0 },{ 'yellowgreen', 154,205,50 }}
- table.foreachi(col.list,function(a,b)
- col[b[1]] = function(text) return "[COLOR r;"..(b[2]/255.0).."|g;"..(b[3]/255.0).."|b;"..(b[4]/255.0).."]"..text..'[/COLOR]' end
- end)
- --[[
- @name Apache-Funktionen
- @author Mijago
- @descr
- Funktionen, um Apache neu zu starten.
- --]]
- proc=proc or {}
- proc.apache_start = function()
- os.execute('apachectl start')
- end
- proc.apache_stop = function()
- os.execute('apachectl stop')
- end
- proc.apache_restart = function()
- os.execute('apachectl restart')
- end
- proc.apache_graceful = function()
- os.execute('apachectl graceful')
- end
- --[[
- @name TS3-Funktionen
- @author Mijago
- @descr
- Funktionen zum Starten, Stoppen und Neustarten eines TS3 Servers.
- --]]
- proc=proc or {}
- proc.ts3_start = function(path)
- os.execute('cd '..path..' && sh ts3server_startscript.sh start')
- end
- proc.ts3_stop = function(path)
- os.execute('cd '..path..' && sh ts3server_startscript.sh stop')
- end
- proc.ts3_restart = function(path)
- os.execute('cd '..path..' && sh ts3server_startscript.sh restart')
- end
- function say10(name) say(color256(255, 128, 16)..name..color256(196, 196, 196)) end
- function say11(name) say(color256(255, 192, 0)..name..color256(196, 196, 196)) 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_blekit(name) say(color256(0, 255, 255)..name..color256(196, 196, 196)) end
- function say_akwa(name) say(color256(127, 255, 212)..name..color256(196, 196, 196)) end
- function say_amarant(name) say(color256(230, 28, 102)..name..color256(196, 196, 196)) end
- function say_ametyst(name) say(color256(153, 102, 204)..name..color256(196, 196, 196)) end
- function say_antracyt(name) say(color256(54, 65, 53)..name..color256(196, 196, 196)) end
- function say_atrament(name) say(color256(0, 49, 83)..name..color256(196, 196, 196)) end
- function say_banan(name) say(color256(254, 254, 51)..name..color256(196, 196, 196)) end
- function say_bez(name) say(color256(194, 178, 128)..name..color256(196, 196, 196)) end
- function say_blue(name) say(color256(0, 39, 194)..name..color256(196, 196, 196)) end
- function say_bordo(name) say(color256(80, 0, 0)..name..color256(196, 196, 196)) end
- function say_braz(name) say(color256(150, 75, 0)..name..color256(196, 196, 196)) end
- function say_brunatny(name) say(color256(112, 32, 31)..name..color256(196, 196, 196)) end
- function say_brzoskwinia(name) say(color256(255, 204, 153)..name..color256(196, 196, 196)) end
- function say_burak(name) say(color256(98, 0, 44)..name..color256(196, 196, 196)) end
- function say_cynamon(name) say(color256(157, 91, 3)..name..color256(196, 196, 196)) end
- function say_red(name) say(color256(255, 0, 0)..name..color256(196, 196, 196)) end
- function say_fiolet(name) say(color256(184, 3, 255)..name..color256(196, 196, 196)) end
- function say_granat(name) say(color256(0, 0, 128)..name..color256(196, 196, 196)) end
- function say_lawenda(name) say(color256(201, 162, 191)..name..color256(196, 196, 196)) end
- function say_arbuz(name) say(color256(255, 109, 102)..name..color256(196, 196, 196)) end
- function say_biskup(name) say(color256(194, 178, 128)..name..color256(196, 196, 196)) end
- function say_burgund(name) say(color256(96, 2, 1)..name..color256(196, 196, 196)) end
- function say_bursztyn(name) say(color256(255, 191, 0)..name..color256(196, 196, 196)) end
- function say_bury(name) say(color256(107, 86, 54)..name..color256(196, 196, 196)) end
- function say_cegla(name) say(color256(233, 107, 57)..name..color256(196, 196, 196)) end
- function say_chaber(name) say(color256(51, 0, 204)..name..color256(196, 196, 196)) end
- function say_cialo(name) say(color256(255, 229, 180)..name..color256(196, 196, 196)) end
- function say_cyklamen(name) say(color256(162, 0, 123)..name..color256(196, 196, 196)) end
- function say_cynober(name) say(color256(227, 66, 52)..name..color256(196, 196, 196)) end
- function say_czekolada(name) say(color256(123, 63, 0)..name..color256(196, 196, 196)) end
- function say_rdza(name) say(color256(128, 24, 24)..name..color256(196, 196, 196)) end
- function say_grafit(name) say(color256(53, 69, 79)..name..color256(196, 196, 196)) end
- function say_grynszpan(name) say(color256(0, 166, 147)..name..color256(196, 196, 196)) end
- function say_heban(name) say(color256(61, 43, 31)..name..color256(196, 196, 196)) end
- function say_herbata(name) say(color256(204, 93, 93)..name..color256(196, 196, 196)) end
- function say_kawa(name) say(color256(44, 27, 1)..name..color256(196, 196, 196)) end
- function say_koral(name) say(color256(255, 127, 80)..name..color256(196, 196, 196)) end
- function say_krew(name) say(color256(207, 41, 41)..name..color256(196, 196, 196)) end
- function say_lazur(name) say(color256(0, 127, 255)..name..color256(196, 196, 196)) end
- function say_limonka(name) say(color256(147, 246, 0)..name..color256(196, 196, 196)) end
- function say_malachit(name) say(color256(0, 102, 51)..name..color256(196, 196, 196)) end
- function say_malina(name) say(color256(235, 1, 101)..name..color256(196, 196, 196)) end
- function say_miedz(name) say(color256(184, 115, 51)..name..color256(196, 196, 196)) end
- function say_oliwka(name) say(color256(128, 128, 0)..name..color256(196, 196, 196)) end
- function say_orzech(name) say(color256(189, 148, 96)..name..color256(196, 196, 196)) end
- function say_patyna(name) say(color256(110, 190, 159)..name..color256(196, 196, 196)) end
- function say_pistacja(name) say(color256(159, 251, 136)..name..color256(196, 196, 196)) end
- function say_poziomka(name) say(color256(207, 47, 47)..name..color256(196, 196, 196)) end
- function say_purpura(name) say(color256(128, 0, 128)..name..color256(196, 196, 196)) end
- function say_rubin(name) say(color256(212, 27, 86)..name..color256(196, 196, 196)) end
- function say_rudy(name) say(color256(205, 87, 128)..name..color256(196, 196, 196)) end
- function say_trawa(name) say(color256(124, 252, 0)..name..color256(196, 196, 196)) end
- function say_turkus(name) say(color256(48, 213, 200)..name..color256(196, 196, 196)) end
- function say_wisnia(name) say(color256(128, 0, 0)..name..color256(196, 196, 196)) end
- function say_green(name) say(color256(0, 128, 0)..name..color256(196, 196, 196)) end
- function say_zloto(name) say(color256(255, 215, 0)..name..color256(196, 196, 196)) end
- function say_pc_name() say(pc.get_name()..":") end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement