Beiträge von Kaliber

    Mach es so:


    //Oben im Skript:
    new bool:o_Chat;


    dcmd_noooc(playerid) {
    if(!sSPieler[playerid][Adminlevel]) return SendClientMessage(playerid,COLOR_HGRAD,"Du bist kein Administrator!");
    return o_Chat = !o_Chat,SendClientMessage(playerid,-1,(!o_Chat)?("Der o-Chat wurde aktiviert!"):("Der o_Chat wurde deaktiviert!"));
    }


    dcmd_o(playerid, params[])
    {
    if(o_Chat) return SendClientMessage(playerid,COLOR_HGRAD,"Der OOC-Chat ist deaktiviert!");
    if(!params[0]) return SendClientMessage(playerid, COLOR_HGRAD, "Benutze: /o [Text]");
    new str[144];
    switch(sSpieler[playerid][Adminlevel])
    {
    case 0: format(str, sizeof(str), "(( {00FF00}Mitbürger %s{FFFFFF}: %s ))", nSpieler(playerid), params);
    case 1: format(str, sizeof(str), "(( {FFFF00}Supporter %s{FFFFFF}: %s ))", nSpieler(playerid), params);
    case 2: format(str, sizeof(str), "(( {04B404}Moderator %s{FFFFFF}: %s ))", nSpieler(playerid), params);
    case 1336: format(str, sizeof(str), "(( {848484}Fraktionsverwalter %s{FFFFFF}: %s ))", nSpieler(playerid), params);
    case 1337: format(str, sizeof(str), "(( {0000FF}Administrator %s{FFFFFF}: %s ))", nSpieler(playerid), params);
    case 1338: format(str, sizeof(str), "(( {FA5858}Head Administrator %s{FFFFFF}: %s ))", nSpieler(playerid), params);
    case 1339: format(str, sizeof(str), "(( {990000}Stellv. Projektleiter %s{FFFFFF}: %s ))", nSpieler(playerid), params);
    case 2000: format(str, sizeof(str), "(( {FF0000}Projektleiter %s{FFFFFF}: %s ))", nSpieler(playerid), params);
    }
    SendClientMessageToAll(-1, str);
    return 1;
    }


    PS: Die weißen Hex-Codes am Anfang kannst du dir schenken, da es ja eh schon weiß ist ;)


    mfg. :thumbup:

    Übrigens:
    Anstatt den hunderten von if's kannst du auch einen switch nehmen.


    Besser noch, wäre es mit Bitshifting:


    stock GetVehicleSeatCount(model) {
    static const scMaxPassengers[] = {
    0x10331113, 0x11311131, 0x11331313, 0x80133301, 0x1381F110, 0x10311103, 0x10001F10, 0x11113311, 0x13113311,
    0x31101100, 0x30001301, 0x11031311, 0x11111331, 0x10013111, 0x01131100, 0x11111110, 0x11100031, 0x11130221,
    0x33113311, 0x11111101, 0x33101133, 0x101001F0, 0x03133111, 0xFF11113F, 0x13330111, 0xFF131111, 0x0000FF3F
    };
    if (400 <= model <= 611) {
    model -= 400;
    model = (scMaxPassengers[model >>> 3] >>> ((model & 7) << 2)) & 0xF;
    return (model == 15) ? -1 : model;
    }
    return -1;
    }


    mfg. :thumbup:

    Weiterhin hätte ich die Idee mit strdel & strins zu arbeiten, da ich dies aber noch nicht gemacht habe bräuchte ich dabei hilfe.


    Hier, schreib es so:


    for(new i,pos;i<sizeof(BadWords);i++) {
    pos = strfind(text, BadWords[i], true);
    if(pos == -1) continue;
    new tmp[16],l=strlen(BadWords[i]);
    strdel(text,pos,pos+l);
    for(new x; x<l; x++) tmp[x] = '*';
    strins(text,tmp,pos,144);
    }


    mfg. :thumbup:

    Warum soll ich etwas Printen?


    Weil evtl die Variablen Falsche Werte beinhalten :rolleyes:


    Aber jetzt wo ich mir deine Abfrage anschaue, ist diese falsch, schreibe sie so:


    if(strcmp(HInfo[hausid][HBesitzer],SpielerName(playerid)) != 0)return SendClientMessage(playerid,DUNKELROT," Diese Wohnung gehört dir nicht!");


    mfg. :thumbup:

    Setz doch einfach über die Zeile:


    printf("%s | %s",HInfo[hausid][HBesitzer],SpielerName(playerid));


    Schau was dir geprintet wird...und finde es raus, wieso das kein Äquivalent ist.


    mfg. :rolleyes:

    Finde ich eine gute Idee, gibt ja schon viele Umsetzungen, aber sieht trotzdem schick aus :)


    Als kleine Information, es wäre besser, wenn du char-Arrays Nutzt, dadurch würdest du die .amx kleiner halten durch die ganzen Arrays ^^


    Und noch ein kleiner Verbesserungsvorschlag:



    Das ist doch ein sehr langer Code...für etwas, was man auch einfach so darstellen kann:


    stock TabletLadezeit(playerid) {
    TabletLadePunkt[playerid]++;
    PlayerTextDrawShow(playerid,TabletLadeDraw[(TabletLadePunkt[playerid] < 7)?(TabletLadePunkt[playerid]):(TabletLadePunkt[playerid]-6)]);
    if(TabletLadePunkt[playerid] == 11) TabletLadePunkt[playerid]=0;
    }



    Achso und bei der Erstellung deiner TextDraws, das macht zwar keinen Unterschied, nur ein wenig von der Übersicht, ehm du kannst da gut mit Makros arbeiten, dann musst du z.B. nur 1ne Zeile, anstatt 8 schreiben...und das auf die ganzen TextDraws gerechnet, macht das schon einen gewaltigen Zeilenunterschied aus ^^


    mfg. :thumbup:

    new text[200];


    Wie wäre es so, ohne extra Variable:


    CMD:ashow(playerid,params[]) {
    if(!IstSpielerAdmin(playerid,3)) return SCM(playerid,weiss,"Sie haben keine Berechtigung.");
    if(!params[0]) return SCM(playerid,-1,"Nutze /ashow [Text]");
    strcat(params,"''",200),strins(params,"Admin Ankündigung: ''",0,200);
    return InfoTextForAll("Admin Ankündigung",params,5000);
    }


    Zitat

    stock InfoTextForAll(overview[50],text[200],time)


    Schreib das lieber so:


    stock InfoTextForAll(overview[],text[],time)


    Bringt doch nichts... :rolleyes:


    mfg. :thumbup:

    Mit freundlichen Grüßen, Toby.


    Also, da kann man so einiges kürzen und verbessert schreiben, hier mal umgeschrieben, kannst ja mal vergleichen:


    http://pastebin.com/EbY50fGM


    Da hat man wenigstens nur 1ne Varibale und 1nen Timer ^^


    PS: Achso, du hast auch einige Fehler gemacht, z.B. returnst du nicht immer 1 unter OnPlayerKeyStateChange..sprich nicht immer wird im anderen Skript auch der Callback aufgerufen.


    mfg. :thumbup:


    //Edit: Habe es getestet, funktioniert einwandfrei :)
    Fehler den ich zuvor gemacht hatte:


    x != x; //das geht nicht
    x = !x; //So geht es :D