AnDReJ98 Posted November 14, 2011 Share Posted November 14, 2011 Good evening I want to ask about how to freeze all players For one minute I want to calculate time appear on the screen I hope some one will help me guys this code addEvent("Froze", true) addEventHandler("Froze", rootElement, function() if ( getPlayerMoney (source) >= 2000 ) then takePlayerMoney(source, 2000) outputChatBox("All players Successfully frozen", source, 255, 255, 0, true) players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do setElementFrozen (thePlayer, not isElementFrozen ( thePlayer) ) end else outputChatBox("Not enough money.", source, 255, 0, 0, true) end end ) Link to comment
myonlake Posted November 14, 2011 Share Posted November 14, 2011 What's the problem you need help with? Only thing that I found was that you had few errors. addEvent("Froze", true) addEventHandler("Froze", rootElement, function() if getPlayerMoney(source) >= 2000 then local players = getElementsByType("player") takePlayerMoney(source, 2000) outputChatBox("All players successfully frozen", source, 255, 255, 0, true) for theKey,thePlayer in ipairs(players) do setElementFrozen(thePlayer, true) end else outputChatBox("Not enough money.", source, 255, 0, 0, true) end end) Link to comment
AnDReJ98 Posted November 14, 2011 Author Share Posted November 14, 2011 thank you what about freez all players ( one minute) and i want appeare this time on the screen Link to comment
myonlake Posted November 14, 2011 Share Posted November 14, 2011 (edited) Not tested, but try this. local frozeTime = "60" -- Seconds as frozen local timeLeft = {} local timeLeftText = {} addEvent("Froze", true) addEventHandler("Froze", rootElement, function() if getPlayerMoney(source) >= 2000 then local players = getElementsByType("player") takePlayerMoney(source, 2000) outputChatBox("All players successfully frozen", source, 255, 255, 0, true) for theKey,thePlayer in ipairs(players) do setElementFrozen(thePlayer, true) setElementData(thePlayer, "Timeleft", frozeTime) showTimeLeft(thePlayer) end else outputChatBox("Not enough money.", source, 255, 0, 0, true) end end) function showTimeLeft(player) timeLeft[player] = textCreateDisplay() textDisplayAddObserver(timeLeft[player], player) timeLeftText[player] = textCreateTextItem("Time left: " .. getElementData(player, "Timeleft"), 0.45, 0.1, "high", 255, 255, 255, 255) textDisplayAddText(timeLeft[player], timeLeftText[player]) setTimer(updateTimeLeft, 1000, getElementData(player, "Timeleft"), player) end function updateTimeLeft(player) setElementData(player, "Timeleft", getElementData(player, "Timeleft") - 1) textItemSetText(timeLeftText[player], "Time left: " .. getElementData(player, "Timeleft")) if getElementData(player, "Timeleft") == 0 then textDestroyDisplay(timeLeft[player]) end end Edited November 14, 2011 by Guest Link to comment
AnDReJ98 Posted November 14, 2011 Author Share Posted November 14, 2011 sory not work Link to comment
12p Posted November 14, 2011 Share Posted November 14, 2011 At least try to help us to help you: tell us what's wrong! /debugscript 3 Link to comment
myonlake Posted November 14, 2011 Share Posted November 14, 2011 Sorry! Forgot one thing, try now. Link to comment
AnDReJ98 Posted November 14, 2011 Author Share Posted November 14, 2011 At least try to help us to help you: tell us what's wrong!/debugscript 3 no find any debbug Sorry! Forgot one thing, try now. not work Link to comment
myonlake Posted November 14, 2011 Share Posted November 14, 2011 Are you sure you meant addEventHandler (this can be only launched with a trigger). If you meant a command, then use addCommandHandler. Link to comment
AnDReJ98 Posted November 14, 2011 Author Share Posted November 14, 2011 freez work and time on sceen work but when time end player cant move (freez) why? Link to comment
Charlie_Jefferson Posted November 14, 2011 Share Posted November 14, 2011 local frozeTime = "60" -- Seconds as frozen local timeLeft = {} local timeLeftText = {} addEvent("Froze", true) addEventHandler("Froze", rootElement, function() if getPlayerMoney(source) >= 2000 then local players = getElementsByType("player") takePlayerMoney(source, 2000) outputChatBox("All players successfully frozen", source, 255, 255, 0, true) for theKey,thePlayer in ipairs(players) do setElementFrozen(thePlayer, true) setElementData(thePlayer, "Timeleft", frozeTime) showTimeLeft(thePlayer) end else outputChatBox("Not enough money.", source, 255, 0, 0, true) end end) function showTimeLeft(player) timeLeft[player] = textCreateDisplay() textDisplayAddObserver(timeLeft[player], player) timeLeftText[player] = textCreateTextItem("Time left: " .. getElementData(player, "Timeleft"), 0.45, 0.1, "high", 255, 255, 255, 255) textDisplayAddText(timeLeft[player], timeLeftText[player]) setTimer(updateTimeLeft, 1000, getElementData(player, "Timeleft"), player) end function updateTimeLeft(player) setElementData(player, "Timeleft", getElementData(player, "Timeleft") - 1) textItemSetText(timeLeftText[player], "Time left: " .. getElementData(player, "Timeleft")) if getElementData(player, "Timeleft") == 0 then textDestroyDisplay(timeLeft[player]) for theKey,thePlayer in ipairs(players) do setElementFrozen(thePlayer, false) end end This should unfreeze them. Link to comment
AnDReJ98 Posted November 14, 2011 Author Share Posted November 14, 2011 This should unfreeze them. not work Link to comment
AnDReJ98 Posted November 14, 2011 Author Share Posted November 14, 2011 Are you sure you meant addEventHandler (this can be only launched with a trigger). If you meant a command, then use addCommandHandler. freez work and time on sceen work but when time end player cant move (freez) why? Link to comment
myonlake Posted November 14, 2011 Share Posted November 14, 2011 Stop doubleposting. Try now. local frozeTime = "60" -- Seconds as frozen local timeLeft = {} local timeLeftText = {} addEvent("Froze", true) addEventHandler("Froze", rootElement, function() if getPlayerMoney(source) >= 2000 then local players = getElementsByType("player") takePlayerMoney(source, 2000) outputChatBox("All players successfully frozen", source, 255, 255, 0, true) for theKey,thePlayer in ipairs(players) do setElementFrozen(thePlayer, true) setElementData(thePlayer, "Timeleft", frozeTime) showTimeLeft(thePlayer) end else outputChatBox("Not enough money.", source, 255, 0, 0, true) end end) function showTimeLeft(player) timeLeft[player] = textCreateDisplay() textDisplayAddObserver(timeLeft[player], player) timeLeftText[player] = textCreateTextItem("Time left: " .. getElementData(player, "Timeleft"), 0.45, 0.1, "high", 255, 255, 255, 255) textDisplayAddText(timeLeft[player], timeLeftText[player]) setTimer(updateTimeLeft, 1000, getElementData(player, "Timeleft"), player) end function updateTimeLeft(player) setElementData(player, "Timeleft", getElementData(player, "Timeleft") - 1) textItemSetText(timeLeftText[player], "Time left: " .. getElementData(player, "Timeleft")) if getElementData(player, "Timeleft") == 0 then textDestroyDisplay(timeLeft[player]) setElementFrozen(player, false) end end Link to comment
Castillo Posted November 14, 2011 Share Posted November 14, 2011 local frozeTime = 60 -- Seconds as frozen local timeLeft = {} local timeLeftText = {} addEvent("Froze", true) addEventHandler("Froze", root, function() if getPlayerMoney(source) >= 2000 then local players = getElementsByType("player") takePlayerMoney(source, 2000) outputChatBox("All players successfully frozen", source, 255, 255, 0, true) for theKey,thePlayer in ipairs(players) do setElementFrozen(thePlayer, true) setElementData(thePlayer, "Timeleft", tonumber(frozeTime)) showTimeLeft(thePlayer) end else outputChatBox("Not enough money.", source, 255, 0, 0, true) end end) function showTimeLeft(player) timeLeft[player] = textCreateDisplay() textDisplayAddObserver(timeLeft[player], player) timeLeftText[player] = textCreateTextItem("Time left: " .. getElementData(player, "Timeleft"), 0.45, 0.1, "high", 255, 255, 255, 255) textDisplayAddText(timeLeft[player], timeLeftText[player]) setTimer(updateTimeLeft, 1000, getElementData(player, "Timeleft"), player) end function updateTimeLeft(player) setElementData(player, "Timeleft", getElementData(player, "Timeleft") - 1) textItemSetText(timeLeftText[player], "Time left: " .. getElementData(player, "Timeleft")) if tonumber(getElementData(player, "Timeleft")) == 0 then textDestroyDisplay(timeLeft[player]) setElementFrozen(player, false) end end Link to comment
AnDReJ98 Posted November 14, 2011 Author Share Posted November 14, 2011 Solidsnake14 thanks you so much this work but i need freez all player for one minute no freez me just freez all players this client.lua function onGuiClick (button, state, absoluteX, absoluteY) if (source == GUIEditor_Button[1]) then triggerServerEvent ("Froze", getLocalPlayer()) end end addEventHandler ("onClientGUIClick", getRootElement(), onGuiClick) Link to comment
thedavor Posted November 14, 2011 Share Posted November 14, 2011 why you then not make freez all players only not Admin ACL group Link to comment
^Dev-PoinT^ Posted November 14, 2011 Share Posted November 14, 2011 why dont you read wiki ? function onGuiClick (button, state, absoluteX, absoluteY) if (source == GUIEditor_Button[1]) then triggerServerEvent ("Froze", getLocalPlayer()) end end addEventHandler ("onClientGUIClick", getRootElement(), onGuiClick) function toggleFreeze ( localPlayer) local frozen = getPedFrozen ( localPlayer) setPedFrozen ( sourcePlayer, not frozen ) end addEventHandler ("onClientGUIClick", getLocalPlayer(), onGuiClick) Link to comment
12p Posted November 14, 2011 Share Posted November 14, 2011 Dev. Don't act like you are the best scripter or any sort of things like that. Your code is so wrong... onClientGUIClick is for GUI elements, not for a player element. localPlayer is not defined. sourcePlayer?!?!?! Instead of trying to help, learn to script yourself!!! Link to comment
^Dev-PoinT^ Posted November 14, 2011 Share Posted November 14, 2011 ok Benxamix2 love you q1 Link to comment
Castillo Posted November 14, 2011 Share Posted November 14, 2011 If you want to freeze everyone but YOURSELF, then use this: local frozeTime = 60 -- Seconds as frozen local timeLeft = {} local timeLeftText = {} addEvent("Froze", true) addEventHandler("Froze", root, function() if getPlayerMoney(source) >= 2000 then local players = getElementsByType("player") takePlayerMoney(source, 2000) outputChatBox("All players successfully frozen", source, 255, 255, 0, true) for theKey,thePlayer in ipairs(players) do if (thePlayer ~= source) then setElementFrozen(thePlayer, true) setElementData(thePlayer, "Timeleft", tonumber(frozeTime)) showTimeLeft(thePlayer) end end else outputChatBox("Not enough money.", source, 255, 0, 0, true) end end) function showTimeLeft(player) timeLeft[player] = textCreateDisplay() textDisplayAddObserver(timeLeft[player], player) timeLeftText[player] = textCreateTextItem("Time left: " .. getElementData(player, "Timeleft"), 0.45, 0.1, "high", 255, 255, 255, 255) textDisplayAddText(timeLeft[player], timeLeftText[player]) setTimer(updateTimeLeft, 1000, getElementData(player, "Timeleft"), player) end function updateTimeLeft(player) setElementData(player, "Timeleft", getElementData(player, "Timeleft") - 1) textItemSetText(timeLeftText[player], "Time left: " .. getElementData(player, "Timeleft")) if tonumber(getElementData(player, "Timeleft")) == 0 then textDestroyDisplay(timeLeft[player]) setElementFrozen(player, false) end end Link to comment
AGENT_STEELMEAT Posted November 14, 2011 Share Posted November 14, 2011 (edited) Better than using server-side text functions (raping bandwidth and not that pretty), just use client-side dx drawing functions: --Serverside --This function freezes a player for the given amount of time in MILISECONDS. --If root is passed, all players will be frozen. function freezePlayer(player, freezeLength) triggerClientEvent(player, "onServerFreezePlayer", root, freezeLength) end --Clientside local freezeTicks --This funciton freezes the local player for the given length of time, or indefintley if freezeLength == 0 function freezeLocalPlayer(freezeLength) setElementFrozen(localPlayer, true) if freezeLength > 0 then freezeTicks = freezeLength else freezeTicks = false end addEventHandler("onClientRender", root, drawFreezeScreen) end addEvent("onServerFreezePlayer", true) addEventHandler("onServerFreezePlayer", root, freezeLocalPlayer) --This function draws the freeze screen local screenWidth, screenHeight = guiGetScreenSize() local textColor = tocolor(255, 0, 0) function drawFreezeScreen() if freezeTicks then if freezeTicks == 0 then setElementFrozen(localPlayer, false) freezeTicks = nil removeEventHandler("onClientRender", root, drawFreezeScreen) return end dxDrawText(0, 0, screenWidth, screenHeight, color, 1, "You have been frozen! Time remaining: "..tostring(math.ceil(freezeTicks / 100)), "center", "center") freezeTicks = freezeTicks - 1 else if isElementFrozen(localPlayer) then dxDrawText(0, 0, screenWidth, screenHeight, color, 1, "You have been frozen!", "center", "center") else freezeTicks = nil removeEventHandler("onClientRender", root, drawFreezeScreen) end end end NOTE: Untested, also I corrected myself like 3 times lul. 1 - The serverside function freezePlayer will freeze the given player for the given amount of time (in miliseconds). If the player is root, then all players will be frozen. If the time is 0, the player(s) will be frozen indefinitley. 2- Clientside, the function freezeLocalPlayer is called by the server (via the event onServerFreezePlayer), and it freezes the local player. If the freeze length is greater than 0, it will store the freeze length. 3- The function drawFreezeScreen will draw the message to the player, and also will determine when to unfreeze the player. So now, when a player buys a player freeze, just call freezePlayer. You can also use freezeLocalPlayer clientside to freeze the local player clientside. Edited November 14, 2011 by Guest Link to comment
Castillo Posted November 14, 2011 Share Posted November 14, 2011 The function: isPlayerFrozen does not exists, maybe you meant isElementFrozen. Link to comment
AGENT_STEELMEAT Posted November 14, 2011 Share Posted November 14, 2011 Try again, I fixed some things I missed in my ninja-posting. Link to comment
AnDReJ98 Posted November 14, 2011 Author Share Posted November 14, 2011 Solidsnake14 thank you so much for help me Try again, I fixed some things I missed in my ninja-posting. give me example what writ in client side thank you so much Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now