Jump to content

Tabla con upgrades para vehículos


aka Blue

Recommended Posts

Bueno, pues decidí hacer el sistema de tuneos por tablas y pues realmente estoy algo perdido porque nunca trabajé con tablas antes aunque sé algo... Lo que quiero hacer es que si es el vehículo de la tabla, añada al "pane" la upgrade y al darle click se la ponga y le quite el dinero que está en la tabla asignado. No sé si es posible, supongo que sí (?

Dejo mi código.

local delanteros = 
{ 
--Nombre, id, precio, vehiculo 
{"Slamin", 1188, 200, "Savanna"}, 
{"Chrome", 1189, 200, "Savanna"}, 
  
{"Slamin", 1190, 200, "Tornado"}, 
{"Chrome", 1191, 200, "Tornado"}, 
  
{"Slamin", 1185, 200, "Remington"}, 
{"Chrome", 1179, 200, "Remington"}, 
  
{"Slamin", 1181, 200, "Blade"}, 
{"Chrome", 1182, 200, "Blade"}, 
  
{"Chrome", 1176, 200, "Broadway"}, 
{"Chrome", 1174, 200, "Broadway"}, 
  
{"Alien", 1169, 200, "Sultan"}, 
{"X-Flow", 1170, 200, "Sultan"}, 
  
{"Alien", 1171, 200, "Elegy"}, 
{"X-Flow", 1172, 200, "Elegy"}, 
  
{"Alien", 1160, 200, "Jester"}, 
{"X-Flow", 1173, 200, "Jester"}, 
  
{"Alien", 1166, 200, "Uranus"}, 
{"X-Flow", 1165, 200, "Uranus"}, 
  
{"Alien", 1155, 200, "Stratum"}, 
{"X-Flow", 1157, 200, "Stratum"}, 
  
{"Alien", 1153, 200, "Flash"}, 
{"X-Flow", 1152, 200, "Flash"}, 
  
} 
  
veh = getPedOccupiedVehicle(source) 
nombre = getVehicleName(veh) 
  
windows.pdelanteros = 
{ 
    { 
        type = "label", 
        text = nombre, 
        font = "bankghotic", 
        alignX = "center", 
    } 
    { 
        type = "panes", 
        panes = {} 
    } 
} 

PD: Lo sé, quizás sea un desastre pero es mi primera vez trabajando así con tablas xD.

Edited by Guest
Link to comment

Pues como ves, en las tablas sale el nombre del upgrade, su ID, el precio y el vehiculo para el cual es compatible. Lo que quiero hacer es que si el vehículo es compatible con x upgrades, aparezcan en unos panes y que al darle click, le quite el dinero del precio (si lo tiene, sino, error) y le ponga pues... el upgrade :)

290 mensajes :P

Link to comment

El panel lo quiero hacer por tablas también

veh = getPedOccupiedVehicle(source) 
nombre = getVehicleName(veh) 
  
windows.pdelanteros = 
{ 
    { 
        type = "label", 
        text = nombre, 
        font = "bankghotic", 
        alignX = "center", 
    } 
    { 
        type = "panes", 
        panes = {} 
    } 
} 
  

Viva Mabako.

Link to comment

Siento doble post.

Los panes serían algo como ésto. Es el GUI de los shops de MTA Paradise.

--[[ 
Copyright (c) 2010 MTA: Paradise 
  
This program is free software; you can redistribute it and/or modify 
it under the terms of the GNU General Public License as published by 
the Free Software Foundation; either version 3 of the License, or 
(at your option) any later version. 
  
This program is distributed in the hope that it will be useful, 
but WITHOUT ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
GNU General Public License for more details. 
  
You should have received a copy of the GNU General Public License 
along with this program. If not, see . 
]] 
  
local closeButton = 
{ 
    type = "button", 
    text = "Cerrar", 
    onClick = function( key ) 
            if key == 1 then 
                hide( ) 
                 
                windows.shop = { closeButton } 
            end 
        end, 
} 
  
windows.shop = { closeButton } 
  
