Új quest funkció segítség

Indította TheSLESH, 2017-01-29, 15:47:19

Egy új quest funkciót próbáltam írni, amivel tömben gyüjthetem össze, a szörnyek álltal adott exp-t.
Ne kelljen minden szörnyre külön-külön megírni, hanem tömböl olvassa ki.

itt van a próbálkozásom:
function xpadas(mobnev,mobid,kapottexp)
local mobok = {
{"Főork", 691, 3},
{"Sötét vezető", 791, 3},
{"Sötét szellem-vezető", 792, 3},
{"Lykos", 191, 1},
{"Scrofa", 192, 1},
}
local mobnev = mobok[1]
local mobid = mobok[2]
local kapottexp = mobok[3]
say("Sikeresen megölted "..mobnev.." szörnyet!")
say("Kaptál 0."..kapottexp.."% exp-t!")
end
when mobid.kill begin

boss_fejl.xpadas("mobnev ",mobid,kapottexp)
chat("teszt"..mobid..""..kapottexp.."")
end
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Én erre azt mondanám h halott mint h több sebből vérzik ;D

function xpadas(mobnev,mobid,kapottexp)
Minek van paraméter ha nem használod őket?

local mobnev = mobok[1]
local mobid = mobok[2]
local kapottexp = mobok[3]

Ez mi? Nem egydimenziós tömbről van szó ??? másrészt miért a paraméterek neveit használod itt?

Nem tudom, nem sürün csináltam még tömböt, csak próbáltam össze hozni.
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

function xpadas(mob_id)
local mobok = {
{"Főork", 691, 3},
{"Sötét vezető", 791, 3},
{"Sötét szellem-vezető", 792, 3},
{"Lykos", 191, 1},
{"Scrofa", 192, 1},
}
i = 1
while ((mobok[i][2] ~= mob_id) and (i < table.getn(mobok))) do
i = i+1
end
local mob_nev = mobok[i][1]
local mob_exp = mobok[i][3]
say("Sikeresen megölted "..mob_nev.." szörnyet!")
say("Kaptál 0."..mob_exp.."% exp-t!")
end

when mob_id.kill begin
boss_fejl.xpadas(mob_id)
end

Esetleg így, ha nem írtam el semmit.

2017-01-29, 16:13:14 #4 Utolsó szerkesztés: 2017-01-29, 16:16:47 Szerző: TheSLESH
sajnos nem jó, ha a quest tetejére teszem, nem fut le, ha a legajára teszem, le fut a quest, de hiába ölök meg egy főorkot semmi sem történik.
Közben próbáltam még így is:

unction xpadas(mobnev,mobid,kapottexp)
local mobname = npc.get_name()
local mobok = {
[691] = {"Főork", 3},
[791] = {"Sötét vezető", 3},
[792] = {"Sötét szellem-vezető", 3},
[191] = {"Lykos", 1},
[192] = {"Scrofa", 1},
}
local mob_id = mobok[mobname][1]
local kapottexp = mobok[mobname][2]
end


Üzenet összefésülés: 2017-01-29, 16:16:47

state start begin alá teszem, nem fut le az ez alatt lévő többi dolog. Ha a többi dolog alá teszem, akkor pedig lefutnak, de nem történik semmi ha megölöm.
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

quest bossexp begin
state start begin
function bossexp.give_exp(mobvnum)
local mobok = {
[691] = 3,
[791] = 3,
[792] = 3,
[191] = 1,
[192] = 1
}
chat("Kapsz EXP-t: "..mobok[mobvnum].." Mer megölted: "..mob_name(mobvnum))
end
when 691.kill or 791.kill or 792.kill or 191.kill or 192.kill begin
bossexp.give_exp(mob.get_vnum())
end
end
end


"Az a baj a világgal, hogy a hülyék  mindenben holtbiztosak, az okosak meg tele vannak kételyekkel."
              Bertrand Russel


