Beiträge von Goldkiller

    Zitat

    z.B. mehrmals diese admin nachricht bekomme nach dem login


    Du solltest gPM_OnLogin ja auch nicht mehrmals aufrufen. Es sollte genau 1x pro Spieler sein. Denn diese Nachricht kommt nur, wenn du gPM_OnLogin für einen Spieler aufrufst. Bekommst du die Nachricht wirklich mehrfach, dann stimmt da bei deinem Aufruf etwas nicht :\.


    Habe das Skript noch etwas angepasst. Du kannst es mal mit folgendem Download probieren ( Forenthema passe ich die Tage an :(
    gPM 1.3.2


    Falls es nicht besser ist, benötige ich genauere Informationen.

    Zitat

    Goldkiller


    Wer hat dich auf die Idee gebracht mir einen Multiaccount unterzujubeln, ich glaub du hast einen an der Macke, erst kommst du auf die Idee mich als Unfreundlich zu betiteln und jetzt die dreiste Unterstellung eines Multaccount. Bei dir hat es nen gewaltigen Aussetzer im Kopf gegeben mein Freund !


    Habe ich dir den Multiaccount jetzt untergejubelt oder unterstellt ?(


    Hier hast du dein tschudige für die freche Unterstellung :(.
    Entsperrt wirst du trotzdem nicht, trotz deiner netten Worte und der Beweise, bei dir handele es sich nicht um Loomar.


    1) Du (Scene-Sector) benutzt den gleichen Skype Account wie Loomar (loomar.loomar)
    2) Du (Scene-Sector) und Loomar haben die gleiche Stamm-IP (Den Proxy jetzt mal außen vor gelassen ;) )
    3) Bonus: Du (Scene-Sector) und Loomar haben komischer weise am gleichen Tag Geburtstag (24. November 1987)
    ¯\_(ツ)_/¯


    PS. Du brauchst dich nicht für deine Unterstellungen zu entschuldigen,dass ich 1) einen an der Macke habe, 2) nen gewaltigen Aussetzer im Kopf hatte, 3) ein wenig Urlaub benötige.

    Download: gPM 1.3.1

    Zitat

    Changelog:
    * 1.3.1 :
    * - gPM_OnLogin hinzugefügt
    * - Umständliches Verfahren zum authentifizieren des Benutzers entfernt


    Die Authentifizierung des Benutzers sollte jetzt einfacher funktionieren:
    // Funktionsaufruf um einen Benutzer für ein Postfach zu authentifizieren:
    CallRemoteFunction( "gPM_OnLogin" , "d" , playerid );
    Dadurch wurde gPM_UserCall entfernt.



    Installation:

    • gPM_FS.AMX in den filterscripts Ordner einfügen
    • gPM_FS in die filterscript - Zeile eurer server.cfg eintragen
    • gPM.s3db aus dem Archiv ( scriptfiles/ ) in euren scriptfiles/ Ordner einfügen. Es entählt die Tabellen und Spalten die notwendig für das Script sind. Die Tabellen werden nämlich nicht automatisch angelegt. ( Wichtig )
    • Es gibt bereits einen Eintrag in der User-Tabelle für den Admin. Eine Eingangsnotiz für jeden Spieler wird von diesem Admin versendet.
    • Um die Postfächer mit einem Userprofil zu verknüpfen,muss die Funktion gPM_OnLogin per CallRemoteFunction aufgerufen werden:


      CallRemoteFunction( "gPM_OnLogin" , "d" , playerid );

      Am besten wird dieser Funktionaufruf durchgeführt, nachdem sich ein Spieler bei euch einloggt.
      Prinzipiell kann dieser Aufruf aber überall durchgeführt werden. Dieser gibt gPM das Zeichen, dass das Postfach
      für den Benutzer freigeschaltet wird.
      Diese Funktion MUSS aufgerufen werden, sonst klappt das Öffnen des Postfaches mit /gpm nicht.

    • Mit dem Befehl /gpm öffnet ihr Ingame das Menu.
      ACHTUNG:
      * gPM: Du wurdest mit dem Usernamen '<Dein Name>' nicht zertifiziert!

      - Kommt dieser Hinweis, wurde Punkt (5) nicht beachtet.

    public gPM_UserCall(playerid) {
    // --- Nichts Ändern
    new
    status;
    if( playerid == INVALID_PLAYER_ID ) return 1;


    // --- Ab hier Änderungen erwünscht


    /*
    Hier die Abfrage an euer Script anpassen und an die Variable status
    den Wert übergeben, ob der Spieler eingeloggt ist.



    Mögliche Adminscripte.


    status = IsPlayerFlag(playerid,PLAYER_FLAG_LOGGEDIN);
    status = PlayerInfo[playerid][Eingeloggt];
    status = LoggedIn[playerid];
    status
    */
    // giveplayerid = ReturnUser(tmp); Hast doch schon die playerid
    // status = GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); Hast doch schon die playerid
    // status = format(string,sizeof(string),"/Accounts/%s.ini",giveplayer); Sinn ?
    // status = fremove(string); Sinn ?
    //status = PlayerInfo[playerid][pReg] = 1; Sinn ?
    // status = gPlayerLogged[playerid] = 1; Sinn ?
    status = gPlayerLogged[playerid]; // Das hier reicht, sofern gPlayerLogged[playerid] = 1 heißt, dass der Spieler eingeloggt ist
    return status;
    }

    Das du das selbst schreiben willst ist natürlich völlig okay, ich zeige dir aber trotzdem mal ein Filterscript von mir dazu:
    http://forum.sa-mp.de/gta-mult…pm-nachrichtenverwaltung/
    Ist definitiv umfangreicher als das, was du hier (vor) hast :-0.


    Zitat

    Und wie kann ich machen /write [Spieler-Name(großkleinschreibung beachten] machen und per Dialog schreibe? Und er den Namen erst Kontrolliert bevor er den Dialog erscheinen lässt?


    In dem du :
    1) Beim Ausführen des Befehles (/write) ein SELECT auf den angegeben Namen machst und bei Fertigstellung ein Callback aufrust (zB OnUserSearch)
    2) Im Callback des o.g. SELECTs prüfst ob es 1 Ergebnis gibt
    2.1) Falls es 1 Ergebnis gibt, dann den Dialog anzeigen lässt. --> OnDialogResponse dann die Texteingabe verarbeiten
    2.2) Benutzer existiert nicht, Dialog nicht anzeigen bzw Fehlermeldung

    Wenn du deinen Fehler nicht posten möchtest, dann solltest du erst gar nicht nach Hilfe fragen. So funktioniert das hier nicht im Forum


    Zitat
    PHP
    $result = $sql->query("SELECT md5, plaintext FROM hash WHERE md5 = '.$md5.'")or die($sql->error);  // Backticks ` für die Spalte md5 wären nicht schlecht
    
    
    if($sql->num_rows == 0) { // anstatt $sql muss dort schon mal $result hin.
        die ("Zu dem angegebenen Hash '$md5' wurde kein Eintrag gefunden!");
    }


    Da hast du eine Fehlerbeschreibung als Kommentar.


    Zitat
    PHP
    <title>MD5 Hash Search ( Under Construction! )</title>


    Das title Tag gehört außerdem in den head, nicht den body.


    Sollte es noch immer nicht klappen,poste den Fehler.



    //Edit:
    Was du dort machst, gibt es im Internet haufenweise. Nennt sich Rainbow Table.


    //Edit:
    Siehe Hard_Base

    Die Funktionen sind kaum bis gar nicht einsatzbereit.
    Ergänzend zu dem von Jeffry:
    - Bei Floats möchtest du sicherlich nur einen Punkt (.) erlauben und nicht 20.
    - Zahlen können ein Vorzeichen haben (+ oder -)
    - Texte (Strings) decken nur deutsche Buchstaben ab und da nicht mal alle (ß, Satzzeichen, etc).
    Um jetzt nur mal die gängigsten Fälle abzudecken.



    Zumindest hast du dir Tests geschrieben um die Funktionen zu prüfen. Das sind aber zu wenig Testfälle um die gängisten Szenarien abzudecken. Bischen kreativer muss man da schon bei seinen Tests sein.

    Ich zeig das jetzt mal nur an 1. Beispiel:
    for(new i=0; i<sizeof(lspdCars); i++)
    {
    if(!IsVehicleStreamedIn(i, playerid))continue; // 1. ist i falsch, denn es wäre lspdCars[i] für die vehicleid und 2. ist die Abfrage mMn überflüssig. Wozu musst du wissen,ob das Fahrzeug für den Spieler in Streaming-Distanz ist? (Hacking vllt?)
    if(vehicleid != lspdCars[i])continue;
    if(sInfo[playerid][fraktion] == 1)continue; // Falls fraktion == 1 prüft, ob der Spieler beim LSPD (?) ist und lspdCars fahren darf. Variante 1: break Variante 2: return - jeweils anstatt continue
    // freezePlayer(playerid,1); Je nachdem ob du break oder return benutzt, kannst du hier die Aktionen ausführen falls der Spieler NICHT mit dem Fahrzeug fahren darf.
    // freezePlayer(playerid,0); " " "
    SendClientMessage(playerid,-1,"Du bist nicht dazu befugt in das LSPD Fahrzeug einzusteigen"); // Falls Variante 1
    }
    for(new i=0; i<sizeof(fbiCars); i++) // armyCars,samdCars,towingCars usw
    {
    // [..]
    }
    // Jetzt NACH allen *Cars
    SendClientMessage(playerid,-1,"Du bist nicht dazu befugt in dieses Fahrzeug einzusteigen"); // Falls Variante 2

    Ob du jetzt Variante 1 oder 2 benutzt, hängt davon ab was du später noch mit OnPlayerEnterVehicle vor hast. So wie es aktuell ist, würde ich Variante 1 (break) benutzen.


    Die Bedingungen bzw die Folgerung darauf ist falsch.
    So müsste es sein:
    Gibt es 0 rows -> Speichern
    Gibt es 0 != rows -> Belegt und somit neue Nummer generieren lassen (CreateHandyNumber)

    Zitat

    Hallo.. und zwar wenn ein Cop einen gesuchten Tötet soll eine Nachricht kommen die kommt aber nicht


    Wie kommst du (Fabian_DeSanta) darauf, dass aus
    if(IsACop(killerid))
    folgendes werden soll:
    if(IsACop(playerid))
    ?
    Gleiches gilt für die weiteren Änderungen von dir (playerid anstatt killerid bei pMember/pLeader). Das ist nicht richtig und passt nicht zu der Logik die dahinter stecken soll.


    Du (xXBastianXx) solltest es einfach mal debuggen.
    Zum Beispiel so. Nochmal probieren und sich selbst mal die Ausgaben angucken. Falls du damit nicht weiter kommst,kannst du die Ausgabe ja hier nochmal posten. Auf den ersten Blick ist nämlich nichts am Code selber falsch.

    Dein Problem hat sich zwar erledigt, du hast trotzdem noch einen Fehler drin:


    Das ist so keine gute Idee.
    Mal angenommen du hättest folgendes:
    hInfo[0][h_id] = 0;
    Dann klappt alles wunderbar. Der Wert bei i wäre in der Schleife 0 und durch return i bekommst du als Antwort 0.
    Wären jetzt aber für alle Indizes der Wert bei h_id != 0, dann würdest du innerhalb der Schleife zu keinem Ergebnis kommen. Nach der Schleife folgt aber ein return 0, was dir vormacht, der Index 0 wäre frei und gleichzeitig nicht frei.
    Du benutzt den Index 0 für "Der Index ist frei" in der Schleife, "Kein Index mehr frei" außerhalb der Schleife. Beides darf es aber nicht sein.
    Anstatt return 0 solltest du sowas wie return INVALID_HOUSE_INDEX o.Ä. benutzen. Müsstest dann aber auch nach der Nutzung von getFreeHausID darauf prüfen.

    In PAWN (von mir aus auch SA:MP) sind die meisten daran gewöhnt, dass eine Funktion wahr zurück gibt wenn es keine Probleme gab (Ist zumindest bei sehr vielen Funktionen der Fall, spontan fällt mir nur strcmp und strfind ein wo es nicht so ist). Bei KindOfVehicle klappt das nicht, was sicherlich viele dazu bringen wird, gleich 2x hinzusehen:

    Zitat

    //return 1 = Fahrzeug existiert nicht!


    if(KindOfVehicle(veh) )return SendClientMessage(playerid,-1,"Cooles Fahrzeug, oder eben nicht da return 1");


    Daher würde ich es auf 0 schieben, sollte das Fahrzeug nicht existieren.

    Zitat

    SA-MP 0.3.7 RC4-2 Optional server update


    - The siren state was not updated internally before OnVehicleSirenStateChange was called.
    - Parameter checks on CreateVehicle/AddStaticVehicleEx in case scripts that use these functions were not recompiled prior to upgrading to 0.3.7.
    - The ls_beachside.pwn filterscript was updated to remove the building night lights. This was needed to remove the occulsion boxes inside the interior.


    Quelle: SA-MP 0.3.7 RC4