1:
Cod: Selectaţi tot
quest dragon_soul begin
state start begin
when levelup or letter with pc.level >= 30 begin
send_letter(gameforge.dragon_soul._1010_sendLetter)
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when info or button begin
say(gameforge.dragon_soul._1020_say)
end
when 20001.chat.gameforge.dragon_soul._1030_npcChat with pc.level >= 30 begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.dragon_soul._1040_say)
set_state(state_learning)
end
end
state state_learning begin
when letter begin
send_letter(gameforge.dragon_soul._1050_sendLetter)
end
when info or button begin
say(gameforge.dragon_soul._1060_say)
end
when kill begin
if npc.is_pc() then
return
end
------------
if pc.get_map_index() >= 2400000 and pc.get_map_index() <= 2405000 or pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 then
return
else
-----------------------
if pc.getf("dragon_soul","drop_on") == 1 then
if pc.count_item(30270) < 15 then
if drop_gamble_with_flag("ds_drop") then
game.drop_item_with_ownership(30270)
end
end
end
-------------------------
end
------------
end
when 20001.chat.gameforge.dragon_soul._1050_sendLetter begin
say_title(mob_name(20001))
if pc.count_item(30270) >= 10 then
say(gameforge.dragon_soul._1070_say)
pc.remove_item(30270, 10)
ds.give_qualification()
char_log(pc.get_player_id(), 'DS_QUALIFICATION', 'SUCCESS')
pc.give_item2(50255)
local today = math.floor(get_global_time() / 86400)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 3)
set_state(state_farming)
else
say(gameforge.dragon_soul._1080_say)
end
end
end
state state_farming begin
when letter begin
send_letter(gameforge.dragon_soul._1090_sendLetter)
end
when info or button begin
say(string.format(gameforge.dragon_soul._1100_say, pc.getf("dragon_soul", "eye_left")))
end
when kill begin
if npc.is_pc() then
return
end
---------
if pc.get_map_index() >= 2400000 and pc.get_map_index() <= 2405000 or pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 then
return
else
------------------------------------
if pc.getf("dragon_soul","drop_on") == 1 then
if drop_gamble_with_flag("ds_drop") then
local eye_left = pc.getf("dragon_soul", "eye_left")
local haved_gemstone_number = pc.count_item(30270)
if eye_left > haved_gemstone_number / 10 then
game.drop_item_with_ownership(30270)
end
end
end
----------------------------
end
-----------
end
when 30270.pick begin
local eye_left = pc.getf("dragon_soul", "eye_left")
if eye_left <= 0 then
return
end
if pc.count_item(30270) >= 10 then
pc.setf("dragon_soul", "eye_left", eye_left - 1)
pc.remove_item(30270, 10)
pc.give_item2(50255)
if 1 == eye_left then
notice_multiline(gameforge.dragon_soul._1110_notice, notice)
set_state(state_closed_season)
end
end
end
when 20001.chat.gameforge.dragon_soul._1120_npcChat begin
say_title(mob_name(20001))
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1130_say)
else
say(gameforge.dragon_soul._1140_say)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 3)
pc.setf("dragon_soul","drop_on",1)
end
end
end
state state_closed_season begin
when letter begin
send_letter(gameforge.dragon_soul._1150_sendLetter)
end
when info or button begin
say(gameforge.dragon_soul._1160_say)
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1170_say)
else
say(gameforge.dragon_soul._1180_say)
end
end
when 20001.chat.gameforge.dragon_soul._1090_sendLetter begin
say_title(mob_name(20001))
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1130_say)
else
say(gameforge.dragon_soul._1140_say)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 3)
set_state(state_farming)
end
end
end
-- deprecated states. so, jump to new state.
state state_1 begin
when login begin
set_state(state_learning)
end
end
state state_2 begin
when login begin
set_state(state_learning)
end
end
state state_3 begin
when login begin
set_state(state_closed_season)
end
end
end
Cod: Selectaţi tot
quest dragon_soul_refine begin
state start begin
when 20001.chat.gameforge.dragon_soul_refine._010_npcChat with ds.is_qualified() != 0 begin
say_title(mob_name(20001))
say (gameforge.dragon_soul_refine._020_say)
ds.open_refine_window()
end
end
end
Cod: Selectaţi tot
quest energy_system begin
state start begin
when 20001.chat.gameforge.energy_system._001_npcChat begin
say_title(mob_name(20001))
say(gameforge.energy_system._010_say)
wait()
say_title(mob_name(20001))
say(gameforge.energy_system._020_say)
wait()
say_title(mob_name(20001))
say(gameforge.energy_system._030_say)
setstate(can_make)
end
end
state can_make begin
function setting ()
return
{
["prob_acc_table"] =
{
["40to75"] = {30,55,70,80,90,95,97,98,99,100},
["76to85"] = {20,40,60,75,85,91,96,98,99,100},
["upto85"] = {10,25,45,65,80,88,94,97,99,100}
},
["item_num_table"] ={0,1,2,3,4,6,8,10,12,15},
["energy_stone"] = 51001,
["charging_stone"] = 51002
}
end
function getItemNum ( str, r )
local setting = energy_system.setting()
for i = 1, 10 do
if r < setting.prob_acc_table[str][i] then
return setting.item_num_table[i]
end
end
return 0
end
when 20001.chat.gameforge.energy_system._035_npcChat begin
say_title(mob_name(20001))
say(gameforge.energy_system._040_say)
wait()
say_title(mob_name(20001))
say(gameforge.energy_system._050_say)
wait()
if pc.get_level() < 40 then
say_title(mob_name(20001))
say(gameforge.energy_system._060_say)
else
say_title(mob_name(20001))
say(gameforge.energy_system._070_say)
end
end
when 20001.take begin
if pc.get_level() < 65 then
say_title(mob_name(20001))
say(gameforge.energy_system._080_say)
return
end
local item_vnum = item.vnum
local levelLimit = item.get_level_limit(item_vnum)
local setting = energy_system.setting()
if levelLimit == nil then
say_title(mob_name(20001))
say(gameforge.energy_system._090_say)
wait()
elseif item.get_type() == ITEM_WEAPON and item.get_sub_type() == WEAPON_ARROW then
say_title (mob_name(20001))
say (gameforge.energy_system._090_say)
wait()
elseif levelLimit < 40 then
say_title(mob_name(20001))
say(gameforge.energy_system._100_say)
else
say_title(mob_name(20001))
say(item_name(item_vnum))
say(gameforge.energy_system._110_say)
local s = select (gameforge.energy_system._120_select,gameforge.energy_system._130_select)
if s == 1 then
item.remove()
local r = number(1, 100)
local n
if levelLimit >= 40 and levelLimit <= 75 then
n = energy_system.getItemNum ("40to75",r)
elseif levelLimit > 75 and levelLimit <= 85 then
n = energy_system.getItemNum ("75to85",r)
else
n = energy_system.getItemNum ("upto85",r)
end
if (n == 0) then
say_title(mob_name(20001))
say(gameforge.energy_system._140_say)
else
pc.give_item2(setting.energy_stone, n)
say_title(mob_name(20001))
say(string.format(gameforge.energy_system._150_say,n))
end
end
end
end
when 20001.chat.gameforge.energy_system._160_npcChat begin
local setting = energy_system.setting()
local need = 30
say_title(mob_name(20001))
say(string.format(gameforge.energy_system._170_say,need))
wait()
if pc.get_level() < 40 then
say_title(mob_name(20001))
say(gameforge.energy_system._060_say)
return
end
if pc.count_item(setting.energy_stone) < need then
say_title(mob_name(20001))
say(string.format(gameforge.energy_system._180_say,need))
return
else
say_title(mob_name(20001))
say(string.format(gameforge.energy_system._190_say, need))
wait()
end
local charge = 1000
say_title(mob_name(20001))
say(string.format(gameforge.energy_system._200_say, charge))
local s = select (gameforge.energy_system._210_select,gameforge.energy_system._220_select)
if s == 2 then
say_title(mob_name(20001))
say(gameforge.energy_system._230_say)
return
end
if pc.get_gold() < charge then
say_title(mob_name(20001))
say(gameforge.energy_system._240_say)
return
end
if pc.count_item (setting.energy_stone) < need then
return
end
pc.change_gold(-charge)
pc.remove_item(setting.energy_stone, need)
if pc.getqf("hasExperience") == 0 then
say_title(mob_name(20001))
say(gameforge.energy_system._250_say)
pc.give_item2 (setting.charging_stone, 1)
pc.setqf("hasExperience", 1)
return
end
local r = number (1, 100)
if r > 30 then
say_title(mob_name(20001))
say(gameforge.energy_system._260_say)
return
end
say_title(mob_name(20001))
say(gameforge.energy_system._270_say)
pc.give_item2(setting.charging_stone, 1)
end
end
endIar acesta este de la butonul de stergere item din inventar :
Cod: Selectaţi tot
quest borrar_items begin
state start begin
when login begin
cmdchat("BORRAR QID|"..q.getcurrentquestindex())
end
when button or info begin
cmdchat("BORRAR INPUT|1")
local shang = split(input(cmdchat("BORRAR SEND|")), "|")
cmdchat("BORRAR INPUT|0")
if shang[1] == "BORRAR" then
borrar_items.Borrar(tonumber(shang[2]), tonumber(shang[3]))
end
end
function Borrar(slot, vnum)
item.select_cell(slot)
local item_vnum, item_count, item_id = item.get_vnum(), item.get_count(), item.get_id()
mysql_query("INSERT INTO log.log_delete (account_id, name, id_item, vnum, count, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2) VALUES("..pc.get_account_id()..", '"..pc.get_name().."', "..item_id..", "..item_vnum..", "..item_count..", "..item.get_attr(0)[1]..", "..item.get_attr(0)[2]..", "..item.get_attr(1)[1]..", "..item.get_attr(1)[2]..", "..item.get_attr(2)[1]..", "..item.get_attr(2)[2]..", "..item.get_attr(3)[1]..", "..item.get_attr(3)[2]..", "..item.get_attr(4)[1]..", "..item.get_attr(4)[2]..", "..item.get_attr(5)[1]..", "..item.get_attr(5)[2]..", "..item.get_attr(6)[1]..", "..item.get_attr(6)[2]..", "..item.get_socket(0)..", "..item.get_socket(1)..", "..item.get_socket(2)..");")
if is_test_server() then
syschat("---- Debug ----")
syschat("Vnum: "..tostring(vnum))
syschat("Slot: "..tostring(slot))
syschat("ID: "..tostring(item.get_id()))
syschat("---- End_Debug ----")
end
item.remove_stack()
end
end
end





