Centauro Posted September 18, 2015 Share Posted September 18, 2015 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
Tomas Posted September 18, 2015 Share Posted September 18, 2015 getDistanceBetweenPoints3D Link to comment
Centauro Posted September 19, 2015 Author Share Posted September 19, 2015 getDistanceBetweenPoints3D Gracias por responder, si pense que fuera esa pero la use y no supe como hacerlo, podrias darme un ejemplo? Link to comment
starksZ Posted September 19, 2015 Share Posted September 19, 2015 getDistanceBetweenPoints3D Gracias por responder, si pense que fuera esa pero la use y no supe como hacerlo, podrias darme un ejemplo? Deberías leer un poco. Link to comment
aka Blue Posted September 19, 2015 Share Posted September 19, 2015 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
Centauro Posted September 19, 2015 Author Share Posted September 19, 2015 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
Sasu Posted September 19, 2015 Share Posted September 19, 2015 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
aka Blue Posted September 19, 2015 Share Posted September 19, 2015 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
Centauro Posted September 20, 2015 Author Share Posted September 20, 2015 Muchas gracias Blue pie y Sasu, funciono de lujo Link to comment
Recommended Posts