Jump to content

scare


Hazard|

Recommended Posts

Hello, I tried to make something like this before, and didn't reach the goal yet (easy script for you) xD

The issue is that I don't really know how to make this happend only on (theplayer)'s screen.

Like if the command to make the sound & picture go off on a players screen, was "scare", and I did /scare Haz then the player with the namepart "Haz" got "scared". The code below is what I have, the scareImage function should be handled by a command named "scare".

Can you help?

local sw,sh = guiGetScreenSize() 
  
function getPlayerFromPartialName(name) 
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil 
    if name then 
        for _, player in ipairs(getElementsByType("player")) do 
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() 
            if name_:find(name, 1, true) then 
                return player 
            end 
        end 
    end 
end 
  
function scareImage() 
    local scareSound = playSound("scare.mp3") 
    setSoundVolume(scareSound, 1) 
  dxDrawImage(math.random(-5,0),math.random(-5,0),sw+5,sh+5,'scare.jpg',0,0,0,tocolor(255,255,255,math.random(200,240)),true) 
end 
--addCommandHandler("scare"?????????????????????????????????????????????????) 
  

thx

Link to comment

Server:

  
function getPlayerFromPartialName(name) 
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil 
    if name then 
        for _, player in ipairs(getElementsByType("player")) do 
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() 
            if name_:find(name, 1, true) then 
                return player 
            end 
        end 
    end 
end 
  
addCommandHandler("scaree", 
    function(player, command, target) 
        local target = getPlayerFromPartialName(target) 
        if target then 
            triggerClientEvent(target, "scareJumpThem", target) 
        end 
    end 
) 
  

Client:

  
function drawIt() 
    -- Do whatever. 
end 
  
function scare() 
    addEventHandler("onClientRender", root, drawIt) 
end 
addEvent("scareJumpThem", true) 
addEventHandler("scareJumpThem", root, scare) 
  

Link to comment

client side

function draw(target) 
local scareSound = playSound("scare.mp3") 
    setSoundVolume(scareSound, 1) 
  dxDrawImage(math.random(-5,0),math.random(-5,0),sw+5,sh+5,'scare.jpg',0,0,0,tocolor(255,255,255,math.random(200,240)),true) 
  
end 
  
function drawHandler() 
addEventHandler("onClientRender",root,draw) 
end 
addEvent("draw",true) 
addEventHandler("draw",root,drawHandler) 
  

server side

function getPlayerFromPartialName(name) 
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil 
    if name then 
        for _, player in ipairs(getElementsByType("player")) do 
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() 
            if name_:find(name, 1, true) then 
                return player 
            end 
        end 
    end 
end 
  
addCommandHandler("scare", 
    function(player, command, target) 
        local target = getPlayerFromPartialName(target) 
        if target then 
            triggerClientEvent("draw", localPlayer,target) 
        end 
    end 
) 
  

Link to comment

Quick improvement for server.

  
function getPlayerFromPartialName(name) 
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil 
    if name~=nil then  -- Change this so "if name" actually does something. As you defined before you want it or nil. 
        for _, player in ipairs(getElementsByType("player")) do 
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() 
            if name_:find(name, 1, true) then 
                return player 
            end 
        end 
    end 
end 
  
addCommandHandler("scaree", 
    function(player, command, target) 
        local target = getPlayerFromPartialName(target) 
        if target then 
            triggerClientEvent(target, "scareJumpThem", target) 
        end 
    end 
) 
  

Try this with the client. Root wasn't defined.

  
function drawIt() 
    -- Do whatever. 
end 
  
function scare() 
    addEventHandler("onClientRender", root, drawIt) 
end 
addEvent("scareJumpThem", true) 
addEventHandler("scareJumpThem", getRootElement(), scare) 

Link to comment

Server:

function getPlayerFromPartialName(SearchName) 
    local Players = getElementsByType("player") 
    for _,Player in ipairs(Players) 
        local PlayerName = getPlayerName(Player) 
        if string.find(PlayerName,SearchName) then 
            return Player 
        end 
    end 
    return false 
end 
  
function ScarePlayer(Player,Command,Argument) 
    if (Command == "scare") then 
        if (Argument) then 
            local Victim = getPlayerFromPartialName(Argument) 
            if (Victim) then 
                triggerClientEvent(Victim, "ShowScare",Player) 
            else 
                outputChatBox("Player not found!",Player) 
            end 
        else 
            outputChatBox("Player's name not specified!",Player) 
        end 
    end 
end 
addCommandHandler("scare",ScarePlayer) 

Client:

ScareLength = 5000 -- How much time will the scare be rendered (in milliseconds) 
  
function ShowScare() 
    addEventHandler("onClientRender",getRootElement,DrawScare) 
    setTimer(removeEventHandler,ScareLength,1,"onClientRender",getRootElement,DrawScare) 
end 
addEvent("ShowScare",true) 
addEventHandler("ShowScare",getRootElement(),ShowScare) 
  
function DrawScare() 
    local scareSound = playSound("scare.mp3") 
    setSoundVolume(scareSound,1) 
    dxDrawImage(math.random(-5,0),math.random(-5,0),sw+5,sh+5,'scare.jpg',0,0,0,tocolor(255,255,255,math.random(200,240)),true) 
end 

Link to comment

Try now.

Client:

ScareLength = 5000 -- How much time will the scare be rendered (in milliseconds) 
  
function ShowScare() 
    addEventHandler("onClientRender",getRootElement(),DrawScare) 
    setTimer(removeEventHandler,ScareLength,1,"onClientRender",getRootElement,DrawScare) 
end 
addEvent("ShowScare",true) 
addEventHandler("ShowScare",getRootElement(),ShowScare) 
  
function DrawScare() 
    local scareSound = playSound("scare.mp3") 
    setSoundVolume(scareSound,1) 
    dxDrawImage(math.random(-5,0),math.random(-5,0),sw+5,sh+5,'scare.jpg',0,0,0,tocolor(255,255,255,math.random(200,240)),true) 
end 

Link to comment

Try this with the client. Root wasn't defined.

  
function drawIt() 
    -- Do whatever. 
end 
  
function scare() 
    addEventHandler("onClientRender", root, drawIt) 
end 
addEvent("scareJumpThem", true) 
addEventHandler("scareJumpThem", getRootElement(), scare) 

"root" is predefined variable. It's same as getRootElement().

Link to comment

Yes, you were right about the sound, I'm not sure how I didn't notice that.

Client:

ScareLength = 5000 -- How much time will the scare be rendered (in milliseconds) 
  
function ShowScare() 
    local scareSound = playSound("scare.mp3") 
    setSoundVolume(scareSound,1) 
    addEventHandler("onClientRender",getRootElement(),DrawScare) 
    setTimer(removeEventHandler,ScareLength,1,"onClientRender",getRootElement,DrawScare) 
end 
addEvent("ShowScare",true) 
addEventHandler("ShowScare",getRootElement(),ShowScare) 
  
function DrawScare() 
    dxDrawImage(math.random(-5,0),math.random(-5,0),sw+5,sh+5,'scare.jpg',0,0,0,tocolor(255,255,255,math.random(200,240)),true) 
end 

Also, like GTX said, you can use 'root' instead of 'getRootElement()' and 'resourceRoot' instead of 'getResourceRootElement()'. It doesn't make much difference, but it spares a CPU usage a bit.

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