-
Announcements
-
SITE MOVED - IN READ ONLY MODE 12/08/2015
Please use http://www.loverslab.com moving forward. Site has been restored to a previous version, and this one placed into a read-only mode. This is available for a limited time so users may reference/copy content that has been lost in the transition. This will no longer be accessible by December 22nd, 2015.
-
tomm434
Members-
Content count
1,458 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Blogs
Everything posted by tomm434
-
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
jaam, this at least works with dialogue packages. I added "GetPCsex female ==1" especcialy for you while playing male character just now and added dialogue to NPC and it worked. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
Well yeah, it's like free 10 seconds delay quest which sets appropriate package to NPC. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
Then I would be adding about 30 packages to her window and the number is only rising. Well, I can publish the script I think. I have triggers all over Mojave and all of them set its own variable like this let LunetteReactionsCheckQuest.TriggerBunkerEnterCheck :=1 startquest LunetteReactionsCheckQuest Then if check is eval to 1, appropriate dialogue package is set and stage is set to 1 and return(only 1 dialogue at a time!). Then I call "reset" function which resets particular variable and sets it to 2 so it lo longer triggers stage1!. If there are no more checks (any variable in quest is eval to 1) then quest terminates. It's some kind of queue. I did it because there are many checks which occur in gamemode (Like random conversations or level up dialogue packages + player can somehow reach the next trigger) and I want to make sure that none of dialogues is skipped. Prideslayer, you are proposing me to make the same system but to lower quest delay. I want to evade setting variables inside dialogues script because if any of cutscenes goes bad - game is stuck because player controls are disabled + Lunette.isBusy ==0 which block her conv with player. Let's say that at least 1000 people wll download my mod - there are cutscene all over mojave + her features like healing, changing hair which use cutscenes too. So we multiply 1000x30 (30 is the average amount of times scenes will be triggered during 1 hour of gameplay) and we have 30000 times code will run. So can this be that in any of those cases Dialogue script will fail and scene\game\NPC will stuck. Someone will complain but I wil be able to do nothing with that. That;s why I'm looking for reliable solution and only reliable solution is in constantly checking something. That's your school . -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
I'm only learning you know so no offence taken. Thanks for your help! A.J. I'll check it. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
no, that was the exact script I had. Her AI procedure is 43 all the way. She just ran across whole goodsrpings after player(with speed mult of 30) with AI procedure of 43. And I do it because if she got her package and someone spoke to the player frame after(like ranger in Lucy's room ) - she is still having the package and just stands in place. Even ResetAI doesn't help - only deletion of the package. I check Conversation package to be Conv package just in case somehow stage 1 will be set by mistake and to additionally check if dialogue happened. Newer version of the script is here If LunetteRef.GetCurrentAIProcedure !=43 ; to evade cases when she has package but standing in place PrintC "Remove Conversational Package" LunetteRef.removescriptpackage ConversationPackage endif If GetType ConversationPackage !=73 ; Package is set to cell when quest is reset. let stage :=0 return endif if GetType ConversationPackage ==73 && LunetteRef.isFollowing ==1 if GetType ConversationPackage ==73 ; failsafe!!! ; Only think I could thinkg of is to doublecheck the package LunetteRef.addscriptpackage ConversationPackage return endif endif So when dialogue starts the package is set to a cell. That's why even if script is stopped after "stage==1" it should not execute anyway. But it did . About script you proposed - I need constantly check her for having packages. I had one case when she was looking to start conversation with player and then I entered another cell and she lost the package(though it was "MustbeDone" type of dialogue package) so I can tell you now - that would fail someone sometimes. I can't make player "care" about when travelling with her - move slowly in case she has package active. That would be stupid to play with a companion like that So now I'll stick with lowering set delay and optimizing they way game engine has to "stage ==1" condition like moving it to the top and making it a boolean(so I can check for "if stage") which is slightly faster - and making artificial quest delay just like you said. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
Thanks for the sympathy. NPC will pick up any package you give him via "addscriptpackage" no matter what conditions are. Moreover package will not be dropped if conditions become false(never tried it without unticking "must complete" of course, maybe then it will be dropped ). Also I didn't understand what you meant about setting variable just after condition. I remember our talk loing time ago in this thread where you advised to use this system if stage ==3 let stage :=4 { remaining code} endif But how can I use this here? All I know is that I need to constantly check if package is executing before it has. Meanwhile I'm thinking about moving "is stage ==1" in top of the script so game checks "if stage==1" first and only then "if stage ==0". with quest delay of 0.2 I can be sure that when "if stage" line is checked, there is no other check coming from the top of the script(only if computer is too slow or game lags at the exact moment). Even if there is, it will be stopped by our artificial quest delay which is 2 secs. Also I can quicken stage check by removing "==1" from conditions since there is only 2 stages. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
That's interesting. Very. I'll think about it. Thanks you too. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
I'll tell you more - my script was like this when that happened. If LunetteRef.GetCurrentAIProcedure !=43 ; to evade cases when she has package but standing in place PrintC "Remove Conversational Package" LunetteRef.removescriptpackage ConversationPackage endif if GetType ConversationPackage ==73 && LunetteRef.isFollowing ==1 LunetteRef.addscriptpackage ConversationPackage return endif So engine somehow passed GetType condition. Pridelslayer didn't comment on that(is it possible for gamemengine checking something wrong because something just changed the frame earlier?). I remember you complainging about spell script which run every frame and could spawn a lot of player clones for n times because in next frame game "if MyRef.isActor" still returns 0. Now, I set this packahe to Cell in dialogue start script to evade some issues .It is just a package, not a clone but I don't know why that happened. That's why I created another nest of gettype - to minimize the chance of it repeating. ANd script has delay of 0.05. So chances can be high(it didn't happened with 5 sec quest delay, right? Now that would be a miracle) Considering what you said about bug when dialogue starts twice- my stage here now is "Rejection". I just can't accept it. I mean - what's the point in doing any mods then when something like this can happen? What if this happens for some very important story dialogue which an only happen once? I admit that most of the time I played Vegas I did it on Xbox 360 but even when playing on PC I didn't experience something like that. Anyway, what's more likely - this bug to happen or gameengine checking type of package wrong? I have no idea. t3589, I use that trick temporarily in cutscenes where NPCs are staing close to player and there is no chance for dialogue no happening next frame(I ResetAI on actors just before giving them dialogue.) is stage ==4 if timer >=10 IbsenRef.addscriptpackage Dialoguepackage let timer :=0 let stage :=5 endif elseif stage ==5 if IbsenRef.GetISCurrentAIPackage Dialoguepackage !=1 && timer >=1 let stage 6 etc endif So there package is added only once and then I check of it executed. Still unreliable but if package is not added somehow, scene will progress... Yeah. this will be bad if some actor doesn't say some line but it's better that having scene && game && companion stuck. Now I can't do this in my script because I don't know the distance Lunette will be from player + I don't know if player is going to travel between cells and package will be deletd(even dialogue packages with "Must Complete" are cleared when NPC enters differenc cell) In case that we are talking about GetIisCurrentPackage won't help because it would still require dialogue script to set next stage which doesn't guarantee that script from earlier stage doesn't executes twice. Also this can be called unreliable because sometime dialogue package is not removed after dialogue is done - NPC just stands there as usual and doesn't talk but if I giver her ther same package (to say another response in the same topic), it won't be added because she already have the same package. But her currentAI procedure will still be 0 or 17(Done state). That's why I check for that in my script above and the one I uploaded in the previous page. Also that happens when NPC was added a script package and then another NPC starts conversation with Player first. I got that issue when NCR soldier who giver player the radio entered Red Lucy room and broke the whole scene. Also if you want to see something scripted bad in vanilla NW look for RedLucy sex trigger - whole scene is mantained by the duct tape and good wish. . On the other hand all scripts I met made by Jorge Sawyer are good-written. Prideslayer, I understand. After I add first package in 90% cases Lunette will be standing close to player and dialogue will be executed next frame. For another 10% when she far away(behind the corner) or if player uses "sprint" button from project Nevada - I may still run into that issue with a small chance(much smaller than now of course). I'll increase quest delay to 0.2 then. Overall time between entering trigger and dialogue package added will be half a second. Then check time will be 0.2 + quest delay(1.8). Thanks everyone. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
So script runs from up to down. Usually when I do a script like this and dialogue starts next frame (range of 900) NPCRef.Addscriptpackage MyDialogue PrintC "Executed" the line "executed" only appears after dialogue is exited. So script stops at the exact line it was before game went into menumode and continues where it left off after menumode ends. But if somehow dialogue is not executed next frame - player is far from NPC or she had a package earlier so I had to remove it first etc. and script might get past "if stage ==1" line and then menumode happens! So after menumode ends - package is added twice. Now if I can make quest script "return" itself from Dialogue - that might solve the issue. But I can't. -
These are beautiful, Xilandro.
-
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
I believe you . But any thoughts on how to evade double "addscriptpackage MyDialoguePackage" ? Now I use the exact method you described(setting stage to 0 in dialogue script(start)) and yet I had one issue when Dialogue was added twice. I'm sure it wasn't a script error because all of them use the same system. 1) Stage is set to 1 - add dialogue every 0.05 sec 2) In dialogue script (start) set stage to 0 3) Quest ends. My theory is that script just stopped checking line after "if stage ==1" and after dialogue resumed there - and added package again So, increasing quest delay to 0.1-0.3 might minimize the chance of this repeating Less checks - less chance of mistake. (or not - I didn't understand that post). -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
The problem is I don't want to use any dialogue script. Not that I want to use Package result script because it failed me many time in Quest Overhaul and in this mod too. But "OnPackageEnd" block might work(at least it never failed me). It's the fact that it is a still one time script that troubles my mind. And also that I have to make about 30(more in the future) blocks in NPC's object script. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
All events will use the same system and will work if I make it right. That's why I created a single quest for it - to make sure nothing works wrong. I made stress tests - like level up + random conv + trigger checks at the same time (which has 1\1000 change of happening in normal gameplay) and it worked. The only flaw I have is in this time between dialogue packages package and next gameplay frames. if only I could cast "return" from one quest to another! Earlier I had level up and conv packages executed by their own quests(now THAT was unreliable). Also I can't move every response in 1 topic because each trigger has so many of them. Triggers are not one-time thing - for example trigger in Caesar tent manages all Legion progress(because player always returns there for next assigment.) So I'll try to make it work. Maybe some return there and there will help. Maybe I need to lower quest delay to minimize a chance of double dialogue. I'll think of something or I have to redo the whole system or add all dialogues to her form ID(which doesn't even possible because I would have to make each dialogue package for every stage of legion quest to start the topic) and don't caps please, it's killing my eyes. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
Exactly! That's what I should have said from the very beginning. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
my package is a dialogue package and yes, start it once. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
The problem is that I constantly cast package in stage 1 and I can't set it to 0 in gamemode, only in dialogue or menumode. And I can't execute "return" from another quest\script. Also if I use "stopquest" - it doesn't work as return. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
I've got another game engine question if no one minds. I've got a simple conditions in a quest with delay of 0.05 if stage ==1 if NPCref.isbusy ==1 && Gettype MyPackage ==73 NPCref.addscriptpackage MyPackage endif Inside package I call a function which sets quest variable "stage" to 0,NPCref.isbusy to 0, MyPackage toa cell so package is no longer added. So after dialogue stage is set to 0 and package is not added anymore. But there was 1 time when NPC started dialogue after dialogue so I think that script in stage 1 executed twice. I can send a full script if needed. So maybe script got to the point of stage1 and didn't "realise" or checked wrong and "though" that stage is still eval to 1. I wanted to ask - is there any way to solve this issue? I can't execute stage 1 just once because I need dialogue to happen. Quest will be executed many timer in game so I need to make it reliable. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
I'll try to play with "IsPlayingIdle" and make an anim "Special". If it really works, I will be one step further to removing any randomness in the scene. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
Prideslayer, I meant http://geck.bethsoft.com/index.php?title=IsAnimPlaying I was adding travel package to actor to another dead actor. Animation was suppostd to be looping(guard hits a prisoner on the ground from "The Pitt". First I was hoping that on the end of his travel package I will set a variable and check "isAnimPlaying ==0" and will start idle and then after 10 secs will add him another travel package ). But I coudn't because function returned 0. So I ended up with animation on the end of the package and a timer. (I hate both of them) I neved knew "IsIdlePlaying". So I can create new animation in "Loose" folder, open some existing anim, then tick "Special idle" and IsIdlePlaying will return 1 then? -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
It's simple - you add package to player and choose an anim with start idle. I think you can see it in VCG quest -when Doc.Mitchel wakes player up. But recently I moved to spamming "playidle" on player and NPC. Packages idles often don't execute. And one execution of Playidle sometimes is not enough too. Usually I spam this during the whole scene(with 0.05 quest delay) untill the very end and interrupt anim with Dialogue package (or fade-to-black + PlayGroup forward 1). But when I can't do that, I spam playidle for 3 seconds with timer. It's a VERY big shame Fallout has no check for actor playing particular idle. "IsAnimationPlaying" doesn't seem to be working. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
I got stuck there so many times -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
Odessa, thanks! I never knew about "Close all menus command" . The thing is - it closes MCM menu too. And for the record(obviously) - it works. -
Well, I would have done MS16(Trouble on homefront) already if it wasn't that hard and messy. There are lots of possibilities! I mean you can talk to Amata\Overseer first, kill him first, kill Amata(not sure), blow up vault. And I've got 3 possible cases - vanilla one, Player character "dating" Butch and Amata "dating" Butch. Damn. It will get enternity to make it. Now I only implemented(in public version) Gomes greeting sex which won't work if you hadn't started new game since 1.06.
-
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
Try "tapping" escape key - maybe that'll switch menumode off. -
Fallout New Vegas GECK / Scripting Help 101
tomm434 replied to Halstrom's topic in Fallout Technical Support
There is special function in NVSE "tap control". I think there is nothing better than that. Also can you clarify what you meanby sleeping? sleeping mode menu?
