Beiträge von alva

    Hier 2 Pointer die auf die richtige Adresse zeigen:


    "samp.dll"+00212A74 Offset 180
    "samp.dll"+00212A40 Offset 28


    Wenn die Adresse den Wert 0 hat ist kein Dialog geöffnet, falls 1 ist ein Dialog geöffnet.
    Den Rest musst du aber selbst hinbekommen, hab keinn Plan von C#.
    Kleiner Tipp: "samp.dll" ist die Base Adresse der samp.dll

    gta_sa.exe ist schon ganz richtig.
    Bist du dir sicher, dass es die richtige Adresse ist? Und falls ja, wie bist du darauf gekommen? Vielleicht liegt da der Fehler

    Ja, es ist wie "Suche die Nadel im Heuhaufen", willkommen im Bereich des Reverse Engineering.
    Sicherlich habe ich nicht behauptet, dass es einfach wäre.. oder etwa doch? Du kannst mich sicherlich aufklären.
    Du solltest dir, bevor du überhaupt versuchst irgendelche Offsets oder Addressen zu "patchen" oder was auch immer du damit machen willst, erst einmal ansehen, WIE man diese Strukturen/Adressen/Pointer findet und damit umgeht. Oder in deinem Fall: "Was sind überhaupt Offsets?"
    Mit Ollydebug bist du schon gut bedient, damit findest du die richtigen Offsets, aber das ist scheinbar zu schwierig für dich, also lass es lieber.
    Vielleicht solltest du dich erst einmal mit der Materie befassen.
    So etwas wie eine "Karte" existiert bei OllyDebug nicht, du musst dir vielleicht einfach mal das Programm ansehen und einige Tutorials lesen.
    Jeder findet seine Offsets selber, kleiner Tipp: Im http://www.unknowncheats.me/forum/ (Oh, hilfe, ein Cheat Forum) wird dir sicherlich besser geholfen, als es hier jemand kann.

    Du hast immernoch nicht verstanden, dass mein Beispiel auf das Gleiche hinaus läuft, wahrscheinlich ist das aber zu hoch für dich.

    Verbesserungsvorschlag:
    #define NONE (1)
    #define CAR (2)
    #define MBIKE (3)
    ....
    #define BICYCLE (14)
    ...
    case xyz[...]: return BICYCLE;
    Dann könnte man, wenn ich mich nicht täusche in seinem Script einfach das hier nutzen:
    if(KindOfVehicle(veh) == BYCYCLE)return SendClientMessage(playerid,-1,"Fahhrad[...] etc pp.");
    Wäre halt deutlich einfacher, als sich die Zahlen zu merken.
    Man müsste halt achten, dass man nicht 2x definiert (falls jemand random den gleichen Namen in seinem eigentlichen Script benutzt). Aber ich glaube man kann halt wieder irgendwie sowas machen #if !defined NAME #define [...]

    Ja stimmt fällt mir auch grad auf, man kann ja einfach gettime benutzen xD
    Also eher so:


    new timestamp_treue[MAX_PLAYERS];
    public OnPlayerDisconnect(playerid)
    {
    new var;
    var = gettime() - timestamp_treue[playerid];
    if(var >= 3600){//also wenn er mindestens 1 Stunde on war:
    var = var % 3600; // berechnet wie viele Stunden das jetzt waren
    // hier noch pInfo[playerid][pTreue] += var; oder halt wie auch immer du es bei dir hast.
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    timestamp_treue[playerid] = gettime();
    return 1;
    }

    Mit Timern arbeiten ist in SAMP eh nie so die beste Lösung.
    Hab jetzt mal was ausm Kopf geschrieben, so würde ich es ca. machen:


    new timestamp_treue[MAX_PLAYERS][2];
    public OnPlayerDisconnect(playerid)
    {
    timestamp_treue[playerid][1] = gettime();
    new var;
    var = timestamp_treue[playerid][1] - timestamp_treue[playerid][0];
    if(var > 3600){//also wenn er mindestens 1 Stunde on war:
    var = var % 3600; // berechnet wie viele Stunden das jetzt waren
    // hier noch pInfo[playerid][pTreue] += var; oder halt wie auch immer du es bei dir hast.
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    timestamp_treue[playerid][0] = gettime();
    return 1;
    }


    Ob es nun funktioniert ist die andere Frage, wahrscheinlich müsste man es ein wenig optimieren, aber so sollte es definitiv die beste Lösung sein, jedenfalls nach meiner Meinung

    Du kannst dir mit Navicat auch die Struktur der Tabellen ausgeben lassen, also im Prinzip dieser komplette Befehl von oben nur ohne IF NOT EXIST.


    Einfach in Navicat die Tabelle anklicken -> Rechtsklick -> Object Information und unten auf DDL gehen:


    Dann noch dieses IF NOT EXIST einfügen (Bin mir grad nicht sicher ob es EXIST oder EXISTS heißt, kannst du aber dann ausprobieren)