Jump to content

Alexs

Members
  • Posts

    2,869
  • Joined

  • Last visited

Everything posted by Alexs

  1. No puedes evitar que explote con ese evento.
  2. Podrías comprobar el arma con que se le ataca o el tipo de daño que se le hace y evitar que pierda vida.
  3. Las funciones de GUI tienen incorporada la opción de posiciones relativas para ser acomodadas a cualquier pantalla y en el caso de los dibujados DirectX puedes hacer lo mismo y hacer tu mismo la multiplicación. Con respecto a tu script es bastante inútil al momento de acomodarse a la pantalla, te recomiendo cambiar esos cálculos por valores entre 0 y 1 e irlos multiplicandos por el tamaño de la pantalla. Ejemplo: local sW, sH = guiGetScreenSize() local gms = { [1] = { 0.04, 0.80, 0.20, 0.20 }, --Classic [2] = { 0.28, 0.80, 0.20, 0.20 }, --Time [3] = { 0.52, 0.80, 0.20, 0.20 }, --Teams [4] = { 0.76, 0.80, 0.20, 0.20 } --Score } for id =1,4 do dxDrawRectangle( gms[id][1]*sW, gms[id][2]*sH, gms[id][3]*sW, gms[id][4]*sH, tocolor( gColors[id][1],gColors[id][2],gColors[id][3], 250), false ) end Utilizo esos cálculos sencillos para esto:
  4. Te aconsejo compilar de todas formas, ya que hay muchas maneras de conseguir los scripts del lado del servidor y un poco de seguridad no esta nunca de mas.
  5. Olvidaste definir 'source', por lo que 'accName', 'x', 'y' y 'z' serán false. @Brad96 revisa tus PM's.
  6. Principalmente depende de los modos de juego que agregues, llevo unos días trabajando en un servidor así y como solo sera de disparos, se simplifica bastante.
  7. Siempre recomiendo este tutorial: http://nixstaller.sourceforge.net/manua ... ler_9.html y si quieres agregame a Skype, últimamente ando un poco ocupado, pero puedo ayudarte en cosas básicas.
  8. Lo que ocurre es que 'source' en 'onMarkerHit' es el 'marker' al que entras, no un 'player'.
  9. Recuerda definir 'thePlayer'.
  10. Es por que utilizas la variable 'root', cuando quieras que solo se ejecute al iniciar ese recurso utiliza 'resourceRoot': function saludar() outputChatBox('Hola a todos!', root, 255, 255, 255, true) end addEventHandler('onResourceStart', resourceRoot, saludar) Podrías también utilizar: function saludar() outputChatBox('Hola a todos!', root, 255, 255, 255, true) end addEventHandler('onResourceStart', getResourceRootElement( getThisResource()), saludar) --o getResourceRootElement() sin argumentos Pero recomiendo mas la primera forma.
  11. Tienes varios errores y cosas incompletas, para empezar utilizas 'getLocalPlayer' en server-side.
  12. Olvidaste definir 'thePlayer'.
  13. There's no problem if u use a Steam version.
  14. Alexs

    Ayuda script!

    local root = getRootElement() local thisResourceRoot = getResourceRootElement(getThisResource()) local drift_records = {} local drift_mejor = 0 local drift_nombre = "N/A" addEventHandler ( "onResourceStart", thisResourceRoot, function() call(getResourceFromName("scoreboardd"), "addScoreboardColumn", "Mejor Drift", 11, 11, 0.11) call(getResourceFromName("scoreboardd"), "addScoreboardColumn", "Anterior Drift", 12, 12, 0.11) call(getResourceFromName("scoreboardd"), "addScoreboardColumn", "Total Drift", 13, 13, 0.11) executeSQLCreateTable("recordsDrift","pista TEXT, nombre TEXT, score INTEGER") addEvent("driftClienteListo", true) addEventHandler("driftClienteListo", root, function(player) triggerClientEvent(player, "driftActualizarRecord", root, drift_mejor, drift_nombre) if drift_mejor == 0 then outputChatBox("* #0080FFNo hay records", player, 255, 255, 255, true) else outputChatBox(string.format("* #0080FFEl nuevo record es de [#FF8000%d#0080FF] puntos [#FF8000%s#0080FF]", drift_mejor, drift_nombre), player, 255, 255, 255, true) end end) end ) addEventHandler ( "onResourceStop", thisResourceRoot, function() call(getResourceFromName("scoreboardd"), "removeScoreboardColumn", "Mejor Drift", 11, 11, 0.11) call(getResourceFromName("scoreboardd"), "removeScoreboardColumn", "Anterior Drift", 12, 12, 0.11) call(getResourceFromName("scoreboardd"), "removeScoreboardColumn", "Total Drift", 13, 13, 0.11) end ) addEventHandler ( "onGamemodeMapStart", root, function(mapResource) local mapname = getResourceInfo(mapResource, "name") or getResourceName(mapResource) local command = string.format("pista='%s'",mapname) local record = executeSQLSelect("recordsDrift","nombre, score",command) if #record == 0 then executeSQLInsert("recordsDrift",string.format("'%s', 'N/A', 0",mapname)) drift_mejor = 0 drift_nombre = "N/A" else drift_mejor = record[1]["score"] drift_nombre = record[1]["nombre"] end triggerClientEvent(root, "driftActualizarRecord", root, drift_mejor, drift_nombre) triggerClientEvent(root, "driftResetAllScores", root) if drift_mejor == 0 then outputChatBox("* #0080FFNo hay records", 255, 255, 255, true) else outputChatBox(string.format("* #0080FFEl nuevo record es de #FF8000%d #0080FFpuntos #FF8000(%s)", drift_mejor, drift_nombre), player, 255, 255, 255, true) end end) addEventHandler ( "onGamemodeMapStop", root, function(mapResource) local mapname = getResourceInfo(mapResource, "name") or getResourceName(mapResource) if not mapname then return end local command = string.format("pista='%s'",mapname) executeSQLUpdate("recordsDrift",string.format("nombre = '%s', score = %d", drift_nombre, drift_mejor), command) end) addEventHandler("onVehicleDamage", root, function() thePlayer = getVehicleOccupant(source, 0) if thePlayer then triggerClientEvent(thePlayer, "driftCarCrashed", root, source) end end) addEvent("driftNuevoRecord", true) addEventHandler("driftNuevoRecord", root, function(score, name) if score > drift_mejor then outputChatBox(string.format("* #0080FFNuevo record! #0080FF[#FF8000%d puntos#0080FF] #0080FF[#FF8000%s#0080FF]",score,name), player, 255, 255, 255, true) drift_mejor = score drift_nombre = name triggerClientEvent(root, "driftActualizarRecord", root, drift_mejor, drift_nombre) end end) addEvent( 'rewardDrift', true ) addEventHandler( 'rewardDrift', root, function( reward ) givePlayerMoney( source, reward ) outputChatBox( 'Drift: '..reward ) end ) Utiliza eso para el 'server-side' y dime si aparece el mensaje.
  15. Alexs

    Ayuda script!

    Usa esto en el client-side: local BannedIDs = { 432, 532 } local rootElem = getRootElement() local thisRoot = getResourceRootElement(getThisResource()) local player = getLocalPlayer() local vehicle local size = 1.2 local modo = 0.01 local score = 0 local screenScore = 0 local tick local idleTime local multTime local driftTime local Yellow = tocolor(255,128,0) local Red = tocolor(234,0,3) local TempCol = Yellow local mult = 1 local tablamult = {350,1400,4200,11200} local anterior = 0 local mejor = 0 local total = 0 local Shadow = tocolor(0,0,0,255) local global_mejor = 0 local global_nombre = "N/A" local screenWidth, screenHeight = guiGetScreenSize() local x1,y1,x2,y2 = screenWidth*0.2,screenHeight*0.1,screenWidth*0.8,screenHeight*0.8 addEventHandler("onClientResourceStart", thisRoot, function() addEventHandler("onClientRender", rootElem, showText) outputChatBox("* #0080FFEsperando datos de drift del server...", 255, 255, 255, true) triggerServerEvent("driftClienteListo", rootElem, player) end ) addEventHandler("onClientResourceStop", thisRoot, function() removeEventHandler("onClientRender", rootElem, showText) end ) function isValidVehicle() local temp = getPedOccupiedVehicle(player) if not temp or getVehicleOccupant(temp,0) ~= player or getVehicleType(temp) ~= "Automobile" then return false end local vehID = getElementModel(temp) for k,v in ipairs(BannedIDs) do if vehID == v then return false end end return temp end function showText() dxDrawText(string.format("Mejor Drift: %s - %d",global_nombre,global_mejor),22,567,screenWidth,screenHeight,Shadow,1,"pricedown") dxDrawText(string.format("Mejor Drift: %s - %d",global_nombre,global_mejor),20,565,screenWidth,screenHeight,Yellow,1,"pricedown") vehicle = isValidVehicle() if not vehicle then return end if size > 1.3 then modo = -0.01 elseif size < 1.2 then modo = 0.01 end size = size + modo tick = getTickCount() local angulo,velocidad = angle() local tempBool = tick - (idleTime or 0) < 750 if not tempBool and score ~= 0 then anterior = score setElementData(player, "Anterior Drift", anterior) total = total+anterior setElementData(player, "Total Drift", total) if score > mejor then mejor = score setElementData(player, "Mejor Drift", mejor) checkPuntaje(mejor) end triggerEvent("onVehicleDriftEnd", rootElem, tick-driftTime-750) score = 0 end if angulo ~= 0 then if score == 0 then triggerEvent("onVehicleDriftStart", rootElem) driftTime = tick end if tempBool then score = score + math.floor(angulo*velocidad)*mult else score = math.floor(angulo*velocidad)*mult end if TempCol == Red then TempCol = Yellow end screenScore = score idleTime = tick end local temp2 = string.format("Factor: X%d\n%s",mult,mult~=5 and string.format("Ganar X%d con %d",mult+1,tablamult[mult]) or "MAX") dxDrawText(temp2, 21.09,166.09,screenWidth,screenHeight, Shadow, 1.2, "default-bold","left") dxDrawText(temp2, 20,165,screenWidth,screenHeight, Yellow, 1.2, "default-bold","left","top", false,true,false) if velocidad <= 0.3 and mult ~= 1 then dxDrawText("\n\nMuy Lento!", 21.09,166.09,screenWidth,screenHeight, Shadow, 1.2, "default-bold","left") dxDrawText("\n\nMuy Lento!", 20,165,screenWidth,screenHeight, Yellow, 1.2, "default-bold","left","top", false,true,false) end if tick - (idleTime or 0) < 3000 then local temp = "DRIFT" if score >= 100000 then temp = "DRIFT\n\nDrift King!" elseif score >= 50000 then temp = "DRIFT\n\nInsane Drift!" elseif score >= 20000 then temp = "DRIFT\n\nOutrageous!" elseif score >= 15000 then temp = "DRIFT\n\nColossal!" elseif score >= 7000 then temp = "DRIFT\n\nSuberb!" elseif score >= 3000 then temp = "DRIFT\n\nGreat Drift!" elseif score >= 1000 then temp = "DRIFT\n\nGood Drift!" end dxDrawText(temp, x1+2,y1+2,x2,y2, Shadow, 2.2, "sans","center") dxDrawText(temp, x1,y1,x2,y2, TempCol, 2.2, "sans","center","top", false,true,false) dxDrawText(string.format("\n%d",screenScore), x1+4,y1-8,x2,y2, Shadow, size, "pricedown","center") dxDrawText(string.format("\n%d",screenScore), x1,y1-10,x2,y2, TempCol, size, "pricedown","center","top", false,true,false) end end function angle() local vx,vy,vz = getElementVelocity(vehicle) local modV = math.sqrt(vx*vx + vy*vy) if not isVehicleOnGround(vehicle) then return 0,modV end local rx,ry,rz = getElementRotation(vehicle) local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz)) local deltaT = tick - (multTime or 0) if mult~= 1 and modV <= 0.3 and deltaT > 750 then mult = mult-1 multTime = tick elseif deltaT > 1500 then local temp = 1 if score >= 11200 then temp = 5 elseif score >= 4200 then temp = 4 elseif score >= 1400 then temp = 3 elseif score >= 350 then temp = 2 end if temp>mult then mult = temp multTime = tick end end if modV <= 0.2 then return 0,modV end --speed over 40 km/h local cosX = (sn*vx + cs*vy)/modV if cosX > 0.966 or cosX < 0 then return 0,modV end --angle between 15 and 90 degrees return math.deg(math.acos(cosX))*0.5, modV end addEvent("driftCarCrashed", true) addEventHandler("driftCarCrashed", rootElem, function() if score ~= 0 then score = 0 mult = 1 TempCol = Red triggerEvent("onVehicleDriftEnd", rootElem, 0) end end ) addEventHandler( 'onVehicleDriftEnd', root, function( score ) if score > 0 then triggerServerEvent( 'rewardDrift', localPlayer, score ) end end ) addEvent("driftActualizarRecord", true) addEventHandler("driftActualizarRecord", rootElem, function(score, name) global_mejor = score global_nombre = name end ) function resetScore() anterior,mejor,total = 0,0,0 setElementData(player, "Anterior Drift", anterior) setElementData(player, "Total Drift", total) setElementData(player, "Mejor Drift", mejor) end addEvent("driftResetAllScores", true) addEventHandler("driftResetAllScores", rootElem, resetScore) addCommandHandler("resetdrift", resetScore) function checkPuntaje(BestDrift) triggerServerEvent("driftNuevoRecord", rootElem, BestDrift, string.gsub(getPlayerName(player), "#%x%x%x%x%x%x", "")) end y esto para el server-side: local root = getRootElement() local thisResourceRoot = getResourceRootElement(getThisResource()) local drift_records = {} local drift_mejor = 0 local drift_nombre = "N/A" addEventHandler ( "onResourceStart", thisResourceRoot, function() call(getResourceFromName("scoreboardd"), "addScoreboardColumn", "Mejor Drift", 11, 11, 0.11) call(getResourceFromName("scoreboardd"), "addScoreboardColumn", "Anterior Drift", 12, 12, 0.11) call(getResourceFromName("scoreboardd"), "addScoreboardColumn", "Total Drift", 13, 13, 0.11) executeSQLCreateTable("recordsDrift","pista TEXT, nombre TEXT, score INTEGER") addEvent("driftClienteListo", true) addEventHandler("driftClienteListo", root, function(player) triggerClientEvent(player, "driftActualizarRecord", root, drift_mejor, drift_nombre) if drift_mejor == 0 then outputChatBox("* #0080FFNo hay records", player, 255, 255, 255, true) else outputChatBox(string.format("* #0080FFEl nuevo record es de [#FF8000%d#0080FF] puntos [#FF8000%s#0080FF]", drift_mejor, drift_nombre), player, 255, 255, 255, true) end end) end ) addEventHandler ( "onResourceStop", thisResourceRoot, function() call(getResourceFromName("scoreboardd"), "removeScoreboardColumn", "Mejor Drift", 11, 11, 0.11) call(getResourceFromName("scoreboardd"), "removeScoreboardColumn", "Anterior Drift", 12, 12, 0.11) call(getResourceFromName("scoreboardd"), "removeScoreboardColumn", "Total Drift", 13, 13, 0.11) end ) addEventHandler ( "onGamemodeMapStart", root, function(mapResource) local mapname = getResourceInfo(mapResource, "name") or getResourceName(mapResource) local command = string.format("pista='%s'",mapname) local record = executeSQLSelect("recordsDrift","nombre, score",command) if #record == 0 then executeSQLInsert("recordsDrift",string.format("'%s', 'N/A', 0",mapname)) drift_mejor = 0 drift_nombre = "N/A" else drift_mejor = record[1]["score"] drift_nombre = record[1]["nombre"] end triggerClientEvent(root, "driftActualizarRecord", root, drift_mejor, drift_nombre) triggerClientEvent(root, "driftResetAllScores", root) if drift_mejor == 0 then outputChatBox("* #0080FFNo hay records", 255, 255, 255, true) else outputChatBox(string.format("* #0080FFEl nuevo record es de #FF8000%d #0080FFpuntos #FF8000(%s)", drift_mejor, drift_nombre), player, 255, 255, 255, true) end end) addEventHandler ( "onGamemodeMapStop", root, function(mapResource) local mapname = getResourceInfo(mapResource, "name") or getResourceName(mapResource) if not mapname then return end local command = string.format("pista='%s'",mapname) executeSQLUpdate("recordsDrift",string.format("nombre = '%s', score = %d", drift_nombre, drift_mejor), command) end) addEventHandler("onVehicleDamage", root, function() thePlayer = getVehicleOccupant(source, 0) if thePlayer then triggerClientEvent(thePlayer, "driftCarCrashed", root, source) end end) addEvent("driftNuevoRecord", true) addEventHandler("driftNuevoRecord", root, function(score, name) if score > drift_mejor then outputChatBox(string.format("* #0080FFNuevo record! #0080FF[#FF8000%d puntos#0080FF] #0080FF[#FF8000%s#0080FF]",score,name), player, 255, 255, 255, true) drift_mejor = score drift_nombre = name triggerClientEvent(root, "driftActualizarRecord", root, drift_mejor, drift_nombre) end end) addEvent( 'rewardDrift', true ) addEventHandler( 'rewardDrift', root, function( reward ) givePlayerMoney( source, reward ) end ) Revisa si funciona y avísame si es que algo falla.
  16. Alexs

    Ayuda script!

    Ya habías hecho un post de esto, ¿no?
  17. Alexs

    [Question]

    Use 'isPedInVehicle' or 'getPedOccupiedVehicle'.
  18. Alexs

    Ayuda Script

    si, ya me di cuenta, gracias , una pregunta: como puedo hacer que los codigos de color de los nombres se desactive?, se que es con string.format Usa 'string.gsub', ejemplo: addEventHandler ( "onPlayerChat", getRootElement(), function ( message, messageType ) if messageType == 1 then cancelEvent() outputChatBox( "#FF0000* "..(getPlayerName(source)):gsub( '#%x%x%x%x%x%x', '' ).." "..message, root, 255, 255, 255, true ) outputServerLog( "CHAT: * ".. (getPlayerName ( source )):gsub( '#%x%x%x%x%x%x', '' )..": #0080FF" .. message, 255, 255, 255, true) end end)
  19. Alexs

    Ayuda Script

    'outputServerLog' no tiene argumentos de colores ya que escribe en el registro del servidor, utiliza lo que dijo @EstrategiaGTA para que aparezca en el chat y puedas ponerle colores.
  20. Alexs

    ChatBox

    Quizá llego tarde, pero lo que ocurre es que utilizas 'getRootElement', deberías utilizar alguna variable definida como un elemento de tipo player, dependiendo del evento podría ser source o deberías utilizar alguna manera de conseguir al jugador deseado.
  21. Significa que 'm' no es un elemento, si no que es algún otro tipo de variable (lo mas probable es que -el marcador- 'm' no exista y sea false o nil)
  22. Haz esto, añade esta linea en la función: outputChatBox( 'M: '..type( m )..' y V: '..type(v) ) y dime si en algún momento, dice 'M: boolean', también revisa si el error se da siempre o solo cuando te alejas del marcador o si este es destruido. -| Como dato aparte, si el error te molesta, pero el recurso funciona utiliza esto: addEvent('onVehicleRefuel',true); function vehicleRefuel(v,m) if m then if not getElementData(m,'gasStation') then return end if getElementType(v) ~= 'vehicle' then return end if getVehicleType(v) ~= 'Automobile' and getVehicleType(v) ~= 'Bike' and getVehicleType(v) ~= 'Monster Truck' and getVehicleType(v) ~= 'Quad' then return end local driver = getVehicleOccupants(v); if not driver[0] then return end if not isElementWithinMarker(v,m) then return end --### local maxFuel = carFuel[0]; if getPlayerMoney(driver[0]) < 25 then outputChatBox("You can't afford any more fuel.",p); return end if carFuel[getElementModel(v)] then maxFuel = carFuel[getElementModel(v)]; end if getCarFuel(v) >= maxFuel then return end addCarFuel(v,15); takePlayerMoney(driver[0],25); if getCarFuel(v) >= maxFuel then outputChatBox("Your car has been fully refueled.",p); takeCarFuel(v,getCarFuel(v)-maxFuel); return end setTimer(vehicleRefuel,500,1,v,m); end end addEventHandler('onVehicleRefuel',getRootElement(),vehicleRefuel);
×
×
  • Create New...