Attribute
Septirath
30 Mar 2013, 15:31Hey, I was working on my game, and I had a question about attributes.
So, whenever you play a game, you know how you can see your character's score and health? I wanted to add one of those called "Tiredness."
So I added an attribute and, for the beginning of the game, I set it at 0%
However, when I played the game, it only showed the value: it didn't say what the value was representing.
Also, how would I make that value increase as the game goes on?
So, whenever you play a game, you know how you can see your character's score and health? I wanted to add one of those called "Tiredness."
So I added an attribute and, for the beginning of the game, I set it at 0%
However, when I played the game, it only showed the value: it didn't say what the value was representing.
Also, how would I make that value increase as the game goes on?

Pertex
30 Mar 2013, 16:23Did you read this? http://quest5.net/wiki/Status_Attributes
You can increase/decrease this attribute by script then
You can increase/decrease this attribute by script then
Asyranok
30 Mar 2013, 16:47Just a quick recommendation:
I suggest calling it "stamina" rather than "tiredness". Or at least change it to something other than "tiredness".
I suggest calling it "stamina" rather than "tiredness". Or at least change it to something other than "tiredness".
HegemonKhan
30 Mar 2013, 23:43(I don't know how to work with percents, but here's otherwise how to create and work with attributes and status attributes)
an example:
using the GUI~Editor:
creating the attribute:
"Player" (the default POV Object, left pane, the "tree of stuff", click on "Player" so that it is highlighted) -> Attribute (Tab, click on it, right pane) -> Attributes (the bottom box, right pane) -> Add ->
name: tiredness
type (select from the small box's drop down menu, it appears after creating its name): integer
value (appears after you changed the type to: integer): 0
creating the status attribute (this is the displayment of what you want, it shows up in the status pane on the right side):
"Player" (the default POV Object, left pane, the "tree of stuff", click on "Player" so that it is highlighted) -> Attribute (Tab, click on it, right pane) -> Status Attribute (the top box, right pane) -> Add ->
name~key: tiredness
format string~value: (leave blank)
-------------
for a bit more complexity:
let's say you wanted a "percent-like" display, such as:
Tiredness: (current_tiredness) (out of) (maximum_tiredness)
Tiredness: 999 / 999
*********
the more common examples are:
HP: 999 / 999
MP: 999 / 999
*********
do the same as the above, but you got additional steps to do:
create two more ATTRIBUTES (do NOT create status attributes for these two attributes):
"Player" (the default POV Object, left pane, the "tree of stuff", click on "Player" so that it is highlighted) -> Attribute (Tab, click on it, right pane) -> Attributes (the bottom box, right pane) -> Add ->
name: current_tiredness
type (select from the small box's drop down menu, it appears after creating its name): integer
value (appears after you changed the type to: integer): 0
name: maximum_tiredness
type (select from the small box's drop down menu, it appears after creating its name): integer
value (appears after you changed the type to: integer): 0
and then you got to create the turn script for changing the status attribute display:
Object (left pane, the "tree of stuff", click on "Object" so that it is highlighted) -> now, at the very top of the screen, there's a bar that goes across with "File ~ Edit ~ Add ~ Tools ~ Help", choose "Add", and then select "Turn Script" ->
it should now look like this in the right pane:
Turn Script
Turn Script
Name:
[] Enable when the game begins
Script (the small script tool box)
->Add new script
do this:
Turn Script
Turn Script
Name: (whatever you want to call it, for this example, let's call it: status_attribute_display_expanded_turnscript)
[X] Enable when the game begins
Script (the small script tool box)
->Add new script ->
Variables -> Set a variable or attribute ->
Set variable player.tiredness = [EXPRESSION] player.current_tiredness + " / " + player.maximum_tiredness
----------
you should also make a turn counter too, if you want help, then ask, though it's the same steps as shown here if you can get it.
---------
as for increasing and decreasing it:
just plug these into where ever (whatever script or code block wherever) you want them to go:
A. increasing your current_tiredness
Variables -> Set a variable or attribute ->
Set variable player.current_tiredness = [EXPRESSION] player.current_tiredness + your_amount
Set variable player.current_tiredness = [EXPRESSION] player.current_tiredness + 50
B. decreasing your current_tiredness
Variables -> Set a variable or attribute ->
Set variable player.current_tiredness = [EXPRESSION] player.current_tiredness - your_amount
Set variable player.current_tiredness = [EXPRESSION] player.current_tiredness - 50
C. increasing your maximum_tiredness
Variables -> Set a variable or attribute ->
Set variable player.maximum_tiredness = [EXPRESSION] player.maximum_tiredness + your_amount
Set variable player.maximum_tiredness = [EXPRESSION] player.maximum_tiredness + 50
D. decreasing you maximum_tiredness
Variables -> Set a variable or attribute ->
Set variable player.maximum_tiredness = [EXPRESSION] player.maximum_tiredness - your_amount
Set variable player.maximum_tiredness = [EXPRESSION] player.maximum_tiredness - 50
E. increasing your tiredness (if you don't want to have~use a current and maximum tiredness structure, this means you didn't create that turn script):
Variables -> Set a variable or attribute ->
Set variable player.tiredness = [EXPRESSION] player.tiredness + your_amount
Set variable player.tiredness = [EXPRESSION] player.tiredness + 50
F. decreasing your tiredness (if you don't want to have~use a current and maximum tiredness structure, this means you didn't create that turn script):
Variables -> Set a variable or attribute ->
Set variable player.tiredness = [EXPRESSION] player.tiredness - your_amount
Set variable player.tiredness = [EXPRESSION] player.tiredness - 50
----------------------
and here's an example of how it would look in Code:
(do note that this is an old file, from v5.2)
--------------------------
oops...
if you want the "tiredness" value to increase with (time or turns), here's the tutorial for it:
http://quest5.net/wiki/Using_timers_and_turn_scripts
and here's how it could be done with the turn script:
ach, that took me awhile to figure out, math equations... not easy to do, when you haven't taken math for 10+ years, lol.
an example:
using the GUI~Editor:
creating the attribute:
"Player" (the default POV Object, left pane, the "tree of stuff", click on "Player" so that it is highlighted) -> Attribute (Tab, click on it, right pane) -> Attributes (the bottom box, right pane) -> Add ->
name: tiredness
type (select from the small box's drop down menu, it appears after creating its name): integer
value (appears after you changed the type to: integer): 0
creating the status attribute (this is the displayment of what you want, it shows up in the status pane on the right side):
"Player" (the default POV Object, left pane, the "tree of stuff", click on "Player" so that it is highlighted) -> Attribute (Tab, click on it, right pane) -> Status Attribute (the top box, right pane) -> Add ->
name~key: tiredness
format string~value: (leave blank)
-------------
for a bit more complexity:
let's say you wanted a "percent-like" display, such as:
Tiredness: (current_tiredness) (out of) (maximum_tiredness)
Tiredness: 999 / 999
*********
the more common examples are:
HP: 999 / 999
MP: 999 / 999
*********
do the same as the above, but you got additional steps to do:
create two more ATTRIBUTES (do NOT create status attributes for these two attributes):
"Player" (the default POV Object, left pane, the "tree of stuff", click on "Player" so that it is highlighted) -> Attribute (Tab, click on it, right pane) -> Attributes (the bottom box, right pane) -> Add ->
name: current_tiredness
type (select from the small box's drop down menu, it appears after creating its name): integer
value (appears after you changed the type to: integer): 0
name: maximum_tiredness
type (select from the small box's drop down menu, it appears after creating its name): integer
value (appears after you changed the type to: integer): 0
and then you got to create the turn script for changing the status attribute display:
Object (left pane, the "tree of stuff", click on "Object" so that it is highlighted) -> now, at the very top of the screen, there's a bar that goes across with "File ~ Edit ~ Add ~ Tools ~ Help", choose "Add", and then select "Turn Script" ->
it should now look like this in the right pane:
Turn Script
Turn Script
Name:
[] Enable when the game begins
Script (the small script tool box)
->Add new script
do this:
Turn Script
Turn Script
Name: (whatever you want to call it, for this example, let's call it: status_attribute_display_expanded_turnscript)
[X] Enable when the game begins
Script (the small script tool box)
->Add new script ->
Variables -> Set a variable or attribute ->
Set variable player.tiredness = [EXPRESSION] player.current_tiredness + " / " + player.maximum_tiredness
----------
you should also make a turn counter too, if you want help, then ask, though it's the same steps as shown here if you can get it.
---------
as for increasing and decreasing it:
just plug these into where ever (whatever script or code block wherever) you want them to go:
A. increasing your current_tiredness
Variables -> Set a variable or attribute ->
Set variable player.current_tiredness = [EXPRESSION] player.current_tiredness + your_amount
Set variable player.current_tiredness = [EXPRESSION] player.current_tiredness + 50
B. decreasing your current_tiredness
Variables -> Set a variable or attribute ->
Set variable player.current_tiredness = [EXPRESSION] player.current_tiredness - your_amount
Set variable player.current_tiredness = [EXPRESSION] player.current_tiredness - 50
C. increasing your maximum_tiredness
Variables -> Set a variable or attribute ->
Set variable player.maximum_tiredness = [EXPRESSION] player.maximum_tiredness + your_amount
Set variable player.maximum_tiredness = [EXPRESSION] player.maximum_tiredness + 50
D. decreasing you maximum_tiredness
Variables -> Set a variable or attribute ->
Set variable player.maximum_tiredness = [EXPRESSION] player.maximum_tiredness - your_amount
Set variable player.maximum_tiredness = [EXPRESSION] player.maximum_tiredness - 50
E. increasing your tiredness (if you don't want to have~use a current and maximum tiredness structure, this means you didn't create that turn script):
Variables -> Set a variable or attribute ->
Set variable player.tiredness = [EXPRESSION] player.tiredness + your_amount
Set variable player.tiredness = [EXPRESSION] player.tiredness + 50
F. decreasing your tiredness (if you don't want to have~use a current and maximum tiredness structure, this means you didn't create that turn script):
Variables -> Set a variable or attribute ->
Set variable player.tiredness = [EXPRESSION] player.tiredness - your_amount
Set variable player.tiredness = [EXPRESSION] player.tiredness - 50
----------------------
and here's an example of how it would look in Code:
(do note that this is an old file, from v5.2)
<asl version="520">
<include ref="English.aslx" />
<include ref="Core.aslx" />
<game name="Testing Game Stuff">
<gameid>cd102f9d-370a-4bda-b6ea-ca42288f619c</gameid>
<version>1.0</version>
</game>
<object name="room">
<inherit name="editor_room" />
<object name="player">
<inherit name="defaultplayer" />
<turns type="int">0</turns>
<statusattributes type="stringdictionary">turns = ;hp = </statusattributes>
<curhp type="int">250</curhp>
<maxhp type="int">500</maxhp>
<hp>0 / 0</hp>
</object>
</object>
<turnscript name="game_turns_turnscript">
<enabled />
<script>
player.hp = player.curhp + " / " + player.maxhp
player.turns = player.turns + 1
</script>
</turnscript>
</asl>
--------------------------
oops...
if you want the "tiredness" value to increase with (time or turns), here's the tutorial for it:
http://quest5.net/wiki/Using_timers_and_turn_scripts
and here's how it could be done with the turn script:
<asl version="520">
<include ref="English.aslx" />
<include ref="Core.aslx" />
<game name="Testing Game Stuff">
<gameid>cd102f9d-370a-4bda-b6ea-ca42288f619c</gameid>
<version>1.0</version>
</game>
<object name="room">
<inherit name="editor_room" />
<object name="player">
<inherit name="defaultplayer" />
<turns type="int">0</turns>
<statusattributes type="stringdictionary">turns = ;tiredness = </statusattributes>
<current_tiredness type="int">0</current_tiredness>
<maximum_tiredness type="int">500</maximum_tiredness>
<tiredness>0 / 0</tiredness>
<turn_adder type="int">1</turn_adder>
</object>
</object>
<turnscript name="game_turns_turnscript">
<enabled />
<script>
if (player.turns = player.turn_adder * 5) {
player.current_tiredness = player.current_tiredness + 10
player.turn_adder = player.turn_adder + 1
}
player.tiredness = player.current_tiredness + " / " + player.maximum_tiredness
player.turns = player.turns + 1
</script>
</turnscript>
</asl>
ach, that took me awhile to figure out, math equations... not easy to do, when you haven't taken math for 10+ years, lol.