Beiträge von IPrototypeI

    Also gegen die meisten hacks kann man sich sowieso schützen falls man ein gutes AntiCheat hat dafür braucht man nicht extra einen client zum anderen kann ich dir sagen das viele Leute einfach kein Bock haben sich noch etwas zu downloaden um einen Server zu testen. Ich frag mich wovor Serverbesitzer solch eine Angst haben. Es ist ja nicht so das man auch Personal hat welches die Leute auf dem Server überwachen.

    Alles klar, habe ich gemacht.

    Aber wo kann ich jetzt die Zeilen auslesen?


    Das wird dir in der Log angezeigt, wenn der Fehler nochmal auftaucht, daher müsstest du ihn nochmal provozieren.
    Laut deinem Auszug den du gepostet hast müsste sich das irgendwo bei OnPlayerDisconnect abspielen.

    Es wird einfach auf einen Index zugeriffen der nicht existiert. Um genau die Zeile zu ermitteln kannst du eine pawn.cfg mit dem inhalt -d3 erstellen im panwo ordner und das skript nochmal kompilieren. Damit enthält dein Skript zusätzliche Debuginformationen und dir wird die entsprechende Zeil dazu auch angezeigt.

    Danke, ich weiß es soll ja auch jede Gang die selben Gangcars zur Verfügung haben


    Jo aber wenn die Gang1 eine Fahrzeug kauft wird GangCars hochgezählt und wenn die Gang2 ein Fahrzeug kauft wird wieder GangCars hochgezählt.
    Daher kannst du nur maximal 25 Autos erstellen. Es ist nicht so das JEDE Fraktion sich 25 Fahrzeuge erstellen kann.

    Jetzt steht überall AN und Aus funktioniert nicht.
    Und folgendes Warning: warning 219: local variable "Status" shadows a variable at a preceding level.


    Der Warning bedeutet das solch eine variable mit diesme Namen deklariert wurde.


    Am besten machst du defines und setzst diese unter der Deklarierung dieser variablen VP ... AAFK



    #define StatusVP() ((!VP )?("AUS":"AN"))
    #define StatusPJP() ((!PJP )?("AUS":"AN"))
    ...
    #define StatusAAFK() ((!AAFK)?("AUS":"AN"))



    format(string1,450,"1. Turn ON/OFF: Too High Ping [%s]\n2. Turn ON/OFF: Anti JetPack-a [%s]\n3. Turn ON/OFF: Anti Speed Hack [%s]\n4. Turn ON/OFF: Bad Weapons [%s]\n5. Turn ON/OFF: Anti RCON Hack [%s]\n6. Turn ON/OFF: Anti Swear [%s]\n7. Turn ON/OFF: Anti Drive By [%s]\n8. Turn ON/OFF: Anti Bunny Hop [%s]\n9. Turn ON/OFF: Anti AirBrake [%s]\n10. Turn ON/OFF: Anti Money Hack [%s]",StatusVP(),... ,StatusAAFK());



    DIE PUNKTE " . . . " BEDEUTEN NUR DAS DU DAS NOCH VERVOLLSTÄNDIGEN MUSST

    Du solltest deine Schleife auch abbrechen via break; oder return 1;
    Jedoch beendet return 1; dein Funktion das wäre zu beachten.


    Dazu kannst du dir das durchlesen:


    Verwendung von return



    Ebenfalls solltest du mit der variable GangCars aufpassen da diese für alle Fraktionen gelten nicht für eine spezifisch.

    Du brauchst ein Formular wo der User seine Daten eingibt, die Infos übergibst du via Post Methode an eine weitere .php Datei.


    Bsp: http://php.net/manual/de/tutorial.forms.php


    Nun solltest du eine Verbindung mit der Userdatenbank von eurem Skript erstellen wo ihr einfach überprüft ob es den Spieler gibt und ob dieser Level 3+ hat.


    BSP:
    http://www.php-einfach.de/einf_mysql_verbindung_aufbauen.php


    http://www.php-einfach.de/einf_mysql_einfache_abfrage.php

    Code
    $query = "SELECT COUNT(*) FROM `accounts` WHERE `Name`= '".$_POST['name']."' AND `Passwort`= '".$_POST['passwort']."'  AND `Level` > 3 LIMIT 1;";


    Verbindung danach schließen
    Sollte das stimmen so könnt ihr mit der Datenbank von eurem WBB Forum verbinden und in der bereits genannten tabelle wcf1_user den User anlegen.
    Das Problem ist natürlich das Passwort.


    wcf => lib =>util => StringUtil.class.php.


    Dort ist das ganze zu finden


    BSP: Insert Befehl


    SQL
    "INSERT INTO `DTuser` (`Name`,`Passwort`) VALUES ('Johannes',sha1(CONCAT(SALT, sha1(CONCAT(SALT,sha1( '1234')))));"




    Solltest du damit immer noch nicht zurecht kommen, so solltest du dich mehr einlesen in php , html , css.
    Falls es dennoch nicht klappen sollte so wäre es empfehleswert einfach die Finger von sowas zu lassen.

    Ich hoffe du kriegsts jetzt kein Tick aber könntest du mir ein Beispiel machen wie das in meine Fall funktionieren würde? :thumbup:

    Siehe hier :
    Status auslesen erscheinen Fehler
    Aber hier nochmal ein direktes Beispiel mit deinem String komande

    new komande[450] = "1. Turn ON/OFF: Too High Ping [%s]\n2. Turn ON/OFF: Anti JetPack-a [%s]\n3. Turn ON/OFF: Anti Speed Hack [%s]\n4. Turn ON/OFF: Bad Weapons [%s]\n5. Turn ON/OFF: Anti RCON Hack [%s]\n6. Turn ON/OFF: Anti Swear [%s]\n7. Turn ON/OFF: Anti Drive By [%s]\n8. Turn ON/OFF: Anti Bunny Hop [%s]\n9. Turn ON/OFF: Anti AirBrake [%s]\n10. Turn ON/OFF: Anti Money Hack [%s]";format(komande,450,komande,*1);



    *1 Hier kommen deine Funktionen rein womit du abfrägst ob zum Beispiel "High Ping" an ist.

    Aber wie mache ich aus einem format ein format? Stehe gerade ein bisschen auf dem Schlauch?


    Och Kerle


    new komande[] = "1. Turn ON/OFF: Too High Ping [%s]\n2. Turn ON/OFF: Anti JetPack-a [%s]\n3. Turn ON/OFF: Anti Speed Hack [%s]\n4. Turn ON/OFF: Bad Weapons [%s]\n5. Turn ON/OFF: Anti RCON Hack [%s]\n6. Turn ON/OFF: Anti Swear [%s]\n7. Turn ON/OFF: Anti Drive By [%s]\n8. Turn ON/OFF: Anti Bunny Hop [%s]\n9. Turn ON/OFF: Anti AirBrake [%s]\n10. Turn ON/OFF: Anti Money Hack [%s]",Status();


    Sowas funktioniert einfach nicht das muss man via format machen.


    Du kannst zwar so Strings deklarieren jedoch nicht formatieren.

    Javascript wäre auch eine Möglichkeit gewesen



    @Raven^


    Es gibt noch eine andere variante direkt via html



    Haut leider nicht ganz hin wenn ich das so mache:
    new komande[] = "1. Turn ON/OFF: Too High Ping [%s]\n2. Turn ON/OFF: Anti JetPack-a [%s]\n3. Turn ON/OFF: Anti Speed Hack [%s]\n4. Turn ON/OFF: Bad Weapons [%s]\n5. Turn ON/OFF: Anti RCON Hack [%s]\n6. Turn ON/OFF: Anti Swear [%s]\n7. Turn ON/OFF: Anti Drive By [%s]\n8. Turn ON/OFF: Anti Bunny Hop [%s]\n9. Turn ON/OFF: Anti AirBrake [%s]\n10. Turn ON/OFF: Anti Money Hack [%s]",Status();
    new komande2[] = "\n11. Turn ON/OFF: Anti Health Hack [%s]\n12. Turn ON/OFF: Anti Armour Hack [%s]\n13. Turn ON/OFF: Anti Interior Hack [%s]\n14. Turn ON/OFF: Anti Fly Hack [%s]\n15. Turn ON/OFF: Anti Teleport[1] [%s]\n16. Turn ON/OFF: Anti Teleport[2] [%s]\n17. Turn ON/OFF: Anti Vehicle Repair [%s]\n18. Turn ON/OFF: Anti Spam [%s]\n19. Turn ON/OFF: Anti AFK [%s],Status()";
    format(string, sizeof(string),"%s %s",komande,komande2);



    Du kannst dein text auch nicht einfach formatieren, dazu benötigst du eine Funktion:


    Nennt sich format.

    format(string,900,"1. Turn ON/OFF: Too High Ping [%s]\n2. Turn ON/OFF: Anti JetPack-a [%s]\n3. Turn ON/OFF: Anti Speed Hack [%s]\n4. Turn ON/OFF: Bad Weapons [%s]\n5. Turn ON/OFF: Anti RCON Hack [%s]\n6. Turn ON/OFF: Anti Swear [%s]\n7. Turn ON/OFF: Anti Drive By [%s]\n8. Turn ON/OFF: Anti Bunny Hop [%s]\n9. Turn ON/OFF: Anti AirBrake [%s]\n10. Turn ON/OFF: Anti Money Hack [%s]\n11. Turn ON/OFF: Anti Health Hack [%s]\n12. Turn ON/OFF: Anti Armour Hack [%s]\n13. Turn ON/OFF: Anti Interior Hack [%s]\n14. Turn ON/OFF: Anti Fly Hack [%s]\n15. Turn ON/OFF: Anti Teleport[1] [%s]\n16. Turn ON/OFF: Anti Teleport[2] [%s]\n17. Turn ON/OFF: Anti Vehicle Repair [%s]\n18. Turn ON/OFF: Anti Spam [%s]\n19. Turn ON/OFF: Anti AFK [%s]", Hier deine Funktionen);


    sollte das ganze zu lang sein kannst du das natürlich auch so machen;


    format(string,900,"1. Turn ON/OFF: Too High Ping [%s]\n2. Turn ON/OFF: Anti JetPack-a [%s]\n3. Turn ON/OFF: Anti Speed Hack [%s]\n4. Turn ON/OFF: Bad Weapons [%s]\n5. Turn ON/OFF: Anti RCON Hack [%s]\n6. Turn ON/OFF: Anti Swear [%s]\n7. Turn ON/OFF: Anti Drive By [%s]\n8. Turn ON/OFF: Anti Bunny Hop [%s]\n9. Turn ON/OFF: Anti AirBrake [%s]\n10. Turn ON/OFF: Anti Money Hack [%s]", Hier deine Funktionen);



    format(string,900,"%s\n11. Turn ON/OFF: Anti Health Hack [%s]\n12. Turn ON/OFF: Anti Armour Hack [%s]\n13. Turn ON/OFF: Anti Interior Hack [%s]\n14. Turn ON/OFF: Anti Fly Hack [%s]\n15. Turn ON/OFF: Anti Teleport[1] [%s]\n16. Turn ON/OFF: Anti Teleport[2] [%s]\n17. Turn ON/OFF: Anti Vehicle Repair [%s]\n18. Turn ON/OFF: Anti Spam [%s]\n19. Turn ON/OFF: Anti AFK [%s]",string, Hier deine Funktionen);

    Habs vergessen umzuändern habs jetzt richtig.
    Jetzt kommt immer noch das:
    syntax error in the expression, or invalid function call


    Du kannst dein text auch nicht einfach formatieren, dazu benötigst du eine Funktion:


    Nennt sich format.


    stock Status()
    {
    new Status[24];
    if(Test1 ==1 && Test2 == 1){Status = "AN";}
    else if(Test1 == 0 && Test2 == 0){Status = "AUS";}
    return Status;
    }
    new str[20];
    format(str,20,"Status: %s",Status);
    SendClientMessage(playerid, Rot, str);


    Elegante Variante nennt sich tiny if-statements
    (Test1 ==1 && Test2 == 1) && SendClientMessage(playerid, Rot, "Status: AN") || (Test1 == 0 && Test2 == 0) && SendClientMessage(playerid, Rot, "Status: AUS") ;


    //edit falls du SendClientMessage verwenden möchtest wie du so emepfehle ich dir dieses Plugin


    [ PLUGIN ] Better Format

    Du hast deine ganzen kaufbaren Autos in einem Array, entsprechend der Reihenfolge im Array werden , die Autos auch in dieser Reihenfolge im Dialog angezeigt.


    So musst du einfach bei dem Index das listitem angeben



    GangAutoKaufliste[listitem][GAModelid]


    if(dialogid == DIALOG_GANGAUTOHAUS)
    {
    if(response)
    {
    CreateVehicle(GangAutoKaufliste[listitem][GAModelid], etc ...);
    }
    return 1;
    }

    if(strcmp("/buygangcar", cmd, true) == 0) {
    if(PlayerInfo[playerid][pLeader] == -1)return SendClientMessage(playerid,COLOR_ERRORTEXT,"Du bist kein Leader einer Gang/Mafia!");
    for(new i = 0; i < sizeof(GangAutoKaufliste); i++){
    format(string,sizeof(string),"%sMarke: %s; Preis: $%s\n",string,GangAutoKaufliste[i][GAName],GetPoint(GangAutoKaufliste[i][GAPreis]));
    }
    return ShowPlayerDialog(playerid,DIALOG_GANGAUTOHAUS,DIALOG_STYLE_LIST,"Gangautohaus",string,"Auswählen","Abbrechen");
    }


    Du musst auch den String demenstprechend formatieren (größe auch anpassen). Du hast hier nie den davor formatierten String (Auto) in den gesamten string eingebunden sondern diesen nur immer erneut überschrieben.