"script/tutorial/system ~ HTDRB.png" is not the string you want.
These are arrays:
[1, 7, 9, 10, 9]
['D', 'r', 'a', 'k']
"Drak"
In particular, "Drak" is the same thing as ['D', 'r', 'a', 'k']. Strings are just arrays of characters.
Now ~ is the concatenation operator. A ~ B attaches the array B to the end of A given they have the same dimension. Since strings are arrays of characters, they work the same.
['D', 'r', 'a', 'k'] ~ ['e'] and "Drak" ~ "e" will both give "Drake" and ['D', 'r', 'a', 'k', 'e'].
However "Drak" ~ 'e' does not work since it's essentially trying to do ['D', 'r', 'a', 'k'] ~ 'e', but 'e' is not an array so it will fail. "Drak" ~ ['e'] would work though!
When you use GetCurrentScriptDirectory(), it returns a string with the script's folder, from the DNH root. Like if your script was in the script/tutorial/system folder, GetCurrentScriptDirectory() would return "script/tutorial/system/". This is why when you see it it's usually in the form GetCurrentScriptDirectory() ~ "file.png": this would give "script/tutorial/system/" ~ "file.png" which would be "script/tutorial/system/file.png".
Now the problem by now should be obvious, your string is not what you intend it to be, it's currently looking for a file called "system ~ HTDRB.png" in the script/tutorial directory. While "script/tutorial/system/" ~ "HTDRB.png" would work, it's pretty much redundant since you can just do "script/tutorial/system/HTDRB.png". Clear enough?
Also you need to load the graphic.