Beiträge von Kaliber

    Schreib das so:


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == suche)
    {
    if(IsPlayerInRangeOfPoint(playerid,1,247.0259,302.6663,999.1484))
    {
    new string[128];
    format(string, sizeof(string), "~g~%s sucht",PlayerName(playerid));
    GameTextForPlayer(playerid, string, 1000, 1);
    SetTimerEx("suchen",7000,false,"i",playerid);
    TogglePlayerControllable(playerid,0);
    return 1;
    }
    }
    return 1;
    }
    forward suchen(playerid);
    public suchen(playerid)
    {
    GameTextForPlayer(playerid, "~g~Gefunden", 1000, 1);
    SendClientMessage(playerid,WEISS,"Du hast deine Brieftasche gefunden!");
    TogglePlayerControllable(playerid,1);
    SetPlayerCheckpoint(playerid,243.7181,304.9580,999.1484,1);
    return 1;
    }


    und der Typ von dem Pickup sollte vom Typ 2 sein!


    mfg. :rolleyes:

    Ich habe jetrzt durch einen sehr kleinnen Fehler 4 Fehler behoben Danke


    Du nutzt da so oft, so viele String, die nicht notwendig sind...zudem hast du da einige Denkfehler drinnen gehabt:


    http://pastebin.com/vZe30vAW


    Machs so, das ist wesentlich besser...aber du solltest auch noch formatierte Strings wie beim Registrieren bearbeiten..nicht nur formaiteren...


    Also schau nochmal über dein Script, aber die Errors sind nun draußen :rolleyes:


    mfg. :thumbup:

    Bekomm ich nen Warning: tag mismatch


    Ja, weil deine Variable _tax kein Float ist, du musst es so schreiben:


    new Float:_tax = _price*0.19;
    //und abfragen dann so:
    //format(bla,...,"%.02f",_tax);


    //%.02f -> Gibt nur 2 Nachommastellen aus!
    //%f = Du fragst einen Float (Eine Kommazahl) ab!


    mfg. :rolleyes:

    Ich hoffe ihr könnt mir da weiterhelfen.


    Du musst auch mit Floats rechnen, oder Float Funktionen nutzen:


    Hier 3 Möglichkeiten das zu rechnen:


    1000*0.19 //So kannst du das auch direkt rechnen
    1000*(19.0/100.0) //Mit .0 kennzeichnen, damit es ein Float ist
    1000*floatdiv(19,100) //Funktion nutzen zur Konvertierung


    mfg. :thumbup:

    So zum Beispiel:


    ocmd:changehost(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdminlevel] < 4)return SendClientMessage(playerid,Rot,""COLG"[Info:]"COLR" Möglich ab: "COLG" Adminrank: 4");
    if(!params[0]) return SendClientMessage(playerid,Rot,"Verwendung: /changehost [Hostname]");
    new string[145];
    format(string,sizeof string,"hostname %s",params);
    SendRconCommand(string);
    format(string,sizeof string,"Du hast den Hostname erfolgreich auf %s geändert!",params);
    return SendClientMessage(playerid,Blau,string);
    }


    mfg. :thumbup:


    //Edit: Joa ups...die params vergessen :rolleyes:

    Ich brauche hilfe bei meinem MD5 Verschlüsseln


    Bevor du mit so einem System anfängst, will ich dir nur kurz sagen, lass es mit MD5 zu machen!


    Wenn du schon verschlüsselst, dann ein bisschen besser, z.B. mit Whirlpool!


    Wieso nicht mit MD5?
    Ganz einfach, aus dem Grund, weil es einfach so viele Datenbanken inzwischen gibt, die dir einen decrypteten Hash geben.


    Nehmen wir einfach mal ein Beispiel, ich gebe dir diesen Hash:


    Code
    34c5e6a4a41b5d15a8e0a71e683286f5


    So, du musst jetzt nichts weiteres tun und auf diese Seite gehen (da gibt es aber noch viel viel mehr von):
    http://www.md5decrypt.org/


    Meinen Hash links einfügen und dann auf den dicken Decrypt button klicken ^^


    Aus diesem Grund entweder Hash es öfters und pack einen Pepper mit rein, sonst lass es und nutz etwas anderes ;)


    mfg. :thumbup:

    Selbst dein erster Versuch ist noch langsamer


    Ja sehe es auch gerade, halt einfach weil ich das nirgends Zwischenspeicher, sondern immer wieder neu berechne...


    Nun, das hier ist dann schon echt die schnellste Version:


    stock Float:CalcDifference(Float:v1,Float:v2) {
    new Float:calc = floatabs(v1-v2);
    return (calc > 180.0) ? floatabs(calc-360.0) : calc;
    }


    Und ich sag mal so, für 10.000 Durchläufe, braucht die Funktion 4ms...das ist schnell genug ;)


    mfg. :thumbup:

    Weil ich die Differen der beiden Zahlen berechnen möchte.
    Da ich weiß, dass ein Kreis 360° hat, kann ich nie mehr als 180° von einem Punkt entfernt sein.


    Stells dir vor wie in einem Karusell, wo ich an der Umrisslinie entlang zu einem anderen Punkt auf der Umrisslinie laufen muss.
    Egal wo der ist.. der Weg von meinem Punkt (bzw. meiner Gradanzahl) zu dem anderen (bzw. zu der Gradanzahl) kann nicht
    größer als 180 sein.


    Ja...habs an deinem Beispiel schon gesehen, schau dir den Code an:


    #define f_Get(%0,%1) ((%0-%1) < 0 ? (%0-%1)*-1.0 : (%0-%1))
    #define CalcDifference(%0,%1) (f_Get(%0,%1) > 180) ? f_Get(f_Get(%0,%1),360.0) : f_Get(%0,%1)


    mfg. :thumbup:

    //Edit: Achso jetzt weiß ich was du meinst :rolleyes:


    Hier, schreibs mal so, dann geht es am schnellsten:


    #define f_Get(%0,%1) ((%0-%1) < 0 ? (%0-%1)*-1.0 : (%0-%1))
    #define CalcDifference(%0,%1) (f_Get(%0,%1) > 180) ? f_Get(f_Get(%0,%1),360.0) : f_Get(%0,%1)


    mfg. :thumbup:

    Könntest du mir noch erklären, was genau der Code macht?


    Er macht genau das, was deine Funktion auch macht ^^


    Das mit ? und : ist der sog ternary Operator, das ist nichts anderes als eine if und else abfrage.


    new test = 5;


    if(test == 5) print("Test ist 5!");
    else print("Test ist nicht 5!");


    //Und das kann man halt auch anders darstellen
    new test = 5;


    print((test == 5) ? ("Test ist 5!") : ("Test ist nicht 5!"));


    Er ist halt kürzer und schneller ;)


    mfg. :thumbup:


    //Edit: Damit der Code auch funtkioniert ^^