Beiträge von Oskaar1994

    Ich weiß wie man die Z Angle des Fahrzeuges bekommt :D Und es macht jetzt eh nichts mehr aus, denn ich habe schon die richtige Funktion gefunden ;)
    *edit* Habe ich leider doch nicht, die Funtkion stimmt nicht mit der Z Angle überein.
    stock Float:GetAngleBetweenPoints(Float:x1, Float:y1, Float:x2, Float:y2){
    new Float:angle = atan2(y2-y1, x2-x1);
    return angle;
    }

    Habe gerade gemerkt, dass disAngleFormat einfach zu klein war, so dass es das zweite ~ nicht mehr mitgenommen hat :D Jetzt brauche ich nur noch eine Funktion, die mir die Z Rotation, des Fahrzeuges ausgibt mit der ich direkt auf einen genauen Punkt zu fahre.

    Hey,
    ich habe derzeit ein kleines Problem. Immer wenn ich das mache : GetVehicleZAngle(GetPlayerVehicleID(playerid),disAngle);
    format(disAngleFormat,sizeof(disAngleFormat),"CRS: ~w~%i",disAngle);
    PlayerTextDrawSetString(playerid,CrsTD[playerid],disAngleFormat);
    Wird aus dem Text des Textdraw ERROR: Unmatched tilde. Das kommt doch eigentlich nur wenn z.B. ein ~ hinter dem w fehlt.
    Dann hätte ich noch eine Frage. Hat jemand eine Funktion für mich, mit der ich die Z Rotation eines Fahrzeuges bekomme, wenn es genau auf einen bestimmten Punkt zufahren soll. Schonmal danke im Vorraus :)

    Also mit valstr dreht jetzt alles durch. Und deine Methode kann ich auch nicht benutzen, da ich davor noch mit der Zahl rechnen muss. So verwende ich es:
    GetVehicleZAngle(aveh, angleZ);
    format(angleFormat, sizeof (angleFormat),"~w~[%s] [%s] [%s] [%s] ~w~[%s] [%s] [%s]",FMEx(floatround(angleZ)-3),FMEx(floatround(angleZ)-2),FMEx(floatround(angleZ)-1),FMEx(floatround(angleZ)),FMEx(floatround(angleZ)+1),FMEx(floatround(angleZ)+2),FMEx(floatround(angleZ)+3));
    PlayerTextDrawSetString(playerid,HeadingTD[playerid],angleFormat);
    stock FMEx(iNum)
    {
    new convertedInt[3];
    new convertedInt1[3];
    valstr(convertedInt,0);
    valstr(convertedInt1,00);
    new szStr[3];
    format(szStr,sizeof(szStr),"%d",iNum);
    if(iNum < 10){
    strins(szStr,convertedInt1,0);
    }
    if(iNum >= 10 && iNum < 100){
    strins(szStr,convertedInt,0);
    }
    return szStr;
    }

    iNum ist bei dir ein Integer, strins benötigt einen String. Eigentlich sollte sogar der Compiler dir schon sagen, dass das nicht funktionieren kann, solange iNum ein Integer ist.

    Also müsste ich dann vorher Valstr benutzen ? Und der Compiler hat nicht gemeckert.

    Hey,
    habe ein kleines Problem. Ich habe mir eine Funktion erstellt die Zahlen unter 100 mit einer bzw. zwei Nullen versehen soll. Also z.B. 9 ---> 009 || 27 ---> 027. Das ganze klappt leider nicht und bringt den Server nach ein paar Sekunden zum crashen. Was mache ich falsch ?
    stock FMEx(iNum)
    {
    new szStr[3];
    format(szStr,sizeof(szStr),"%d",iNum);
    if(iNum < 10){
    strins(szStr,"00",0);
    }
    if(iNum >= 100 && iNum < 100){
    strins(szStr,"0",0);
    }
    return szStr;
    }

    Ups, habe gerade gemerkt, dass ich zum Testen eine Funktion gemacht hatte die ForSale bei allen Schildern auf 0 setzt. Trotzdem danke für die Hilfe :) Ich hätte da aber noch eine bzw. zwei Fragen. Wie kann ich es machen wenn bei allen Schildern ForSale 0 ist, also wenn es nicht zum Verkauf steht, dass eine Nachricht returnt wird ? Und die zweite Frage wäre bezüglich der Anzahl der Schilder. Da ein String ja höchstens 1024 Zeichen groß sein kann, wie mache ich es wenn ich sehr viele Schilder habe ?

    Hey,
    habe ein kleines System gebastelt mit dem man sich Schilder also Werbetafeln mieten kann. Nun will ich einen Dialog erstellen der alle verfügbaren also alle zum Verkauf stehenden Schilder anzeigt. Das habe ich auch gemacht nur wird er im Spiel nicht angezeigt. Die Schilder werden ordnungsgemäß geladed und erstellt, nur der Dialog will nicht. Was mache ich falsch ?
    stock ShowSigns(playerid)
    {
    new signFormat[800];
    new signLocation[30];
    for(new i=0;i<sizeof(SignInfo);i++){
    if(SignInfo[i][ID] == 0)continue;
    if(SignInfo[i][ForSale] != 1) continue;
    Get3DZoneForCoords(signLocation, sizeof(signLocation), SignInfo[i][x], SignInfo[i][y], SignInfo[i][z]);
    format(signFormat,sizeof(signFormat),"%s{FFFFFF}ID: {FF9900}%i {FFFFFF}|| Location: {FF9900}%s {FFFFFF}|| Price: {FF9900}%s\n",signFormat,SignInfo[i][ID],signLocation,FM(SignInfo[i][Price]));
    }
    ShowPlayerDialog(playerid,48,DIALOG_STYLE_LIST,"Available billboards",signFormat,"Select","Back");
    return 1;
    }


    Bekomme leider in den folgenden Zeilen noch Tag Mismatches:
    if (test > 0.499*unit) return heading = 2*atan2(qx,qw),attitude = 3.141592653/2,rotbank = 0;
    if (test < -0.499*unit) return heading = -2*atan2(qx,qw),attitude = -3.141592653/2,rotbank = 0;
    return heading = atan2(2*qy*qw - 2*qx*qz, sqx - sqy - sqz + sqw),attitude = asin(2*test/unit),rotbank = atan2(2*qx*qw - 2*qy*qz, -sqx + sqy - sqz + sqw);
    Und falls sich jemand fragt wieso ich bank zu rotbank geändert habe, ich hatte schonmal irgendwo bank im Script und Pawno hat gemeckert :D

    Hey,
    habe gestern eine Funktion gefunden mit der ich die komplette Fahrzeug Rotation bekommen kann. Es arbeitet mit GetVehicleRotationQuat, aber es gibt die falschen Werte aus. Wieso kann ich das so einfach behaupten ? Ich habe das was die Funktion für die Z Rotation zurück gibt mit GetVehicleZAngle verglichen, aber es kommt nicht das selbe raus. Hat jemand eine Funktion die auch richtig arbeitet dafür so ähnlich wie diese ?
    stock GetVehicleRotation(vehicleid,&Float:rotx,&Float:roty,&Float:rotz) {
    new Float:quat_w,Float:quat_x,Float:quat_y,Float:quat_z;
    GetVehicleRotationQuat(vehicleid,quat_w,quat_x,quat_y,quat_z);
    x = atan2(2*((quat_x*quat_y)+(quat_w+quat_z)),(quat_w*quat_w)+(quat_x*quat_x)-(quat_y*quat_y)-(quat_z*quat_z));
    y = atan2(2*((quat_y*quat_z)+(quat_w*quat_x)),(quat_w*quat_w)-(quat_x*quat_x)-(quat_y*quat_y)+(quat_z*quat_z));
    z = asin(-2*((quat_x*quat_z)+(quat_w*quat_y)));
    return 1;
    }