Trouble getting all option of a show menu to work
Thickar
08 Oct 2018, 01:49So I have done this code many time and it has always worked pefectly, but not it's not. I'm trying to show a menu to ask what gender your character is, but when I select the option of female it doesn't carry out the assigned code, only on the male or first option. Here is the code I used
options = Split("Male; Female", ";")
ShowMenu ("What gender is your character?", options, false) {
switch (result) {
case ("Male") {
msg ("So your character is a man.")
player.sex_type = "male"
}
case ("Female") {
msg ("So your character is a women.")
player.sex = "female"
}
}
}
Any ideas why this is? I might be where I placed it in the rest of the code which I can also provide if needed.
hegemonkhan
08 Oct 2018, 02:07the nightmare of spaces...
notice in your
options = Split("Male; Female", ";")
there's a space in the 2nd item:
options = Split("Male;[SPACE]Female", ";")
a space is actually considered/seen as a character/number/symbol, just as 'A' and '1' and '&'are seen/considered as characters/numbers/symbols
so, quest is seeing the item/value as:
[SPACE]Female
and not as:
Female
so, this is why your check of:
case ("Female")
fails, as it's looking for 'Female', but there's no 'Female', only '[SPACE]Female'
amusingly, this will work:
case (" Female")
as now we're checking for a value/item that exists:
case ("[SPACE]Female")
laughs, but you don't want '[SPACE]Female' as your sex value, lol
here's the fixed code:
options = Split("Male;Female", ";")
ShowMenu ("What gender is your character?", options, false) {
switch (result) {
case ("Male") {
msg ("So your character is a man.")
player.sex_type = "male"
}
case ("Female") {
msg ("So your character is a women.")
player.sex = "female"
}
}
}
hegemonkhan
08 Oct 2018, 02:17P.S.
here's just improved code (reduced code: removed un-needed code: made it more concise: you don't need the 'switch-case' code) of your code:
options = Split("male;female", ";")
ShowMenu ("What gender is your character?", options, false) {
msg ("So your character is a " + result + ".")
player.sex_type = result
}
or, if you really want your list items to be capitolized (and-but not your sex values):
options = Split("Male;Female", ";")
ShowMenu ("What gender is your character?", options, false) {
result = LCase (result)
msg ("So your character is a " + result + ".")
player.sex_type = result
}