Jump to content

Problema con "preview" de skin


Recommended Posts

Hola tengo un problema con un "skin shop" es que, quiero que tenga una vista previa para ver el skin y ahi recien comprarlo, pero pasa que cuando quiero volver al skin anterior, osea al que tenia antes de q tome la vista previa, no me deja, aca dejo el :

client

  
    skines = 
            { 
            {"CJ", 0}, 
            {"Sweet", 270}, 
            {"Ryder", 300}, 
            {"Ryder 2", 301}, 
            {"Big Smoke", 269}, 
            {"Big Smoke 2", 311}, 
            {"Truth", 1}, 
            {"Wuzi Mu", 294}, 
            {"Claude", 299}, 
            {"Madd Dogg", 297}, 
            {"Mike Toreno", 295}, 
            {"Cesar", 292}, 
            {"OG Loc", 293}, 
            {"T-Bone", 307}, 
            {"Joe Pesci", 258}, 
            {"Pimp", 249}, 
            {"White Dealer", 29}, 
            {"Black Dealer", 28}, 
            {"Hiker", 26}, 
            {"Casino Bouncer 1", 163}, 
            {"Casino Bouncer 2", 164}, 
            {"Drug Worker 1", 144}, 
            {"Drug Worker 2", 145}, 
            {"Drug Worker 3", 146}, 
            } 
     
    function aceptar() -- Funcion para comprar skin 
    if (source == button2) then 
     local row, col = guiGridListGetSelectedItem(grid)   
   if (row and col and row ~= -1 and col ~= -1) then 
  local model = tonumber(guiGridListGetItemData(grid, row, 1)) 
  if model ~= "" then 
    triggerServerEvent("skins", localPlayer, model) --Trigger al tocar el boton Aceptar 
    guiSetVisible(Windows,false) 
    showCursor(false) 
    end 
    end 
    end 
    end 
    addEventHandler("onClientGUIClick", button2, aceptar) 
     
    function close1() -- Funcion para cerrar el panel 
    if (source == button1) then 
    triggerServerEvent("remover", localPlayer) -- Trigger al tocar el boton Cerrar 
    guiSetVisible(Windows,false) 
    showCursor(false) 
    end 
    end 
    addEventHandler("onClientGUIClick", button1, close1) 
     
function MarkerSkines() -- Funcion al tocar el marker 
  
guiSetVisible(Windows,true) 
showCursor(true) 
  
     guiGridListClear(grid) 
    for i,sk in ipairs(skines) do 
         row = guiGridListAddRow(grid) 
         guiGridListSetItemText(grid, row, 1, tostring(sk[1]), false, false) 
         guiGridListSetItemData(grid, row, 1, tostring(sk[2])) 
    end 
  
end 
addEvent("marker_skines",true) 
addEventHandler("marker_skines", getRootElement(), MarkerSkines) 
  
  function click1 () -- Funcion para tomar el skin seleccionado 
   local item = guiGridListGetItemData( grid, guiGridListGetSelectedItem ( grid ), 1 ) 
        if item then 
           setElementModel ( localPlayer, item ) 
end 
end 
addEventHandler("onClientGUIClick", grid, click1) 
  

server

  
function ComprarSkin(id) -- Al Comprar skin --> 
  takePlayerMoney(source, 0) 
  local account = getPlayerAccount(source) 
   if ( not isGuestAccount( getPlayerAccount( source ) ) ) then 
   skin = setElementModel(source, id) 
   setAccountData(account,"Sking",id)  
   outputChatBox("Skin Guardado Exitosamente.", source, 255, 20, 20, true) 
    end 
end 
    addEvent("skins",true) 
    addEventHandler("skins", root, ComprarSkin) 
function removers() -- Al Cerrar Panel --> 
  if  not (isGuestAccount (getPlayerAccount (source))) then 
local acc = getPlayerAccount(source) 
local skinG = getAccountData (acc, "Sking")   
  outputChatBox ( "Test", source, 170, 0, 0, false ) 
    end 
end 
addEvent("remover",true) 
addEventHandler("remover", root, removers) 
  

Edited by Guest
Link to comment

Esto es un consejo para todo scripter, hay que poner comentarios en el código para hacer mas facil su comprensión. Puedes entender tu código ya que usas tus variables, pero estas muchas veces no se entienden si otra persona lee tu codigo.

Link to comment
Esto es un consejo para todo scripter, hay que poner comentarios en el código para hacer mas facil su comprensión. Puedes entender tu código ya que usas tus variables, pero estas muchas veces no se entienden si otra persona lee tu codigo.

Si perdoname. ahí actualice el post para que se entienda mas, generalmente en lua nunca eh puesto comentarios, los pondre si posteo asi me entienden xD

Link to comment

Almacena el skin que tienes mostrado en una variable y ya después de eso al darle click sumas en la variable o restas, dependiendo de la función que estás realizando (siguiente o anterior).

local pos = 0 
-- Al darle a siguiente 
pos = pos + 1 
-- Al darle a anterior 
pos = pos - 1 
-- Al no haber más skins 
if pos == 1 then 
    outputChatBox( "Ya no hay más skins para atrás", 255, 0, 0 ) 
