Beiträge von Jameso

    Die Frage ist jetzt:
    Was ist sinnvoller, eine Schleife die dann läuft, wenn er wirklich zuschlägt und wirklich die Säge in der Hand hat oder eine Area die durchgehend prüft?


    //Edit
    Ich mache es mit den Areas, scheint im Endeffekt besser zu sein.


    C
    if(GetPlayerAnimationIndex(playerid) == 17)
        	{
        	    SCM(playerid,-1,"X1");
        	}

    Warum kann ich so nicht den Index abfragen? (In der Area)
    Es ist der selbe Index aber er gibt mir nicht die Testnachricht raus

    Das wäre eine Lösung, ich glaube aber nicht die Richtige Lösung.


    Gibt es die Möglichkeit, wenn ich mit einer Kettensäge zuschlage z.B eine Nachricht erscheint als Beispiel? Das muss doch möglich sein.
    Ich glaube wenn ich jetzt mit 50Areas arbeite ist es nicht so schlau

    Ja, mit dem Baum wollte ich das austesten und der Kettensäge.
    Anhitten, zuschlagen ist ja das Selbe.


    Wenn ich das Objekt (Baum) mit der Kettensäge schaden zufüge, soll es verschwinden.


    Ich hätte ja wie zuvor gesagt es so gemacht, das ich beim zuschlagen abfrage ob der Spieler in RangeOfPoint von dem Baum ist, leider finde ich dazu auch nichts.

    Alle 3 Funktionen kann ich nicht logisch verwenden, aber ich hab oft gesehen, dass dies möglich ist.
    Ist es möglich abzufragen, wenn der Spieler "zuschlägt" mit einer Kettensägen und inRangeOfPoint ist von einem Objekt, dass dann etwas passiert?

    Was halt auffällig ist, ist dass die Schranke [8] weiter weg ist von den anderen eventuell liegt es daran? Und was auffällt die Z Koordinate eventuell liegt es daran?

    Zitat von Kaliber

    da nutzt du ja nur MoveDynamicObject mit einem Speed von 1...auf den 0 Punkt?!

    Wie nutze ich die Funktion falsch? ist der Speed 1 falsch oder wie? Ich bewege das Objekt ja -2 auf der Y Koordinate. Ist doch so, dass wenn ich 0 angebe er sich 0 "Meter" in die Richtung bewegt oder sind das die Koordinaten :o


    Gibt keinen Code beim erstellen. Hier die X-Y-Z Positions. [0] = Funktioniert, [10] = Objekt bewegt sich konstant in eine Richtung mit (MoveDynamicObject), [8] Schranke die verbugt auf geht (vermutlich sehr langsam)

    C
    ZollMaut[0] = CreateDynamicObject(968, 47.892612, -1533.911376, 5.059437, 0.000000, 90.000000, -98.799995, -1, -1, -1, 300.00, 300.00);
    
    
    ZollMaut[10] = CreateDynamicObject(968, -168.013595, 364.986572, 12.180410, 0.000000, 90.00, -12.899986, -1, -1, -1, 300.00, 300.00);
    
    
    ZollMaut[8] = CreateDynamicObject(968, -945.394165, -265.088317, 36.620601, 0.000000, -90.000000, -10.800004, -1, -1, -1, 300.00, 300.00);


    Alle Rotations-Achsen:



    Da es ein starkes Problem ist hierher verschoben von den kleinen Scriptingfragen.


    Ich habe 13 Objekte, die ich verschieben möchte.


    new ZollMaut[15];


    1 Objekt, dass funktioniert.


    Relevant sind case 0case 8 und case 10 (Array-Objekt 0, 8 , 10)

    Code
    ZollMaut[0] = CreateDynamicObject(968, X, Y, Z, 0.000000, 90.000000, -98.799995, -1, -1, -1, 300.00, 300.00);


    Die ersten 8 Objekte funktionieren, nichts ist anders die folgenden scheinen nicht zu funktionieren und wurden mehrfach ausgetauscht.
    Bei Zollmaut[10] ist es so, dass das Objekt einfach nur seine Z Position ändern soll, öffnet sich die Rampe scheint das Objekt weg zufliegen anstatt wie angegeben -2 nach der Z Koordinate zu gehen.



    An der Funktion, die das richtige Objekt herausfindet (GetClosestZollMaut) kann es nicht liegen, da ich bereits versucht habe das Objekt einfach so zu bewegen.






    Code
    ZollMaut[10] = CreateDynamicObject(968, X,Y,Z , 0.000000, 90.00, -12.899986, -1, -1, -1, 300.00, 300.00);
    Code
    ZollMaut[8] = CreateDynamicObject(968, X, Y, Z, 0.000000, -90.000000, -10.800004, -1, -1, -1, 300.00, 300.00);
    C
    @checkZoneMaut(p,i);@checkZoneMaut(p,i)
    {
    	return (GetClosestZollMaut(p) == -1) ? ZollMautzu(i) : SetTimerEx("@checkZoneMaut", 3000, 0, "ii", p,i);
    }


    C
    stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
    {
    	new Float:x,Float:y,Float:z;
    	GetDynamicObjectPos(obj,x,y,z);
    	MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
    	return 1;
    }

    Yip, wie ich es geahnt habe.
    Neue Schranken gesetzt, mal ausprobiert geht wieder nicht, dein Beitrag gesehen. Wieder reingetabbt sie sind auf.
    Heißt es kann nur daran liegen, dass sie sich richtig langsam öffnen, anders kann ich mir das nicht erklären?


    Komisch ist, dass ich es nicht beobachten kann, es bewegt sich gar nicht. Habe es mal versucht zu beobachten, scheint so zu sein, dass es 20 Sekunden dauert, dass sich das teil 15 Grad bewegt.
    Die 15 Grad (geschätzt) werden sofort bewegt und in keiner smoothen Animation.


    Tab ich mich rein und raus scheint es halb zu gehen, woran liegt das?

    Also wie gesagt. Die gehen z.B

    Code
    ZollMaut[4] = CreateDynamicObject(968, X,Y,Z, 0.000000, 90.0, 489.600006, -1, -1, -1, 300.00, 300.00);
        ZollMaut[5] = CreateDynamicObject(968,X,Y,Z, 0.000000, 90.0, 669.599975, -1, -1, -1, 300.00, 300.00);


    die aber nicht

    Code
    ZollMaut[8] = CreateDynamicObject(968, X,Y,Z, 0.000000, 90.000000, -11.400006, -1, -1, -1, 300.00, 300.00); 
        ZollMaut[9] = CreateDynamicObject(968, X,Y,Z, 0.000000, 88.000000, 168.599990, -1, -1, -1, 300.00, 300.00);


    Und so bewege ich sie, ich habe sogar getestet z.b case 8: haut noch mal einen print raus, dass er es überhaupt durchführt.


    Code
    case 4: MoveDynamicObjectRot(ZollMaut[i], 0.0, 90.0-90, 489.600006, true);
            case 5: MoveDynamicObjectRot(ZollMaut[i], 0.0, 90.0-90, 669.599975, true);
    
    
    		case 8: MoveDynamicObjectRot(ZollMaut[i], 0.0, 90.0-90, -11.400006, true);
    		case 9: MoveDynamicObjectRot(ZollMaut[i], 0.0, 88.0-90, 168.599990, true);


    Ich vermute, dass die Rotation sehr sehr langsam verläuft, bei den Testversuchen habe ich mich mal rausgetabt und später als ich drin war waren diese verschoben.
    Ich entfern die letzen beiden einfach, dann können die mir auch keine Kopfschmerzen machen. Scheint zu komisch zu sein.

    Habe ich von den lieben @Kaliber

    C
    stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
    {
    	new Float:x,Float:y,Float:z;
    	GetDynamicObjectPos(obj,x,y,z);
    	MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
    	return 1;
    }

    Ja, aber das eine Objekt will sich nicht bewegen, habe es mit verschiedenen Testen versucht.


    Das Objekt kann ich bewegen.

    Code
    ZollMaut[7] = CreateDynamicObject(968, X,Y, Z, 0.000000, -90.000000, 155.199981, -1, -1, -1, 300.00, 300.00);


    Dieses aber nicht.

    Code
    ZollMaut[8] = CreateDynamicObject(968, X, Y, Z, 0.000000, 90.000000, -11.400006, -1, -1, -1, 300.00, 300.00);

    Das kann doch nicht sein?
    Wenn ich das Objekt ...[7] bewege, geht es. Bewege ich ...[8] geht es nicht? Ich habe sogar komplett andere Koordinaten angegeben.




    C
    ocmd:ttt(playerid,params[])
    {
        MoveDynamicObjectRot(ZollMaut[8], 0.0, 100, -24.800008, true);
        return 1;
    }
    C
    MoveDynamicObjectRot(ZollMaut[i], 0.0, -90.0+90, 155.199981, true);

    dies funktioniert nicht.



    Dies funktioniert nicht, nichts passiert.


    C
    MoveDynamicObjectRot(ZollMaut[i], 0.0, 90.0-90, 8.800008, true);


    Alle Objekte mit dem - bewegen sich. die mit dem + nicht.
    Kann man kein + benutzen?

    Ja das sind irgendwelche Variablen " (X steht für eine beliebige Variable)".


    mysl_log ist total zufrieden, hatte den Fehler vorher schon gefunden es war ein '  Fehler typisch copy paste :D
    hatte vergessen, den Server neu zu starten... :o


    Die Zeile wird jetzt aber nach 2 Einträgen voll, was kann ich wieder machen, ich blick da gar nicht durch bei dem Durcheinander :#

    Hey,
    Ich habe diese Sachen als letztes hinzugefügt, der Server freezed sich deswegen. Irgendwie habe ich einen Fehler gemacht, den ich selber nicht finden kann.


    Kann es daran liegen, dass die Zeile zu lang ist?

    Code
    [...], `X`='%d', `X1`='%d', `X2`='%d',`X3`='%d', `X4`='%d', `X5`='%d' WHERE `ID`='%i'", query,
    [...], pInfo[playerid][X], pInfo[playerid][X1], pInfo[playerid][X2], pInfo[playerid][X3],pInfo[playerid][X4], pInfo[playerid][X5], pInfo[playerid][db_id]);


    So sieht halt alles aus, sehr unordentlich und un übersichtlich. Kann man das ganze nicht ordentlicher machen? (X steht für eine beliebige Variable)


    Code
    new query[500];
    	mysql_format(handle,query,sizeof(query),"UPDATE `user` SET `X`='%d', `X`='%d',`X`='%d',`X`='%d',`X`='%d',`X`='%d', `X`='%d', `X`='%d', `X`='%d',",X,
    	pInfo[playerid][X],pInfo[playerid][X],pInfo[playerid][X],pInfo[playerid][X],pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X]);
    	mysql_format(handle,query,sizeof(query),"%s `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d', `X`='%d',`X`='%d', `X`='%d', `X`='%d' WHERE `ID`='%i'", query,
    	pInfo[playerid][X, pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X], pInfo[playerid][X],pInfo[playerid][X], pInfo[playerid][pX], pInfo[playerid][db_id]);

    https://prnt.sc/nql6y0 was mach ich falsch? Müsste doch so gehen oder nicht? Fehler trat auf, nachdem ich für i anstatt GetZollMaut  GetClosesZollMaut eingegeben habe.

    Code
    ocmd:(playerid,params[])
    { //Beim öffnen
        new i = GetClosestZollMaut(playerid);
        if(i == -1) return 1;
    C
    stock const Float:ZollMautPos[][] = {
        {X,Y,Z},
        {X,Y,Z},
    	{X,Y,Z},
    	{X,Y,Z},
    	{X,Y,Z},
    	{X,Y,Z}
    };
    C
    stock GetClosestZollMaut(playerid)
    {
        new Float:dis=9999.0,idx=-1;
        for(new i,Float:tmp; i<sizeof(ZollMaut); i++)
        {
            tmp = GetPlayerDistanceFromPoint(playerid,ZollMautPos[i][0],ZollMautPos[i][1],ZollMautPos[i][2]);
            if(tmp < dis) dis=tmp,idx=i;
        }
        return (dis < 7.0) ? idx : -1;
    }

    Er sagt mir, dass die normalen Objekte error 022: must be lvalue (non-constant) sind.

    C
    ZollMaut[0] = CreateDynamicObject



    Hier sagt er mir, dass ZollMaut bereits definiert ist. error 021: symbol already defined: "ZollMaut"

    C
    stock const Float:ZollMaut[][] = {


    In Zeile 1. kriege ich die Errors


    C
    tmp = GetPlayerDistanceFromPoint(playerid,ZollMaut[i][0],ZollMaut[i][1],ZollMaut[i][2]);
            if(tmp < dis) dis=tmp,idx=i;



    Code
    error 021: symbol already defined: "ZollMaut"
    error 001: expected token: ",", but found "["
    error 029: invalid expression, assumed zero
    warning 215: expression has no effect
    error 001: expected token: ";", but found "]"