Jump to content

I'd appriciate some help!


Daedalus304

Recommended Posts

Hello!

 

First of all, I've been looking for hours... if you know the answer or have a link to a tutorial, i would really appriciate it.

 

A little back story. I'm trying to make my first mod and in the first quest i want the player to find spare parts for a "broken turret system". Basically i want to "replicate" the "Sunshine Boogie" quest. Where the task is to repair broken solar array panels.

 

The question is, how do i go about doing this?

 

My guess is i place some static turrets (broken ones, since they arn't supposed to shoot at anthing) and then when the player returns (with the spare parts) and the quest stage gets completed, the static ones vanish. and a set of fully functional turrets take the old ones place.

 

However, like i indicated, i don't know how to accomplish that.

 

Thanks in advance!

Link to comment
Share on other sites

Switching out the turrets is the easy part. Place duplicate, but "dead", turrets where the live ones are. Give them all (alive and dead) the same "Enable Parent", an Xmarker you've place and named. Check the "Set Enable State to Opposite of Parent" for the dead ones. Use a script to disable the Xmarker when the quest is finished, and they will all reverse at the same time.

There are probably some other way, but that's the easiest off the top of my head.

 

I suggest checking the GECK wiki: http://geck.bethsoft.com/

Link to comment
Share on other sites

What you're describing is quite complicated to make. It requires some way to give the player the quest (a note or, worse, dialogue), map editing, scripting, and quests. What you're asking is too complicated to describe in detail, if I could it would be easier to just make the mod myself.

 

What you will need as a modder, of any game, is curiosity, patience, and problem-solving. Look at similar things that already exist, figure out what makes it work, then re-work it to fit your needs. All the information you need can be found somewhere.

 

After modding for 14 years I can tell you I still spend half my time problem-solving and bug-fixing... :)

 

Quests modders are too rare, so I wish you luck.

Link to comment
Share on other sites

So, a quick update.

 

Having spent literally hours and hours on this, honestly i still have 20 tabs open in my browser.

I've made it work!

 

Tubal, you told me to use an xmarker and then attach the turrets to the xmarker using the "enable parent" function.

 

I did follow that instruction, I've even found other tutorials giving the same instuctions. However the problem was the script thing. I've not been able to find a good enough explanation how to write a script in those tutorials. They simply state "simply disable/enable the xmarker.

 

 

While reading, i came across an exampel which had a line like this xmarkerId.disabel or in my case enable.

