[SERVICE] Die Questkontrolle

08/05/2014 21:36 .Vegas™#10411
Kann mir jemand da helfen bitte ???
PHP Code:
quest tele begin  
    state start begin  
        when 70021.
use begin  
            say_title
("Farmmap")  
            
say_green("Du willst für dein Eqiupment was tuhen?")  
            
say_green("Dann Porte ich dich jetzt auf die +++++ Farmmap!")  
            
say_green("Viel Spaß beim Farmen.")  
            
say_reward("Willst du wirklich dorthin?")  
          
        
local s = select("Ja", "Nein")  
            if 
s == 1 then  
                pc
.warp(9728000,1024000)  
            else  
                return  
            
end  
        end   
    end   
end 
Es geht alles aber der will sich nicht porten.

lg.
.Vegas
08/05/2014 21:43 [-Lee-]#10412
Quote:
Originally Posted by [-Lee-] View Post
PHP Code:
define BLOCK_DOOR 20387 
define DUNGEON_MAN 20385 
define DUNGEON_MAN_DIR 0 
define DUNGEON_MAP_INDEX 351 
define ENTER_LIMIT_TIME 30 
define ENTRY_MAN 20394 
define ENTRY_MAP_INDEX 62 
define FINAL_BOSS 6091 
define LEVEL2_KEY 30329 
define LEVEL2_STONE 20386 
define LEVEL4_TARGET 6051 
define LEVEL5_REALKEY 30330 
define LEVEL5_STONE 20386 
define LEVEL5_GEN_LIMIT 100 
define LEVEL6_TARGET 8057 
define LEVEL_CUT 100 
define MOB_REGEN_FILE_PATH 
= "data/dungeon/flame_dungeon/" 
define IN_DOOR 20388 
define NPC_REGEN_FILE_PATH 
= "data/dungeon/flame_dungeon/npc.txt" 
define TICKET_GROUP 10033 
define LIMITED_PASS_TICKET 71175 

quest flame_dungeon begin 
    state start begin     
        when ENTRY_MAN
.click with pc.get_level() >= 90 begin 
            pc
.give_item2(LIMITED_PASS_TICKET, 1) 
            
set_state(run) 
        
end 
    end 

    state run begin 
     
    
function setting() 
        return  
        { 
        [
"bossroom_entry_pos"] = {8109,6867}, 
        [
"boss_pos"] = {686,637}, 
        [
"doors_pos"] = { 
            {
320,394}, 
            {
293,359}, 
            {
333,321}, 
            {
378,320}, 
            {
400,355}, 
            {
394,401} 
        }, 
        [
"idoors_pos"] = { 
            {
268,447}, 
            {
234,359}, 
            {
300,264}, 
            {
454,217}, 
            {
470,355}, 
            {
467,469} 
        }, 
        [
"doors_dir"] = {135,90,210,152,90,223}, 
        [
"idoors_dir"] = {135,90,210,135,90,239}, 
        [
"dungeon_entry_pos"] = {7762, 6739},-- 던전에 처음 들어오는 곳 
        
["DUNGEON_MAN_bpos"] = {690,722}, 
        [
"DUNGEON_MAN_pos"] = {354,362}, 
        [
"LEVEL2_STONE_pos"] = {195,352}, 
        [
"LEVEL4_TARGET_pos"] = {470,175}, 
        [
"LEVEL5_STONE_pos"] = { 
                {
486, 345}, 
                {
511, 336}, 
                {
525, 349}, 
                {
521, 365}, 
                {
503, 372}, 
                {
486, 365}, 
                {
500, 354} 
        }, 
        [
"LEVEL6_TARGET_pos"] = {511,480}, 
        [
"outside_entry_pos"] = {6142,7068}, --입장시켜주는애 서있는 곳 
        
["YAK_pos"] = {376, 397} -- 약환 부하 
         
        
} 
    
end 
    
function is_flamed(idx) -- 적룡성에 있는지 확인  
        
return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000 
    end 
    
function make_dungeon() -- &#45912;전 만들기 
        
local setting = flame_dungeon.setting() 
        
d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2]) 
        -- 
d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR) 
        -- 
d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2]) 
        
d.regen_file(NPC_REGEN_FILE_PATH) 
        
d.setf("level",0) 
        for 
i=1,6 do 
            
d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i])) 
        
end 
        
for i=1,6 do 
            
d.set_unique("idoor"..i, d.spawn_mob_ac_dir(IN_DOOR, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i])) 
        
end 
        d
.setf("clear_count",0) 
        
d.setf("started",0) 
        
d.setf("dungeon_enter",0) -- &#51221;상적으로 입장했는지? // 비정상 : 0 정상 : 1 // 튕기면 입장제한시간을 기록 안함 
    
end     
    
function go_boss() -- &#48372;스룸 가기  
        
local setting = flame_dungeon.setting() 
        if 
pc.get_level() < 104 then --&#47112;벨확인 
            
-- syschat(gameforge.flame_dungeon._580_notice) 
            
say(gameforge.flame_dungeon._580_notice) 
            return 
        else 
            if 
pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- &#49440;행퀘스트 확인 
                
-- say_title(gameforge.flame_dungeon._010_say) 
                
say(gameforge.flame_dungeon._010_say) 
                
local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select) 
                if 
warp == 1 then 
                    d
.setf("level",17) 
                    
d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2]) 
                    
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt") 
                --    
d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2]) 
                    
d.spawn_mob(FINAL_BOSS,setting.boss_pos[1],setting.boss_pos[2]) 
                
end 
            
else  
                -- 
syschat(gameforge.flame_dungeon._040_notice) 
                
say(gameforge.flame_dungeon._040_notice) 
                return 
            
end 
        end 
    end 
    
function level_clear() -- &#47112;벨 깼을때, 리젠클리어, 지역클리어 
        
d.setf("level",0) 
        
d.clear_regen() 
        
d.purge_area(750000,620000,817400,689400) -- &#47605;전체 -- d.purge() 사용고려 
    
end 
    
function clear_timer(inx) -- &#53440;이머 다지우기 
        
clear_server_timer ("flame_dungeon_0m_left_timer", inx) 
        
clear_server_timer ("flame_dungeon_1m_left_timer", inx) 
        
clear_server_timer ("flame_dungeon_5m_left_timer", inx) 
        
clear_server_timer ("flame_dungeon_10m_left_timer", inx) 
        
clear_server_timer ("flame_dungeon_15m_left_timer", inx) 
        
clear_server_timer ("flame_dungeon_30m_left_timer", inx) 
        
clear_server_timer ("flame_dungeon_45m_left_timer", inx) 
        
clear_server_timer ("killed_A_1", inx) 
        
clear_server_timer ("killed_A_2", inx) 
        
clear_server_timer ("flame_dungeon_ticket_remove", inx)     
    
end 
     
        when login begin 
            local idx 
= pc.get_map_index() 
            
local setting = flame_dungeon.setting() 
            if 
idx == DUNGEON_MAP_INDEX then 
                pc
