Jump to content

[SA|SCM] SCM vs CLEO


Dutchy3010

Recommended Posts

CLEO VS SCM

Inleiding

Wat is er anders aan het scripten tussen SCM en CLEO? Regelmatig krijgen we zo'n vraag op het forum, dus daarom deze uitleg-tutorial. Als men "CLEO" denkt, denkt men gelijk aan een script dat ervoor zorgt dat je je savegames nog kunt spelen. Aan de ene kant hebben ze gelijk, aan de andere kant niet. Het is alsof je zegt "Een koe is een dier, dus alle dieren zijn koeien". Een onderdeel van CLEO is inderdaad dat je een script kunt maken die er nog voor zorgt dat je je savegames kunt blijven spelen, maar het heeft nog 2 onderdelen, namelijk plugins (iets waar ik in deze tutorial niet over zal hebben, vind ik het minst belangrijk) en nieuwe opcodes. Hier kom ik later nog op terug. Het doel van deze tutorial is duidelijk maken wat binnen een script precies het verschil is tussen een CLEO-script en een SCM-script. Hopelijk op zo'n manier dat je van een SCM-script (een deel daarvan uiteraard) een CLEO script kunt maken, of in ieder geval weet waar precies de verschillen zitten.

CLEO Opcodes

Allereerst zal jullie wat uitleg geven over de extra opcodes. Er zijn 40 nieuwe opcodes, die erg handig zijn. Bijvoorbeeld: "0AB6: store_target_marker_coords_to 0@ 1@ 2@ // IF and SET". Deze opcode zal, wanneer je die marker op je map hebt gezet, deze coördinaten vastleggen. Er zijn zo in totaal 40 opcodes toegevoegd, die allemaal beginnen met "0A..". Helaas kan je niet zeggen dat elke "0A.." een CLEO-opcode is, want er zijn ook opcodes die daarmee beginnen en die niet CLEO-opcodes zijn. Waar je hierbij goed op moet letten, is dat je deze codes zowel mag gebruiken bij het maken van een SCM-script als bij het maken van een CLEO-script. Je moet echter wel de CLEO library geïnstalleerd hebben wil je deze opcodes kunnen afspelen. Met andere woorden: als je een scm-script maakt m.b.v. deze codes, zoals bij Design Your Own Mission, dan moet iedereen die die mod wil spelen de CLEO Library installeren. Al is dat geen probleem, want als iemand een leuke mod ziet wil die dat er vast wel even voor installeren.

CLEO Scripts

Een groot verschil tussen CLEO en SCM, is dat SCM met meerdere editors kan worden gemaakt. Bekendste voorbeeld buiten SannyBuilder, is Missonbuilder. CLEO is SannyBuilder-specifiek, dus alles wat je met CLEO wil doen, moet met SannyBuilder. Het grote voordeel aan een CLEO-script is, zoals je al wel weet, dat je hem kan laten draaien buiten de Main.scm. Aangezien de Main.scm niet wordt aangepast, hoeft er ook geen New Game worden gestart, en kan je dus gewoon verder met je oude savegame. Daarop volgend heb je dan natuurlijk het voordeel dat je een mod kan toevoegen en weghalen wanneer je het wil. Bij een SCM-script ben je dan genoodzaakt om iedere keer New Game te beginnen, als je telkens met een scm-mod start. Je kunt een CLEO-file herkennen aan de extensie ".cs".

Het verschil tussen SCM en CLEO

Hier draait eigenlijk heel de tutorial om: wat is nou precies het verschil tussen de scripttalen? Over het algemeen weinig. De structuren zijn hetzelfde, de meeste opcodes zijn hetzelfde, en de modelnamen zijn hetzelfde. Hieronder zal ik een paar verschillen uiteenzetten.

{$CLEO .CS} boven de file

Bovenaan de CLEO-file moet je "{$CLEO .CS}" zetten. Dat is om aan te geven dat deze file een ".cs" extensie moet krijgen. Bij een SCM-script hoeft dat uiteraard niet. Wanneer je "{$CLEO .CS}" vergeet te schrijven, krijg je dus een .scm bestand, wat natuurlijk totaal niet werkt.

Eén thread per file

Allereerst moet je hiervoor weten wat een thread is. Als je niet weet wat een thread is, kan je deze tutorial doorlezen, waar onder andere threads in wordt uitgelegd. In de SCM-file staan onzettend veel threads bij elkaar in één file. CLEO heeft dat niet. Een thread moet in een aparte file komen, dus 1 thread per file. Je kunt wel een tweede thread openen, maar dan moet je de opcode "0A92: create_custom_thread "ShowTextBox.s" " gebruiken.

