Jump to content

Ayuda script!


Flipi

Recommended Posts

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

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
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
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
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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...