.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX) 
            elseif 
flame_dungeon.is_flamed(idx) then -- &#45912;전 입장, 보스룸 입장 예외 
            
------------------------------------------------------------------------------------------------------------------------------------------------------ 
            --&
#50500;래의 두줄중 위에줄을 사용하면 던전에서 종료했을경우 다시 원래 위치로 돌아온다. 아래줄을 활성화 하면 던전에서 종료했을 경우 던전 밖으로 나가게 된다. 
            
--&#45912;전에서 종료했을 경우 다시 원래 위치로 돌아올 경우, 던전에서 나가는 방법을 만들어줘야 하기 때문에 적룡성비의 나가기란 옵션을 활성화 해줘야 한다. 
            
------------------------------------------------------------------------------------------------------------------------------------------------------ 
                -- 
pc.set_warp_location(0, 0 , 0) --&#53909;겼을때 다시 돌아오게 만들어 주는 부분 
                
pc.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- &#45912;전 나갔을 때 밖으로 튕기게함 
                
local ticketGroup = {get_special_item_group (TICKET_GROUP)} 
                if 
d.getf("dungeon_enter") == 0 then -- &#51652;행중이 아니면 
                    
local canPass = false 
                    
for i=1, table.getn(ticketGroup),2 do  
                        if 
pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then 
                            canPass 
= true 
                            
break 
                        
end 
                    end 

                    
if get_global_time() - pc.getf("flame_dungeon","exit_time") < ENTER_LIMIT_TIME * 60 then -- &#51077;장제한시간이 걸렸으면 
                        
notice_multiline(gameforge.flame_dungeon._050_notice,d.notice) 
                        
say(gameforge.flame_dungeon._060_say) 
                        
timer("flame_dungeon_warp_timer", 5) 
                    elseif 
not canPass then 
                        notice_multiline
(gameforge.flame_dungeon._070_notice,d.notice) 
                        
say(gameforge.flame_dungeon._080_say) 
                        
timer("flame_dungeon_warp_timer", 5) 
                    elseif 
pc.get_level() < 100 then 
                        notice_multiline
(gameforge.flame_dungeon._090_notice,d.notice) 
                        
say(gameforge.flame_dungeon._100_say) 
                        
timer("flame_dungeon_warp_timer", 5) 
                    
end 
                
elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- &#51652;행중인데 티켓이 안지워졌을경우 
                     
                    
for i=1, table.getn(ticketGroup),2 do  
                        if 
pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then 
                            pc
.remove_item(ticketGroup[i], ticketGroup[i+1]) 
                            break 
                        
end 
                    end 
                    pc
.setf("flame_dungeon","ticket_delete",1) 
                
end 
            
else 
                
pc.setf("flame_dungeon","ticket_delete",0) 
            
end 
        end 
        when flame_dungeon_warp_timer
.timer begin 
            local setting 
= flame_dungeon.setting() 
            
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX) 
        
end 
        when logout begin 
            local idx 
= pc.get_map_index() 
            if 
flame_dungeon.is_flamed(idx) then  
                
if d.getf("dungeon_enter") == 1 then -- &#51221;상적인 던전 입장 후 로그아웃 
                    
pc.setf("flame_dungeon","exit_time",get_global_time()) -- &#51064;스턴스 안에서의 마지막 시간을 기록, 근데 시간제한 때문에 or 그냥 튕긴거면 안기록 
                
end 
                 

            end 
        end 
        when ENTRY_MAN
.chat.gameforge.flame_dungeon._110_npcChat begin 
         
            local setting 
= flame_dungeon.setting() 
            if 
party.is_party() then 
                
-- &#45912;전 도중 나갈 경우 재입장 가능하도록 
                
local party_check = 0 
                
if d.find(party.getf("dungeon_index")) then 
                    party_check 
= (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid()) 
                
end 
                 
                
if d.find(party.getf("dungeon_index")) and party_check then 
                    
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- &#51217;종 이후 5분 내? 
                        
local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index")) 
                        if 
dungeon_level == 17 then -- &#48372;스 
                            
pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index")) 
                        else 
                            
pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index")) 
                        
end 
                    
else -- 5&#48516; 초과하여 재 입장 불가 
                        
say_title(mob_name(ENTRY_MAN)) 
                        
say(gameforge.flame_dungeon._590_say) 
                    
end 
                
else 
                    
local pids = {party.get_member_pids()} 
                    
local noTicketMembers = {} 
                    
local notEnoughLevelMembers = {} 
                    
local ticketCheck = true 
                    local levelCheck 
= true 
                    local ticketGroup 
= {get_special_item_group (TICKET_GROUP)} 
                    for 
i, pid in next, pids, nil do 
                        
q.begin_other_pc_block(pid) 
                        
local canPass = false 
                        
for idx=1, table.getn(ticketGroup),2 do  
                            if 
pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then 
                                canPass 
= true 
                                
break 
                            
end 
                        end 
                         
                        
if not canPass then 
                            table
.insert(noTicketMembers, pc.get_name()) 
                            
ticketCheck = false 
                        end 
                        
if pc.level < LEVEL_CUT then 
                            table
.insert(notEnoughLevelMembers, pc.get_name()) 
                            
levelCheck = false 
                        end 
                        q
.end_other_pc_block() 
                    
end 

                    
if not ticketCheck then 
                        say_title
(mob_name(ENTRY_MAN)) 
                        
say(gameforge.flame_dungeon._610_say) 
                        for 
i, name in next, noTicketMembers, nil do 
                            
say(color(1,1,0), "    "..name) 
                        
end 
                        
if levelCheck then 
                            
return 
                        else 
                            
wait() 
                        
end 
                    end 

                    
if not levelCheck then 
                        say_title
(mob_name(ENTRY_MAN)) 
                        
say(gameforge.flame_dungeon._630_say) 
                        for 
i, name in next, notEnoughLevelMembers, nil do 
                            
say(color(1,1,0), "    "..name) 
                        
end 
                        
return 
                    
end 

                    
if party.is_leader() then 
                        say
(gameforge.flame_dungeon._120_say) 
                        
local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select) 
                        if 
warp == 1 then 
                            
if party.is_map_member_flag_lt("exit_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then 
                                flame_dungeon
.make_dungeon() 
                            else 
                                --
say("test : 파티원의 입장 제한시간이 끝나지 않았습니다.") 
                                
say(gameforge.flame_dungeon._600_say) 
                            
end 
                        end 
                         
                        party
.setf("flame_dungeon_boss_kill_count", 0) 
                         
                    else 
                        
say(gameforge.flame_dungeon._150_say) 
                    
end 
                end 
            
else 
                
say(gameforge.flame_dungeon._160_say) 
            
end 
        end 
        
-- when ENTRY_MAN.chat."Test : 리소스확인" with is_test_server() begin -- &#53580;스트용 
            
-- local setting = flame_dungeon.setting() 
            -- 
pc.setf("flame_dungeon","fdRtest",1) 
            -- 
pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, DUNGEON_MAP_INDEX) 
        -- 