Gebruik een paar opcodes nooit!

Allereerst opcode "004E", wat de "end_thread" is. Als je een CLEO script (geen missie cleo script) wil stoppen, moet je de volgende opcode gebruiken: "0A93: end_custom_thread".

Gebruik het tegenovergestelde, dus geen "0A93" wanneer je een missie CLEO script gebruikt!

Missies zijn ander soort!

Bij missies van CLEO moet je andere opcodes gebruiken om het script te starten en te stoppen! Dat zijn respectievelijk "0A94: start_custom_mission "missions\CustomMission1" " en "004E: end_thread" om dat te stoppen!

Gebruik geen globale variabelen

Je mag in een script geen globale variabelen ($...) gebruiken, tenzij deze voorkomen in "CustomVaribles.ini". Gebruik de lokale variabelen (..@).

Opslaan

Het opslaan wordt ook anders gedaan. Bij CLEO moet je daarvoor de opcode "0A95: enable_thread_saving" gebruiken.

Tot Slot

Ik hoop dat ik wat duidelijker heb gemaakt wat precies CLEO is en wat de verschillen zijn. Je kunt natuurlijk altijd in de Help-Files van SannyBuilder kijken voor een uitgebreidere uitleg. Daarnaast hoop ik dat ik alles gezegd heb, uiteraard zijn aanvullingen van harte welkom! :)

Link to comment
Delen op andere websites

maar het heeft nog 2 onderdelen, namelijk plugins (iets waar ik in deze tutorial niet over zal hebben, vind ik het minst belangrijk) en nieuwe opcodes.

Ik wil niet vervelend zijn maar de een aantal plugins zijn wel belangrijk wil je ook maar iets anders maken dan een spawn. Zo heb je namenlijk de 'GXTHook.cleo' nodig om überhaupt iets van text in je mods te laten zien. Verder weer een handige tutorial voor mensen die nieuw zijn met scm/cleo.

Link to comment
Delen op andere websites

Gebruik geen globale variabelen

Je mag in een script geen globale variabelen ($...) gebruiken, tenzij deze voorkomen in "CustomVaribles.ini". Gebruik de lokale variabelen (..@).

Opslaan

Het opslaan wordt ook anders gedaan. Bij CLEO moet je daarvoor de opcode "0A95: enable_thread_saving" gebruiken.

Hele mooie tutorial, eindelijk eens duidelijk uitgelegd :klap: Alleen heb ik een paar vragen over deze twee regels. Als je bijvoorbeeld een auto creëert, en die zet je bijvoorbeeld in $AUTO werkt dit gewoon goed. Dus hoe word deze regel dan bedoeld?

En, wat houd de opcode "0A95: enable_thread_saving" eigenlijk in, wat doet het? :)

Ga zo door :)

Link to comment
Delen op andere websites

maar het heeft nog 2 onderdelen, namelijk plugins (iets waar ik in deze tutorial niet over zal hebben, vind ik het minst belangrijk) en nieuwe opcodes.

Ik wil niet vervelend zijn maar de een aantal plugins zijn wel belangrijk wil je ook maar iets anders maken dan een spawn. Zo heb je namenlijk de 'GXTHook.cleo' nodig om überhaupt iets van text in je mods te laten zien. Verder weer een handige tutorial voor mensen die nieuw zijn met scm/cleo.

Precies, voor mensen die nieuw zijn. Ik vond het niet dermate interessant om dat te laten zien aan iemand die net begint met SCM/CLEO. Deze tutorial gaat voornamelijk over het verschil tussen SCM en CLEO, niet over hoe men iets maakt in CLEO. Ja, als je werkelijk CLEO wil scripten, moet je die plugins wel gebruiken. Maar dat gaat specifiek over CLEO, en niet over het verschil tussen CLEO en SCM. Tenminste, dat is mijn mening. ^_^

@ Beagle: het is een stelregel om nooit Globale Variabelen te gebruiken. Bij het compileren kan het bijvoorbeeld voorkomen dat die in de war raken met de globale variabelen van de main.scm. Met lokale variabelen heb je daar geen last van, aangezien die toch in iedere thread opnieuw gebruikt kunnen worden. Zie het meer als een "voorkomen van problemen". Dat wil niet zeggen dat het altijd problemen oplevert...

Link to comment
Delen op andere websites

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...