Flipi Posted September 25, 2013 Share Posted September 25, 2013 Hola, tengo una duda, quisiera saber como hacer para que la cantidad de Drift que haga un jugador sea tambien el dinero que gane por los drift, ejemplo: pablo hizo "528" de Drift, entonces gana "528" de dinero... client: 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 ) 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 server: 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) Me dijeron que se podría usar esto: (pero nose donde agregarlo) function opcion1() local cantidad = getElementData(localPlayer, "score") givePlayerMoney( tonumber(cantidad)) end -- o tambien function opcion2() local cantidad = getElementData(localPlayer, "Mejor Drift") givePlayerMoney( tonumber(cantidad)) end Link to comment
Alexs Posted September 25, 2013 Share Posted September 25, 2013 Ya habías hecho un post de esto, ¿no? Link to comment
Flipi Posted September 25, 2013 Author Share Posted September 25, 2013 Ya habías hecho un post de esto, ¿no? si, pero estaba algo malo en el script, aparte creo que no se entendio. Link to comment
Alexs Posted September 25, 2013 Share Posted September 25, 2013 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. Link to comment
Flipi Posted September 25, 2013 Author Share Posted September 25, 2013 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. Lo puse y no pasa nada, no envia ningun error, solo funciona el drift pero no da dinero. Link to comment
Alexs Posted September 25, 2013 Share Posted September 25, 2013 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. Link to comment
Flipi Posted September 25, 2013 Author Share Posted September 25, 2013 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. nop, no aparece el mensaje ;/ Link to comment
Recommended Posts