end 
         
         
        when ENTRY_MAN
.chat."TEST : Init time limit init" with is_test_server() begin -- &#53580;스트용 
            
pc.setf("flame_dungeon","exit_time",get_global_time()-1800) 
            
say("Done") 
        
end 
        
-- when DUNGEON_MAN.chat."Test : 현재 상태" with is_test_server() begin -- &#53580;스트용 
            
-- say("남은 몬스터 : "..d.count_monster()) 
            -- 
say("level : "..d.getf("level")) 
            -- 
say("Dmap index : "..d.get_map_index()) 
            -- 
say("Pmap index : "..pc.get_map_index()) 
            -- 
say("access limit : "..pc.getf("flame_dungeon","exit_time")) 
            -- 
say("global time : "..get_global_time()) 
            -- if 
flame_dungeon.is_flamed(d.get_map_index()) then 
                
-- say("in dungeon") -- is_flamed &#54632;수 체크 
            
-- end 
            
-- if d.is_unique_dead("stone1") then 
                
-- say("stone1 is dead") 
            -- else 
                -- 
say("stone1 is not dead") 
            -- 
end 
        
-- end 
        
-- when DUNGEON_MAN.chat."처음으로" begin -- &#53580;스트용 
            
-- say("초기화 합니다") 
            -- 
flame_dungeon.clear_timer(d.get_map_index()) 
            -- 
flame_dungeon.make_dungeon() 
        -- 
end 
        when DUNGEON_MAN
.chat."Test : Boss Room" with is_test_server() begin -- &#53580;스트용 
            
flame_dungeon.go_boss() 
        
end 
         
        
-- < &#49884;간 경과 타이머> 
        
-- when DUNGEON_MAN.chat."나가기" begin -- &#45912;전에서 튕기지 않게 할 경우 활성화 
            
-- local setting = flame_dungeon.setting() 
            -- 
say("밖으로 나가시겠습니까?") 
            -- 
local warp = select("확인","취소") 
            -- if 
warp == 1 then 
                
-- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX) 
            -- 
end 
        
-- end 
        when flame_dungeon_45m_left_timer
.server_timer begin 
            
if d.select(get_server_timer_arg()) then 
                notice_multiline
(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice) 
                
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice) 
                
server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg()) 
            
end 
        end 
        when flame_dungeon_30m_left_timer
.server_timer begin 
            
if d.select(get_server_timer_arg()) then 
                notice_multiline
(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice) 
                
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice) 
                
server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg()) 
            
end 
        end 
        when flame_dungeon_15m_left_timer
.server_timer begin 
            
if d.select(get_server_timer_arg()) then 
                notice_multiline
(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice) 
                
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice) 
                
server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg()) 
            
end 
        end 
        when flame_dungeon_5m_left_timer
.server_timer begin 
            
if d.select(get_server_timer_arg()) then 
                notice_multiline
(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice) 
                
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice) 
                
server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg()) 
            
end 
        end 
        when flame_dungeon_1m_left_timer
.server_timer begin 
            
if d.select(get_server_timer_arg()) then 
                notice_multiline
(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice) 
                
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice) 
                
server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg()) 
            
end 
        end 
        when flame_dungeon_0m_left_timer
.server_timer begin 
            local setting 
= flame_dungeon.setting() 
            if 
d.select(get_server_timer_arg()) then         
                notice_multiline
(gameforge.flame_dungeon._190_notice,d.notice) 
                
notice_multiline(gameforge.flame_dungeon._200_notice,d.notice) 
                
server_timer("dungeon_end_timer",10,d.get_map_index())     
            
end 
        end     


        
-- <<<< &#45912;전 진행>>>> -- 
        
when DUNGEON_MAN.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'&#45716; x번째 레벨 퀘스트 받을 수 있는 상태 , '1x'는 x번째 레벨 퀘스트 진행중 
            
local setting = flame_dungeon.setting() 
            if 
d.getf("started") == 0 then 
                say
(gameforge.flame_dungeon._230_say) 
                
say(gameforge.flame_dungeon._240_say) 
                
wait() 
                
d.setf("started",1) 
                -- &
#54028;티원이 튕겨버렸는데 자기만 남아서 exit timer가 리셋되면 안되니깐 다음레벨을 눌렀을때를 시작할때로 봄 
                
server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index()) 
                
notice_multiline(gameforge.flame_dungeon._250_notice,d.notice) 
                
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice) 
                 
                -- &
#53685;행증 관련된 처리 
                
-- &#51077;장 후에 티켓을 없앤 사람을 튕겨내기 위해서 타이머를 이용해 티켓을 제거한다. 
                
local pids = {party.get_member_pids()} 
                
local ticketGroup = {get_special_item_group (TICKET_GROUP)} 
                for 
i, pid in next, pids, nil do 
                    
q.begin_other_pc_block(pid) 
                    
local canPass = false 
                    
for idx=1, table.getn(ticketGroup),2 do  
                        if 
pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then 
                            canPass 
= true 
                            pc
.remove_item(ticketGroup[idx], ticketGroup[idx+1]) 
                            break 
                        
end 
                    end 
                     
                    
if not canPass then 
                        pc
.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX) 
                    
end 
                    q
.end_other_pc_block() 
                
end 
                d
.setqf2("flame_dungeon","ticket_delete",1) 
                
d.setf("dungeon_enter",1) 
                 
                -- &
#45912;전과 파티에 서로에 대한 정보를 저장한다. 
                
party.setf("dungeon_index", d.get_map_index()) 
                
d.setf("party_leader_pid", party.get_leader_pid()) 
            
end 
            
if d.getf("level") < 7 then --&#51652;행중이 아니면 
                
if d.getf("clear_count") == 6 then -- &#48169; 여섯개 했으면 보스방 
                    
d.setf("level",7) 
                else 
                    
local rand = number(1,6)--&#47004;덤에서 방문체크는 따로 배열없이 방의 문의 열려있는지로 체크함 
                    
local setlev = 0 
                    d
.setf("level",7) -- &#54841;시 모를 문제가 생겨 레벨이 안잡힐경우를 대비해 보스룸으로 셋팅해둠 
                    
for i=1,50 do 
                        
setlev = setlev + 1 
                        
if setlev > 6 then 
                            setlev 
= 1 
                        end 
                        
if not d.is_unique_dead("door"..setlev) then 
                            rand 
= rand - 1 
                            
if rand == 0 then 
                                d
.setf("level",setlev) 
                                
d.setf("clear_count",d.getf("clear_count")+1) 
                                break 
                            
end     
                        end 
                    end 
                end 
            end 
                
if d.getf("level") == 1 then 
                    say
(gameforge.flame_dungeon._260_say) 
                    
notice_multiline(gameforge.flame_dungeon._260_say,d.notice) 
                    
d.kill_unique("door1") 
                    
d.kill_unique("idoor1") 
                    
d.setf("level",11) 
                    