I then proceeded to put that "script" into the "Result script [End]" box (or what ever you wan't to call it) in the dialogue, where i turn in the spare parts. So i put the new "base objekt" id that i'd created. In the "Result script [End]"

 

Meaning it looked like "000Turret.enable". This did not work, the script did not compile.

 

After that i read some more on the wiki, i then found something in the "usefull script" section.

 

 

ScriptName LightSwitchScript

 

ref light

 

Begin OnActivate

if light == 0

set light to GetLinkedRef

endif

 

if light.GetDisabled

light.Enable

else

light.Disable

endif

Activate

End

 

I then thought to myself... do i need to make something like this?

 

Keep in mind, while i've been playing around with the geck before, i've only been placing statics and or edited weapons etc. Quests and dialuge is something new. And certainly scriping, i've never seen scripting until the day of the OP. So with that in mind, my head went like ................. and i still don't get how the above script works.

 

 

 

Moving on, i read some more... and more... several hours later, i went back to this thread and i read your post (Tubal) about how to have "patience". Being close to a nervous breakdown (exaggerating a bit) i kept at it, reading some more. Then i remembered something i had read earlier. How the guy didn't create a new base objekt, in other words he didn't create a new xmarker. I thought, how can you link or rather "reference" something that's not unique? won't that mess things up?

 

I then noticed the "Reference Editor ID" column located above "Base Objekt" of my xmarker... i then proceeded to write something, in this case "fungera", which is swedish for "work", because i really wanted it to work.

 

So instead of "000Turret.enable" I wrote "fungera.enable" (in "Result script [End]") and when i turned in the quest the xmarker enabled and the broken turret vanished and the functional appeared.

 

It felt pretty damn good!

 

 

 

So thanks for giving me the clues, both of you. I really appreicate the fact that you set aside time to try and help!

Link to comment
Share on other sites

Sadly, i've returned yet again.

 

Problem:

 

I have three stages 10,15,20 in my quest.

 

10 = when i accept the quest (working as intended)

15 = when i've picked up 7 "spare parts" <--- this is where i :wallbash:

20 = when i turn in the 7 spare parts and the turrets switch and the player get's paid. (working as intended)

 

 

Basically i get the message from stage 10 along with the map marker (so you know where to go, ingame) but when i pick up the 7 spare parts, stage 15 doesn't trigger. the mapmarker still points to where stage 10 sent me. However i can return to the npc (that gave me the quest) and turn the spare parts in. And complete stage 20, and thus the quest. By passing stage 15, altogether.

The thing is, as you might have guess already, i want the game to acknowledge the fact that i've found what i came for, and then have the map, point me back to the quest giver.

 

Hopfully someone will be able to assist me.

Link to comment
Share on other sites

Here is how I would do it, assuming the 7 parts are all different things. Put this into a quest script on a running quest:

 

int thingsfound

BeginGameMode

if player.getitemcount thing1 >= 1
    set thingsfound to thingsfound + 1
endif

if player.getitemcount thing2 >= 2
    set thingsfound to thingsfound + 1
endif

;etc... all the way to thing7
;then

if thingsfound >= 7
    ;dostuff like set objective complete, set new stage, etc. whatever you want to happen when all the things are found.
    ;you can set a new objective to be displayed here, but a result script from a new quest stage is probably better.
endif 

End

Link to comment
Share on other sites

Here is how I would do it, assuming the 7 parts are all different things. Put this into a quest script on a running quest:

 

int thingsfound

BeginGameMode

if player.getitemcount thing1 >= 1
    set thingsfound to thingsfound + 1
endif

if player.getitemcount thing2 >= 2
    set thingsfound to thingsfound + 1
endif

;etc... all the way to thing7
;then

if thingsfound >= 7
    ;dostuff like set objective complete, set new stage, etc. whatever you want to happen when all the things are found.
    ;you can set a new objective to be displayed here, but a result script from a new quest stage is probably better.
endif 

End

 

It's actually one item, times 7. The base id for the spare parts is 000sparepartsforturrets or should i use a reference editor id? in which case let's call it spareturrets

 

I'm seriously new to this stuff. *sigh*

 

Below is what i came up with, from what you said.

 

int thingsfound

 

BeginGameMode

 

if player.getitemcount 000sparepartsforturrets >= 7

set thingsfound to thingsfound + 7

endif

 

;then

 

if thingsfound >= 7

SetObjectiveDisplayed 0000Fletcherheyes 15 1

endif

End

 

 

It won't save however, which means that something is wrong. Also a little side note 0000Fletcherheyes is the quest id.

 

And to be completly honest, i'm not 100% where to put the script. I could go the old trial and error, but if you could help me with the script at the very least that would be awsome.

Edited by Daedalus304
Link to comment
Share on other sites

Don't start your IDs with integers (#s). Use alphabetic characters. When you use #s, it seems the game tries to interpret the whole thing as the numeric string instead of the text string you intend.

 

Also if they are all the same thing you can simplify a lot.

 

Just do:

 

scn myquestscript

short doonce

Begin GameMode

if player.getitemcount AAAsparepartsforturrets >= 7 && doonce == 0
    SetObjectiveDisplayed AAAFletcherheyes 15 1
    set doonce to 1 ;this is a toggle so that it won't set this objective to be displayed every single frame
endif

End

 

In the dropdown at the top, change it from "object" to "quest".

Then on your quest, choose "myquestscript" from the dropdown menu.

 

You should also install GECK Power Up, it will display script errors so you won't have to guess why it's not saving.

Edited by Quetzlsacatanango
Link to comment
Share on other sites

  • Recently Browsing   0 members

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