Skin Shop

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
  • Guten Morgen.


    Ich hab mir das Filterscript "Klick" besorgt. Nun möchte ich dort aber nur bestimmte Skins zur verfügung stellen.
    Bis jetzt habe ich schon viel probiert.
    Momentan hab ich ich das so gemacht:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PlayerInfo[playerid][PlayerBuyingSkin] == 1)
    {
    if(newkeys == KEY_ANALOG_LEFT)
    {
    if(GetPlayerSkin(playerid) == 0)
    {
    SetPlayerSkin(playerid,IsValidSkin(playerid) -1);
    }
    TextDrawHideForPlayer(playerid, OEC[10]);
    TextDrawHideForPlayer(playerid, OEC[9]);
    TextDrawShowForPlayer(playerid, OEC[10]);
    }
    else if(newkeys == KEY_ANALOG_RIGHT)
    {
    if(GetPlayerSkin(playerid) == 299)
    {
    SetPlayerSkin(playerid,IsValidSkin(playerid) +1);
    }
    TextDrawHideForPlayer(playerid, OEC[10]);
    TextDrawHideForPlayer(playerid, OEC[9]);
    TextDrawShowForPlayer(playerid, OEC[9]);
    }


    und unten dann halt:
    stock IsValidSkin(SkinID)
    {
    if((SkinID >= 0) && (SkinID <= 3)||(SkinID == 7)||(SkinID >= 9 && SkinID <= 41)||(SkinID >= 43 && SkinID <= 64)||(SkinID >= 66 && SkinID <= 73)||(SkinID >= 75 && SkinID <= 85)||(SkinID >= 87 && SkinID <= 118)||(SkinID >= 120 && SkinID <= 148)||(SkinID >= 150 && SkinID <= 207)||(SkinID >= 209 && SkinID <= 264)||(SkinID >= 274 && SkinID <= 288)||(SkinID >= 290 && SkinID <= 299)) return true;
    else return false;
    }


    aber irgendwie funst das nicht. Ich hab auch schon das Tut hier ausm Forum benutzt, was mich aber auch nicht weiter gebracht hat. Nun stehe ich aufm Schlauch und benötige eure Hilfe.
    Wie kann ich das machen?


    MfG Rocky

  • du könntest auch ein array machen dort trägst du die skins ein und wenn er bei der skin selection ist könntest du ihm den skin des array[0] zuweisen und beim wechseln den wert um 1 erhöhen.



    versteh mich jetzt bitte nicht falsch. aber ich hab leider gerade garkeine ahnung, was du meinst. heute ist eh nicht mein tag. könntest du mir vielleicht nen kleines beispiel nennen, damit ich mir nen bild machen kann. :S

  • so ich hab noch kurz was getestet.


    ocmd:plus(playerid,params[])
    {
    new test , string[30], i = test2;
    i++;
    test2 = i;
    test = array[test2];
    format(string,sizeof(string),"wert: %d",test);
    SendClientMessage(playerid,0xFFFFFFFF,string);
    return 1;
    }


    new array[6] = {1,2,4,8,16,32};


    dies ist jedoch nur ein test und für deine idee muss man dies natürlich umschreiben.


    also ist dem array sind hier zahlen definiert dort kannst du die erlaubten skins eintragen.
    mit dem test command wird hier die rechts taste als beispiel genommen.
    Er erhöht den wert des arrays dabei ist es wichtig den wert des i zwischen zu speichern daher solltest du für test2 eine globale variabel verwenden .
    nun zu dem i. Das i wird um 1 wert pro command erhöht das heißt array[1], array[2] und gibt die werte 1, 2 aus und so weiter 4 , 8, 16 ,32.
    Nun bräuchtest du noch eine if abfrage welche das maximun des arrays oder des i überprüft und es auf 0 setzt beispiel if(i == 6)
    das wird i = 0; um das ende auch fest zu setzen was anderes ist mir jetzt auf die kürze nicht eingefallen. Jedoch denke ich das es auch noch andere
    möglichkeiten gibt.