d.regen_file (MOB_REGEN_FILE_PATH.."fd_a.txt") 
                         
                    
server_timer ("killed_A_1", 12, d.get_map_index()) 
                elseif 
d.getf("level") == 11 then 
                    say
(gameforge.flame_dungeon._270_say) 
                    
say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster()) 
                elseif 
d.getf("level") == 2 then 
                        say
(gameforge.flame_dungeon._290_say) 
                        
say(gameforge.flame_dungeon._300_say) 
                        
notice_multiline(gameforge.flame_dungeon._290_say,d.notice) 
                        
notice_multiline(gameforge.flame_dungeon._300_say,d.notice) 
                        
d.spawn_mob(LEVEL2_STONE, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- &#48393;인석 소환 
                        
d.kill_unique("door2") 
                        
d.kill_unique("idoor2") 
                        
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_b.txt") 
                        
d.setf("level",12) 
                elseif 
d.getf("level") == 12 then 
                    say
(gameforge.flame_dungeon._310_say) 
                elseif 
d.getf("level") == 3 then 
                    say
(gameforge.flame_dungeon._260_say) 
                    
notice_multiline(gameforge.flame_dungeon._260_say,d.notice) 
                    
d.kill_unique("door3") 
                    
d.kill_unique("idoor3") 
                    
d.setf("level",13) 
                    
d.regen_file (MOB_REGEN_FILE_PATH.."fd_c.txt") 
                    
server_timer ("killed_A_1", 12, d.get_map_index()) 
                elseif 
d.getf("level") == 13 then 
                    say
(gameforge.flame_dungeon._270_say) 
                    
say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster()) 
                elseif 
d.getf("level") == 4 then -- 474 178 
                    say
(gameforge.flame_dungeon._320_notice) 
                    
notice_multiline(gameforge.flame_dungeon._320_notice,d.notice) 
                    
d.setf("level",14) 
                    
d.kill_unique("door4") 
                    
d.kill_unique("idoor4") 
                    
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_d.txt") 
                    
d.spawn_mob(LEVEL4_TARGET,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- &#53440;겟몬스터 소한 
                
elseif d.getf("level") == 14 then 
                    say
(gameforge.flame_dungeon._330_say) 
                    
say(gameforge.flame_dungeon._340_say) 
                elseif 
d.getf("level") == 5 then -- 510 355 
                    say
(gameforge.flame_dungeon._350_say) 
                    
say(gameforge.flame_dungeon._360_say) 
                    
notice_multiline(gameforge.flame_dungeon._350_say,d.notice) 
                    
notice_multiline(gameforge.flame_dungeon._360_say,d.notice) 
                    
d.kill_unique("door5") 
                    
d.kill_unique("idoor5") 
                    
d.setf("level",15) 
                    
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt") 
                    
local vis = { 0,0,0,0,0,0,0} 
                    for 
i=1,7 do 
                        
vis[i] = 0 
                    end 
                    
for i = 1, 7 do -- &#47004;덤하게 돌소환 
                        
local ran = number(1,7) 
                        
local st = 0 
                        
for j = 1, 50 do 
                            
st = st + 1 
                            
if st > 7 then 
                                st 
= 1 
                            end 
                            
if vis[st] == 0 then 
                                ran 
= ran - 1 
                                
if ran == 0 then 
                                    vis
[st] = 1 
                                    d
.set_unique("stone5_"..st, d.spawn_mob(LEVEL5_STONE, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2])) 
                                    break 
                                
end 
                            end 
                        end 
                    end   
                
elseif d.getf("level") == 15 then 
                    say
(gameforge.flame_dungeon._370_say) 
                elseif 
d.getf("level") == 6 then -- 507 490 
                    say
(gameforge.flame_dungeon._380_say)  
                    
notice_multiline(gameforge.flame_dungeon._380_say,d.notice) 
                    
d.setf("level",16) 
                    
d.kill_unique("door6") 
                    
d.kill_unique("idoor6") 
                    
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_f.txt") 
                    
d.spawn_mob(LEVEL6_TARGET, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- &#53440;겟오브젝트 소환 
                
elseif d.getf("level") == 16 then 
                    say
(gameforge.flame_dungeon._390_say) 
                    
say(gameforge.flame_dungeon._400_say) 
                elseif 
d.getf("level") == 7 then 
                    
-- setskin(NOWINDOW) 
                    
flame_dungeon.go_boss() 
                else 
                    
say(gameforge.flame_dungeon._410_say) 
                
end 
            npc
.unlock()         
        
end 
     


        when dungeon_end_timer
.server_timer begin -- &#51333;료 타이머 (끝나고 나가는거) 
            
local setting = flame_dungeon.setting() 
            if 
d.select(get_server_timer_arg()) then 
                flame_dungeon
.clear_timer(d.get_map_index())         
                
d.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])  
                
d.exit_all() 
                
d.setf("party_leader_pid", 0) 
            
end 
        end 

        when killed_A_1
.server_timer begin -- &#53440;이머 돌리기1 (level1,level3) 
            
if d.select(get_server_timer_arg()) then 
                
if d.count_monster() <= 0 then -- 1&#47112;벨 몬스터 전멸시 
                    
if d.getf("level") == 11 then 
                        notice_multiline
(gameforge.flame_dungeon._420_notice,d.notice) 
                        
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice) 
                    else 
                        
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice) 
                        
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice) 
                    
end 
                    d
.setf("level",0) 
                else  
                    
server_timer ("killed_A_2", 6, get_server_timer_arg()) 
                
end 
            end 
        end 
        when killed_A_2
.server_timer begin -- &#53440;이머 돌리기2 (1과 2 번갈아가면서 돌아감) 
            
if d.select(get_server_timer_arg()) then 
                
if d.count_monster() <= 0 then -- 1&#47112;벨 몬스터 전멸시 
                    
if d.getf("level") == 11 then 
                        notice_multiline
(gameforge.flame_dungeon._420_notice,d.notice) 
                        
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice) 
                    else 
                        
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice) 
                        
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice) 
                    
end 
                    d
.setf("level",0) 
                else  
                    
server_timer ("killed_A_1", 6, get_server_timer_arg()) 
                
end 
            end 
        end 

        when kill with flame_dungeon
.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2&#47112;벨 봉인석 열쇠 드랍 
            
local i = number(1, 100) -- 100&#48516;의 1 확률로 열쇠드랍 
            
if i == 1 then 
                game
.drop_item (LEVEL2_KEY, 1) 
            
end 
        end 
        when LEVEL2_STONE
.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == LEVEL2_KEY and d.getf("level") == 12 begin -- 2&#47112;벨 열쇠 먹었을때 
            
local i = number(1, 5) -- 5&#48516;의 1 확률로 진짜 열쇠 
            
if i == 1 then 
                npc
.purge() 
                
item.remove() 
                
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice) 
                
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice) 
                
flame_dungeon.level_clear() 
            else 
                
item.remove() 
                
say(gameforge.flame_dungeon._450_say) 
            
end 
        end 

        when LEVEL4_TARGET
