Benutze in der Abfrage _:clickedid
[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
-
-
Jetzt kann ich das Textdraw nicht mehr öffnen, sobald es in einer andere Funktion wieder gezeigt wird wird es sofort wieder versteckt.
Liegt es an return 0; ? -
Zeig mal deinen Jetzigen Code für OnPlayedClick.
-
Das return 0; ist da schon richtig.
Kannst du eben kurz zusammenfassen, was du codetechnisch genau erreichen möchtest? Würde die Hilfe etwas erleichtern. -
Ich benutzte die Textdraws für eine Funktion, ich will halt, dass wenn ich nachdem das TextDraw versteckt wurde es wieder mit /textdraw anzeige, dass funktioniert nicht.
Cocmd:textdraw(playerid,params[]) { new Float:angle; GetPlayerFacingAngle(playerid,angle); SelectTextDraw(playerid, 0x00FF00FF); SetPlayerFacingAngle(playerid,angle); PlayerTextDrawShow(playerid, X);
-
Dann solltest du auch mit dem richtigen Callback arbeiten.. xD
https://wiki.sa-mp.com/wiki/OnPlayerClickPlayerTextDrawDann kannst du die Zeichenkette „_:“ vorher auch entfernen.
Probiere es mal innerhalb des richtigen Callbacks und gib dann Rückmeldung. -
Übrigens kannst du die Funktion CancelSelectTextdraw entfernen, da mit If clickedid == INVALID... bereits die Selektion abgebrochen wird.
-
-
if(playertextid == INVALID_TEXT_DRAW)
zu
if(playertextid ==PlayerText: INVALID_TEXT_DRAW)Warum genau der Code nicht funktioniert, kann ich dir nicht sagen.
Wenn du nicht gerade ESC drücken solltest, müsste der Code die Funktion auch aufrufen.Mysteriös... kann dir dazu spontan jetzt nichts hilfreiches sagen..
-
C
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid) { if(playertextid ==PlayerText: INVALID_TEXT_DRAW) { PlayerTextDrawHide(playerid, X); CancelSelectTextDraw(playerid); return 1; } return 0; }
Macht eigentlich nichts, man muss PlayerText: vorher nicht angeben, trotzdem war es ein Versuch wert. Klappt immer noch nicht.
Diesmal verschwindet das Textdraw nicht einmal bei dem anderen Callback schon
-
Es ist nicht das OnPlayerClickPlayerTextDraw... Wieso ändert ihr das überhaupt, das Callback wird NIE aufgerufen wenn man die Selektion mit ESC beendet. Mein Callback war schon richtig was ich zu allererst gepostet habe.
Also machst du folgendes:Code
Alles anzeigenpublic OnPlayerClickTextDraw(playerid, Text:clickedid) { if(clickedid == Text:INVALID_TEXT_DRAW) { Hier hidest du dein Textdraw, kp wie dein TD heißt gerade xD return 1; } return 0; }
Müsste so eigentlich klappen.
-
Danke euch Bois,
Wie kann ich es so machen, dass die Zahl z.B 3 und 7 in einer Variable gespeichert werden?
Heißt ich habe einmal die Zahl 3 und einmal die 7
3+7 kann ich ja nicht machen, dann kommt 10 raus es soll aber 37 sein -
Was sind das für Warnungen?
Im Dialog nach Auswahl soll ein Fahrzeug spawnen sprichCreateVehicle(411,slx,sly,slz,3,3,-1); // Support InfernusAber immer Warnung : warning 202: number of arguments does not match definition
Warum? Das Fahrzeug spawnt auch bei mir usw.
-
@Nima.Yaghobi
//EDIT
Bei dir fehlt die Rotation beim spawnen -
Warum? Das Fahrzeug spawnt auch bei mir usw.
Du hast zu wenige Parameter angegeben, du hast die ZAngle (Die Richtung in die das Fahrzeug zeigt) vergessen.
CreateVehicle(411,slx,sly,slz,0.0,3,3,-1);
Das Fahrzeug spawnt auch so, weil die 3 als Angle genommen wurde...dadurch wurde aber -1 nur 2. Farbe...und das Auto weiß nun nicht genau, wann es respawnen soll haha xD
-
Guten Abend!
Ich habe die Funktion RemoveUnderscore und die Werte RPVorName und RPNachname. Was muss ich machen, damit ich folgendes machen kann?
CodeRemoveUnderscore(UserAccDaten[playerid][user_acc_RPVorName],UserAccDaten[playerid][user_acc_RPNachName]), text);
Oder gibt es eine Einfachere Löung dass ich Vor- und Nachname in eins geben kann im nachhinein?Code
Alles anzeigenstock RemoveUnderscore(text[]) { new len, string[128]; format(string,sizeof(string),text); len = strlen(string); for(new i=0;i<len;i++) { if(string[i] == '_') string[i] = ' '; } return string; }
Danke im VorausAllrounder18
-
Oder gibt es eine Einfachere Löung dass ich Vor- und Nachname in eins geben kann im nachhinein?
Ein simples format:
format(text, sizeof(text),"%s %s",RemoveUnderscore(UserAccDaten[playerid][user_acc_RPVorName]), RemoveUnderscore(UserAccDaten[playerid][user_acc_RPNachName]));
-
Danke, jetzt siehts so aus:
Codepublic OnPlayerText(playerid, text[]) { format(text, sizeof(text),"%s %s sagt",RemoveUnderscore(UserAccDaten[playerid][user_acc_RPVorName]), RemoveUnderscore(UserAccDaten[playerid][user_acc_RPNachName])); SendClientMessage(playerid,GRAU,text); return 1; }
Jetzt steht da nur der Text im chat und nict ... ... sagt.
-
Danke, jetzt siehts so aus:
Du kannst ja auch nicht diesen String formatieren.
Cpublic OnPlayerText(playerid, text[]) { new string[144+1]; format(string, sizeof(string),"%s %s sagt: %s",RemoveUnderscore(UserAccDaten[playerid][user_acc_RPVorName]), RemoveUnderscore(UserAccDaten[playerid][user_acc_RPNachName]),text); SendClientMessage(playerid,GRAU,string); return 0; }
PS: SendClientMessage sendet nur die Nachricht an dich...entweder SendClientMessageToAll oder SendClientMessageToRange oder so
-
SendClientMesage war nurzum Testen gedacht, aber dake für den Tipp,
Ich hab deine Funktion verwendet aber leider weerden die Namennicht angezeigt.
MfG
Edit: Das ldie Namen nicht agezeigt Werden, liegt nicht an dieser Funktion.