Jump to content

Frozen all players


AnDReJ98

Recommended Posts

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

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

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 by Guest
Link to comment
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

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
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

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

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

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

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

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 by Guest
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...