Jump to content

[Pregunta (?)]


Centauro

Recommended Posts

Bueno, tengo una pregunta, quiza un tanto simple, bien lo que pasa es que necesito que cuando ponga un comando pueda darle a un jugador dinero, pero solo si esta cerca de mi, es decir a una distancia cercana, ya he hecho un script para dar el dinero, pero es lo basico osea que se puede dar de cualquier manera, sin embargo quiero eso que solo se pueda dar si esta cerca.

Alguien que pueda ayudarme?

Link to comment

Es bastante fácil, mira:

local x, y, z = getElementPosition(thePlayer) --Coges tu posición por ejemplo 
local x1, y1, z1 = getElementPosition(otherPlayer) --Coges la posición del otro jugador 
local distance = getDistanceBetweenPoints3D(x, y, z, x1, y1, z1) --Variable para comparar la distancia 
if distance < 2 then --Si la distancia es mayor a 2, hará... 
  
end 
  

Link to comment
Es bastante fácil, mira:
local x, y, z = getElementPosition(thePlayer) --Coges tu posición por ejemplo 
local x1, y1, z1 = getElementPosition(otherPlayer) --Coges la posición del otro jugador 
local distance = getDistanceBetweenPoints3D(x, y, z, x1, y1, z1) --Variable para comparar la distancia 
if distance < 2 then --Si la distancia es mayor a 2, hará... 
  
end 
  

Muchas gracias amigo, intente esto pero me da error, podrias ayudarme?

este es mi codigo:

  
  
function DarMoney(player, cmd, target, amount) 
local x, y, z = getElementPosition(player)  
local x1, y1, z1 = getElementPosition(target) 
local distance = getDistanceBetweenPoints3D(x, y, z, x1, y1, z1)  
if distance < 5 then 
    if target then 
        if amount then 
            local money = getPlayerMoney(player) 
            local targetplayer = getPlayerFromName(target) 
            amount = tonumber(amount) 
            if targetplayer then 
                if money >= amount then 
                    givePlayerMoney(targetplayer, amount) 
                    takePlayerMoney(player, amount) 
                    outputChatBox(getPlayerName(player).." dio $"..amount.." a "..getPlayerName(targetplayer), getRootElement(), 0, 255, 0, true) 
                else 
                    outputChatBox("No  dinero! ", player, 255, 0, 0) 
                end 
            else 
                outputChatBox("Este jugador  no existe.", player, 255, 0, 0) 
            end 
        else 
            outputChatBox("Pon la cantidad de dinero", player, 255, 0, 0) 
        end 
    else  
        outputChatBox("/darmoney jugador cantidad", player, 255, 0, 0) 
    end 
    else 
    outputChatBox("el player esta lejos", player, 255, 0, 0) 
end 
end 
addCommandHandler("darmoney", DarMoney) 
  
  

pero me vota estos errores:

1) Bad Argument @getElementPosition [expected element at argument 1, got string 'NombreDeQuienLeDoyDinero(TARGET)'] (Linea getElementPosition(target))

2) Bad Argument @getDistanceBetweenPoints3D [expected vector3 at argument 4, got boolean] (Linea getDistanceBetwenPoints3D )

3) attemp to compare boolean with number ( Esté es la linea que dice if distace < 5 then )

Gracias amigo.

Link to comment
function DarMoney(player, cmd, target, amount) 
    local targetplayer = getPlayerFromName(target) 
    if targetplayer then 
        local x, y, z = getElementPosition(player) 
        local x1, y1, z1 = getElementPosition(targetplayer) 
        local distance = getDistanceBetweenPoints3D(x, y, z, x1, y1, z1) 
        if distance < 5 then 
            if target then 
                if amount then 
                    local money = getPlayerMoney(player) 
                    amount = tonumber(amount)    
                    if money >= amount then 
                        givePlayerMoney(targetplayer, amount) 
                        takePlayerMoney(player, amount) 
                        outputChatBox(getPlayerName(player).." dio $"..amount.." a "..getPlayerName(targetplayer), getRootElement(), 0, 255, 0, true) 
                    else 
                        outputChatBox("No  dinero! ", player, 255, 0, 0) 
                    end 
                else 
                    outputChatBox("Pon la cantidad de dinero", player, 255, 0, 0) 
                end 
            else 
                outputChatBox("/darmoney jugador cantidad", player, 255, 0, 0) 
            end 
        else 
            outputChatBox("el player esta lejos", player, 255, 0, 0) 
        end 
    else 
        outputChatBox("Este jugador  no existe.", player, 255, 0, 0) 
    end 
end 
addCommandHandler("darmoney", DarMoney) 

Link to comment

Mucha cosa liosa. Usa esto con la función getPlayerFromPartialName

addCommandHandler( "dardinero", 
    function( player, commandName, otherPlayer, amount ) 
        local amount = tonumber( amount ) 
        if otherPlayer and amount and math.ceil( amount ) == amount and amount > 0 then 
            local other, name = getPlayerFromPartialName( player, otherPlayer ) 
            if other then 
                if player ~= other then 
                    local x, y, z = getElementPosition( player ) 
                    if getDistanceBetweenPoints3D( x, y, z, getElementPosition( other ) ) < 5 then 
                        if takePlayerMoney( player, amount ) then 
                            givePlayerMoney( other, amount ) 
                            outputChatBox( "Le has dado a" .. name .. " $" .. amount .. ".", player, 0, 255, 0 ) 
                            outputChatBox( getPlayerName( player ):gsub( "_", " " ) .. " te dió $" .. amount .. ".", other, 0, 255, 0 ) 
                        end 
                    else 
                        outputChatBox( "Estás demasiado lejos de " .. name .. ".", player, 255, 0, 0 ) 
                    end 
                else 
                    outputChatBox( "No puedes darte dinero a ti mismo.", player, 255, 0, 0 ) 
                end 
            end 
        else 
            outputChatBox( "Syntax: /" .. commandName .. " [jugador] [cantidad]", player, 255, 255, 255 ) 
        end 
    end 
) 
  

La función de getPlayerFromPartialName. Lo que hace es coger el jugador por una parte del nombre. Ejemplo: FulanitoXD /dardinero fulan 100

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 
  

Link to comment
  • Recently Browsing   0 members

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