end 

Link to comment

emm

  
function ComprarSkin(id) -- Al Comprar skin --> 
  takePlayerMoney(source, 0) 
  local account = getPlayerAccount(source) 
   if ( not isGuestAccount( getPlayerAccount( source ) ) ) then 
   skin = setElementModel(source, id) 
   setAccountData(account,"Sking",id)  
   outputChatBox("Skin Guardado Exitosamente.", source, 255, 20, 20, true) 
    end 
end 
    addEvent("skins",true) 
    addEventHandler("skins", root, ComprarSkin) 
function removers() -- Al Cerrar Panel --> 
  if  not (isGuestAccount (getPlayerAccount (source))) then 
local acc = getPlayerAccount(source) 
local skinG = getAccountData (acc, "Sking") -- Cargar skin que habia seleccionado anteriormente 
  outputChatBox ( "Test", source, 170, 0, 0, false ) 
 setElementModel(source, skinG) -- setearle el skin anterior 
    end 
end 
addEvent("remover",true) 
addEventHandler("remover", root, removers) 
  

Sking es un skin que uno elige al registrarse, o en el mismo skinshop, es como que al cambiar el skin en client , porque en realidad, si guarda el skin, pero no lo setea, si me cambio el skin con el panel de admin y me seteo el skin si guarda, pero el problema seria al setear el model en client, pero no se como repararlo :S, dejo el script completo, total es de la comunidad

  
   local marker = createMarker ( 2247.3356933594, -1664.8883056641, 14.4765625, "cylinder", 2, 0, 255, 0, 255 ) 
   local marker2 = createMarker ( 1734.7803955078, -1861.1599121094, 12.577855110168, "cylinder", 2, 0, 255, 0, 255 ) 
    blip = createBlip (2247.2526855469,-1664.8112792969,15.4765625, 45,2, 0, 0, 0,0,0,1000.0  ) 
  
     
  
function ComprarSkin(id) -- Al Comprar skin --> 
  takePlayerMoney(source, 0) 
  local account = getPlayerAccount(source) 
   if ( not isGuestAccount( getPlayerAccount( source ) ) ) then 
   skin = setElementModel(source, id) 
   setAccountData(account,"Sking",id)  
   outputChatBox("Skin Guardado Exitosamente.", source, 255, 20, 20, true) 
    end 
end 
    addEvent("skins",true) 
    addEventHandler("skins", root, ComprarSkin) 
function removers() -- Al Cerrar Panel --> 
  if  not (isGuestAccount (getPlayerAccount (source))) then 
local acc = getPlayerAccount(source) 
local skinG = getAccountData (acc, "Sking")   
  outputChatBox ( "Test", source, 170, 0, 0, false ) 
 setElementModel(source, skinG) 
    end 
end 
addEvent("remover",true) 
addEventHandler("remover", root, removers) 
     
  
      
function MarkerSkin(player) 
 if (getElementType(player) =="player" and getPlayerTeam(player) and getTeamName (getPlayerTeam(player)) == "Criminal" or getTeamName (getPlayerTeam(player)) == "Desocupados") then 
triggerClientEvent (player,"marker_skines",getRootElement(),player) 
end 
end 
addEventHandler("onMarkerHit",marker,MarkerSkin) 
addEventHandler("onMarkerHit",marker2,MarkerSkin) 
  

  
Windows = guiCreateWindow ( 0.2, 0.2, 0.25, 0.5, "Skin Shop", true ) 
   grid = guiCreateGridList(0.01, 0.2, 0.99, 0.5, true, Windows) 
       guiGridListAddColumn(grid, "Skins", 0.85) 
guiSetAlpha( Windows, 1 ) 
button1 = guiCreateButton ( 0.5, 0.8, 0.45, 0.15, "Salir", true, Windows) 
button2 = guiCreateButton ( 0.02, 0.8, 0.45, 0.15, "Aceptar", true, Windows) 
label1 = guiCreateLabel ( 0.1, 0.1, 0.9, 0.1, "Skin PARA TODOS DE LA KRISTI", true, Windows ) 
showCursor(false) 
guiSetVisible( Windows, false ) 
guiWindowSetSizable( Windows, false ) 
guiWindowSetMovable( Windows, false ) 
    skines = 
            { 
            {"CJ", 0}, 
            {"Sweet", 270}, 
            {"Ryder", 300}, 
            {"Ryder 2", 301}, 
            {"Big Smoke", 269}, 
            {"Big Smoke 2", 311}, 
            {"Truth", 1}, 
            {"Wuzi Mu", 294}, 
            {"Claude", 299}, 
            {"Madd Dogg", 297}, 
            {"Mike Toreno", 295}, 
            {"Cesar", 292}, 
            {"OG Loc", 293}, 
            {"T-Bone", 307}, 
            {"Joe Pesci", 258}, 
            {"Pimp", 249}, 
            {"White Dealer", 29}, 
            {"Black Dealer", 28}, 
            {"Hiker", 26}, 
            {"Casino Bouncer 1", 163}, 
            {"Casino Bouncer 2", 164}, 
            {"Drug Worker 1", 144}, 
            {"Drug Worker 2", 145}, 
            {"Drug Worker 3", 146}, 
            } 
     
    function aceptar() -- Funcion para comprar skin 
    if (source == button2) then 
     local row, col = guiGridListGetSelectedItem(grid)   
   if (row and col and row ~= -1 and col ~= -1) then 
  local model = tonumber(guiGridListGetItemData(grid, row, 1)) 
  if model ~= "" then 
    triggerServerEvent("skins", localPlayer, model) --Trigger al tocar el boton Aceptar 
    guiSetVisible(Windows,false) 
    showCursor(false) 
    end 
    end 
    end 
    end 
    addEventHandler("onClientGUIClick", button2, aceptar) 
     
    function close1() -- Funcion para cerrar el panel 
    if (source == button1) then 
    triggerServerEvent("remover", localPlayer) -- Trigger al tocar el boton Cerrar 
    guiSetVisible(Windows,false) 
    showCursor(false) 
    end 
    end 
    addEventHandler("onClientGUIClick", button1, close1) 
     
