This commit is contained in:
2021-08-11 07:01:57 +10:00
parent 1b8004e6a5
commit 9aaf3ad287
3 changed files with 40 additions and 21 deletions

View File

@ -5,6 +5,17 @@ Examples include:
- You want to replace the entire story route
You can still call the vanilla game's chapters like the intro (call chapter_1) for example but you might want to either copy the vanilla scripts and mix in your edits to have full control
Run the convert.py included in the `mods/` folder
story.py -> one-liner exec('') rpy
for a 'debug' file you can still use rpy and call into it
```
'Name': "Mod Name", 'Label': (the exec string) or label in your rpy
```
for maximum compatibity with other mods (creating no conflicts with names) you will have to use the one-liner exec script
`python yourmod.rpy newmod.rpy`
Keep a `yourmod.rpy.original` included with the `newmod.rpy` as the game does a hash check between both of the contents files to confirm it's the same character for character the exact same for verification reasons.
We also recommend to license the script under `AGPLv3` just like Snoot Game.
You will need to learn bit of Ren'Py & bit of actual Python anyways but you don't have to think too hard in learning anything new other than familiarizing with this game's script.rpy's already defined Character objects and images, you can freely ignore most of the UI and so on for the inexperienced but passionate artist and/or writer.
Textbox limitation: ~300 characters / four lines, the maximum in the vanilla game's script is around roughly ~278 and that only barely overflows to four lines, so <200 characters / three lines of text should be fine.
@ -12,35 +23,41 @@ Textbox limitation: ~300 characters / four lines, the maximum in the vanilla gam
--- Ideal file structure of your mod ---
In the root of the mods folder:
folder_of_your_mod_name
- name_of_storyline.rpy
- storyline.rpy
-> asset_folder
-> images
- asset.png
-> sound
- song.png
-> script_folder
- script.rpy
name_of_storyline.rpy
`name_of_storyline.rpy`
```
init python:
# Modding Support variables
# All mod rpy files must have title of their mod (this shows up on a button)
# and finally the label that controls the flow of dialogue
# and finally the label that controls the flow of dialogue or the execstring
mod_menu_access += [{
'Name': "Mod Name",
'Label': "mod_storyline"
}];
#mod_loader.add_mod(name, label/execstring) #return 'pointer' to your mod
#mod_loader.add_image(name, filename)
#mod_loader.add_variable(name, default)
#mod_loader.get(_id)
image template_sample = Image("mods/folder_of_your_mod_name/asset_folder/asset.png")
mod_loader.add_mod("Mod Example", "mod_storyline")
mod_loader.add_image("asset", "mods/folder_of_your_mod_name/asset_folder/asset.png")
label mod_storyline:
call chapter_1_new
```
script_folder/script.rpy
`script_folder/script.rpy`
```
label chapter_1_new:
show template_sample at scenter
"Sample Text"
python:
mymod = mod_loader.get("Mod Example")
renpy.show(mymod['asset'])
renpy.say("Sample Text")
hide template_sample
play music 'audio/OST/Those Other Two Weirdos.ogg'
@ -48,7 +65,10 @@ label chapter_1_new:
A "Sample Text"
return
```
Do note that we do not write in the normal ren'py way (this also means you would have to translate the original script to a certain degree if you want to add in routes or whatever), save files are indepdenent from other mods and the main game, for example: you can't use the main game save file into your new mixed in mod.
You have to write the dialogue in the python way, all of the ren'py related stuff is possible as it's just syntax sugar for the actual python functions.
The funny thing is I don't even like 'fanfictions' to begin with but this mod support allows these 'fanfictions', ironic.

View File

@ -6,7 +6,7 @@ label chapter_2_new:
renpy.show(mine['template_sample'])
"Sample Text"
$ renpy.hide(mine['template_sample'])
$ exec("renpy.hide(mine['template_sample'])")
play music 'audio/OST/Those Other Two Weirdos.ogg'
show anon neutral flip at aright with dissolve
A "Sample Text"

View File

@ -24,6 +24,7 @@ init -3 python:
self.mod_variables = []
def add_mod(self, name, label):
#renpy.random.randint(a, b)
self.mod_menu_access += [{
'Name': name,
'Label': label
@ -36,12 +37,10 @@ init -3 python:
def add_image(self, name, filename):
s = str(self.mod_id)+name
renpy.image(s, Image(filename))
#z = renpy.get_registered_image(s)
#self.mod_variables[self.mod_id][name] = z
self.mod_variables[self.mod_id][name] = s
print(self.mod_variables[self.mod_id])
def add_variable(name, default):
def add_variable(self, name, default):
self.mod_variables[self.mod_id][name] = default
def get(self, _id):