Jump to content

[REACTIE] IV C# Scripting Tutorials


Hanneswasco

Recommended Posts

Mooi dat er weer wat meer aandacht is voor modding :).

De tutorials zijn goed duidelijk, zeker voor beginners.

Heb achter wel een aantal puntjes:

Bij elke tutorial heb je bij de using statements namespaces staan die je niet gebruikt, staat netter als je die dan er ook niet neerzet.

Ook zou je (beter) kunnen uitleggen waarom en hoe je de event handlers gebruikt.

En als derde bij de tutorial "Jezelf een wapen geven" heb je bij de method "geefWapen" een if-else constructie, het is netter om daar een switch te gebruiken.

Verder zou je misschien ook nog kunnen verwijzen naar de documentatie, zodat mensen zelf ook makkelijker kunnen 'expirimenteren" door andere functie's e.d. te gebruiken.

Dit bovenste zijn puur een aantal punten die de tutorials nog beter maken :)

Link to comment
Delen op andere websites

Bij elke tutorial heb je bij de using statements namespaces staan die je niet gebruikt, staat netter als je die dan er ook niet neerzet.

Dat staat inderdaad netter, toen ik dat deel schreef wou ik niet te veel extra informatie geven. Zal het erbij zetten.

Ook zou je (beter) kunnen uitleggen waarom en hoe je de event handlers gebruikt.

Ook hierbij dacht ik dat dit teveel informatie zou zijn. :puh:

En als derde bij de tutorial "Jezelf een wapen geven" heb je bij de method "geefWapen" een if-else constructie, het is netter om daar een switch te gebruiken.

Dat klopt inderdaad, maar ik wou eerst de if-else constructie eens demonstreren. In een latere tutorial kan ik dit oplossen door een switch (of nog beter: een map).

Verder zou je misschien ook nog kunnen verwijzen naar de documentatie, zodat mensen zelf ook makkelijker kunnen 'expirimenteren" door andere functie's e.d. te gebruiken.

Ik zal eens een gehele tutorial daar aan wijden, hoe je makkelijk door de verschillende klassen kan 'bladeren', een overzicht van de documentatie en andere dingetjes. ^^

Bedankt voor je feedback!

Link to comment
Delen op andere websites

Supergaaf werk! Ik ben erg benieuwd wie er allemaal in gaan stappen, vooral omdat het scripten voor IV wellicht al een basis kan leggen voor het scripten in V hoop ik dat dit soort tutorial-werk de modding scene op het forum weer even een goeie steun in de rug kan geven.

Helaas geen PC, anders was ik hier zeker mee aan de slag gegaan. Heerlijk stap-voor-stap opgebouwd en zo duidelijk geschreven dat zelfs een nobody op het gebied van schrijftalen er mee uit de voeten kan. :tu:

Link to comment
Delen op andere websites

  • 1 maand later...

Je zou dat op verschillende manieren kunnen oplossen.

Je kan gebruik maken van de functie Game.DisplayText(), in plaats van de functie e.Graphics.DrawText(). Het nadeel hiervan is dat je de positie van de tekst niet kan bepalen (dit zal altijd linksbovenaan je scherm zijn). Het voordeel is dat je een tijd kan meegeven (in milliseconden) en je dus geen omwegen moet maken om er een limiet qua tijd op te zetten.

Een tweede mogelijkheid is een variabele maken die bijhoudt hoeveel frames er al getekend zijn, bijvoorbeeld de variabele aantalFrames. Deze variabele verhogen we telkens er een frame getekend wordt met 1 (door de instructie aantalFrames++). Daarna zet je in een if-instructie of aantalFrames kleiner is dan bijvoorbeeld 1000, en als dat zo is dan teken je de tekst op het scherm. Anders niet.

Deze oplossing is niet er goed, aangezien het dan niet vast ligt hoe lang de tekst op het scherm blijft staan. De ene persoon zal een FPS van 100 hebben, en dan blijft de tekst 10 seconden staan, maar een andere persoon zal een FPS van 50 hebben en dan blijft de tekst 20 seconden staan.

Hieronder de code voor deze oplossing:

public class Class1 : Script
{
       public int aantalFrames = 0;

       public Class1()
       {
               this.PerFrameDrawing += new GraphicsEventHandler(tekenElkFrame);
       }

       public void tekenElkFrame(object sender, GraphicsEventArgs e)
       {
               aantalFrames++;
               if(aantalFrames > 1000)
               {
                        e.Graphics.DrawText("Hallo GTA IV!", 10, 20);
               }
       }
}

Verder zie ik nog een derde oplossing door gebruik te maken van ticks. Dit heb ik nog niet in de tutorials beschreven en was ik van plan later te doen. Het werkt ongeveer hetzelfde als hoe je iets elke frame wilt laten gebeuren, maar dan elke x milliseconden, in plaats van bij elk frame. Je stelt this.Interval als de x in mijn vorige zin. Is dit 10 dan wordt de functie doeElkeXSeconden om de 10 ms uitgevoerd, is dit 1000 dan wordt de functie om de 1000 ms, ofwel 1 seconde, uitgevoerd. Daarna geven we aan this.Tick mee welke methode we willen dat uitgevoerd wordt.

Als je dan de variabele aantalMilliseconden elke x milliseconden met x verhoogd, kan je aantalMilliseconden dus eigenlijk zien als een klok. In de methode tekenElkFrame kan je dan nagaan of aantalMilliseconden kleiner is als bijvoorbeeld 10000. Dit zorgt ervoor dat je dus enkel de eerste 10 seconden die tekst ziet staan. Hieronder het script, ik heb het wel maar even uit m'n hoofd geschreven en niet getest aangezien ik de juiste bestanden niet op m'n laptop heb staan:

public class Class1 : Script
{
       public int aantalMilliseconden = 0;

       public Class1()
       {
               this.PerFrameDrawing += new GraphicsEventHandler(tekenElkFrame);
               this.Interval = 500;
               this.Tick += new EventHandler(doeElkeXSeconden);
       }

       public void doeElkeXSeconden()
       {
               aantalMilliseconden += this.Interval;
       }

       public void tekenElkFrame(object sender, GraphicsEventArgs e)
       {
               if(aantalMilliseconden > 10000)
               {
                        e.Graphics.DrawText("Hallo GTA IV!", 10, 20);
               }
       }
}

Verder is deze oplossing ook nog niet super, aangezien aantalMilliseconden snel heel groot wordt, wat problemen kan geven door een overflow. Wat een overflow precies is, zoek je best even op op Google. ;)

Link to comment
Delen op andere websites

  • 6 maanden later...

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...