
cheez3d
Members-
Posts
290 -
Joined
-
Last visited
Everything posted by cheez3d
-
addEventHandler("onPlayerChangeNick", getRootElement(), function(oldNick, newNick) if (newNick) then outputChatBox(""..oldNick.." --> "..newNick.."",getRootElement(), 255, 100, 100, true) local logFile = fileExists("logs/logs.log") and fileOpen("logs/logs.log") or fileCreate("logs/logs.log") if (logFile) then local size = fileGetSize(logFile) fileSetPos(logFile, size) fileWrite(logFile, ""..oldNick.." --> "..newNick.."") fileClose(logFile) end end end)
-
Helvetica Neue Bold
-
local Table = {level = 1}; Table.maxcount = 1000+1000*Table.level
-
And this should also be available for dxCreateShader!
-
More like math.randomseed(getRealTime().timestamp);
-
Lua makes use of the C string formatting. %d represents a digit and %s represents an array of characters. http://www.cplusplus.com/reference/cstdio/printf/ When you do print(("%d"):format(10)) it will print 10 instead of %d (it replaces %d with 10). When you do print(("String: %s"):format("This is my string!")) it will print "String: This is my string!" instead of "String: %s".
-
https://wiki.multitheftauto.com/wiki/Element_tree You could also make it even faster by only ataching the event to the menuButton instead of guiRoot. local RenderHandler = function() dxDrawImage(screenWidth/2.20,screenHeight/1.50,150,40,'images/exitmenu_hover.png'); end; local ButtonEnter = function() addEventHandler("onClientRender",root,RenderHandler); end; addEventHandler("onClientMouseEnter",menuButton,ButtonEnter,false); local ButtonExit = function() removeEventHandler("onClientRender",root,RenderHandler); end; addEventHandler("onClientMouseLeave",menuButton,ButtonExit,false) That 4th false in the addEventHandler will make sure the event will not propagate trough the parent and the children of the button.
-
local String = [[Name: %s UpTime: %s Occupation: %s Health: %d Group: %s Group Rank: %s Cash %d Wanted Level: %d Country: %s]]; guiSetText(GUIEditor.label[1],String:format(playername,getElementData(thePlayer,"UpTime"),getElementData(thePlayer,"Occupation"),getElementHealth(thePlayer),getElementData(thePlayer,"Group"),getElementData(thePlayer,"GroupRank"),getPlayerMoney(thePlayer),getPlayerWantedLevel(thePlayer),getElementData(thePlayer,"Country")));
-
Stop posting if you don't know what you're talking about...
-
No. Every resourceRoot has it's own guiRoot.
-
Don't use root, use guiRoot.
-
local Punishments = {}; -- Table to store punishments; local PunishPlayer = function(punisher,player,type,time) -- Player to punish, type of punishment, time; if Punishments[player] then return false; -- Player is already punished; end; Punishments[player] = { Punisher = punisher, Time = time, Type = type; }; return Punishments[player]; end; addCommandHandler("punish",function(punisher,_,player,type,time) PunishPlayer(punisher,getPlayerFromName(player),type,time); end);
-
tocolor() converts your numbers to Hex and then it converts that Hex back to one decimal number. tocolor(255,255,255) => 0xFFFFFF => 16777215 (without alpha); tocolor(255,255,255,255) => 0xFFFFFFFF => 4294967295 (with alpha); To get the Hex back from the decimal number just format the string "%x" like this: ("%x"):format(tocolor(r,g,b)) And that is your Hex. If you want to go deeper and convert that Hex back to 3 or 4 decimals you do it like this: local Hex = ("%x"):format(tocolor(r,g,b)); local Color = {}; for i = 1,6,2 do table.insert(Color,tonumber(Hex:sub(i,i+1),16)); -- supply 16 as an argument because we are converting from base 16; end; And that is your RGB.
-
addEventHandler("onPlayerWasted",root,function(_,killer) if killer and getElementType(killer) == "player" then local VictimX,VictimY,VictimZ = getElementPosition(source); local KillerX,KillerY,KillerZ = getElementPosition(killer); local Distance = getDistanceBetweenPoints3D(VictimX,VictimY,VictimZ,KillerX,KillerY,KillerZ); outputChatBox(getPlayerName(source).." was killed by "..getPlayerName(killer).." from a distance of "..tostring(Distance).."!",root,255,255,255); end; end);
-
You can use timestamps and then convert the difference to normal time.
-
if not username:find("%W") then if (accountAdded) then exports.gtc:sendMessage("You have successfully registered. Username: "..username..", Password: "..password,0,255,0,source); triggerClientEvent(source,"hideRegisterWindow",source); end; else triggerClientEvent(source,"set_warning_text",source,"MG:RP Register","Choose a different username or password."); end;
-
Use %W instead of ^%w. As for your problem: if username:find("%W") then outputChatBox("Your name contains invalid characters!"); else -- Valid username; end;
-
addEventHandler("onClientPreRender",root,function(delta) outputChatBox(tostring(1000/delta)); -- This is the player's FPS; end); Use this to calculate the player's FPS and set a minimum amount you need to have to play, otherwise kick the player.
-
https://wiki.multitheftauto.com/wiki/Cl ... _functions https://wiki.multitheftauto.com/wiki/Se ... _functions
-
I'm talking about this: Is there any possible way you can fix this using MTA?
-
local ScreenSizeX,ScreenSizeY = guiGetScreenSize(); local StartTick,Duration,EndTick = nil,5000,nil; local Debounce = false; local function RenderHandler() local CurrentTick = getTickCount(); -- get the current tick; local Progress = (CurrentTick-StartTick)/Duration; -- calculate the progress between 0 and 1 using simple math; local Alpha = interpolateBetween(0,0,0,255,0,0,Progress,"InOutQuad"); dxDrawText("This text is fading in...",ScreenSizeX/2,ScreenSizeY/2,ScreenSizeX,ScreenSizeY,tocolor(255,255,255,Alpha),1,"bankgothic"); if CurrentTick>=EndTick then -- if the animation is finished; StartTick,EndTick = nil,nil; -- clear variables; removeEventHandler("onClientRender",root,RenderHandler); -- remove the render handler; Debounce = false; -- we can now use /dx again; end; end; addCommandHandler("dx",function() if not Debounce then -- if the text isn't already rendering; Debounce = true; StartTick = getTickCount(); -- get the current tick as the start tick of the animation; EndTick = StartTick+Duration; -- calculate the end tick; addEventHandler("onClientRender",root,RenderHandler); -- add the render handler only when you type the command; end; end); I have not tested it, but it should work.
-
local Lobby = {}; Lobby.__index = Lobby; function Lobby:Constructor(player) if not self.m_Lobby[player] then self.m_Lobby[player] = {}; end; local mL = self.m_Lobby[player]; mL.public = false; mL.name = nil; mL.maxPlayers = nil; mL.map = nil; end; function Lobby:New() local Object = setmetatable({ m_Lobby = {}; maps = { {0,0,3,1}; }; },self); -- create our object; if Object.Constructor then addEventHandler("onPlayerResourceStart",root,function() Object:Constructor(client); -- use syntactic sugar; end); end; return Object; end; I think this is what you wanted.
-
Userdatas are created using the C API of Lua.