Jump to content

[RESOLU]Comment ajouté une image de fond sur le F1Freeroam ?


Recommended Posts

Bonjour,

Je recherche actuellement comment je fait pour mettre une image de fond sur la GUI du freeroam quand on appuie sur F1.

J'ai tenté d'essaiyé mais je n'arrive pas car quand demarre le freeroam le F1 Ne fonctionne pas..

Voilà le code:

J'ai ajouté ça a la ligne 1524.

    {'img', src='fnf.jpg'} 

fr_client.lua:

CONTROL_MARGIN_RIGHT = 5 
LINE_MARGIN = 5
LINE_HEIGHT = 16
 
g_Root = getRootElement()
g_ResRoot = getResourceRootElement(getThisResource())
g_Me = getLocalPlayer()
server = createServerCallInterface()
guiSetInputMode("no_binds_when_editing")
 
---------------------------
-- Set skin window
---------------------------
function skinInit()
    setControlNumber(wndSkin, 'skinid', getElementModel(g_Me))
end
 
function showSkinID(leaf)
    if leaf.id then
        setControlNumber(wndSkin, 'skinid', leaf.id)
    end
end
 
function applySkin()
    local skinID = getControlNumber(wndSkin, 'skinid')
    if skinID then
        server.setMySkin(skinID)
        fadeCamera(true)
    end
end
 
wndSkin = {
    'wnd',
    text = 'Set skin',
    width = 250,
    x = -20,
    y = 0.3,
    controls = {
        {
            'lst',
            id='skinlist',
            width=230,
            height=290,
            columns={
                {text='Skin', attr='name'}
            },
            rows={xml='skins.xml', attrs={'id', 'name'}},
            onitemclick=showSkinID,
            onitemdoubleclick=applySkin
        },
        {'txt', id='skinid', text='', width=50},
        {'btn', id='set', onclick=applySkin},
        {'btn', id='close', closeswindow=true}
    },
    oncreate = skinInit
}
 
function setSkinCommand(cmd, skin)
    skin = skin and tonumber(skin)
    if skin then
        server.setMySkin(skin)
        fadeCamera(true)
        closeWindow(wndSpawnMap)
        closeWindow(wndSetPos)
    end
end
addCommandHandler('setskin', setSkinCommand)
addCommandHandler('ss', setSkinCommand)
 
---------------------------
--- Set animation window
---------------------------
 
function applyAnimation(leaf)
    if type(leaf) ~= 'table' then
        leaf = getSelectedGridListLeaf(wndAnim, 'animlist')
        if not leaf then
            return
        end
    end
    server.setPedAnimation(g_Me, leaf.parent.name, leaf.name, true, true)
end
 
function stopAnimation()
    server.setPedAnimation(g_Me, false)
end
addCommandHandler("stopanim", stopAnimation)
bindKey("lshift", "down", "stopanim")
 
wndAnim = {
    'wnd',
    text = 'Set animation',
    width = 250,
    x = -20,
    y = 0.3,
    controls = {
        {
            'lst',
            id='animlist',
            width=230,
            height=290,
            columns={
                {text='Animation', attr='name'}
            },
            rows={xml='animations.xml', attrs={'name'}},
            expandlastlevel=false,
            onitemdoubleclick=applyAnimation
        },
        {'btn', id='set', onclick=applyAnimation},
        {'btn', id='stop', onclick=stopAnimation},
        {'btn', id='close', closeswindow=true}
    }
}
 
addCommandHandler('anim',
    function(command, lib, name)
        server.setPedAnimation(g_Me, lib, name, true, true)
    end
)
 
---------------------------
-- Weapon window
---------------------------
 
function addWeapon(leaf, amount)
    if type(leaf) ~= 'table' then
        leaf = getSelectedGridListLeaf(wndWeapon, 'weaplist')
        amount = getControlNumber(wndWeapon, 'amount')
        if not amount or not leaf then
            return
        end
    end
    server.giveMeWeapon(leaf.id, amount)
end
 
wndWeapon = {
    'wnd',
    text = 'Give weapon',
    width = 250,
    controls = {
        {
            'lst',
            id='weaplist',
            width=230,
            height=280,
            columns={
                {text='Weapon', attr='name'}
            },
            rows={xml='weapons.xml', attrs={'id', 'name'}},
            onitemdoubleclick=function(leaf) addWeapon(leaf, 500) end
        },
        {'br'},
        {'txt', id='amount', text='500', width=60},
        {'btn', id='add', onclick=addWeapon},
        {'btn', id='close', closeswindow=true}
    }
}
 
function giveWeaponCommand(cmd, weapon, amount)
    weapon = tonumber(weapon) or getWeaponIDFromName(weapon)
    if not weapon then
        return
    end
    amount = amount and tonumber(amount) or 500
    server.giveMeWeapon(math.floor(weapon), amount)
end
addCommandHandler('give', giveWeaponCommand)
addCommandHandler('wp', giveWeaponCommand)
 
---------------------------
-- Fighting style
---------------------------
 
addCommandHandler('setstyle',
    function(cmd, style)
        style = style and tonumber(style)
        if style then
            server.setPedFightingStyle(g_Me, style)
        end
    end
)
 
