Updating the wiki mission scripting tutorial
-
- Posts: 38
- Joined: Mon Sep 20, 2021 3:18 pm
Updating the wiki mission scripting tutorial
Hi!
I've had a go at refurbishing the mission scripting tutorial in the wiki pages a bit. I'm only getting started coding in lua myself but I'd reckon it's all within reach if I give it a month or so. First part updated is: Interacting with the game: Event-based programming, where I've just tweaked it to be correct, no big changes.
I'm now looking into: Interacting with the player: BBS forms, which is a long chapter and a bit heavy on information. I think it could be improved by splitting it into two parts. First part is on strings and internationalization and would consist of paragraphs 1 and 6, Internationalization and Mission flavours. I'll also add a part on string variables, {name}, {price}, etc. First draft almost ready.
I've had a go at refurbishing the mission scripting tutorial in the wiki pages a bit. I'm only getting started coding in lua myself but I'd reckon it's all within reach if I give it a month or so. First part updated is: Interacting with the game: Event-based programming, where I've just tweaked it to be correct, no big changes.
I'm now looking into: Interacting with the player: BBS forms, which is a long chapter and a bit heavy on information. I think it could be improved by splitting it into two parts. First part is on strings and internationalization and would consist of paragraphs 1 and 6, Internationalization and Mission flavours. I'll also add a part on string variables, {name}, {price}, etc. First draft almost ready.
-
- Posts: 38
- Joined: Mon Sep 20, 2021 3:18 pm
Re: Updating the wiki mission scripting tutorial
Q - What am I missing here? I'm trying to make a simple hello program work. It works something like four times out of five.
data/modules/hello.lua
data/modules/hello.lua
Code: Select all
local Event = require 'Event'
local Comms = require 'Comms'
local onGameStart = function ()
Comms.Message ('Welcome to Pioneer!')
end
Event.Register("onGameStart", onGameStart)
Re: Updating the wiki mission scripting tutorial
zonkmachine: there is no fixed order in which event callbacks are executed, meaning that the onGameStart callback that clears the comms log cache as part of a new game can run after the callback in which you've logged the start message. I'd recommend creating a Timer with a half-second delay that is responsible for actually logging the message.
Re: Updating the wiki mission scripting tutorial
@zonkmachine Huge thumbs up for updating the lua scripting on the wiki. It's been on the back of my mind to do for years. I think it was outdated already when I joined in 2013. I think your plan for the wiki sounds good, feel free to take "ownership" of that section of the wiki.
My only recent contribution was a page for a simple "hello world" script for making imgui-windows, based on code from sturnclaw, which you also can feel free to clarify/edit, (it could also be adopted to putting "hello world" tab to the debug window, or other screens in the game).
By the way, due to my many-year-old-plan to update the lua scripting page, I took some notes on bugs I had when I started with lua (my background then was C++), so feel free to incorporate the below to the wiki, in some form, if you find it valuable:
My only recent contribution was a page for a simple "hello world" script for making imgui-windows, based on code from sturnclaw, which you also can feel free to clarify/edit, (it could also be adopted to putting "hello world" tab to the debug window, or other screens in the game).
By the way, due to my many-year-old-plan to update the lua scripting page, I took some notes on bugs I had when I started with lua (my background then was C++), so feel free to incorporate the below to the wiki, in some form, if you find it valuable:
Code: Select all
if false == 0 then
-- this will never be evaluated, since a bool is never a number
print("1. never be here")
elseif true == 1 then
-- this will never be evaluated
print("2. never be here")
elseif 0 then
-- all numbers are true, including 0!
print("always here")
else
error("we will never come here")
end
-- Only "nil" and "false" are evaluated as false.
-
- Posts: 38
- Joined: Mon Sep 20, 2021 3:18 pm
Re: Updating the wiki mission scripting tutorial
Thanks for the feedback!
@sturnclaw Thanks! I also got the tip on irc to use onShipDocked by @joonicks. I'll try and use both methods.
@impaktor Yep. Some of the concepts of Lua takes some getting used to. That code brings up the ones that got me the first time I looked into Lua. I'll try and fit it in somewhere. :)
I've created separate a new page, Strings and translation, and removed the corresponding part from Interacting with the player: BBS forms. It still needs some tweaks but in large I'm happy with it. All code snippets has been tested to work.
@sturnclaw Thanks! I also got the tip on irc to use onShipDocked by @joonicks. I'll try and use both methods.
@impaktor Yep. Some of the concepts of Lua takes some getting used to. That code brings up the ones that got me the first time I looked into Lua. I'll try and fit it in somewhere. :)
I've created separate a new page, Strings and translation, and removed the corresponding part from Interacting with the player: BBS forms. It still needs some tweaks but in large I'm happy with it. All code snippets has been tested to work.
Re: Updating the wiki mission scripting tutorial
Thanks for the new wiki page zonkmachine! I've made a few minor edits and pointed the documentation to the Lua 5.2 manual (as that's the Lua version that Pioneer uses), but overall it's a very useful resource!
One point of clarification though - I've (sometime in the last year or so) fixed the issue where the game would crash if it can't find a language-specific translation file (and it also shouldn't crash if the requested translation resource doesn't exist at all); I'd appreciate it if you could confirm if that part of the wiki page is still valid, and if you still get a crash for whatever reason please report that on github.
One point of clarification though - I've (sometime in the last year or so) fixed the issue where the game would crash if it can't find a language-specific translation file (and it also shouldn't crash if the requested translation resource doesn't exist at all); I'd appreciate it if you could confirm if that part of the wiki page is still valid, and if you still get a crash for whatever reason please report that on github.
-
- Posts: 38
- Joined: Mon Sep 20, 2021 3:18 pm
Re: Updating the wiki mission scripting tutorial
@sturnclaw Thanks for the improvements! I couldn't replicate the issue with Pioneer crashing on missing translations. I didn't write that note though. @impaktor did.
Re: Updating the wiki mission scripting tutorial
Probably an old left-over note from before the improvement was merged; I'm also unable to reproduce the crashes so feel free to remove that section :D
Re: Updating the wiki mission scripting tutorial
Yeah, I wrote that a few days ago, before the PR went up. I should remove the part about crashing.
-
- Posts: 38
- Joined: Mon Sep 20, 2021 3:18 pm