3DTextLabel

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
  • stock CreateLanguage3DTextLabel(const textDE[], const textEN[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0)
    {
    if(pInfo[playerid][Language] == LANGUAGE_DE) CreateDynamic3DTextLabel(const textDE, color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0); //ERROR LINE
    if(pInfo[playerid][Language] == LANGUAGE_EN) CreateDynamic3DTextLabel(const textEN, color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
    return 1;
    }


    public OnGameModeInit()
    {
    CreateLanguage3DTextLabel("Teleport/LS", "Teleport/LS", C_GREEN, 2492.7268, -1668.3849, 13.3438, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    CreateLanguage3DTextLabel("Teleport/bank1", "Teleport/bank1", C_GREEN, 1829.2714, -1857.4872, 13.5781, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    CreateLanguage3DTextLabel("Teleport/bank2", "Teleport/bank2", C_GREEN, 1337.5677, -877.6535, 39.2728, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    CreateLanguage3DTextLabel("Teleport/LSA", "Teleport/LSA", C_GREEN, 1970.4192, -2191.8933, 13.5469, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    CreateLanguage3DTextLabel("Teleport/AmmuLS", "Teleport/AmmuLS", C_GREEN, 1361.9564, -1271.2209, 13.3828, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    CreateLanguage3DTextLabel("Teleport/beach", "Teleport/beach", C_GREEN, 490.5515, -1792.1855, 6.0625, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    CreateLanguage3DTextLabel("Teleport/SF", "Teleport/SF", C_GREEN, -1966.7802, 102.6690, 27.6875, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    CreateLanguage3DTextLabel("Teleport/LV", "Teleport/LV", C_GREEN, 2116.2957, 1233.1813, 10.8203, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    CreateLanguage3DTextLabel("Teleport/Chilliad", "Teleport/Chilliad", C_GREEN, -2238.9377, -1748.1625, 480.8718, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 20.0);
    return LABEL_OnGameModeInit();
    }


    forward LABEL_OnGameModeInit();
    #if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
    #else
    #define _ALS_OnGameModeInit
    #endif
    #define OnGameModeInit LABEL_OnGameModeInit


    error 029: invalid expression, assumed zero
    warning 215: expression has no effect
    warning 215: expression has no effect
    warning 215: expression has no effect
    warning 215: expression has no effect
    warning 215: expression has no effect
    warning 215: expression has no effect
    error 001: expected token: ";", but found ")"
    error 029: invalid expression, assumed zero
    fatal error 107: too many error messages on one line


    Die Errors treten alle in der Zeile der ersten if Abfrage der stock Funktion auf.

  • Hast Du Dir überhaupt mal deine Codezeilen wirklich angeschaut?
    CreateDynamic3DTextLabel(const textDE, color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0); //ERROR LINE
    Du darfst als Parameter nur den Wert angeben, nicht den Datentyp, den Namen und sonstige Schlüsselwörter.


    //E: ich kann mich entsinnen, dass Du das gleiche schon mal gepostet hast.
    //E²: stock Funktion
    Wäre ganz toll, wenn Du Dir auch mal Hilfestellungen merken würdest. :whistling:

  • Schreibe die Funktion so:


    stock CreateLanguage3DTextLabel(const textDE[], const textEN[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0)
    {
    if(pInfo[playerid][Language] == LANGUAGE_DE) CreateDynamic3DTextLabel(textDE, color, x, y, z, drawdistance, attachedplayer, attachedvehicle, testlos, worldid, interiorid, playerid, streamdistance);
    else if(pInfo[playerid][Language] == LANGUAGE_EN) CreateDynamic3DTextLabel(textEN, color, x, y, z, drawdistance, attachedplayer, attachedvehicle, testlos, worldid, interiorid, playerid, streamdistance);
    return 1;
    }


    Lerne den Unterschied zwischen Attributen und Parametern :rolleyes:


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Wollte eigentlich, dass er da selbst drauf kommt, nachdem der mit dem gleichen Problem das letzte Mal schon mal im Breadfish aufgetaucht ist und anscheinend nichts gelern hat. :whistling:

  • So, erstmal ein Danke für eure (erneute) Mühe. :whistling:
    Ja, das Problem hatte ich schon mal. Da habe ich die Funktion schon verbessert, kompiliert hat alles. Ich hab nur außer Acht gelassen, dass eh keine Errors angezeigt werden, wenn man eine stock Funktion nicht benutzt.
    Desweiteren hab ich gedacht, dass es sich bloß um den string handelt, also text[], bzw die eckigen Klammern darin.
    Ich hätte allerdings noch eine Frage:
    stock CreateLanguage3DTextLabel(const textDE[], const textEN[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0)
    {
    if(pInfo[playerid][Language] == LANGUAGE_DE) CreateDynamic3DTextLabel(textDE, color, x, y, z, drawdistance, attachedplayer, attachedvehicle, testlos, worldid, interiorid, playerid, streamdistance);
    else if(pInfo[playerid][Language] == LANGUAGE_EN) CreateDynamic3DTextLabel(textEN, color, x, y, z, drawdistance, attachedplayer, attachedvehicle, testlos, worldid, interiorid, playerid, streamdistance);
    return 1;
    }
    Wieso lässt sich innerhalb der Funktion den Datentyp "Float:" weglassen, während man "[]" weglassen muss?
    Und zusätzlich könntet ihr mich bitte über den Unterschied, zwischen Parametern und Datentypen aufklären, bzw. wo man sie jeweils gebraucht.


    EDIT: Es kompiliert zwar, aber es zerschießt mir den Gamemode (Gamemode: Unknown).

  • Wieso lässt sich innerhalb der Funktion den Datentyp "Float:" weglassen, während man "[]" weglassen muss?


    Meinst Du bei dieser Zeile?
    if(pInfo[playerid][Language] == LANGUAGE_DE) CreateDynamic3DTextLabel(textDE, color, x, y, z, drawdistance, attachedplayer, attachedvehicle, testlos, worldid, interiorid, playerid, streamdistance);


    Wenn ja: Weil das nicht die Funktionsdefinition ist. Informatonen zu den Parametern, wie Datentyp und Name, werden nur in der Funktionsdefinition definiert (stock, public, ...).


    Und zusätzlich könntet ihr mich bitte über den Unterschied, zwischen Parametern und Datentypen aufklären, bzw. wo man sie jeweils gebraucht.


    Funktionen kann man Parameter mitgeben, das sind nichts Anderes, als Variablen. Diese Parameter sind nur innerhalb der Funktion gültig und dienen lediglich der Informationsübergabe an die Funktion.
    Beispiel:
    public FunktionsName(bool:ignorecase){
    if(ignorecase == true){
    print("ignorecase ist eingeschaltet");
    }else{
    print("ignorecase ist ausgeschaltet");
    }
    }
    Das gleiche Beispiel gilt btw. auch für Funktionen, welche ein "stock" vorangestellt erhalten.


    Mit diesem Beispiel kommen wir auch zu den Datentypen. Der Datentyp in dem Beispiel ist "boolean".
    Boolean ist ein Datentyp, der nur zwei Zustände speichern kann: wahr oder falsch / true oder false.


    Datentypen sind lediglich die Information, wieviele Bytes im Arbeitsspeicher (RAM) für Variablen reserviert werden.
    Jeder Datentyp speichert andere Informationen, also brauchen sie auch dementsprechend mehr oder weniger Speicher.

  • Vielen Dank für die Erklärung, Reese! Ich denk mal spätestens jetzt hab ich was dazu gelernt, insbesondere im Bezug darauf, was ich bei der genannten Errormeldung zu tun habe.


    Ich hab meinen vorigen Post schon editiert, bzgl des neuen Problems: alles kompiliert ohne Probleme. Wenn ich jedoch den Server starte, wird mir im Client "Gamemode: Unknown" angezeigt. Wenn ich die Label exkludiere, funktioniert alles wieder.


    Weißt du oder igendjemand da weiter?


  • ----------
    Loaded log file: "server_log.txt".
    ----------


    SA-MP Dedicated Server
    ----------------------
    v0.3z-R2, (C)2005-2014 SA-MP Team


    [17:49:06]
    [17:49:06] Server Plugins
    [17:49:06] --------------
    [17:49:06] Loading plugin: fixes2
    [17:49:06]


    [17:49:06] ===============================


    [17:49:06] fixes plugin loaded.


    [17:49:06] (c) 2012 Alex "Y_Less" Cole


    [17:49:06] ===============================


    [17:49:06] Loaded.
    [17:49:06] Loading plugin: sscanf
    [17:49:06]


    [17:49:06] ===============================


    [17:49:06] sscanf plugin loaded.


    [17:49:06] Version: 2.8.1


    [17:49:06] (c) 2012 Alex "Y_Less" Cole


    [17:49:06] ===============================


    [17:49:06] Loaded.
    [17:49:06] Loading plugin: streamer
    [17:49:06]


    *** Streamer Plugin v2.6.1 by Incognito loaded ***


    [17:49:06] Loaded.
    [17:49:06] Loading plugin: Whirlpool
    [17:49:06]
    [17:49:06] ==================
    [17:49:06]
    [17:49:06] Whirlpool loaded
    [17:49:06]
    [17:49:06] ==================
    [17:49:06]
    [17:49:06] Loaded.
    [17:49:06] Loading plugin: iTD
    [17:49:06]
    * iTD Plugin loaded. (Support for textdraw editor mouse/keyboard)


    [17:49:06] Loaded.
    [17:49:06] Loaded 5 plugins.


    [17:49:06]
    [17:49:06] Filterscripts
    [17:49:06] ---------------
    [17:49:06] Loading filterscript 'iTD.amx'...
    [17:49:06]
    iPLEOMAX's TextDraw Editor loaded successfully!
    Version: 1.16 Stable (13/10/2012)


    [17:49:06] Loaded 1 filterscripts.


    [17:49:06]
    [17:49:06]
    [17:49:06]
    [17:49:06] =======================================
    [17:49:06] | |
    [17:49:06] | YSI version 3.09.0684 |
    [17:49:06] | By Alex "Y_Less" Cole |
    [17:49:06] | |
    [17:49:06] =======================================
    [17:49:06]
    [17:49:06]
    [17:49:06]
    [17:49:06] +-------------------+
    [17:49:06] | SAN ANDREAS ARENA |
    [17:49:06] | (c) by Manyula |
    [17:49:06] +-------------------+
    [17:49:06] Number of vehicle models: 0



    EDIT: Also, in der Serverlog finde ich nichts.
    Wie dir/euch bestimmt schon aufgefallen ist, hab ich die Label in eine extra include gepackt und OnGameModeInit() gehooked. Jetzt hab ich mal versucht sie direkt in das Script zu implementieren. Dann wird mir zwar kein Unknown Gamemode mehr angezeigt, aber die Label erschienen ingame nicht.

    Einmal editiert, zuletzt von Manyula ()