Scripting Hilfe/Compile Error

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
  • Hallo,


    ich möchte einen Befehl für FBI Agenten scripten, dass wenn sie /flash eingeben, ein 3DTextLabel an ihrem Auto erscheint, es sollte nicht mal ein FBI Auto sein, sondern sie sollten es an allen Autos machen können.
    Hier mein Befehl:
    if(strcmp(cmd, "/flash", true) == 0)
    {
    if(IsAFBI(playerid))
    {
    if(flashonoff[playerid]==0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    fbi1 = Create3DTextLabel("||| F.B.I. |||",0xFF000FFF,30.0,30.0,5.0,30.0,0);
    Attach3DTextLabelToVehicle(fbi1, vehicleid, 0.0, 0.0, 0.0);} <---------------------- WICHTIGE STELLE
    flashonoff[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist in keinem Fahrzeug!");
    }
    }
    else
    {
    Delete3DTextLabel(fbi1);
    flashonoff[playerid] = 0;
    }
    }
    return 1;
    }
    Die wichtige Stelle, die markiert ist, ist falsch, ich habe vehicleid hingeschrieben, aber damit soll gemeint sein, egal welches Auto.
    Beim Compilen bekomme ich deshalb diesen Error:

    Code
    C:\Users\Privat\Desktop\Script.pwn(25074) : error 017: undefined symbol "vehicleid"
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.


    Hoffentlich kann mir jemand helfen :rolleyes:


    //EDIT
    Also mit vehicleid ist das Auto gemeint, in dem man grade sitzt, egal welches.

  • if(strcmp(cmd, "/flash", true) == 0)
    {
    if(IsAFBI(playerid))
    {
    if(flashonoff[playerid]==0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID;
    fbi1 = Create3DTextLabel("||| F.B.I. |||",0xFF000FFF,30.0,30.0,5.0,30.0,0);
    Attach3DTextLabelToVehicle(fbi1, vehicleid, 0.0, 0.0, 0.0);} <---------------------- WICHTIGE STELLE
    flashonoff[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist in keinem Fahrzeug!");
    }
    }
    else
    {
    Delete3DTextLabel(fbi1);
    flashonoff[playerid] = 0;
    }
    }
    return 1;
    }


    So sollte es gehen.
    Problem war bei dir, dass vehicleid nicht definiert war.

  • Die "wichtige Stelle" beinhält eine Klammer zuviel.


    Attach3DTextLabelToVehicle(fbi1, vehicleid, 0.0, 0.0, 0.0);} <---------------------- WICHTIGE STELLE


    sollte ohne } sein.


    Edit: Bin extrem langsam ;)

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Jo, jetzt habe ich wieder einen neuen Error wegen dem Befehl.
    Diesmal wieder in deiner neuen Reiher mit new vehicleid:
    C:\Users\Privat\Desktop\Script.pwn(25072) : error 076: syntax error in the expression, or invalid function call


    //EDIT
    Habs selbst gefixt ^^
    Das heißt ja eigentlich
    GetPlayerVehicleID(playerid)

  • Habe jetzt den Befehl etwas modifiziert (also das die Fahrschule ihn auch nutzen kann).


    Beim Compilen bekomme ich 0 Errors und 0 Warnings, aber InGame scheint es nicht richtig zu funktionieren.


    Ich setze mich in ein Auto als FBI Agent, mache /flash an, es blinkt FBI rot-blau, ich mache es wieder aus (nochmal /flash) und es ist aus.


    Dann mache ich mich zum Test zum Fahrschul-Lehrer setze mich wieder in das Auto und mache noch einmal /flash, jetzt blinkt "Fahrschule - Nicht stören!" aber zwischendurch blinkt plötzlich die FBI Schrift ?(


    Hier mal alles was mit /flash zu tun hat:


    Der Command selbst:


    if(strcmp(cmd, "/flash", true) == 0)


    {


    if(IsAFBI(playerid) || IsAFS(playerid))


    {


    if(IsPlayerInAnyVehicle(playerid))


    {


    if(IsAFBI(playerid))


    {


    if(flashonoff[playerid]==0)


    {


    new autofbi = GetPlayerVehicleID(playerid);


    fbi1 = Create3DTextLabel("||| F.B.I. |||",0xFF000FFF,30.0,30.0,5.0,30.0,0);


    Attach3DTextLabelToVehicle(fbi1, autofbi, 0.0, 0.0, 0.0);


    flashonoff[playerid] = 1;


    }


    else


    {


    Delete3DTextLabel(fbi1);


    flashonoff[playerid] = 0;


    }


    }


    else if(IsAFS(playerid))


    {


    if(flashonofffs[playerid]==0)


    {


    new autofs = GetPlayerVehicleID(playerid);


    fs1 = Create3DTextLabel("Fahrschule\r\n||||||||||\r\nNicht stören!",0xFFFFFFFF,30.0,30.0,5.0,30.0,0);


    Attach3DTextLabelToVehicle(fs1, autofs, 0.0, 0.0, 0.0);


    flashonofffs[playerid] = 1;


    }


    else


    {


    Delete3DTextLabel(fs1);


    flashonofffs[playerid] = 0;


    }


    }


    }


    else


    {


    SendClientMessage(playerid, COLOR_GREY, "Du bist in keinem Fahrzeug!");


    }


    }


    return 1;


    }


    Ein paar Definierungen:


    new flashonoff[MAX_PLAYERS];


    new flashonofffs[MAX_PLAYERS];


    new Text3D:fbi1;


    new Text3D:fs1;


    new checkfarben = 0;


    new checkfarbenfs = 0;


    forward Check();


    forward Checkfs();


    Die zwei Publics:


    public Check()


    {


    if(checkfarben == 0){


    Update3DTextLabelText(fbi1,0xFF000FFF,"||| F.B.I. |||"); checkfarben = 1;}


    else if(checkfarben == 1){


    Update3DTextLabelText(fbi1,0x0000CDFF,"||| F.B.I. |||"); checkfarben = 0; }


    }




    public Checkfs()


    {


    if(checkfarbenfs == 0){


    Update3DTextLabelText(fs1,0xFFFFFFFF,"Fahrschule\r\n||||||||||\r\nNicht stören!"); checkfarbenfs = 1;}


    else if(checkfarbenfs == 1){


    Update3DTextLabelText(fs1,0xFFFACDFF,"Fahrschule\r\n||||||||||\r\nNicht stören!"); checkfarbenfs = 0; }


    }


    Und die beiden Timer:


    SetTimer("Check",1000,1);


    SetTimer("Checkfs",1000,1);


    Vielleicht hab ich ja irgendwas falsch gemacht ;)


    Kann mir jemand helfen?


    Edit: Rechtschreibung