Weis einer woran es liegt, dass ich bei TextDrawSetSelectable(); 2 Textdraws gleichzeitig auswähle, Obwohl ich nur eins auswählen möchte ?
Du könntest uns als Anfang den entsprechenden Code zeigen, bei dem das Problem auftritt. ![]()
Weis einer woran es liegt, dass ich bei TextDrawSetSelectable(); 2 Textdraws gleichzeitig auswähle, Obwohl ich nur eins auswählen möchte ?
Du könntest uns als Anfang den entsprechenden Code zeigen, bei dem das Problem auftritt. ![]()
Du könntest uns als Anfang den entsprechenden Code zeigen, bei dem das Problem auftritt.
![]()
LoginMenu[18] = TextDrawCreate(82.380859, 415.279907, "einloggen");
TextDrawLetterSize(LoginMenu[18], 0.400000, 1.600000);
TextDrawAlignment(LoginMenu[18], 2);
TextDrawColor(LoginMenu[18], 0xffffffff);
TextDrawSetShadow(LoginMenu[18], 1);
TextDrawSetOutline(LoginMenu[18], 1);
TextDrawBackgroundColor(LoginMenu[18], 255);
TextDrawFont(LoginMenu[18], 3);
TextDrawSetProportional(LoginMenu[18], 1);
TextDrawSetShadow(LoginMenu[18], 1);
TextDrawSetSelectable(LoginMenu[18], true);
LoginMenu[16] = TextDrawCreate(424.476257, 415.706573, "Registrier dich noch Heute !");
TextDrawLetterSize(LoginMenu[16], 0.400000, 1.600000);
TextDrawAlignment(LoginMenu[16], 3);
TextDrawColor(LoginMenu[16], 0xffffffff);
TextDrawSetShadow(LoginMenu[16], 0);
TextDrawSetOutline(LoginMenu[16], 1);
TextDrawBackgroundColor(LoginMenu[16], 255);
TextDrawFont(LoginMenu[16], 3);
TextDrawSetProportional(LoginMenu[16], 1);
TextDrawSetShadow(LoginMenu[16], 0);
TextDrawSetSelectable(LoginMenu[16], true);
LoginMenu[23] = TextDrawCreate(627.523986, 1.413363, "X");
TextDrawLetterSize(LoginMenu[23], 0.400000, 1.600000);
TextDrawAlignment(LoginMenu[23], 1);
TextDrawColor(LoginMenu[23], WEISS);
TextDrawSetShadow(LoginMenu[23], 0);
TextDrawSetOutline(LoginMenu[23], 0);
TextDrawBackgroundColor(LoginMenu[23], 255);
TextDrawFont(LoginMenu[23], 1);
TextDrawSetProportional(LoginMenu[23], 1);
TextDrawSetShadow(LoginMenu[23], 0);
TextDrawSetSelectable(LoginMenu[23], true);
Alles anzeigen
Diese 2 werden gleichzeitig ausgewählt wenn ich einen von ihnen anklicken will. Sind halt auf einer linie aber ich möchte halt, dass man nur jeweils eins auswählt und nicht beide gleichzeitig
Screen wie es aussieht:
Diese 2 werden gleichzeitig ausgewählt wenn ich einen von ihnen anklicken will. Sind halt auf einer linie aber ich möchte halt, dass man nur jeweils eins auswählt und nicht beide gleichzeitig
Die Funktion musst du dafür verwenden: https://wiki.sa-mp.com/wiki/TextDrawTextSize ![]()
weiß das Jemand ?
UNIX-Tmesatp
guck mal suchst du sowas?
Hey, ich würde gerne einen /leaders befehl machen per MySQL und bräuchte mal die "Commands" dafür.
Die Seite -> http://wiki.sa-mp.com/wiki/MySQL/R33 <- hilft schon doch es sind da zu viele Commands auf einmal.
Das ist ganz einfach. Du musst einfach den Wert von jedem Spieler von der Spalte "Leader" (+ Name, um dann den Namen im Game anzeigen zu können) auslesen und überprüfen ob dieser true (1) ist.
Versuch das mal, und wenn du am zweifeln bist oder Fragen hast, dann kannst du dich ja gerne an uns wenden.
=> mysql_format()
=> mysql_tquery()
=> cache_num_rows()
Die Funktion brauchst du grundsätzlich für dein Vorhaben. ![]()
kann wer bei meinem Problem (oben) helfen ?
Hab mit dem TextdrawEditor ausprobiert aber das Problem ist ich kann des irgendwie nicht einstellen..
Da du ja einen TextDraw Editor verwendest, kannst du, so würde ich das machen, eine Box über das Textdraw erstellen. Die Box kannst du dann, wenn sie direkt darüber ist, transparent (durchsichtig) machen. In der erstellten Datei sollte dann auch die Funktion TextDrawTextSize enthalten sein, sodass du diese Zeile übernehmen kannst. Im Script musst du die Box aber nicht mit einfügen, das geht nur um die Funktion TextDrawTextSize, die durch die Box erstellt wird.
@_Marvin ich habe meinen /leader Befehl mit einer schleife gemacht.
Er geht jeden Spieler auf dem Server durch und guckt ob sein Rank 10 ist(Leaderrank).
Doch wie gebe ich dazu die Fraktion aus.
forward Showleader();
public Showleader()
{
new string[32], fraction[32];
cache_get_field_content(0, "name", string);
cache_get_field_content(
printf("Es gibt folgende Leader '%s'.", string);
return 1;
}
ocmd:leaders(playerid)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new query[128];
mysql_format(handle, query, sizeof(query), "SELECT * FROM accounts WHERE frank = '10'");
mysql_pquery(handle, query, "Showleader");
}
}
return 1;
}
Ich würde eine Erklärung feiern, da ich nicht immer fragen möchte sondern das auch mal lernen möchte
Da du ja einen TextDraw Editor verwendest, kannst du, so würde ich das machen, eine Box über das Textdraw erstellen. Die Box kannst du dann, wenn sie direkt darüber ist, transparent (durchsichtig) machen. In der erstellten Datei sollte dann auch die Funktion TextDrawTextSize enthalten sein, sodass du diese Zeile übernehmen kannst. Im Script musst du die Box aber nicht mit einfügen, das geht nur um die Funktion TextDrawTextSize, die durch die Box erstellt wird.
klappt nicht bzw dann lassen sich keine Textdraws mehr anklicken
@The Sensei
Die Idee an sich ist bereits richtig, allerdings hast du bei deinem Befehl ("/leaders") einen kleinen Fehler.
Als erstes brauchst du dort keine Schleife, weil du eh mit deiner Query ("SELECT .....") durch alle Spieler in der Datenbank gehst. Zweitens brauchst du dort kein mysql_format verwenden, weil es nichts zu formatieren (= auslesen von Variablen, welche den Wert in den String schreiben) gibt.
Daher sollte der Befehl so lauten:
ocmd:leaders(playerid)
{
mysql_pquery(handle, "SELECT * FROM accounts WHERE frank = '10'", "Showleader");
return 1;
}
forward Showleader();
public Showleader()
{
if(!cache_num_rows())return 1;
new string[32], fraction[32];
cache_get_field_content(0, "name", string);
cache_get_field_content(
printf("Es gibt folgende Leader '%s'.", string);
return 1;
}
"Showleader" sollte mit der Abfrage (= if(!cache_num_rows....) gemacht werden, denn das fragt ab, falls keine Dateneinträge gefunden wurden, dann wird der Code abgebrochen.
Das auslesen der Namen machst du richtig, solltest das aber dennoch so schreiben:
Das gleiche machst du dann auch mit der Fraktion (außer das dort string zu fraction geändert wird, und MAX_PLAYER_NAME zu den Wert von fraction.
Insgesamt (hier: ohne Fraktion) sieht das so aus:
forward Showleader();
public Showleader()
{
if(!cache_num_rows())return 1;
new string[MAX_PLAYER_NAME], fraction[32];
cache_get_field_content(0, "name", string,handle,MAX_PLAYER_NAME);
cache_get_field_content(
printf("Es gibt folgende Leader '%s'.", string);
return 1;
}
Das mit der Fraktion musst du noch einfügen, und dann schaust du mal.
Alles anzeigen@The Sensei
Die Idee an sich ist bereits richtig, allerdings hast du bei deinem Befehl ("/leaders") einen kleinen Fehler.
Als erstes brauchst du dort keine Schleife, weil du eh mit deiner Query ("SELECT .....") durch alle Spieler in der Datenbank gehst. Zweitens brauchst du dort kein mysql_format verwenden, weil es nichts zu formatieren (= auslesen von Variablen, welche den Wert in den String schreiben) gibt.
Daher sollte der Befehl so lauten:Cocmd:leaders(playerid) { mysql_pquery(handle, "SELECT * FROM accounts WHERE frank = '10'", "Showleader"); return 1; }
Cforward Showleader(); public Showleader() { if(!cache_num_rows())return 1; new string[32], fraction[32]; cache_get_field_content(0, "name", string); cache_get_field_content( printf("Es gibt folgende Leader '%s'.", string); return 1; }"Showleader" sollte mit der Abfrage (= if(!cache_num_rows....) gemacht werden, denn das fragt ab, falls keine Dateneinträge gefunden wurden, dann wird der Code abgebrochen.
Das auslesen der Namen machst du richtig, solltest das aber dennoch so schreiben:
Das gleiche machst du dann auch mit der Fraktion (außer das dort string zu fraction geändert wird, und MAX_PLAYER_NAME zu den Wert von fraction.
Insgesamt (hier: ohne Fraktion) sieht das so aus:
Cforward Showleader(); public Showleader() { if(!cache_num_rows())return 1; new string[MAX_PLAYER_NAME], fraction[32]; cache_get_field_content(0, "name", string,handle,MAX_PLAYER_NAME); cache_get_field_content( printf("Es gibt folgende Leader '%s'.", string); return 1; }Das mit der Fraktion musst du noch einfügen, und dann schaust du mal.
Was meinst du mit "und MAX_PLAYER_NAME zu den Wert von fraction."?
Meinst du vielleicht die String länge?
Ja.
Kann man irgendwie auslegen, was man in einem LIST- Dialog ausgewählt hat?
Mein Code: (http://pastebin.com/XDCyAFdC)
if(Tanken[i][t_HatSuper] >= 1)
{
format(string, sizeof(string), "Super\n");
}
if(Tanken[i][t_HatSuperPlus] >= 1)
{
if(!strlen(string)) format(string, sizeof(string), "%sSuperPlus\n", string);
else format(string, sizeof(string), "SuperPlus\n");
}
if(Tanken[i][t_HatDiesel] >= 1)
{
if(!strlen(string)) format(string, sizeof(string), "%sDiesel\n", string);
else format(string, sizeof(string), "Diesel\n");
}
if(Tanken[i][t_HatAutogas] >= 1)
{
if(!strlen(string)) format(string, sizeof(string), "%sAutogas\n", string);
else format(string, sizeof(string), "Autogas\n");
}
if(Tanken[i][t_HatKerosin] >= 1)
{
if(!strlen(string)) format(string, sizeof(string), "%sKerosin\n", string);
else format(string, sizeof(string), "Kerosin\n");
}
if(Tanken[i][t_HatStrom] >= 1)
{
if(!strlen(string)) format(string, sizeof(string), "%sStrom\n", string);
else format(string, sizeof(string), "Strom\n");
}
if(!strlen(string)) return SendClientMessage(playerid, COLOR_RED, "Etwas ist falsch gelaufen, bitte Informiere umgehend den Support!");
format(string, sizeof(string), "{FFFFFF}%s", string);
ShowPlayerDialog(playerid, DIALOG_TANKEN_TANKART, DIALOG_STYLE_LIST, "{FFFFFF}Was möchten Sie tanken?", string, "Bestätigen", "Abbrechen");
return 1;
Und hier möchte ich es denn auslesen aber wenn ich da nur Super eingebe gehts nicht
case DIALOG_TANKEN_TANKART:
{
if(!response)return 1;
switch(listitem)
{
case Super:
{
return 1;
}
}
return 1;
}
Case super müsste zu case 0 zum Beispiel
- vom Handy
Ja klar aber wie soll ich denn auslesen, was ich ausgewählt habe?
Bei List-Dialogen wird unter OnDialogResponse das "inputtext" auf den String der angewählten Zeile gesetzt. Du kannst also abfragen, ob "inputtext" "Super" etc entspricht
Hey,
ich habe dank @_Marvin meine Showleader Funktion fertig gestellt.
forward Showleader();
public Showleader()
{
if(!cache_num_rows())return 1;
new string[MAX_PLAYER_NAME], fraction[64];
cache_get_field_content(0, "name", string,handle,MAX_PLAYER_NAME);
cache_get_field_content(0, "fraction", fraction, handle,64);
printf("Es gibt folgende Leader '%s' -> '%s'", string, f_name[strval(fraction)]);
return 1;
}
Leider wird Sie nur 1 mal aufgerufen.
Doch ich möchte alle Namen auslesen...
ocmd:leaders(playerid)
{
mysql_pquery(handle, "SELECT * FROM accounts WHERE frank = '10'", "Showleader");
return 1;
}
Ja klar aber wie soll ich denn auslesen, was ich ausgewählt habe?
Ich habe folgendes Beispiel mal aus einem Script kopiert, dass dein Problem erfolgreich gelöst hat.
Hier die relevanten Zeilen:
new strpart[2][MAX_PLAYER_NAME],strpart2[2][MAX_PLAYER_NAME];
new i;
explode(strpart,inputtext," (");
explode(strpart2,strpart[0],"] ");
substr(strpart2[1],0,strlen(strpart2[1])-1);
i=ReturnUser(strpart2[1]);
Hilft dir das? ![]()