Quote:
Originally Posted by ichfrankunddu
Kann mir bitte jemand eine Quest für eine Truhe erstellen?
Man sollte mehrere Items aus 1 Truhe bekommen.
Die IDs kann ich ja selbst eintragen.
Danke im vorraus
LG
|
Das kommt in die questlib.lua
PHP Code:
function loadTreasureContent()
return
treasureContent = {
--iMax = number of items in array, in this example it is 6 for both
--vnum1... = treasure box vnums, array contains a list of content vnums.
--item1... = item vnum of box content
--quant1... = item quantity of related item
--giveType = "all" == give all items; "random" == give random items enum times
--The second line is an example how to use iMax, vnum and giveType (missing items and quantities because I cant be bothered to look some up)
[vnum1] = {iMax, giveType, item1, quant1, item2, quant2, item3, quant3, item4, quant4, item5, quant5, item6, quant6},
[90000] = {6, "random", item1, quant1, item2, quant2, item3, quant3, item4, quant4, item5, quant5, item6, quant6},
}
end
function treasureGiveMulti(vnum, enum, giveType)
if giveType = "all" then
for i = 1,treasureContent[vnum][1],2 do
pc.give_item2(treasureContent[vnum][2+i],treasureContent[vnum][itemIDX+1])
end
elseif giveType = "random" then
for i = 1,enum,1 do
local itemIDX = 1+2*number(1,treasureContent[vnum][1]))
pc.give_item2(treasureContent[vnum][itemIDX],treasureContent[vnum][itemIDX+1])
end
else
syschat("ERROR: Item has unknown giveType. Please speak with the development staff.")
end
end
Das ist deine Quest
PHP Code:
quest treasureMulti begin
state start begin
-- put all boxes in a vnum range to optimize item.use condition, keep them as tight as possible (e.g. vnum1 being 90000 and vnum10 being 90009)
when item.use with item.vnum() > minVnum and item.vnum() < maxVnum begin
-- list of treasure box vnums of the treasureMulti system
local treasureVnums = {vnum1, vnum2}
local content = loadTreasureContent()
-- if vnum1 is supposed to give 3 items, event flag "vnum1" has to be 3.
local getEnum = game.get_event_flag(tostring(item.vnum))
for index, value in pairs(treasureVnums) do
if item.vnum == value then
treasureGiveMulti(value,getEnum,content.treasureContent[value][2])
end
end
end
end
end
Zu beachten ist:
- Die Boxen müssen Questitems sein
- Für jede neue Box die vnum in treasureVnums in der quest einfügen und eine neue Zeile in die Tabelle treasureContent
- Du solltest in der Lage sein beliebig viele Items in jede box zu packen, iMax ist dabei wie beim beispiel die anzahl aller items in der box.
WICHTIG
Ich habe momentan keine Möglichkeit den Code zu testen und hab das auch nur so in ~10 minuten zusammengerattert, kann also sehr gut sein dass ich u. U. Syntaxfehler habe oder der Code nicht so ganz funktioniert, in dem Fall mir eine PM mit dem Compiler-Error schicken und ich fixe das.