Beiträge von Jameso

    Danke, werde ich so ausprobieren.


    Ich habe zwei nebeneinander, sagen wir (x,y,z,):
    100, 100, 15
    100, 95, 15


    Ich will herausfinden, welche von den beiden (wenn er in beide steht z.b) am nähsten dran ist, dieser soll dann für GetZollMautPos eingesetzt werden.

    Also, mein Fehler... Ich habe 2 Objekte


    0.000000, 90.000000, -98.799995
    0.000000, 90.000000, 81.200004


    Beide müssen einfach nur um 90° verschoben werden (Z-Axe)
    Jetzt ist es so, dass das erste Objekt perfekt rotiert wird, aber sich nicht mehr schließt. Das zweite kommt verdreht in die Endposition schließt sich dafür aber


    Jetzt ist halt das Problem, dass die erste Rampe nicht schließt. Dieses Problem macht mir große Kopfschmerzen..



    C
    { //öffnen
        new i = GetZollMautPos(playerid);
    	if(i == -1) return 1;
    	MoveDynamicObjectRot(ZollMaut[i], 0,0.0,90, true);
    	SetTimerEx("@checkZoneMaut", 3000, 0, "ii", playerid, i);
    	return 1;
    }
    C
    @checkZoneMaut(p,i);@checkZoneMaut(p,i)
    {
    	return (!IsPlayerConnected(p) || GetZollMautPos(p) == -1) ? ZollMautzu(p,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;
    }
    C
    stock ZollMautzu (p,i)
    {
     	switch(i)
    	{
    		case 0: MoveDynamicObjectRot(ZollMaut[i], 0.000000, 270, 135.000000, false);



    Code
    stock GetZollMautPos(playerid)
    {
    	if(IsPlayerInRangeOfPoint(playerid,7.0,//Objekt 1)) return 0;
    	if(IsPlayerInRangeOfPoint(playerid,7.0,//Objekt 2)) return 1;
    	return -1;
    }

    Entschuldigen Sie dies, dachte wäre alles drin :D
    MoveDynamicObjectRot siehst du im Beitrag davor, hast du übersehen.


    C
    stock ZollMautzu (p,i)
    {
     	switch(i)
    	{
    		case 0: MoveDynamicObjectRot(ZollMaut[i], 0,0.0,90, false);
    	}
    	return 1;
    }

    Mein Fehler, kommt vom Copy Pasten :D
    Alles heißt jetzt X und es geht trotzdem nicht?
    Ist sonst echt alles richtig? Und wie kriege ich den Fehler behoben? die Erste Rotation ist komplett komisch danach dannach kann ich die Sache nicht so genau beobachten.
    @Kaliber dieses Problem hatten wir schon mal, dass die erste Rotation komplett komisch ist.


    Habe alle Sachen noch einmal verändert und genau geachtet, dass ich alles richtig umbenannt habe. Aber die Rampe geht nicht mehr zu.
    Ich nehme einfach, das CheckZoneMaut, was wir zusammen gemacht haben. (Was ich aus copy pasten irgendwie geschrottet habe)


    Rampe geht auf, erste Rotation ist völlig komisch, die Rampe geht beim entfernen des Radius nicht zu.




    C
    0.000000, 270, 135.000000

    Das ist die Objektrotation beim erstellen


    CSS
    ocmd:rampeauf(playerid,params[])
    {
        new i = GetZollMautPos(playerid);
    	if(i == -1) return 1;
    	SetTimerEx("@checkZoneMaut", 3000, 0, "ii", playerid, i);
    	return 1;
    }


    C
    stock GetZollMautPos(playerid)
    {
    	if(IsPlayerInRangeOfPoint(playerid,7.0, //...)) return 0;
    	if(IsPlayerInRangeOfPoint(playerid,7.0, //...) return 0;
    	return -1;
    }
    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;
    }
    C
    @checkZoneMaut(p,i);@checkZoneMaut(p,i)
    {
    	return (!IsPlayerConnected(p) || GetZollMautPos(p) == -1) ? ZollMautzu(p,i) : SetTimerEx("@checkZoneMaut", 3000, 0, "ii", p,i);
    }

    @Andosius die Informationen reichen doch aus?
    Ich erkläre es mal, da Code nicht so leicht zu verstehen ist ohne eine genaue Erklärung.


    C
    stock GetLKWIndex(playerid)
    {
        for(new i; i<sizeof(TransportLKW); i++) if(IsPlayerInVehicle(playerid,TransportLKW[i])) return i;
        return -1;
    }


    Hiermit hole ich mir ein Index damit ich jedem Fahrzeug eine Variable aus dem Array zuordnen kann. LkwIndex["GetLKWIndex"]



    Jetzt will ich aber, dass wenn ich den Motor einschalte ich hier eine kleine Abfrage zu meinem Index mache. Ich kann es nicht machen, da ich den Stock nicht anwenden kann und ich jetzt nicht weiß,
    wie ich sonst den Index herausfinden kann.
    Ich kann ihn nicht anwenden, da gefragt wird ob ich in einen der Transport Fahrzeuge sitze.


    C
    if(vehicleid == TransportLKW[i])
    	{
    		if(LKWIndex1[i] == 1) return SCM(playerid,-1,"Stell den Index auf 0 bevor du den Motor an machst");
    	}

    Und wenn man genau hinschaut sieht man, dass ich im stock nachfrage ob der Spieler in einem der Transport Fahrzeuge sitzt. Heißt es geht nicht.


    i steht für den stock im ersten Quellcode

    Das heißt um das zu umgehen ist es richtig, dass für den Server der Motor aus ist.



    Will das bei dem starten eines Motors abfragen, geht so nicht.
    Ich kann den GetLKWIndex so nicht abfragen, kann ich irgendwie anders abfragen, ob derjenige in einem der TransportLKW sitzt und dann halt ob der index von dem auf 1 ist?


    i ist der stock GetLKWIndex.

    C
    if(vehicleid == TransportLKW[i])
    	{
    		if(LKWIndex1[i] == 1) return SCM(playerid,-1,"Stell den Index auf 0 bevor du den Motor an machst");
    	}
    C
    stock GetLKWIndex(playerid)
    {
        for(new i; i<sizeof(TransportLKW); i++) if(IsPlayerInVehicle(playerid,TransportLKW[i])) return i;
        return -1;
    }

    Gibt es irgendwelche (Cleo-)Mods die den Motor auf einen SA:MP Server anschalten können?
    Ich frage nämlich etwas ab, beim Motor starten und wollte fragen ob man dies umgehen kann mit so einer Modifikation.


    Weil dann findet die Abfrage nicht statt und der Motor kann so gestartet werden.

    Wie blöd kann man nur sein, sorry ich habe es nicht verstanden als du es bereits davor gesagt hast :0
    Ja... Ich muss das TextLabel jetzt nur noch verschieben, wie mache ich das?


    Also geht in meinem Fall doch nur Attach3DTextLabel, wenn man es nicht verschieben kann.
    Oder ist X, Y, Z die Offset Koordinate beim Fahrzeug?

    Zitat von Akino Kirtani

    Attachen kann man die Labels direkt beim erstellen.

    Bringt mir nichts, wenn ich die Funktion nicht benutzten kann...
    Ich bin am verzweifeln und weiter am rumprobieren, es gibt keinen Weg und auf einen alten Streamer vor 4 Jahren habe ich keine Lust drauf :X :( ;(

    Ich gebe hohen Wert auf dynamic kreierte Sachen, ist mir sehr wichtig, ich versuche auch sehr stark auf die Limits zu achten.


    //EDIT
    Ich habe versucht die natives zu ändern, aber es gibt keinen im Include.
    Habe versucht die Funktion zu verkürzen

    C
    #define Attach3DTextVehicle AttachDynamic3DTextLabelToVehicle


    Code
    error 013: no entry point (no public functions)

    Habe versucht alles außer die Funktion zu löschen im Streamerfunctions





    Funktioniert alles nicht :(

    sicheeeer?


    C
    (3354) : warning 200: symbol "AttachDynamic3DTextLabelToVehic" is truncated to 31 characters
    (3354) : error 017: undefined symbol "AttachDynamic3DTextLabelToVehic"

    Hab ich schon getestet :D. Anscheinend macht die Funktion einen 31er :<D (Zeile 1.)

    Uhm... ich sehe ein Textlabel nicht? (es soll attached werden)
    Habe hier eine Variable: new Text3D:TransportLabel[MAX_VEHICLES];
    Kann ich das so machen? Da ich dann immer die VehicleID eintrage. (Also den GetLKWIndex @Kaliber)


    Ich habe keine Funktion gefunden die mich ein Dynamic3DTextLabel attachen lässt, so geht es zumindest nicht.


    C
    TransportLabel[i] = CreateDynamic3DTextLabel( "- Test -", 0xFF0000AA, 0.0, 0.0, 0.0, 15.0, 0, 1 );



    C
    Attach3DTextLabelToVehicle(TransportLabel[i],TransportLKW[i], 0.220, -0.69, -0.10);

    Also zuerst habe ich mir die Streamer Plugin v2.9.4 Version runtergeladen.


    Das sind die Update Funktionen, aber warum mit ALL, ich finde keine Funktion wo ich das angegebene Objekt Updaten kann

    Ja aber dann habe ich wieder einige Objekte mehr die mein Objekt-Limit verändern :(
    Max. 1000 Objects ist einfach nur Müll, was hat man sich dabei gedacht eigentlich?
    Anstatt man irgendwo #undef MAX_OBJECTS macht und #define MAX_OBJECTS 999999 :D

    Fehler gefunden, ich stand dumm auf der Stelle was der Fehler ist. Das Objekt spawnt erst nachdem das Fahrzeug bewegt wurde...


    Zitat von Kaliber

    und du setzt nirgends LKWIndex

    Stimmt, war mir nicht im klaren ob er durch beide if Abfragen geht. Ich setze den Index auf 1, nach der Abfrage ob es gleich 0 ist.


    Ist es normal, dass das Objekt erst zu sehen ist, wenn sich das Fahrzeug bewegt ? :/
    Heißt ich muss es ein wenig bewegen, damit man das Objekt "sieht".

    Da kickt die Dummheit rein :p
    Ja irgendwie geht er durch beide if abfragen durch und setzt das Objekt nicht mal bzw. attached es nicht.


    Warum ist die VehicleID 21? Muss diese nicht 0 sein da das Fahrzeug TransportLKW[0] ist ??