Beiträge von Campbell

    Aber es ist ja auch unpraktisch/unreal, wenn man keinen Motor mehr anmachen kann? In Reallife kann man auch tanken und wegfahren.

    Es ist ein unrealistisches Feature, das aus einer unrealistischen Bedingung folgt. Aus diesem Grund wurde extra nochmals nachgefragt.



    Ich werde mich ma Dran Versuchen kann ich falls ich fragen habe mich an dich wenden ?

    Jep.

    Du meinst, dass nie etwas passiert. Na dann überprüfe doch mal, ob der entsprechende Teil in OnDialogResponse() überhaupt aufgerufen wird. Teste, ob deine DialogID richtig ist und falls sie das ist, dann überprüfe per Ausgaben, wo dein Script hängen bleibt. Stichwort: Debugging.

    • Erstelle ein simples Tanksystem, wie es auch generell erstellt wird.
    • Erstelle einen Array, der alle Autos umfasst (MAX_VEHICLES) und zweidimensional ist.
    • Sobald das Auto aufgetankt wird, setzt du den Parameter für das Auto im Array, damit dieses Auto nicht mehr anspringen wird, solange nicht bezahlt wird (Voraussetzung: Zum Tanken muss der Motor aus sein - realistisch).
    • Sobald der entsprechende Betrag im Interior bezahlt wurde wir der Parameter wieder zurückgesetzt und das Auto kann wieder anspringen.

    Ein Timer hier zu verwenden ist wiedermal unpraktisch/unnötig. Das Ganze ist natürlich stark ausbaubar, je nachdem wie realistisch und genau es sein sollte. Zum Beispiel könnte man die Koordinaten des Tankdeckels von jedem Auto erfassen und einen Checkpoint am Tank erstellen, an dem man dann tanken kann etc.

    Es ist empfehlenswert die Player-Textdraws bereits in OnPlayerConnect() zu laden und sie dann nur noch in OnPlayerSpawn() anzuzeigen.
    Um das Problem zu lösen würde ich dir einfaches debugging empfehlen. Schließe zB. einfach mal die bekannten und benötigten Textdraws aus und lasse sie nicht anzeigen bzw. gehe alle Textdraws durch, die du irgendwann einmal einblendest. Evt. findest du dann den Grund für das Problem. Weiter kann ich dir nicht helfen, da ich deinen kompletten Quellcode nicht kenne.

    natives sind soweit ich weiß keine Funktionen, die man zum SCripten anwenden kann ^^ korrigiert mich, wenn ich falsch liege


    Ich stimme nicht komplett zu:


    Zitat

    The only means that a pawn program has to manipulate objects in the host application is by calling subroutines, so called “native functions”, that the host application provides.

    Quelle: http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf


    Zitat

    [...] is a part of source code within a larger computer program that performs a specific task and is relatively independent of the remaining code.

    Quelle: http://en.wikipedia.org/wiki/Subroutine




    Ich habe die neuste samp version zum scripten aber wenn ich was von den neuen sachen amwenden möchte bekomme ich ausgegeben das es eine Unbekannte Funktion ist.
    Wo muss ich diese Natives eintragen oder wie mache ich es das es geht ?


    Alle natives, die du benötigst sind bereits in a_samp.inc eingetragen. Du musst demnach nur diese Datei includen bzw. den Inhalt kopieren und im Kopfteil deines Quellcodes einfügen.

    dennoch ist das egal der streamer lädt die objekte trotzdem


    Das würde ich so nicht so unterschreiben. Der Plugin entspricht nicht dem, was das Include vor hat. Wenn sich also irgendetwas verändert hat, wodurch es nun zu einem unerwartetem Ereignis kommen kann wäre dies sub-optimal (das muss nicht immer direkt auf den ersten Blick sichbar sein). Also würde ich mich darum bemühen auch diese Warnung zu entfernen. Es ist ja nicht umsonst eine Warnung.

    Eine Möglichkeit etwas 'abzubrechen' ist mir nicht bekannt. Soweit ich weiß ist nur durch Validierung der Rückgabe möglich, einen Teil nicht ausführen zu lassen. Du musst dir das ja so vorstellen, dass das Script von oben nach unten arbeitet. Demnach muss auch dein Befehl irgendwann etwas zurückgeben, damit es an anderer Stelle weitergeht. Ob ein 'Abbrechen' dann überhaupt sinnvoll ist, ist fraglich.

    Meist entspricht es immer dem gleichen Format. Player am Anfang der Funktion hinzufügen und die PlayerID als ersten Parameter ergänzen (Ausnahme: CreatePlayerTextDraw(playerid, ...)). Ebenfalls muss das Ganze unter OnPlayerConnect() verwendet werden. Demnach:



    new PlayerText:Death2;
    new PlayerText:Kills2;


    public OnPlayerConnect(playerid) {
    Death2 = CreatePlayerTextDraw(playerid, 401.000000, 391.000000, "0"); // Tode Anzahl
    PlayerTextDrawBackgroundColor(playerid, Death2, 255);
    PlayerTextDrawFont(playerid, Death2, 3);
    PlayerTextDrawLetterSize(playerid, Death2, 0.659999, 1.600000);
    PlayerTextDrawColor(playerid, Death2, 7864575);
    PlayerTextDrawSetOutline(playerid, Death2, 0);
    PlayerTextDrawSetProportional(playerid, Death2, 1);
    PlayerTextDrawSetShadow(playerid, Death2, 1);


    Kills2 = CreatePlayerTextDraw(playerid, 221.000000, 391.000000, "0"); // Morde Anzahl
    PlayerTextDrawBackgroundColor(playerid, Kills2, 255);
    PlayerTextDrawFont(playerid, Kills2, 3);
    PlayerTextDrawLetterSize(playerid, Kills2, 0.569999, 1.700000);
    PlayerTextDrawColor(playerid, Kills2, -1358954241);
    PlayerTextDrawSetOutline(playerid, Kills2, 0);
    PlayerTextDrawSetProportional(playerid, Kills2, 1);
    PlayerTextDrawSetShadow(playerid, Kills2, 1);
    }