Beiträge von 4#Future

    Das ist überhaupt nicht kompliziert...
    Vitamin[X] hat sich nur etwas unglücklich und ungeschickt ausgedrückt.


    Verwende einfach Deine Stats Funktion folgender Maßen:


    public ShowPlayerStats(playerid, targetid)
    Targetid steht in diesem Falle für die ID des ausgewählten Spielers.


    Nützlich ist targetid wenn Du eine andere Funktion einbaust, mit der andere
    Spieler auch die Stats von anderen checken können, beispielsweise Admins.


    Nunja eigentlich ist es nicht kompliziert...


    Wenn Du dann noch Lust hast, kannst Du sogar ein Dialog machen.
    Das sieht noch edler aus... und vorallem kannst Du Deine Ansichten schön einrücken.

    Ein Update, dass das Herkunftsland einzubauen, ist leider zu umständlich.


    Dafür könnte ich beispielsweise das GeoIP Plugin verwenden, das würde die
    Downloadgröße des Filterscripts aber trastisch erhöhen, auf ca. 20mb.


    Es ist meiner Meinung nach nicht nötig das Herkunftsland anzuzeigen...


    ________________________________________________________________



    Zu den anderen unpassenden Beiträgen folgende Kommentare:


    - ja, ich weise was eine undynamische IP ist
    - nein, du erzählst absoluten Müll und dafür ist dieser Thread nicht gedacht


    Bitte disktuiert wo anders darüber...

    Nunja... wenn Du einen Godfather Edit hast, sollte es z.B. so klappen...


    new string[255];
    new plevel;


    plevel = PlayerInfo[playerid][pLevel];


    format(string, sizeof(string), "Level: %d", plevel);
    SendClientMessage(playerid, 0xFFFFFFFF, string);
    Und so lassen sich die Stats natürlich auch fortsetzen (beispielsweise so)...


    new string[255];
    new plevel, padmin, pmoney;


    plevel = PlayerInfo[playerid][pLevel];
    padmin = PlayerInfo[playerid][pAdmin];
    pmoney = GetPlayerMoney(playerid);


    format(string, sizeof(string), "Level: %d - Admin: %d - Guthaben: %i", plevel, padmin, pmoney);
    SendClientMessage(playerid, 0xFFFFFFFF, string);

    Hallo Modder112!


    An Deiner Stelle würde ich statt GetPlayerVehicleSeat() folgendes verwenden,
    auch wenn es letzten Endes auf das selbe hinaus läuft...


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehid = GetPlayerVehicleID(playerid);
    if(vehid != INVALID_VEHICLE_ID)
    {
    if(GetPlayerState(playerid) == 2)
    {
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF);
    }
    }
    }
    Sollte das Problem immernoch nicht behoben sein, muss ich Dir leider sagen,
    dass Du in irgendeiner Weise etwas falsch machst und wo kann ich Dir nicht sagen.


    Versuchs einfach mal...


    Übrigens, noch ein Tipp für Dich um die Zeile zu verkürzen...
    - statt VEHICLE_PARAMS_ON kann Du auch einfach eine 1 oder true schreiben,
    - statt VEHICLE_PARAMS_OFF einfach eine 0 oder false.


    Freundliche Grüße - 4#Future | Fake

    Jo, natürlich habt Ihr beide Recht...


    Daher auch zwei Versionen, in den Ihr aussuchen könnt, ob mit IP Adresse und Ping,
    oder ob ihr diese Dinge verbergen möchtet.


    Zum übrigen sind IP natürlich für Hacker sehr wichtig und beachtenswert, aber
    wer sich mit einem guten Anti-Viren-Programm und einer intakten Firewall schütz,
    der macht zudem sowieso nichts verkehrt.


    Und noch als Tipp, länger als 24h ist eine IP Adresse niemals aktiv, d.h. min. alle
    24 Stunden ändert sich diese bei Euch sowieso...

    Hallo Hansi Hase!


    Ich hätte hier auch schon die etwas fortschrittlichere Variante, sollte Dir das vielleicht besser gefallen.
    Aber ich würde eher raten, Dich erstmal ein bisschen einzuarbeiten, dann kommt's von allein.
    ^^


    [ SCRIPTING ] Erstellen von /Stats im Dialog Menü



    ————————————————————
    `*~-._# Freundliche Grüße #_.-~*´


    | ___ » Fake as. 4#Future « ___ |

    @Forenentwickler


    Meine Beiträge wurden allesampt zurück und nicht nur etwas...
    Mein Tachometerbeitrag, den ich heute früh erstellt habe ist komplett weg,
    das war kein Update, sondern der Hinweis zur neuen Version.


    Ich muss jetzt mal ganz ehrlich sagen, das kotzt mich jetzt mal richtig an!
    Es kann doch nicht war, dass die Threads allesampt zurückgesetzt werden!


    Und nicht nur das...
    Auf der Startseite, werden die Themen und Beiträge der Foren nicht mehr
    in Spalten ungezeigt, diese stehen nun völlig unsauber und unstrukturiert unter den Themennamen.


    Aus welchem Grund wurde OnMouseOver Menü unter dem Tab Forum entfernt?


    Um ehrlich zu sein, würde ich Euch bitten oder eher auffordern, erstmal die Themen
    und Beiträge wieder herzustellen und, die grafischen Dinge so zu coden, ohne Einschränkungen am Forum.


    So schön die runden Kanten und Ecken auch sind, das Update ist meiner Meinung großer Mist!

    [NeS]Fischer


    ALTE ANTWORT:
    [hide]Gott, oh Gott... sah das auf den ersten Anblick kompliziert aus :rolleyes:
    Das hatte sich aber auch schnell wieder gelegt...


    Nunja um ehrlich zu sein, finde ich das echt und vorallem nützlich, aber ich möchte
    ehrlich sein... Mich als alte Hase im scripten, immer auf die neusten Sachen einzustellen
    dauert immer etwas und vorallem, bis ich diese wieder beherrsche.


    Aber danke für Deinen Tipp!
    Ich werde versuchen mich mal rein zu fitzen und zu schauen, ob ich es in den
    nächsten Releases miteinbringen kann.
    [/hide]


    NEUE ANTWORT:
    ____________________________________________________________________________



    Ich habe mich mal etwas in die pVars eingearbeitet und festgestellt, dass die Interger,
    String und Float Vars in allen Fällen beim Neuconnecten automatisch zurückgesetzt werden.


    Was mir noch aufgefallen ist, ist dass die String pVars ab und zu mal etwas herumbuggt,
    aber ansonsten funktioniert das System an sonsten sehr gut.


    Zum Thema Schnelligkeit, muss ich sagen, dass ich es noch nicht testen konnte, aber nach
    Absprache mit einem META Admin und Developer dessen, ist uns aufgefallen, dass es sich
    wirklich nur für größere Script, also Gamemode lohnt, nicht für kleinere Filterscript.


    Aber ansonsten ist alles klar... danke und ich versuche es das nächste mal einzubauen!


    ____________________________
    #[EDIT 1] - Antwort überarbeitet
    #[EDIT 2] - Neue Antwort verfasst

    Liebe Breadfish Benutzer,


    aufgrund meiner enormen Aktivitätssteigerung im Forum, sind mir sehr viele kuriose und
    vorallem auch unnötige Beiträge aufgefallen, im Zusammenhang mit Fehlermeldungen.


    Anstatt jede Fehlermeldung sofort ins Forum zu posten und dann meistens noch unvollständig,
    oder mit vergessener Zeilenangabe, sollten viele SA-MP Scripter überhaupt einmal wissen,
    was manche Fehler überhaupt bedeuten und vorallem wie einfach viele oftmals lösbar sind.


    Ich beweiße es Euch einmal an einem Beispiel (hier aus dem Forum)...

    Zitat

    error 001: expected token: ")", but found ";"
    Die besagte Zeile dazu:


    if(IsPlayerInAnyVehicle(playerid);


    Das Problem dieses Scriptfehlers ist denke ich für jeden klar, trotzdem sehen viele den Fehler
    und posten Ihn ohne nachzudenken, oder meistens sogar ohne zu lesen einfach ins Forum.


    Ich möchte Euch einfach auffordern etwas nachzudenken und solch unsinnige Sachen zu vermeiden.


    Ist der Fehler auf dem ersten Blick doch nicht erkennbar, dann sollte man sich wenigstens
    einmal die Fehlermeldung durchlesen und genau an dieser Stelle endet bei vielen das Verständnis.



    Aus diesem Grund möchte ich das [Tutorial] Fehleranalyse ins Forum bringen, um das Verständnis zu heben.
    Ich versuche den Beitrag ständig zu aktualisieren und würde mich über Fehlermeldungen und dessen
    passende Aufklärungen natürlich freuen, um diese hier zu ergänzen.


    __________________________________________________________________________________________




    BEITRAG WIRD KOMMENTE TAGE EDITIERT!

    Nunja um ehrlich zu sein, kann ich nicht in Dein Script hineinschauen
    und verstehe Deinen letzten Beitrag so ziemlich überhaupt nicht.


    Schreibe mir mal bitte den Scriptausschnitt und ich kann Dir dann erklären,
    was Du genau machen musste, oder vielleicht umrechnen musst.

    Dazu bräuchte man mal dein Filterscript.
    Vorher kann ich Dir leider nicht helfen...


    Übrigens ein Tipp:


    > Würdest Du Deinen Beitrag wenigstens etwas strukturierter schreiben und eine
    neue Zeile beginnen, wenn Dein Satz zu Ende ist, müsste ich es nicht 100x lesen,
    bis ich überhaupt dahintersteige was diese "Wortgruppen-satz-gefüge"!? eigentlich bedeuten.

    Ahh... jetzt hats auch bei mir geklickt :D


    Das müsste man wie eine Art Countdown machen, quasi zu berechnen:


    Schritt (1)

    Code
    Aufüllbare Gasmenge = (MaxGasMenge - Aktuelle Gasmenge);


    Ist Deine max. Gasmenge standardmäßig 100 und Dein Fahrzeug ist bei 75/100,
    so würde diese Rechnung logischer Weise 25 ergeben.


    Schritt (2)

    Code
    TankZeit = (Aufüllbare Gasmenge * 1000);


    Die vorher ausgerechnete noch auffüllbare Gasmenge rechnen wir einfach mal 1000,
    was in unserem Falle 25000 ergeben würde und haben nun die TankZeit in Millisekunden.


    Schritt (3)

    Code
    format(string, sizeof(string), "Dein Fahrzeug wird nun betankt.~n~Bitte gedulde Dich noch %d Sekunden", TankZeit);GameTextForPlayer(playerid, string, TankZeit, 3);


    Der Spieler erhält nun, wenn er gerade Tank exakt solange, wie er zum tanken benötige,
    den GameText.
    Dieser ist natürlich unterschiedlich lang, es richtet sich eben danach wie leer der Tank ist.


    Man könnte das System noch mit paar Timern verfeinern und den User beispielsweise
    freezen, wenn er tank, aber das ist ja nicht das Thema.

    Höö, versteht ich nicht...


    Mehr wie Du im Script definiert hast, beispielsweise mit GasMax passt sowieso nicht in
    den Tank rein.
    Hast Du in Deiner Tankfunktion, dann beim tanken drin stehen, dass Dein Tank auf
    GasMax gesetzt wird, ist es doch egal.

    Zitat

    könnte mir jemand evtl einen Countdown machen der abfragt ob noch etwas in den Tank rein passt bzw. ob er voll ist.

    Wie meinst Du das, "ob noch etwas in den Tank rein passt oder ob er voll ist"?


    Beim tanken, wird das Fahrzeug doch automatisch voll befüllt, oder irre ich mich da?
    Oder möchtest Du, dass der Tank nicht voll befüllt wird? - Ergäbe für mich keinen Sinn...

    Um keine Werbung zu machen, spreche ich einfach mal neutral
    darüber, dass ich im Showroom ein Tachoscript erstellt habe.


    Sollte es Euch gefallen, könnt Ihr es Euch ja downloaden und
    ich würde mich natürlich über einen kleinen Text unter dem Thread freuen.


    Schaut mal rein: Showroom/Tachoanzeige

    @[FoR]Hardcore


    Danke für Deine positive Meinung und Dein Lob.
    Es freut mich immer solche Antworten zu erhalten und ich sehe, dass meine Arbeit etwas wert ist.

    Zitat

    Das sieht eher so aus wie das eine Tacho vom englischen SAMP-Forum...


    Textdraw: Einfach die Position geändert.
    Variablen: Einfach die Namen der Variablen geändert(einige sogar noch Original)

    Nicht um mich aufzuregen oder Stress zu machen, aber nur um solche Dinge gleich zu klären.


    Ich kenne den Tacho aus dem englischen Forum und ja, mein Tacho sieht ähnlich aus, aber
    ich bin ein SELFMADE begeisterter Scripter und ich stehle niemals Dinge von anderen und gebe
    diese als meine aus.


    Das man bekannte Funktionen aus gängigen Scripts nimmt, ist wohl klar, aber ganze
    TextDraws zu klauen, nein, auf dieses Niveau werde ich mich nicht herablassen.

    Zitat

    Du hast da ne Menge Textdraws erstellt...
    Ist unnötig!
    Du kannst auch mit
    TextDrawSetString und format arbeiten!

    Selbverständlich kenne ich die Funktionen, mit denen ich TextDraws bearbeiten kann.

    Ich habe mich aus Zeit und Aufwandsgründen aber für diese Variante der TextDraws
    entschieden, aus dem Grund, dass es auch flexible Anzeigen, durch Benzin und Schaden gibt
    und ich Anzeigefehler oder Bugs von vorn verhindern möchte.


    Und paar Zeilen hin und her...
    Du hast Recht, dass es zeilensparender ist, aber ich habe es ja extra so konzipiert, dass
    das Script so schnell wie möglich läuft, da sollte das ja kein Problem sein, zudem es ja meine Mühe fordert ;D

    Guten Tag liebe Community!


    Immer häufig kommt es vor, dass sich Spieler unbemerkt auf dem Server einloggen und hacken.
    Dabei treten oftmals die einfachsten Hacks, wie der Money Hack oder der Levelhack mit Level 1 auf.


    Mit dem neuen ANTI-Cheat System haben diese Schwierigkeiten nun entgültig ein Ende.


    Das Filterscript passt sich jenem Reallife/RolePlay Gamemode in der Hinsicht an, dass es
    beispiels das Level mit
    "GetPlayerScore(playerid)" überprüft.


    Ich werde versuchen baldige Updates zum ANTI-Cheat System zu bringen!


    Funktionsweise


    Fall 1:

    • Connected ein neuer Spieler überprüft das Anti-Cheat System zunächst ob der Spieler Level 1 ist.
    • Ist er das besagte Level und hat mehr Geld, wie Ihr im Script festgelegt hat, wird der Spieler gebannt.
      (Der Verdacht auf einen Money Hack ist natürlich in diesem Falle unumgänglich)

    Fall 2:

    • Tötet ein Spieler einen anderen mit einer, im Reallife normaler Weise untersagten Waffe, wird er gebannt.
      (Der Verdacht auf einen Waffen Hack liegt natürlich sehr nahe)

    Zusätzlich wird in beidem Falle in einer vom Filterscript angelegten LOG Datei ein Vermerk gemacht.
    Diese befindet sich im Ordner "/scriptfiles" und speichert, Datum, IP, Name und die Aktion des Hacks.


    Installation des Filterscripts


    (1) Öffnet zunächst Euren Serverpfad und den Ordner Filterscripts.
    (2) Das runtergeladene und entpackte Script fügt Ihr einfach im aktuellen Ordner (Filterscripts) ein.
    (3) Kehrt in Euren Serverpfad zurück und öffnet die SERVER.CFG.
    (4) Tragt in der Config Datei hinter dem Aspekt 'filterscripts' einfach Anti_CHEAT ein.


    Startet Euren Server erneut und das Script wird aktiviert und funktionsbereit sein.


    Features - Do it yourself!


    Der beliebteste Hack, ist immernoch der Moneyhack.
    Legt in der dazugehörigen .PWN-Datei Euren Geldgrenze fest, die ein Spieler mit dem Level 1
    haben sollte, bis er gebannt wird. Ihr findet ganz oben ein #define dazu.


    Screenshots


    Natürlich habe ich Euch einen Screenshot zum fertigen Script gemacht.



    Download Links


    Privater Root Server (sicherer Download): hier klicken
    PasteBIN: hier klicken



    ————————————————————
    `*~-._# Freundliche Grüße #_.-~*´


    | ___ » Fake as. 4#Future « ___ |