Author Topic: NWN Contest: The DRM Monster and the Treasure of GOG (posted OCT 27/2010. Contest ends Nov 24/2010)  (Read 4833 times)

Legacy_Banshe

  • Jr. Member
  • **
  • Posts: 76
  • Karma: +0/-0


               They can count as either. But they do have to count. They can either be a friendly NPC (3 of them) or a hostile (10 of them). Basically, including the DRM monster, if it goes over 14 creatures/NPCs, you have broken the rules. '<img'>
               
               

               
            

Legacy_olivier leroux

  • Hero Member
  • *****
  • Posts: 913
  • Karma: +0/-0


               Ok, that sounds fair. Thanks for clearing that up. '<img'>
               
               

               
            

Legacy_Balduvard

  • Full Member
  • ***
  • Posts: 126
  • Karma: +0/-0


               As a friendly reminder to those who may be new to using the toolset: do make regular manual backup copies of your module. The "restore from backup" feature of the toolset will often leave modules corrupted, and if the toolset happens to crash while it is saving your module, much of your work may be permanently corrupted depending on what point it crashed at during the process.
               
               

               
            

Legacy_uberdowzen

  • Newbie
  • *
  • Posts: 41
  • Karma: +0/-0


               Wait, so I'm slightly confused about the rules regarding hostile NPCs. I've got 10 enemies (including the DRM monster) but in classic Bioware style you can turn on the quest givers at then end. Do they count as enemies or friendly NPCs? e.g. do I need to delete 2 of my enemies?
               
               

               
            

Legacy_Banshe

  • Jr. Member
  • **
  • Posts: 76
  • Karma: +0/-0


               I assume that the "quest givers" are neutral or friendly at the beginning (i.e. NPCs) and hostile at the end if you turn on them. Therefore, the quest givers are amongst your 3 friendly/nuetral NPCs allowed. Because at one point, they were friendly or nuetral, you can count them as your NPCs.



If that is the case, then you are ok.



If that is not the case, then please say so.
               
               

               
            

Legacy_uberdowzen

  • Newbie
  • *
  • Posts: 41
  • Karma: +0/-0


               OK, so friendly NPCs you can turn on don't count as enemies. OK, I should be all good then. Unless something goes spectacularly wrong I'll be submitting my entry tonight.



Just out of interest are you allowed to tell us how many people have entered so far?
               
               

               
            

Legacy_uberdowzen

  • Newbie
  • *
  • Posts: 41
  • Karma: +0/-0


               OK, just one other quick question, how do you trigger a script on the death of more than one creature? I've got 2 NPCs who once they're both dead are meant to trigger a script and I can't find any simple way of doing that. Thanks
               
               

               
            

Legacy_Balduvard

  • Full Member
  • ***
  • Posts: 126
  • Karma: +0/-0


               Single OnDeath used by both creatures:

-Set an incrementing killcount local int on the player

-If the killcount reaches a threshold when the next OnDeath fires (in this case, the threshold is 1), trigger the script.
               
               

               
            

Legacy_Banshe

  • Jr. Member
  • **
  • Posts: 76
  • Karma: +0/-0


               I actually do not know any more than what is written in this thread regarding the number of contest entries. No one has taken up my free online storage space offer by using my dropbox referral (see first post). So I assume that most folks have either used the GOG submission guidelines or are still fine tuning their entries.
               
               

               
            

Legacy_uberdowzen

  • Newbie
  • *
  • Posts: 41
  • Karma: +0/-0


               

Balduvard wrote...

Single OnDeath used by both creatures:
-Set an incrementing killcount local int on the player
-If the killcount reaches a threshold when the next OnDeath fires (in this case, the threshold is 1), trigger the script.


Right. I was having some problems with the whole PC/NPC variable thing earlier, how do you store variables on the PC as opposed to an NPC? Is it to do with the script you define the variable in or do you need to set it somewhere else?

Sorry for the noobish questions '<img'>
               
               

               
            

Legacy_VPJ

  • Newbie
  • *
  • Posts: 42
  • Karma: +0/-0


               Oooo...just saw this.  Looks like a hoot...should jolly well be, in fact...some fantastic mod makers out there.  Forgive me if I missed it, but is there a 2nd and/or 3rd prize or winner take all? 

Also, out of curiousity, who's judging this bad boy? Some of these contests have been known to drag on for a bit due to everyone needing to have their say...just sayin'.  *grin*  At any rate, is it a committee of six bazillion that need to meet to determine the shape of the table or just Banshe and dunniteowl working late nights and drinking lots of coffee to decide who wins? 
               
               

               
            

