Danke, für die Hilfe!
[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
-
-
Hey,
Habe folgendes Problem
wen ich eins wähle Funktioniert das aber wen ich die 0 wähle erscheint der Dialog wieder?
C
Alles anzeigencase DIALOG_FRAKTION_LSPD_WERTK: { new string[348], menge = strval(inputtext); if(response == 0)return 1; else { if(!strval(inputtext)) { format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des {33AA33}'L.S.P.D' {FFFFFF}steht auf {33AA33}%d.\n{FFFFFF}Setze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTK, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück"); return 1; } if(!IsNumeric(inputtext)) { format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des {33AA33}'L.S.P.D' {FFFFFF}steht auf {33AA33}%d.\n{FFFFFF}Setze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTK, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück"); return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Gebe nur Zahlen ein!"); } if(menge < 0 || menge > 1) { format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des {33AA33}'L.S.P.D' {FFFFFF}steht auf {33AA33}%d.\n{FFFFFF}Setze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTK, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück"); return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Gib bitte nur ein Wert von 0 - 1 an!"); } Frak[1][frakKasseOn] = menge; format(string,sizeof(string),"{FFFFFF}Du hast die Fraktionskasse vom {33AA33}'L.S.P.D' {FFFFFF}auf {33AA33}%d {FFFFFF}gesetzt.", menge); SendClientMessage(playerid, COLOR_WHITE, string); SaveAllFraktion(); return 1; } } -
!strval(inputtext)
Das prüft, ob die Zahl 0 ist...
Was wolltest du da abfragen?
-
IsNumeric is normal für zahlen oder versteh ich das flasch?
Möchte halt nur das er zahlen eingeben kann von 0 bis 1 weiter nicht und keine Buchstaben
-
Ja, lösch die erste Abfrage einfach mit dem strval, die ist unnötig

-
Hey,
Ich habe kurz eine frage mir wird beim spawnen die Message doppelt ausgegeben.
Das Heißt wen ich spawne kommt die Message doppelt.-> Beispiel:
SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll staut sich bis an die Decke. | Du spawnest mit wenig Leben {ED5400}(-90){8D8DFF}.");
SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll staut sich bis an die Decke. | Du spawnest mit wenig Leben {ED5400}(-90){8D8DFF}.");Diese Nachricht erfolg beim spawnen Doppelt.
Spawne ich den Spieler per Command bekommt er dies nur einmal.
Connectet er und spawnt danach wird diese Message zweimal ausgegeben.Folgende Message ist betroffen:
C
Alles anzeigenif(Haus[hausIDx][hHausMuell] >= 25) { SetPlayerHealth(playerid, 10); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll staut sich bis an die Decke. | Du spawnest mit wenig Leben {ED5400}(-90){8D8DFF}."); } if(Haus[hausIDx][hHausMuell] >= 20 && Haus[hausIDx][hHausMuell] < 25) { SetPlayerHealth(playerid, 25); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll verbreitet sich im ganzem Haus. | Du spawnest mit wenig Leben {ED5400}(-75){8D8DFF}."); } if(Haus[hausIDx][hHausMuell] >= 15 && Haus[hausIDx][hHausMuell] < 20) { SetPlayerHealth(playerid, 50); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll staut sich mehr und mehr. | Du spawnest mit wenig Leben {ED5400}(-50){8D8DFF}."); } if(Haus[hausIDx][hHausMuell] >= 10 && Haus[hausIDx][hHausMuell] < 15) { SetPlayerHealth(playerid, 75); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll liegt nur im Weg. | Du spawnest mit wenig Leben {ED5400}(-25){8D8DFF}."); } if(Haus[hausIDx][hHausMuell] >= 5 && Haus[hausIDx][hHausMuell] < 10) { SetPlayerHealth(playerid, 90); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll hält sich in Grenzen. | Du spawnest mit wenig Leben {ED5400}(-10){8D8DFF}."); }C
Alles anzeigenif(Spieler[playerid][pSpawnChange] == 0) // Zivilist { SetPlayerPos(playerid, 1715.1863, -1911.9978, 13.5665); SetPlayerFacingAngle(playerid, 89.8908); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); } else if(Spieler[playerid][pSpawnChange] == 1) // Fraktion { if(Spieler[playerid][pFraktion] == 0) { SetPlayerSkin(playerid, Spieler[playerid][pSkin]); SetPlayerPos(playerid, 1715.1863, -1911.9978, 13.5665); SetPlayerFacingAngle(playerid, 89.8908); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); Spieler[playerid][pSpawnChange] = 0; SendClientMessage(playerid, COLOR_WHITE, "Dein Spawn wurde auf den Zivilisten Spawn gesetzt."); } else { new playerFraktion = Spieler[playerid][pFraktion]; SetPlayerSkin(playerid, Spieler[playerid][pFrakSkin]); SetPlayerInterior(playerid, Frak[playerFraktion][spawnInterior]); SetPlayerVirtualWorld(playerid, Frak[playerFraktion][spawnVirtualWorld]); SetPlayerPos(playerid, Frak[playerFraktion][spawnX], Frak[playerFraktion][spawnY], Frak[playerFraktion][spawnZ]); SetPlayerFacingAngle(playerid, Frak[playerFraktion][spawnA]); } } else if(Spieler[playerid][pSpawnChange] == 2) // House { new hausIDx = Spieler[playerid][pHouseKey]; if(hausIDx != -255) { if(Haus[hausIDx][hCreated] == 1) { if(Haus[hausIDx][EnterX] != 0.0 && Haus[hausIDx][ExitX] != 0.0) { SetPlayerInterior(playerid, Haus[hausIDx][hInterior]); SetPlayerVirtualWorld(playerid, hausIDx); SetPlayerPos(playerid, Haus[hausIDx][ExitX], Haus[hausIDx][ExitY], Haus[hausIDx][ExitZ]); Haus[hausIDx][hHausMuell]++; if(Haus[hausIDx][hHausMuell] >= 25) { SetPlayerHealth(playerid, 10); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll staut sich bis an die Decke. | Du spawnest mit wenig Leben {ED5400}(-90){8D8DFF}."); } if(Haus[hausIDx][hHausMuell] >= 20 && Haus[hausIDx][hHausMuell] < 25) { SetPlayerHealth(playerid, 25); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll verbreitet sich im ganzem Haus. | Du spawnest mit wenig Leben {ED5400}(-75){8D8DFF}."); } if(Haus[hausIDx][hHausMuell] >= 15 && Haus[hausIDx][hHausMuell] < 20) { SetPlayerHealth(playerid, 50); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll staut sich mehr und mehr. | Du spawnest mit wenig Leben {ED5400}(-50){8D8DFF}."); } if(Haus[hausIDx][hHausMuell] >= 10 && Haus[hausIDx][hHausMuell] < 15) { SetPlayerHealth(playerid, 75); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll liegt nur im Weg. | Du spawnest mit wenig Leben {ED5400}(-25){8D8DFF}."); } if(Haus[hausIDx][hHausMuell] >= 5 && Haus[hausIDx][hHausMuell] < 10) { SetPlayerHealth(playerid, 90); SendClientMessage(playerid, COLOR_WHITE, "{8D8DFF}Der Müll hält sich in Grenzen. | Du spawnest mit wenig Leben {ED5400}(-10){8D8DFF}."); } switch(Spieler[playerid][pFraktion]) { case 0: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 1: SetPlayerSkin(playerid, Spieler[playerid][pFrakSkin]); case 2: { SetPlayerSkin(playerid, Spieler[playerid][pFrakSkin]); SetPlayerColor(playerid, LSPD_DUTY); } case 3: SetPlayerSkin(playerid, Spieler[playerid][pFrakSkin]); case 4: SetPlayerSkin(playerid, Spieler[playerid][pFrakSkin]); case 5: { SetPlayerSkin(playerid, Spieler[playerid][pFrakSkin]); SetPlayerColor(playerid, SANI_DUTY); } case 6: { SetPlayerSkin(playerid, Spieler[playerid][pFrakSkin]); SetPlayerColor(playerid, OAMT_DUTY); } case 7: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 8: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 9: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 10: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 11: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 12: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 13: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 14: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 15: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 16: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); case 17: SetPlayerSkin(playerid, Spieler[playerid][pSkin]); } return 1; } else { Spieler[playerid][pSpawnChange] = 1; SpawnPlayerEx(playerid); } } else { Spieler[playerid][pSpawnChange] = 1; SpawnPlayerEx(playerid); } } else { Spieler[playerid][pSpawnChange] = 1; SpawnPlayerEx(playerid); } } -
Abgesehen davon, dass dein Code nur so vor Redundanz und Unübersichtlichkeit strotzt, liegt der Fehler vermutlich daran, dass du einfach 2x gespawnt wirst.
Nach OnPlayerRequestClass wird er vermutlich gespawnt, das musst du abfangen, damit das nicht 2x aufgerufen wird.
-
Hab das mal bei OnPlayerSpawn deaktiviert.
Bei OnPlayerRequestClass liegt es daran nicht habe mir das eben angeschaut.
E:
Habe die ganzen spawns mal deaktiviert und neu gestartet es bleibt trotz allem gleich.
-
Moin!
Ich habe in meinem Geldsystem Tausendertrennpunkte. Ist es irgendwie möglich, den Tausendertrennpunkt erst dann anzeigen z lassen, wenn es wirklich 1.000 sind? Momentan sieht es so aus bei zb. -100: wenn ich jemand Geld wegnehme: Spieler xy hat dir -.100 Euro gegeben.
MfG
Edit: So sind die Tausenderpunte definiert:
-
So sind die Tausenderpunte definiert:
Schreibs mal so:
-
-
Danke, hat geklappt.
Edit: Wie kann ich ein Dynamic3DTextLabel an einem Fahrzeug attachen?
-
Es geht mit
Attach3DTextLabelToVehicle
Hier hast du ein Tutorial
https://forum.sa-mp.com/showthread.php?t=180264Ansonsten hier ganz viele Beispiele.
3DTextLabelToVehicle
Attach3DTextLabelToVehicle Problem
Attach3DTextLabelToVehicle problem -
Wir haben es mit 3DTextalbel versucht, jedoch wird dieses nach einem rejoin nicht mehr angezeigt.
-
Das ist doch das gleiche, Dynamic = Streamer
-
jedoch wird dieses nach einem rejoin nicht mehr angezeigt
Dann machst du irgendwas falsch.
Entweder du attachst es nochmal mit einer falschen id für den spieler oder du löschst es beim connect/disconnect.
Tatsache ist, dass es serverseitig gesteuert wird, somit hat reconnecten keinen Einfluss auf das Label

-
-
So wird es attached
Das hilft mir nicht.
Wichtig wäre, wann es verwendet wird...und ob es noch andere Funktionen gibt, die das Label beeinflussen.
-
Code
Alles anzeigenocmd:fk(playerid,params[]) { new vehicleid = GetPlayerVehicleID(playerid); new string[200],fk[50]; if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendErrorMessage(playerid,"Du bist nicht der Fahrer eines Fahrzeuges"); if(sscanf(params,"s[50]",fk))return SendInfoMessage(playerid,"/fk [Kennung]"); format(VehicleInfo[vehicleid][KennungZahl],50,"%s",fk); format(string,sizeof(string),"%s-%s",VehicleInfo[vehicleid][Kennung],VehicleInfo[vehicleid][KennungZahl]); Update3DTextLabelText(VehicleInfo[vehicleid][KennungObj], WEISS, string); return 1; }Edit: Sobald man sich ausloggt, wird die Kennung destroyed
-
wird die Kennung destroyed
Ja...wie vermutet.
Dann musst du diese wieder beim connecten erstellen

Oder hoffst du da irgendwie auf Black-Magic?

-
Die TextLabels werden im Script nirgends destroyed sondern nur wenn der Spieler sich ausloggt aus irgend einem Grund. Die TextLabels sollen immer da bleiben auch wenn man sich ausloggt.
-