Wieso klappt das nicht?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Da kommen paar errors...
    Wieso klappt das nicht?


    //GanzOben
    new PlayerColorss[200] = { //Die 200 ist schon richtig habe 200... Das ist jetzt nur abgkürtzt
    if (GetPlayerColor(playerid) == 0xFF8C13FF) 0xFF8C1300 , if (GetPlayerColor(playerid) == 0xC715FFFF) 0xC715FF00, ...
    };


    //Command...
    if(strcmp(cmdtext, "/wasweisich", true) == 0)
    {
    //SetPlayerColor(playerid,PlayerColorss[playerid]);
    return 1;
    }

  • Das wenn ein Spieler das DM btritt dass dan die PlayerMarkers ausgehen aber er trotzdem seine chatfarbe behält...
    da kommt noch das dazu und so weiter SetPlayerMarkerForPlayer( i, playerid, PlayerDmColorss[playerid] );


    Das dauert einfach zu lange wen ich beim befehl alle 200 abprüfe...
    //befehl
    if (GetPlayerColor(playerid) == 0xFF8C13FF) SetPlayerColor(playerid,0xFF8C1300);
    if (GetPlayerColor(playerid) == 0xC715FFFF) SetPlayerColor(playerid,0xC715FF00);
    .......


    //Edit
    Es soll ganz einfach deine farbe rausfinden und wen du DM btritst wird die farbe duchsichtig und du wirst in playermarkers nicht angezeigt aber in chat behälste deine farbe...

  • Nah, nix OnPlayerUpdate, das frisst nur Ressourcen.


    Dann mach von vorne rein die Farben mit SetPlayerColor und nich mit PlayerMarkers ;)
    Wenn sie dann ins DM gehen, kannst du nämlich einfach die Sichtbarkeit [ hier in rot dargestellt: 0xFFFFFFFF] einfach auf 00 setzen und schon ist er unsichtbar :)

  • Man soll aber überhaupt keine Markers sehne...


    Ich habe schon weiter oben geschrieben wie es gehen würde...
    das dauert mir aber zu lange... 200 mal im befehl getplayercolor - serplayercolor... das würde klappen aber ich wollte eben nur bissel einfacher...


    Zurzeit ist es bei mir auch so in der art nur eben mit weiß aber mich nervt es eben nur das alles in chat in weiß geschrieben wird da hat man kaum durchblick wer grade was schreibt ich will das die spieler mit ihren normalen farben in dm schreiben aber trozdem die markers aus sind...


    naja wen jetzt niemanden was einfällt dan frage ich eben 200 mal nach beim befehl das dauert aber is bis jetzt das einzich möglige was mir einfällt...

  • Das da:

    Zitat

    Dann mach von vorne rein die Farben mit SetPlayerColor und nich mit PlayerMarkers ;)
    Wenn sie dann ins DM gehen, kannst du nämlich einfach die Sichtbarkeit [ hier in rot dargestellt: 0xFFFFFFFF] einfach auf 00 setzen und schon ist er unsichtbar :)

    mit einer Schleife.
    In der Schleife wandelst du die Farbe in einen String um änderst die letzten beiden Stellen von FF zu 00 und wandelst es zu HEX um und setzt die Farbe.

  • Nöp, ich bin keine Wunschfee. Ich gebe nur Tipps und Vorschläge, wie man so etwas lösen kann.
    weiterer Tipp: Schau ins Wiki.


    new ret = strlen(string); ermittelt die Länge des Strings.
    string[ret] = "0"; // verändert die letzte Stelle des Strings
    string[ret-1] = "0"; // verändert die vorletzte Stelle
    Suchbegriffe für Schleife:
    for und while ;)


    Viel Glück ;D

  • ach scheise^^


    Ich habe echt probleme mit strings...


    //Edit
    Kann ich das vileicht auch so machen?



    forward aha(playerid);


    //befehl
    aha(playerid);


    public aha(playerid)
    {
    if (GetPlayerColor(playerid) == 0xFF8C13FF) SetPlayerColor(playerid,0xFF8C1300);
    if (GetPlayerColor(playerid) == 0xC715FFFF) SetPlayerColor(playerid,0xC715FF00);
    ...
    return 1;
    }


  • //GanzOben
    new PlayaColor[] = {0xFF8C1300,0xC715FF00};


    //Command...
    if(strcmp(cmdtext, "/wasweisich", true) == 0)
    {
    if(GetPlayerColor(playerid) == 0xFF8C13FF) { SetPlayerColor(playerid,PlayaColor[1]); }
    if(GetPlayerColor(playerid) == 0xC715FFFF) { SetPlayerColor(playerid,PlayaColor[2]); }
    return 1;
    }



    So ?


    Besser wäre es aber so :




    //Command...
    if(strcmp(cmdtext, "/wasweisich", true) == 0)
    {
    if(GetPlayerColor(playerid) == 0xFF8C13FF) { SetPlayerColor(playerid,0xFF8C1300); }
    if(GetPlayerColor(playerid) == 0xC715FFFF) { SetPlayerColor(playerid,0xC715FF00); }
    return 1;
    }



    €dit
    Semilikon vergessen + leerzeichen von den vorhandenens If's entfernt ^^


    LG

  • Ich könnte dir ein VB Programm amchen mit ner simplen schleife was die if's ausgibt und die arrays bis 200 runterzählt.

    if(GetPlayerColor(playerid) == 0xFF8C13FF) { SetPlayerColor(playerid,PlayaColor[1]); }
    if(GetPlayerColor(playerid) == 0xC715FFFF) { SetPlayerColor(playerid,PlayaColor[2]); }


    // usw.
    if(GetPlayerColor(playerid) == 0xFF8C13FF) { SetPlayerColor(playerid,PlayaColor[3]); }
    if(GetPlayerColor(playerid) == 0xC715FFFF) { SetPlayerColor(playerid,PlayaColor[4]); }





    Nur die Array müsstest du selbst füllen. Aber ein problem gibt es - ich habe gerade kein VB zur hand :D
    Daher werde ich's mal per pawn & print versuchen :D

  • Naja, die Farben muss er ja trotzdem alle selbst eintragen, da die ja vermutlich alle unterschiedlich sind ;D
    Bin immernoch für meine Idee, würds machen, wenn ich wüsste wie String to HEX und zurück geht :)

  • Ja ich finde auch deine idee war ganz gut nur habe ich auch ka wie ich das machen soll...
    Die Farben habe ich ja schon...



    new PlayerColors[200] = {
    0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,0xF4A460FF,
    0xEE82EEFF,0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,
    0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,0x65ADEBFF,
    0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,0x3D0A4FFF,
    0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,0x057F94FF,
    0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,
    0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,0x12D6D4FF,
    0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,0x2FD9DEFF,
    0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,
    0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,0xDCDE3DFF,
    0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,0xD8C762FF,
    0xD8C762FF,0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,
    0xF4A460FF,0xEE82EEFF,0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,
    0x10DC29FF,0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,
    0x65ADEBFF,0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,
    0x3D0A4FFF,0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,
    0x057F94FF,0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,
    0x18F71FFF,0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,
    0x12D6D4FF,0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,
    0x2FD9DEFF,0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,
    0x3214AAFF,0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,
    0xDCDE3DFF,0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,
    0xD8C762FF,0xD8C762FF
    };


    Wenn man jetzt noch beim befehl macht IfGetPlayerColor == PlayerColors und dan in nen string die letzten zwei zeichen durch 00 ersetzt und dan Setplayercolor string... das müsste gehen nur wie?


    Aber klappt das wie oben vorgemacht mit forward aha(playerid); dan beim befehl aha(playerid); und dan die ganze scheise in public rein? damit ich das nicht in den behfehl reinschreiben muss ?


    //edit gut egal... dann prüfe ich eben 200mal...^^