Om gebruik te maken van de volledige functionaliteit van Modbase moet je ingelogd zijn.
Na registratie kan je reageren, onderwerpen starten, projecten toevoegen en nog veel meer.
Dit is volkomen
gratis en duurt hoogstens een minuut.

Zonlicht
Het veranderen van de kleur van het zonlicht gebeurt via een script.
Er is maar 1 regel voor nodig en dat is deze:
setSunLight(#, #, #);
Je kan deze plaatsen in het main gedeelte van je gsc.
De # moeten natuurlijk vervangen worden door een getal.
Welke getallen je daar moet invullen kan je te weten komen door in bv photoshop het kleurenpallet te openen.
Daar moet je naar RGB (Red, Green, Blue) kijken.
Die getallen variëren van 0 (zwart) tot 255 (wit). Om nu de juiste getallen te weten die je moet plaatsen waar de hekjes staan moet je telkens het getal dat in het kleurenpallet staat delen door 255. Je zal dus nooit een getal boven 1 uitkomen.
Natuurlijk kan je een getal groter dan 1 invullen maar dan krijg je overbright.
Als je zo verschillende regels achter elkaar zet met tijdsintervallen tussen, kan je je map langzaam laten donker worden en terug licht en kan je zo dag en nacht simuleren. Je moet dan wel eerst een aantal keer uitproberen voor het gewenste effect te bekomen. De richting van waar het licht komt blijft altijd hetzelfde.
Aangezien schaduwen berekend zijn in de compile blijven die ook altijd hetzelfde.
De hoeveelheid van het licht moet je wel nog in je map zelf ingeven.
Dat doe je door worldspawn settings in te geven in de entity kader (n).
Als je het een beetje goed uitwerkt krijg je een effect dat in niet al te veel mappen te zien is.
Bewegende lichtpunten
Bewegend licht zonder fx kan je bekomen door gebruik te maken van een script_model. Klik hiervoor in je 2d grid rechts en kies dan script>model.
Je zal nu een rode kubus krijgen en 2 kaders zullen openen: de entity kader en een venster voor een model te kiezen. Het venster voor ene model te openen sluit je gewoon en de entity mag je ook sluiten (n). Met de rode kubus geselecteerd duw je op k voor het kleuren palet te krijgen. Kies nu de kleur dat je licht moet hebben, de kubus zal dan de kleur krijgen dat je gekozen hebt.
Open nu de entity kader(n) met de kubus nog altijd geselecteerd. Er zal nu als key _color staan en als value een bepaald getal. Dat getal is de kleur die je net gekozen hebt. Selecteer die regel in de entity kader dat de key en value in de invul vakken komen te staan en doe dan de _ voor color weg en geef dat dan in. _color is niet nodig voor de belichting maar dan kan je in radiant wel zien welke kleur van licht het zal zijn, maar _color mag verwijderd worden en dan zal de kubus terug rood worden maar het licht blijft dan de kleur hebben van het getal dat bij color staat (zonder _ dus). Geef dan nog als key light in en als value 250 of een ander getal.
Voor het nu dynamisch te maken moet je het een targetname geven dat je er in een script kan naar verwijzen.
Je entity kader zal er dan zo uitzien:
Nu kan je je map opslagen en compilen.
Om het nu doen te bewegen is er nog een script nodig.
lights()
{
light = getentarray("light","targetname");
if(isdefined(light))
{
for(lp=0;lp<light.size;lp=lp+1)light[lp] thread lighting();
}
}
lighting()
{
while(1)
{
wait(2);
self moveto(self.origin+(Units(x), Units(y), Units(z)),tijd);
self waittill ("movedone");
wait(2);
self moveto(self.origin+(Units(x), Units(y), Units(z)),tijd);
self waittill ("movedone");
}
}
Met dit script kan je meerdere script_models maken en allemaal de targetname light geven, al deze licht punten zullen dan ook hetzelfde bewegen.
Wat in het
rood staat moet je aanpassen door Units. Het script_model zal dan het aantal units in de richting gaan dat je hebt ingegeven. In het
blauw staat in hoeveel tijd het van het ene coördinaat naar het andere moet gaan. while(1) in
oranje zorgt ervoor dat wat tussen while(){ } staat blijft herhaald worden. In het
groen staat de tijd dat het moet wachten voordat het verder mag gaan. In
deze lelijke kleur staat de targetname, als je een andere dan light hebt gebruikt moet je deze aanpassen.
Voeg nu dit script bij in je MapNaam.gsc en plaats dan ook dit in je main() gedeelte van je script:
thread lights();
Je kan het script aanpassen dat er iets anders met het licht gebeurd. Als je het licht wil laten uit en aan gaan dan is dat het makkelijkste om dit script te gebruiken en dan het 1000 units naar onder buiten je map te sturen in een tijd van 1 honderste van een seconde zodat je niet merkt dat het naar onder gaat maar lijkt dat het gewoon uit gaat. Je script zal er dan zo uitzien:
lights()
{
light = getentarray("light","targetname");
if(isdefined(light))
{
for(lp=0;lp<light.size;lp=lp+1)light[lp] thread lighting();
}
}
lighting()
{
while(1)
{
wait(2);
self moveto(self.origin+(0, 0, -1000),0.01);
self waittill ("movedone");
wait(2);
self moveto(self.origin+(0, 0, 1000),0.01);
self waittill ("movedone");
}
}
Als er iets niet zou duidelijk zijn over het scripting gedeelte...
Derix