Ich wollte mal ausprobieren, Zahlenreihen in Strings zu packen mit string+=chr(...) Meine Frage: Funktioniert das mit allen ganzen Zahlen (0-255)? Wenn ja, bin ich nur zu dumm zum parsen.... Es handelt sich um eine Reihe von Viererblöcken, etwa so:
Da will ich jetzt einzelne Blöcke nach belieben ersetzen können, bzw. neu hinzufügen, falls noch nicht vorhanden (die erste Ziffer dient als Id).
Ist doch ziemlich simpel, oder? Vielleicht sollte ich das Programmieren einfach sein lassen.
Spoiler anzeigen
Alles anzeigen
Da will ich jetzt einzelne Blöcke nach belieben ersetzen können, bzw. neu hinzufügen, falls noch nicht vorhanden (die erste Ziffer dient als Id).
Ist doch ziemlich simpel, oder? Vielleicht sollte ich das Programmieren einfach sein lassen.
GML-Quellcode
- // changes the population
- // argument0: colony id
- // argument1: race
- // argumentr2: amount
- var p,r,popcode,part,plo,phi,find;
- popcode=ds_list_find_value(Cpst,argument0);
- find=false; i=1; while (i<string_length(popcode))
- {
- r=string_copy(popcode,i,1) // race
- if (ord(r) = argument1) // ist vorhanden
- {
- find=true;
- popcode=string_delete(popcode,i,4) // Block (4 Zeichen) entfernen
- p=ord(string_copy(popcode,i+1,1))+argument2 // verändern (Anzahl Kolonisten)
- plo=string_copy(popcode,i+2,1) // wert bleibt unverändert
- phi=string_copy(popcode,i+3,1) // wert bleibt unverändert
- part=r+chr(p)+plo+phi; // Block (4 Zeichen) neu bilden
- popcode+=part; // Block anhängen
- //string_insert(popcode,part,1+(i-1)*4) Block einfügen
- }
- i+=4;
- }
- if find=false // nicht vorhanden, neu erstellen
- {
- r=chr(argument1)// race
- p=chr(argument2)// amount
- plo=chr(00) // standardwert
- phi=chr(00) // standardwert
- part=r+p+plo+phi; // Block (4 Zeichen) neu bilden
- popcode+=part; // Block anhängen
- }
- ds_list_replace(Cpst,argument0,popcode);