Beiträge von Jeffry

    Kommt denn eine Meldung in der .exe wenn du den print direkt um die Erstellung setzt?


    printf("Vor Fahrzeuganzeige[playerid][2] = %d", _:Fahrzeuganzeige[playerid][2]);
    Fahrzeuganzeige[playerid][2] = CreatePlayerTextDraw(playerid,500.000000, 416.000000, "Ladevorgang...~n~");
    printf("Nach Fahrzeuganzeige[playerid][2] = %d", _:Fahrzeuganzeige[playerid][2]);

    Es ging nie um (syntaxisch) falschen Code sondern um vorgekauten Code - Code korrigieren OK.


    Mir ging es darum, und [GSR]Kaito-sensei offensichtlich auch. Ein falscher Code hilft nicht.


    Wie soll bspw. der Threadsteller wissen das man strings mit strcmp vergleicht, ja gibt auch andere wege aber seis drum, und nicht anders, wenn ihm jedesmal bei einem Problem der Code einfach hingeworfen wird ?


    Indem er im eigenen Code nachschaut. Wenn er weiß, bei seinem /lotto Befehl wird ihm eine Zahl zwischen 1 und 10 ausgegeben, und jetzt will er ein Pickup machen, mit dem er 20 verschiedene Werte an Geld bekommen kann, dann kann er den /lotto Befehl einfach kopieren und abändern, dabei lernt er mehr, als wenn er drei mal posten muss um am Ende erst den Code zu haben. Bekommt er es einmal richtig, muss er erst gar nicht mehr fragen.


    Gehr man in diesem Thread jetzt hin und sagt.
    (...)


    Das ist auch eine Möglichkeit, den Ansatz zu erklären. Das ist auch völlig in Ordnung, dagegen habe ich nie etwas gesagt. Es ging schlichtweg um den völlig falschen Code, der hier einfach nichts zu suchen hat. An dem gibt es auch nichts schön zu reden.
    Eine solche Erklärung ist ebenso gut wie ein funktionsfähiger Code. Man lernt am besten mit Beispielen oder mit Schritt-für-Schritt Erklärungen, je nach dem was einem besser liegt. Da spreche ich selbst aus Erfahrung, da ich so einigen in unserer Programmier-Klasse Dinge in 5 Minuten erklärt habe, was sie zuvor nach 3 Stunden vom Lehrer immer noch nicht kapiert haben.



    @Mr.Reese: Es geht nicht darum ob es im Wiki beschrieben ist oder nicht. Entweder man hilft so gut und so freundlich wie man kann, oder man lässt es. Die "Null-Bock-Stimmung" hat hier nichts zu suchen, rein gar nichts. Wenn es dir lästig ist zu helfen, dann lass es einfach. Es zwingt dich niemand. Aber wenn du es tust, dann bitte richtig.

    Zumeist findest du dort eher Ansätze - und wenn "komplette" Lösungen dann nur solche die sich an dem Problem orientieren.


    Das ist schon klar, es hat auch niemand behauptet, dass das immer der Fall ist (und warum sollte jemand ein Programm posten das nichts mit dem Problem zu tun hat??). Ein Ansatz reicht meistens völlig aus, aber nur dann wenn der auch funktioniert. Er muss ihm ja nicht gleich den ganzen Server scripten.
    Aber hier Random, das ist nicht der ganze Code, das ist ein Ansatz, nur, dass der Ansatz syntaktisch falsch ist und somit einem Hilfesuchenden nicht helfen wird. Wie gesagt, es braucht kein ganzes Programm, aber das was man postet sollte schon stimmen. Es geht nicht darum, wie viel man postet, sondern um die Korrektheit. Und ein syntaktisch falscher Code bleibt ein falscher Code, ob es jetzt ein Ansatz ist, oder ein ganzes Programm. Und wenn schon der Ansatz, das Fundament, falsch gelegt wird, dann wird der ganze Rest auch nichts. Der Ansatz ist das Wichtigste, wenn auch der falsch ist, wie im Beispiel hier, dann bringt es rein gar nichts, sondern schadet eher.


    @Mr.Reese: Du hast wohl noch immer nicht verstanden, dass es nicht darum geht demjenigen alles vorzukauen, sondern den hunderten, die den Thread danach sehen eine gescheite Lösung zu bieten, damit diese nicht jeder einzeln wieder einen Thread erstellt, nur weil sie immer wieder auf falsche, fehlerhafte oder komplett danebene Codes stoßen.
    Außerdem unterstellst du dem Threadstarter gerade, dass er keine Lust hat etwas selbst zu machen. Mit solchen Unterstellungen solltest du vorsichtig umgehen.



    Ein Code hat korrekt zu sein, ob es drei Zeilen sind, oder 300. Sonst bringt es nichts, weder für den Threadersteller, noch für alle anderen die den Thread irgendwann mal sehen.

    Falsche Information sind eine Sache und Codes die nicht "gehen" eine völlig andere Sache.


    Ein nicht funktionierender Code ist nunmal eine falsche Information. Ich weiß nicht was du daran siehst.
    Zu dem zu kopierenden Code: Siehe etwas weiter unten, das Beispiel mit dem SAP Forum. Dort findest du komplette, funktionsfähige, ABAPs. Und ja, das hilft mehr als ein Code der nicht geht, wenn man sich damit beschäftigt.


    Ich sehe es ehrlich gesagt nicht ein, jemandem eine komplette Lösung zu senden, nur weil andere eventuell den Fehler ebenfalls machen könnten.


    Bei allem Respekt, dann bis du hier einfach nur falsch am Platz. Wenn du es nicht einsiehst, jemandem korrekt zu helfen, dann helfe lieber gar nicht, das hilft mehr, da dadurch weniger falsche Informationen im Umlauf sind.
    Werfe doch nur mal einen Blick in andere Foren, die größer sind (zum Beispiel stackoverflow, oder eines welches ich geschäftlich oft zur Recherche und zum Lernen von neuen Dingen nutze, sap.scn.com. Dort wirst du weit und breit niemanden finden, der im wahrsten Sinne des Wortes "keinen Bock hat zu helfen", nur weil der Code kopiert werden könnte. Im Gegenteil! Dort findest du zum Teil komplette, funktionsfähige, Reports (Programme) die von Helfern gepostet worden sind.
    Es ist wesentlich leichter eine Sprache anhand von Beispielen zu lernen, als wenn man sich tot-googelt und nur auf falsche Informationen stößt. Und wenn man dann auch noch einen Thread eröffnet kommt einem einer daher der nicht einsieht eine funktionsfähige Lösung zu posten. Als Hilfesuchender gibt es nichts nervigeres als Leute die einem nicht gescheit helfen.



    Und zu meinem Beispiel: Dein Code ist syntaktisch falsch, das ist genau das Gegenteil von syntaktisch richtig, eben wie Links und Rechts. Wenn jemand nicht weiß wie es geht, hilft es ihm nichts, dass er sich den Rest ja denken kann.


    => Entweder man hilft richtig, oder man lässt es ganz.



    In diesem Sinne...

    Auch wenn der Thread bereits erledigt ist, aber bei dem was hier zum Teil gesagt wurde muss man erst mal eine Wand aufsuchen gegen die man rennen kann. :dash:


    Hier der Grund:

    P.s. seit wann geht das so 'if(language == "en")' wir sind in PAWN nicht PHP also mit strcmp :D
    (...)
    "Meine Meinung": Aber wenn man Hilft, sollte dies schon Ordentlich sein und nicht mit Platzhaltern überschüttet, wo sich der sogenannte Nobie beim Scripten garnicht mehr klar kommt.
    Nemmen wir mal das Beispiel, wenn man dir was falsches beibringt, bekommst du da auch irgendswann das Heulen, weil du es dir angewöhnt hast


    Du hast absolut Recht! Es bringt rein gar nichts wenn man falsche Informationen verteilt, nur damit der andere nachdenkt.
    Strings vergleicht man mit strcmp.
    if(!strcmp(sprache, "en"))


    Jeder Anfänger sollte in der Lage sein wenn alle stricke reißen bei Google einzugeben "pawn strings vergleichen"


    Und genau da haben wir das Problem, wenn die Leute hier anfangen, falsche Informationen bzw. Codes zu posten, die nicht gehen, nur damit man nachdenkt. Jetzt kommt ein Anfänger und ergoogelt sich genau diesen Thread, kopiert die Zeilen und fügt sie ein. Dann wird er/sie mit Errors zugemüllt, weil es nicht geht. Was macht er/sie also? Einen neuen Thread erstellen, und die gleiche Frage stellen. Wo ist denn da der Sinn bitte? Postet man es gleich richtig, muss erst gar kein zweiter Thread erstellt werden.
    Um eine Lösung finden zu können muss die Lösung auch korrekt dastehen. :thumbdown:


    Den Fehler habe ich absichtlich eingebaut, da ich im Threadersteller eine gewisse Affinitaet zum Copy and Paste erkenne und keine Eigeninitiative erkenne.


    :dash:
    Es sollte klar sein, dass auch andere, die nicht unbedingt hier posten diese Codes sehen und vielleicht ausprobieren. Dann geht der Code nicht, tolle Sache! Also absichtlich Fehler in den Code zu hauen ist sicher nicht der Sinn eines Forums in dem einem geholfen wird.




    Wenn euch jemand nach dem Weg fragt sagt ihr doch auch nicht absichtlich Links anstatt Rechts, nur damit der-/diejenige lernt sein/ihr Navi zu bedienen.

    Lass dir mal die ID des Textdraws ausgeben:
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);


    zu:
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter);
    printf("Fahrzeuganzeige[playerid][2] = %d", _:Fahrzeuganzeige[playerid][2]);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);


    Was wird da geprintet?

    Dann setze dort, wo sich der Spieler einloggt, also dort wo wie Daten geladen werden, danach das hier hin:
    PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], SpielerInfo[playerid][pSkin]);


    Du rufst wahrscheinlich den Teil des Textdraws erstellen vor dem einloggen auf, deshalb ist es immer 0.

    Wann wird der DriverCheck... immer aufgerufen? Hast du den schonmal debuggt?


    Und wenn du das neue Textdraw vor dem zur Zeit verbuggten erstellst?


    Tja, das frag mal Kye. Gut, generell sind Limits schon sinnvoll, da es dir sonst irgendwann alles zerlegt, wenn die Hardware nicht mehr mitmacht, aber ein bisschen mehr würde hier und da sicher nicht schaden.

    Also, soweit verstanden, ja?
    {2757.8887, 1223.3120, 2861.1313, 1383.1230, CTFx, CTFy, CTFz}



    Dann gehst du nochmal irgendwo in die Zone und machst /save, du bekommst das:
    AddPlayerClass(113,2800.0000,1300.0000,12.0000,324.0000,0,0,0,0,0,0);


    Dann wird die Klammer oben zu:
    {2757.8887, 1223.3120, 2861.1313, 1383.1230, 2800.0000,1300.0000,12.0000}


    Das fügst du dann bei FightSystem ein, und machst noch ein Komma an die vorherig letzte Zeile.

    Man müsste es für alle Funktionen des Plugins machen. Ob es den Aufwand wert ist bezweifle ich, ebenso ob es dann funktioniert, oder ob die zweite Verbindung auch irgendwann abbricht.


    Hast du schon ein anderes Plugin versucht? Es ist eigentlich nicht normal, dass die Verbindung abbricht bzw. tot ist. Das liegt nicht am Code, sondern eher am Plugin oder am MySQL Server selbst (in dem Fall solltest du bei deinem Host nachfragen).

    Daran wird es dann wohl nicht liegen, da du ja hier kein Textdraw versteckst.
    Es wird wohl relativ schwer herauszufinden, wo genau der Fehler liegt, wenn du es nicht genau reproduzieren kannst. Hast du es mal mit dem einen Textdraw versucht, welches du niemandem anzeigst? Ist zwar keine schöne Lösung, aber wenn es hilft...


    Als andere Möglichkeit bleibt dir wohl nur debuggen, aber auch das ist ziemlich schwer hier, und zeitaufwändig.

    Du könntest ja etwas mogeln. Wenn es nur genau ein Textdraw ist, das gebuggt ist, dann erstelle doch einfach bei OnGameModeInit ein letztes nach dem letzten, welches du niemandem anzeigst.


    Ansonsten poste doch mal den Code, der nach drei Sekunden aufgerufen wird.

    Viel davon ist falsch verschachtelt, das muss aber nicht unbedingt der Grund sein. Versuche es trotzdem mal so:
    public IsPlayerDriverTextDrawCheck()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i,"ImFahrzeug")==0)
    {
    if(IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    updatevehicleanzeigetimer[i] = SetTimerEx("UpdateVehicleAnzeigeTimer",250,true,"i",i);
    SetPVarInt(i,"ImFahrzeug",1);
    for(new r=0; r<MAX_FAHRZEUGANZEIGETEXT; r++)
    {
    TextDrawShowForPlayer(i,Fahrzeuganzeige[i][r]);
    }
    for(new s=0; s<MAX_VEHICLEANZEIGETEXT; s++)
    {
    TextDrawShowForPlayer(i,Vehicleanzeigetext[s]);
    }
    }
    }
    else if(GetPVarInt(i,"ImFahrzeug")==1)
    {
    if(!IsPlayerInAnyVehicle(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER)
    {
    SetPVarInt(i,"ImFahrzeug",0);
    for(new r=0; r<MAX_FAHRZEUGANZEIGETEXT; r++)
    {
    TextDrawHideForPlayer(i,Fahrzeuganzeige[i][r]);
    }
    for(new s=0; s<MAX_VEHICLEANZEIGETEXT; s++)
    {
    TextDrawHideForPlayer(i,Vehicleanzeigetext[s]);
    }
    KillTimer(updatevehicleanzeigetimer[i]);
    }
    }
    }
    return 1;
    }