.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin 
            notice_multiline
(gameforge.flame_dungeon._460_notice,d.notice) 
            
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice) 
            
flame_dungeon.level_clear() 
        
end 

        when kill with flame_dungeon
.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5&#47112;벨 봉인석 열쇠 드랍 
            
local i = number(1, 30) -- 30&#48516;의 1 확률로 열쇠드랍 
            
if i == 1 then 
                game
.drop_item (LEVEL5_REALKEY, 1) 
            
end 
        end 
        when LEVEL5_STONE
.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == LEVEL5_REALKEY and d.getf("level") == 15 begin -- 5&#47112;벨 진짜열쇠 먹었을때 
            
local setting = flame_dungeon.setting() 
            if 
npc.get_vid() == d.get_unique_vid("stone5_1") then -- &#52395;번째 꺼는 선행되어야 할 일이 필요없으니 찾자마자 제거해줌 
                
npc.purge() 
                
item.remove() 
                
say(gameforge.flame_dungeon._470_say) 
                
d.setf("stonekill",2) -- 2&#48264; 돌을 죽여라 
                
if d.count_monster() < LEVEL5_GEN_LIMIT then 
                    d
.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt") 
                
end 
            
elseif npc.get_vid() == d.get_unique_vid("stone5_2") then  
                
if d.getf("stonekill") == 2 then -- 2&#48264;돌을 죽일 차롄데 2번돌에게 열쇠를 먹였을 때 
                    
npc.purge() 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._480_say) 
                    
d.setf("stonekill",3) 
                    if 
d.count_monster() < LEVEL5_GEN_LIMIT then 
                        d
.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt") 
                    
end 
                
else 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._490_say) 
            --        
say("2번") 
                
end 
            
elseif npc.get_vid() == d.get_unique_vid("stone5_3") then 
                
if d.getf("stonekill") == 3 then 
                    npc
.purge() 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._500_say) 
                    
d.setf("stonekill",4) 
                    if 
d.count_monster() < LEVEL5_GEN_LIMIT then 
                        d
.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt") 
                    
end 
                
else 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._490_say) 
            --        
say("3번") 
                
end 
            
elseif npc.get_vid() == d.get_unique_vid("stone5_4") then 
                
if d.getf("stonekill") == 4 then 
                    npc
.purge() 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._510_say) 
                    
d.setf("stonekill",5) 
                    if 
d.count_monster() < LEVEL5_GEN_LIMIT then 
                        d
.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt") 
                    
end 
                
else 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._490_say) 
                --    
say("4번") 
                
end 
            
elseif npc.get_vid() == d.get_unique_vid("stone5_5") then 
                
if d.getf("stonekill") == 5 then 
                    npc
.purge() 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._520_say) 
                    
d.setf("stonekill",6) 
                    if 
d.count_monster() < LEVEL5_GEN_LIMIT then 
                        d
.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt") 
                    
end 
                
else 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._490_say) 
            --        
say("5번") 
                
end 
            
elseif npc.get_vid() == d.get_unique_vid("stone5_6") then 
                
if d.getf("stonekill") == 6 then 
                    npc
.purge() 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._530_say) 
                    
d.setf("stonekill",7) 
                    if 
d.count_monster() < LEVEL5_GEN_LIMIT then 
                        d
.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt") 
                    
end 
                
else 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._490_say) 
            --        
say("6번") 
                
end 
            
else  
                if 
d.getf("stonekill") == 7 then 
                    npc
.purge() 
                    
item.remove() 
                    
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice) 
                    
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice) 
                    
flame_dungeon.level_clear() 
                else 
                    
item.remove() 
                    
say(gameforge.flame_dungeon._490_say) 
            --        
say("7번") 
                
end 
            end 
        end 

        when LEVEL6_TARGET
.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- &#47581;마석 파괴했을 때 
            
notice_multiline(gameforge.flame_dungeon._540_notice,d.notice) 
            
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice) 
            
flame_dungeon.level_clear() 
        
end 

        when FINAL_BOSS
.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- &#48372;스 죽였을때 
            
notice_multiline(gameforge.flame_dungeon._550_notice,d.notice) 
            
notice_multiline(gameforge.flame_dungeon._560_notice,d.notice) 
            
server_timer("dungeon_end_timer", 60,d.get_map_index())     
            
flame_dungeon.level_clear() 
             
            -- &
#54028;티원 중, 야마천 잡는 퀘스트(104렙, 105렙 퀘스트) 진행중인 사람이 있으면 퀘스트 클리어 되도록. 
            
if party.is_party() then 
                party
.setf("flame_dungeon_boss_kill_count", 1) 
            
end 
             
        end 
    end 
end 
Hallo alle zusammen,

ich habe ein Problem bei dem Flammenrun. Wenn ich dahin komme das man alle Monster töten soll passiert nix wenn ich alle getötet habe. Bei der Statue steht
BRÄUCHTE IMMER NOCH HILFE!
08/08/2014 00:13 Brodan#10413
Quote:
Originally Posted by Kilroy. View Post
Wie sollen die Boni auch draufbleiben, wenn man ne neue Rüstung bekommt und die alte entfernt...
Ich schreib sie dir um, allerdings benötigst du dann die folgenden quest_functions (such mal im Forum danach)
Code:
item2.set_attr
item.set_socket
item2.get_attr
item.get_socket
pc2.give_or_drop_item_and_select

# Du musst das Item nun auf den NPC ziehen.
Quest:

Suche noch immer nach den Questfunktionen für die Game-Rev 2089m.
08/08/2014 09:47 Premiumlike#10414
Joa brauch mal eure hilfe kommt keine fehler aber geht nicht
Der oberen 2 quest abschnitte gehen aber der drite unten nicht
PHP Code:
quest drago begin
    state start begin
        when login 
or levelup with pc.get_level() >=2  begin
            set_state
(information)
        
end    
    end
    
    state information begin
        when letter begin
            local v 
= find_npc_by_vnum(20251)
            if 
v != 0 then
                target
.vid("__TARGET__", v, "Quest")
            
end
            send_letter
("Auftraug von Mazu")
        
end
        
        when button 
or info begin
            say_title
("Mazu braucht dich")
            
say("")
            
say("Der Drache Mazu hält schon")
            
say("seit einiger Zeit ausschau nach dir!")
            
say("")
            
say("Gehe zu Mazu")
            
say("")
        
end
        
        when __TARGET__
.target.click or
            
20251.chat."Mazu´s Auftrag" begin
            target
.delete("__TARGET__")
            
say("Drache Mazu:")
            
say("")
            
say("Ich der Drache Mazu brauche deine Hilfe!")
            
say("Kannst du mir bitte einige wichtige")
            
say("Materialien besorgen welche ich brauche um")
            
say("dir zu helfen wenn du stärker bist?")
            
say("")
            
say_reward("Besorge mir Kupfererz")
            
say("")
            
say_item_vnum(50604)
            
say("")
            
set_state(go_to_disciple)
        
end
    end
    
    state go_to_disciple begin
        when 20251.chat
