Jump to content

NellSpeed

Premium Member
  • Posts

    330
  • Joined

  • Last visited

Posts posted by NellSpeed

  1. Found this on Topless Robot:

    (YouTube link-- the video is work-safe, but the comments probably aren't.

     

    The gist of it is that gamers often don't play just to win-- we play for the experience, for the chance to step out of ourselves and into someone else, somewhere else. Plus fun graphics (looks like 256 colors to me) and a catchy tune!

     

    Your memories creep in with the edge of a smile

    You realize again what you lost for a while

    YOu're going to think back much less on how you saved the day

    Than on all the experience gained

    At the end of it all, gamers play what we play

    not for GAME OVER but rather for what we take away!

  2. Well, there's a difference of course between the editor ID and the Ref, but if the script is generally working, it should be okay. What conditions are determining when the conversation begins? Do they all change after the conversation is initiated?

     

    (I have NO idea how to make recalls work-- never so much as tried it before, so I can't be of any help with that.)

  3. This is not true. In fact, if all you are concerned about is that 'X != 0', then simply using 'if X', and avoiding the comparative entirely, is also preferable from an efficency point of view; as non-comparitive 'if's are faster to process as well.

    Ooh, okay-- I obviously hadn't taken that into account; I'm still learning, myself-- and this gets added into my "things to remember" file.

     

    I think my game just hates me.

    It doesn't hate you-- it just believes in tough love! :thumbsup:

  4. I'm going to keep linking to the CS wiki when I reply-- it can be such a pain to navigate, and I know there's stuff I'm leaving out, so I want to try & give you as much info as possible.

     

    if (getstage AACaiusQuest5 10) && (player.getinworldspace AADagothUrIntroWorld)

    sayto player, GREETING

     

    isn't doing what you think it is. I think you're trying to check if stage 10 has been reached and if the player is in AADagothUrIntroWorld? So try

     

    if (getstagedone AACaiusQuest5 10 == 1) && (player.getinworldspace AADagothUrIntroWorld == 1)

    sayto player, GREETING

     

    Getstage checks for the highest completed quest, and that's it-- you don't use a stage number with it.

     

    When you use most of these commands, you have to tell it if you're looking for a yes or no answer. Not using a == 0 or == 1 (in this case) will confuse the game engine, resulting in a crash.

     

    And you can just go with "end" instead of "end gamemode" -- which may be the other problem. We'll get to SayTo, etc in a bit. :)

  5. Welcome to the wonderful world of bug-testing! (And thank goodness for fg109.) :happy: This is when it helps to have everything planned out on paper (or in a text document) ahead of time. I personally have an awful time trying to remember whih

     

    So let's start with this-- if this is still your script:

     

     

    if (getstagedone AACaiusQuest4 30) && (isPCSleeping > 0)

    WakeUpPC

    setstage AACaiusQuest5 10

    endif

     

    I would change getstagedone AACaiusQuest4 30

     

    to getstagedone AACaiusQuest4 30 == 1

     

    Right now, the game doesn't know what you're checking-- it knows the quest and the stage, but nothing else. That == 1 tells the game that the player needs to be sleeping. (And remember, every variable's starting value is 0, until or unless something changes it.)

     

    If that doesn't work, then take out the WakeUpPC line, and see if that does anything. And, of course, there's a big difference between "begin MenuMode" and "begin GameMode" and the multiple "begin On(fillintheblank)" options.

  6. See, you're getting the hang of it! :) Don't get discouraged, and you definitely DON'T look silly. You're not only talking about modding, you're actively trying to do it, and that's a lot more than most people try!

     

    A few things leap out at me:

     

    From the wiki:

    Example:

    GetInWorldspace ChorrolWorld

     

    Returns 1 if the actor is currently in one of the exterior cells of the specified worldspace. Always returns 0 if the actor is in an interior cell.

     

    So your script is only checking to see if the player is in that worldspace-- not actually sending him/her there; and of course, the answer is 0, or in this case, "no."

     

    You also might want to use "and" to link your two requirements: if (AACaiusQuest4 == 30) && (isPCsleeping == 1) -- I don't know if Oblivion will correctly run the script as you have it, or if it might only look at that first "if" and not the second. I still don't have a solid grasp on comparisons.

     

    Finally, I believe if AACaiusQuest4 == 30 should actually be if GetStageDone AACaiusQuest4 MS09 30 == 1. As it stands, it looks like you're checking for a variable, which of course you're not doing.

     

    (As always, I await someone with more know-how to correct my suggestions! :biggrin: )

  7. The thing about scripting is, it really does make logical sense-- it's just for those of us who don't have any scripting / coding / programming background, there's a pretty steep learning curve. If you get the basics down first, it gets even easier. Of course, given that no two users have all the same mods installed, and troubleshooting becomes a nightmare... but that's another set of problems, really.

     

    (When I went through my first round of scripting, my partner was playing through Jagged Alliance 2. Between his cursing and my cursing... well, let's just say it was kind of a noisy house that weekend.)

  8. Well... yeah, I should have clarified that my suggestion was NOT proper coding, but an example of the general structure. I'm really sorry about that!

     

    You might want to go back over variables, since this is something you really need to understand. Also, you should probably also go through comparisons and how they work. Again, you'll be using a LOT of this if you keep working on quests. See, you can't use "equals", for example-- see Skevitj's scripting above.

     

    And did I mention stocking up on headache treatments? :D

     

    You might try just using Skevitj's scripting, to see if and how it works (replacing the ;****Start new quest/stage and others result actions**** with... well, with what you want to have happen.

     

    EDIT: Or, okay, here's something I just did a fast test on. Please remember, I'm still learning, myself-- there's an even chance that I'm way off track. I tested it in my own game, and it seems to work. But I really hope someone who really knows what they're talking about comes in to help out.

     

     

    SCN qTestQuest ; This names your script. Call it whatever you want. Or, better yet, put all this stuff in your quest's script.

     

    short sqtq ; This is your timer. You can name it whatever you want, but make sure you remember what it is, and make sure it's unique.

    short StartTimerOnce ; This will start the timer-- but only once, since you don't want it resetting.

     

    begin gamemode

     

    ; This block sets your variable sqtq to the current day.

    ; Every variable equals 0, until you change it.

     

    if StartTimerOnce == 0

     

    ; If GameDaysPassed is equal to 0 when the timer started, then sqtq will now be equal to. If GameDaysPassed is equal to 1, then sqtq == 1, and so on.

    ; Let's say that GameDaysPassed was equal to 1 when the script changed sqtq from 0. That means sqtq == 1.

     

    set sqtq to GameDaysPassed

    set StartTimerOnce to 1

     

    ; StartTimerOnce started out == 0. Now StartTimerOnce == 1.

    ; It will remain == 1 unless you change it-- so it's effectively switched off.

    ; Close out your if statement:

     

    endif

     

    ; This block compares GameDaysPassed to sqtq, plus three.

    ; So, if GameDaysPassed == 1, then nothing happens, because sqtq + 3 == 3. If GameDaysPassed == 2, again-- nothing happens.

    ; But, when GameDaysPassed == 4, then GameDaysPassed == sqtq+3, the next bit of your script should fire.

    ; Remember, this isn't saying that 4 game days have passed!! It's just comparing GameDaysPassed to whatever sqtq +1 happens to be.

     

    if (GameDaysPassed == (sqtq +3) )

     

    ; So you put your code here:

    setstage AACaiusQuest3 whateverthefirststageis

     

    ; Close out your if statement:

     

    endif

     

    ; And that's that.

     

    end

     

     

    So with all my goofy commenting out, you have this:

     

     

    SCN qTestQuest

     

    short sqtq

    short StartTimerOnce

     

    begin gamemode

     

    if StartTimerOnce == 0

    set sqtq to GameDaysPassed

    set StartTimerOnce to 1

    endif

     

    if (GameDaysPassed == (sqtq +3) )

    setstage AACaiusQuest3 whateverthefirststageis

    endif

    end

     

  9. GameDaysPassed-- something I wish I'd thought to look for in my earliest modding days.

     

    I think you'd do something like this:

     

    - Declare the variable to start the second quest-- something like, StartCQ3

    - Set StartCQ3 to GameDaysPassed

    - if StartCQ3 equals GameDaysPassed +3, then start AACaiusQuest3, or setstage AACaiusQuest3 stagenumberhere, whichever one will trigger the appropriate journal entry.

  10. Still, found that m02-somethingorother-Lich just below the MakarCamaron fighting style doesn't use bound weaponry,

    I'll have to remember that in the future. I'd like to do a mage companion for general release, but all the standard combat styles seemed to keep reverting to "summon something and die." I appreciate the comedy value, but in terms of, you know, not-dying, it leaves a bit to be desired.

  11. I haven't found any way of working with a mage companion that doesn't end up in 1) me taking an arrow / fireball to the back, or 2) the mage getting killed because s/he's trying to get some distance to cast. Ah, well. That's what the essential flag is for!
  12. http://nellspeed.finalgirl.us/TheMentor.jpg

    The Mentor

     

    He has options to: arm / disarm when you do, let you access his inventory, heal himself, and refresh his ammo when he runs low.

     

    I've never had much luck with mages, so just in case, I gave him some goofily overpowered stuff, just for the fun of it. Still doing a bit of testing, but he's pretty close to done.

  13. If you take a look at Jo'Virr's description, that's the basic design I'll use for your character-- let's call him Llandele Seleth for now, a Telvanni mage who came to Cyrodiil almost accidentally, in the company of more experienced mages, and saw a lot of potential for advancement that he felt he might not be able to reach in his homeland. Ambitious, tempered with compassion, he's managed over the years to very quietly gain quite a few powerful (and similarly unobtrusive) allies. While he was raised to believe that slave-ownership is a Dunmer's right, living in a foreign land has taught him to believe otherwise. Maybe he has Argonian allies in the mage guilds? Maybe a certain Countess isn't as secure as he believes? *

     

    It's very, very simple scripting, but I'm working on refining it (in between half a dozen other projects) so that other players can just take the scripts, rename variables, references, etc as necessary, and have their own custom companion-- nowhere near as complex and flexible as CM, of course, but still (ideally) a solid base.

     

    * This is all just my rambling, of course-- it won't be reflected in the writing, which you can customize yourself in the CS, if you want to tinker with it.

  14. I'll strongly recommend going over to TES Alliance and going through their tutorials-- cut & paste is a great way to start, but having a good understanding of variables, commands, and how to use them will save you so much frustration later on.

     

    Of course, modding is at least 90% frustration anyway, but.... :biggrin:

  15. Did you try using TES4Edit to find the conflicts? That's a pretty good way to see where the problem is and remove it, although it may take some time to fix things.

     

    Scripting is an amazing challenge... IMO it's partly because the more you do, the more you learn, and it gets tempting to go back and "fix" earlier scripts, which sometimes just causes more problems....

  16. How did I miss seeing the update on this-- sorry!

     

    Anyway, it sounds like you did a lot of great work on this, and I'm really sorry to hear about the constant crashing.

     

    The best guesses suggest that Skyrim scripting will work much the same way that Oblivion scripting does; if anything, it may work more smoothly, which would be great.

     

    You might consider putting out a call for beta-testers to see if anyone can track down the KotN bug. That's definitely an oddity.

     

    Anyway, congratulations on taking the time, effort, & initiative to teach yourself how to do this!

     

    In the meantime, you might consider looking over here: Have you ever wanted to be a quest-coder?

×
×
  • Create New...