2017-01-30, 17:22:05 #6 Utolsó szerkesztés: 2017-01-30, 17:56:04 Szerző: TheSLESH
Mingyárt kiprobálom a te változatod is, és köszönöm. Meg egy olyan kérdésem lenne ,hogy string formatban
Hogyan lehet tizedest kiiratni?  Tudom ,hogy 0.2f-el de sajnos nem bírom egybe rakni nem csináltam soha meg.
Tehát van egy qf, ami mondjuk 1000ig megy, de a 993 az 99.3 lenne.

Üzenet összefésülés: 2017-01-30, 17:38:49

mob.get_vnum-t nem ismeri fel.

Üzenet összefésülés: 2017-01-30, 17:49:50

Don-ét kicsit átalakítottam, és az eredmény az lett, hogy a chat("3") már nem fut le, de az 1 és a 2 igen.
ez a sor kikementelésével, lefut az egész.
local mob_exp = mobok[mob_vnum(mobvnum)][2]
pc.setqf("bossszint", pc.getqf("bossszint") + mob_exp)


de pont ez lenne a lényeg.


function xp_adas(mobvnum)
local mobok = {
[691] = 3,
[791] = 3,
[792] = 3,
[191] = 1,
[192] = 1
}
chat("1")
--chat("Kapsz EXP-t: "..mobok[mobvnum].." Mer megölted: "..mob_name(mobvnum))
chat("Gratulálok!")
local mob_exp = mobok[mob_vnum(mobvnum)][2]
pc.setqf("bossszint", pc.getqf("bossszint") + mob_exp)

end
when 691.kill or 791.kill or 792.kill or 191.kill or 192.kill begin
chat("2")
boss_fejl.xp_adas(mob_vnum(mobvnum))
chat("3")
end


Üzenet összefésülés: 2017-01-30, 17:56:04

chat("Gratulálok!  MOBID: "..mob_vnum(mobvnum).."")

igy pedig, azt irja ki hogy mobid :0
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Idézetet írta: TheSLESH Dátum 2017-01-30, 17:22:05
Mingyárt... nem bírom


boss_fejl.xp_adas(mob_vnum(mobvnum))

chat("Gratulálok!  MOBID: "..mob_vnum(mobvnum).."")




xp_adas(mobvnum)
local mobok = {
[691] = 3,
[791] = 3,
[792] = 3,
[191] = 1,
[192] = 1
}
chat("2")
--chat("Kapsz EXP-t: "..mobok[mobvnum].." Mer megölted: "..mob_name(mobvnum))
chat("Gratulálok!")
local mob_exp = mobok[mobvnum]
pc.setqf("bossszint", pc.getqf("bossszint") + mob_exp)

end
when 691.kill or 791.kill or 792.kill or 191.kill or 192.kill begin
chat("1")
boss_fejl.xp_adas(npc.get_race())
chat("3")
end


"Az a baj a világgal, hogy a hülyék  mindenben holtbiztosak, az okosak meg tele vannak kételyekkel."
              Bertrand Russel


Köszönöm nodus, tökéletes! Már csak annyi kérdése lenne, hogy string.formattal, hogy lehet a mob_exp nevű quest flagot kiiratni úgy, hogy a 100-ad részét írja? Tehát ha a questflag 993 mondjuk, akkor 99.3-at írjon.
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

2017-01-31, 15:19:56 #10 Utolsó szerkesztés: 2017-01-31, 15:21:31 Szerző: [VIP]P3NG3R
Mondjuk elosztod 100-zal? ???
print(string.format("%.2f", 993/100))


Csakhogy 993-nak a 99.3 nem század része :D

Ha a 993-at 100-al osztod az 9.93 lesz.  :'(

Ő a tized részére kíváncsi szerintem.

Tehát 10-el oszd el és JÁRJ BE MATEKRA.

Észrevettem ám, mikor már elküldtem :)

Idézetet írta: TheSLESH Dátum 2017-01-31, 13:37:34
hogy lehet a mob_exp nevű quest flagot kiiratni úgy, hogy a 100-ad részét írja?

Ez ilyen "jobbó' vagy balbó kéred a lángos?".