."Kupfererz" with pc.count_item(50604) >0   begin
            say
("Mazu:")
            
say("Danke das du mir ein stück Kupfererz")
            
say("aufgetrieben hast,")
            
say("Nun bin ich in der Lage ein Item zu fertigen,")
            
say("welches dir eine kraft spüren lässt welche")
            
say("dir bis dahin nicht bekannt ist.")
            
pc.remove_item(50604, 1)
            
set_state(go_to_baum)
        
end
    end
    
    state go_to_baum begin
        when __TARGET__
.target.click or
            
20251.chat."Item noch ka" begin
            say
("Mazu:")
            
say("Danke das du mir ein stück Kupfererz")
            
say("aufgetrieben hast,")
            
say("Nun bin ich in der Lage ein Item zu fertigen,")
            
say("welches dir eine kraft spüren lässt welche")
            
say("dir bis dahin nicht bekannt ist.")
            
pc.remove_item(50704, 1)
            
pc.give_item2(50512, 1)
        
end
    end
end 
08/09/2014 22:07 .Vegas™#10415
Guten Tag epvp,
Er sagt mir in Putty Error.
Ich weiß leider nicht wo der fehler liegt.


Wäre toll wenn mir jemand helfen könnte.

lg.

.Vegas
08/09/2014 22:55 thespeedyy#10416
PHP Code:
quest reittiertruhe begin 
    state start begin 
        when 38053.
use begin 
            pc
.give_item2(71124, 1)                ---- Weißer-Löwe ---- 
            
pc.remove_item(38053, 1)            ---- Reittier-Truhe verschwindet ---- 
        
end
        when 50023.
use begin 
            pc
.give_item2(70024, 10)                ---- Segenskugel ---- 
            
pc.remove_item(50023, 1)            ---- Geldtasche verschwindet ---- 
        
end
        when 50125.
use begin 
            pc
.give_item2(53010, 1)                ---- Leondias-Siegel ---- 
            
pc.remove_item(50125, 1)            ---- Pet-Truhe verschwindet ---- 
        
end
    end
end 
da waren zwei ends zuviel^^
08/10/2014 01:59 Critella#10417
Ich hab irgendwo einen Fehler kann mri einer Helfen

quest user_panel begin
state start begin
when letter with pc.is_player() begin
send_letter("User Panel by Metin2")
end
when button or info begin
say_title("Willkommen im User Panel by Metin2")
say("")
say_reward("Bitte waehle deine Option")
local head = select("Teleportieren", "Lager ", "Abbrechen")

if main_set == 1 then
say("Du willst dich also Teleportieren?")
say("")
local j = select("Ja","Nein")
if j == 2 then
return
end
if j == 1 then
say_reward("Wo möchtest du hin:")
local k = select("Map1-Rot","Map1-Blau","Map1-Gelb","Nirgens")
if k == 4 then
return
end
if k == 1 then
pc.warp(469300, 964200)
end
if k == 2 then
pc.warp(969600, 278400)
end
if k == 3 then
pc.warp (55700, 157900)
end
end
end

elseif head == 2 then
say_title("Lager")
say_reward("Waehle deine Option")
local lager = select("Lager oeffnen", "Itemshop Lager oeffnen", "Abbrechen")

if lager ==1 then
send_letter("User Panel by Metin2")
game.open_safebox()
setskin(NOWINDOW)

elseif lager == 2 then
send_letter("User Panel by Metin2")
game.open_mall()
setskin(NOWINDOW)

elseif lager == 3 then
send_letter("User Panel by Metin2")
return
end

elseif head == 5 then
send_letter("User Panel by Metin2")
return
end
end
end
end
08/10/2014 02:25 .Delta#10418
da, hab mal drüber geschaut.
Probier mal :)
Sollte es dennoch nicht funktionieren bitte ich um die Fehlermeldung.
PHP Code:
quest user_panel begin
    state start begin
        when letter begin
            send_letter
("User Panel by Metin2")
        
end
        when button 
or info begin
            say_title
("Willkommen im User Panel by Metin2")
            
say("")
            
say_reward("Bitte waehle deine Option")
            
local head = select("Teleportieren", "Lager ", "Abbrechen")
            if 
head == 1 then -- war main_select?!?
                
say("Du willst dich also Teleportieren?")
                
say("")
                
local j = select("Ja","Nein")
                if 
j == 2 then
                    
return
                
end
                say_reward
("Wo möchtest du hin:")
                
local k = select("Map1-Rot","Map1-Blau","Map1-Gelb","Nirgens")
                if 
k == 4 then
                    
return
                elseif 
k == 1 then
                    pc
.warp(469300, 964200)
                elseif 
k == 2 then
                    pc
.warp(969600, 278400)
                elseif 
k == 3 then
                    pc
.warp (55700, 157900)
                
end
            
elseif head == 2 then
                say_title
("Lager")
                
say_reward("Waehle deine Option")
                
local lager = select("Lager oeffnen", "Itemshop Lager oeffnen", "Abbrechen")
                if 
lager ==1 then
                    send_letter
("User Panel by Metin2")
                    
game.open_safebox()
                    
setskin(NOWINDOW)
                elseif 
lager == 2 then
                    send_letter
("User Panel by Metin2")
                    
game.open_mall()
                    
setskin(NOWINDOW)
                elseif 
lager == 3 then
                    send_letter
("User Panel by Metin2")
                    return
                
end
            
elseif head == 3 then
                send_letter
("User Panel by Metin2")
            
end
        end
    end
end 
08/10/2014 06:57 .Vegas™#10419
PHP Code:
quest vipquest begin
    state start begin
        when 38001.
use begin
            say_title
("Hallo "..pc.get_name().."!")
            
say("Mit diesem Item kannst du den VIP Status aktivieren.")
            
say("")
            
say("")
            
say("Moechtest du?")
            
say(pc.get_name(), " -----------> (VIP)", pc.get_name())
            
local aw = select("Ja", "Nein")
            if 
aw == 2 then
            
return
            
end
                name 
= pc.get_name()
                
zahl = string.len(name)
                if 
aw == 1 and zahl <= 7 then
                mysql_query
("UPDATE player.player SET name='[VIP]"..pc.get_name().."' WHERE name='"..pc.get_name().."'")
                
say_title("Erfolgreich!")
                
say("Herzlichen Glueckwunsch, du bist nun VIP auf")
                
say("Crystal2!")
                
say("")
                
say("")
                
say("Info")
                
say_reward("Die Aenderung des (VIP) kann 10-20 Minuten dauern.")
                elseif 
zahl > 7 then
                say_title
("Deine Name!")
                
say("Deine Name ist zu lang.")
                
say("Er darf nicht mehr als 7 Buchstaben haben.")
                
say("Es koennte sonst zum verschlingen von Buchtstaben")
                
say("kommen, z.B. Lipton --> (VIP)Lipto")
                
say("")
                
say("")
                
say_reward("Moechtest du ihn ändern um VIP zuwerden?")
                
