-
Posts
189 -
Joined
-
Last visited
Everything posted by Rose
-
Eso no va a funcionar, la idea es que el progreso(o animación) del círculo se vea "fluido" y no que le sume 5 cada 3.6 segundos. De todas formas, gracias.
-
Quisiera saber cómo calcular para que un círculo (dxDrawCircle) se complete en ciertos segundos. El ejemplo de la wiki es este: local screenWidth, screenHeight = guiGetScreenSize( ) local stopAngle = 0 addEventHandler( "onClientRender", root, function( ) if ( stopAngle < 360 ) then stopAngle = stopAngle + 5 else stopAngle = 0 end dxDrawCircle( screenWidth / 2, screenHeight / 2, nil, nil, nil, nil, stopAngle ) end )
-
El DayZ ya no trae ese recurso por default? yo recuerdo haber descargado un DayZ y trae ese script del gang_system. Prueba precionando F1, F2, F3, etc, a ver si se abre el panel que quieres, sino, no sé porque no te sirve, yo lo probé en el local y si me abre el panel para crear gang's.
- 15 replies
-
- gang_system
- system
-
(and 1 more)
Tagged with:
-
Bueno, lo que pasa es que tengo un bot para matar jugadores, y cuando hay dos bot's de esos muy cerga solo persiguen a una sola víctima aunque hayan otras cerca, los dos se dedican a perseguir solo al primero que vieron... Yo lo que quiero es, que si un bot ya está persiguiendo a un jugador, si hay otro bot cerca, éste no persiga al jugador que ya está siendo perseguido por otro bot, sino que se quede quieto a esperar otro jugador. Esto es lo que tengo: function findEnemy(ped) if isElement(ped) then recharging[ped] = recharging[ped] + 1 local x, y, z = getElementPosition(ped) local player = NearPlatyer(x, y, z) if player then local px, py, pz = getElementPosition(player) if getDistanceBetweenPoints3D(px, py, pz, x, y, z) > 120 then destroyPed(ped) end if getElementData(ped, "punchs") == "off" then if getDistanceBetweenPoints3D(x, y, z, px, py, pz) < 30 then playerRech[player] = { serial = getPlayerSerial(player) } if getPlayerSerial(player) ~= playerRech[player].serial then outputChatBox("None") else setChargerTarget(ped, player) triggerClientEvent("pedRot", ped, getTarget(ped)) end end end end end end La cosa es que no sé como hacer para comparar el serial del jugador "encontrado" con el serial que está en la tabla, ya que la idea es que dos bot's no ataquen a un solo jugador. ¿Alguna idea?
-
Que yo sepa onClientGUIClick sirve con cualquier gui-element, no es necesario crear un botón abajo
-
Ayuda con setTrainDerailable para todos los trenes
Rose replied to Matias_Montanna's topic in Scripting
Recuerda que los argurmentos de addCommandHandler son: SERVER player playerSource, string commandName, [string arg1, string arg2, ...] -- CLIENT string commandName, [string arg1, string arg2, ...] Prácticamente lo que estás haciendo es usar 'theVehicle' como si fuera el jugador, ya que el primer argumento es el jugador que escribió el comando -
vel =.8 function sPeedUp() if isElement(element) then if getElementData(element, "charging") == "on" then local x, y, z = getElementPosition(element) local prot = getPedRotation(element) local nx, ny = getPointFromDistanceRotation(x, y, vel, (prot)*-1) local clear = isLineOfSightClear( x, y, z, nx, ny, z, true, true, true, true, true, true, true) if clear == true then local lx, ly = getPointFromDistanceRotation(x, y, 1, (prot-8)*-1) local rx, ry = getPointFromDistanceRotation(x, y, 1, (prot+8)*-1) local clearl = isLineOfSightClear( x, y, z, lx, ly, z, true, true, true, true, true, true, true) local clearr = isLineOfSightClear( x, y, z, rx, ry, z, true, true, true, true, true, true, true) if clearl == true and clearr == true then local task = getPedSimplestTask(element) if task == "TASK_SIMPLE_PLAYER_ON_FOOT" then local nz = getGroundPosition ( nx, ny, z+1 ) if getDistanceBetweenPoints3D( x, y, z, nx, ny, nz) < 2 then setElementPosition(element, nx, ny, nz+1, false) end end end end end end end addEventHandler("onClientRender", root, sPeedUp)
-
setElementInterior(element, int) ?
-
setTimer(function, timer, executes, arguments...) function HandlerWasted() valor = math.random( 170, 500 ) setTimer(outputChatBox, 2000, 1, "#FFFFFFForam cobrados #FBFF00 $"..tostring ( valor )..",00 #FFFFFFpelos seus gastos no hospital",source,255,255,255,true) valor = takePlayerMoney(source, valor) end addEventHandler("onPlayerWasted",getRootElement(), HandlerWasted)
-
addCommandHandler("fc", function(p) setPedAnimation(p, "PARACHUTE", "FALL_skyDive",0, false, true) setElementRotation(p, 0, 90, 90) end) Cambia la rotación, pero solo me sirve para la 'rz'. Yo quiero que la animación cuando vas cayendo en paracaídas cambie la rotación del jugador y se vea como si estuviera parado y no cayendo, no sé si me entienden...
-
Debes usar xmlLoadFile y xmlFindChild. xmlLoadFile: Para cargar el archivo xmlFindChild: Para buscar digamos que la etiqueta, en tu XML debes tener algo como <texto> </texto>, bueno, debes colocar en el segundo argumento "texto". Un ejemplo: local node = xmlLoadFile("idioma.xml") if node then text = xmlFindChild(node, "texto", 0) --guiGridListSetItemText(grid, row, column, text, false, false) end Obviamente tienes que adaptarlo a tu script.
-
Si, usa onElementDestroy, mira el ejemplo de la wiki y intenta.
-
addEventHandler("onClientVehicleEnter", root, function(player) if player == getLocalPlayer() then local id = getElementModel(source) if id == 402 and not isWorldSpecialPropertyEnabled("aircars") then setWorldSpecialPropertyEnabled( "aircars", true ) end end end ) addEventHandler("onClientVehicleExit", root, function(player) if player == getLocalPlayer() then local id = getElementModel(source) if id == 402 and isWorldSpecialPropertyEnabled("aircars") then setWorldSpecialPropertyEnabled( "aircars", false ) end end end )
-
Prueba addEventHandler("onClientVehicleEnter", root, function(player) if player == getLocalPlayer() then local id = getElementModel(source) if id == 402 and not isWorldSpecialPropertyEnabled("aircars") then setWorldSpecialPropertyEnabled( "aircars", true ) end end end )
-
Vehicles = { [429] = true } function lockPrivate( thePlayer, seat, jacked ) if getElementType ( thePlayer ) == "player" then if ( Vehicles[getElementModel ( source )] ) and ( seat == 0 ) then local accountName = getAccountName( getPlayerAccount( thePlayer ) ) if not isObjectInACLGroup("user."..accountName, aclGetGroup("Admin") ) removePedFromVehicle( thePlayer ) outputChatBox("Este Vehiculo Pertenece a Administradores!", thePlayer, 255, 0, 0, false) else outputChatBox("Bienvenido al vehiculo de Administrador!", thePlayer, 0, 15, 219, false) end end end end addEventHandler ( "onVehicleEnter", getRootElement(), lockPrivate )
-
addEventHandler("onClientRender", root, function() local vehicle = getPedOccupiedVehicle(localPlayer) if vehicle then local id = getElementModel (vehicle) if id == 519 or id == 577 then dxDrawText("Cambio: "..getVehicleCurrentGear(vehicle), 1320, 703, 0, 100, tocolor(255, 255, 255, 255), 1, "default-bold") end end end ) Te da error porque aunque no estés en el auto se ejecutará tu código(no existe 'vehicle'), y como onClientRender se "actualiza" por cada frame, te dará error.
-
¿Quieres cargar los archivos TXD y DFF en un momento determinado? ejemplo: al precionar el botón X se activan las texturas Aunque si quieres cargar varias txd, dff, creo que puedes usar esto sin necesidad de usar XML (esto me lo pasó un amigo hace tiempo, pero me sirvió para entender más sobre tablas en ese entonces): local remplace_objects = { bunny = 1851; chaleco = 1852; hat_cuadros = 1853; hat_mario = 1854; hat_navideno = 1855; hat_rasta = 1856; hat_sombrero = 1857; hat_turbant = 1858; helmet_casco = 1859; helmet_cluckin = 1860; helmet_constructor = 1861; helmet_iron = 1862; helmet_swat = 1863; helmet_trooper = 1864; helmet_vader = 1865; mask_anonimus = 1866; mask_Ape = 1867; mask_bear = 1868; mask_cat = 1869; mask_cookie = 1870; mask_demon = 1871; mask_demon_2 = 1872; mask_gas = 1873; mask_hockey = 1874; mask_mapache = 1875; mask_mickey = 1876; mask_pig = 1877; mask_zorro = 1878; o2_tank = 1879; shield = 1880; xray_lents = 1881; } local models = {} addEventHandler ( "onClientResourceStart", getResourceRootElement(getThisResource()), function() for name, id in pairs(remplace_objects) do models[name] = {} models[name].txd = engineLoadTXD("datos/" .. name .. ".txd") engineImportTXD(models[name].txd, id) models[name].dff = engineLoadDFF("datos/" .. name .. ".dff", id) engineReplaceModel(models[name].dff, id) end end) "bunny" es el nombre del txd y dff
-
Disculpa, no lo dije, pero, el bot no cambia de posición, porque es un zombie que se queda quieto hasta que estés cerca, luego ataca. ¿Qué podría usar entonces?
-
Hola, quiero saber qué puedo usar para detectar cuando un ped spawnea dentro de algún árbol, roca, o cualquier otro objeto, porque estoy haciendo otro tipo de zombie, y, estoy usando "onZombieSpawn" para que el otro zombie aparezca, pero aparecerá un poco más lejos que el zombie común, pero de vez en cuando, si tengo suerte, aparece dentro de un objeto, y obviamente no saldrá de allí y no servirá para nada. ¿Qué puedo usar?
-
Gracias. Tengo un problema, y es la ahora de editar la posición del objeto, intenté con algo que estaba en el código que me pasaste pero me da nil value como error. Tengo esto: local c_element local c_speed = .15 local c_rotate = 3 local c_EditionActive = false local c_offSetsPo = { } local c_Buttons = { ["a"] = "left", ["w"] = "forward", ["d"] = "right", ["s"] = "backward", ["1"] = "up", ["2"] = "down", ["backspace"] = "reset", ["3"] = "rotate+", ["4"] = "rotate-", ["mouse_wheel_up+"] = "rotate", ["mouse_wheel_down"] = "rotate-", ["enter"] = "save"} addEvent("onObjectMovement", true) addEventHandler("onObjectMovement", root, function( active, acce, acc ) vlb = active tbl = acce c_element = acc end ) function startEditionMode( ) addEventHandler("onClientKey", root, drawing) toggleAllControls(false, true, true) if isElement(c_element) then addEventHandler("onClientClick", root, processCursorClick) end end addEvent("startEditionMode", true) addEventHandler("startEditionMode", root, function( ) addEventHandler("onClientClick", root, processCursorClick) end ) function stopEditionMode( ) removeEventHandler("onClientKey", root, drawing) toggleAllControls(true, true, true) current_cElement(nil) c_offSetsPo = { } end function processCursorClick (button, state, absoluteX, absoluteY, worldX, worldY, worldZ, clickedElement, fromPreview) if ( button == "left" and state == "up" and clickedElement and not c_element or c_element ~= clickedElement and clickedElement ) then startEditionMode( ) outputChatBox("Click") end end function current_cElement( elem ) c_element = elem return true end function drawing(button) local obj = vlb and tbl[vlb] or false if obj then local action = c_Buttons[button] local camRotX, camRotY, camRotZ = getCameraRotation() camRotZ = camRotZ % 360 local remainder = math.mod ( camRotZ, 90 ) camRotZ = camRotZ + roundRotation ( remainder ) local distanceX = c_speed * math.cos(camRotZ) local distanceY = c_speed * math.sin(camRotZ) c_Ped, c_Bone, c_offSetsPo.x, c_offSetsPo.y, c_offSetsPo.z, c_offSetsPo.rx, c_offSetsPo.ry, c_offSetsPo.rz = exports.bone_attach:getElementBoneAttachmentDetails(c_element) if action == "forward" then exports.bone_attach:setElementBonePositionOffset (c_element, c_offSetsPo.x + distanceX, c_offSetsPo.y + distanceY, c_offSetsPo.z) -- update offsets elseif action == "backward" then exports.bone_attach:setElementBonePositionOffset (c_element, c_offSetsPo.x - distanceX, c_offSetsPo.y - distanceY, c_offSetsPo.z) -- update offsets elseif action == "right" then exports.bone_attach:setElementBonePositionOffset (c_element, c_offSetsPo.x + distanceX, c_offSetsPo.y - distanceY, c_offSetsPo.z) -- update offsets elseif action == "left" then exports.bone_attach:setElementBonePositionOffset (c_element, c_offSetsPo.x - distanceX, c_offSetsPo.y + distanceY, c_offSetsPo.z) -- update offsets elseif action == "up" then exports.bone_attach:setElementBonePositionOffset (c_element, c_offSetsPo.x, c_offSetsPo.y, c_offSetsPo.z + c_speed) -- update offsets elseif action == "down" then exports.bone_attach:setElementBonePositionOffset (c_element, c_offSetsPo.x, c_offSetsPo.y, c_offSetsPo.z - c_speed) -- update offsets elseif action == "rotate+" then exports.bone_attach:setElementBonePositionOffset (c_element, c_offSetsPo.x, c_offSetsPo.y, c_offSetsPo.z, c_offSetsPo.rx, c_offSetsPo.ry, c_offSetsPo.rz + 1 * c_rotate ) -- update offsets elseif action == "rotate-" then exports.bone_attach:setElementBonePositionOffset (c_element, c_offSetsPo.x, c_offSetsPo.y, c_offSetsPo.z, c_offSetsPo.rx, c_offSetsPo.ry, c_offSetsPo.rz - 1 * c_rotate ) -- update offsets elseif action == "save" then stopEditionMode( ) end end end function getCameraRotation () local px, py, pz, lx, ly, lz = getCameraMatrix() local rotz = 6.2831853071796 - math.atan2 ( ( lx - px ), ( ly - py ) ) % 6.2831853071796 local rotx = math.atan2 ( lz - pz, getDistanceBetweenPoints2D ( lx, ly, px, py ) ) --Convert to degrees rotx = math.deg(rotx) rotz = -math.deg(rotz) return rotx, 180, rotz end function roundRotation ( rot ) if rot < 45 then return -rot else return (90 - rot) end end Se activa el evento onClientKey de la función drawing, pero me da errores como: Attemp to perform arithmetic on 'z' (nil value) Attemp to perform arithmetic on 'rx' (nil value) Attemp to perform arithmetic on 'x' (nil value) etc... Quizá porque el elemento "c_element" no existe, pero, ¿por qué si ya está creado?, ese es mi duda... También intente quitando el current_cElement(nil), pero igual, sigue dando esos errores.