Nein, du erstellst einfach nur ein einzelnes Textdraw, mit irgendeinem Text. Du setzt den Text ja in dem Timer, mit TextDrawSetString.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Habe mal eine kleine Frage:
Ist es empfehlenswert nach jeder Kleinigkeit in die Datenbank abzuspeichern? Oder kann dass dann zu Laggs führen?
Benutze Mysql R39-3 -
Es kann zu Laggs führen.
Empfehlenswert ist es so wenig Querys wie möglich abzusenden. -
Okay, noch etwas, ist MAX_PLAYERS auf eine bestimmte Zahl definiert ?
oder ist das wenn z.b. gerade 13 Player oben sind 13? -
MAX_PLAYERS = 500
GetPlayerPoolSize () = Die höchste ID auf dem Server -
Geht nur um die Schleifen wo ich MAX_PLAYERS stehen habe, kann ich ja dann eigentlich abfragen ob der Spieler connected ist, ansonsten eben continue
-
Genau.
MAX_PLAYERS kannst du in der a_samp.inc auch kleiner machen, wenn du weniger Slots hast, das spart unnötige Durchläufe. -
Okay, wird das dann beim nächsten compilen übernommen oder?
Dann kann ich die .amx einfach wieder auf den Server laden -
So ist es.
Du wirst dann auch merken, dass die amx Datei ein wenig kleiner ist als zuvor, da ja weniger Speicher reserviert werden muss. -
if(strlen(inputtext)>0)
{
new eingabewert = strval(inputtext);
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
if(name==eingabewert)Bekomme hier bei dem name einen Error.
Und muss ich jetzt für eingabewert einen Array angeben?
-
if(strlen(inputtext)>0)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
if(!strcmp(name, inputtext))
{
//Spieler-Name ist gleich der Eingabe
} -
Habe nun ein Textdraw erstellt, wenn ich Ingame /ecountdown 10 eingebe, taucht auf Countdown: 9 aber geht nicht weiter runter und bleibt permanent so.
Zum Code:
Textdraw:
Textdraw0 = TextDrawCreate(316.000000, 15.000000, "1");
TextDrawBackgroundColor(Textdraw0, 255);
TextDrawFont(Textdraw0, 3);
TextDrawLetterSize(Textdraw0, 0.500000, 1.000000);
TextDrawColor(Textdraw0, -65281);
TextDrawSetOutline(Textdraw0, 0);
TextDrawSetProportional(Textdraw0, 1);
TextDrawSetShadow(Textdraw0, 1);
TextDrawSetSelectable(Textdraw0, 0);Public
forward CountDownObjekte(playerid, count);
public CountDownObjekte(playerid, count)
{
count--;
if(count <= 0)
{
KillTimer(countTimer);
countTimer = -1;
//Hier die Objekte erstellen
gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
SetObjectMaterial( gObj[0], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(gObj[0], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
SetObjectMaterial( gObj[1], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(gObj[1], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
}
new str[16];
format(str, sizeof(str), "Countdown: %d", count);
TextDrawSetString(Textdraw0, str); //Die id musst du halt von deinem textdraw da einfügen...
TextDrawShowForPlayer(playerid, Textdraw0);
return 1;
}Befehl
CMD:ecountdown(playerid,params[])
{
if(countTimer != -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Countdown ist bereits an.");
if(!params[0]) return SendClientMessage(playerid, 0xFF0000FF, "Gebe eine Zeit ein.");
new time = strval(params);
if(time < 1 || time > 60) return SendClientMessage(playerid, 0xFF0000FF, "Gebe eine Zeit zwischen 1 und 60 ein.");
countTimer = SetTimerEx("CountDownObjekte", 1000, true, "dd", playerid, time);
return 1;
} -
Kann wer mir kurz überTeamviewer helfen, ich kann die Textdraws nicht InGame anklicken.. ich weis nicht was ich falsch machen..
-
tayson87:
http://wiki.sa-mp.com/wiki/OnPlayerClickTextDraw_DE
Sonst sende uns einmal deinen Code, da sonst Jeffry: nicht helfen kann/wird -
tayson87:
http://wiki.sa-mp.com/wiki/OnPlayerClickTextDraw_DE
Sonst sende uns einmal deinen Code, da sonst Jeffry: nicht helfen kann/wirdCode ist leider zu viel deswegen meinte ich ja ob jemand über Teamviewer gucken kann
PS: Ist ein MDC System, wollte es für die Community scripten bzw hier dann veröffentlichen. Aber leider kann man nicht die TextDraws anklicken.. habs eig. genau wie auf dem wiki.sa-mp gemacht nur leider kein erfolg...
-
Es reicht wenn du ein Textdraw, wie du es erstellst, postest.
-
-
Ne Ahnung warum meins nicht funktioniert? 1 älterer Post über uns von mir.
Hab ich übersehen, sorry. Danke für die Nachfrage.
Hatte in dem Code vergessen, dass der Timer ja neu gestartet werden muss.Schreibe es so:
forward CountDownObjekte(playerid, count);
public CountDownObjekte(playerid, count)
{
count--;
if(count <= 0)
{
KillTimer(countTimer);
countTimer = -1;
//Hier die Objekte erstellen
gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
SetObjectMaterial( gObj[0], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(gObj[0], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
SetObjectMaterial( gObj[1], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(gObj[1], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
}
new str[16];
format(str, sizeof(str), "Countdown: %d", count);
TextDrawSetString(Textdraw0, str);
TextDrawShowForPlayer(playerid, Textdraw0);
countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, count);
return 1;
}CMD:ecountdown(playerid,params[])
{
if(countTimer != -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Countdown ist bereits an.");
if(!params[0]) return SendClientMessage(playerid, 0xFF0000FF, "Gebe eine Zeit ein.");
new time = strval(params);
if(time < 1 || time > 60) return SendClientMessage(playerid, 0xFF0000FF, "Gebe eine Zeit zwischen 1 und 60 ein.");
countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, time);
return 1;
} -
MAX_PLAYERS = 500
Sind mittlerweile 1000.Seit 0.3z R3 oder 4 released Kalcor nur noch die 1000 Spieler variante.
-
Hier der Textdraw:
MDCMENU[5] = TextDrawCreate(124.000000, 185.062500, "FAHRZEUGSUCHE");
TextDrawLetterSize(MDCMENU[5], 0.449999, 1.600000);
TextDrawAlignment(MDCMENU[5], 1);
TextDrawColor(MDCMENU[5], -1);
TextDrawSetShadow(MDCMENU[5], 0);
TextDrawSetOutline(MDCMENU[5], 0);
TextDrawBackgroundColor(MDCMENU[5], 51);
TextDrawFont(MDCMENU[5], 1);
TextDrawSetProportional(MDCMENU[5], 1);und hier das clickedid:
if(clickedid == MDCMENU[5]) // MDC SearchVeh
{
ShowPlayerDialog(playerid, DIALOG_MDC_VehicleI, DIALOG_STYLE_INPUT, "San Andreas Police Department || Fahrzeug Akte", "=====================================================\nPOLIZEI COMPUTER "#SAPCVERSION"\n\nSchreibe die ID des gesuchten Fahrzeugs auf! (/dl um die ID zu sehen)\n\n=====================================================\n", "SUCHE", "CLOSE");
HideMDCMenu(playerid);
switch(Spieler[playerid][pAdmin])
{
case -1:
{
TextDrawShowForPlayer(playerid,Reportdraw[4]);
}
case 1:
{
TextDrawShowForPlayer(playerid,Reportdraw[0]);
TextDrawShowForPlayer(playerid,Reportdraw[1]);
}
case 2,3,4:
{
TextDrawShowForPlayer(playerid,Reportdraw[0]);
TextDrawShowForPlayer(playerid,Reportdraw[1]);
TextDrawShowForPlayer(playerid,Reportdraw[2]);
}
case 5,6:
{
TextDrawShowForPlayer(playerid,Reportdraw[0]);
TextDrawShowForPlayer(playerid,Reportdraw[1]);
TextDrawShowForPlayer(playerid,Reportdraw[2]);
TextDrawShowForPlayer(playerid,Reportdraw[3]);
}
case 7:
{
for(new i4=0;i4<sizeof(Reportdraw);i4++)
{
TextDrawShowForPlayer(playerid,Reportdraw[i4]);
}
}
}
}Und hier das Menu das dann aufgerufen wird. Ist doch alles eigentlich richtig ?
stock ShowMDCMenu(playerid)
{
TextDrawShowForPlayer(playerid,MDCMENU[0]);
TextDrawShowForPlayer(playerid,MDCMENU[1]);
TextDrawShowForPlayer(playerid,MDCMENU[2]);
TextDrawShowForPlayer(playerid,MDCMENU[3]);
TextDrawShowForPlayer(playerid,MDCMENU[4]);
TextDrawShowForPlayer(playerid,MDCMENU[5]);
TextDrawShowForPlayer(playerid,MDCMENU[6]);
TextDrawShowForPlayer(playerid,MDCMENU[7]);
TextDrawShowForPlayer(playerid,MDCMENU[8]);
TextDrawShowForPlayer(playerid,MDCMENU[9]);
TextDrawShowForPlayer(playerid,MDCMENU[10]);
//TextDrawShowForPlayer(playerid,MDCMENU[11]);
TextDrawShowForPlayer(playerid,MDCMENU[12]);
SelectTextDraw(playerid, 0x0080FF);
}PS: Bitte zitieren oder mich markieren, wenn ihr wisst warum bei mir es nicht funkt