local a = select("Ja", "Nein")
                if 
a == 2 then
                
return
                
end
                    say_title
("Name wechseln")
                    
say("Gib bitte deinen Wunschnamen ein:")
                    
say_reward("Beachte! Nicht mehr als 7 Buchstaben.")
                    
local inp = input()
                    if 
string.len(inp) > 7 or inp == "" then
                    say
("Dein neuer Name hat mehr als 7 Buchstaben.")
                    
say("Tut mir echt leid.")
                    return
                    else
                    
say_title("Ok")
                    
say("Dein Name erfüllt ALLE Voraussetzungen.")
                    
say("")
                    
say("Letzter Check, möchtest du wirklich mit dem")
                    
say("Namen (VIP)", inp," dein vip status aktivieren?")
                    
local b = select("Ja", "Nein")
                        if 
b == 2 then
                        
return
                        else
                        
mysql_query("UPDATE player.player SET name='[VIP]"..inp.."' WHERE name='"..pc.get_name().."'")
                        
say_title("Erfolgreich!")
                        
say("Herzlichen Glückwunsch, du bist nun VIP auf")
                        
say("Crystal2!")
                        
say("")
                        
say("")
                        
say("Info")
                        
say_reward("Die Änderung des (VIP) kann 10-20 Minuten dauern.")
                    
end
                end
            end
        end
    end
end 
Die ganze Quest Funktioniert einbandfrei.
Aber ich hätte gerne das , dass Item nach dem Benutzten auch verschwindet.

lg.

.Vegas
08/10/2014 07:57 Simplex2™#10420
PHP Code:
quest vipquest begin
    state start begin
        when 38001.
use begin
            say_title
("Hallo "..pc.get_name().."!")
            
say("Mit diesem Item kannst du den VIP Status aktivieren.")
            
say("")
            
say("")
            
say("Moechtest du?")
            
say(pc.get_name(), " -----------> (VIP)", pc.get_name())
            
local aw = select("Ja", "Nein")
            if 
aw == 2 then
            
return
            
end
                name 
= pc.get_name()
                
zahl = string.len(name)
                if 
aw == 1 and zahl <= 7 then
                mysql_query
("UPDATE player.player SET name='[VIP]"..pc.get_name().."' WHERE name='"..pc.get_name().."'")
                
say_title("Erfolgreich!")
                
say("Herzlichen Glueckwunsch, du bist nun VIP auf")
                
say("Crystal2!")
                
say("")
                
say("")
                
say("Info")
                
say_reward("Die Aenderung des (VIP) kann 10-20 Minuten dauern.")
                elseif 
zahl > 7 then
                say_title
("Deine Name!")
                
say("Deine Name ist zu lang.")
                
say("Er darf nicht mehr als 7 Buchstaben haben.")
                
say("Es koennte sonst zum verschlingen von Buchtstaben")
                
say("kommen, z.B. Lipton --> (VIP)Lipto")
                
say("")
                
say("")
                
say_reward("Moechtest du ihn ändern um VIP zuwerden?")
                
local a = select("Ja", "Nein")
                if 
a == 2 then
                
return
                
end
                    say_title
("Name wechseln")
                    
say("Gib bitte deinen Wunschnamen ein:")
                    
say_reward("Beachte! Nicht mehr als 7 Buchstaben.")
                    
local inp = input()
                    if 
string.len(inp) > 7 or inp == "" then
                    say
("Dein neuer Name hat mehr als 7 Buchstaben.")
                    
say("Tut mir echt leid.")
                    return
                    else
                    
say_title("Ok")
                    
say("Dein Name erfüllt ALLE Voraussetzungen.")
                    
say("")
                    
say("Letzter Check, möchtest du wirklich mit dem")
                    
say("Namen (VIP)", inp," dein vip status aktivieren?")
                    
local b = select("Ja", "Nein")
                        if 
b == 2 then
                        
return
                        else
                        
mysql_query("UPDATE player.player SET name='[VIP]"..inp.."' WHERE name='"..pc.get_name().."'")
                        
say_title("Erfolgreich!")
                        
say("Herzlichen Glückwunsch, du bist nun VIP auf")
                        
say("Crystal2!")
                        
say("")
                        
say("")
                        
say("Info")
                        
say_reward("Die Änderung des (VIP) kann 10-20 Minuten dauern.")
                        
pc.remove_item(38001, 1)
                    
end
                end
            end
        end
    end
end 
Versuchs mal jetzt
08/10/2014 15:02 Critella#10421
quest lalal begin
state start begin
when DORFPLATZVNUM.chat."reitten" begin
say("wilst du reitten")
if select("nein","ja") == 1 then return end
pc.mount(löwenvnum, 60*60*24)
end
end
end

so richtig?
08/10/2014 18:00 Brodan#10422
Quote:
Originally Posted by Critella View Post
quest lalal begin
state start begin
when DORFPLATZVNUM.chat."reitten" begin
say("wilst du reitten")
if select("nein","ja") == 1 then return end
pc.mount(löwenvnum, 60*60*24)
end
end
end

so richtig?
Achte bitte auf Tabs.. und füge deine Quests in Zukunft bitte per [ PHP ] <Quest> [/ PHP] ein. (Ohne Leerzeichen)
Sieht dann wie folgt aus:

PHP Code:
quest lalal begin
    state start begin
        when DORFPLATZVNUM
.chat."reiten" begin
            say
("willst du reiten")
            if 
select("Ja", "Nein")==2 then return end
                pc
.mount(löwenvnum, 60*60*24)
            
end
        end
    end
end 
08/10/2014 18:51 .Delta#10423
Quote:
Originally Posted by Brodan View Post
Achte bitte auf Tabs.. und füge deine Quests in Zukunft bitte per [ PHP ] <Quest> [/ PHP] ein. (Ohne Leerzeichen)
Sieht dann wie folgt aus:

PHP Code:
quest lalal begin
    state start begin
        when DORFPLATZVNUM
.chat."reiten" begin
            say
("willst du reiten")
            if 
select("Ja", "Nein")==2 then return end
                pc
.mount(löwenvnum, 60*60*24)
            
end
        end
    end
end 
immer noch ein end zu viel :)
08/10/2014 19:41 .yorliK#10424
Quote:
Originally Posted by Brodan View Post
Achte bitte auf Tabs.. und füge deine Quests in Zukunft bitte per [ PHP ] <Quest> [/ PHP] ein. (Ohne Leerzeichen)
Sieht dann wie folgt aus:

PHP Code:
quest lalal begin
    state start begin
        when DORFPLATZVNUM
.chat."reiten" begin
            say
("willst du reiten")
            if 
select("Ja", "Nein")==2 then return end
                pc
.mount(löwenvnum, 60*60*24)
            
end
        end
    end
end 
Tabs sind egal, der Server checkt das auch so, das dient "nur" der Übersicht..


Quote:
Originally Posted by .Delta View Post
immer noch ein end zu viel :)
Jop, Brodan, du hast es falsch verbessert.

