Jump to content

Recommended Posts

Geplaatst:

Ik ben de laatste tijd bezig met mission modden en dat gaat wel redelijk. Ik heb laatst ff een hele missie in het nederlands en zonder code's en opcodes en zo vertaald. Het doel is om de missie coordinaten personages etc. te veranderen, maar ik kwam vreemde dingen tegen zoals:

Wander state, wat is dat??

Dubbele jumps, Er stonden twee jumps achter elkaar, dat leest vice dan toch niet??

bij integer values, soms een enkele = soms een dubbele == zoals 1@ == 2

En is het perse nodig om (bijna) alle coordinaten eerst een floating point value te geven?

Er zijn nog meer dingen, maar als jullie hier antwoorden op weten ben ik weer even blij

:rolleyes:

Geplaatst:

Mensen die op deze manier met modden beginnen, zelf al het een en ander hebben gedaan en dus met gerichte vragen kunnen komen krijgen, help ik natuurlijk graag:

Wander_state:

Dit geeft aan of een bepaalde actor, normaal rondwandeld, dus net als random peds, of dat die actor alleen maar beweegt op het moment dat dit in de missie script is geprogrameerd.

Dubbele jumps:

Dit komt inderdaad enkele malen voor in het VC scm script, en je analyse dat die tweede nooit bereikt wordt is correct. Deze tweede kun je dan ook gewoon zonder problemen weglaten. Als je dieper in de SCM script duikt, kom je wel meer van dit soort slordigheidjes tegen.

enkele '=' en dubbele '==':

Dit verschil heeft niet specifiek met integers te maken, maar is wel essentieel.

De enkele '=' is een assignment operator en de bubbele '==' is een vergelijkings operator. Dus

$a = 2 , geeft variable $a de waarde 2

$a == 2, vergelijkt de waarde van $a met de waarde 2

De vergelijking operator '==' kan alleen worden toegepast binnen een "if..jump_if_false" constructie. De assignment operator '=' juist alleen daarbuiten.

Coordinaten:

Ik begrijp niet helemaal wat je met deze vraag bedoeld, maar coordinaten moet je altijd opgeven als floating-point getal, dus met een '.' erin. Als je een integer value gebruikt, zal de Mb hem vrolijk compileren, maar het resultaat zal een compleet verkeerde coordinaat zijn, want de game-engine zal het bit-ptroon van de integer waarde zien als een floating-point getal en op een heel andere waarde uitkomen.

Success, en als je vragen hebt, waar je zelf niet uitkomt, gewoon vragen...

Geplaatst:

super bedankt!!! Dat was echt heel duidelijk. Als ik nog iets niet snap edit ik deze reply even!!

Nog 1 vraag die ik nu bedenk:

Wat is het verschil tussen bijv: @1 en $364??

Geplaatst:
super bedankt!!! Dat was echt heel duidelijk. Als ik nog iets niet snap edit ik deze reply even!!

Nog 1 vraag die ik nu bedenk:

Wat is het verschil tussen bijv: @1 en $364??

1@ vs. $364:

De variabelen met een '@' achter (of voor, afhankelijk van de versie) de naam van de variable, zijn lokale variablen. Iederen Thread/Mission heeft zijn eigen set van 16 lokale variabelen 0@ - 15@, daarnaast heeft elke thread nog twee timer variabelen 16@ en 17@, deze kun je schrijven en lezen als normale variabelen, maar ze worden iedere milli-seconde automatisch 1 opgehoogd.

Variabelen die beginnen met een $, zijn globale variabelen, en worden dus gedeelt door alle threads. De totale hoeveelheid globale variabelen is beperkt, dus het is normaal gesproken zaak, zoveel mogelijk lokale variablen te gebruiken.

Geplaatst: (bewerkt)

Gaaf, van die 16@ en 17@ dat die elke milliseconde verhogen! Echt heel handig!

