hey kartoffel irgendwas stimmt mit deiner funktion nicht.
Code:
///////////////////////////////
#include <acknex.h>
#include <default.c>

FONT* arial_font = "Arial#20b"; // truetype font, 20 point bold characters


var my_str_width(STRING * Str, FONT * Font)
{
	char StrTemp[3];
	StrTemp[0] = ' '; 
	StrTemp[1] = '.'; 
	StrTemp[2] = '';
	
	var WhitespaceWidth = str_width(StrTemp, Font) - str_width(&(StrTemp[1]), Font);
	
	var StrWidth = str_width(Str, Font);
	
	int i;
	for(i = str_len(Str) - 1; i > 0; i--)
	{
		if((Str->chars)[i] == ' ')
		{
			StrWidth += WhitespaceWidth;
		}
		else
		{
			break;
		}
	}
	
	return StrWidth;
}




///////////////////////////////
function main()
{
	
	wait(4);
	var temp1, temp2;
	
	temp1 = 	my_str_width("f a f a",arial_font);
	temp2 = 	my_str_width("WhitespaceWidth",arial_font);
	
	//	var WhitespaceWidth = str_width("a a", arial_font) - str_width("aa", arial_font);
	

	while(1)
	{
		DEBUG_VAR(temp1,0);
		DEBUG_VAR(temp2,20);
		wait(1);
	}
}



es crasht sehr oft.

eine alternative zu deinem StrTemp wäre[quote][/quote]

Code:
var temp1 = str_width("a a", arial_font) - str_width("aa", arial_font);
		var temp2 = str_width("f", arial_font) ;


f hat wie ein leerschlag in Arial#20b genau 5 pixel
und temp2 ergibt hier 5 ^^

ahh jetzt versteh ich wieso der dort breaken soll. die leerzeichen am ende eines stringes werden nicht gezählt und dort schneidest du ab. leerzeichen in der mitte oder am anfang gehen auch mit
es geht auch so ^^
Code:
var temp1 = str_width(" a", arial_font) - str_width("a", arial_font);



aber ich weis echt nicht warum der so oft crasht...

edit:
ah ok die funktion mag es nicht wenn man ihr direkt etwas mit "blabla" reingibt
nun scheint es stapiel zu sein.
aber den teil mit dem char array hab ich zu meiner variante geändert.
Code:
var my_str_width(STRING * Str, FONT * Font)
{
	
	var WhitespaceWidth  = str_width(" a", arial_font) - str_width("a", arial_font);
	
	var StrWidth = str_width(Str, Font);
	
	var i;
	
	if( (Str->chars)[i] == ' ')
	{
		for(i = str_len(Str) - 1; i > 0; i--)
		{
			if( (Str.chars)[i] == ' ')
			{
				StrWidth += WhitespaceWidth;
			}
			else
			{
				break;
			}
		}
	}		
	return StrWidth;
}



edit2:

ja mit meiner modifikation ist es nun auch wieder pixel perfekt :DDD
danke nochmal für die funktion =)

Last edited by tagimbul; 06/14/17 19:20.

meine website mit 3dgs sachen =) //noch nicht ganz umgebaut ^^"
http://flashbreaker.com/home.html
und mein YT channel mit diversen game entwicklungs videos, vor allem shader zeugs
https://www.youtube.com/user/tagimbul/videos