Beiträge von Webby

    Hi,


    ich würde gerne ein Objekt an einen Anhänger über Maus steuern ähnlich wie den Teleskoparm beim Agrovector.
    Hier mal ein Auszug aus der XML:

    XML
    <mouseControls>
    <mouseControl iconFilename="dataS2/menu/mouseControlsHelp/tool_dav_arm1.png" mouseButton="LEFT" mouseAxis="Y" axis="AXIS_TELEHANDLER_ARM" />
    <mouseControl iconFilename="dataS2/menu/mouseControlsHelp/tool_dav_arm2.png" mouseButton="RIGHT" mouseAxis="Y" axis="AXIS_TELEHANDLER_INNER_ARM" />
    <mouseControl iconFilename="dataS2/menu/mouseControlsHelp/tool_dav_tool.png" mouseButton="LEFT" mouseAxis="X" axis="AXIS_TELEHANDLER_TOOL" />
    </mouseControls>


    Mein Problem ist, ich brauche bei mouseButton="RIGHT" auch die mouseAxis="X".
    Leider schlugen meine Versuche immer fehl.


    Gibt es eine Möglichkeit oder ist das von GIANTS gar nicht vorgesehen?


    Ich habe bereits versuche mit axis="AXIS_TELEHANDLER_TOOL_2 gemacht aber es funktioniert nicht :(


    Lg
    Webby

    Tja und wieder einmal falle ich vor Erfurcht auf die Knie.
    Super erklärt, werde das mal umsetzten und testen.


    Vielen Dank für deine Mühe. :thumbsup:


    Hier zeigt sich wieder mal sehr gut, das man auch die vermeintlich kompliziertesten Sache verstehen kann, wenn man es gut erklärt bekommt ;)


    Lg
    Webby

    Hi,


    ich habe seit längerem das BalloonWheel Script raus welches auf Basis der LUA Video Tuts entstand.
    Leider habe ich damit ein Problem.


    Im Multiplayer kann ich als Host die Balloon Reifen einschalten und sehen aber als Client nicht.


    Ich habe mir zu dem Thema mal einige andere Scripts angeguckt (Einblendung, toggleAnimatedParts u.s.w).
    Wenn ich das richtig verstehe muss man ein Event einbauen ähnlich wie das hier:


    [lua]Setblends1Event = {};
    Setblends1Event_mt = Class(Setblends1Event, Event);
    InitEventClass(Setblends1Event, "Setblends1Event");
    function Setblends1Event:emptyNew()
    local self = Event:new(Setblends1Event_mt);
    self.className="Setblends1Event";
    return self;
    end;
    function Setblends1Event:new(object, active)
    local self = Setblends1Event:emptyNew()
    self.active = active;
    self.object = object;
    return self;
    end;
    function Setblends1Event:readStream(streamId, connection)
    local id = streamReadInt32(streamId);
    self.active = streamReadBool(streamId);
    self.object = networkGetObject(id);
    self:run(connection);
    end;
    function Setblends1Event:writeStream(streamId, connection)
    streamWriteInt32(streamId, networkGetObjectId(self.object));
    streamWriteBool(streamId, self.active);
    end;
    function Setblends1Event:run(connection)
    self.object:setblends1Visibility(self.active, true);
    if not connection:getIsServer() then
    g_server:broadcastEvent(Setblends1Event:new(self.object, self.active), nil, connection, self.object);
    end;
    end;[/lua]


    Leider habe ich keine Ahnung wie das bei mir aussehen müsste. ;(
    Hier mal das aktuelle Script:


    [lua]balloonWheels = {};


    function balloonWheels.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Motorized, specializations);
    end;


    function balloonWheels:load(xmlFile)
    self.wheelToBalloonRearLeft = Utils.indexToObject(self.components, getXMLString(xmlFile, "vehicle.balloonWheels.wheelToBalloonRearLeft#index"));
    self.wheelToBalloonRearRight = Utils.indexToObject(self.components, getXMLString(xmlFile, "vehicle.balloonWheels.wheelToBalloonRearRight#index"));
    self.wheelToBalloonFrontLeft = Utils.indexToObject(self.components, getXMLString(xmlFile, "vehicle.balloonWheels.wheelToBalloonFrontLeft#index"));
    self.wheelToBalloonFrontRight = Utils.indexToObject(self.components, getXMLString(xmlFile, "vehicle.balloonWheels.wheelToBalloonFrontRight#index"));

    self.bwRLX, self.bwRLY, self.bwRLZ = getScale(self.wheelToBalloonRearLeft);
    self.bwRRX, self.bwRRY, self.bwRRZ = getScale(self.wheelToBalloonRearRight);
    self.bwFLX, self.bwFLY, self.bwFLZ = getScale(self.wheelToBalloonFrontLeft);
    self.bwFRX, self.bwFRY, self.bwFRZ = getScale(self.wheelToBalloonFrontRight);

    self.bwTRLX, self.bwTRLY, self.bwTRLZ = getTranslation(self.wheelToBalloonRearLeft);
    self.bwTRRX, self.bwTRRY, self.bwTRRZ = getTranslation(self.wheelToBalloonRearRight);
    self.bwTFLX, self.bwTFLY, self.bwTFLZ = getTranslation(self.wheelToBalloonFrontLeft);
    self.bwTFRX, self.bwTFRY, self.bwTFRZ = getTranslation(self.wheelToBalloonFrontRight);

    self.balloonWheelsWidth = getXMLFloat(xmlFile, "vehicle.balloonWheels#wheelWidth");
    self.balloonWheelsAxleDiv = getXMLFloat(xmlFile, "vehicle.balloonWheels#axleDiv");
    self.isSelectable = true
    self.balloonWheelsState = false;
    end;


    function balloonWheels:delete()
    end;


    function balloonWheels:mouseEvent(posX, posY, isDown, isUp, button)
    end;


    function balloonWheels:keyEvent(unicode, sym, modifier, isDown)
    end;


    function balloonWheels:update(dt)
    if self:getIsActiveForInput() then
    if InputBinding.hasEvent(InputBinding.BALLOONWHEELS) then
    self.balloonWheelsState = not self.balloonWheelsState;
    end;

    if self.balloonWheelsState == true then
    setScale(self.wheelToBalloonRearLeft, (self.bwRLX / 100) + self.balloonWheelsWidth, self.bwRLY ,self.bwRLZ);
    setScale(self.wheelToBalloonRearRight, (self.bwRRX / 100) + self.balloonWheelsWidth, self.bwRRY ,self.bwRRZ);
    setScale(self.wheelToBalloonFrontLeft, (self.bwFLX / 100) + self.balloonWheelsWidth, self.bwFLY ,self.bwFLZ);
    setScale(self.wheelToBalloonFrontRight, (self.bwFRX / 100) + self.balloonWheelsWidth, self.bwFRY ,self.bwFRZ);

    setTranslation(self.wheelToBalloonRearLeft, self.bwTRLX + self.balloonWheelsAxleDiv, self.bwTRLY, self.bwTRLZ);
    setTranslation(self.wheelToBalloonRearRight, self.bwTRRX - self.balloonWheelsAxleDiv, self.bwTRRY, self.bwTRRZ);
    setTranslation(self.wheelToBalloonFrontLeft, self.bwTFLX + self.balloonWheelsAxleDiv, self.bwTFLY, self.bwTFLZ);
    setTranslation(self.wheelToBalloonFrontRight, self.bwTFRX - self.balloonWheelsAxleDiv, self.bwTFRY, self.bwTFRZ);

    elseif self.balloonWheelsState == false then
    setScale(self.wheelToBalloonRearLeft, self.bwRLX, self.bwRLY ,self.bwRLZ);
    setScale(self.wheelToBalloonRearRight, self.bwRRX, self.bwRRY ,self.bwRRZ);
    setScale(self.wheelToBalloonFrontLeft, self.bwFLX, self.bwFLY ,self.bwFLZ);
    setScale(self.wheelToBalloonFrontRight, self.bwFRX, self.bwFRY ,self.bwFRZ);

    setTranslation(self.wheelToBalloonRearLeft, self.bwTRLX, self.bwTRLY, self.bwTRLZ);
    setTranslation(self.wheelToBalloonRearRight, self.bwTRRX, self.bwTRRY, self.bwTRRZ);
    setTranslation(self.wheelToBalloonFrontLeft, self.bwTFLX, self.bwTFLY, self.bwTFLZ);
    setTranslation(self.wheelToBalloonFrontRight, self.bwTFRX, self.bwTFRY, self.bwTFRZ);

    end;
    end;
    end;


    function balloonWheels:draw()
    if self.balloonWheelsState then
    g_currentMission:addHelpButtonText(g_i18n:getText("BALLOONOFF"), InputBinding.BALLOONWHEELS);
    else
    g_currentMission:addHelpButtonText(g_i18n:getText("BALLOONON"), InputBinding.BALLOONWHEELS);
    end;
    end;


    function balloonWheels:loadFromAttributesAndNodes(xmlFile, key, resetVehicles)
    local balloonWheelsState = getXMLBool(xmlFile, key.."#balloonWheelsState");
    if balloonWheelsState ~= nil then
    self.balloonWheelsState = balloonWheelsState;
    end;
    return BaseMission.VEHICLE_LOAD_OK;
    end;


    function balloonWheels:getSaveAttributesAndNodes(nodeIdent)
    local attributes = ""
    if self.balloonWheelsState ~= nil then
    attributes = ' balloonWheelsState="'.. tostring(self.balloonWheelsState) ..'"';
    end;
    return attributes, nil;
    end;


    function balloonWheels:onLeave()
    end;
    [/lua]


    Ich hoffe ihr könnt mir da weiter helfen.


    Lg
    Webby

    Jo hab ich gestern Abend auch noch gesehen, ändert aber leider nichts an der Funktionslosigkeit und wenn ich ehrlich bin, ich kanns mir nicht erklären.


    Setzte ich das setVisibility(self.Obj, false); in die Load Funktion, so geht das Problemlos.


    Nur onAttach /onDetach wird ignoriert, warum auch immer Oo


    Ich habe auch schon die Voraussetzung Attachable durch Motorized getauscht, weil es sich bei dem Mod um einen Schlepper handelt und nicht um einen Anhänger aber das Ergebnis blieb leider das gleiche.


    lg
    Webby

    Hi,


    ich wollte mir ein Objekt einblenden lassen wenn, wenn ich einen Anhänger dran mache und ausblenden, wenn ich den Anhänger abhänge.
    Ich nutze dafür die Funktionen onAttach und onDetach nur leider scheinen diese Funktionen in LS13 (noch Patch 1.4!) nicht mehr zu funktionieren.


    Das Objekt wird nicht ein/ausgeblendet.
    [lua]


    ShowObjectOnAttach = {};


    function ShowObjectOnAttach.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Attachable, specializations);
    end;


    function ShowObjectOnAttach:load(xmlFile)
    self.Obj = Utils.indexToObject(self.components, getXMLString(xmlFile, "vehicle.ShowObjectOnAttach#Obj"));
    end;


    function ShowObjectOnAttach:draw()
    end;


    function ShowObjectOnAttach:delete()
    end;


    function ShowObjectOnAttach:mouseEvent(posX, posY, isDown, isUp, button)
    end;


    function ShowObjectOnAttach:keyEvent(unicode, sym, modifier, isDown)
    end;


    function ShowObjectOnAttach:update()
    end;


    function ShowObjectOnAttach:onAttach()
    setVisibility(self.Obj, true);
    end;


    function ShowObjectOnAttach:onDettach()
    setVisibility(self.Obj, false);
    end;
    [/lua]


    Weiß da jemand eine Lösung?


    lg
    Webby

    Hi,


    ich suche eine Möglichkeit, einen String aus der Fahrzeug.xml auszulesen und durch Tastendruck einen neuen zu setzten.


    Das Ganze soll ein kleines Script werden mit dem ich den Fahrzeugnamen während des Spielens ändern möchte.


    Funktion:
    Nach Spielstart oder Kauf des Fahrzeugs wird der Name aus der Fahrzeug.xml ausgelesen.
    Wenn ich jetzt z.B Taste 9 drücke, soll der Name geändert werden.
    Der zuändernde Name soll im Script oder in der XML vorgegeben werden.
    Wenn ich die Taste 9 erneut drücke, soll der original Name wieder hergestellt und angezeigt werden.


    Das Ganze ist fürs LU bzw. dem MP gedacht, damit man im Inspector Mod schon sehen kann, wer auf welchen Schlepper sitzt :)


    Das Auslesen des Strings kriege ich hin aber ich weiß nicht wie ich einen String in der XML setzte :/


    Gibt es da ein ähnliches Script oder weiß jemand wie ich das bewerkstelligen könnte?


    lg
    Webby

    Zitat

    CollisionMask des Triggers überprüft.


    Ist die selbe wie beim Map Sound Trigger, wüsste auch nicht was ich sonst wählen sollte.


    Zitat

    Und erstmal überprüft ob das Callback aufgerufen wird?


    Wenn du mir verrätst wie man das macht, kann ich es prüfen ;)

    Also...


    ich habs jetzt so geschrieben:
    [lua]
    function MyPicTrigger:update(dt)
    if self.showhudInfo then
    self.hudInfoOverlay:render();
    end;
    end;
    [/lua]


    Log bleibt sauber aber das Bild wird nicht angezeigt :/
    Ich habe es auch schon mit == true versucht, selbes Ergebnis :(

    Hmm


    ok ich habe den
    [lua]self.hudInfoOverlay:render();[/lua]
    aus dem triggerCallBack raus genommen.


    Ich weiß jetzt nur nicht wie es in
    [lua]function MyPicTrigger:update(dt)[/lua]
    aussehen muss.


    Ich denke ich brauche eine IF Abfrage dafür?

    Hi,


    ich habe einen Trigger gebastelt, welcher beim betreten ein Bild als Overlay anzeigen soll. Leider wird das Bild nicht geladen.
    Log ist sauber und das Script wird auch geladen.


    Kurz zur Funktionsweise.
    Der Trigger wird, ganz normal, mit dem GE auf der Map verbaut.
    Wenn der Spiele diesen zu Fuß betritt, soll ein Bild angezeigt werden, welches im Script angegeben ist.
    Verläst der Spieler den Trigger, soll auch das Bild wieder ausgeblendet werden.


    Nach dem Spielstart wird in der Log angezeigt, das das Script geladen wurde aber beim betreten des Triggers erscheint kein Bild.
    Die Log ist nach wie vor sauber.


    Hier mal das Script soweit wie ich es bis jetzt habe (Wird überings über die Map modDesc.xml aufgerufen!):
    [expander]
    [lua]
    MyPicTrigger ={};


    local MyPicTrigger_mt = Class(MyPicTrigger, Object);


    function onCreate(self, id)
    local instance = MyPicTrigger:new(g_server ~= nil, g_client ~= nil);
    local index = g_currentMission:addOnCreateLoadedObject(instance);
    instance:load(id);
    instance:register(true);
    end;


    function MyPicTrigger:new(isServer, isClient)
    local self = Object:new(isServer, isClient, MyPicTrigger_mt);
    self.className = "MyPicTrigger";
    return self;
    end;


    function MyPicTrigger:load(name)

    self.triggerId = name;
    addTrigger(name, "triggerCallback", self);

    self.hudInfoPosX = 0.5;
    self.hudInfoWidth = 0.4-0.012;
    self.hudInfoPosY = 0.5;
    self.hudInfoHeight = 0.4;


    self.infoPanelInfoPath = Utils.getFilename("test.dds", self.baseDirectory); -- Das Bild liegt im selben Verzeichnis wie das Script.
    sefl.hudInfoOverlay = Overlay:new("hudInfoOverlay", self.infoPanelInfoPath, self.hudInfoPosX, self.hudInfoPosY, self.hudInfoWidth, self.hudInfoHeight);


    self.showhudInfo = false;
    end;


    function MyPicTrigger:delete()
    removeTrigger(self.triggerId);
    end;


    function MyPicTrigger:update(dt)


    end;


    function MyPicTrigger:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay, otherShapeId)
    if onEnter then
    if (g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode) then
    self.hudInfoOverlay:render();
    self.showhudInfo = true;
    end;
    end;
    end;
    print("MyPicTrigger v1.0 loaded!")
    g_onCreateUtil.addOnCreateFunction("MyPicTriggerOnCreate", MyPicTrigger.onCreate);
    [/lua]
    [/expander]


    Der Aufruf im Trigger erfolgt so:

    Code
    modOnCreate.MyPicTriggerOnCreate


    Hat da jemand eine Idee, wie ich das Ganze ans Laufen bekomme?


    LG
    Webby

    Lol, ja das Problem kenne ich^^
    Naja ich versuche erstmal mir den Wert auszulesen und zu speichern, damit ich ihn später wieder setzen kann.
    Problem ist, das ich 2 Torque Werte in der XML stehen hab :(

    XML
    <torque rpm="100" torque="0.7"/>
    <torque rpm="2400" torque="0.92"/>


    Naja mal gucken.

    Hmm ok, dann werde ich es mal mit torque versuchen, ich hatte gehofft, das eine Erhöhung der Geschwindigkeit ausreichen würde.
    Da diese ja auch am Berg erwünscht wäre.


    Also meinst du, es wäre Sinnvoll erstmal den aktuellen Torque Wert auszulesen und diesen dann 'langsam' zu steigern?
    Das Auslesen kriege ich hin, aber beim langsam steigern/senken wird es für mich eng werden 8|

    Hi,


    ich brauche für meinen Case Steiger ein Script welches dem Fahrzeug im Drehzahlbereich um die 1000 RpM einen Leistungsschub verpasst, ähnlich wie ein Turbolader das auch macht.
    Gerade am Berg "kackt" der Schlepper beim ziehen von schweren Lasten gerne mal ab.


    Also hab ich mich mal auf die Suche nach einen Script gemacht, was sowas kann.
    Nach einer Weile fand ich in einem Schlepper ein Nitro Script, welches mit einer Taste ausgelöst wird.
    Das Script habe ich als Grundlage für mein TurboCharger Script benutzt(NEIN, ich habe keinen Code kopiert! Lediglich die Funktionsweise ist ähnlich!).


    Bei meinem Script soll ab einer Drehzahl von 1000 RpM ein Overlayicon eingeblendet werden und es soll eine Drehzahlerhöhung zum ca. 1500 rpm erfolgen.
    Die Werte sind erstmal nur Testweise!


    Zu meinem Erstaunen lud das Script auf Anhieb fehlerfrei :D
    Wenn die angegebene Drehzahl erreicht wird erscheint das Icon am rechten Rand aber die erhoffte Leistung bleibt aus :(


    Hier mal meinem Script:
    [lua]
    turboCharger = {};


    function turboCharger.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Motorized, specializations);
    end;


    function turboCharger:load(xmlFile)
    self.hudTurboChargerPosX = 0.95;
    self.hudTurboChargerWidth = 0.04;
    self.hudTurboChargerPosY = 0.61;
    self.hudTurboChargerHeight = 0.06;
    self.infoPanelTurboChargerONPath = Utils.getFilename("Scripts/tcHud.dds", self.baseDirectory);
    self.hudTurboChargerONOverlay = Overlay:new("TurboChargerON", self.infoPanelTurboChargerONPath, self.hudTurboChargerPosX, self.hudTurboChargerPosY, self.hudTurboChargerWidth, self.hudTurboChargerHeight);
    self.showhudTurboCharger = false;
    end;


    function turboCharger:delete()
    if self.hudTurboChargerONOverlay ~= nil then
    self.hudTurboChargerONOverlay:delete();
    end;
    end;


    function turboCharger:mouseEvent(posX, posY, isDown, isUp, button)
    end;


    function turboCharger:keyEvent(unicode, sym, modifier, isDown)
    end;


    function turboCharger:update(dt)

    if self.motor.lastMotorRpm > 1000 then
    self.showhudTurboCharger = true;
    self.motor.maxRpm[3] =2500
    self.fuelUsage =0.0049
    else
    self.showhudTurboCharger = false;
    self.motor.maxRpm[3] =2000
    self.fuelUsage =0.0038
    end;

    end;


    function turboCharger:draw()
    if self.showhudTurboCharger == true then
    self.hudTurboChargerONOverlay:render();
    end;
    end;
    [/lua]


    Ich bin mir noch nicht sicher, wofür die [3] steht, ich vermute mal für die 3te Fahrstufe ?(
    Auf jeden Fall wird so keine Leistungssteigerung erzieht :(


    Ich weiß, das man die Leistung auch mit den Werten in der XML ändern kann aber dort sind sie dann dauerhaft und das ist nicht gewollt!
    Wenn das Script soweit funktioniert wollte ich es so machen, das diese Leistungssteigerung nur erzielt wird, wenn ein Gerät angehängt ist (onAttach), da der Schlepper bei Leerfahrt von der Leistung her ok ist.


    Hat da jemand eine Idee warum es nicht geht?


    LG
    Webby