Board logo

標題: 動態變量(儲存) [打印本頁]

作者: o3124568    時間: 2020-8-12 15:32     標題: 動態變量(儲存)

[Youtube]9nrYjrD7LNg[/Youtube]
貌似內建的youtube功能掛了
https://www.youtube.com/watch?v=9nrYjrD7LNg

其實一直覺得石器Lua架構寫起來真的很麻煩
相比在其他遊戲撰寫的時候,非常的不直觀
只要扯一個視窗,變數(量)的傳遞都極其麻煩
多數都只能使用單一參數seqno做傳遞或者寫死setworkint等等的

原本之前做了sql上的變數儲存 但可能並不適合短暫存取
故又重新做了一次也發現不少問題
好比想做這變數只在關聯NPC的時候留存,結束即刪除
而石器的NCP並沒有這樣的架構

所以又自己額外補了一個deld
除了支援動態變數名稱,也可以自行決定此參數是字串/數值
以結尾$做區分(如果寫過RO腳本就亦同)
複製內容到剪貼板
代碼:
function Talked(meindex, talkerindex , szMes, color )
        if npc.isFaceToFace(meindex, talkerindex) == 1 then
                local token = "Input seqno number you like.\n"
                lssproto.windows(talkerindex, "輸入框", "確定|取消", 0, char.getWorkInt( meindex, "對象"), token)
                char.setd(talkerindex, ".@seqno_count", 0)
                return
        end
end

function WindowTalked (meindex, talkerindex, seqno, select, data)
        if npc.isFaceToFace(meindex, talkerindex) == 1 then
                if select == 2 then
                        return
                end
               
                char.setd(talkerindex, ".@seqno_count", char.getd(talkerindex, ".@seqno_count")+1)
                char.setd(talkerindex, ".@seqno_"..char.getd(talkerindex, ".@seqno_count").."$", data)
               
                local token = "Input seqno number you like.\n"
                local i
                for i = 1, char.getd(talkerindex, ".@seqno_count") do
                        token = token .. "Seqno "..i..": "..char.getd(talkerindex, ".@seqno_"..i.."$").."\n"
                end
               
                lssproto.windows(talkerindex, "輸入框", "確定|取消", 0, char.getWorkInt( meindex, "對象"), token)
                return
        end
end
[ 本帖最後由 o3124568 於 2020-8-12 15:41 編輯 ]




歡迎光臨 We Love SA 石器時代研討中心 (http://lab.welovesa.com/) Powered by Discuz! 6.0.0