Objekte erstellen vor sich

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Leute,
    ich komme nicht weiter.
    Es geht darum, dass eine Sperre vor einem stehen sollen, wenn man /sperre eingibt.
    Es muss ja so ungefähr aussehen:



    if(strcmp("/sperre", cmdtext, true, 10) == 0)
    {
    if(IstSpielerInFraktion(playerid, 0))
    {
    CreateObject([ID des Objekts], [X-coords], [Y-coords], [Z-coords], [X-Rotation], [Y-Rotation], [Z-Rotation]));
    return 1;
    }
    else
    {
    SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
    return 1;
    }
    }


    Jetzt muss nur noch das so gemacht werden, dass vor einem das Objekt steht, aber wie?
    Danke im Voraus



    Mit freundlichen Grüßen
    Broxel

  • Erwartest du eigentlich von uns, dass wir für dich ein gesamtes Script entwickeln?
    Lerne erstmal ein paar Grundlagen, kann doch nicht wahr sein, dass du alle fünf Minuten von uns verlangst,
    dass wir dir den Code den du brauchst schreiben.


    Guck einfach mal in das SA:MP Wiki, die Funktion GetPlayerCameraFrontVector wird dir helfen.

  • Jetzt muss nur noch das so gemacht werden, dass vor einem das Objekt steht, aber wie?


    Ich bin mal so freundlich und helfe dir ;)


    //Schreibe das oben in dein Script
    #define GetCamerFrontVector(%0,%1,%2,%3,%4,%5,%6,%7) \
    GetPlayerCameraPos(%0,%1,%2,%3),GetPlayerCameraFrontVector(%0,%4,%5,%6), \
    (%1)+=floatmul(%4,%7),(%2)+=floatmul(%5,%7),(%3)+=floatmul(%6,%7)


    //Und dann dein Command
    if(!strcmp("/sperre", cmdtext, true))
    {
    if(!IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
    new Float:Q[6];
    GetCamerFrontVector(0,Q[0],Q[1],Q[2],Q[3],Q[4],Q[5],5.0); //5.0 ist die distanz wenn du sie erhöhst, ist das Objekt weiter entfernt!
    CreateObject([modelid des Objekts], Q[0], Q[1], Q[2], 0.0, 0.0, 0.0);
    return 1;
    }


    Ist aus dem Kopf geschrieben, sollte allerdings funktionieren ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Danke und wie ändert man das nun, wenn man den Befehl eingibt, dass es sich mal anders dreht?
    Außerdem wie löscht man dieses Objekt.


    Nimm den Befehl den Kaliber gepostet hat, sprich:
    if(!strcmp("/sperre", cmdtext, true))
    {
    if(!IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
    new Float:Q[6];
    GetCamerFrontVector(0,Q[0],Q[1],Q[2],Q[3],Q[4],Q[5],5.0); //5.0 ist die distanz wenn du sie erhöhst, ist das Objekt weiter entfernt!
    CreateObject([modelid des Objekts], Q[0], Q[1], Q[2], 0.0, 0.0, 0.0);
    return 1;
    }


    Jetzt schaust du dir die Funktion:
    http://wiki.sa-mp.com/wiki/DestroyObject an..

  • also so?:
    if(!strcmp("/sperre", cmdtext, true))
    {
    if(!IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
    new Float:Q[6];
    GetCamerFrontVector(0,Q[0],Q[1],Q[2],Q[3],Q[4],Q[5],5.0); //5.0 ist die distanz wenn du sie erhöhst, ist das Objekt weiter entfernt!
    CreateObject([modelid des Objekts], Q[0], Q[1], Q[2], 0.0, 0.0, 0.0);
    DestroyObject(modelid des objekts)
    return 1;
    }

  • Du scheinst die Grundlagen von PAWN nicht wirklich verstanden zu haben. CreateObject gibt eine ObjektID zurück, die du dir abspeichern kannst. Diese ID kannst du dann in einem zweiten Befehl nutzen, um die Sperre zu entfernen. Deine Konstruktion mit dem Create & DestroyObejct ist Quatsch. Eine ModelID ist nicht gleich eine ObjektID....

  • also so?:


    Nein, so:


    //Oben ins Script
    new objID;


    //Dein CMD
    if(!strcmp("/sperre", cmdtext, true))
    {
    if(!IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
    if(objID) return DestroyObject(objID),objID=0,SendClientMessage(playerid,DROT,"Du hast das Objekt erfolgreich entfernt!");
    new Float:Q[6];
    GetCamerFrontVector(0,Q[0],Q[1],Q[2],Q[3],Q[4],Q[5],5.0); //5.0 ist die distanz wenn du sie erhöhst, ist das Objekt weiter entfernt!
    objID = CreateObject([modelid des Objekts], Q[0], Q[1], Q[2], 0.0, 0.0, 0.0);
    return 1;
    }


    und dann nur noch die modelid eintragen und fertig ;)


    //Edit: hatte noch was vergessen ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
    {
    new Float:a;
    GetPlayerPos(playerid, x, y, a);
    GetPlayerFacingAngle(playerid, a);
    if (GetPlayerVehicleID(playerid))
    {
    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    }
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    }


    Etwas einfacher gehalten.

  • Allerdings sind das nur X und Y Achse...die Z Achse fehlt ;)


    Für eine Sperre braucht man ja nur die Z-Koordinate des Spielers, + - ein paar Einheiten.


    Man könnte die Funktion etwas umschreiben, haste recht..:


    GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, &Float:z, Float:distance)
    {
    new Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    if (GetPlayerVehicleID(playerid))
    {
    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    }
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    }


    Verwendung:


    new Float:x,Float:y,Float:z;
    GetXYInFrontOfPlayer(playerid,x,y,z,2.0);
    CreateObject(...,x,y,z-0.5,0.0,0.0,0.0);

  • Alles gut geklappt, danke euch.
    Wie kann es sich nun drehen? und wie erstellt man sich mehr als 1 davon.
    Das sind meine letzten Fragen.


    4 Mal editiert, zuletzt von Broxel ()