Jump to content

depato123

Members
  • Posts

    551
  • Joined

  • Last visited

Everything posted by depato123

  1. Hola necesito ayuda con este script: --------- Garage1 ------ pickup1 = createPickup(-1519.09, 2557.55, 55.5,3,1318,0) pickup2 = createPickup(1416.0881347656,-35.730838775635,1000.3702392578,3,1318,0) function pickupHit (hitPlayer, matchingDimension) if (source == pickup1) then addCommandHandler("en", teleport) end end addEventHandler ("onPickupHit", getRootElement(), pickupHit) function pickupLeave (leavePlayer, matchingDimension) if (source == pickup1) then removeCommandHandler("en", teleport) end end addEventHandler ("---", getRootElement(), pickupLeave) function teleport(player) if getElementType(player)=="player" then local vehicle=getPedOccupiedVehicle(player) if source == pickup1 then setElementInterior(player, 1, 1416.0881347656,-35.730838775635,1000.3702392578) setElementInterior(vehicle, 1, 1416.0881347656,-35.730838775635,1000.3702392578) end end end Lo que tendria que hacer el script es al entrar al "pickup1" se tendria que crear un comando "en" y al usar ese comando me tendria que teletransportar al interior 1 y a la posicion especificada en el script. pero el problema es que al entrar al "pickup1" no se crea el comando o por lo menos el comando no funciona y el segundo problema es que no se como hacer que al salir del "pickup1" se elimine ese comando. ayuda¡¡¡
  2. Ya lo solucioné por mi cuenta
  3. creo que lo define aca ownNumber = item.value Aunque en todo el script no vi algo parecido.
  4. Hola, tengo un problema con el siguiente script: Server - Side addCommandHandler( "call", function( player, commandName, ownNumber, otherNumber ) x,y,z = getElementPosition(value) if exports.players:isLoggedIn( player ) then if tonumber( ownNumber ) and otherNumber and exports.items:has( player, 7, tonumber( ownNumber ) ) then ownNumber = tonumber( ownNumber ) else local has, key, item = exports.items:has( player, 7 ) if has then otherNumber = ownNumber ownNumber = item.value else outputChatBox( "(( No tienes un telefono.))", player, 255, 0, 0 ) end end local otherNumber = tonumber( otherNumber ) or findFromPhoneBook( ownNumber, otherNumber ) if ownNumber and otherNumber then if ownNumber == otherNumber then outputChatBox( "No puedes llamarte a ti mismo.", player, 255, 0, 0 ) else local ownPhone = { exports.items:has( player, 7, ownNumber ) } exports.chat:me( player, "recoje su " .. ( ownPhone[3].name or "cellphone" ) .. " y teclea en él." ) if services[ otherNumber ] then p[ player ] = { other = false, service = otherNumber, number = ownNumber, state = 2, input = { }, serviceState = 1 } advanceService( player ) return else for key, value in ipairs( getElementsByType( "player" ) ) do if value ~= player then local otherPhone = { has( value, 7, otherNumber ) } if otherPhone and otherPhone[1] then p[ player ] = { other = value, number = ownNumber, state = 0 } p[ value ] = { other = player, number = otherNumber, state = 0 } --exports.chat:me( value, "'s " .. ( otherPhone[3].name or "phone" ) .. " starts to ring." ) triggerClientEvent ( "llamadaentrante", getRootElement(), x, y, z ) exports.chat:me( value, " recibe una llamada" ) outputChatBox( "Has recibido una llamada del número " .. ( findInPhoneBook( otherNumber, ownNumber ) or ( "#" .. ownNumber ) ) .. ". (( /pickup para contestar. ))", value, 180, 255, 180 ) return end end end end -- TODO: if the phone is a dropped item, a menu for picking up/hanging up would be nice. and an actual check if it is outputChatBox( "You hear a dead tone.", player, 255, 0, 0 ) end else outputChatBox( "Syntax: /call [number] or /call [your number] [other number]", player, 255, 255, 255 ) end end end ) Client - Side function llamadaentrante(x, y, z) sound = playSound3D( "nokia.mp3", x, y, z, false ) setSoundMaxDistance( sound, 15 ) setSoundVolume( sound, 3 ) end addEvent( "llamadaentrante", true ) addEventHandler( "llamadaentrante", getRootElement(), llamadaentrante) Debug script [2013-12-09 09:01:01] WARNING: items/phones.lua:3: Bad argument @ 'getElementPosition' [Expected element at argument 1, got nil] No se porque me salta ese error, si ya lo definí como value. Hablo de la linea 3 de server side x,y,z = getElementPosition(value) Lo que tendría que suceder es cuando "Player" llama a "Value" a value le tendría que aparecer un sonido que ya esta tiggreado pero el problema es lo que me da la linea 3 de server side. porfavor ayuda¡¡¡
  5. Hola, me salta el error network trouble cada rato, mi servidor esta hosteado pero yo creo que es culpa de la db, yo uso db4free. ¿Como puedo solucionarlo? ¿Cambiando de proveedor de db?
  6. Ajajajaaja estaba haciendo cualquier cosa perdon, y gracias.
  7. así? function lice(player) if getElementData( player, "carLicence" ) then outputChatBox ( "Si Ves esto funciona", player, 255, 193, 37, true ) else if source == vehroleq then return end outputChatBox ( "No Tienes Licencia de Autos", player, 255, 193, 37, true ) cancelEvent ( ) end end addEventHandler ( "onVehicleStartEnter", getRootElement(), lice ) o así? function lice(player) if getElementData( player, "carLicence" ) then outputChatBox ( "Si Ves esto funciona", player, 255, 193, 37, true ) else if source == vehroleq then return end outputChatBox ( "No Tienes Licencia de Autos", player, 255, 193, 37, true ) cancelEvent ( ) end end addEventHandler ( "onVehicleStartEnter", getRootElement(), lice ) perdon, es que nunca use eso
  8. hola, tengo un problema con este script local vehroleq = createVehicle ( 436, -1323.3212890625, 2702.109375, 49.833282470703 ) setElementRotation ( vehroleq, 0,0,210 ) function lice(player) if getElementData( player, "carLicence" ) then outputChatBox ( "Si Ves esto funciona", player, 255, 193, 37, true ) else outputChatBox ( "No Tienes Licencia de Autos", player, 255, 193, 37, true ) cancelEvent ( ) end end addEventHandler ( "onVehicleStartEnter", getRootElement(), lice ) ¿Como puedo hacer que un user no pueda entrar a ningun vehiculo a exepcion del vehiculo "vehroleq"? osea que un user no pueda entrar a ningun vehiculo pero al vehiculo vehroleq si pueda
  9. P.R.P son las iniciales mias y las de mis 2 socios, que me ayudaron a crear el server hace un par de años PD: Que les parece la idea?
  10. Listo, gracias
  11. Buenos días, queria compartir con ustedes el proyecto que fue re abierto, llamado P.R.P Roleplay. Presentacion de proyecto, allá en junio de este año Tubimos que descontinuar el proyecto ya que tubimos varios problemas con los usuarios del foro y con el grupo de testers. Ahora esta confirmado que el servidor se abrira el 30/11/2013. Con un nuevo gamemode y mas sistemas, etc Información del servidor: • Mapa: Blueberry/Red County • Foro: http://www.prproleplay.foro.bz • IP: 37.187.28.212:24113 • Game Mode: Roleplay Historia: Este es un proyecto iniciado a finales del 2011 y nunca continuado desde ese entonces, tras finales de ese año vuelta en abril del 2012 y noviembre de ese mismo año. Este proyecto trata sobre un servidor enteramente de RolePlay, esta modalidad de juego trata de imitar la vida real. Acerca del gamemode: El gamemode utilizado es paradise, con algunas modificaciones hechas por unos scripters contratados y voluntarios. El gamemode original fue modificado y implementamos mas cosas. como por ejemplo un sistema de DNI Otra información: El servidor está en una fase avanzada de desarollo. Ahora mismo estamos en un 90% de desarollo. Todos los usuarios son invitados a rolear y a pasar el rato en P.R.P. La nueva actualización nos trae a blueberry. Un pequeño pueblo ubicado en el condado de blueberry, esta actualización cuenta con nuevos sistemas y nuevos mapeos. Desde esta actualización el admin se ganará gracias a unos pocos requisitos. • Ser activo • Saber Rolear y No trolear • Invitar Gente. Si crees que tienes todo eso puedes avisarme y te comenzaré a evaluar. En las próximas horas se te evaluará los puntos antes dichos y si lo haces bien lograrás ser admin. Las cosas que trae el nuevo parche 4.0 son estas: • Nuevo login panel • Sistemas de dni • Maletero en los autos con 4 espacios de armas y posibilidad de llevar marihuana en el vehículo • Sistema de droga • Trabajo de barrendero • Trabajo de repartidor de pizza • Luces de giro en los autos • Mas animaciones • Comando /animaciones para ver las animaciones y sus bloques • Sistema de radio para la facción de "Radio estatal de Blueberry" • Cámara en primera persona • Nuevo tipo de letra para los nametags • Tienda de ferretería para comprar relojes, alarmas, billeteras y copias de llaves • Nuevo Hud • Comandos para tirar y recoger armas • Juegos de pool y de billard • Puntuación de rol • Sistema de /ent para tener un rol de entorno encima de tu cabeza • Un pequeño sistema de interacción con auto por fuera de el. (Te pones frente a un auto, presionas N y se abrirá una puerta, maletero o capó) • Licencias de conducción y de armas • Test de rol al inicio del juego. (Para evitar trolls y demas) • Sistema de policías terminado con nuevos comandos como /ref, /arrestar, /esposar • Sistema de mecánicos con nuevos comandos como /guimecanico • Sistema de médicos con nuevos comandos como /curar /crearcamilla • Sistema de subsidios. Estos te pagan cada 1 hora y mientras mas rango tengas en una facción mas te pagará • Sistema de multas, si las cámaras te observan a mucha velocidad te hacen una multa. Y esa multa llega a la facción de la policía Fotos: Videos: ____________________________________________________________________________ Espero que este server no este mal visto como fue hace un par de meses el proyecto. PD: Como muchos me decían que "Yo no sabia de script" contrate a varios scripters para que ya no me vengan con eso
  12. Intente pero no pasa nada, luego intente con otros eventos como onPlayerDamage pero no se como hacer que cuando algun user use un skin de mujer se le ponga automaticamente el estilo de caminar 55
  13. asi? --[[ Copyright (c) 2010 MTA: Paradise This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ]] local skins = { male = { black = { 0, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 28, 51, 66, 67, 79, 80, 83, 84, 102, 103, 104, 105, 106, 107, 134, 136, 142, 143, 144, 156, 163, 166, 168, 176, 180, 182, 183, 185, 220, 221, 222, 249, 253, 260, 262 }, white = { 23, 26, 27, 29, 30, 32, 33, 34, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 50, 52, 57, 58, 59, 60, 61, 62, 68, 70, 71, 72, 73, 78, 81, 82, 94, 95, 96, 97, 98, 99, 100, 101, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 132, 133, 135, 137, 146, 147, 153, 154, 155, 158, 159, 160, 161, 162, 164, 165, 167, 170, 171, 172, 173, 174, 175, 177, 179, 181, 184, 186, 187, 188, 189, 200, 202, 203, 204, 206, 209, 210, 212, 213, 217, 223, 227, 228, 229, 230, 234, 235, 236, 239, 240, 241, 242, 247, 248, 250, 252, 254, 255, 258, 259, 261, 264 } }, setPedWalkingStyle ( source, 56) female = { black = { 9, 10, 11, 13, 63, 69, 76, 139, 148, 190, 195, 207, 215, 218, 219, 238, 244, 245, 256, }, white = { 12, 31, 38, 39, 40, 41, 53, 54, 55, 56, 64, 75, 77, 85, 87, 88, 89, 90, 91, 92, 93, 129, 130, 131, 138, 140, 141, 145, 150, 151, 152, 157, 169, 178, 191, 192, 193, 194, 196, 197, 198, 199, 201, 205, 211, 214, 216, 224, 225, 226, 231, 232, 233, 237, 243, 246, 251, 257, 263 } } } local skins_ = { } local skins__ = { } for k, v in pairs( skins ) do for k2, v2 in pairs( v ) do for _, skin in ipairs( v2 ) do table.insert( skins_, skin ) skins__[ skin ] = { gender = k, color = k2 } end end end table.sort( skins_ ) function getSkins( ) return skins_ end al de los hombres se lo deje default
  14. Hola, tengo este script: --[[ Copyright (c) 2010 MTA: Paradise This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ]] local skins = { male = { black = { 0, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 28, 51, 66, 67, 79, 80, 83, 84, 102, 103, 104, 105, 106, 107, 134, 136, 142, 143, 144, 156, 163, 166, 168, 176, 180, 182, 183, 185, 220, 221, 222, 249, 253, 260, 262 }, white = { 23, 26, 27, 29, 30, 32, 33, 34, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 50, 52, 57, 58, 59, 60, 61, 62, 68, 70, 71, 72, 73, 78, 81, 82, 94, 95, 96, 97, 98, 99, 100, 101, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 132, 133, 135, 137, 146, 147, 153, 154, 155, 158, 159, 160, 161, 162, 164, 165, 167, 170, 171, 172, 173, 174, 175, 177, 179, 181, 184, 186, 187, 188, 189, 200, 202, 203, 204, 206, 209, 210, 212, 213, 217, 223, 227, 228, 229, 230, 234, 235, 236, 239, 240, 241, 242, 247, 248, 250, 252, 254, 255, 258, 259, 261, 264 } }, female = { black = { 9, 10, 11, 13, 63, 69, 76, 139, 148, 190, 195, 207, 215, 218, 219, 238, 244, 245, 256, }, white = { 12, 31, 38, 39, 40, 41, 53, 54, 55, 56, 64, 75, 77, 85, 87, 88, 89, 90, 91, 92, 93, 129, 130, 131, 138, 140, 141, 145, 150, 151, 152, 157, 169, 178, 191, 192, 193, 194, 196, 197, 198, 199, 201, 205, 211, 214, 216, 224, 225, 226, 231, 232, 233, 237, 243, 246, 251, 257, 263 } } } local skins_ = { } local skins__ = { } for k, v in pairs( skins ) do for k2, v2 in pairs( v ) do for _, skin in ipairs( v2 ) do table.insert( skins_, skin ) skins__[ skin ] = { gender = k, color = k2 } end end end table.sort( skins_ ) function getSkins( ) return skins_ end function isValidSkin( skin ) return skin and skins__[ skin ] and true or false end function getSkinDetails( skin ) return isValidSkin( skin ) and skins__[ skin ] end En el script hay una tabla que pertenece a los skins de hombres y a los skins de mujeres, como puedo hacer que las mujeres tengan un tipo de caminar diferente se que debo usar setPedWalkingStyle ( source, MOVE_PLAYER_M) pero no se como hacer que pase lo que antes mencione (poner para los skin "female" el estilo de caminar MOVE_PLAYER_M) ¿Alguna ayuda?
  15. Perdón y gracias
  16. ahora se repite muchas veces, por ejemplo si hay 4 conectados se repite 4 veces...
  17. habia olvidado eso, ya lo agregue y me quedo así el script chat_range=100 results = { "lo logra.", "no lo logra." } function isPlayerInRangeOfPoint(player,x,y,z,range) local px,py,pz=getElementPosition(player) return ((x-px)^2+(y-py)^2+(z-pz)^2)^0.5<=range end function publicIntentar ( source, cmd, ... ) if ... then local message = table.concat ( { ... }, " " ) for _,v in ipairs(getElementsByType("player")) do if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) then outputChatBox ( getPlayerName(source).." intenta "..message.." y "..results[math.random( 1, #results )], root, 0, 255, 95, true ) end end else outputChatBox ( "Syntax /intentar [texto IC]'", source, 15, 255, 0, false ) end end addCommandHandler ( "intentar", publicIntentar ) pero sale este error y no funciona el comando
  18. Hola, ¿Como puedo hacer que este script tenga como rango maximo de vista 10? Se que hay que usar rangechat o algo asi, pero no se como se usa PD: Intente hacerlo así pero no me manda el texto ahora chat_range=10 results = { "lo logra.", "no lo logra." } function publicIntentar ( source, cmd, ... ) if ... then local message = table.concat ( { ... }, " " ) if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) then outputChatBox ( getPlayerName(source).." intenta "..message.." y "..results[math.random( 1, #results )], root, 0, 255, 95, true ) end else outputChatBox ( "Syntax /intentar [texto IC]'", source, 15, 255, 0, false ) end end addCommandHandler ( "intentar", publicIntentar ) Ahora intente de nuevo pero no funciona chat_range=100 results = { "lo logra.", "no lo logra." } function publicIntentar ( source, cmd, ... ) if ... then local message = table.concat ( { ... }, " " ) for _,v in ipairs(getElementsByType("player")) do if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) then outputChatBox ( getPlayerName(source).." intenta "..message.." y "..results[math.random( 1, #results )], root, 0, 255, 95, true ) end end else outputChatBox ( "Syntax /intentar [texto IC]'", source, 15, 255, 0, false ) end end addCommandHandler ( "intentar", publicIntentar )
  19. ¿Como puedo pegar elementos como un chaleco anti balas o un celular al personaje? Por ejemplo: que cuando hago la animación de hablar por teléfono que se cree y se pegue uno en mi mano
  20. Gracias solidsnake14
  21. Server side local vehiclesIgnoringLocked = { [448] = true, [461] = true, [462] = true, [463] = true, [481] = true, [509] = true, [510] = true, [521] = true, [522] = true, [581] = true, [586] = true, -- bikes [430] = true, [446] = true, [452] = true, [453] = true, [454] = true, [472] = true, [473] = true, [484] = true, [493] = true, [595] = true, -- boats [424] = true, [457] = true, [471] = true, [539] = true, [568] = true, [571] = true -- recreational vehicles } -- local addCommandHandler_ = addCommandHandler addCommandHandler = function( commandName, fn, restricted, caseSensitive ) -- add the default command handlers if type( commandName ) ~= "table" then commandName = { commandName } end for key, value in ipairs( commandName ) do if key == 1 then addCommandHandler_( value, fn, restricted, caseSensitive ) else addCommandHandler_( value, function( player, ... ) -- check if he has permissions to execute the command, default is not restricted (aka if the command is restricted - will default to no permission; otherwise okay) if hasObjectPermissionTo( player, "command." .. commandName[ 1 ], not restricted ) then fn( player, ... ) end end ) end end -- check for alternative handlers, such as gotovehicle = gotoveh, gotocar for k, v in ipairs( commandName ) do if v:find( "vehicle" ) then for key, value in pairs( { "veh", "car" } ) do local newCommand = v:gsub( "vehicle", value ) if newCommand ~= v then -- add a second (replaced) command handler addCommandHandler_( newCommand, function( player, ... ) -- check if he has permissions to execute the command, default is not restricted (aka if the command is restricted - will default to no permission; otherwise okay) if hasObjectPermissionTo( player, "command." .. commandName[ 1 ], not restricted ) then fn( player, ... ) end end ) end end end end end -- local p = { } local getPedOccupiedVehicle_ = getPedOccupiedVehicle getPedOccupiedVehicle = function( ped ) local vehicle = isPedInVehicle( ped ) and getPedOccupiedVehicle_( ped ) if vehicle and ( p[ ped ] and p[ ped ].vehicle == vehicle or getElementParent( vehicle ) ~= getResourceDynamicElementRoot( resource ) ) then return vehicle end return false end local function isPedEnteringVehicle( ped ) return getPedOccupiedVehicle_( ped ) and not getPedOccupiedVehicle( ped ) end -- local vehicleIDs = { } local vehicles = { } addEventHandler( "onResourceStart", resourceRoot, function( ) -- Looking at it from a technical point of view, loading vehicles on a non-existant table makes only limited sense if not exports.sql:create_table( 'vehicles', { { name = 'vehicleID', type = 'int(10) unsigned', auto_increment = true, primary_key = true }, { name = 'model', type = 'int(10) unsigned' }, { name = 'posX', type = 'float' }, { name = 'posY', type = 'float' }, { name = 'posZ', type = 'float' }, { name = 'rotX', type = 'float' }, { name = 'rotY', type = 'float' }, { name = 'rotZ', type = 'float' }, { name = 'interior', type = 'tinyint(3) unsigned', default = 0 }, { name = 'dimension', type = 'int(10) unsigned', default = 0 }, { name = 'respawnPosX', type = 'float' }, { name = 'respawnPosY', type = 'float' }, { name = 'respawnPosZ', type = 'float' }, { name = 'respawnRotX', type = 'float' }, { name = 'respawnRotY', type = 'float' }, { name = 'respawnRotZ', type = 'float' }, { name = 'respawnInterior', type = 'int(10) unsigned', default = 0 }, { name = 'respawnDimension', type = 'int(10) unsigned', default = 0 }, { name = 'numberplate', type = 'varchar(8)' }, { name = 'health', type = 'int(10) unsigned', default = 1000 }, { name = 'color1', type = 'tinyint(3) unsigned', default = 0 }, { name = 'color2', type = 'tinyint(3) unsigned', default = 0 }, { name = 'characterID', type = 'int(11)', default = 0 }, { name = 'locked', type = 'tinyint(3) unsigned', default = 0 }, { name = 'engineState', type = 'tinyint(3) unsigned', default = 0 }, { name = 'lightsState', type = 'tinyint(3) unsigned', default = 0 }, { name = 'tintedWindows', type = 'tinyint(3) unsigned', default = 0 }, { name = 'fuel', type = 'float unsigned', default = 100 }, } ) then cancelEvent( ) return end -- load all vehicles local result = exports.sql:query_assoc( "SELECT * FROM vehicles ORDER BY vehicleID ASC" ) if result then for key, data in ipairs( result ) do local vehicle = createVehicle( data.model, data.posX, data.posY, data.posZ, data.rotX, data.rotY, data.rotZ, numberplate ) -- tables for ID -> vehicle and vehicle -> data vehicleIDs[ data.vehicleID ] = vehicle vehicles[ vehicle ] = { vehicleID = data.vehicleID, respawnInterior = data.respawnInterior, respawnDimension = data.respawnDimension, characterID = data.characterID, engineState = not doesVehicleHaveEngine( vehicle ) or data.engineState == 1, tintedWindows = data.tintedWindows == 1, fuel = data.fuel } -- some properties setElementHealth( vehicle, data.health ) if data.health <= 300 then setVehicleDamageProof( vehicle, true ) vehicles[ vehicle ].engineState = false end setVehicleColor( vehicle, data.color1, data.color2, data.color1, data.color2 ) -- most vehicles don't use second/third color anyway setVehicleRespawnPosition( vehicle, data.respawnPosX, data.respawnPosY, data.respawnPosZ, data.respawnRotX, data.respawnRotY, data.respawnRotZ ) setElementInterior( vehicle, data.interior ) setElementDimension( vehicle, data.dimension ) setVehicleLocked( vehicle, data.locked == 1 ) setVehicleEngineState( vehicle, data.engineState == 1 ) setVehicleOverrideLights( vehicle, data.lightsState + 1 ) setElementData( vehicle, "fuel", data.fuel ) if data.upgrade0 then addVehicleUpgrade (vehicle, data.upgrade0 ) end if data.upgrade1 then addVehicleUpgrade (vehicle, data.upgrade1 ) end if data.upgrade2 then addVehicleUpgrade (vehicle, data.upgrade2 ) end if data.upgrade3 then addVehicleUpgrade (vehicle, data.upgrade3 ) end if data.upgrade4 then addVehicleUpgrade (vehicle, data.upgrade4 ) end if data.upgrade5 then addVehicleUpgrade (vehicle, data.upgrade5 ) end if data.upgrade6 then addVehicleUpgrade (vehicle, data.upgrade6 ) end if data.upgrade7 then addVehicleUpgrade (vehicle, data.upgrade7 ) end if data.upgrade8 then addVehicleUpgrade (vehicle, data.upgrade8 ) end if data.upgrade9 then addVehicleUpgrade (vehicle, data.upgrade9 ) end if data.upgrade10 then addVehicleUpgrade (vehicle, data.upgrade10 ) end if data.upgrade11 then addVehicleUpgrade (vehicle, data.upgrade11 ) end if data.upgrade12 then addVehicleUpgrade (vehicle, data.upgrade12 ) end if data.upgrade13 then addVehicleUpgrade (vehicle, data.upgrade13 ) end if data.upgrade14 then addVehicleUpgrade (vehicle, data.upgrade14 ) end if data.upgrade15 then addVehicleUpgrade (vehicle, data.upgrade15 ) end if data.upgrade16 then addVehicleUpgrade (vehicle, data.upgrade16 ) end if data.paintjob then setVehiclePaintjob ( vehicle, data.paintjob ) end end end -- bind a key for everyone for key, value in ipairs( getElementsByType( "player" ) ) do bindKey( value, "num_3", "down", "lockvehicle" ) bindKey( value, "num_1", "down", "toggleengine" ) bindKey( value, "num_2", "down", "togglelights" ) end -- -- Fuel update setTimer( function( ) for vehicle, data in pairs( vehicles ) do if not isElement( vehicle ) or getElementType( vehicle ) ~= "vehicle" then vehicles[ vehicle ] = nil elseif data.engineState and data.fuel and not isVehicleEmpty( vehicle ) and doesVehicleHaveEngine( vehicle ) and doesVehicleHaveFuel( vehicle ) then local vx, vy, vz = getElementVelocity( vehicle ) local speed = math.sqrt( vx * vx + vy * vy ) local loss = ( speed > 0.65 and 2 * speed or speed ) * 0.1 + 0.005 data.fuel = math.max( data.fuel - loss, 0 ) if math.floor( data.fuel + 0.5 ) ~= getElementData( vehicle, "fuel" ) then setElementData( vehicle, "fuel", math.floor( data.fuel + 0.5 ) ) end if data.fuel == 0 then setVehicleEngineState( vehicle, false ) for seat = 0, getVehicleMaxPassengers( vehicle ) do local player = getVehicleOccupant( vehicle, seat ) if player then triggerClientEvent( player, "gui:hint", player, "Out of Fuel", "Your " .. getVehicleName( vehicle ) .. " ran out of fuel!\nTo prevent this from happening, refill it regulary.", 3 ) end end end end end end, 2000, 0 ) end ) addCommandHandler( { "createvehicle", "makevehicle" }, function( player, commandName, ... ) model = table.concat( { ... }, " " ) model = getVehicleModelFromName( model ) or tonumber( model ) if model then local x, y, z, rz = getPositionInFrontOf( player ) local vehicle = createVehicle( model, x, y, z, 0, 0, rz ) if vehicle then local color1, color2 = getVehicleColor( vehicle ) local vehicleID, error = exports.sql:query_insertid( "INSERT INTO vehicles (model, posX, posY, posZ, rotX, rotY, rotZ, numberplate, color1, color2, respawnPosX, respawnPosY, respawnPosZ, respawnRotX, respawnRotY, respawnRotZ, interior, dimension, respawnInterior, respawnDimension) VALUES (" .. table.concat( { model, x, y, z, 0, 0, rz, '"%s"', color1, color2, x, y, z, 0, 0, rz, getElementInterior( player ), getElementDimension( player ), getElementInterior( player ), getElementDimension( player ) }, ", " ) .. ")", getVehiclePlateText( vehicle ) ) if vehicleID then -- tables for ID -> vehicle and vehicle -> data vehicleIDs[ vehicleID ] = vehicle vehicles[ vehicle ] = { vehicleID = vehicleID, respawnInterior = getElementInterior( player ), respawnDimension = getElementDimension( player ), characterID = 0, engineState = false, tintedWindows = false, fuel = 100 } -- some properties
  22. Nononono, el script no esta solo en client side, sino que esta server side y client side. Por eso intente trigearlo
  23. ajam, al principio queria agregarlo en serverside pero luego me dijiste que no se podia, por lo tanto intente hacer un triggedClientEvent pero sigo sin poder hacerlo.
  24. ¿El client side del resource de los vehiculos? (el resource de los vehiculos es el que le quiero agregar exports.gui:hint( "Este vehiculo no te pertenece" ) ) Este es el client de los vehiculos local engineState = nil local localPlayer = getLocalPlayer( ) addEventHandler( "onClientVehicleStartEnter", resourceRoot, function( player, seat ) -- save the state for when we're done entering, as GTA automatically turns the engines on if seat == 0 and player == localPlayer then engineState = { vehicle = source, state = getVehicleEngineState( source ) } else engineState = nil end end ) addEventHandler( "onClientVehicleEnter", resourceRoot, function( player, seat ) -- restore the engine state if engineState then if seat == 0 and player == localPlayer and engineState.vehicle == source then setVehicleEngineState( source, engineState.state ) end engineState = nil end end ) function open(x, y, z) sound = playSound3D( "open.mp3", x, y, z, false ) setSoundMaxDistance( sound, 15 ) setSoundVolume( sound, 3 ) end addEvent( "open", true ) addEventHandler( "open", getRootElement(), beepbeep) function guiPertenecido(player) exports.gui:hint( "(( Este " .. getVehicleName( source ) .. " pertenece a " .. name .. ". ))" ) end addEvent( "guiPertenecido", true ) addEventHandler( "guiPertenecido", getRootElement(), guiPertenecido)
  25. Client side del resource de los vehiculos function guiPertenecido(player) exports.gui:hint( "(( Este " .. getVehicleName( source ) .. " pertenece a " .. name .. ". ))" ) end addEvent( "guiPertenecido", true ) addEventHandler( "guiPertenecido", getRootElement(), guiPertenecido) Client side de gui: local screenX, screenY = guiGetScreenSize( ) local cursorX, cursorY = -1, -1 local defaultWidth = 360 local width = defaultWidth local height = 70 local x = ( screenX - width ) / 2 local y = screenY - height - 60 local line_height = 16 -- local title, text, icon, color, start, duration -- addEventHandler( "onClientRender", root, function( ) if start and duration then local tick = getTickCount( ) if tick > start + duration then title = nil text = nil icon = nil color = nil start = nil duration = nil else local alpha = 1 if start + duration / 2 < tick then alpha = ( start + duration - tick ) / duration * 2 end dxDrawRectangle( x - 5, y - 5, width + 10, height + 10, tocolor( color[1], color[2], color[3], color[4] * alpha ), true ) dxDrawImage( x, y + ( height - 64 ) / 2, 64, 64, "images/" .. icon .. ".png", 0, 0, 0, tocolor( 255, 255, 255, 255 * alpha ), true ) dxDrawText( title, x + 65, y, x + width, y + 18, tocolor( 255, 255, 255, 255 * alpha ), 0.6, "bankgothic", "left", "top", true, false, true ) dxDrawText( text, x + 70, y + 18, x + width, y + height, tocolor( 255, 255, 255, 255 * alpha ), 1, "default", "left", "top", true, true, true ) end end end ) -- function hint( ti, te, ic, dur ) if ic == 1 then icon = "okay" color = { 0, 93, 0, 193 } elseif ic == 2 then icon = "warning" color = { 127, 97, 31, 193 } elseif ic == 3 then icon = "error" color = { 127, 31, 31, 193 } else icon = "info" color = { 31, 127, 127, 193 } end start = getTickCount( ) if type( dur ) ~= "number" or dur < 500 then duration = 10000 else duration = dur end title = ti text = te return true end addEvent( "gui:hint", true ) addEventHandler( "gui:hint", getLocalPlayer( ), hint )
×
×
  • Create New...