Hey Leute, habe mal eine kleine Klasse erstellt für einfache Intros.
Das ganze kann man leicht in sein Script einbauen und es ist sehr leicht anpassbar und sehr simpel dennoch praktisch gehalten.
Diese Klasse ist Clientseitig.
Man kann selber entscheiden wie viele Abteile man will man kann die Schriftgröße, Schriftfarbe und den Schriftstil selbst bestimmten auch den wechsel zum nächsten Part kann man in Sekunden selber angeben auch von wo man guckt und wohin man guckt kann man angeben.
Hier ein Screenshot wie das aussieht:
Externer Inhalt
i.epvpimg.com
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Unten im Dateianhang ist der Download.
Quellcode
Lua
EasyIntro = {}
EasyIntro.__index = EasyIntro;
local screenW, screenH = guiGetScreenSize()
function EasyIntro:Construct()
local self = {};
setmetatable(self, {__index = EasyIntro});
self.part = 0;
self.render = false;
self.textpart = {}
self.textcolor = 255, 255, 255
self.textalpha = 255
self.textfont = "default-bold"
self.textsize = 2.0
self.textseconds = 5000
addEventHandler("onClientRender", root, function() self:Render() end);
return self;
end
local IntroClass = EasyIntro:Construct()
function EasyIntro:AddPart(text, seconds, mx, my, mz, mxw, myw, myz, r, g, b, textalpha, textfont, textsize)
self.textpart[#self.textpart+1] = {}
self.textpart[#self.textpart].text = text;
if not seconds or seconds < 50 then
seconds = self.textseconds
end
self.textpart[#self.textpart].seconds = seconds
if not r or not g or not b then
r, g, b = self.textcolor
end
self.textpart[#self.textpart].r = r
self.textpart[#self.textpart].g = g
self.textpart[#self.textpart].b = b
if not textalpha then
textalpha = self.textalpha
end
self.textpart[#self.textpart].alpha = textalpha;
if not textfont then
textfont = self.textfont
end
self.textpart[#self.textpart].font = textfont;
if not textsize then
textsize = self.textsize
end
self.textpart[#self.textpart].size = textsize;
self.textpart[#self.textpart].camera = {mx, my, mz, mxw, myw, myz}
end
function EasyIntro:PlayIntro()
self.part = self.part + 1;
showChat(false)
showPlayerHudComponent("all", false)
if self.textpart[self.part] then
self.render = false;
fadeCamera(false)
setTimer(function()
fadeCamera(true)
setCameraMatrix(unpack(self.textpart[self.part].camera));
self.render = true;
if self.textpart[self.part+1] then
setTimer(function() self:PlayIntro() end, self.textpart[self.part].seconds, 1);
else
setTimer(function() self:EndIntro() end, self.textpart[self.part].seconds, 1);
return
end
end, 1500, 1)
end
end
function EasyIntro:EndIntro()
showChat(true)
showPlayerHudComponent("all", true)
self.render = false;
-- Hier das rein was nach dem Intro passieren soll --
end
function EasyIntro:Render()
if self.render then
dxDrawRectangle(0, screenH-106, screenW, screenH, tocolor(0, 0, 0, 210), false)
local r, g, b = self.textpart[self.part].r, self.textpart[self.part].g, self.textpart[self.part].b;
dxDrawText(self.textpart[self.part].text, 0, screenH-106, screenW, screenH, tocolor(r, g, b, self.textpart[self.part].alpha), self.textpart[self.part].size, self.textpart[self.part].font, "center", "center", false, false, true, false, false)
end
end
-- DEBUG/TEST INTRO
function CreateMyIntro()
-- ([Text, Sekunden bis zum nachsten Part, Vonwogucken_X, Vonwogucken_Y, Vonwogucken_Z, Hingucken_X, Hingucken_Y, Hingucken_Z, Rot, Grün, Blau, Alpha, Textfont, Textgröße])
IntroClass:AddPart("Part-1", 2000, 0, 0, 0, 0, 0, 0, 255, 0, 0, 255, nil, nil);
IntroClass:AddPart("Part-2", 2000, 0, 0, 0, 0, 0, 0, 255, 0, 0, 255, nil, nil);
IntroClass:PlayIntro()
end
addCommandHandler("ci", CreateMyIntro)
Alles anzeigen