if you're asking about how to do this stuff in Gamebook, I'm not that familar with it, as I've not yet used, nor studied it, much, however, hopefully this can help you with how to move amongst the Pages in code:
http://ifanswers.com/1246/what-script-creates-a-link-to-a-page
for scripting in GameBook, you need to set the 'page type' to either: [script] or [script+text]
also, if you want the scripting to be done as 'within text' (aka: 'msg' ~ 'print a message' Scripts), then you'd use the 'text prcoessor commands':
http://docs.textadventures.co.uk/quest/text_processor.html
otehrwise, the normal scripting syntax looks like this in code:
if (player.cunning > 25)
{
msg ("So cunning, you get to go here!")
// the goto page scripting shown in the link above as a text processor command, or as normal scripting: but I don't know what its syntax looks like and am too lazy to make a gamebook game to look it up
// in a text adventure it's:
// player.parent = destination_room_name
// or:
// MoveObject (name_of_object_you_want_to_move, name_of_destination_object)
// MoveObject (player, destination_room_name)
}
http://docs.textadventures.co.uk/quest/attributes/parent.html
^^^^^^^^^^^
http://docs.textadventures.co.uk/quest/elements/object.html
^^^^^^^^^^
http://docs.textadventures.co.uk/quest/elements/
and
http://docs.textadventures.co.uk/quest/functions/corelibrary/moveobject.html
as for blocking, a simple way is using the 'visited' built-in Attribute (I don't know if the 'visited' Attribute exists in GameBook or not):
if (room_X.visited)
{
msg ("You can't go back to that room anymore")
}
else
{
// an example using Text Adventure code:
// msg ("You go to room_X")
// player.parent = room_X
}
if the GameBook doesn't have the 'visited' Attribute, you're going to have to make your own Attribute, either a Boolean or Int (Integer) or String Attribute, to check for (not sure if you can add Attributes to the 'Page' Objects or not, I think you can though if I remember Pixie answering this for someone, but I could be wrong ~ if you can't, you can add the Attributes to the 'player' or 'game' object instead):
before going to room_X:
Boolean: room_X.visited (or call it something else, lol) = false
Integer: room_X.visited = 0
String: room_X.visited = "0"
after going to toom_X:
Boolean: room_X.visited = true
Integer: room_X.visited = 1
String: room_X.visited = "1"
and the check for it (lazy horizontal code form, not fully explained nor all variations that you can do, just a quick brief incomplete examples):
Boolean:
if (roomX.visited = false) { player.parent roomX } else { msg ("You can't go back to room_X anymore") }
Integer:
if (roomX.visited = 0) { player.parent roomX } else { msg ("You can't go back to room_X anymore") }
String:
if (roomX.visited = "0") { player.parent roomX } else { msg ("You can't go back to room_X anymore") }
a way to do it (in code for text adventure):
during game play, you literally just type in the 'Pattern' of simple-short-ness: info
<command name="character_information_screen">
<pattern>info</pattern>
<script>
ClearScreen
msg ("Name: " + player.alias)
msg ("Sex: " + player.sex)
msg ("Age: " + player.age_integer + "(" + player.age_string + ")")
msg ("Strength: " + player.strength)
msg ("Endurance: " + player.endurance)
msg ("Agility: " + player.agility)
// etc stats
wait
{
ClearScreen
}
</script>
</command>
// outputs example:
Name: HK
Sex: male
Age: 18 (adult) // I wish I was 18 still, lol
Strength: 100
Endurance: 100
etc etc etc