AMIGA-RESISTANCE https://forum.amiga-resistance.info/ |
|
Code Snippets https://forum.amiga-resistance.info/viewtopic.php?f=38&t=1665 |
Seite 2 von 3 |
Autor: | Murmel [ 16 Sep 2009, 16:00 ] | |
Betreff des Beitrags: | Re: Code Snippets | |
Es solte ab Hw2.0 laufen. Hast Du es mit Owb kopiert ? Das haut am Anfang lauter "Ä" rein :/ Diese löschen oder mit IBrowse kopieren damit gehts. "Aber mit IBrowse geht das posten hier im Forum nicht Oo" |
Autor: | McFly [ 16 Sep 2009, 18:07 ] | |
Betreff des Beitrags: | Re: Code Snippets | |
Namd, nöö, ich hab den Text mit IB kopiert, daher wundert mich das. Ich probiere das aber morgen nochmal, sitze gerade nicht am Amiga. Das posten mit IB geht, allerdings nur mit kleinen Tricks Entweder ohne Umlaute und ss statt ß, oder aber, die Lösung bevorzuge ich mit einem kleinen Tool von Onyxsoft UTF-8, das einfach vor IB anschmeissen, es wandelt automatisch alle Texeingaben zum posten hier, um. Kannste ja mal antesten wenn Du magst, hier der Link: http://www.onyxsoft.se/utf-8.html Ich gebe dann nochmal bescheid ob Dein Skript klappt. gruß |
Autor: | HelmutH [ 16 Sep 2009, 18:49 ] |
Betreff des Beitrags: | Re: Code Snippets |
Hi Murmel Hab dein Skript grad auch mal probiert, kommt der gleiche Fehler wie bei McFly. Wie merkwürdig ist das denn mit OWB, hab das auch damit kopiert, aber keine Ä's oder andere Zeichen mit drin gehabt |
Autor: | Murmel [ 16 Sep 2009, 21:02 ] |
Betreff des Beitrags: | Re: Code Snippets |
Also es ist kein Fehler im Script, zumindest kein offensichtlicher Habe es jetzt nochmal mit OWB abkopiert und der Fehler in Zeile 9 sind 3 Ä die da nicht hingehören und in 2-3 weiteren Zeilen auch. Mit Ibrowse gehts bei mir unter MorphOS. Hänge es jetzt als Download oben dran. Könntet ihr mal schauen ob der Festplattenplatz stimmt ? Eingend sollte das doch in Hw4.0 wieder gehen ? |
Autor: | Tipsi [ 16 Sep 2009, 22:29 ] |
Betreff des Beitrags: | Re: Code Snippets |
Salli Murmel Also bei mir läuft das Script, welches ich aus dem Thread herauskopiert habe, grundsätzlich einwandfrei. Aber die Festplattengrösse, egal ob frei oder belegt ist falsch. Griessli Tipsi |
Autor: | McFly [ 18 Sep 2009, 08:46 ] |
Betreff des Beitrags: | Re: Code Snippets |
@Murmel danke für den Download, jetzt funzt das Script auch bei mir Also bei mir stimmen die angezeigten Werte der HD so ungefähr... Siehe Screenshot Systemwatch.jpg [ 26.71 KiB | 9133 mal betrachtet ] |
Autor: | Murmel [ 18 Sep 2009, 18:12 ] |
Betreff des Beitrags: | Re: Code Snippets |
@McFly Aha interessant. Hast Du eine 1 Terrabyte oder 1 GB Festplatte ? Wäre noch interessant zu wissen wies unter Aros und OS3 ausieht Unter MorphOS 2.3 scheints ein Bug zu sein, denn da stimmen die Werte nicht. PS: Cool hast Du viel Chipram xD |
Autor: | McFly [ 18 Sep 2009, 18:22 ] |
Betreff des Beitrags: | Re: Code Snippets |
Hi Murmel, ich habe ne 400Gig Platte verbaut und 512 MB Speicher im AOne. OS4 sagt mir, das wenn ich das System gestartet habe das ich ungefähr (muß überlegen, sitze gerade nicht am A1) etwas über 310 MB Speicher freihabe bzw. frei ist, laut OS-Menüleiste. Hoffe Du kannst mit den Angaben etwas anfangen. Die Platte hängt nicht am internen IDE sondern am SII-Controller, falls das wichtig ist. gruß McFly |
Autor: | HelmutH [ 18 Sep 2009, 19:40 ] |
Betreff des Beitrags: | Re: Code Snippets |
Abend Murmel Script läuft nu auch bei mir, anstatt Ää's waren bei mir Leerzeichen drin, die nicht da rein gehörten. Und so siehts bei mir aus: Systemwatch.jpg [ 23.59 KiB | 9107 mal betrachtet ] Speicher 512 MB OS4.1 1x 160GB Platte 1x 60Gb Platte |
Autor: | Murmel [ 18 Sep 2009, 22:52 ] |
Betreff des Beitrags: | Re: Code Snippets |
Tja danke euch für die Info. Also ist GetVolumeInfo(name$ ,#FREESPACE) #USEDSPACE immer noch fehlerhaft. |
Autor: | gerograph [ 02 Nov 2009, 17:28 ] |
Betreff des Beitrags: | Re: Code Snippets |
(Brush)/Layer von x nach y bewegen und dabei gleichzeitig verkleinern (über Designer Codefenster) PRINZIP: Layer/Objekt um x% verkleinern -> Layer/Objekt um x verschieben -> Layer/Objekt erneut um x% von der momentanen Größe verkleinern -> schieben -> usw ..... HINWEISE: 1. Das Objekt auf den sich der Code bezieht muß VOR ! dem Code stehen. D.h. der Code muß im Codefenster eines Objektes eingetippt werden, was nach dem "zu bewegendem Objekt/Brush" steht. => eigentlich logisch, weil ja eins nachm anderen abgearbeitet wird... Da ich im konkreten Falle mehrere Brushes/Layer bewegen wollte habe ich ein Objekt ganz unten eingefügt (unsichtb. Linie) welches für alle "Bewegungsobjekte" den Code hat. 2. ScaleLayer() war nen bisserl schwierig, da ich prozentual verkleinern wollte, ScaleLayer(2,50%,50%) geht leider nicht, da "%" als Operator in Hollywood geschützt ist, also muß ich mit Esc-Code+Asciizeichen arbeiten s.u. 3. Der Code ist sicherlich nen bisschen umständlich, und man könnte es mit einer schönen Funkton mit Variablen Übergabe besser regeln, aber es zeigt wo es lang geht: CODE: Code: Alles auswählen VerklFakt = 100 /* Var initialisieren */ /* --------- 1. Layer ------------- */ /* 1.Layer Position Startposition */ ax = 400 ay = 130 /* 1. Layer Endposition auf Startposition setzen */ bx = ax by = ay /* Layer auf 50 Proz verkleinern in zehner Schritten */ For VerklFakt = 100 to 50 Step -10 VerklFakt$ = ToString(i) /* Verkl. Prozentzahl in String wandeln */ a$ = AddStr(VerklFakt,"\037") /* 037 Ascii Code Prozentzeichen an String h?ngen*/ ScaleLayer(8,a$,a$) /* Layer verkleinern */ bx = bx - 66 /* nächste Position des verkleinerten Layers berechnen, abhängig von Pos. im vorangegangenen Schleifendurchlauf */ by = by + 21 MoveLayer(8, ax, ay, bx, by, {Speed = #FASTSPEED}) /* Layer entsprechend ein Stück bewegen */ ax = bx /* Startposition auf neue Endposition setzen für den nächsten Durchläufe... */ ay = by Next |
Autor: | HelmutH [ 06 Dez 2010, 22:21 ] |
Betreff des Beitrags: | Real 3D Engine von ArtBlink |
ArtBlink hat mir erlaubt hier seinen Quellcode von seiner Real 3D Engine reinzustellen, dies ist die erste Version. Code: Alles auswählen @SCREEN {Mode = "ask", Width = 640, Height = 400} SetFormStyle(#ANTIALIAS) ; Antialiasing sur le cube FC=200 CX=160 CY=100 CZ=200 Function Controle() If IsKeyDown("Left")=True Then Gauche() ; Vers la gauche If IsKeyDown("Right")=True Then Droite() ; Vers la droite If IsKeyDown("Up")=True Then Haut() ; Vers le Haut If IsKeyDown("Down")=True Then Bas() ; Vers le bas If IsKeyDown("RSHIFT")=True Then Zoomin() ; Zoom in If IsKeyDown("RCONTROL")=True Then Zoomout() ; Zoom Out EndFunction Function Gauche() AY=AY+1 If AY>359 Then AY=0 EndFunction Function Droite() AY=AY-1 If AY<0 Then AY=359 EndFunction Function Haut() AX=AX+1 If AX>359 Then AX=0 EndFunction Function Bas() AX=AX-1 If AX<0 Then AX=359 EndFunction Function Zoomin() CZ=CZ+10 If CZ>500 Then CZ=500 EndFunction Function Zoomout() CZ=CZ-10 If CZ<80 Then CZ=80) EndFunction Function PRG() Controle() ; Exécution de la fonction Controle ; Réservation mémoire et création des tableaux Dim CO[360] ; 360 cases réservé car une rotation c'est 360° pour le Cosinus Dim SI[360] ; 360 cases réservé car une rotation c'est 360° pour le Sinus Dim X[8] ; Un cube, c'est 8 points en X Dim Y[8] ; Un cube, c'est 8 points en Y Dim Z[8] ; Un cube, c'est 8 points en Z Dim XE[8] ; Point final du cube a dessiner en X Dim YE[8] ; Point final du cube a dessiner en Y Dim ZZ[8] ; Point final du cube a dessiner en Z Dim P1[12] ; Un cube, c'est 12 lignes (point de départ de la ligne) Dim P2[12] ; Un cube, c'est 12 lignes (point final de la ligne) Flip ; Flip d'écran pour le double buffer Cls ; Effacement de l'écran sinon on verrait des cube partout lol For I=0 To 359 CO[I]=Cos(I*0.1)*256 ; Mise en mémoire de 360 calcule du Cosinus des angles sur 360° SI[I]=Sin(I*0.1)*256 ; Mise en mémoire de 360 calcule du Sinus des angles sur 360° Next For I=0 To 7 X = {-50,50,50,-50,-50,50,50,-50} ; Coordonnées des points dans l'espace en X Y = {-50,-50,50,50,-50,-50,50,50} ; Coordonnées des points dans l'espace en Y Z = {-50,-50,-50,-50,50,50,50,50} ; Coordonnées des points dans l'espace en Z P1 = {0,1,2,3,4,5,6,7,0,1,2,3} ; Point de départ pour tracer la ligne P2 = {1,2,3,0,5,6,7,4,4,5,6,7} ; Point d'arrivée pour tracer la ligne ;Calcule 3D grâce au magazine Dream N°27 de Mars 1996 Y1=(Y[I]*CO[AX]+Z[I]*SI[AX])/256 Z1=(-Y[I]*SI[AX]+Z[I]*CO[AX])/256 X1=(X[I]*CO[AY]+Z1*SI[AY])/256 ZZ[I]=(-X[I]*SI[AY]+Z1*CO[AY])/256 X=(X1*CO[AZ]+Y1*SI[AZ])/256 Y=(-X1*SI[AZ]+Y1*CO[AZ])/256 D=FC/(Sqrt(X^2+Y^2+(CZ+ZZ[I])^2)) XE[I]=320+X*D YE[I]=200+Y*D Next ; Calcule final For I=0 To 11 GP1=P1[I] GP2=P2[I] X=XE[GP1] Y=YE[GP1] X1=XE[GP2] Y1=YE[GP2] Line (X,Y,X1,Y1,#WHITE) ; Traçage des lignes Next EndFunction BeginDoubleBuffer SetInterval(1,PRG,1000/50) Repeat WaitEvent Forever Die zweite Version von seiner Real 3D Engine. Code: Alles auswählen @SCREEN {Mode = "ask", Width = 640, Height = 400} FC=200 CZ=200 Function Controle() If IsKeyDown("Left")=True Then Gauche() ; Vers la gauche If IsKeyDown("Right")=True Then Droite() ; Vers la droite If IsKeyDown("Up")=True Then Haut() ; Vers le Haut If IsKeyDown("Down")=True Then Bas() ; Vers le bas If IsKeyDown("a")=True Then Zoomin() ; Zoom in If IsKeyDown("z")=True Then Zoomout() ; Zoom Out If IsKeyDown("p")=True Then SetFillStyle(#FILLCOLOR) ; Zoom Out If IsKeyDown("o")=True Then SetFillStyle(#FILLNONE) If IsKeyDown("i")=True Then SetFillStyle(#FILLGRADIENT, #LINEAR, $888888, $FFFFFF) If IsKeyDown("u")= True Then SetFormStyle(#ANTIALIAS) If IsKeyDown("y")= True Then SetFormStyle(#NORMAL) EndFunction Function Gauche() AY=AY+1 If AY>359 Then AY=0 EndFunction Function Droite() AY=AY-1 If AY<0 Then AY=359 EndFunction Function Haut() AX=AX+1 If AX>359 Then AX=0 EndFunction Function Bas() AX=AX-1 If AX<0 Then AX=359 EndFunction Function Zoomin() CZ=CZ+10 If CZ>600 Then CZ=600 EndFunction Function Zoomout() CZ=CZ-10 If CZ<150 Then CZ=150 EndFunction Function PRG() Controle() ; Exécution de la fonction Controle ; Réservation mémoire et création des tableaux Dim CO[360] ; 360 cases réservé car une rotation c'est 360° pour le Cosinus Dim SI[360] ; 360 cases réservé car une rotation c'est 360° pour le Sinus Dim X[8] ; Un cube, c'est 8 points en X Dim Y[8] ; Un cube, c'est 8 points en Y Dim Z[8] ; Un cube, c'est 8 points en Z Dim XE[8] ; Point final du cube a dessiner en X Dim YE[8] ; Point final du cube a dessiner en Y Dim ZZ[8] ; Point final du cube a dessiner en Z Dim P1[10] ; Polygone 1 Dim P2[10] ; Polygone 2 Dim P3[10] ; Polygone 3 Dim P4[10] ; Polygone 4 Dim P5[10] ; Polygone 5 Dim P6[10] ; Polygone 6 Flip ; Flip d'écran pour le double buffer Cls ; Effacement de l'écran sinon on verrait des cube partout lol For I=0 To 359 CO[I]=Cos(I*0.1)*360 ; Mise en mémoire de 360 calcule du Cosinus des angles sur 360° SI[I]=Sin(I*0.1)*360 ; Mise en mémoire de 360 calcule du Sinus des angles sur 360° Next For I=0 To 7 X = {-50,50,50,-50,-50,50,50,-50} ; Coordonnées des points dans l'espace en X Y = {-50,-50,50,50,-50,-50,50,50} ; Coordonnées des points dans l'espace en Y Z = {-50,-50,-50,-50,50,50,50,50} ; Coordonnées des points dans l'espace en Z ;P={0,1,2,3,1,5,6,2,4,5,1,0,4,5,6,7,4,0,3,7,3,2,6,7} ;Calcule 3D grâce au magazine Dream N°27 de Mars 1996 Y1=(Y[I]*CO[AX]+Z[I]*SI[AX])/360 Z1=(-Y[I]*SI[AX]+Z[I]*CO[AX])/360 X1=(X[I]*CO[AY]+Z1*SI[AY])/360 ZZ[I]=(-X[I]*SI[AY]+Z1*CO[AY])/360 X=(X1*CO[AZ]+Y1*SI[AZ])/360 Y=(-X1*SI[AZ]+Y1*CO[AZ])/360 D=FC/(Sqrt(X^2+Y^2+(CZ+ZZ[I])^2)) XE[I]=320+X*D YE[I]=200+Y*D Next ; Calcule final P1 = {XE[0],YE[0],XE[1],YE[1],XE[2],YE[2],XE[3],YE[3],XE[0],YE[0]} ; Polygon 1 P2 = {XE[1],YE[1],XE[5],YE[5],XE[6],YE[6],XE[2],YE[2],XE[1],YE[1]} ; Polygon 2 P3 = {XE[4],YE[4],XE[5],YE[5],XE[1],YE[1],XE[0],YE[0],XE[4],YE[4]} ; Polygon 3 P4 = {XE[4],YE[4],XE[5],YE[5],XE[6],YE[6],XE[7],YE[7],XE[4],YE[4]} ; Polygon 4 P5 = {XE[4],YE[4],XE[0],YE[0],XE[3],YE[3],XE[7],YE[7],XE[4],YE[4]} ; Polygon 5 P6 = {XE[3],YE[3],XE[2],YE[2],XE[6],YE[6],XE[7],YE[7],XE[3],YE[3]} ; Polygon 6 Box (0,0,640,200,$3333EE) Locate (0,0) Print ("Flèche => Rotation cube") Locate (0,12) Print ("Touche a => Zoom OUT") Locate (0,24) Print ("Touche b => Zoom IN") Locate (0,36) Print ("Touche p => coloration de Garnier") Locate (0,48) Print ("Touche o => annuler la coloration") Locate (0,60) Print ("Touche i => Un monde d'acier ;-)") Locate (0,72) Print ("Touche u => Antialiasing") Locate (0,84) Print ("Touche y => enlever l'Antialiasing") Locate (0,96) Print ("Ctrl+c => Quitter") ; Traçage des polygones avec tests ; les tests se font sur la coordonnées en Z ; en gros si le polygone passe derrière les autres alors il s'affiche pas ; je crois que normalement sa fais gagner du temp CPU... Non? If ZZ[1]+ZZ[5]+ZZ[6]+ZZ[2]<-40 Then Polygon (0,0,P2,5,#BLUE) If ZZ[4]+ZZ[5]+ZZ[1]+ZZ[0]<-40 Then Polygon (0,0,P3,5,#RED) If ZZ[0]+ZZ[1]+ZZ[2]+ZZ[3]>40 Then Polygon (0,0,P4,5,#YELLOW) If ZZ[1]+ZZ[5]+ZZ[6]+ZZ[2]>40 Then Polygon (0,0,P5,5,#WHITE) If ZZ[4]+ZZ[5]+ZZ[1]+ZZ[0]>40 Then Polygon (0,0,P6,5,#GREEN) If ZZ[0]+ZZ[1]+ZZ[2]+ZZ[3]<-40 Then Polygon (0,0,P1,5,#PURPLE) EndFunction BeginDoubleBuffer SetInterval(1,PRG,1000/50) Repeat WaitEvent Forever |
Autor: | Tipsi [ 07 Dez 2010, 20:46 ] | ||
Betreff des Beitrags: | Re: Real 3D Engine von ArtBlink | ||
Beim Code müsst Ihr eine der beiden Zeilen ändern: Hier entweder ("z") in ("b") oder oder hier b in z ändern. Wenn ihr aber zu faul zum Ändern seid, drückt bei Zoom IN einfach die Taste z. ArtBlink benutzt eine englischsprachliche Tastatur, da ist natürlich a und z über- bzw. untereinander. Griessli Tipsi |
Autor: | HelmutH [ 08 Dez 2010, 12:22 ] |
Betreff des Beitrags: | Re: Code Snippets |
Hi Tipsi Prima das du es auch probiert hast und mir da zuvor gekommen bist und das mit der vertauschten Tasten für die Zoom In hier noch nachgetragen hast. ArtBlink hat da noch mehr Codes im englische Forum drin, wo ich ihn noch nach fragen werde, ob wir die hier auch reinstellen dürfen. |
Autor: | Tipsi [ 17 Dez 2012, 00:04 ] |
Betreff des Beitrags: | Re: Code Snippets |
Format Tags Einige von uns benutzen ja die ScuiLib, um dem Programm GUI Elemente zu verpassen. Hier mal ein Beispiel: Die Wörter sind in jedem Knopf zentriert, so sieht es eigentlich nicht schlecht aus. Aber falls jemand nun Format Tags benutzen möchte, kann das schrecklich aussehen. Im nächsten Beispiel sind teilweise Buchstaben unterstrichen, damit der Benutzer weiss, welche Tastaturkürzel er benutzen könnte: Warum nun diese Verschiebung des Textes? Der ScuiLib werden nun mehr Zeichen übergeben, als nachher im Knopf sichtbar sind. Nehmen wir mal die Zeile Sprache. Sprache hat sieben Buchstaben. Die ScuiLib berechnet nun für sieben Buchstaben die Verschiebung aus, damit nachher Sprache zentriert im Knopf erscheint. Möchte man allerdings zwei Buchstaben unterstreichen, dann sieht das so aus: Code: Alles auswählen [u]S[/u]prach[u]e[/u] obwohl nachher nur sieben sichtbar sind. Das müssen wir ändern. Wir basteln uns eine p_NoFormatTags Funktion und fügen diese in die ScuiLib ein. Ich persönlich habe sie vor die Funktion helpers.GetBrushID() hineingesetzt. Nun suchen wir in der ScuiLib jede Stelle (ca. 15), welche den Hollywoodbefehl TextWidth() benutzt. Dann fügen wir eine Zeile vorher den Befehl p_NoFormatTags() ein und übernehmen die Variable, welche der Befehl TextWidth benutzt hat. Hier ein Beispiel aus der ScuiLib: Code: Alles auswählen CWidth = TextWidth(CChar) Code: Alles auswählen NeuerText = p_NoFormatTags(CChar) CWidth = TextWidth(NeuerText) Wir wollen in unserem Beispiel sämtliche Code: Alles auswählen [u][/u] Code: Alles auswählen Function p_NoFormatTags(Text) Text=ReplaceStr(Text,[u],"") Text=ReplaceStr(Text,[/u],"") Return(Text) EndFunction Super. Und wenn man Italic und Bold auch noch berücksichtigen möchte, dann sieht die Funktion nicht viel anderst aus: Code: Alles auswählen Function p_NoFormatTags(Text) Text=ReplaceStr(Text,[u],"") Text=ReplaceStr(Text,[/u],"") Text=ReplaceStr(Text,[i],"") Text=ReplaceStr(Text,[/i],"") Text=ReplaceStr(Text,[b],"") Text=ReplaceStr(Text,[/b],"") Return(Text) EndFunction haben wir bereits unsere Funktion gebastelt. Aber ich muss gestehen, dass ich Bold und Italic nie getestet habe. Gerüchten zufolge funktioniert das mit Bold nicht ganz zufriedenstellend. Wenn wir aber (und das wollen wir jetzt) noch andere Format Tags wie Code: Alles auswählen [color=<new color>], [/color] [shadow=<shadow color>,<shadow size>,<shadow direction>][/shadow] [edge=<edge color>,<edge size>] [/edge] Code: Alles auswählen Function p_NoFormatTags(Text) Local TextArray=StrToArray(Text) Local AnzahlArray=ListItems(TextArray) Local NeuerText="" Local On="ON" Local Off="Off" Local FormatTag=Off Local KlammerAuf=Asc("[") Local KlammerZu=Asc("]") For ii=0 To AnzahlArray-1 If TextArray[ii]=KlammerAuf FormatTag=On EndIf If FormatTag=Off NeuerText=NeuerText..Chr(TextArray[ii]) EndIf If TextArray[ii]=KlammerZu FormatTag=Off EndIf Next Return(NeuerText) EndFunction in der Variablen Text übergeben wurde. Dann wird in dieser Schleife jedes einzelne Zeichen überprüft, ob es eine öffnende eckige Klammer [ ist. Falls nicht, wird der Variable NeuerText dieses Zeichen angefügt. Falls es aber doch ein [ ist, wird das Anfügen übersprungen, bis eine schliessende eckige Klammer ] kommt. Ab da werden die Zeichen wieder in der Variablen NeuerText angefügt. Die beiden Variablen On und Off können auch etwas anderes beinhalten, wie z.B. 1 und 0, "Ja" und "Nein", "Franz" und "Sussi" oder was weiss ich. Auch ii als Zähler kann natürlich anderst heissen. Diese Funktion hat allerdings eine Schwäche. Falls im Text neben den Format Tags die beiden eckigen Klammern vorkommen, dann werden diese auch als Format Tags behandelt. Das geht allerdings schief. In diesem Fall hilft nur noch diese Funktion: Code: Alles auswählen Function p_NoFormatTags(Text) Local TextArray=StrToArray(Text) Local AnzahlArray=ListItems(TextArray) Local NeuerText="" Local On="ON" Local Off="Off" Local FormatTag=Off Local KlammerAuf=Asc("[") Local KlammerZu=Asc("]") For ii=0 To AnzahlArray-1 If TextArray[ii]=KlammerAuf If Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])="[b]" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])="[i]" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])="[u]" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3])="[/b]" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3])="[/i]" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3])="[/u]" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3]).. Chr(TextArray[ii+4])..Chr(TextArray[ii+5])..Chr(TextArray[ii+6])..Chr(TextArray[ii+7])="[shadow=" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3]).. Chr(TextArray[ii+4])..Chr(TextArray[ii+5])..Chr(TextArray[ii+6])..Chr(TextArray[ii+7]).. Chr(TextArray[ii+8])="[/shadow]" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3]).. Chr(TextArray[ii+4])..Chr(TextArray[ii+5])="[edge=" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3]).. Chr(TextArray[ii+4])..Chr(TextArray[ii+5])..Chr(TextArray[ii+6])="[/edge]" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3]).. Chr(TextArray[ii+4])..Chr(TextArray[ii+5])..Chr(TextArray[ii+6])="[color=" FormatTag=On ElseIf Chr(TextArray[ii])..Chr(TextArray[ii+1])..Chr(TextArray[ii+2])..Chr(TextArray[ii+3]).. Chr(TextArray[ii+4])..Chr(TextArray[ii+5])..Chr(TextArray[ii+6])..Chr(TextArray[ii+7])="[/color]" FormatTag=On EndIf EndIf If FormatTag=Off NeuerText=NeuerText..Chr(TextArray[ii]) EndIf If FormatTag=On If TextArray[ii]=KlammerZu FormatTag=Off EndIf EndIf Next Return(NeuerText) EndFunction ob anschliessend ein Format Tag folgt. Falls ja werden alle Zeichen bis zur schliessenden eckigen Klammer ignoriert. Falls nein, dann wird diese Klammer in der Breitenberechnung berücksichtigt. Ich habe bei mir die letzte grosse Funktion eingepflanzt. Ich glaube, ob bei 12835 Codezeilen der ScuiLib noch ca. 60 mehr oder weniger dazukommen, spielt keine Rolle mehr. So, das wärs. Falls jemand die Funktionen genauer erklärt haben möchte, dann bitte melden. ---------------------------------------------------------- In der Zwischenzeit hat Allanon im englischen Hollywood-Forum eine andere Variante vorgestellt: https://forums.hollywood-mal.com/viewto ... 1505#p1505 Leider ohne Lösungsbeispiel, aber anscheinend gibt es eine weitere Möglichkeit, die Format Tags nicht zu berücksichtigen. https://forums.hollywood-mal.com/viewto ... Str#p17454 Aber das kann ich (vielleicht noch) nicht erklären. Griessli Tipsi Tante Edit am Freitag 26. Mai 2017: Bilder wieder hinzugefügt, ein paar Schreibfehler entfernt. Tante Edit2 am Mittwoch, 22. Sept. 2021: Nochmals die Bilder hinzugefügt. Tante Edit3 am Montag, 11. Okt. 2021: Am Schluss noch zwei Verweise auf das englische Forum eingefügt. |
Seite 2 von 3 | Alle Zeiten sind UTC |
Powered by phpBB® Forum Software © phpBB Limited Deutsche Übersetzung durch phpBB.de |