User Tools

Site Tools


dcx:event_library

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
dcx:event_library [2015/11/21 19:39] – vicdcx:event_library [2026/06/22 12:21] (current) – external edit 127.0.0.1
Line 32: Line 32:
  
 If there is a lot of interest in the Community Project I might start on this though. If there is a lot of interest in the Community Project I might start on this though.
 +
 +====Tutorial to create a very simple event library===
 +Lets say we would like to have functionality that simulate some command & control problems for one or both of the sides in a scenario. How would we design an event library that would be capable to provide that functionality?
 +
 +Before we start lets list what we'll need to do:
 +
 +* A regime libvar that switches this functionality on/off: CommandProblemsEnabled = yes/no
 +
 +* A regime libvar that specifies the % a HQ suffers C&C problems: CommandProblemsChance = numeric (0-100)
 +
 +* A regime libvar that specifies the basic AP its units will lose: CommandProblemsFixedAPLoss = numeric (0-100)
 +
 +* A regime libvar that specifies a random ammount of AP its units will lose: CommandProblemsRandomAPLoss = numeric (0-100)
 +
 +* A 'turn event' that when the regime in question has its regimeLibVar CommandProblems set to 'yes' loops through all HQs to test them for Command problems.
 +
 +Thats it. It will do the job. No chrome, but I am keeping it simple in this tutorial.
 +
 +===Step A: Creating an event library and libvars===
 +
 +Make sure you have the advanced editor enabled. In the main menu click on the 'advanced editor' button and specify a smallest map size as possible.
 +
 +{{:dcx:evlib7.jpg|}}
 +
 +Then once in the advanced editor go to the settings tab and then to the 'Import and Other settings' tab and set the ruleset to 'VR'
 +
 +This is important as it tells the Simple editor that your event library is compatible with the default VR ruleset.
 +
 +{{:dcx:evlib1.jpg|}}
 +
 +Then go to the lib tabsheet.
 +
 +{{:dcx:evlib2.jpg|}}
 +
 +There we do the following.
 +
 +1. Create a new library
 +
 +2. Set the name of this library. Remember it has to be a unique name (call it something specific, not just 'my library' or something similar)
 +
 +3. Add 4 libvars
 +
 +4. Set each libvar to 'regime libvar' type and give it a propper name thats unique and describes already what it does. 
 +
 +Optionally you can also give a description field to each libvar and to the library as a whole. This is RECOMMENDED because you'd like other designers to make use of your library as well. Thats the whole philosophy behind the Community Project.
 +
 +Thats it. We have defined our library and libvars. Now we go to the event editor.
 +
 +===Step B: Adding the event scripting===
 +
 +{{:dcx:evlib3.jpg|}}
 +
 +In the event editor you do the following.
 +
 +1. Add a new event. 
 +
 +2. Assign the event to your "Command Problems Library".
 +
 +3. Name the event
 +
 +4. Set the execution type for the event to 'late start turn'. 'Late' and not 'Early' because we want to modify the AP of the units after they are set and before the player gets access to moving them.
 +
 +===Step C: Scripting the event===
 +
 +Then I script the following code:
 +<code>
 +0)    ' event code is going to come here
 +1)    SETVAR: TempVar1 = CheckTurn
 +2)    ' 
 +3)    SETVAR: TempVar2 = CheckLibVarRegime(TempVar1, 'Command Problems Library', 'CommandProblemsEnabled')
 +4)    SETVAR: TempVar3 = CheckLibVarRegime(TempVar1, 'Command Problems Library', 'CommandProblemsChance')
 +5)    SETVAR: TempVar4 = CheckLibVarRegime(TempVar1, 'Command Problems Library', 'CommandProblemsFixedAPLoss')
 +6)    SETVAR: TempVar5 = CheckLibVarRegime(TempVar1, 'Command Problems Library', 'CommandProblemsRandomAPLoss')
 +7)    ' 
 +8)    SETVAR: TempString1 = ''
 +9)    ' 
 +10)   CHECK: TempVar2 > 0
 +11)     ' If CommandProblemsEnabled=Yes we arrive here
 +12)     LOOPER: TempVar6 FROM 0 TO CheckTotalUnits
 +13)       ' 
 +14)       CHECK: CheckUnitHistoricalID(TempVar6) > 0
 +15)         CHECK: CheckUnitIsHQ(TempVar6) > 0
 +16)           CHECK: CheckUnitOwner(TempVar6) == TempVar1
 +17)             ' 
 +18)             SETVAR: TempVar7 = CheckRandomPercent
 +19)             CHECK: TempVar3 > TempVar7
 +20)               ' If random roll 0-100 is below CommandProblemsChance for this HQ a command problem occures
 +21)               ' 
 +22)               SETVAR: TempVar10 = TempVar5
 +23)               SETVAR: TempVar10 * CheckRandomPercent
 +24)               SETVAR: TempVar10 / 100
 +25)               SETVAR: TempVar10 + TempVar4
 +26)               SETVAR: TempVar11 = 0
 +27)               SETVAR: TempVar11 - TempVar10
 +28)               ' tempvar11 has the AP loss calculcated for units under this HQ (or hq itself)
 +29)               SETVAR: TempString1 + CheckUnitName(TempVar6)
 +30)               SETVAR: TempString1 + ' has suffered '
 +31)               SETVAR: TempString1 + TempVar11
 +32)               SETVAR: TempString1 + 'AP due to command problems.'
 +33)               SETVAR: TempString1 + ReturnCRLF
 +34)               ' 
 +35)               LOOPER: TempVar8 FROM 0 TO CheckTotalUnits
 +36)                 ' 
 +37)                 SETVAR: TempVar9 = 0
 +38)                 CHECK: CheckUnitHQ(TempVar8) == TempVar6
 +39)                   SETVAR: TempVar9 = 1
 +40)                 END CHECK
 +41)                 CHECK: CheckUnitIsHQ(TempVar8) > 0
 +42)                   SETVAR: TempVar9 = 0
 +43)                 END CHECK
 +44)                 CHECK: TempVar6 == TempVar8
 +45)                   SETVAR: TempVar9 = 1
 +46)                 END CHECK
 +47)                 ' 
 +48)                 CHECK: TempVar9 == 1
 +49)                   ' This unit is suffering Command Problems
 +50)                   EXECUTE: ExecUnitApModify(TempVar8, TempVar11, -1, -1)
 +51)                 END CHECK
 +52)                 ' 
 +53)               END LOOPER
 +54)               ' 
 +55)             END CHECK
 +56)             ' 
 +57)           END CHECK
 +58)         END CHECK
 +59)       END CHECK
 +60)       ' 
 +61)     END LOOPER
 +62)     ' 
 +63)     CHECK: CheckStringLength(TempString1) > 0
 +64)       EXECUTE: ExecMessage(TempVar1, -1, -1, -1)
 +65)     END CHECK
 +66)     ' 
 +67)   END CHECK
 +</code>
 +
 +===Step D: Save the event library===
 +
 +{{:dcx:evlib4.jpg|}}
 +
 +Save your work with the .dcxevlib extension.
 +
 +And thats it. 
 +
 +In the final Step E i am just going to show how it looks like to the end-user when he loads your event library.
 +
 +===Step E: In the Simple Editor & In-Game===
 +
 +{{:dcx:evlib6.jpg|}}
 +
 +In the Simple Editor you or an end-user can load your event library and configure it (as shown in the example above) for one or more regimes.
 +
 +Also note that the contents of the library are correctly listed as 4 libvars and 1 event.
 +
 +Then finally when in-game when in-game the player will get reports like this one:
 +
 +{{:dcx:evlib8.jpg|}}
 +
 +It is important to check if your event libraries work properly before distributing them.
 +
 +Don't forget to use the description fields for the library itself and its libvars and/or stringlists (tables for end-user).
 +
 +Thats it! A working and tested library ready for use or sharing with other designers.
 +
 +===Tutorial library===
 +
 +Here you can download the library created in the tutorial above:
 +
 +[[http://www.vrdesigns.nl/privatepatch/CommandProblems.zip|CommandProblems.zip]]
dcx/event_library.1448134776.txt.gz · Last modified: 2026/06/22 12:14 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki