Jump to content

Scripting help


Savage117

Recommended Posts

Should I ask to get this entry moved to the mod troubleshooting area? I thought that area was for help with installing mods or help with existing mods, but it seems to have help on making mods too.

 

Also, thank you all for your help, but Im gonna need a lot more, I just don't understand scripting for some reason.

 

Infer0 thank very much for your help but I don't understand what you mean by "run on" command. For some reason, no matter how i change the results script it always runs the take money give perk block, its very frustrating.

 

Is there a way to reference the give perk block after completing the check players money block, and making sure it doesn't keep going if it comes back false.

 

I'm assuming the condition part of the terminal setup is it's own script thing. Does it run first or last? I don't know why I can't seem to get this scripting thing down, I did all kinds of mods for STALKER, hard to teach an old dog new tricks I guess.

Link to comment
Share on other sites

Capitalization doesn't matter, but you should make it consistent so that it's easy on the eyes.

 

player.RemoveItem caps001 4000

set vDialogueMedicalClinic.bInstalledPerception to 1

set vDialogueMedicalClinic.nImplantsInstalled to (vDialogueMedicalClinic.nImplantsInstalled + 1)

...

But I don't understand what the "set vdialogmedicalclinic" parts do and whether I need them to get my terminal to work properly.

"vDialogueMedicalClinic" is a quest. It has a script assigned to it in its properties. That assigned script has the variables "bInstalledPerception", "nImplantsInstalled", etc in it.

 

When there's a "b" at the beginning (EG: bInstalledPerception), it's a bool - 1 or 0 - true or false. Not sure what "n" is, "Number" maybe? Probably keeps track of the total implants the player has received.

 

Other scripts or what not can check "vDialogueMedicalClinic.bInstalledPerception" to see if it is "1", then they can tell that implant has been received. And it can check "vDialogueMedicalClinic.nImplantsInstalled" to see how many the player currently has.

 

So in the terminal, you could have:

1) Item Text: Would you like to buy the Perception implant?

- GetQuestVariable -> vDialogueMedicalClinic -> bInstalledPerception == 0

- Item Result Script:

set vDialogueMedicalClinic.bInstalledPerception to 1 ; so it won't always be 0

set vDialogueMedicalClinic.nImplantsInstalled to (vDialogueMedicalClinic.nImplantsInstalled + 1)

 

2) Item Text: You already have the Perception implant.

- GetQuestVariable -> vDialogueMedicalClinic -> bInstalledPerception == 1

 

If you want to use the "HasPerk" instead, you need to change the "Target" which is "Subject" by default (I can see the "S" under "Ta..." in your screenshot) to a reference instead. Pick any cell -> Player. Then it will run that check on the Player instead of the Subject which is the terminal itself.

 

You could also run a check on nImplantsInstalled to limit the amount of total implants:

- GetQuestVariable -> vDialogueMedicalClinic -> nImplantsInstalled < 10

Edited by Ez0n3
Link to comment
Share on other sites

Capitalization doesn't matter, but you should make it consistent so that it's easy on the eyes.

 

player.RemoveItem caps001 4000

set vDialogueMedicalClinic.bInstalledPerception to 1

set vDialogueMedicalClinic.nImplantsInstalled to (vDialogueMedicalClinic.nImplantsInstalled + 1)

...

But I don't understand what the "set vdialogmedicalclinic" parts do and whether I need them to get my terminal to work properly.

"vDialogueMedicalClinic" is a quest. It has a script assigned to it in its properties. That assigned script has the variables "bInstalledPerception", "nImplantsInstalled", etc in it.

 

When there's a "b" at the beginning (EG: bInstalledPerception), it's a bool - 1 or 0 - true or false. Not sure what "n" is, "Number" maybe? Probably keeps track of the total implants the player has received.

 

Other scripts or what not can check "vDialogueMedicalClinic.bInstalledPerception" to see if it is "1", then they can tell that implant has been received. And it can check "vDialogueMedicalClinic.nImplantsInstalled" to see how many the player currently has.

 

So in the terminal, you could have:

1) Item Text: Would you like to buy the Perception implant?

- GetQuestVariable -> vDialogueMedicalClinic -> bInstalledPerception == 0

- Item Result Script:

set vDialogueMedicalClinic.bInstalledPerception to 1 ; so it won't always be 0

set vDialogueMedicalClinic.nImplantsInstalled to (vDialogueMedicalClinic.nImplantsInstalled + 1)

 

2) Item Text: You already have the Perception implant.

- GetQuestVariable -> vDialogueMedicalClinic -> bInstalledPerception == 1

 

If you want to you the "HasPerk" instead, you need to change the "Target" which is "Subject" by default (I can see the "S" under "Ta..." in your screenshot) to a reference instead. Pick any cell -> Player. Then it will run that check on the Player instead of the Subject which is the terminal itself.

 

You could also run a check on nImplantsInstalled to limit the amount of total implants:

- GetQuestVariable -> vDialogueMedicalClinic -> nImplantsInstalled < 10

 

Wow,

 

This is getting a lot more complicated than I thought it would, the dialog and terminal interfaces look so similar I thought it would be a cut and paste patchup job, but it looks like ill need to write my own custom script, or most of it, I don't think I understant it well enough to do that. I get the idea of what you are saying, thank you Ez0n3, but for some reason its hard for me to actualy see what its realy doing, or what im doing wrong when it doesnt work.

 

Thank you Ez0n3 that thing was starting to drive me mad, I thought it was used for linking terminals to doors and such, didnt know I could link to the player. The condition thing still has me a little stumped though, when a condition runs what does it do at the end? For instance, lets say I want the player to only get the perk once, say its a unranked perk, like Bloody Mess, I would put "Hasperk", referance the player the way you told me, choose Bloody Mess in the list of perk choises, this is where it gets fuzzy. Do I make it >= greater than or equal to, meaning they have the perk, and then a value of 0 or 1? Im assuming the value is supposed to denote whether the statement is false 0 or true 1, how do I tell it what to do if it is false or true? Or does it figure that out on its own, has a default setting for when it comes up false? Or is the value telling the script how many perks of that type the player has? Arg :wallbash:.

 

Im sorry im being such a vampire here, you guys are a great help, and im realy not giving anything in return, other than more frustration :smile:, if you guys need anything id be willing to help.

Link to comment
Share on other sites

== 0 would mean the player doesn't have the perk

==1 would mean the player does

I think == 2 would check if the player has the second level.

 

The reason I wouldn't suggest using the vDialogue is because you arn't checking for a variable that is updated only by your terminal. A player would be able to get the Perk on his own, and that would throw off your variable stored in the quest dialogue.

 

I am not 100% sure of why people prefer Quest /Dialogue variables over Global variables. I think it has to do with memory issues.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...