Files
Leviathan/GameServer/AziaMafiaScriptsBackup/Funzone/npc/Npc Job 2.lua
T
2026-06-01 12:46:52 +02:00

378 lines
11 KiB
Lua

function init_Job(my_job)
local evo_class = {}
local full_evo_class = {}
--gaia
if my_job == 100 then
color = "<#FFA500><bold>"
full_evo_class[120] = { 101,110,120 } --Mercenaire,Gladiateur,Berserker
full_evo_class[121] = { 101,111,121 } --Mercenaire,Sagittaire,Sentinelle
full_evo_class[122] = { 102,112,122 } --Mystique,Druide,Archidruide
full_evo_class[123] = { 102,113,123 } --Mystique,Chaman,Kahuna
full_evo_class[124] = { 103,114,124 } --Dresseur,Animiste,Métamorphe
--Classe ADD
-- OFF full_evo_class[362] = { 360,361,362 } --Maitre d'Armes OFF
full_evo_class[337] = { 335,336,337 } --Enchanteur
full_evo_class[340] = { 338,339,340 } --Lancier
evo_class[100] = { 120 , 121 , 122 , 123 , 124 , 337 , 340} --, 337 , 340
end
--deva
if my_job == 200 then
color = "<#04BE04><bold>"
full_evo_class[220] = { 201,210,220 } --Chevalier,Paladin,Templier
full_evo_class[221] = { 201,211,221 } --Chevalier,Champion,Héros
full_evo_class[222] = { 202,212,222 } --Clerc,Sage,Erudit
full_evo_class[223] = { 202,213,223 } --Clerc,Prêtre,Oracle
full_evo_class[224] = { 203,214,224 } --Charmeur,Belluaire,Bestiaire
--Classe ADD
full_evo_class[359] = { 357,358,359 } --Archimage
full_evo_class[346] = { 344,345,346 } --Trappeur
full_evo_class[353] = { 351,352,353 } --Prophete
evo_class[200] = { 220 , 221 , 222 ,223, 224 , 359 , 346 , 353} --, 359 , 346 , 353
end
--328 class_archimage
--329 class_archimage
--330 class_archimage
--Asura
if my_job == 300 then
color = "<#FF5483><bold>"
full_evo_class[320] = { 301,310,320 } --Rôdeur,Assassin,Exécuteur
full_evo_class[321] = { 301,311,321 } --Rôdeur,Traqueur,Prédateur
full_evo_class[322] = { 302,312,322 } --Mage,Elémentaliste,Magicien du Chaos
full_evo_class[323] = { 302,313,323 } --Mage,Sorcier,Nécromancien
full_evo_class[324] = { 303,314,324 } --Invocateur,Cabaliste,Démoniste
--Classe ADD
full_evo_class[356] = { 354,355,356 } --ninja
full_evo_class[343] = { 341,342,343 } --Eclaireur
evo_class[300] = { 320 , 321 , 322 , 323 , 324 , 356 , 343} -- , 356 , 343
end
return full_evo_class , evo_class ,color
end
function NPC_JobChange_selection_job()
local evo_class = {}
local full_evo_class = {}
my_job = get_value( "job" )
local classid = {100,101,102,103,110,111,112,113,114,120,121,122,123,124,200,201,202,203,210,211,212,213,214,220,221,222,223,224,300,301,302,303,310,311,312,313,314,320,321,322,323,324,325,326,327,354,355,356,357,358,359,328,329,330,360,361,362,335,336,337,338,339,340,341,342,343,344,345,346,351,352,353}
local classname = {10100,10101,10102,10103,10110,10111,10112,10113,10114,10120,10121,10122,10123,10124,10200,10201,10202,10203,10210,10211,10212,10213,10214,10220,10221,10222,10223,10224,10300,10301,10302,10303,10310,10311,10312,10313,10314,10320,10321,10322,10323,10324,15000,15000,15000,99889,99889,99889,99922,99922,99922,99922,99922,99922,99979,99979,99979,10325,10325,10325,10326,10326,10326,10327,10327,10327,10328,10328,10328,10485,10485,10485}
local classlevel = {10,50,100,200} --{10,50,100,200}
local color = ""
full_evo_class ,evo_class ,color = init_Job(my_job)
dlg_title( "Select Class" )
dlg_text( "Changement de classe possible dès le Lv 1" )
for i = 1, table.getn(evo_class[my_job]) do
if evo_class[my_job][i] > 0 then
next_class = evo_class[my_job][i]
for y = 1, table.getn(classid) do
if classid[y] == next_class then
mi = y
end
end
name = classname[mi]
if next_class >= 328 then -- New class
color = "<#008FFF><bold>"
name = sconv("<color>x","x" , "@" .. name ,"<color>" , color )
else
name = sconv("<color>x","x" , "@" .. name ,"<color>" , color )
end
job_depth = get_value( "job_depth" ) + 1
if gv("lv") >= 1 then --if gv("lv") >= classlevel[job_depth] then
dlg_menu( name, "dlg_special('confirm_window', 'learn_class_npc_master(".. my_job ..", ".. next_class ..")' , '" .. name .. "' )" )
else
message("vous n'avez pas le level requis pour changez de classe")
return
end
end
end
dlg_menu( "@90010001", '' )
dlg_show()
end
function learn_class_npc_master(my_job,master_class)
local evo_class = {}
local full_evo_class = {}
local color = ""
full_evo_class ,evo_class ,color = init_Job(my_job)
if get_value( "job" ) == my_job then
for i = 1 , table.getn(full_evo_class[master_class]) do
learn_class_npc(full_evo_class[master_class][i], get_value( "job" ) )
-- private_notice("log up class = " .. full_evo_class[master_class][i] )
end
else
--cprint("No Crash Server =) ")
end
set_value( "hp" , get_value( "max_hp") )
set_value( "mp" , get_value( "max_mp") )
end
function learn_class_npc(class1,my_job)
if get_value( "job" ) == my_job then
cp = gv("jp")
skillclass()
class(class1)
learn_skill_cmd()
sv("jp", cp)
deletebuffclass()
fix_my_clv()
sv("tp", "0")
else
--cprint("No Crash Server =) ")
end
end
function skillclass()
------------------------------------------ FULL CLASSE SKILL ---------------------------
cp = gv("jp")
sv("tp", "20")
if gv("permission") < 50 then
sv("permission", "1")
end
job = get_value( "job" )
learn_all_skill2()
sv("jp",cp)
fix_my_clv()
sv("tp", "0")
if gv("permission") < 50 then
sv("permission", "0")
end
if get_value( "job_depth" ) == 3 then
set_value( "job_level" , 60 )
end
end
function class( job_id )
local current_job, current_jlv, job_depth
current_jlv = get_value( "job_level" )
local npc_id = get_npc_id()
current_job = get_value( "job" )
job_depth = get_value( "job_depth" )
if job_depth == 0 then
set_value( "job_0", current_job )
set_value( "jlv_0", 10 )
elseif job_depth == 1 then
set_value( "job_1", current_job )
set_value( "jlv_1", 50 )
elseif job_depth == 2 then
set_value( "job_2", current_job )
set_value( "jlv_2", 50 )
elseif job_depth == 3 then
set_value( "job_3", current_job )
set_value( "jlv_3", current_jlv )
end
job_depth = job_depth + 1
set_value( "job" , job_id )
set_value( "job_level" , 1 )
set_value( "job_depth" , job_depth )
end
function learn_skill_cmd()
cp = gv("jp")
skillclass()
sv("jp", cp)
end
function fix_my_clv()
local current_job, current_jlv, job_depth
job_depth = get_value( "job_depth" )
if job_depth == 0 then
set_value( "job_level" , 10 )
elseif job_depth == 1 then
set_value( "job_level" , 50 )
elseif job_depth == 2 then
set_value( "job_level" , 50 )
elseif job_depth == 3 then
Clv_Max = tonumber(get_flag("Clv_Max")) or 60
set_value( "job_level" , Clv_Max )
end
end
function reset_my_class(price)
if gv("job_depth") == 3 then
Clv_Max = tonumber(get_flag("Clv_Max")) or 0
if Clv_Max < gv("job_level") then
set_flag("Clv_Max", gv("job_level") )
end
end
if price > 0 then
if gv("gold") >= price then
sv("gold" , gv("gold") - price )
else
return
end
end
deletebuffclass()
cp = gv("jp")
reset_skill(0)
set_value( "job_0", 0 )
set_value( "jlv_0", 0 )
set_value( "job_1", 0 )
set_value( "jlv_1", 0 )
set_value( "job_2", 0 )
set_value( "jlv_2", 0 )
set_value( "job_3", 0 )
set_value( "jlv_3", 0 )
set_value( "job_level" , 1 )
set_value( "job_depth" , 0 )
local race = get_value( "race" )
if race == 4 then
-- deva
set_value( "job" , 200 )
elseif race == 5 then
-- asura
set_value( "job" , 300 )
else
-- 3 = gaia
set_value( "job" , 100 )
end
sv("jp", cp)
--if id == 1 then
-- set_account_flag("rb", get_os_time() )
--end
-- private_notice("Reborned")
end
function change_my_race()
dlg_title( "@90300401" )
dlg_text( "Race Change Selection<br>Coeur homo requis (Free pour lvl < 160)" )
if gv("race") == 4 then
dlg_menu( "Asura", "dlg_special('confirm_window', 'raceconf(5)' , 'Change in Asura Race ?' )" )
dlg_menu( "Gaia", "dlg_special('confirm_window', 'raceconf(3)' , 'Change in Gaia Race ?' )" )
elseif gv("race") == 5 then
dlg_menu( "Deva", "dlg_special('confirm_window', 'raceconf(4)' , 'Change in Deva Race ?' )" )
dlg_menu( "Gaia", "dlg_special('confirm_window', 'raceconf(3)' , 'Change in Gaia Race ?' )" )
elseif gv("race") == 3 then
dlg_menu( "Deva", "dlg_special('confirm_window', 'raceconf(4)' , 'Change in Deva Race ?' )" )
dlg_menu( "Asura", "dlg_special('confirm_window', 'raceconf(5)' , 'Change in Asura Race ?' )" )
end
end
function raceconf(race)
message(gv("permission"))
if gv("job_depth") == 3 then
Clv_Max = tonumber(get_flag("Clv_Max")) or 0
if Clv_Max < gv("job_level") then
set_flag("Clv_Max", gv("job_level") )
end
end
if find_item(601100284) >= 1 or gv("permission") == 100 or gv("level") <= 160 then
deletebuffclass()
cp = gv("jp")
set_race(race)
sv("jp", cp)
if gv("permission") == 100 or gv("level") <= 160 then
message("Free For MJ Or Level < 160")
else
remove_item( get_item_handle (601100284) ,1)
end
else
message("Vous n'avez pas de Coeur pour changer de Race !")
end
end
function deletebuffclass()
array = {147013,314067,314055,1501,1502,1503,1504,314083,12655,6513,6522,164001,164003,1513,13401,314072,314023,6508,6520,12671,12673,12672,12674,6506,12679,314086,314067,86400,1013,1014,1202,1304,1306,1307,1326,1501,1502,1503,1504,1509,1513,1516,1517,1518,1519,2480,2505,2506,2507,2508,5009,5559,5560,5565,6004,6006,6007,6012,6013,6016,6505,6506,6513,6520,6521,6522,10140,12021,12501,12502,12503,12507,12601,12602,12611,12622,12624,12626,12636,12655,12668,12671,12672,12673,12674,12678,12679,12681,12682,12684,13210,13222,13401,13411,13423,13424,13425,13426,13427,13428,13429,13430,13431,13433,13435,13458,13460,13472,13492,13601,14012,15130,15160,15166,15170,15180,15190,23492,99784,99871,101409,126010,126240,126309,132100,134290,134310,145004,145005,145006,145008,145013,145208,145213,145218,145219,145224,145225,145236,145238,145525,145526,146002,146007,146009,147007,147008,147009,147022,147101,147109,147110,147169,147173,147177,147181,162501,163205,163403,163404,163405,163406,163407,163409,163418,163423,163424,163425,163426,163427,163428,163429,163432,163433,163434,163435,163440,163441,163442,163444,163445,163446,163448,163449,163707,164001,164002,164003,164805,201031,201054,201055,201060,201078,201079,201080,202002,202004,203003,203005,203008,307005,307006,311006,313205,314012,314015,314016,314017,314018,314019,314020,314021,314022,314024,314026,314027,314028,314029,314033,314035,314037,314038,314039,314041,314044,314047,314049,314054,314055,314056,314057,314058,314059,314060,314064,314065,314066,314067,314069,314070,314071,314076,314078,314079,314080,314081,314083,314086,314087,314091,314092,314095,314099,314100,314101,314121,314123,314125,314126,314135,314999,316999,320004,320006,320008,550109,914057,1260100,1456519,1634230,1634231,1634240,3140350,3140890,41102395,41102396,41102397,41102398,41102401,41102402,41102403,41102404,41102405,41102406,41102407,41102408,41102409,41102410,41102411,41102412,41102413,41102414,41102415,41102441,41102442,41102443,41102463,41102512,41102513,41102514,41102515,41103001,41103002,41103003,41103004,41103005,41103006,41103007,41103008,41103010,41103011, 41103012,41103016,41103026}
for i = 1, table.getn(array) do
if get_state_level(array[i] ) > 0 then
--delete buff
remove_state(array[i], get_state_level(array[i]))
end
end
end