Ghi nhật ký gỡ lỗi trong mod Factorio


8

Tôi đang viết một bản mod Factorio và tôi đang cố gắng tìm hiểu tại sao nó không hoạt động. Tôi có thể thực hiện một số loại lỗi / ghi nhật ký gỡ lỗi ở đâu đó không? Cả thủ công (biến in) và báo cáo lỗi đơn giản (truy cập thuộc tính không tồn tại) sẽ rất tuyệt. Tôi biết về player.printphương thức này, nhưng tôi chỉ có thể lấy nó để in chuỗi ký tự chứ không phải các đối tượng:

script.on_event(defines.events.on_player_created, function(event)
    pcall(function()
        local player = game.get_player(event.player_index)
        player.print("Hi player") -- works
        player.print(player) -- does not work. Any error message would be nice
    end)
end)

Tôi cũng đã thử tệp nhật ký trong thư mục ứng dụng và các chế độ gỡ lỗi khác nhau (F5 / F6 trong trò chơi), nhưng cho đến nay vẫn chưa tìm thấy gì hữu ích.


Có lẽ bạn đang cho rằng nó sẽ tự động tạo ra một chuỗi từ đối tượng? Bạn có thể cần phải tạo và sử dụng rõ ràng một số loại ToString()phương pháp.
MichaelHouse

Câu trả lời:


3

Theo bài viết diễn đàn này

Bạn có thể khởi chạy trò chơi từ bảng điều khiển, vì vậy chức năng in tiêu chuẩn sẽ gửi đầu ra của nó đến đó. Bạn có thể chuyển hướng đầu ra đó đến tập tin.

Có một máy in khá đẹp, có thể in bảng lua - cú pháp là print(serpent.block(arg)).


1
Nghe có vẻ hay, nhưng nó không hoạt động. Chạy factorio.exetừ dấu nhắc lệnh bắt đầu trò chơi, nhưng trả về ngay lập tức và tôi chỉ thấy đầu ra của dòng nhật ký đầu tiên. Việc sử dụng start factorio.exe /waitcũng không hoạt động, bởi vì nó chỉ mở một cửa sổ giao diện điều khiển và hoàn toàn không bắt đầu trò chơi.
Jorn

1

Bạn có thể sử dụng hàm error () gửi đến Factio-current.log

Ví dụ:

lỗi ("Chào người chơi")

hoặc là

lỗi (serpent_block (tên_bảng))


serpent_block -> serpent.block
Tony Baguette

Nó thực sự hiển thị một cửa sổ bật lên "lỗi" với thông báo khi tải trò chơi và ngăn mod được tải.
Tony Baguette

0

Có một phương thức write_file trong LuaGameScript.

game.write_file("mylog.log", serpent_block(table_name)) -- normal write
game.write_file("mylog.log", serpent_block(table_name), true) -- appending

( http://lua-api.factorio.com/0.15.23/LuaGameScript.html#LuaGameScript.write_file )

Các tập tin sẽ kết thúc trong một thư mục được gọi script-outputdưới %APPDATA%/Factorio, bên cạnh scenariosthư mục của bạn .


1
Có vẻ như không hoạt động từ data.lua
LOST

1
data.lua không phải là một kịch bản thời gian chạy bình thường. Mục đích của nó là để mô tả một cấu trúc dữ liệu và không có gì khác. Hầu hết (tất cả?) Các đối tượng thời gian chạy không thể truy cập được trong quá trình diễn giải. Cụ thể, đối tượng LuaGameScript toàn cầu được gọi là trò chơi thậm chí không tồn tại sau đó.
Martin Lütke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.