Sprache Deutsch Language English

Script Dokumentation LS 2015 - TeleportTrigger (Patch 1.3)

Script Dokumentation Übersicht

scripts/triggers/TeleportTrigger.lua

Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de
1-- TeleportTrigger class
2--
3-- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved.
4
5TeleportTrigger = {}
6
7local TeleportTrigger_mt = Class(TeleportTrigger);
8
9function TeleportTrigger:onCreate(id)
10 g_currentMission:addUpdateable(TeleportTrigger:new(id));
11 --print("Created TeleportTrigger, id: ", id);
12end;
13
14function TeleportTrigger:new(name)
15 local instance = {};
16 setmetatable(instance, TeleportTrigger_mt);
17
18 instance.triggerId = name;
19 if g_currentMission:getIsClient() then
20 addTrigger(name, "triggerCallback", instance);
21 end;
22
23 instance.triggerSymbol = getChildAt(name, 0);
24 instance.triggerPlayerSpawn = getChildAt(name, 1);
25 local x, y, z = getTranslation(instance.triggerSymbol);
26 instance.posY = y;
27 instance.jump = 0.05;
28
29 instance.isEnabled = true;
30
31 return instance;
32end;
33
34function TeleportTrigger:delete()
35 if g_currentMission:getIsClient() then
36 removeTrigger(self.triggerId);
37 end;
38end;
39
40function TeleportTrigger:update(dt)
41 if self.isEnabled then
42 rotate(self.triggerSymbol, 0, 0.001 * dt, 0);
43
44 self.jump = self.jump - 0.00015 * dt;
45 local x, y, z = getTranslation(self.triggerSymbol);
46 setTranslation(self.triggerSymbol, x, y + self.jump, z);
47
48 if y + self.jump <= self.posY then
49 self.jump = 0.05;
50 end;
51 end;
52end;
53
54function TeleportTrigger:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay)
55 if onEnter and self.isEnabled and g_currentMission.controlPlayer and g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode then
56 -- TODO: do a black fade here
57
58 local x,y,z = getWorldTranslation(self.triggerPlayerSpawn);
59 local dx, dy, dz = localDirectionToWorld(self.triggerPlayerSpawn, 0, 0, 1);
60 g_currentMission.player:moveToAbsolute(x,y,z);
61 g_client:getServerConnection():sendEvent(PlayerTeleportEvent:new(x,y,z));
62 g_currentMission.player.rotY = Utils.getYRotationFromDirection(dx, dz) + math.pi;
63 end;
64end;
Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de
Script Dokumentation Übersicht