function updateShopContent( content, name ) 
    -- scrap what we had before 
    windows.shop = { 
        onClose = function( ) 
                triggerServerEvent( "shops:close", getLocalPlayer( ) ) 
                windows.shop = { closeButton } 
            end, 
        { 
            type = "label", 
            text = name, 
            font = "bankgothic", 
            alignX = "center", 
        }, 
        { 
            type = "pane", 
            panes = { } 
        } 
    } 
     
    -- let's add all items 
    for k, value in ipairs( content ) do 
        local description = value.description or exports.items:getDescription( value.itemID ) 
        table.insert( windows.shop[2].panes, 
            { 
                image = exports.items:getImage( value.itemID, value.itemValue, value.name ) or ":players/images/skins/-1.png", 
                title = value.name or exports.items:getName( value.itemID ), 
                text = "Cuesta $" .. value.price .. ( description and description ~= "" and ( " - " .. description ) or "" ), 
                onHover = function( cursor, pos ) 
                        dxDrawRectangle( pos[1], pos[2], pos[3] - pos[1], pos[4] - pos[2], tocolor( unpack( { 0, 255, 0, 31 } ) ) ) 
                    end, 
                onClick = function( key ) 
                        if key == 1 then 
                            triggerServerEvent( "shops:buy", getLocalPlayer( ), k ) 
                        end 
                    end, 
                wordBreak = true, 
            } 
        ) 
    end 
     
    -- add a close button as well 
    table.insert( windows.shop, closeButton ) 
end 
  

Link to comment

para obtener el nombre id precio y el vehículo deberás usar un loop

for index, node in pairs ( delanteros ) do   
        local nombre =  node[1] 
        local id =  node[2] 
        local precio = node[3] 
        local vehiculo = node[4] 
    end 

Link to comment
para obtener el nombre id precio y el vehículo deberás usar un loop
for index, node in pairs ( delanteros ) do   
        local nombre =  node[1] 
        local id =  node[2] 
        local precio = node[3] 
        local vehiculo = node[4] 
    end 

Mmm de pudieras pasar la página completa de donde sacastes el loop, lo andaba buscando pero quiero leer para entender mas, Te lo agradecería, venadHD hizo un loop en un post mio pero a veces no entiendo solo viendo, tengo que leer su concepto, gracias :).

Link to comment

Abro nuevamente el tema porque tengo un pequeño problemilla. Resulta que ya me aparecen los upgrades, todo perfecto (gracias, Alex :wink:), pero no se actualizan. Me explico. Como veis, en la tabla aparecen diferentes mejoras, su nombre, su precio blabla, pues lo que pasa es que por ejemplo me subo a un savanna y no me aparece nada, le doy a /restart y me aparecen sus mejoras. Acto seguido, me subo a un sultán y me aparecen las mejoras del savanna, hago /restart y ya me aparecen las de Sultán y así.

local delanteros = 
{ 
--Nombre, id, precio, vehiculo 
{"Slamin", 1188, 200, "Savanna"}, 
{"Chrome", 1189, 200, "Savanna"}, 
  
{"Slamin", 1190, 200, "Tornado"}, 
{"Chrome", 1191, 200, "Tornado"}, 
  
{"Slamin", 1185, 200, "Remington"}, 
{"Chrome", 1179, 200, "Remington"}, 
  
{"Slamin", 1181, 200, "Blade"}, 
{"Chrome", 1182, 200, "Blade"}, 
  
{"Chrome", 1176, 200, "Broadway"}, 
{"Chrome", 1174, 200, "Broadway"}, 
  
{"Alien", 1169, 200, "Sultan"}, 
{"X-Flow", 1170, 200, "Sultan"}, 
  
{"Alien", 1171, 200, "Elegy"}, 
{"X-Flow", 1172, 200, "Elegy"}, 
  
{"Alien", 1160, 200, "Jester"}, 
{"X-Flow", 1173, 200, "Jester"}, 
  
{"Alien", 1166, 200, "Uranus"}, 
{"X-Flow", 1165, 200, "Uranus"}, 
  
{"Alien", 1155, 200, "Stratum"}, 
{"X-Flow", 1157, 200, "Stratum"}, 
  
{"Alien", 1153, 200, "Flash"}, 
{"X-Flow", 1152, 200, "Flash"}, 
  
} 
  
windows.meca1 = 
{ 
    { 
        type = "label", 
        text = "Paragolpes", 
        font = "bankgothic", 
        alignX = "center", 
    }, 
    { 
        type = "pane", 
        panes = {} 
    } 
} 
  
for index, node in ipairs ( delanteros ) do   
local veh = getPedOccupiedVehicle(getLocalPlayer()) 
    if getVehicleName(veh) == node[4] then 
        table.insert( windows.meca1[2].panes, 
            { 
                image = ":players/images/skins/-1.png", 
                title = "Parachoques "..node[1], 
                text = "Cuesta "..node[3].."\nUn bonito parachoques para tu coche a un precio económico.", 
                onHover = function( cursor, pos ) 
                dxDrawRectangle( pos[1], pos[2], pos[3] - pos[1], pos[4] - pos[2], tocolor( unpack( { 0, 255, 120, 31 } ) ) ) 
                    end, 
                onClick = function( key ) 
                        if key == 1 then 
                                               --AQUI LA MEJORA A AÑADIR 
                        end 
                    end, 
                wordBreak = true, 
            } 
        ) 
  
        end 
    end 
  