@Critella Du hast es von Anfang an richtig gehabt.
08/10/2014 22:09 [SA]°Keks°#10425
PHP Code:
quest training_grandmaster_skill begin
    state start begin
        when 50513.
use begin
            
if pc.get_skill_group() == 0 then
                say_title
(gameforge.training_grandmaster_skill._10_sayTitle)
                
say(gameforge.training_grandmaster_skill._20_say)
                return
            
end

            
if get_time() < pc.getqf("next_time") then
                
if pc.is_skill_book_no_delay() then
                    say_title
(gameforge.training_grandmaster_skill._10_sayTitle)
                    
say(gameforge.training_grandmaster_skill._30_say)
                    
wait()
                else
                    
say_title(gameforge.training_grandmaster_skill._10_sayTitle)
                    
say(gameforge.training_grandmaster_skill._40_say)
                    return
                
end
            end

            local result 
= training_grandmaster_skill.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group())

            
local vnum_list = result[1]
            
local name_list = result[2]

            if 
table.getn(vnum_list) == 0 then
                say_title
(gameforge.training_grandmaster_skill._10_sayTitle)
                
say(gameforge.training_grandmaster_skill._50_say)
                return
            
end
            say_title
(gameforge.training_grandmaster_skill._10_sayTitle)
            
say(gameforge.training_grandmaster_skill._60_say)

            
local menu_list = {}
            
table.foreach(name_list, function(i, name) table.insert(menu_list, name) end)
            
table.insert(menu_list, gameforge.locale.cancel) 

            
local s=select_table(menu_list)
            
            if 
table.getn(menu_list) == s then
                
return
            
end

            local skill_name
=name_list[s]
            
local skill_vnum=vnum_list[s]
            
local skill_level = pc.get_skill_level(skill_vnum)
            
local cur_alignment = pc.get_real_alignment()
            
local need_alignment = 1000+500*(skill_level-30)

            
test_chat(string.format(gameforge.training_grandmaster_skill._70_chat, cur_alignment..gameforge.training_grandmaster_skill._75_chat..need_alignment))

            
local title=string.format(gameforge.training_grandmaster_skill._80_stringFormat, skill_name, skill_level-30+1)

            
say_title(gameforge.training_grandmaster_skill._10_sayTitle)
            
say(gameforge.training_grandmaster_skill._90_say)

            if 
cur_alignment<-19000+need_alignment then
                say_reward
(gameforge.training_grandmaster_skill._100_sayReward)
                                return
            
end

            
if cur_alignment<0 then
say_reward
(string.format(gameforge.training_grandmaster_skill._110_sayReward, need_alignment, need_alignment*2))
                
say_reward(gameforge.training_grandmaster_skill._120_sayReward)
                
need_alignment=need_alignment*2
            
elseif cur_alignment<need_alignment then
say_reward
(string.format(gameforge.training_grandmaster_skill._130_sayReward, need_alignment))
                
say_reward(gameforge.training_grandmaster_skill._140_sayReward)
            else
say_reward(string.format(gameforge.training_grandmaster_skill._130_sayReward, need_alignment))
            
end
                
            local s
= select(gameforge.locale.levelup.prev_quest_go, gameforge.locale.cancel)    
            
            if 
s==2 then
                
return
            
end


            
if cur_alignment>=0 and cur_alignment<need_alignment then
say_title
(title)
                
say_reward(gameforge.training_grandmaster_skill._150_sayReward)
                
say(gameforge.training_grandmaster_skill._160_say)
                
say_reward(gameforge.training_grandmaster_skill._170_sayReward)
                
say(gameforge.training_grandmaster_skill._180_say)
                
local s=input()
                
s = string.gsub(s, "(%a*)%s*", "%1")
                
s = string.lower(string.gsub(s, "(%a*)%s*", "%1"))

                
local t = string.gsub(gameforge.training_grandmaster_skill._10_answer, "(%a*)%s*", "%1")
                
t = string.lower(string.gsub(gameforge.training_grandmaster_skill._10_answer, "(%a*)%s*", "%1"))
                
                if 
s!=t then
                    
return
                
end
            end

            
if get_time() < pc.getqf("next_time") then
                
if pc.is_skill_book_no_delay() then
                    pc
.remove_skill_book_no_delay()
                else
                    
say_title(gameforge.training_grandmaster_skill._10_sayTitle)
                    return
                
end
            end

            pc
.setqf("next_time", get_time()+time_hour_to_sec(number(8, 12)))


            if 
need_alignment>0 then
                
if pc.count_item(50513) > 0 then
                    
if pc.learn_grand_master_skill(skill_vnum) then
                        pc
.change_alignment(-need_alignment)
                
                        
say_title(title)
                        
say_reward(gameforge.training_grandmaster_skill._190_sayReward)

                        if 
40 == pc.get_skill_level(skill_vnum) then
                            say
(gameforge.training_grandmaster_skill._200_say)
                            
say(string.format(gameforge.training_grandmaster_skill._210_say, skill_name))
                            
say(gameforge.training_grandmaster_skill._220_say)
                        else
                            
say(gameforge.training_grandmaster_skill._230_say)
                            
say(string.format(gameforge.training_grandmaster_skill._240_say, skill_name, skill_level-30+1+1))
                        
end
                        say_reward
(gameforge.training_grandmaster_skill._250_sayReward)
                        
say_reward(string.format(gameforge.training_grandmaster_skill._260_sayReward, need_alignment))
                    else
                        
say_title(title)
                        
say_reward(gameforge.training_grandmaster_skill._270_sayReward)
                        
say(gameforge.training_grandmaster_skill._280_say)
                        
say_reward(gameforge.training_grandmaster_skill._290_sayReward)
                        
pc.change_alignment(-number(need_alignment/3, need_alignment/2))
                    
end
                    pc
.remove_item(50513)
                else
                    
char_log(0, "HACK 50513", pc.getname())
                
end
            end
        end

        
function BuildGrandMasterSkillList(job, group)
            
GRAND_MASTER_SKILL_LEVEL = 30
            PERFECT_MASTER_SKILL_LEVEL 
= 40

            local skill_list 
= special.active_skill_list[job+1][group]
            
local ret_vnum_list = {}
            
local ret_name_list = {}

            
table.foreach(skill_list, 
            function(
i, skill_vnum) 
            
local skill_level = pc.get_skill_level(skill_vnum)

            if 
skill_level >= GRAND_MASTER_SKILL_LEVEL and skill_level < PERFECT_MASTER_SKILL_LEVEL then
                table
.insert(ret_vnum_list, skill_vnum)
                
local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
                
                if 
name == nil then name=skill_vnum end
                    table
.insert(ret_name_list, name)
                
end
            end
)
            return {
ret_vnum_list, ret_name_list}
        
end
    end
end 
Bräuchte diese seelenstein Quest mit 100% warscheinlichkeit das es klappt, hab schon mehrere andere probiert aber die laufem auf dem Vanilla Core leider nicht, wäre wirklich sehr nett wenn das jemand dort ändern kann.