Beiträge von Templer

    Ich möchte hier an der Stelle kurz ein Zitat von jemanden nochmals erwähnen, ohne den Namen zu nennen. Der betroffene weiß schon, worums geht ^^


    *** sagt: %x wird richtig umgewandelt^^




    und nun heißt es bei ihm, dass es früher funktioniert hätte. Jaja ^^


    -------


    Also ich würde mal per printf paar Debug Nachrichten machen, in dem Fall:


    new color = PlayerCar[playerid][Slot][CarNummernschildFarbe];printf("ColorID: %| HexColor: %x | HexConverted: %s", color, color, HexToInt(color));


    EDIT: Sry wegen der blöden Formatierung, aber ich denke es schadet ned, oder? ^^

    format(nummernschildtext, sizeof(nummernschildtext), "{0x%s}%s",IntToHex(PlayerCar[playerid][Slot][CarNummernschildFarbe]),nummernschild);


    Probieren geht über studieren ^^ Ansonsten nutze mal bei meinem letzten Beitrag als 3. Variante den Platzhalter %x!

    Ja ne is klar, entweder wir loben uns weiterhin, oder machen dat Ding fertisch ^^


    Nur ein kleiner Ansatz, um die Variable auszulesen und umzuwandeln in Hex (ich weiß leider grad ned ob es notwendig is, aber schaden tut es ned), dann machst du folgendes:


    format(nummernschildtext, sizeof(nummernschildtext), "{%s}%s",IntToHex(PlayerCar[playerid][Slot][CarNummernschildFarbe]),nummernschild);


    oder


    format(nummernschildtext, sizeof(nummernschildtext), "{%x}%s",PlayerCar[playerid][Slot][CarNummernschildFarbe],nummernschild);


    Wobei ich beim zweiteren eher schmunzle, ob das PAWN auch richtig umwandelt, wie die Funktion IntToHex. Irgendeinen Grund muss es ja geben, dass die Funktion IntToHex gibt und keiner den Platzhalter %x verwendet xD

    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarNummernschildFarbe] = HexToInt(farbe);


    Natürlich nur, wenn das return von HexToInt einen Integer zurückweist.


    Sollte es einen String zurückweißen, so bitte die Funktion 'HexToInt' posten.


    //EDIT: Und natürlich auch beachten, dass die Variable 'farbe' ein String sein sollte ^^

    Danke für die Rückmeldungen.


    Wow in diesem Pastebin oben sind wieder meine Lieblings Operatoren. Anscheinend komme ich langsam ned drum rum ohne Bits zu rechnen xD
    Ich weiß nicht wie ihr das seht, aber diese Bit-Operatoren lassen immer wieder gerne meinen Kopf qualmen.


    Danke jedenfalls!

    Ich will dich ja ned enttäuschen, aber PAWN unterstützt maximal nur 3 dimensionale-Arrays, daher kann folgendes nicht stimmen.


    format(nummernschildfarbe, sizeof(nummernschildfarbe), "%s",PlayerCar[playerid][Slot][CarNummernschildFarbe]);


    Da ja sonst die Variable letztendlich so wäre (kann Abweichend von Nutzung einer enum-Struktur sein:


    PlayerCar[MAX_PLAYERS][MAX_CAR_SLOTS][500][MAX_NUMMERNSCHILD_FARBE];
    Man bedenke, dass ich die Definitionen MAX_CAR_SLOTS und MAX_NUMMERNSCHILD_FARBE (obwohl diese eigentlich klarerweise eh 10 wäre) und die Zahl 500, welche sozusagen eine enum-Struktur "nachstellt" ^^ frei erfunden sind.


    Aber hey, du bist einer der glücklichen bei denen man es "leicht" umgehen kann, anstatt wieder ein Ram-Saugendes Array zu erstellen :p


    Lösche im enum bei CarNummernschildFarbe das []-Array, damit du es als Integer behandelst und beachte natürlich im Rest vom Script, dass du die Variable tatsächlich als Integer verwendest.


    Dann kannst du beim setzen der Farbe mithilfe von HexToInt die Variable setzen und per IntToHex umwandeln in einen Hex-Code. Du wirst natürlich auch keine Probleme haben, sofern du auch bei der Abfrage beim setzen überprüfst, ob Spieler eine 24 Bit Farbe angibt und keine 32Bit, da sonst du das Limit von PAWNs 32Bit-Integer Limit brichst.


    32Bit Farben sind nämlich bei Textnachrichten unnötig, da diese keine Transparenz haben (laut meines Wissenstandarts, außer es sich seit 0.3a geändert hat.)


    //Edit: Nur mal so ne Frage, hast du in deiner enum-Struktur für PlayerCar weitere enum-Variablen, jene Arrays besitzen? Mich wunderts nämlich, dass PAWN es überhaupt kompiliert hat.

    Theoretisch wäre es möglich, denn SAMP zeigt ja trotz Limits die Farbe Weiß (0xFFFFFFFF) an, obwohl es über die ungefähr 2Mrd. geht. Ich glaube höchstwahrscheinlich eh, dass ich dann Arrays bzw. 4 Variablen nutzen werde ^^Danke.

    Das Niveau ist im englischen auch gleich. In einem Thread hat Y_Less nem angeblichen C++ Programmierer das Schema aufgestellt was 32Bit bei Farben bedeutet xD Danke jedoch für deine Rückmeldungen, Aspire.

    Hallo,


    Ich wollte Fragen, ob jemand von euch weiß, wie man in PAWN eine Integer Variable "unsigned" kennzeichnet, da ich dieses Limit benötige und ich nicht ins negative komme.


    MfG Templer


    p.S.: Zwar ist es eine kleine Scripting Frage, jedoch für die Besonderheit schon wieder groß meiner Meinung nach, daher hab ich es nicht unter kleine Scriptingfragen geschrieben.

    Variable RandomCarSpawn und Funktion CreateBoughtVehicle wurden nicht definiert.


    Bei RandomCarSpawn denke ich fehlen nur Koordinaten mit X Y Z wo das Fahrzeug spawnen soll, wenn es spawnt.



    new Float:RandomCarSpawn[][] = {
    // X Y Z Angle
    {1234.123456, 1234.123456, 1234.123456, 1234.123456},
    {1234.123456, 1234.123456, 1234.123456, 1234.123456},
    {1234.123456, 1234.123456, 1234.123456, 1234.123456},
    {1234.123456, 1234.123456, 1234.123456, 1234.123456}
    };


    CreateBoughtVehicle sollte wohl ne Funktion sein, wo definiert wird, dass das Fahrzeug ein PrivatFahrzeug ist (bzw. auch für Fraktion je nach dem), wo ich nicht helfen kann und keine Zeit habe mir ein GameMode Script anzuschauen, um herauszufinden wie es definiert wird, dass erstellen von Fahrzeugen.


    Um den Fehler einfach zu umgehen:


    stock Text:DisableTextDraw({Float,_}:...) { }


    Weiter kann ich dir ned helfen.

    Bin grad in der Schule und kann leider grad ned richtig testen, ob der Befehl funktioniert, sollte aber ^^



    #define MAX_REPAIR_TIME 30 //Einheit in Minuten


    new gRepairTime;


    public OnGameModeInit()
    {
    gRepairTime = gettime();
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext,"/reparieren", false))
    {
    new string[128];
    if((gettime()-gRepairTime) < (MAX_REPAIR_TIME * 60))
    {
    format(string,sizeof(string)," Diesen Befehl können Sie erst in %.0f Minuten...", floatsub(MAX_REPAIR_TIME, floatdiv(gettime()-gRepairTime)));
    return SendClientMessage(playerid,COLOR_GREY,string);
    }
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_GREY," Du sitzt in keinem Fahrzeug...");
    new vehicleid = GetPlayerVehicleID(playerid);
    RepairVehicle(vehicleid);
    SetVehicleHealth(vehicleid, 1000);
    return SendClientMessage(playerid,COLOR_GREEN,"* Fahrzeug repariert...");
    }
    }

    Hier bitte, ein kleines Snippet.



    GetVehicleIDByName(vehname[])
    {
    new vehicleid;
    for(;vehicleid!=sizeof(CarName);vehicleid++)
    {
    if(!strcmp(CarName[vehicleid],vehname,false)) return vehicleid+400;
    }
    return INVALID_VEHICLE_ID;
    }