Quest [LUA-RELEASE]Funzione l'"a capo automatico" dei dialoghi delle quest

Stato
Discussione chiusa ad ulteriori risposte.

Luscha

Utente Platinum
21 Dicembre 2009
1,883
116
2,593
1,146
Ultima modifica da un moderatore:
Oggi sono qui per regalarvi un addon che farà venire tutti coloro che hanno l'infame compito di creare nuove Quest per i vostri PServer:

Si tratta di una funzione LUA che permette di passare un intero dialogo e che vi ritorna tanti piccoli say() di lunghezza perfettamente conforme al massimo inseribile (52 caratteri per essere pignoli <.<).

Cosa vuol dire in parole spicciole?
Vuol dire semplicemente che invece di fare

Codice:
say_title("Che palle splittare i dialoghi")
say("sopra la panca la capra campa, sotto la panca") 
say("la capra crepa.")
dovendovi contare tutte le volte i caratteri, rischiando anche di sbagliare e trovarvi linee vuote o parole spezzate a metà, con questa nuova funzione potrete semplicemente fare

Codice:
say_title("Che palle splittare i dialoghi")
luscha_said("sopra la panca la capra campa, sotto la panca la capra crepa.")

e la funzione vi farà tutto da sola ;)

eccovi la funzione da mettere infondo a questlib.lua

Codice:
-------SPLIT AUTOMATICO DEI SAY ---------------------
function luscha_said(dialog)
    local line = dialog
    local i, j = string.find(line, "%[ENTER%]")
    if i != nil then
        luscha_said(string.sub(line, 1, i-1))
        luscha_said(string.sub(line, j+1, string.len(line)))
        return
    end
    local says = {}
    while string.len(line) > 52 do
        local done = false
        local i = 52
        while not done do
            local subLine = string.sub(line, 1, i)
            local last = string.sub(line, i, i)
            if last == " " then
                subLine = string.sub(line, 1, i - 1)
                if string.len(line) > 52 then
                    line = string.sub(line, i + 1, string.len(line))
                else
                    line = ""
                end
                done = true
                table.insert(says, subLine)
            else
                if i == 1 then 
                    subLine = string.sub(line, 1, 51)
                    line = string.sub(line, 52, string.len(line))
                    done = true
                    table.insert(says, subLine)
                else
                    i = i - 1
                end
            end
        end
    end
    if line != "" then
        table.insert(says, line)
    end
    for i=1, table.getn(says) do 
        say(says[i])
    end
end
tabulatevela...

Qui invece ci sono le funzioni da aggiungere nel quest_function del vostro locale/quest

Codice:
luscha_said
string.find
string.sub
string.len
table.insert

Enjoy ^_^
 
Questa funzione dell'andare a capo dopo 52 caratteri era stata già introdotta da Mijago, tempo fa con circa 10 righe di codice, postato successivamente su epvp. Volendo si potrebbe creare uno script per notepad, facendo andare a capo il cursore dopo 52 caratteri nel say.
 
Mi piacerebbe molto vederlo tale script, non per altro che per vedere come ha fatto e dove ho sbagliato D:
 
Stato
Discussione chiusa ad ulteriori risposte.