[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
aber wie liest er dann aus welche Tanke am nächsten dran am Spieler ist?
-
Hast du denn bereits die Tankstellen im Code definiert, oder hast du da noch gar nichts gemacht?
-
ne ich bin grade auf der Arbeit ich würde die Tankstellen aber mit nem enum und hem Array erstellen. Das Navi hab ich auch vor im Dialog mit Kategorien machen und dann auf Tankstelle den Array auslesen.
-
stock GetClosestFuelstation(playerid)
{new Float:Distance;
new Float:OldDistance = 9999.0;
new closest;for(new tankid=0; tankid < MAX_TANKEN; tankid++)
{
Distance = GetPlayerDistanceFromPoint(playerid, Tanken[tankid][pos_x], Tanken[tankid][pos_y], Tanken[tankid][pos_z]);if(Distance <= OldDistance)
{
closest = tankid;
OldDistance = Distance;
}
}return closest;
}
Du musst dir das dann so anpassen, dass es mit deinem Tankstellen-Array übereinstimmt -
Ahh okay super danke
-
Hi, ich weiß das man 3D TextLabels an Spieler attachen kann, funktioniert das auch mit einem Actor?
-
-
Hi, ich weiß das man 3D TextLabels an Spieler attachen kann, funktioniert das auch mit einem Actor?
Du kannst es fest an der Position über dem Actor erstellen, da er sich sowieso nicht bewegt. Daher gibt es keine Attach Funktion für Actoren.
-
Du kannst es fest an der Position über dem Actor erstellen, da er sich sowieso nicht bewegt. Daher gibt es keine Attach Funktion für Actoren.
Deswegen hab ich meinen Link auch durchgestrichen, falls dieser Text auch etwas auf mich bezogen ist.^^
-
Deswegen hab ich meinen Link auch durchgestrichen, falls dieser Text auch etwas auf mich bezogen ist.^^
Nein, überhaupt nicht
Habe ja gesehen, dass es durchgestrichen war. -
Du kannst es fest an der Position über dem Actor erstellen, da er sich sowieso nicht bewegt. Daher gibt es keine Attach Funktion für Actoren.
Man kann ja ein Actor eine Animation ausführen lassen, sprich er bewegt sich dann. Und wenn ich mich nicht irre, existieren verschiedene Includes die das Ganze nochmal erweitern, siehe unten.
Habe übrigends jetzt beim suchen auch eine Funktion entdeckt mit der man 3D Texte attachen kann
http://forum.sa-mp.com/showthread.php?t=573504
Lösung: (Funktioniert nur mit der Include)
gActor = CreateActor(255, 0.0, 0.0, 10.0, 90.0);gAttachedLabel = Attach3DTextLabelToActor(gActor, "I am an actor!\nPress {FFFF00}'Y'{FFFFFF} to interact with me!", 0xFFFFFFFF, 0.0, 0.0, 0.3, 10.0, 0);
-
Man kann ja ein Actor eine Animation ausführen lassen, sprich er bewegt sich dann.
Die Include bewegt das Label allerdings auch nicht, wenn der Actor sich etwas bewegt, sondern erstellt das Label lediglich an der Position des Actors
-
Soo ich habe das soweit alles aufgebaut aber jetzt kommt kein Checkpoint wenn ich die nächste Tanke im Navi anklicke.
Code: Der Array
Alles anzeigennew nextTanke[][NaviPos] = { {2114.7900,920.1992,10.5474}, {1595.9912,2199.1687,10.5474}, {608.5964,1699.5665,6.7211}, {-1328.4913,2677.4519,49.7896}, {-1465.1559,1864.5055,32.3599}, {-2407.3887,976.3512,45.0240}, {-2023.9780,156.6753,28.5630}, {-1605.6394,-2714.2671,48.2633}, {-88.7803,-1163.4836,1.9787}, {1003.8885,-940.4520,41.8860}, {1938.5105,-1773.1122,13.1118}, {653.1378,-570.2964,16.0630}, {2147.6875,2747.8982,10.5474} };
Code: Der Dialog
Alles anzeigenif(dialogid == DIALOG_NAVI){ if(response){ if(listitem == 0){ new tankid; tankid = GetClosestFuelstation(playerid); SetPlayerCheckpoint(playerid, nextTanke[tankid][Navi_X], nextTanke[tankid][Navi_Y], nextTanke[tankid][Navi_Z], 5); SendClientMessage(playerid, GELB, "[NAVI] {FFFFFF}Die Route wird berechnet..."); } } return 1; }
-
Zeig mal dein geändertes GetClosestFuelstation(playerid)
-
Kommt die Nachricht?
Wie sieht deine GetClosestFuelstation Funktion aus? -
Nein die nachricht kommt auch nicht.
Code
Alles anzeigenstock GetClosestFuelstation(playerid){ new Float:Distance; new Float:OldDistance = 9999.0; new closest; for(new tankid=0; tankid < MAX_TANKEN; tankid++) { Distance = GetPlayerDistanceFromPoint(playerid, nextTanke[tankid][Navi_X], nextTanke[tankid][Navi_Y], nextTanke[tankid][Navi_Z]); if(Distance <= OldDistance) { closest = tankid; OldDistance = Distance; } } return closest; }
-
Dann setze mal Nachrichten oder prints vor die response und listitem Abfrage, um zu schauen, ob der Dialog überhaupt ausgeführt wird.
-
Die Nachrichten schreibt er.
Code
Alles anzeigenpublic OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_NAVI){ SendClientMessage(playerid, WEISS, "Debug1 (Navi)"); if(response){ SendClientMessage(playerid, WEISS, "Debug2 (response)"); if(listitem == 0){ new tankid; tankid = GetClosestFuelstation(playerid); SetPlayerCheckpoint(playerid, nextTanke[tankid][Navi_X], nextTanke[tankid][Navi_Y], nextTanke[tankid][Navi_Z], 5); SendClientMessage(playerid, GELB, "[NAVI] {FFFFFF}Die Route wird berechnet..."); } } return 1; }
-
zeig uns mal deine Tankstellen also den Array und die Funktion die du umstellen musstest