Beiträge von Splash

    Es kann an einem falschen return schon alleine habern, wie das was ich in dem Zwischenabsatz erwähnte. Versuche wie du sagtest einmal dein register + Login ohne deinen Listen Dialog, wenn es immer noch nicht funzt sagste nochmal bescheid.

    Erstmal macht das hier keinen Sinn:


    if(dialogid == DIALOG_LISTEN)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    // schießt den dialog ohne funktion.
    }
    if(listitem == 0) // Messer
    {
    GivePlayerWeapon(playerid,4,0);
    GivePlayerMoney(playerid, -500);
    SendClientMessage(playerid,HOrange,"Du hast dir ein Messer gekauft für 500$.");
    return 1;
    }
    if(listitem == 1) // Molotov
    {
    GivePlayerWeapon(playerid,18,5);
    GivePlayerMoney(playerid, -2500);
    SendClientMessage(playerid,HOrange,"Du hast dir 5 Molotov Cocktails gekauft für 2500$.");
    return 1;
    }
    if(listitem == 2) // desert Eagle
    {
    GivePlayerWeapon(playerid,24,100);
    GivePlayerMoney(playerid, -2500);
    SendClientMessage(playerid,HOrange,"Du hast dir eine Desert Eagle mit 100 Schuss für 2500$ gekauft.");
    return 1;
    }
    if(listitem == 3) // shoutgun
    {
    GivePlayerWeapon(playerid,25,100);
    GivePlayerMoney(playerid, -2500);
    SendClientMessage(playerid,HOrange,"Du hast dir eine Shoutgun mit 100 Schuss für 2500$ gekauft.");
    return 1;
    }
    return 1;
    }


    Müsste so sein:


    if(dialogid == DIALOG_LISTEN)
    {
    if(!response) //oder response == 0 ist das gleiche
    {
    //Zwieter Button
    }
    if(response) //erste Button wurde gewählt
    {
    switch(listitem) //switchen, da es Listitems sind
    {
    case 0: //Sollte er das erste Item auswählen aus der Liste
    {
    //passiert her etwas
    }
    case 1: //Zweite Item
    {
    //passiert her etwas
    }
    //usw
    }
    }
    }


    Der Rest haut jetzt nachm ersten Anschein hin. Nur das return 1; bei dem Dialog^ ist für mich noch ein Fragezeichen (warum du es da nutzt)


    Und nochmal alles schnell zusammengefasst:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_LISTEN)
    {
    if(!response)
    {

    }
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    //erstes Item
    }
    //usw
    }
    }
    }
    if(dialogid == LOGIN)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,Rot,"Du hast den Vorgang abgebrochen und wurdest gekickt");
    Kick(playerid);
    }
    if(response ==1)
    {
    Login(playerid,inputtext);
    }
    }
    if(dialogid == DIALOG_REGISTER
    {
    if(response == 0)
    {
    SendClientMessage(playerid,Rot,"Du hast den Vorgang abgebrochen und wurdest gekickt");
    Kick(playerid);
    }
    if(response ==1)
    {
    Login(playerid,inputtext);
    }
    }
    return 1;
    }

    Hast du Kick irgendwo einmal anders definiert? Da ich jetzt das Script rauf unter runter bin, aber es keine Fehler mehr beinhaltet.


    ^Habe es auch bei mir getestet und ich bekomme keine Errors oder Warnings. ;/


    PS: Am besten suchst du nach allem was Kick ist und schaust was es tut.

    Glückwunsch war das den so schwer einen verdammten kack Dialog zu zeigen?


    Nehme das return 1; nach Kick raus.


    PS: Denke einmal das es in deinem Script richtig Eingerückt ist.

    Okay dann lass es uns nocheinmal Schritt für Schritt durchgehen.


    Erstens, es muss mit einem großem "K" geschrieben werden. (Kick).


    Zweitens sollst du dir sicher gehen, dass die Schreibweisse überall gleich ist.


    Drittens, zeige einfach den Code Part welchen du benutzt.


    Und zu guter Letzt kannst du mir verbunden sein wie du willst, ich schrieb zum Anfang normal, in einem freundlichen Ton, jedoch wenn ich mitbekomme, das mein Gegenüber so beharrt ist, dass er es richtig anwendet und trotzdem Errors bekommt, kann ich nicht ruhig bleiben, da er einfach nicht verstehen möchte, dass er es mehr als Eindeutig nicht richtig anwendet!

    So einmal schnell aus meinem Gamemode rausgesucht:


    Der Timer:
    SetTimerEx("KickTimer",500,0,"i",playerid);


    So Rufe ich es auf:
    forward KickTimer(playerid); //steht bei mir IMMER über OnGameModeInit, kannste einmal probieren.
    public KickTimer(playerid)
    {
    Kick(playerid);
    return 1;
    }


    Überprüfe Groß- und Kleinschreibung bei dir. Gehe sicher das du alles gleich schreibst. In deinem Script.

    Sorry aber ich find hier mehr und mehr Mist...


    if(aSpieler[playerid][abanned] >= 0)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist gebannt!");
    playerkick(playerid);
    }


    Du überprüfst hier ob deine Variable gleich oder größer als 0 ist . Hallo einmal darüber nachgedacht?? Du kickst hier auch Spieler die NICHT gebannt sind.


    Wenn dann so:


    if(aSpieler[playerid][abanned] > 0)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist gebannt!");
    playerkick(playerid);
    }


    Oder so:


    if(aSpieler[playerid][abanned] == 1)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist gebannt!");
    playerkick(playerid);
    }


    So ich werde jetzt zu meiner Wertung kommen, die Begründungen stehen alle in meinen vorherigen Posts.


    0/10

    Das kann gut sein, aber in der Weiterentwicklung des Scripts brauche ich das so, weil ich sonst durcheinander komme :D


    Willst du mich rollen? Du solltest dir einfach einen Tab mit der Wiki öffnen, dann brauchst du solche hirnlosen und sinnlosen stocks nicht. Wer hat dir den so nen Mist beigebracht? Sorry das ich es so sage aber du solltest wirklich einmal andere Adminsysteme anschauen VOR allem welche vom Englischem Forum. auch da gibt es kleine System welche 1000 Mal besser sind als das was ich hier zu Gesicht bekomme...

    Warum zum Teufel:


    stock Freeze(playerid)
    {
    TogglePlayerControllable(playerid,false);
    }


    stock Unfreeze(playerid)
    {
    TogglePlayerControllable(playerid,true);
    }


    ^Sind sinnlose Zeilen..


    Alt:


    ocmd:freeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /freeze <ID/Name> <Grund>");
    Freeze(id);
    format(str,sizeof(str),"%s wurde von %s eingefroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/freeze.txt",str);
    return 1;
    }


    ocmd:unfreeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /unfreeze <ID/Name> <Grund>");
    Unfreeze(id);
    format(str,sizeof(str),"%s wurde von %s entfroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/unfreeze.txt",str);
    return 1;
    }


    Neu:


    ocmd:freeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /freeze <ID/Name> <Grund>");
    TogglePlayerControllable(playerid,false);
    format(str,sizeof(str),"%s wurde von %s eingefroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/freeze.txt",str);
    return 1;
    }


    ocmd:unfreeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /unfreeze <ID/Name> <Grund>");
    TogglePlayerControllable(playerid,true);
    format(str,sizeof(str),"%s wurde von %s entfroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/unfreeze.txt",str);
    return 1;
    }


    Zeilenunterschied im Befehl = 0, gesparrte Zeilen da 2 sinnlose Stocks wegfallen = 8.


    PS: Sorry aber du musst GANZ GANZ dringend selber Scripten lernen, da dies für mich immer mehr nach C+P aussieht....

    Die Reihenfolge wie du bestimmte Sachen abfragst gefallen mir gar nicht.


    Ein Besipiel:


    if(sscanf(params,"u",id))return SendClientMessage(playerid,0xFF0000FF,"/gethere <ID/Name>");
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");


    Würde wenn ich es richtig in Erinnerung habe, wenn du kein Administartor bist bei einer falsch eingabe erst die Nachricht der Abfrage für sscanf zeigen und dann das er kein Amdinistartor ist.


    Zudem würde dieser Befehl nur funktionieren wenn man Adminrank 2 hat da:


    if(aSpieler[playerid][aadmin] <= 1) bezweckt, dass wenn er kleiner als 1 oder gleich 1 ist die Nachricht returnt wird, sollte der Befehl ab Level eins sein sollen müsstest du:


    if(aSpieler[playerid][aadmin] <1) machen, sollte er ab Level 2 sein, wäre dies einfacher:


    if(aSpieler[playerid][aadmin] <2) da hier einfach nur abgefragt wird ob er einen kleineren Adminrank als 2 hat.


    PS: Habe jetzt nicht das ganze Script durchgeschaut, aber solltest schon von dem was ich sah sehr stark daran arbeiten.

    Naja weiss nicht was ich kritisieren soll, da ich erstens keinen blassen schimmer von designen habe und mir zweitens vorstellen kann was das trotz alledem für Arbeit ist.