Ich habs im Script geändert.
Ich werde den Pfad im Trigger mal kürzen auf
sounds/bing.wav
Mal gucken was dann passiert.
EDIT:
Hmm ne, das wars auch nicht:
Ich habs im Script geändert.
Ich werde den Pfad im Trigger mal kürzen auf
sounds/bing.wav
Mal gucken was dann passiert.
EDIT:
Hmm ne, das wars auch nicht:
Der Pfad im Trigger lautet:
mods/Einoed/sounds/bing.wav
Und da liegt die Datei auch drin.
Ich habe auch schon andere Kombinationen ausprobiert.
Der Fehler bleibt der selbe
Also der Lua Fehler ist soweit weg.
Wenn ich die Testmap lade, steht in der Log:
Was zum Geier ist ein oadSample?
Hab das nirgends im Script oder im Trigger drin stehen
Hier mal das aktuelle Scirpt:
[expander]
[lua]
function onCreate(self, id)
local instance = MapSoundTrigger:new(g_server ~= nil, g_client ~= nil);
local index = g_currentMission:addOnCreateLoadedObject(instance);
instance:load(id);
instance:register(true);
print("MapSoundTrigger by Webby successfully loaded!") -- Wenn dieser Text in deiner Log zu finden ist, dann wird dein Trigger korekt geladen.
end;
MapSoundTrigger = {}; --Klassen am Besten mit einem Großbuchstaben beginnen
local MapSoundTrigger_mt = Class(MapSoundTrigger, Object);
function MapSoundTrigger:new(isServer, isClient)
local self = Object:new(isServer, isClient, MapSoundTrigger_mt);
self.className = "MapSoundTrigger_mt";
return self;
end;
function MapSoundTrigger:load(id)
self.id = id;
self.soundFile = getUserAttribute(id, "soundFile");
self.triggerId = id;
addTrigger(self.triggerId, "TriggerCallback", self);
self.mapSoundFile = getUserAttribute(id, "soundFile");
self.mapSoundId = createSample("MSTrigger");
loadSample(self.mapSoundId, mapSoundFile, false);
self.mapSoundPlaying = false;
self.playedSound = false;
end;
function MapSoundTrigger:delete()
removeTrigger(self.triggerId);
end;
function MapSoundTrigger:mouseEvent(posX, posY, isDown, isUp, button)
end;
function MapSoundTrigger:keyEvent(unicode, sym, modifier, isDown)
end;
function MapSoundTrigger:TriggerCallback(triggerId, otherId, onEnter, onLeave, onStay)
if onEnter then
playSample(self.mapSoundId,1,1,0);
end;
end;
function MapSoundTrigger:update(dt)
end;
function MapSoundTrigger:draw()
end;
[/lua]
[/expander]
Kann mir denn keiner sagen wies weiter geht?
Ich kriege es alleine nicht auf die Reihe
So, sorry das ich mich jetzt erst melde, ich musste tatsächlich nochmal arbeiten heute
Hab den Trigger passend geändert und das Script ist soweit jetzt auch als Zip fertig.
Ok ich versuchs mal, danke^^
Geplant ist eigentlich, das der Sound nur einmal abgespielt wird, also bei betreten.
Natürlich soll der Sound wieder zu hören sein, wenn man dann nochmal durchfährt.
EDIT:
Hmm ne, geht nicht.
So langsam gehen mir die Ideen aus... stimmt denn der onCreate aufruf im Trigger?
Ich hab folgendes drin stehen:
MapSoundTrigger.onCreatemapSoundTrigger
Ich bin mir nicht sicher, ob ich das richtig gemacht habe aber es tut sich leider nix.
Hier mal das Script, wie es jetzt habe (Damit der Thread nicht zu lang wird, packe ich es mal in den Expander
[expander]
[lua]
mapSoundTrigger = {}
local mapSoundTrigger_mt = Class(mapSoundTrigger);
print("MapSoundTrigger v1.0 by Webby loaded!");
function mapSoundTrigger:onCreate(id)
g_currentMission:addNonUpdateable(mapSoundTrigger:new(id));
end;
function mapSoundTrigger:new(nodeId)
local instance = {};
setmetatable(instance, mapSoundTrigger_mt);
instance.triggerId = nodeId;
addTrigger(nodeId, "triggerCallback", instance);
instance.isEnabled = true;
return instance;
end;
function mapSoundTrigger:load(id)
self.id = id;
self.soundFile = getUserAttribute(id, "soundFile");
self.triggerId = id;
addTrigger(self.triggerId, "TriggerCallback", self);
mapSoundFile = Utils.getUserAttribute(id, "soundFile");
self.mapSoundId = createSample("MSTrigger");
loadSample(self.mapSoundId, mapSoundFile, false);
self.mapSoundPlaying = false;
self.playedSound = false;
end;
function mapSoundTrigger:delete()
removeTrigger(self.triggerId);
end;
function mapSoundTrigger:mouseEvent(posX, posY, isDown, isUp, button)
end;
function mapSoundTrigger:keyEvent(unicode, sym, modifier, isDown)
end;
function mapSoundTrigger:TriggerCallback(triggerId, otherId, onEnter, onLeave, onStay, otherShapeId)
if onEnter and self.isEnabled then
if (g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode) or (g_currentMission.controlledVehicle ~= nil and otherId == g_currentMission.controlledVehicle.components[1].node) then
if self.playedSound == false then
playSample(self.mapSoundId,1,1,0);
self.playedSound = true;
end;
else
self.playedSound = false;
end;
end;
end;
function mapSoundTrigger:update(dt)
end;
function mapSoundTrigger:draw()
end;
[/lua]
[/expander]
Ich hoffe es weiß jemand Rat, ich brauche das Script für ein Mapprojekt wirklich dringend
LG
Webby
Mach da aus dem self mal instance. Self hat ja schon eine Bedeutung, könnte hier ein Problem darstellen.
Ähmm..ich kann dir gerade nicht ganz folgen
Ok, hier noch mal aktuell:
[lua]
local mapSoundTrigger_mt = Class(mapSoundTrigger);
function mapSoundTrigger:onCreate(id)
g_currentMission:addUpdateable(mapSoundTrigger:new(id));
end;
function mapSoundTrigger:new(nodeId)
local self = {};
setmetatable(self, mapSoundTrigger_mt);
self.triggerId = nodeId;
addTrigger(nodeId, "triggerCallback", self);
self.isEnabled = true;
return self;
end;
[/lua]
Wobei ich nicht weiß was mit 'setmetatable' gemeint ist.
Schade das es nirgends mal eine Auflistung gibt, wo drin steht, was man alles braucht an Funktionen wenn man einen Trigger abfragen will
Es geht überings noch nicht!
Arrrggg...shitte, vergessen
Ich habs jetzt mal so versucht:
[lua]
function mapSoundTrigger:onCreate(id)
g_currentMission:addUpdateable(mapSoundTrigger:new(id));
end;
[/lua]
Ich hoff, das ist richtig so, bring aber auch nix
Hi,
nachdem ich das erste Script jetzt so einigermaßen verstanden habe, wollte ich mich mal an etwas anderes ran wagen.
Die Idee zu dem MapSoundTrigger kam mir, als ich eine Map von MH angespielt habe, auf der eine Katze auf einem Stein saß.
Ich dachte mir, wie cool es wäre, wenn der Flohtransporter miaut, wenn man vorbei fährt/geht.
Also hab ich mein Maya angeworfen, hab einen Würfel gebaut und diesem dann mit diesen UserAttributen ausgestattet:
Dann hab ich mir einige Scripts angeguckt, die auf Trigger zugreifen.
Dabei ist folgendes raus gekommen:
[lua]
MSTrigger = {}
function mapSoundTrigger:load(id)
self.id = id;
self.soundFile = getUserAttribute(id, "soundFile");
self.triggerId = id;
addTrigger(self.triggerId, "TriggerCallback", self);
mapSoundFile = Utils.getUserAttribute(id, "soundFile");
self.mapSoundId = createSample("MSTrigger");
loadSample(self.mapSoundId, mapSoundFile, false);
self.mapSoundPlaying = false;
self.playedSound = false;
end;
function mapSoundTrigger:delete()
removeTrigger(self.triggerId);
end;
function mapSoundTrigger:TriggerCallback(triggerId, otherId, onEnter, onLeave, onStay, otherShapeId)
if onEnter then
if self.playedSound == false then
playSample(self.mapSoundId,1,1,0);
self.playedSound = true;
end;
else
self.playedSound = false;
end;
end;
[/lua]
Hab den Trigger testweise in eine Map verbaut, den richtigen Pfad zur Sounddatei eingegeben und aus dem Script eine ZIP (mit allem drum und dran) gemacht.
Nach Spielstart bleibt die Log sauber aber ich höre keinen Ton weder beim fahren noch beim gehen.
Also wende ich mich wieder mal optimistisch an euch
Wäre nett, wenn da mal jemand drüber fliegen könnte...
cu
Webby
Hi,
wenn ich mal ein Sketchup Model exportiere, nimmt der die Texturen auch mit.
Ich exportiere meist in OBJ mit aktuellen Sketchup Pro.
Zusätzlich wird dabei noch eine *.mat Datei erstellt, welche beim Import in Maya mit ausgelesen wird.
cu
Webby
Na dann hats vielleicht an Laggs gelegen oder sowas
Ich werds auf jeden Fall mal ausgiebig testen, danike dafür
Das Hört sich sehr gut an
Wie sieht es denn im MP aus?
Ich habe bei dem strawSpec öfters mal das Problem, das der im MP spinnt (steht auf Schwade, häckselt aber und umgekehrt).
Verstanden, umgebaut, getestet, FUNZT
Manchmal kann die Lösung so einfach sein.
Vielen Dank!
Wenn mein Kollege wieder On ist, werde ich das Script mal im MP testen.
Hmm..ok, also ich hab das Ganze jetzt erstmal in den draw Bereich gepackt und zwar so:
[lua]
function lowFuelIndicator:draw()
if self.fuelFillLevel <= (self.fuelCapacity / 100) * 90 then -- 90% nur zu Testzwecke
self.lowFuelIndicatorHud:render(); -- Ruft das overlayHud auf
if self.playedSound == false then
playSample(self.lowFuelSoundId,1,1,0);
self.playedSound = true;
else
self.playedSound = false;
end;
end;
end;
[/lua]
Im load Bereich habe ich zusätzlich noch:
[lua]
self.playedSound = false;
[/lua]
..nachgetragen aber es ändert sich nicht, wird immernoch x mal abgespielt.
Hmm..wäre es dann nicht Sinnvoll, den Soundteil in die update Funktion zu verlagern?
Oder gibt es dann Probleme nach dem Tanken?
öhm, eine passende Variable habe ich doch drin mit:
[lua]self.lowFuelSoundPlaying = false;[/lua]
Aber ich versuchs mal mit dem ELSE, von der Logik her sollte es so gehen..
Ich bin eigentlich davon aus gegangen, das die erste 1 (die ja für Loops (Wiederholungen)) steht ausreicht aber war nicht so
EDIT: Die GIANTS Scriptdoku geht überings wieder
Hi,
ich habe das lowFuelIndicator Script etwas erweitert.
Es wird jetzt bei erreichen/unterschreiten der % Zahl ein OverlayHud Bild eingeblendet und ein Sound abgespielt.
Leider wiederholt sich der Sound so lange, bis der Tank wieder voll ist bzw die %-Zahl überschritten ist.
Der Sound soll aber nur 1 mal abgespielt werden (optional vielleichts sogar 1 mal alle 60 Sekunden ).
Ich habe folgenden Code in der load Funktion:
[lua]
lowFuelSoundFile = Utils.getFilename("Sounds/fuelIndicator_bing.wav", self.baseDirectory);
self.lowFuelSoundId = createSample("LFSound");
loadSample(self.lowFuelSoundId, lowFuelSoundFile, false);
self.lowFuelSoundPlaying = false;
[/lua]
In der draw Funktion innerhalb der IF Bedingung steht folgendes:
[lua]
playSample(self.lowFuelSoundId,1,1,0);
[/lua]
Ich habe versucht mehr über die einzelnen Bezeichnungen raus zu finden aber leider ist die GIANTS Script Doku z.Z. nicht erreichbar
Hat jemand einen Tipp für mich?
cu
Webby
Japp, funzt
Ich danke euch allen vielmals für eure Tipps und eure Geduld
Gleich (in der Halbzeit ) versuche ich noch die Implementierung eines hudOverlays und eines Warntones.
Dann bin ich glücklich und werde sicher weiter machen mit dem Scriptkram