Beiträge von 4#Future

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
    Zitat

    eben hieß es ich soll nen timer da rein machen.. soll der nur aus der schleife raus?


    Nein, nicht der Timer gehört in die Schleife,
    sondern die Deklaration des TextDraws.


    Das war's, was man Dir damit ausgedrücken wollte.

    Wenn Du es sekündlich erneuern willst, suchst
    Du Dir entweder eine Funktion, die sekündlich
    eneuert wird und schreibst Dir einfach eine.


    Dann den kleinen Codeschnippsel von mir
    einpassen und schon funktioniert's.


    SetPlayerColor(playerid, 0xFF0000FF);
    Auch diese Funktion hilft Dir, da sie die
    Farbe des Spielers auf dem Radar editieren kann.


    Nachzulesen auf: SAMP Wiki

    BOMBER


    Wenn Du jemand helfen willst, musst Du es wesentlich
    allgemeiner halten, da der jenige sonst jede Menge
    Fehlernachrichte erhalten würde.


    In Deinem Falle ist SpielerName und die Farbe Rot
    nirgends deklariert. Bei Dir im Script vielleicht, aber nicht
    bei dem, der es braucht.


    Nur mal als kleiner Tipp. ;)

    public OnPlayerDeath(playerid, killerid, reason)
    {
    new string[255], plname[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME];

    GetPlayerName(playerid, plname, sizeof(plname));
    GetPlayerName(killerid, sendername, sizeof(sendername));

    format(string, sizeof(string), "Du hast %s getötet. (+2000 Dollar)", sendername);
    SendClientMessage(playerid, 0xFFFFFFFF, string);
    GivePlayerMoney(playerid, 2000);

    format(string, sizeof(string), "Du wurdest von %s getötet. (-2000 Dollar)", plname);
    SendClientMessage(killerid, 0xFFFFFFFF, string);
    GivePlayerMoney(killerid, -2000);
    return 1;
    }
    Dann kannst Du alles weitere noch hinzufügen.


    Ganz simpel...

    Erstmal musst Du den gesamten TextDraw,
    für jeder Spieler seperat deklarieren, wie ich
    es Dir vorhinst bereits geschrieben hatte.


    In der Funktion OnGameModeInit() fügst Du vor
    Deinem TextDraw folgendes hinzu:


    public OnGameModeInit()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    zustand[i] = TextDrawCreate(90.000000, 316.000000, "Zustand: 0000 HP");

    ...
    }
    return 1;
    }
    Dann noch Deinen Timer, der Deine Funktion,
    die den Status des Fahrzeugs aktualisiert, erstellen.


    Eigentlich ganz simpel.


    Im Forum gibts auch Tutorials, für das Erstellen eines Tachos.

    Ohje, ohje...


    Erstelle innerhalb der Funktion OnGameModeInit()
    bitte einen Timer, der sekündlich Deine Funktion
    wiederholt, die den Zustand des Fahrzeugs erneuert.


    Innerhalb der Funktion, die den Zustand erneuert,
    musst Du dann Deinen TextDrawSetString() verwenden.


    Dann wird der TextDraw sekündlich erneuert.

    KEKS


    Hard_Base, hat bereits das richtige gemeint,
    sich aber verdammt falsch ausgedrückt.


    Das der TextDraw auch funktioniert, musst Du
    diesen für jeden Spieler seperat deklarieren.


    Um's einfacher auszudrücken:


    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    zustand[i] = TextDrawCreate(90.000000, 316.000000, "Zustand: 0000 HP");

    ...
    }
    Achja, Du solltest natürlich auch nicht vergessen, das der
    TextDraw sekündlich für den Spieler erneuert werden muss.


    Denn global festgelegt, würde er für alle das selbe anzeigen,
    oder unter Umständen, wenn zwei zugleich fahren, nichts anzeigen.


    Ist zwar richtig, aber nicht die Ursache des Problems.
    Einmal richtig hinschauen, dann sieht man den Fehler sofort.


    So ist's richtig:


    public Tacho()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInAnyVehicle(i))
    {
    new str[10], Float:vHealth;
    GetVehicleHealth(GetPlayerVehicleID(i), vHealth);
    format(str, sizeof(str), "%f", vHealth);
    TextDrawSetString(zustand, str);
    }
    }
    }
    return 1;
    }
    Nichts für Ungut, aber vom Titel "Script-Lehrer" erwartet man mehr.

    Erklär mir mal, warum Du folgenden Code verwendest?


    autotimer[playerid]=SetTimerEx("drawtimer",1000,0,"i",playerid);
    Der Timer, drawtimer bezieht sich doch bereits auf die
    Spieler ID. Weshalb deklarierst Du den Timer also doppelt?


    Deine Timer Funktion sollte wie folgt beginnen:


    public drawtimer(playerid)
    {
    ...
    Das ist zwar nicht Dein Problem, aber fixen solltest Du das auch mal.



    Hat sich schon geklärt, hatte mich verlesen. Entschudigung!


    Schönen guten Tag an alle Leser!


    Nach mehrmaligen Nachrichten, die mir die letzten Tage gestellt
    wurden, habe ich mal schnell ein ganz simplen Code gebastelt,
    mit dem ihr Euer Auto im Spielt mit Tasten starten und stoppen könnt.



    ›› Installation


    Code
    - MotorEngine.pwn herunterladen
    - Datei kopieren und im Ordner Filterscripts einfügen
    - server.cfg öffnen und bei Filterscripts einfach MotorEngine (ohne Dateiendung) hinzufügen


    ›› Verwendung im Spiel


    Code
    - einfach ins Auto setzen (als Fahrer natürlich)
    - Du kannst nicht losfahren, solange der Motor ausgeschaltet ist
    - drücke einfach die <ALT> Taste und der Motor versucht zu starten
    - ist es Dir nachts zu dunkel, einfach die <L-STRG> nutzen, um das Licht anzuschalten


    ›› Besonderheiten


    Du musst Dein Fahrzeug nicht immer wieder anschalten,
    wenn Du ausgestiegen bist oder das Spiel verlassen hast.


    Fahren bleiben solange an, bis sie ausgeschalten werden oder
    der Server neugestartet wird bzw. das Filterscript neugeladen wird.


    Das gildet ebenso für's Licht, wobei es am Tag automatisch aus geht.


    Mit dem Kommando /fsinfo erhaltet Ihr eine Info vom Ersteller.


    ›› Fazit, Hinweise & Credits


    Super einfach zu benutzen und sehr leicht in der Handhabung.


    Ich verbitte mir Beiträge, die aussagen, dass es solche Codes
    schon gegeben hat oder es eigentlich zu einfach wäre für den Showroom.


    Ich antworte auf einige persönliche Bitten, allerdings für jederman.



    Der Codeschnipsel kann gern editiert oder kopiert werden,
    solange der Hinweis zum Ersteller keines Falls entfernt wird.



    ›› Test & Download


    - Link zum privaten Server


    Pastebin Link: hier klicken
    IP Adresse zum Testserver: 4future-web.de:7777



    Freundliche Grüße


    4#Future | Fake - Philip

    Guten Tag!


    Da ziehts einen fast die Schuhe aus.


    Aber ohne weitere Kommentare von mir,
    fügst Du es einfach folgendermaßen ein:


    if(strcmp("/duty", cmdtext, true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 2.0, 217.3575, 184.1517, 1003.0313))
    {
    new string[255], plname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, plname, sizeof(plname));

    if(duty[playerid])
    {
    if(isPlayerInFrakt(playerid, 1))
    {
    format(string, sizeof(string), "Polizist %s nimmt seine Waffe und seine Marke aus dem Spint und beginnt den Dinst!", plname);
    SendClientMessage(playerid, Grau, string);
    duty[playerid] = 1;
    SetPlayerColor(playerid, Dunkelblau);
    return 1;
    }
    }
    else
    {
    format(string, sizeof(string), "Polizist %s packt seine Waffe und seine Marke in dem Spint und beendet den Dienst!", plname);
    SendClientMessage(playerid, Grau, string);
    duty[playerid] = 0;
    SetPlayerColor(playerid, Grau);
    return 1;
    }
    }
    return 1;
    }

    Zitat

    id: 18880 - wenn ich mich nicht täusche


    Ok, danke für die Lektion!


    Ich habs mal nachgeschlagen und Du hast völlig Recht.



    Dani


    Dann ist das ganz einzubauen zwar sehr aufwendig, aber
    absolut und überhaupt kein Problem. Das Prinzip ist das
    selbe, wie ein InGame-Map-Editor.


    Objekt platzieren, hin und her schieben, fertig.


    Alles was dann dazu gehört, also die Blitzer-Funktion,
    musst Du natürlich auch schreiben. Da gibts aber Vorlagen
    ^^

    Also, das ist definitiv ein Mod für GTA SA.


    Das Objekt, das dort vermeindlich als Blitzer
    eingefügt wurde, habe ich noch niemals gesehen.


    Wie auch immer mit Mod oder ähnliches erstellt,
    ist das so auf einem Server derzeit nicht möglich.

    Dani


    Auf alle Fälle solltest Du es so machen, wie oben beschrieben.


    Sollte es dann immernoch nicht funktionieren, hast Du einen
    Haken im Script. Wenn Du möchtest kann ich Dir dann gern
    helfen diesen zu beheben.


    Mit Hilfe von Teamviewer.

    Um nur Zivis an diesem Punkt spawn zu lassen,
    musst Du erstmal schauen, ob Du eine Funktion
    oder Variablen hast, die dies festlegen.


    Du kannst nicht sagen, nur der Zivilist soll dort
    spawnen, legst aber nicht fest, wer der Zivi ist.


    Wenn Du dir darüber einig bist, ist es ganz simpel.


    if(Ist_der_Spieler_Zivi)
    {
    AddPlayerClass(playerid, 1715.2151, -1912.7118, 13.5665, 358.8067, 0, 0, 0, 0, 0, 0);
    }
    Genau, wie es Everest schon erwähnt hat.


    So und nur so funktioniert's.