Daedalus304 Posted April 7, 2012 Share Posted April 7, 2012 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 More sharing options...
Tubal Posted April 7, 2012 Share Posted April 7, 2012 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 More sharing options...
Daedalus304 Posted April 8, 2012 Author Share Posted April 8, 2012 At this rate i won't have any hair left by the end of the day. :confused: How would that script look like? And yes i've been through the geck wiki like you suggested. If you've got any more help to give, i'd gladly accept it. Link to comment Share on other sites More sharing options...
kampeao Posted April 8, 2012 Share Posted April 8, 2012 I'm a bit of a noob myself but if you're trying to do a duplicate of a quest, can't you duplicate the quest itself and just edit whatever you want? Link to comment Share on other sites More sharing options...
Tubal Posted April 9, 2012 Share Posted April 9, 2012 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 More sharing options...
Daedalus304 Posted April 10, 2012 Author Share Posted April 10, 2012 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 ActivateEnd 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 More sharing options...
Daedalus304 Posted April 10, 2012 Author Share Posted April 10, 2012 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 More sharing options...
Quetzlsacatanango Posted April 10, 2012 Share Posted April 10, 2012 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 More sharing options...
Daedalus304 Posted April 10, 2012 Author Share Posted April 10, 2012 (edited) 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 + 7endif ;then if thingsfound >= 7SetObjectiveDisplayed 0000Fletcherheyes 15 1endif 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 April 10, 2012 by Daedalus304 Link to comment Share on other sites More sharing options...
Quetzlsacatanango Posted April 10, 2012 Share Posted April 10, 2012 (edited) 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 April 10, 2012 by Quetzlsacatanango Link to comment Share on other sites More sharing options...
Recommended Posts