Problim mit TextDrawShow

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
  • Hi


    Ich hab gemacht, dass wenn man in ein car einsteigt, IsInCar[playerid] = 1 is.
    Das hab ich halt ganz normal iwo im script gemacht:


    new IsInCar[MAX_PLAYERS] = 0;


    Dann hab ich bei UpdateTacho dass wenn IsInCar 1 is, dass dann der tacho gezeig wird, un wenn nit, dann wird der nit gezeigt.
    Jetzt hab ich aber das problem dass nur der erste der auf den server kommt (ID 0) den tacho sieht, die anderen die in ein car einsteigen iwie nicht.
    Woran kann das liegen?


    MFG, Mike

  • new IsInCar[MAX_PLAYERS]; nicht new IsInCar[MAX_PLAYERS] = 0;

  • Hi


    Hab nu ma das = 0; dahinter weggemacht, das problem tritt aber immernoch auf -.-
    Woran kann das liegen?
    Das is aber nit nur beim tach so, sondern auch beim spaw, to system usw.
    Kann mir einer helfen pls?^^


    MFG, Mike


    EDIT: Kann mir keiner helfen?
    Hier ma der abschnitt der für den tacho is^^:


    new IsInCar[MAX_PLAYERS];


    public OnPlayerEnterVehicle(playerid)
    {
    IsInCar[playerid] = 1;
    return 1;
    }


    public OnPlayerExitVehicle(playerid)
    {
    IsInCar[playerid] = 0;
    return 1;
    }


    public TachoUpdate(playerid)
    {
    new Float:x,Float:y,Float:z;

    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new vid = GetPlayerVehicleID(playerid);
    GetVehiclePos(vid, x, y, z);
    if(IsInCar[playerid] == 1)
    {
    .bla
    .muuuh
    .quak
    TextDrawSetString(Tacho2, TachoString2);
    TextDrawShowForPlayer(playerid, Tacho2);


    TextDrawSetString(Tacho,TachoString);
    TextDrawShowForPlayer(playerid, Tacho);


    TextDrawSetString(Tacho1,TachoString1);
    TextDrawShowForPlayer(playerid, Tacho1);

    TextDrawSetString(Tacho3,TachoString3);
    TextDrawShowForPlayer(playerid, Tacho3);

    TextDrawSetString(Tacho4,TachoString4);
    TextDrawShowForPlayer(playerid, Tacho4);
    . bla bla
    . bla bla
    . bla miau wuff
    return 1;
    }
    else
    {
    TextDrawHideForPlayer(playerid, Tacho);
    TextDrawHideForPlayer(playerid, Tacho1);
    TextDrawHideForPlayer(playerid, Tacho2);
    TextDrawHideForPlayer(playerid, Tacho3);
    TextDrawHideForPlayer(playerid, Tacho4);
    return 1;
    }
    }
    return 1;
    }


    So hab ich das^^
    Aber why funzt das nur bei SpielerID 0?
    Was kann das verursachen?
    Das TO sys, Spawn sys usw funzt auch nur bei SpielerID 0


    Pls help


    MFG, Mike

    Einmal editiert, zuletzt von Robdeflop ()

  • Hi


    Danke für die antwort.
    So verträumt wie ich bin hab ich vergessen i anstatt playerid zu schreiben :D
    Jez hab ichs ma richtig gemacht, das prob tritt aber immernoch auf.
    Muss ich dann vielleicht noch return i; machen oda so?


    MFG, Mike


    pls help :love:

    Einmal editiert, zuletzt von Robdeflop ()

  • Jez hab ichs ma richtig gemacht, das prob tritt aber immernoch auf.


    Öhm ne,wie Kavkus schon sagte ist das unlogisch,du hast das public mit playerid versehen machst aber ne vorschleife für alle spieler rein,hä? :D



    Also entweder du lässt es mit Playerid:

    Spoiler anzeigen


    public TachoUpdate(playerid)
    {
    new Float:x,Float:y,Float:z;
    new vid = GetPlayerVehicleID(playerid);
    GetVehiclePos(vid, x, y, z);
    if(IsInCar[playerid] == 1)
    {
    TextDrawSetString(Tacho2, TachoString2);
    TextDrawShowForPlayer(playerid, Tacho2);
    TextDrawSetString(Tacho,TachoString);
    TextDrawShowForPlayer(playerid, Tacho);
    TextDrawSetString(Tacho1,TachoString1);
    TextDrawShowForPlayer(playerid, Tacho1);
    TextDrawSetString(Tacho3,TachoString3);
    TextDrawShowForPlayer(playerid, Tacho3);
    TextDrawSetString(Tacho4,TachoString4);
    TextDrawShowForPlayer(playerid, Tacho4);
    return 1;
    }
    else
    {
    TextDrawHideForPlayer(playerid, Tacho);
    TextDrawHideForPlayer(playerid, Tacho1);
    TextDrawHideForPlayer(playerid, Tacho2);
    TextDrawHideForPlayer(playerid, Tacho3);
    TextDrawHideForPlayer(playerid, Tacho4);
    return 1;
    }
    return 1;
    }



    Oder machst es mit Forschleife,aber dann musst du forward etc ändern:

    Spoiler anzeigen

    //neues forward
    forward TachoUpdate();

    Spoiler anzeigen
    //irgendwo dann deine abfrage
    TachoUpdate();

    Spoiler anzeigen
    //public:
    public TachoUpdate()
    {
    new Float:x,Float:y,Float:z;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new vid = GetPlayerVehicleID(i);
    GetVehiclePos(vid, x, y, z);
    if(IsInCar[i] == 1)
    {
    TextDrawSetString(Tacho2, TachoString2);
    TextDrawShowForPlayer(i, Tacho2);
    TextDrawSetString(Tacho,TachoString);
    TextDrawShowForPlayer(i, Tacho);
    TextDrawSetString(Tacho1,TachoString1);
    TextDrawShowForPlayer(i, Tacho1);
    TextDrawSetString(Tacho3,TachoString3);
    TextDrawShowForPlayer(i, Tacho3);
    TextDrawSetString(Tacho4,TachoString4);
    TextDrawShowForPlayer(i, Tacho4);
    return 1;
    }
    else
    {
    TextDrawHideForPlayer(i, Tacho);
    TextDrawHideForPlayer(i, Tacho1);
    TextDrawHideForPlayer(i, Tacho2);
    TextDrawHideForPlayer(i, Tacho3);
    TextDrawHideForPlayer(i, Tacho4);
    return 1;
    }
    }
    return 1;
    }

  • Hi


    Ty, der tacho funzt bei jedem, aber jez hab ich n neues problem.
    jeder kann den tacho des anderen sehen, aber nur wenn man selber im car is. dann wechselt der tacho die ganze zeit hin und her.
    Ich hab jetzt auch ma n neuen timer gemacht, unter onplayerlogin:


    SetTimerEx("TachoUpdate",1000,1,"d",playerid);


    Ich hab den tacho mit playerid gemacht, also ich glaub das war die erste methode.
    Also die ohne die for schleife.


    MFG, Mike


    EDIT:


    Ich hab grad ma wieder nur SetTimer(bla) unter ongamemodeinit gemacht. Wenn ich dat da rein mache, dann sieht der tacho nur der erste spieler. Wenn ich SetTimerEx in onplayerlogin reinmache, dann sieht das jeder spieler, aber die anderen spieler sehen auch den tacho von den anderen. Warum? wie kann ich das ändern?


    MFG, Mike

    2 Mal editiert, zuletzt von Robdeflop ()