Bei mir auch... ![]()
Beiträge von Kaliber
-
-
Eine Frage noch, kann man in einem TextDraw einen String verwenden?
Natürlich
Schau dir diese Funktion an: TextDrawSetString
mfg.

-
Du musst die Variable so deklarieren:
new Text:Textdraw0;
mfg.

-
Du kannst dich an den hier wenden:
http://forum.sa-mp.com/member.php?u=3
Ob er auf dich reagieren wird, ist die andere Sache

PS: Wenn dann auf englisch schreiben

mfg.

-
Idiot! :DDDDDDDDD
Du musst das TextDraw erst erstellen, dann anzeigen lassen

Andersrum funktioniert das nicht, hahahahahaha

-
Da steht trotzdem nichts. Hat das was damit zu tun, dass ich den gesamten Block unter OnPlayerConnect habe? Sorry aber ich bin noch recht neu was Textdrwas angeht. Ich lerne nocht.
Nun, du musst dem Spieler das TextDraw dann auch anzeigen lassen...mit TextDrawShowForPlayer
-
Das musst du so machen:
new Name[MAX_PLAYER_NAME];
GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
Textdraw17 = TextDrawCreate(266.666625, 273.362884, Name);
TextDrawLetterSize(Textdraw17, 0.449999, 1.600000);
TextDrawAlignment(Textdraw17, 1);
TextDrawColor(Textdraw17, -1);
TextDrawSetShadow(Textdraw17, 0);
TextDrawSetOutline(Textdraw17, 1);
TextDrawBackgroundColor(Textdraw17, 51);
TextDrawFont(Textdraw17, 1);
TextDrawSetProportional(Textdraw17, 1);mfg.

-
Schreib deinen Befehl mal so:
ocmd:admins(playerid,params[]) {
if(!GetPVarInt(playerid,"LogIn"))return SendClientMessage(playerid,ROT,"Logge dich bitte zuerst ein.");
new string[128],adminrang[50];
for(new i,l=GetMaxPlayers(); i!=l; i++) {
if(!IsPlayerConnected(i) || !GetPVarInt(i,"Adminlevel"))continue;
switch(GetPVarInt(i,"Adminlevel")) {
case 1: adminrang = "{00F73}Supporter";
case 2: adminrang = "Moderator";
case 3: adminrang = "Super Moderator";
case 4: adminrang = "Admin";
case 5: adminrang = "{FE2E2E}Fulladmin";
}
format(string,sizeof(string),"%s %s",adminrang,SpielerName(i));
SendClientMessage(playerid,WEIß,string);
}
return 1;
}mfg.

//Edit: so...jetzt^^
-
Einen gemoddeten oder einen, den es in SAMP schon so gibt?

-
Naja...ich habe da auch nochmal was:
stock format_money(string[], geld, charakter[]) {
if(geld <= 0) return 0;
valstr(string,geld);
for(new i=strlen(string)-3; i>=0; i-=3) strins(string,charakter,i,strlen(string)+11);
if(strcmp(string[0],charakter,true) == 7) strdel(string,0,1);
return 1;
}Durch diese Funktion, kann man geld in einen String mit einen Zeichen seiner Wahl umwandeln, sprich so:
new string[32],geld=1000500;
format_money(string,geld,"."); //Wenn man hier anstatt dem . ein , macht, steht es auch so im string
printf("%s",string);
//->Gibt aus: 1.000.500//Edit: War doch noch ein fehler..
//Edit²: Okay..jetzt gehts
//edit³:
Okay, ich habe mal wieder etwas lustiges.
Mir ist aufgefallen, das die Split Funktion (von wem auch immer) total langsam ist, also ich rede von dieser:stock split(const strsrc[], strdest[][], delimiter)
{
new i, li, aNum, len;
while(i <= strlen(strsrc))
{
if(strsrc[i] == delimiter || i == strlen(strsrc))
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}Aus diesem Grund, habe ich die mal verbessert, schaut so aus:
stock f_split(const src[], dest[][], delimiter[]) {
new pos = strfind(src,delimiter),n_pos,num,bool:end;
for(;;) {
if(!num) strmid(dest[num], src, 0, pos, 128),num++;
else strmid(dest[num], src, n_pos+1, pos, 128),num++;
n_pos = strfind(src,delimiter,false,pos+1);
if(n_pos == -1) n_pos = strlen(src),end=true;
strmid(dest[num], src, pos+1, n_pos, 128),num++;
pos = strfind(src,delimiter,false,n_pos+1);
if(end) break;
}
return 1;
}Hier ein paar Speedtests:
//Edit 4:
Also...mir ist wieder langweilig und ich habe mir überlegt...welche Funktionen schlecht sind und ich verbessern könnte.
Also und ich bin auf strtok gestoßen, diese Funktion ist sehr sehr langsam, aus diesen Grund, habe ich die Funktion mal sehr verbessert:
Alter Code:
stock strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}Mein Code:
stock _strtok(const string[], &index) {
new pos = strfind(string, " ", false, index+1),buffer[128];
if(pos == -1) pos = strlen(string);
strmid(buffer,string,index,pos,128),index = pos;
return buffer;
}Also, damit ihr einen Vergleich habt, wie viel schneller meine Funktion ist, habe ich wieder ein paar Speedtests gemacht:
Viel Spaß eure Funktionen zu verschnellern.
mfg.

-
Dein Ernst?

Du hast Teile aus deinem Filterscript kopiert und hier eingefügt.
Und meine Vorschläge für das Filterscript wieder nicht beachtet.
Nun...ahja...okay

-
In deinem enum muss VehHealth einen Float Tag haben, sprich du musst es so in dein enum schreiben:
Float:VehHealth,
mfg.

-
Schreibe das unten in dein Script (habe ich selbst geschrieben...könnte sein, das es so gemeint ist):
stock substr(string[],p1,p2) {
new buffer[128];
strmid(buffer,string,p1,p2,128);
return buffer;
}mfg.

-
Wozu gibt es eigentlich den Fehlerklärbär
gib da den Warning ein und du erhälst:
CodeVariable bereits vorhanden Die Variable wird bereits verwendet, eine einfache Umnennung der Definition einer der Variable und die dazugehörigen Anpassungen sollten das Problem lösen.mfg.

-
Sonst noch irgendwelche andere Möglichkeiten? Low FPS und High Ping habe ich bereits
Wozu willst du denn noch mehr detecten?
-
Nein!
Was soll den dieser Schwachsinn?

Wenn ein Beitrag unangemessen ist/war, kannst du ihn Melden und die Administration wird das dann entscheiden. Aber vorerst gilt Meinungsfreiheit und die darfst du nicht so respektlos behandeln!
mfg.

-
finde schade, dassm an diese nicht verwendet
Wieso findest du das schade?
-
Daanke
-
-
Na Kaliber schon wieder ein Jahr näher an der Rente xD
Ja sicher