function MarkerSkines() -- Funcion al tocar el marker 
  
guiSetVisible(Windows,true) 
showCursor(true) 
  
     guiGridListClear(grid) 
    for i,sk in ipairs(skines) do 
         row = guiGridListAddRow(grid) 
         guiGridListSetItemText(grid, row, 1, tostring(sk[1]), false, false) 
         guiGridListSetItemData(grid, row, 1, tostring(sk[2])) 
    end 
  
end 
addEvent("marker_skines",true) 
addEventHandler("marker_skines", getRootElement(), MarkerSkines) 
  
  function click1 () -- Funcion para tomar el skin seleccionado 
   local item = guiGridListGetItemData( grid, guiGridListGetSelectedItem ( grid ), 1 ) 
        if item then 
           setElementModel ( localPlayer, item ) 
end 
end 
addEventHandler("onClientGUIClick", grid, click1) 
  

Link to comment

Mira, despues de leer un poco tu codigo, el error mas evidente que pude encontrar fue que estas seteando un string a una funcion que te pide un integer.

local skinG = getAccountData (acc, "Sking") -- sking es una variable de tipo string 
setElementModel(source, skinG) -- aqui te pide en segundo argumento una variable de tipo integer 

La solucion.

--Siemplemente transformar el string a numero 
setElementModel(source, tonumber(skinG)) 

PD: Si tienes mas errores intenta dejar en tu post lo que arroja el debug, este es un error que te lo detecta el debug.

Link to comment
Mira, despues de leer un poco tu codigo, el error mas evidente que pude encontrar fue que estas seteando un string a una funcion que te pide un integer.
local skinG = getAccountData (acc, "Sking") -- sking es una variable de tipo string 
setElementModel(source, skinG) -- aqui te pide en segundo argumento una variable de tipo integer 

La solucion.

--Siemplemente transformar el string a numero 
setElementModel(source, tonumber(skinG)) 

PD: Si tienes mas errores intenta dejar en tu post lo que arroja el debug, este es un error que te lo detecta el debug.

Aún asi no funciona, y no arroja ningun debug

Link to comment

No tengo ni p**a idea de lo que viene siendo la función remover, pero prueba a ver si te funciona la de poner:

function comprar_skin( id ) 
    local id = tonumber( id ) 
    if id then 
        local account = getPlayerAccount( source ) 
        if account then 
            if isGuestAccount( account ) then 
                return 
            else 
                setElementModel( source, id ) 
                setAccountData( account, "Sking", id ) 
                outputChatBox( "Skin actualizado y guardado.", source, 255, 20, 20, true ) 
            end 
        end 
    end 
end 
addEvent( "skins", true ) 
addEventHandler( "skins", getRootElement( ), comprar_skin ) 
  
function remover_skins( ) 
    local account = getPlayerAccount( source ) 
    if isGuestAccount( account ) then 
        return 
    else 
        local skinG = getAccountData( account, "Sking" ) 
    end 
end 
addEvent( "remover", true ) 
addEventHandler( "remover", getRootElement( ), remover_skins ) 
  

PD: Te recomiendo tabular un poco tu código porque se ve bastante feo teniendo todo junto o con 1 o 2 espacios. Se trata solo de tenerlo un poco más ordenado :)

Link to comment

Lo que quiero es que me vuelva al skin que esta en la database, osea, cuando elijo, y cancelo, me queda el skin elegido, pero yo no puse aceptar, nose si me entiende, de ultima lo hago con un ped si no me entendieron

Ejemplo:

Yo tomo el skin ID 250, y pongo aceptar -> me lo pone BIEN

Yo tomo el skin ID 250, y pongo Salir -> me queda el skin tomado, pero yo no quise cambiarlo

PD: Solucionado gracias a los que me ayudaron

Link to comment
  • Recently Browsing   0 members

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