Flotje Geplaatst: 11 juni 2005 Rapport Geplaatst: 11 juni 2005 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: Reageren
PatrickW Geplaatst: 11 juni 2005 Rapport Geplaatst: 11 juni 2005 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... Reageren
Flotje Geplaatst: 11 juni 2005 Auteur Rapport Geplaatst: 11 juni 2005 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?? Reageren
PatrickW Geplaatst: 12 juni 2005 Rapport Geplaatst: 12 juni 2005 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. Reageren
Flotje Geplaatst: 12 juni 2005 Auteur Rapport Geplaatst: 12 juni 2005 (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 Wow! Patrick W! Jij bent echt de beste modder in dit universum!! Eerst de marina carpark, en ook nog de hotcoffe mod!! Bewerkt: 12 juni 2005 door Flotje Reageren
PatrickW Geplaatst: 13 juni 2005 Rapport Geplaatst: 13 juni 2005 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. Reageren
Flotje Geplaatst: 13 juni 2005 Auteur Rapport Geplaatst: 13 juni 2005 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 Reageren
PatrickW Geplaatst: 13 juni 2005 Rapport Geplaatst: 13 juni 2005 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. Reageren
Recommended Posts
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.