Jump to content

Maybe We Can #include ".h" Some New Features?


Tracker
 Share

Recommended Posts

There is a file with that extension that contains and defines the npl commands. I don't remember the exact file name or even the location, but I think we can use it to make levels that have sequential objectives, even in-level cut scenes. The problem is it may be a "vestigial file" that is not even read anymore and it would be borderline legal as it, while not part of the executalbe itself, would contain executable code (then again, so do the npl, nrn, and various other files that we mod without a second thought). It may be best to get seperate permission from TLC to modify this file, but if we do and it is actually used, it could extend the modding life of the current .exe many, many times.

Link to comment
Share on other sites

I'm assuming you're talking about nerpnrn.h, which is found in the Levels folder. It doesn't appear to define much of anything. Here is the body of the file:


;;;;;;;;;;;;;;;;;;;;;
; NERPs Source File ;
;;;;;;;;;;;;;;;;;;;;;
; Generated
; __DATE__
;;;;;;;;;;;;;;;;;;;;;
; Stamp it here:
__TIME__:
;;;;;;;;;;;;;;;;;;;;;

// Include command macros
#include <nerpdef.h>

// These are standard macros

/////////////////////////////////////////////////////////////////////////////////
// Internally Used Macros //
/////////////////////////////////////////////////////////////////////////////////

// Prints message onscreen - used internally
#define msg(x) TRUE ? _SetR4(x) \
TRUE ? _AddR4(_GetR5()) \
_GetR0() = 1 ? _SetMessage(_GetR4(),0)

// Prints message onscreen WITHOUT arrows - used internally
#define msgn(x) TRUE ? _SetR4(x) \
TRUE ? _AddR4(_GetR5()) \
_GetR0() = 1 ? _SetMessage(_GetR4(),1)

/////////////////////////////////////////////////////////////////////////////////
// Message Printing //
/////////////////////////////////////////////////////////////////////////////////

// Increment message until x - waits for previous message to finish
#define wait(x) _GetR5() < x ? :wbe

// Removes messages from window
#define Clear() _SetMessage(_GetR4(),1) \
TRUE ? _SetMessagePermit(1)

/////////////////////////////////////////////////////////////////////////////////
// Function Types //
/////////////////////////////////////////////////////////////////////////////////

// Defines function start and decides whether to skip it or not
#define Func(x) TRUE ? _AddR6(1) \
TRUE ? _SetR2(1) \
TRUE ? _AddR2(_GetR3()) \
_GetR2() != _GetR6() ? :\
x/ \
x: \
msg( _GetR7() )

// (Without arrows)Defines function start and decides whether to skip it or not
#define Funcn(x) TRUE ? _AddR6(1) \
TRUE ? _SetR2(1) \
TRUE ? _AddR2(_GetR3()) \
_GetR2() != _GetR6() ? :\
x/ \
x: \
msgn( _GetR7() )

// This is a function that does not print any messages whatsoever
#define Function(x) TRUE ? _AddR6(1) \
TRUE ? _SetR2(1) \
TRUE ? _AddR2(_GetR3()) \
_GetR2() != _GetR6() ? :\
x/ \
x: \

// Defines function end - place to skip to
#define FuncEnd(x) TRUE ? :Next \
x/:

// Restart functions
#define Start() TRUE ? _SetR3() 0 \
TRUE ? _SetR6() 0 \
Stop

// Defines start of main function
#define Main() __MainFunc:

// Defines end of main function
#define MainEnd() TRUE ? :Complete

// Jump to label
#define goto(x) :x


// These are bit I seemed to have in every NRN file.

// Bypass everything if objective still showing - will get past this when space pressed
//GetObjectiveSwitch ? SetMessagePermit 0
//GetObjectiveSwitch ? :Skip
//GetObjectiveShowing = 1 ? :Skip

_GetObjectiveSwitch() ? _SetMessagePermit(0)
_GetObjectiveSwitch() ? :SkippedSkip
_GetObjectiveShowing() = 1 ? :Skip
SkippedSkip:

//Set wait times (sample length multiplier, time added after sample, time for no sample)
TRUE ? _SetMessageTimerValues(1000,1000,10000)

//GetOxygenLevel = 0 ? SetLevelFail

//R0 is used as a general counter
TRUE ? _AddR0(1)