Dan nog wat vragen: Wat zijn nou eigenlijk Gosubs?? In de site van eclips staat het een beetje vaag uitgelegd... en soms staat er gewoon achter een opcode bijv: $player_char, Of gewoon een acteur naam zonder meer. Waar is dit voor nodig? trouwens, Patrick, Je zou een tutorial kunnen maken, de uitleg is heel goed... en wat is de "taxi destination restart" of zo aan het begin van elke missie en is die verplicht?

Waarom publiceer je niet een keer een hele gave mod?? Ik ga proberen om heel veel missies te veranderen, en dan op het web zetten, of voor 5 euro per cd te verkopen :puh:

Wow! Patrick W! Jij bent echt de beste modder in dit universum!! Eerst de marina carpark, en ook nog de hotcoffe mod!!

Bewerkt: door Flotje
Geplaatst:

Gosub

De gosub, werkt net als een normale jump, met een verschil, dat de plek waarvandaan je springt wordt opgeslagen. Bij de gosub opcode hoort ook de return opcode. Deze opcode springt terug naar de opgeslagen positie van de bijhehorende gosub.

Dit is erg handig als je vanuit verschillende plekken in je code naar een gemeenschappelijk stuk wilt springen. Na afloop van dat stuk, spring je dus netjes weer teug naar de plek waar je was. Dit zou met een normale jump niet lukken, omdat je dan niet weet waar je naar afloop naartoe met springen, omdat je vanuit verschillende plekken kunt zijn gekomen:

:loop
........
gosub test
....
....

....
gusub test
....
...
jump loop

:test
...
....
...
return;

In dit voorbeeld spring je dus vanaf twee plaatsen in de loop naar de test-code, en na afloop van de test-code, ga je gewoon verder vanaf waar je gebleven was.

Ik begrijp je $player_char niet helemaal, kun je een voorbeeldje geven.

Ik neem aan dat je opmerking om mods te gaan verkopen een grapje was,

want dat gaat echt niet lukken... Alles wat je te koop aanbied, wordt binnen notime, gratis nagemaakt.

Geplaatst:

02A9: set_actor $74A immune_to_nonplayer 1, Wat is de Nonplayer?

0519: unknown_car $74C flag 1 , Wat voor een flag?

0209: $739 = random_int 0 6 , ????

050D: $74A , Die vat ik echt niet, ff de hele text

:Label044AC7

00D6: if 0

050D: $74A , Die dus

004D: jump_if_false £Label044AED

00BC: text_highpriority "LAW3_8" 5000 ms 2 ;; ~r~You killed a Juror!

0002: jump £Label045E44

Geplaatst:

nonplayer

Non-player is hier geen parameter, maar onderdeel van de opcode tekst. met dit commando, kun je ervoor zorgen dat andere actors ( behalve de player) de actor die ja als eerste param meegeeft ( hier $74A), niet kunnen verwonden. Als de laatste param "1" is, dan is deze bescherming actief, door als laatste param een "0" te geven hef je de bescherming weer op.

0519

Da's voorzover ik weet nog onbekend. Dit zul je wel vaker merken dat we van heel veel opcodes nog niet weten wat ze precies doen. In dit geval weten we dat het om een flag ( een soort aan/uit schakelaar gaat, maar wat je ermee doet is nog onbekend.

random_int

Dit is een opcode om in de eerste variable een willekeurig getal te krijgen tussen de waarden die als laatste parameters worden opgegeven, in dit geval dus een getal tussen 1 en 6. Dit kan gebruikt worden om een zekere mate van variatie aan te brengen in je misses...

050D

Weer zo'n onbekende... hiervan weten we dus helemaal niets, behalve dat er 1 parameter is

Als je langer met SCM modding bezig bent, zul je steeds vaker tegen onbekende opcodes aanlopen, een van de uitdagingen is om dat uit te vinden wat ze doen,

door analyse, en door heel veeel te testen.

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