---------------------------
-- Clothes window
---------------------------
function clothesInit()
    if getElementModel(g_Me) ~= 0 then
        errMsg('You must have the CJ skin set in order to apply clothes.')
        closeWindow(wndClothes)
        return
    end
    if not g_Clothes then
        triggerServerEvent('onClothesInit', g_Me)
    end
end
 
addEvent('onClientClothesInit', true)
addEventHandler('onClientClothesInit', g_Root,
    function(clothes)
        g_Clothes = clothes.allClothes
        for i,typeGroup in ipairs(g_Clothes) do
            for j,cloth in ipairs(typeGroup.children) do
                if not cloth.name then
                    cloth.name = cloth.model .. ' - ' .. cloth.texture
                end
                cloth.wearing =
                    clothes.playerClothes[typeGroup.type] and
                    clothes.playerClothes[typeGroup.type].texture == cloth.texture and
                    clothes.playerClothes[typeGroup.type].model == cloth.model
                    or false
            end
            table.sort(typeGroup.children, function(a, b) return a.name < b.name end)
        end
        bindGridListToTable(wndClothes, 'clothes', g_Clothes, false)
    end
)
 
function clothListClick(cloth)
    setControlText(wndClothes, 'addremove', cloth.wearing and 'remove' or 'add')
end
 
function applyClothes(cloth)
    if not cloth then
        cloth = getSelectedGridListLeaf(wndClothes, 'clothes')
        if not cloth then
            return
        end
    end
    if cloth.wearing then
        cloth.wearing = false
        setControlText(wndClothes, 'addremove', 'add')
        server.removePlayerClothes(g_Me, cloth.parent.type)
    else
        local prevClothIndex = table.find(cloth.siblings, 'wearing', true)
        if prevClothIndex then
            cloth.siblings[prevClothIndex].wearing = false
        end
        cloth.wearing = true
        setControlText(wndClothes, 'addremove', 'remove')
        server.addPedClothes(g_Me, cloth.texture, cloth.model, cloth.parent.type)
    end
end
 
wndClothes = {
    'wnd',
    text = 'Clothes',
    x = -20,
    y = 0.3,
    width = 350,
    controls = {
        {
           
Edited by Guest
Link to comment

Bonjour,

Apparemment, tu essais une chose.. Tu vois que ça fonctionne pas et tu poste sur le forum pour que quelqu'un aide. J'ai pas vraiment envie d'aider quelqu'un qui essais une seule fois et pas manque de volonté et par flemme préfère poster un message sur le forum pour obtenir la réponse.

Tu dis vouloir modifier le gui et y mettre un fond d'écran donc tu ouvre le premier fichier que tu voit côté client en espérant (Parce que bon .. Ça sert a rien de vérifier après tout les autres fichiers) que c'est le bon.

Après avoir ouvert le fichier, sélectionné aux pifs, tu regarde rapidement le code pour t'y inspirer afin de faire ce que tu souhaite.

Une fois avoir regarder le code, tu t'y inspire et tu nous ajoute le code suivant ligne 1524 :

    {'img', src='fnf.jpg'} 

Et tu espère évidemment que le code fonctionnera du premier essais. Après tout ça sert à quoi de persévérer et de réfléchir ou bien même de faire des recherches sur le wiki ?

Par contre, je suis d'accord pour dire que le code du GUI est relativement complexe.. Et demande à avoir de bonne connaissance en LUA pour pouvoir le comprendre.

J'espère que tu comprendra sincèrement,

Rémi

Link to comment
  • Moderators
j'ai même fait planté le freeroam a plusieurs reprise.

Quand tu rajoutes une ligne dans un tableau, il faut mettre la virgule à la fin si ce n'est pas la dernière ligne.

Bon sinon, je viens de lire le code qui gère les fenêtres dans freeroam et perso je trouve ça énorme ! En gros il conçoit sa fenêtre dans un tableau en respectant des conventions et une fois fait, y a plus qu'à envoyer le petit tableau à la fonction createWindow qui suit les même conventions afin de créer la fenêtre avec ses boutons etc en appelant les bonnes fonctions (guiCreateWindow, guiCreateCheckBox, guiCreateStaticImage etc).

Bref c'est du bon code et c'est puissant ! :D

En gros tu n'as pas indiqué la taille que l'image devait faire:

{'img', src='fnf.jpg', width=280, height=300}, 

Modifie les valeurs comme bon te semblera.

Vérifie aussi que t'as placé fnf.jpg dans le dossier freeroam au même endroit que map.png etc.

Normalement ça devrait marcher. Si c'est pas le cas, soit bien sûr que tu modifies le bon fichier et que t'as bien pensé à restart freeroam

Link to comment
  • Moderators

Tu aurais pu nous donner un screenshot pour voir le problème mais je pense qu'il suffit de mettre img blabla en premier à la ligne 1515 au lieu de 1524

Ou alors préciser explicitement la position de l'image en faisant comme ceci:

{'img', src='fnf.jpg', x=0, y=0, width=280, height=300}, 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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