// Record function numbers
TRUE ? _SetR6(0)

// Jump to after the standard labels below
TRUE ? :end

Wbe:
_GetMessageTimer() > 0 ? Stop
TRUE ? _SetTimer0(0)
TRUE ? _SetR0(0)
TRUE ? _AddR5(1)
Stop

Skip:
TRUE ? _SetTutorialFlags(4095)
TRUE ? _SetMessagePermit(1)
TRUE ? _SetTimer0(0)
TRUE ? _SetTimer1(0)
TRUE ? _SetTimer2(0)
TRUE ? _SetR0(0)
TRUE ? _SetR1(0) // This is just reset here, but not used
TRUE ? _SetR5(0)
TRUE ? _SetR7(1)
TRUE ? _CameraUnlock()
Stop

Next:
TRUE ? _AddR3(1)
Clear:
TRUE ? _SetR0(0)
TRUE ? _SetTimer0(0)
TRUE ? _AddR7(_GetR5())
TRUE ? _SetR5(0)
Stop

finish:
Stop

Complete:
_GetMessageTimer() > 0 ? Stop
TRUE ? _SetLevelCompleted()
Stop

// Continue running from here...
end:


// IMPORTANT NOTES:
/////////////////////

// Register 0 is reserved for per-message counting
// Register 2 is reserved for auto-function calling
// Register 3 is reserved for current-function counter
// Register 4 is reserved for initial function message number
// Register 5 is reserved for per-function message offset
// Register 6 is reserved for auto-function calling
// Register 7 is reserved for automatic message numbering

// thus leaving register 1 spare, which shall probably be needed for further NERPS++ development.
// Maybe sometime it could be an idea to set aside
// some extra registers especially for the above.

// First of all, lets timestamp this file.

To me, it looks like a file used for notes, especially with the double-slash comments. LRR-GODS doesn't use // to designate a comment, it uses a semicolon. That really convinces me that the game doesn't use this file at all. However, we might be able to use it to get more familiar with NPL scripting.

Link to comment
Share on other sites

Addictgamer

Instead of facepalming and rewriting an explanation 100 times, I'm gonna point you to google: http://lmgtfy.com/?q=what+is+a+c+header+file

Link to comment
Share on other sites

This is what happens when you are used to SDL, you see #include and think it defines something completely (which is something usefull), but it does not, the result is nothing but disappointment.

Link to comment
Share on other sites

You don't know who TLC is? Also TLG. Google either.

Tracker, firstly, DDI owns the WAD files, not TLG, they just own the game. And we don't need permission. Also it doesn't seem to do anything usefull.

Link to comment
Share on other sites

TLC = The LEGO Company. They wouldn't acknowledge us if we asked them for permission but it's not needed for 99% of our modding.

Link to comment
Share on other sites

TLC = The LEGO Company. They wouldn't acknowledge us if we asked them for permission but it's not needed for 99% of our modding.

Well if they won't acknowledge us then we should spam their inbox until we get a response.

We could have an 1 email with a bunch of questions about LRR (Will it be in LEGO Universe?, can we have the rights to it?, etc.) and then everyone can send it in with the same subject and wait till they replay.


Or not, what ever.
Link to comment
Share on other sites

Spamming anyones inbox with anything is going to get you a bad response (if any); they've got enough problems to deal with already.

Link to comment
Share on other sites

  • 2 weeks later...

Even though they probably wouldn't give it to us, I do think having the source code would be pretty useful. I haven't made any major mods (mainly just an extra upgrade level to the ore refinery to increase production and a scanner upgrade for the chrome crusher) since my experience is with programing, not 3D modeling or graphic design. I'd probably go crazy with implementing new features (online co-op multiplayer and native Windows 7 and Linux support, anyone?) if I could get the source code.

Link to comment
Share on other sites

Even though they probably wouldn't give it to us, I do think having the source code would be pretty useful. I haven't made any major mods (mainly just an extra upgrade level to the ore refinery to increase production and a scanner upgrade for the chrome crusher) since my experience is with programing, not 3D modeling or graphic design. I'd probably go crazy with implementing new features (online co-op multiplayer and native Windows 7 and Linux support, anyone?) if I could get the source code.

I think all of us would like to do this, but actually coding it would be a MASSIVE headache. Can you code multiplayer?

That being said, coding for 7 should be relatively easier.

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.