Beiträge von no.Ob

    wenn du hilfe benötigst wäre es hilfreich die Zeilen zu posten, welche die Errors verursachen. Oder die bleibt nichts anderes übrig als jemanden einen Einblick zu gewähren.


    ocmd:kick(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"/kick [id] [grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string); Kick(pID);
    return 1;
    }


    jetzt mal zwei bescheidene Fragen:

    • wieviele Adminlevel hast du deklariert ?
    • wäre es nicht besser wenn du abfragst ob der Spieler die nötige Levelhöhe besitzt ?



    if(isPlayerAnAdmin(playerid)<1) // Bedeutet soviel wie: Wenn der Spieler ein kleineres Level als 1 besitzt

    dies ist lohnenswert wenn du mehrere Adminlevel benötigst. Mit deinem Befehl wird abgefragt ob er das Level eins besitzt, doch wenn du mehrere Adminlevel hast und das Level höher als 1 liegt gibt er rein theoretisch ebenso " Du bist kein Admin " aus.


    _____________________________________________________________________
    wenn ich mich irre könnt ihr es ruhig sagen

    {
    if(IsPlayerAnAdmin(playerid,<2))return SendClientMessage(playerid,Rot,"Du bist kein Admin oder dein Rang ist nicht hoch genug!");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Blau,"/Kick [ID] [Grund]");
    else{
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    Kick(pID);}
    return 1;
    }

    Sorry wenn ich es mal so schreibe, vielleicht kassier ich auch eine gelbe Karte, aber ich finde man sollte wenigstens versuchen die Ursache des Fehlers selber zu beheben um zu lernen was man falsch macht.

    Falls ich da ein Hauch von Ironie spüre, empfehle ich dir dringendst Englisch zu lernen bevor du weiter zu Coden versuchst. Ansonsten war die Antwort ernst gemeint. ^^


    Du hast die Variable "CreateObject" definiert obwohl sie vom Pawn schon definiert ist.

    PSD Tutorials FTW :D


    Die Punkte sind Standardpinsel im Photoshop, eine Glaskugel hab ich schon mal besser gesehen(falls es eine darstellen soll) und die Schlingen oder wie auch immer man es bezeichent sind aus nem Tutorial.


    Farbwahl zu grell und sonst ist es mir zusehr durcheinander gewüfelt. 6/10 (fleißig üben, Potential ist vorhanden) =)

    Soweit ich mich jetzt schon mit Pawn auskenne müsste diese Meldung beim Compilieren erscheinen. Schau bitte nach, an welcher Stelle #include <a_sampmysql> definiert ist und setze es direkt unter die #include <a_samp>, dann sollte es funktionieren.


    Gruß noob

    Zitat

    Alleine schon wenn ich deine Variablen sehen X(

    Allein wenn ich schon deine Rechtschreibung sehe, wird mir schlecht. Meinst du nicht das jeder mal mit dem Coden angefangen hat?.. echt solch Kommentar kann man sich echt klemmen!

    Meins hat 15.185 Zeilen

    Was sagen Zeilen schon aus?
    ich hab 15.185 Zeilen auch in 10 min eingebaut, aber ob sie mit Bugs übertreufelt sind kann man den 15.185 Zeilen nicht entnehmen ;)


    Konstruktive Kritik ist angebracht Jungs, nicht nur euer *alles Shit gelaber* ..
    Guten Tag ..

    guter Anfang ;)


    aber da gibt es noch einiges zu optimieren :)
    kleines Beispiel:


    ocmd:clear(playerid,params[])
    {
    if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid, rot, "Du bist kein Admin!");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    SendClientMessageToAll(rot, "");
    new s[128];
    format(s,sizeof(s),"*** Administrator %s hat den Chat gecleart! ***", Spielername(playerid));
    SendClientMessageToAll(grün , s);
    return 1;
    }


    Geht viel einfacher und schneller zu schreiben, wenn man es so macht.



    ocmd:clear(playerid,params[])
    {
    if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid, rot, "Du bist kein Admin!");
    for(new i=0; i<100; i++) SendClientMessageToAll(rot," ");
    new s[128];
    format(s,sizeof(s),"*** Administrator %s hat den Chat gecleart! ***", Spielername(playerid));
    SendClientMessageToAll(grün , s);
    return 1;
    }

    ich hab es mal mit eingefügt, für mysql.. sollte man aber selber rausfinden wenn man nicht gerade doof ist ;)

    So ich hab da mal was gebastelt und eben bei mir lokal getestet = funktioniert. Eines vorab dieser Code ist etwas zum nachdenken, solltest du garkeine Erfahrung darin haben kannst du den Code gleich vergessen, da du ziemlich viel an dein Script anpassen musst!


    COMMAND:premium(playerid,params[])
    {
    if(SpielerInfo[playerid][pLevel]==3)
    {
    new pID,name[20],premium,string[256],query[128],ausgabe[256]; GetPlayerName(pID,name,sizeof(name));
    format(ausgabe,sizeof(ausgabe),"`Name`='%s'",name);
    if(sscanf(params,"ii",pID,premium)) return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /premium [ID] [premiumlevel]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_WHITE,"kein Spieler mit der angegebenen ID online");
    if(premium>2) return SendClientMessage(playerid,COLOR_WHITE,"es gibt nur 2 Premiumlevel");
    if(premium==2) return SendClientMessage(playerid,COLOR_WHITE,"Premium level 2 ist derzeit deaktiviert");
    if(premium<0) return SendClientMessage(playerid,COLOR_WHITE,"unter 0 gibts nichts");
    else
    {
    SpielerInfo[pID][PlrP] = premium;
    SetPVarInt(pID,"premium",1);
    format(string,sizeof(string),"%s hat nun Premiumstatus Level %i",name,premium);
    SendClientMessageToAll(COLOR_WHITE,string);
    format(query, 256, "UPDATE `player_info` SET `premium` = '%i' WHERE %s", SpielerInfo[pID][PlrP], ausgabe);
    mysql_query(query);
    }
    }
    else return SendClientMessage(playerid,COLOR_WHITE,"Du bist nicht autorisiert diesen Befehl zu benutzen!");
    return 1;
    }


    COMMAND:changename(playerid,params[])
    {
    if(GetPVarInt(playerid,"premium")==1)
    {
    new newName[20],string[256],nameold[20]; GetPlayerName(playerid,nameold,sizeof(nameold));format(ausgabe,sizeof(ausgabe),"`Name`='%s'",nameold);
    if(sscanf(params,"s",newName)) return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /changename [Name]");
    else
    {
    SetPlayerName(playerid,newName);
    format(string,sizeof(string),"%s hat seinen Namen in %s geändert",nameold,newName);
    SendClientMessageToAll(COLOR_WHITE,string); DeletePVar(playerid,"premium");
    format(query, 256, "UPDATE `player_info` SET `Name` = '%s' WHERE %s", newName, ausgabe);
    }
    }
    else return SendClientMessage(playerid,COLOR_WHITE,"Du bist nicht autorisiert diesen Befehl zu benutzen!");
    return 1;


    // ein Enum könnte etwa so aussehen


    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    PlrP
    // rest hab ich mal entnommen, dies sind die Relevanten Variablen
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];
    }


    Benötigte Plugins:

    • Sscanf2
    • mysql
    • Hirn !

    Sollte man leicht auf DINI umstellen können, war gerade zu faul und hab es auch erst zu spät gelesen. Pass es deinen Bedürnissen an und gut ist.
    Dies hat mich etwa 15 - 20 min gekostet. Support kannst du dir per PN holen, was diesen Code angeht(kein GF support, da ich GF nicht leiden kann und lieber Selfmade schreibe!)


    //EDIT: speichern des neuen Namens in der DB eingefügt !