Ein Update wird in Kürze eintreffen.
Ps: Rechtschreibfehler sind die Schuld vom UMTS!
Ein Update wird in Kürze eintreffen.
Ps: Rechtschreibfehler sind die Schuld vom UMTS!
Das entspricht leider ganz und garnicht meinem Geschmack.
Aber gibt sicher Leute die das Design hübsch finden.
Ansonsten, wenigstens paßt alles zusammen.
Wow, IE als Backend, das ist ja ein Wunderwerk der Technik.
[/ironie off]
Manchmal bin ich froh, daß nicht jeder so'n Stuß richtig publik für die Welt machen kann.
Windows xP = Sehr Gutes Betriebssystem
Windows Vista = Der Reinste Reinfall! xP ist auf jeden Fall schneller
Mom, stop.
Wieder so ein Stuß.
So langsam reicht's mir hier im Forum.
Man ließt hier nurnoch irgendwelche Behauptungen.
Windows Vista ist spätestens seit SP1 mit fast jeder erdenklichen alten Software kompatibel, außerdem war Vista schon beim Release 3 x so schnell wie Windows XP.
Wer natürlich Vista auf seinem Gurkenlaptop laufen läßt, der hat Pech.
Selbes bei Vista vs Win7.
Win7 ist nicht schneller, seine Fenster werden aber vor dem kompletten Backgroundload schon gezeichnet.
Zidane:
Lösung: Richtige Auflösung auswählen.
Pro Array 6 Mb.
Holla die Waldfee, was hier manchmal für ein Stuß von sich gegeben wird.
Ein Cell = 32 Bit 4 Byte.
D.h. ein Array mit 32 Zellen ist 32 x 4 Byte groß.
Sagen wi es so: Um auf deine 6 Mb zu kommen, müßte man 262144 Zellen erstellen.
Naja, früher war eh alles besser.
Build Number und fertig.
Diese Versionen verwirren eh, da man zwar mit 1.0 sein Ziel erreicht, aber 2.0 eben neue Ziele hat, soll man dann aber 1.1 eine Vorstufe von 2.0 setzen.
Wobei der Unix-Standard ja wäre, das 2.0 ein neuen Kernel hat.
Ich bin einfach für die "klassische" Methode: Buildnummer - Major - Minor.
Mein Geschwindigkeitstest:
#include <a_samp>
#define ITERATIONS 1000000
stock explode(aExplode[][], sSource[], const sDelimiter[] = " ", iVertices = sizeof aExplode, iLength = sizeof aExplode[])
{
strins(sSource, sDelimiter, strlen(sSource), 28);
new
iNode,
iPointer,
iPrevious = -1,
iDelimiter = strlen(sDelimiter);
while(iNode < iVertices)
{
iPointer = strfind(sSource, sDelimiter, false, iPointer);
if(iPointer == -1)
{
strmid(aExplode[iNode], sSource, iPrevious, iLength, iLength);
break;
}
else
{
strmid(aExplode[iNode], sSource, iPrevious, iPointer, iLength);
}
iPrevious = (iPointer += iDelimiter);
++iNode;
}
return iPrevious;
}
stock strget(strx[], pos, search = ' ', len = sizeof strx)
{
new arg, ret[128], idxx;
for (new i = 0; i < len; i++)
{
if(strx[i] == search || i == len || strx[i + 1] == 10)
{
arg++;
if (arg == pos + 1)
{
ret[i-idxx] = EOS;
return ret;
}
else if (arg == pos)
idxx += 1;
}
else if (arg == pos)
ret[i - idxx] = strx[i];
}
return ret;
}
stock strtok(const string[], &index,seperator=' ') {
new length = strlen(string);
new offset = index;
new result[255];
while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
if ((index < length) && (string[index] == seperator))
{
index++;
}
return result;
}
main()
{
new
t0,
t1,
t2,
t3,
i;
t0 = GetTickCount();
for (i = 0; i < ITERATIONS; i++)
{
strget("a b", 0);
}
t1 = GetTickCount();
for (i = 0; i < ITERATIONS; i++)
{
new b;
strtok("a b", b);
}
t2 = GetTickCount();
for (i = 0; i < ITERATIONS; i++)
{
new bla[2][32];
explode(bla, "a b");
}
t3 = GetTickCount();
printf("Strget() 1: %04d, Strtok() 2: %04d, Explode() 3: %04d\n", t1 - t0, t2 - t1, t3 - t2);
}
Damit sollte man sehr aussage kräfte Ergebnisse bekommen.
Also ich bevorzuge das Standard/Leer Theme.
Find ich immernoch am besten.
Anstatt TabSrMM würde ich auch nur SrMM verwenden.
Hat die selben Funktionen, nur du hast jedes Gespräch in einem eigenem Fenster. (Wenn es zuviele werden, einfach die Gruppierungsfunktion von Windows aktivieren, btw. ist das Win7 Zeugs auch nichts anderes, da Gruppierung in Windows Vista, sobald man auf den Namen fährt, auch eine Vorschau zeigt.)
Außerdem vllt die englische Version, weil manche deutschen Texte sind echt extrem verkurkst übersetzt.
Das ganze sieht in der neusten Version (9.0 Alpha Build #2 - SVN) so aus:
Mit mir wäre das nicht passiert.
Du kannst deinen Membern ja den Hinweis geben, sie mögen die Map Downloaden um die 4ten Stadtteil zu spielen.
Wie das jetzt mit ycmd und sscanf ist, kann ich nicht sagen, da die Wiki down ist, aber hier das Ergebnis aus explode, strtok, strget (optimierte Version [1]):
Strget() 1: 0814, Strtok() 2: 1105, Explode() 3: 0614
Zwischen der unoptimierten und der optimierten strget liegen außerdem ~200ms.
Durchläufe: 1000000 (Mit mehr wird der Unterschied natürlich noch deutlicher)
Explode ist aufjedenfall schneller als strget und strtok.
[1]: Optimiertes strget:
stock strget(strx[], pos, search = ' ', len = sizeof strx)
{
new arg, ret[128], idxx;
for (new i = 0; i < len; i++)
{
if(strx[i] == search || i == len || strx[i + 1] == 10)
{
arg++;
if (arg == pos + 1)
{
ret[i-idxx] = EOS;
return ret;
}
else if (arg == pos)
idxx += 1;
}
else if (arg == pos)
ret[i - idxx] = strx[i];
}
return ret;
}
Nope geht nicht, aber es gibt einen kleinen Umweg.
MyFunc(a, b[], c = sizeof b)
{
if(a == 7)
return 9; // Zahl
format(b, c, "Hallo Welt");
return 0xDEADBEEF;
}
Nutzen kann man das dann so:
new msg[128], a;
if((a = MyFunc(1337, msg)) == 0xDEADBEEF)
{
printf("%s", msg); // Weil a != 7
}
else
{
printf("%d", a);
}
Die waren auch störend, aber die Werbung hat ihr übriges dazu getan.
Btw wird das JavaScript auch noch interpretiert wenn AdBlock es blockt, allerdings (zum Glück) nicht ausgeführt, deswegen ist die Werbung jetzt komplett verschwunden.
Es ist doch die Werbung.
Einstein hat es nun auch bemerkt!
Es liegt an der Werbung, wobei auch der Root schon mal amok gelaufen ist, allerdings hat Einstein das Problem erkannt.
Die Werbung ist erstmal raus (bis morgen)
In einem Fernsehbeitrag sagte sogar ein Afghane, man möchte lieber einen Krieg/Kampf gegen die Terroristen als von ihnen unterdrückt zuwerden.
Die sahen auch nicht die Schuld der Toten beim Angriff auf die Tanklastwagen bei den Deutschen, sondern bei den Terroristen, immerhin haben diese dort Menschen hin angelogt, möglicherweise auch gezwungen.
Edit:// Was wir machen sollten, ist aber aus der UN auszutretten.
Wir finanzieren den Saftladen und uns wird noch mit Artikel 53 und 107 (o.ä.) der WW2 vor Augen gehalten.
Btw waren viele Mitglieder aus der UN gegen eine Wiedervereinigung von Deutschland, allein deswegen sollte man aus der UN austretten. :>
Wie wärs mit http://geizhals.at , dort siehst du auch gleich die Händlerbewertungen und bekommst auch noch einen unschlagbar günstigen Preis.
getstr(format[], const getfrom[], edit[], const pos, const sizet = sizeof edit)
{
new a, b, c = 0;
for(new i = 0; i < strlen(getfrom); i++)
{
if(i+1 == strlen(getfrom))
{
i = strlen(getfrom);
goto FnEndAccept;
}
if(b < strlen(format))
{
if(format[b] == '%')
{
if(b+1 < strlen(format))
{
++b;
switch(format[b])
{
case 'w':
{
format[b] = ' ';
}
case 't':
{
format[b] = '\t';
}
}
}
}
if(getfrom[i] == format[b])
{
++b;
if(a < pos)
{
c = i + 1;
++a;
}
else if(a == pos)
{
FnEndAccept:
for(new j = c, q = 0; j < i; j++, q++)
{
if(j < sizet)
{
edit[q] = getfrom[j];
}
if(j+1==sizet)
edit[q+1] = '\0';
}
return 1;
}
}
}
}
return 0;
}
getstr, für kleine Dinge reicht aber auch strget. :>
Keine Gute Einstellung zu sagen "Hey,ich will Parameter in Commands haben / lernen",aber anstatt dcmd + sscanf ( oder ganz neu zcmd + sscanf ) zu nehmen benutzt ich strcmp + strtok ...
Wobei, dcmd würde ich nicht nutzen, immernoch ein Funktionsaufruf (5 Calls) mehr. :p
Der gute DMA kann sich auch nach Dänemark Routen laßen.