Hiermit holt er mir ja den, der am nächsten ist, muss ich davor die abfrage machen, ob er überhaupt in der Nähe von einen der Objekte ist?
Beiträge von Jameso
-
-
Danke, werde ich so ausprobieren.
Ich habe zwei nebeneinander, sagen wir (x,y,z,):
100, 100, 15
100, 95, 15Ich 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.200004Beide 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 aberJetzt 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); }
Cstock 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; }
Cstock ZollMautzu (p,i) { switch(i) { case 0: MoveDynamicObjectRot(ZollMaut[i], 0.000000, 270, 135.000000, false);
-
-
Mein Fehler, kommt vom Copy Pasten
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.
Das ist die Objektrotation beim erstellen
CSSocmd:rampeauf(playerid,params[]) { new i = GetZollMautPos(playerid); if(i == -1) return 1; SetTimerEx("@checkZoneMaut", 3000, 0, "ii", playerid, i); return 1; }
Cstock GetZollMautPos(playerid) { if(IsPlayerInRangeOfPoint(playerid,7.0, //...)) return 0; if(IsPlayerInRangeOfPoint(playerid,7.0, //...) return 0; return -1; }
-
@Andosius die Informationen reichen doch aus?
Ich erkläre es mal, da Code nicht so leicht zu verstehen ist ohne eine genaue Erklärung.Cstock 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.Cif(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 andere Problem bezieht sich nicht drauf ^^. Danke dir.
ich weiß halt nicht wie ich den GetLKWIndex abfragen kann ohne in dem Fahrzeug zu sein. -
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.
-
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ürzenHabe versucht alles außer die Funktion zu löschen im Streamerfunctions
C
Alles anzeigen/* */ #include <a_samp> // Definitions #define AttachDynamic3DTextToPlayer(%1,%2) Streamer::SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_ATTACHED_PLAYER,(%2)) #define AttachDynamic3DTextToVehicle(%1,%2) Streamer::SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_ATTACHED_VEHICLE,(%2))
Funktioniert alles nicht -
Zitat von Kaliber
Nutze das Include: forum.sa-mp.com/showthread.php?t=590918
Ich kann das Include nicht benutzten, da man dafür eine alte Streamer Version brauch.
Gibt es keine andere Lösung? -
@iTsRooT geht doch nicht, bei 31 characters ist schluss, da steht schon die richtige Funktion, sonst wäre es ja undefined.
Hä, das ist komisch -
-
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.
CTransportLabel[i] = CreateDynamic3DTextLabel( "- Test -", 0xFF0000AA, 0.0, 0.0, 0.0, 15.0, 0, 1 );
-
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
Code
Alles anzeigen* Update Functions: * * UpdateAllDynamicItem(type); * * UpdateAllDynamicElements(); * * UpdateAllDynamicObjects(); * * UpdateAllDynamicPickups(); * * UpdateAllDynamicCPs(); * * UpdateAllDynamicRaceCPs(); * * UpdateAllDynamicMapIcons(); * * UpdateAllDynamic3DTextLabels(); * * UpdateAllDynamicAreas(); * * UpdateAllDynamicActors(); * * UpdateAllDynamicVehicles();
-
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 -
Fehler gefunden, ich stand dumm auf der Stelle was der Fehler ist. Das Objekt spawnt erst nachdem das Fahrzeug bewegt wurde...
Zitat von Kaliberund 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". -
Code
Alles anzeigenif(LKWIndex[i] == 0) { printf("VehicleID: %d | Variable: %d ",TransportLKW[i],LKWIndex[i]); TransportLKWobject[3] = CreateDynamicObject(X); AttachDynamicObjectToVehicle(TransportLKWobject[3], TransportLKW[i], X); } else if(LKWIndex[i] == 1) { printf("VehicleID: %d | Variable: %d ",TransportLKW[i],LKWIndex[i]); DestroyDynamicObject(TransportLKWobject[3]); }
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 ??