Beiträge von IceWave

    Muss ich dann das Textdraw bei OnPlayerStateChange auch noch formatieren ?
    Und was wird bei OnPlayerUpdate gemacht? wird da automatisch jede Sekunde oder sowas das Callback neu ausgeführt?

    Hallo, und zwar habe ich ein Problem, mir wird nur 0km/h angezeigt
    getPlayerSpeed(playerid)
    {
    new Float:x,Float:y,Float:z, Float:rtn;
    if(IsPlayerInAnyVehicle(playerid))
    {
    GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z);
    }
    else
    {
    GetPlayerVelocity(playerid,x,y,z);
    }
    rtn = floatsqroot(x*x + y*y + z*z);
    return floatround(rtn * 100 * 1.61);
    }


    Unter OnPlayerStateChange
    if(newstate==PLAYER_STATE_DRIVER)
    new string[128];
    format(string,sizeof(string),"%i km/h",getPlayerSpeed(playerid));
    Textdraw2[playerid] = CreatePlayerTextDraw(playerid, 370.625000, 168.583389, string);
    PlayerTextDrawLetterSize(playerid, Textdraw2[playerid], 0.449999, 1.600000);
    PlayerTextDrawAlignment(playerid, Textdraw2[playerid], 1);
    PlayerTextDrawColor(playerid, Textdraw2[playerid], -1);
    PlayerTextDrawSetShadow(playerid, Textdraw2[playerid], 0);
    PlayerTextDrawSetOutline(playerid, Textdraw2[playerid], 1);
    PlayerTextDrawBackgroundColor(playerid, Textdraw2[playerid], 51);
    PlayerTextDrawFont(playerid, Textdraw2[playerid], 1);
    PlayerTextDrawSetProportional(playerid, Textdraw2[playerid], 1);
    PlayerTextDrawShow(playerid,PlayerText:Textdraw2[playerid]);



    Ist jetzt mein erstes Tacho, drum nicht wundern^^

    ok, beim tacho zum Beispiel muss ich es aber bei OnPlayerStateChange machen oder?
    Bei IsPlayerInVehicle würde es ja auch dem Beifahrer dann angezeigt werden

    Hi, ich habe in einem Tutorial gesehen, dass das Textdraw wenn man in einem Auto sitzt angezeigt wurde.
    Ich würde dass jetzt einfach bei OnPlayerStateChange machen.


    Er hat das mit einer Schleife gemacht und überprüft IsPlayerInVehicle.



    Bei meiner Variante muss ich natürlich bei OnPlayerExitVehicle die Textdraws hiden.
    Und auch wenn man sich z.b. aus dem Auto rausportet würde bei meiner Variante der Textdraw noch angezeigt werden.



    Jetzt stell ich mir die Frage ob das nicht irgendwann zu Laggs führt?
    Da werden ja dann durchgehend die Spieler (i) durchgegangen und abgefragt ob sie in einem Auto sitzen.

    Hat sich erledigt, habs gefunden. Danke


    Noch was:
    weißt du zufällig mit was für nem Plugin MrMonat arbeitet?


    Habe erst vor ca. 1-2 Monaten Mysql angefangen, deshalb kenne ich mich nicht so aus

    ne beim Haussystem verwende ich momentan noch einen String


    enum hausenum
    {
    Float:h_x,
    Float:h_y,
    Float:h_z,
    Float:h_ix,
    Float:h_iy,
    Float:h_iz,
    h_interior,
    h_besitzer[MAX_PLAYER_NAME],
    h_preis,
    h_id,
    h_pickup,
    Text3D:h_text
    }




    Müsste doch eigentlich funktionieren oder nicht?
    Bitte um Hilfe..!

    Wieso sollte besitzer ein Integer sein???


    Würde zwar mit der ID auch gehen, werde es auch wsl so machen,
    aber ich möchte ja wissen wieso es mit dem Namen nicht geht.

    Funktioniert leider nicht, aber darin dass in h_besitzer der Name gespeichert wird liegt ja anscheinend nicht das Problem, weil die Textlabels werden ja mit dem Namen erstellt..

    Hi, und zwar habe ich jetzt auf einmal das Problem, dass der Besitzer nicht in die Datenbank geschrieben wird.


    Und zwar wenn ich das Haus kaufe. Das Textlabel wird erstellt mit dem Besitzernamen.


    ocmd:hauskaufen(playerid,params[])
    {
    if(hatPlayerHaus(playerid))return SendClientMessage(playerid,ROT,"Du hast bereits ein Haus!");
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))continue;
    if(!strlen(hInfo[i][h_besitzer]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(GetPlayerMoney(playerid)<hInfo[i][h_preis])return SendClientMessage(playerid,ROT,"Du hast nicht genügend Geld!");
    GivePlayerMoney(playerid,-hInfo[i][h_preis]);
    strmid(hInfo[i][h_besitzer],name,0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    updateHaus(i);
    saveHaus(i);
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Das Haus steht nicht zum Verkauf!");
    }
    return 1;
    }


    Das passiert unter updateHaus, wo hInfo[i][h_besitzer] abgefragt wird. das selbe mach ich beim speichern in die DB, funktioniert aber nicht.


    saveHaus(id)
    {
    new query[128];
    format(query,sizeof(query),"UPDATE house SET besitzer='%s', h_preis='%i' WHERE id='%i'",hInfo[id][h_besitzer],hInfo[id][h_preis],hInfo[id][h_id]);
    mysql_function_query(dbverbindung, query, false,"","");
    return 1;
    }





    Typ des Feldes besitzer ist varchar max. Länge ist auf 35

    ocmd:createhaus(playerid,params[])
    {
    new preis,interior,Float:ixc,Float:iyc,Float:izc;
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
    if(sscanf(params,"iifff",preis,interior,ixc,iyc,izc))return SendClientMessage(playerid,ROT,"Befehl: /createhaus [PREIS][INTERIOR][INT-X][INT-Y][INT-Z]");
    new Float:xc, Float: yc, Float:zc;
    GetPlayerPos(playerid,xc,yc,zc);
    new id=getFreeHouseID();
    hInfo[id][h_x]=xc;
    hInfo[id][h_y]=yc;
    hInfo[id][h_z]=zc;
    hInfo[id][h_ix]=Float:ixc;
    hInfo[id][h_iy]=Float:iyc;
    hInfo[id][h_iz]=Float:izc;
    hInfo[id][h_interior]=interior;
    hInfo[id][h_preis]=preis;
    strmid(hInfo[id][h_besitzer],"",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    updateHaus(id);
    new query[256];
    format(query,sizeof(query),"INSERT INTO house (h_x,h_y,h_z,h_ix,h_iy,h_iz,h_interior,preis) VALUES ('%f','%f','%f','%f','%f','%f','%i','%i')",xc,yc,zc,hInfo[id][h_ix],hInfo[id][h_iy],hInfo[id][h_iz],hInfo[id][h_interior],hInfo[id][h_preis]);
    mysql_function_query(dbverbindung,query,true,"OnHausCreate","i",id);
    return 1;
    }

    hatte mich bei preis verschrieben.
    Habe aber noch ein 2 Problem.


    und zwar kann ich nur das 1 erstellte Haus betreten, bzw bekomme eine Meldung wenn das Haus keinem gehört.
    Bei den danach erstellten ist es wie wenn sie nicht da wären.


    ocmd:enter(playerid,params[])
    {
    for(new i=0; i<sizeof(bInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]))continue;
    SetPlayerPos(playerid,bInfo[i][b_ix],bInfo[i][b_iy],bInfo[i][b_iz]);
    SetPlayerInterior(playerid,bInfo[i][b_interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))continue;
    if(!hInfo[i][h_id])continue;
    if(GetPlayerVirtualWorld(playerid)!=i)continue;
    if(!strlen(hInfo[i][h_besitzer]))return SendClientMessage(playerid,ROT,"Dieses Haus gehört keinem!");
    SetPlayerPos(playerid,hInfo[i][h_ix],hInfo[i][h_iy],hInfo[i][h_iz]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    return 1;
    }