Link to comment

Ahora sí. El problema es que se van acumulando cuando te subes a un coche. Osea, yo me subo a un Savanna y me pone Slammin y Chrome, luego, cuando me subo a un Sultan, me sale, Slammin y Chrome + Alien y X-Flow. Dependiendo de las veces que te subas me va agregando más y más...

PD: Ahora subo una SS para que se vea.

i5q1u2b.png

local delanteros = 
{ 
--Nombre, id, precio, vehiculo 
{"Slamin", 1188, 200, "Savanna"}, 
{"Chrome", 1189, 200, "Savanna"}, 
  
{"Slamin", 1190, 200, "Tornado"}, 
{"Chrome", 1191, 200, "Tornado"}, 
  
{"Slamin", 1185, 200, "Remington"}, 
{"Chrome", 1179, 200, "Remington"}, 
  
{"Slamin", 1181, 200, "Blade"}, 
{"Chrome", 1182, 200, "Blade"}, 
  
{"Chrome", 1176, 200, "Broadway"}, 
{"Chrome", 1174, 200, "Broadway"}, 
  
{"Alien", 1169, 200, "Sultan"}, 
{"X-Flow", 1170, 200, "Sultan"}, 
  
{"Alien", 1171, 200, "Elegy"}, 
{"X-Flow", 1172, 200, "Elegy"}, 
  
{"Alien", 1160, 200, "Jester"}, 
{"X-Flow", 1173, 200, "Jester"}, 
  
{"Alien", 1166, 200, "Uranus"}, 
{"X-Flow", 1165, 200, "Uranus"}, 
  
{"Alien", 1155, 200, "Stratum"}, 
{"X-Flow", 1157, 200, "Stratum"}, 
  
{"Alien", 1153, 200, "Flash"}, 
{"X-Flow", 1152, 200, "Flash"}, 
  
} 
  
windows.meca1 = 
{ 
    { 
        type = "label", 
        text = "Paragolpes", 
        font = "bankgothic", 
        alignX = "center", 
    }, 
    { 
        type = "pane", 
        panes = {} 
    }, 
    { 
        type = "button", 
        text = "Cerrar", 
        alignX = "center", 
        onClick = function() hide() showCursor(false) destroyElement() end, 
    } 
} 
  
addEventHandler("onClientVehicleEnter", getRootElement(), 
function() 
for index, node in ipairs ( delanteros ) do   
    if getVehicleName(source) == node[4] then 
        table.insert( windows.meca1[2].panes, 
            { 
                image = ":players/images/skins/-1.png", 
                title = "Parachoques "..node[1], 
                text = "Cuesta "..node[3].."\nUn bonito parachoques para tu coche a un precio económico.", 
                onHover = function( cursor, pos ) 
                dxDrawRectangle( pos[1], pos[2], pos[3] - pos[1], pos[4] - pos[2], tocolor( unpack( { 0, 255, 120, 31 } ) ) ) 
                    end, 
                onClick = function( key ) 
                        if key == 1 then 
                            hide() 
                            showCursor(false) 
                        end 
                    end, 
                wordBreak = true, 
            } 
        ) 
  
        end 
    end 
end 
) 

Link to comment

Reemplaza esa función por esto:

addEventHandler("onClientVehicleEnter", getRootElement(), 
    function() 
    windows.meca1[2].panes = {} 
    for index, node in ipairs ( delanteros ) do 
        if getVehicleName(source) == node[4] then 
            table.insert( windows.meca1[2].panes, 
                { 
                    image = ":players/images/skins/-1.png", 
                    title = "Parachoques "..node[1], 
                    text = "Cuesta "..node[3].."\nUn bonito parachoques para tu coche a un precio económico.", 
                    onHover = function( cursor, pos ) 
                    dxDrawRectangle( pos[1], pos[2], pos[3] - pos[1], pos[4] - pos[2], tocolor( unpack( { 0, 255, 120, 31 } ) ) ) 
                        end, 
                    onClick = function( key ) 
                            if key == 1 then 
                                hide() 
                                showCursor(false) 
                            end 
                        end, 
                    wordBreak = true, 
                } 
            ) 
      
            end 
        end 
    end 
) 

Edited by Guest
Link to comment
  • Recently Browsing   0 members

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