Beiträge von Oskaar1994

    Wollte gerade zu meinem Haus System etwas neues hinzufügen(werde ich untem im Script kennzeichnen), aber ich bekommen ein Warning und Ingame wird in meinem Textlabel statt 2 wie es in der Datenbank steht, eine sehr hohe Zahl angezeigt. Ich bekomme immer ein Tag Mismatch, kann es mir nicht erklären.
    public OnGameModeLoadHouses() {
    new rows, fields, content[MAX_PLAYER_NAME];
    cache_get_data(rows, fields);


    for(new i = 0; i != rows; i++) {
    cache_get_row(i, 0, content);
    hausInfo[i][hID] = strval(content);
    cache_get_row(i, 1, content);
    hausInfo[i][hPreis] = strval(content);
    cache_get_row(i, 2, content);
    format(hausInfo[i][hBesitzer], MAX_PLAYER_NAME, "%s", content);
    cache_get_row(i, 3, content);
    hausInfo[i][hInterior] = strval(content);
    cache_get_row(i, 4, content);
    hausInfo[i][hX] = floatstr(content);
    cache_get_row(i, 5, content);
    hausInfo[i][hY] = floatstr(content);
    cache_get_row(i, 6, content);
    hausInfo[i][hZ] = floatstr(content);
    cache_get_row(i, 7, content);//immer wenn ich diese Zeilen einfüge bekomme ich den Tag Mismatch
    hausInfo[i][Slots] = floatstr(content);//immer wenn ich diese Zeilen einfüge bekomme ich den Tag Mismatch, in dieser Zeile tritt der Tag Mismatch auf


    CreateHouseOnMap(i);
    }


    printf("Haussystem: Es wurden %i Häuser geladen.", rows);
    return 1;
    }

    Wollte eigentlich ein Anti Money Hack System verbunden mit meiner Datenbank machen, aber habe es doch erstmal gelassen. Habe jetzt mit Hilfe eines Tutorials ein einfaches System gemacht und habe auch ein Test Command mit meiner neuen Geldgebefunktion(also mit der man nicht gebannt wird), doch ich kann sie nur einmal verwenden. Also wenn ich sie einmal verwende funktioniert es, aber wenn ich danach nochmal mein Command absende werde ich gekickt. Ich kann mir das absolut nicht erklären, aber der Fehler kann nur irgendwo hier liegen.
    public CheckMoney()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPlayerMoney(i) > NewMoney[i])
    {
    ResetPlayerMoney(i);
    GivePlayerMoney(i,OldMoney[i]);
    Kick(i);
    }
    }
    }
    return 1;
    }
    public GivePlayerMoneyEx(playerid,ammount)
    {
    OldMoney[playerid] = GetPlayerMoney(playerid);
    NewMoney[playerid] = ammount;
    GivePlayerMoney(playerid,ammount);


    return 1;
    }

    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0) return 1;
    if(GetPlayerMoney(playerid) > cache_get_field_content_int(0,"money",dbhandle)) Kick(playerid);


    Hinter eine if-Abfrage kein Semikolon! ;)


    L.G.


    Oh mein Fehler war ein Versehen, danke :)

    Wollte gerade ein kleinen Anti Money Hack machen. Wollte es so umsetzen, dass wenn mein Geld im Spiel höher als in der Datenbank ist ich gebannt werde. Nur habe ich noch einen Fehler:
    error 036: empty statement
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)


    {
    if(GetPlayerMoney(playerid) > cache_get_field_content_int(0,"money",dbhandle));//Der Fehler ist in der Zeile
    {
    Kick(playerid);
    }
    }
    Hile wäre nett :)

    Einfach so:


    new hour,minute,sec;
    gettime(hour,minute,sec);
    printf("%02d:%02d:%02d",hour,minute,sec); //Da haste die genaue Zeit


    mfg. :thumbup:


    Hatte ich vergessen zu erwähnen ich möchte die Ingamezeit und mit gettime bekommt man ja leider die normale :/

    Hey habe ein Uhrentextdraw gemacht, habe nur das Problem, dass es nur eine GetPlayerTime das nicht mit den anderen Spielern synchronisiert ist. Hat jemand eine GetWorldTime Stock oder kann mir jemand erklären wie ich das machen könnte ?

    Wie wäre es denn mit Codeteil?
    Poste mal den Code wo die Checkpoints erstellt werden.


    Hatte ihn nur nicht gepostet weil ich den Code nicht geändert hatte und er davor funktionierte aber hier:
    SetPlayerRaceCheckpoint(playerid,2,Splanes[id][x],Splanes[id][y],Splanes[id][z],0,0,0,Splanes[id][size]);
    *edit* Habe es gelöst, habe noch ausversehen den alten Gamemode ausgewählt.

    Habe gerade ein Problem. Es trat ganz plötzlich auf, ohne dass ich etwas im Script geändert habe. Wenn ich meinen Befehl eingebe soll einmal ein Race Checkpoint gesetzt werden. Nur komischer Weiße wird er nach einem Serverrestart kann plötzlich ganz oft auf einmal gesetzt. Das Problem tritt nur in Fahrzeugen auf, so bald ich das Fahrzeug verlasse ist der Checkpoint ganz normal nur einmal da. Hat jemand von euch schonmal ein ähnliches Problem gehabt ? Wie gesagt habe nix im Script geändert.

    stock GetNearestAirport(playerid)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 511 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 519 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 593)//Beagle+Dodo+Shamal
    {
    new Float:maxx = 1000000.0;
    new id = -1;
    for(new i=0; i<5; i++)
    {
    new Float:dis = GetPlayerDistanceFromPoint(playerid, Splanes[i][x],Splanes[i][y],Splanes[i][z]);
    if(dis < maxx)
    {
    maxx = dis;
    id = i;
    }
    }


    return id;
    }
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 488 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 497 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 548 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 563)//helis
    {
    new Float:maxx = 1000000.0;
    new id = -1;
    for(new i=0; i<5; i++)
    {
    new Float:dis = GetPlayerDistanceFromPoint(playerid, Hplanes[i][x],Hplanes[i][y],Hplanes[i][z]);
    if(dis < maxx)
    {
    maxx = dis;
    id = i;
    }
    }


    return id;
    }
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 417 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 425 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 447 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 469 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 487)
    {
    new Float:maxx = 1000000.0;
    new id = -1;
    for(new i=0; i<5; i++)
    {
    new Float:dis = GetPlayerDistanceFromPoint(playerid, Hplanes[i][x],Hplanes[i][y],Hplanes[i][z]);
    if(dis < maxx)
    {
    maxx = dis;
    id = i;
    }
    }


    return id;
    }
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 592 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 577)
    {
    new Float:maxx = 1000000.0;
    new id = -1;
    for(new i=0; i<5; i++)
    {
    new Float:dis = GetPlayerDistanceFromPoint(playerid, Bplanes[i][x],Bplanes[i][y],Bplanes[i][z]);
    if(dis < maxx)
    {
    maxx = dis;
    id = i;
    }
    }


    return id;
    }


    return 1;
    }

    Aufgrund von Anfrage in PM:


    Zeig uns doch mal, wie du Bplanes, Hplanes und Splanes (etc?) definiert hast.
    Und zudem zeig uns bitte, wie du MAX_FLUGHAFEN (oder sowas in der Art) definiert hast.


    //at400,andro
    new Float:Bplanes[3][Check] = {
    {"Las Venturas Airport Gate B",1576.9788,1391.3984,10.8483, 10.0},//lva,0
    {"Los Santos Airport Gate B",-1364.0537,-215.1572,14.1484, 10.0},//sfa,1
    {"San Fierro Airport Gate B ",-760.1149,1994.4023,5.4734,10.0}//sherman,2



    };
    //Dodo,Beagle,Shamal
    new Float:Splanes[8][Check] = {
    {"Las Venturas Airport Gate A",1576.9788,1391.3984,10.8483, 10.0},//lva,0
    {"San Fierro Airport Gate A",-1364.0537,-215.1572,14.1484, 10.0},//sfa,1
    {"Sherman Damm Airport Gate A",-760.1149,1994.4023,5.4734,10.0},//sherman,2
    {"Los Santos Airport Gate A",1726.6909,-2407.4905,13.5547,10.0},//ls,3
    {"Rockshore Airport Gate A",2866.5273,1870.2122,14.1785,10.0},//rockshore,4
    {"Dillimore Airport Gate A",734.4788,-416.9675,20.7770,10.0},//Dillimore5
    {"Rocky Airport Gate A",3481.3003,-734.1611,4.4475,10.0},//rocky6
    {"Palomino Creek Airport Gate A",1920.6709,-475.8198,26.3133,10.0}


    };
    //helis
    new Float:Hplanes[4][Check] = {
    {"Las Venturas Airport Helipad",1292.2067,1619.8085,19.8637,10.0},
    {"San Fierro Airport Helipad",-1186.6300,24.9960,14.1484,10.0},
    {"Los Santos Airport Helipad",1471.4916,-2435.9031,13.5547,10.0},
    {"Dillimore Airport Helipad",673.0464,-406.6922,19.0978,10.0}
    };
    Habe nicht sowas wie max Flughäfen.

    Dann den Wert nochmal durch 2 Teilen lassen je nachdem wie es für dich am realistischten ist. Und ne Abfrage setzen wenn der höchste Wert erreicht ist das nix mehr dazu gerechnet wird.


    Ungefähr so ?
    new Text:Textdraw26;
    Textdraw26 = TextDrawCreate(310.476104, 340.906646, "LD_SPAC:white");
    TextDrawLetterSize(Textdraw26, 0.000000, 0.000000);
    TextDrawTextSize(Textdraw26, 1.904785, 14.933349);
    TextDrawAlignment(Textdraw26, 1);
    TextDrawColor(Textdraw26, -16711681);
    TextDrawSetShadow(Textdraw26, 0);
    TextDrawSetOutline(Textdraw26, 0);
    TextDrawFont(Textdraw26, 4);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    TextDrawHideForPlayer(playerid,Texdraw26);
    Textdraw26 = TextDrawCreate(310.476104, 340.906646/Z+340.906646, "LD_SPAC:white");

    Y Wert der Box - Y Wert des Textdraws, diesen Wert dann durch die Z Position teilen. Diesen Wert dann + Y Wert des Textdraws und diesen als Wert für die Box nehmen.
    Und Textdraw ganz normal Updaten einmal ausblenden lassen und wieder einblenden lassen.

    Erstmal schonmal danke :) Aber was halt auch ein Problem ist, das Textdraw soll sich nicht unendlich nach oben bewegen, nur in einem bestimmten Rahmen.

    Die Rechnung habe ich dir genannt. Höhe ist der Wert Y des Textraws.
    Und bei der GetPlayerPos Funktion der Wert Z


    Habe das schonmal unter OnPlayerUpdate gepackt. Ich kapiere das mit der Rechnung nur nicht ganz.
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    //Hier halt irgendwie das mit dem Textdraw
    Und noch eine Frage, wenn ich ein Textdraw bewegen will, gibt es doch nur die Möglichkeit es zu zerstören und wieder zu erstellen ?

    Hey bin gerade dabei ein Höhen Textdraw zu machen. Es ist ein Balken, der wenn ich mich in die Höhe bewege, sich auch nach oben bewegen soll. Aber ich weiß nicht so recht, wie ich es angehen soll. Ich könnte zwar unter OnPlayerUpdate immer die Höhe überprüfen, aber dann müsste ich ja für jeden Meter eine Textdrawposition festlegen. Kann ich es irgendwie machen, dass sich allgemein z.B das Textdraw um einen Centimeter nach oben bewegt, wenn ich einen Meter in die Höhe bin. Wie soll ich die Sache am besten angehen?

    new fmsg[128];
    Das muss eine Float sein, also so:
    new Float:fmsg[128];
    Denn in der Variable wird ja das Ergebnis, die Float gespeichert, also muss die Variable auch eine Float sein.

    Geht leider immernoch nicht es zeigt immernoch 0.0000 an, aber habe dafür jetzt 2 Tag mismatches :D Und das Ergebnis soll ja dann kein Float mehr sein, sondern ein Integer deswegen ja floatround. Ich weiß echt nicht mehr weiter.
    *edit*Habe es gelöst