Legacy_olivier leroux

  • Hero Member
  • *****
  • Posts: 913
  • Karma: +0/-0


               

uberdowzen wrote...
Just out of interest are you allowed to tell us how many people have entered so far?


Anyone logging in to the ftp server can see that, so I guess it's no secret. As far as I can see only two entries were uploaded so far.



VPJ wrote...
Forgive me if I missed it, but is there a 2nd and/or 3rd prize or winner take all? 


If I'm not mistaken:

For the model contest it's one winner only. And the prize is 3 free games from gog.com.

For the module contest it's five winners, no 2nd or 3rd prizes, all treated equally. And the prize is 5 free games from gog.com for EACH (!) winner.

So 3 games are given to the model contest winner, 25 games in total are divided between the 5 module contest winners.

***

I have an idea for the module contest but I still haven't found the time to actually work on the module and my standards might be too high for my own good; the most simple scripting always gets in the way of what I want to achieve and takes too much time away from actual area building and writing. Considering it's the ideas that count and not the scripting, would it be allowed for newbie builders to use Base Modules with easy-to-use scripting systems to tell their story?
               
               

               


                     Modifié par olivier leroux, 16 novembre 2010 - 02:15 .
                     
                  


            

Legacy_Balduvard

  • Full Member
  • ***
  • Posts: 126
  • Karma: +0/-0


               

uberdowzen wrote...
how do you store variables on the PC as opposed to an NPC? Is it to do with the script you define the variable in or do you need to set it somewhere else?


With OnDeath scripts, you can pick up the PC by using GetLastKiller() to set an object oKiller. Once you set the PC object using that function, you can then pass a SetLocalInt function on that object to set the int you want to use for tracking. A caveat to this is if your module has more than one player, your player has henchman, or your player has summoned something, as the object you want to set the int on may not necessarily be the one that lands the killing blow. You can use GetFactionLeader(oKiller) or GetMaster(oKiller) (if for example oKiller returns something that fails GetIsPC(oKiller), it is likely a henchman, or else something really odd is going on with your combat scenario).

If you have further questions regarding scripting, do feel free to post them in the Scripting forum, where builders more savvy than I can see and comment, to keep this thread from going off-topic.

olivier leroux wrote...
Considering it's the ideas that count and not the scripting, would it be allowed for newbie builders to use Base Modules with easy-to-use scripting systems to tell their story?


I extensively used Gestalt's cutscene scripts to tell my story, as with a bit of reading you can do some really powerful things that look great ingame by following a pretty simple three step process:

1. Storyboard out the specific actions that you want to have occur on screen (this is where the reading comes in, distilling down the action of the scene into specific commands you know you can use the scripts for).
2. Convert your storyboard into NWScript using Gestalt's cutscene scripts.
3. Tweaking the cutscene until it looks like you intended (this is usually always a camera problem, fidgety things they are).
               
               

               


                     Modifié par Balduvard, 16 novembre 2010 - 02:20 .
                     
                  


            

Legacy_uberdowzen

  • Newbie
  • *
  • Posts: 41
  • Karma: +0/-0


               ACK! Still not working!!



OK so this is where I'm at: the script that runs which accepts the quest from the NPCs has this line:



   SetLocalInt(GetPCSpeaker(), "nStaffKilled", 0);



Then I've added to the onDeath script of the NPCs:



   if (GetLocalInt(oKiller, "nStaffKilled") == 1)

   {

       object oPC = GetPCSpeaker();

       AssignCommand(oPC, ClearAllActions());

       SetCutsceneMode(oPC, TRUE);

       ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneDominated(), oPC, 100.0f);

       SetCameraMode(oPC, CAMERA_MODE_TOP_DOWN);

       DelayCommand (2.0f, AssignCommand(oPC, FadeToBlack(oPC, FADE_SPEED_SLOWEST)));

       DelayCommand (3.0f, AssignCommand(oPC,   EndGame("")));

   }



   SetLocalInt(oKiller, "nStaffKilled", 1);



Can anyone see what's not working? I can't.
               
               

               
            

Legacy_Balduvard

  • Full Member
  • ***
  • Posts: 126
  • Karma: +0/-0


               

uberdowzen wrote...
object oPC = GetPCSpeaker();


This function will only return a valid value when used as part of a conversation, not an OnDeath. Use oKiller instead of oPC or use another function that finds the PC object (if you used oPC instead of oKiller in the event that oKiller was not a PC). And when in doubt, debug--throw a SendMessageToPC(GetFirstPC(),"feedback goes here"); into that if case to see whether or not it's actually firing.

As another reminder, the forum for scripting help is this way.