Jump to content

[AIDE| GridList


Recommended Posts

Bonjour, j'ai "fais" un script et j'aimerais que quand le joueur selectionne AK47, deagle etc... Il a le fusil. Mais j'ai pas trouver de Event comme quand le joueur selectionne un truc dans la liste et aprés appuit sur OK. Merci d'avance.

Le script:

function build_Dialog() 
     
    local gui = {} 
    gui._placeHolders = {} 
    local screenWidth, screenHeight = guiGetScreenSize() 
    local windowWidth, windowHeight = 400, 315 
    local left = screenWidth/2 - windowWidth/2 
    local top = screenHeight/2 - windowHeight/2 
    myWindows = guiCreateWindow(left, top, windowWidth, windowHeight, "CHOOSE", false) 
    guiWindowSetSizable(myWindows, false) 
    showCursor ( true ) 
    gui[""] = guiCreateButton(111, 257, 77, 28, "OK", false, myWindows) 
    if on__clicked then 
        addEventHandler("onClientGUIClick", gui[""], on__clicked, false) 
    end 
     
    gui[""] = guiCreateButton(194, 257, 77, 28, "Cancel", false, myWindows) 
    if on__clicked then 
        addEventHandler("onClientGUIClick", gui[""], on__clicked, false) 
    end 
     
    gui["listWidget"] = guiCreateGridList(0, 45, 161, 191, false, myWindows) 
    guiGridListSetSortingEnabled(gui["listWidget"], false) 
    gui["listWidget_col"] = guiGridListAddColumn(gui["listWidget"], "WEAPONS", 0.85) 
    local listWidget_row = nil 
     
    listWidget_row = guiGridListAddRow(gui["listWidget"]) 
    guiGridListSetItemText(gui["listWidget"], listWidget_row, gui["listWidget_col"], "ak-47", false, false ) 
     
    listWidget_row = guiGridListAddRow(gui["listWidget"]) 
    guiGridListSetItemText(gui["listWidget"], listWidget_row, gui["listWidget_col"], "deagle", false, false ) 
     
    listWidget_row = guiGridListAddRow(gui["listWidget"]) 
    guiGridListSetItemText(gui["listWidget"], listWidget_row, gui["listWidget_col"], "chainsaw", false, false ) 
     
    gui["listWidget_2"] = guiCreateGridList(230, 45, 161, 191, false, myWindows) 
    guiGridListSetSortingEnabled(gui["listWidget_2"], false) 
    gui["listWidget_2_col"] = guiGridListAddColumn(gui["listWidget_2"], "GADGETS", 0.85) 
    local listWidget_2_row = nil 
     
    listWidget_2_row = guiGridListAddRow(gui["listWidget_2"]) 
    guiGridListSetItemText(gui["listWidget_2"], listWidget_2_row, gui["listWidget_2_col"], "armor", false, false ) 
     
    return gui, windowWidth, windowHeight 
end 
  
function on__clicked(button, state, absoluteX, absoluteY) 
    if (button ~= "left") or (state ~= "up") then 
        return 
    end 
showCursor ( false )     
destroyElement(myWindows)    
end 
  
function on__clicked(button, state, absoluteX, absoluteY) 
    if (button ~= "left") or (state ~= "up") then 
        return 
    end 
showCursor ( false )     
destroyElement(myWindows) 
end 
addCommandHandler("gui", build_Dialog) 

Link to comment
  • Moderators
j'ai pas trouver de Event comme quand le joueur selectionne un truc dans la liste et aprés appuit sur OK. Merci d'avance.

Si tu ne l'as pas trouvé, comment ce fait il qu'il soit dans ton script ??? (onClientGUIClick)

Voilà ton code revu et corrigé. Reste à savoir s'il fonctionne, je n'ai pas testé:

local gui = {} 
local screenWidth, screenHeight = guiGetScreenSize() 
  
-- a completer pour rajouter des armes dans le tableau 
local weapons = { 
    "ak-47", 
    "deagle", 
    "chainsaw" 
} 
  
-- a completer pour rajouter des gadgets dans le tableau 
local gadgets = { 
    "armor" 
} 
  
local function onOkClicked(button, state, absoluteX, absoluteY) 
    if button ~= "left" and state ~= "up" then return end 
  
    local rowWeaponSelected = guiGridListGetSelectedItem(gui["listWidget"]) 
    local rowGadgetSelected = guiGridListGetSelectedItem(gui["listWidget_2"]) 
  
    if rowWeaponSelected and rowGadgetSelected then 
        local weaponSelected = guiGridListGetItemText(gui["listWidget"], rowWeaponSelected, 1) 
        local gadgetSelected = guiGridListGetItemText(gui["listWidget_2"], rowGadgetSelected, 1) 
  
        --debug: 
        outputChatBox("You selected "..weaponSelected.." and "..gadgetSelected) 
    else 
        -- Il n'a pas choisit dans les deux tableaux 
    end 
  
    toggleWeaponWindow() 
end 
  
local function onCancelClicked(button, state, absoluteX, absoluteY) 
    if button ~= "left" and state ~= "up" then return end 
  
    toggleWeaponWindow() 
end 
  
function createShopWindow() 
    local windowWidth, windowHeight = 400, 315 
    local left = screenWidth/2 - windowWidth/2 
    local top = screenHeight/2 - windowHeight/2 
    gui["window"] = guiCreateWindow(left, top, windowWidth, windowHeight, "CHOOSE", false) 
    guiWindowSetSizable(gui["window"], false) 
  
    gui["btn_ok"] = guiCreateButton(111, 257, 77, 28, "OK", false, gui["window"]) 
    addEventHandler("onClientGUIClick", gui["btn_ok"], onOkClicked, false) 
  
    gui["btn_cancel"] = guiCreateButton(194, 257, 77, 28, "Cancel", false, gui["window"]) 
    addEventHandler("onClientGUIClick", gui["btn_cancel"], onCancelClicked, false) 
  
    gui["listWidget"] = guiCreateGridList(0, 45, 161, 191, false, gui["window"]) 
    guiGridListSetSortingEnabled(gui["listWidget"], false) 
    guiGridListAddColumn(gui["listWidget"], "WEAPONS", 0.85) 
  
    for k, weaponName in ipairs(weapons) do 
        local row = guiGridListAddRow(gui["listWidget"]) 
        guiGridListSetItemText(gui["listWidget"], row, gui["listWidget_col"], weaponName, false, false ) 
    end 
  
     
    gui["listWidget_2"] = guiCreateGridList(230, 45, 161, 191, false, gui["window"]) 
    guiGridListSetSortingEnabled(gui["listWidget_2"], false) 
    guiGridListAddColumn(gui["listWidget_2"], "GADGETS", 0.85) 
  
    for k, gadgetName in ipairs (gadgets) do 
        local row = guiGridListAddRow(gui["listWidget_2"]) 
        guiGridListSetItemText(gui["listWidget_2"], row, gui["listWidget_2_col"], gadgetName, false, false ) 
    end 
  
    guiSetVisible(gui["window"], false) 
end 
addEventHandler("onClientResourceStart", resourceRoot, createShopWindow) 
  
function toggleShopWindow() 
    local visibility = guiGetVisible(gui["window"]) 
    guiSetVisible(gui["window"], not visibility) 
    showCursor(not visibility) 
end 
addCommandHandler("gui", toggleShopWindow) 

A noter que la fenêtre est crée au moment ou le joueur à rejoins le serveur et qu'on le cache directement. Un /gui permet de le rendre visible s'il ne l'ai pas et inversement.

On ne s'amuse donc pas à recréer l'intégralité du GUI à chaque fois.

Je t'ai aussi "prémaché" la fonction qui est exécuté pour le OK.

Pour rajouter des armes et gadgets, il te faut remplir les deux listes en haut du script.

Si ça ne fonctionne pas, merci de me donner l(es) erreur(s) côté client (donc visibles via /debugscript 3 et non pas dans la console du serveur)

Link to comment
j'ai pas trouver de Event comme quand le joueur selectionne un truc dans la liste et aprés appuit sur OK. Merci d'avance.

Si tu ne l'as pas trouvé, comment ce fait il qu'il soit dans ton script ??? (onClientGUIClick)

Voilà ton code revu et corrigé. Reste à savoir s'il fonctionne, je n'ai pas testé:

local gui = {} 
local screenWidth, screenHeight = guiGetScreenSize() 
  
-- a completer pour rajouter des armes dans le tableau 
local weapons = { 
    "ak-47", 
    "deagle", 
    "chainsaw" 
} 
  
-- a completer pour rajouter des gadgets dans le tableau 
local gadgets = { 
    "armor" 
} 
  
local function onOkClicked(button, state, absoluteX, absoluteY) 
    if button ~= "left" and state ~= "up" then return end 
  
    local rowWeaponSelected = guiGridListGetSelectedItem(gui["listWidget"]) 
    local rowGadgetSelected = guiGridListGetSelectedItem(gui["listWidget_2"]) 
  
    if rowWeaponSelected and rowGadgetSelected then 
        local weaponSelected = guiGridListGetItemText(gui["listWidget"], rowWeaponSelected, 1) 
        local gadgetSelected = guiGridListGetItemText(gui["listWidget_2"], rowGadgetSelected, 1) 
  
        --debug: 
        outputChatBox("You selected "..weaponSelected.." and "..gadgetSelected) 
    else 
        -- Il n'a pas choisit dans les deux tableaux 
    end 
  
    toggleWeaponWindow() 
end 
  
local function onCancelClicked(button, state, absoluteX, absoluteY) 
    if button ~= "left" and state ~= "up" then return end 
  
    toggleWeaponWindow() 
end 
  
function createShopWindow() 
    local windowWidth, windowHeight = 400, 315 
    local left = screenWidth/2 - windowWidth/2 
    local top = screenHeight/2 - windowHeight/2 
    gui["window"] = guiCreateWindow(left, top, windowWidth, windowHeight, "CHOOSE", false) 
    guiWindowSetSizable(gui["window"], false) 
  
    gui["btn_ok"] = guiCreateButton(111, 257, 77, 28, "OK", false, gui["window"]) 
    addEventHandler("onClientGUIClick", gui["btn_ok"], onOkClicked, false) 
  
    gui["btn_cancel"] = guiCreateButton(194, 257, 77, 28, "Cancel", false, gui["window"]) 
    addEventHandler("onClientGUIClick", gui["btn_cancel"], onCancelClicked, false) 
  
    gui["listWidget"] = guiCreateGridList(0, 45, 161, 191, false, gui["window"]) 
    guiGridListSetSortingEnabled(gui["listWidget"], false) 
    guiGridListAddColumn(gui["listWidget"], "WEAPONS", 0.85) 
  
    for k, weaponName in ipairs(weapons) do 
        local row = guiGridListAddRow(gui["listWidget"]) 
        guiGridListSetItemText(gui["listWidget"], row, gui["listWidget_col"], weaponName, false, false ) 
    end 
  
     
    gui["listWidget_2"] = guiCreateGridList(230, 45, 161, 191, false, gui["window"]) 
    guiGridListSetSortingEnabled(gui["listWidget_2"], false) 
    guiGridListAddColumn(gui["listWidget_2"], "GADGETS", 0.85) 
  
    for k, gadgetName in ipairs (gadgets) do 
        local row = guiGridListAddRow(gui["listWidget_2"]) 
        guiGridListSetItemText(gui["listWidget_2"], row, gui["listWidget_2_col"], gadgetName, false, false ) 
    end 
  
    guiSetVisible(gui["window"], false) 
end 
addEventHandler("onClientResourceStart", resourceRoot, createShopWindow) 
  
function toggleShopWindow() 
    local visibility = guiGetVisible(gui["window"]) 
    guiSetVisible(gui["window"], not visibility) 
    showCursor(not visibility) 
end 
addCommandHandler("gui", toggleShopWindow) 

A noter que la fenêtre est crée au moment ou le joueur à rejoins le serveur et qu'on le cache directement. Un /gui permet de le rendre visible s'il ne l'ai pas et inversement.

On ne s'amuse donc pas à recréer l'intégralité du GUI à chaque fois.

Je t'ai aussi "prémaché" la fonction qui est exécuté pour le OK.

Pour rajouter des armes et gadgets, il te faut remplir les deux listes en haut du script.

Si ça ne fonctionne pas, merci de me donner l(es) erreur(s) côté client (donc visibles via /debugscript 3 et non pas dans la console du serveur)

Bonjour, merci d'avoir répondu et sa ne marche pas, voici les erreurs:

WARNING: gui\client.lua:60: Bad argument @ 'guiGridListSetItemText' [Expected number at argument 3, got nil]

WARNING: gui\client.lua:60: Bad argument @ 'guiGridListSetItemText' [Expected number at argument 3, got nil]

WARNING: gui\client.lua:70: Bad argument @ 'guiGridListSetItemText' [Expected number at argument 3, got nil]

Link to comment
  • Moderators

Oups, m'as faute en effet.

Ligne 60:

guiGridListSetItemText(gui["listWidget"], row, 1, weaponName, false, false ) 

Ligne 70:

guiGridListSetItemText(gui["listWidget_2"], row, 1, gadgetName, false, false ) 

Link to comment
Oups, m'as faute en effet.

Ligne 60:

guiGridListSetItemText(gui["listWidget"], row, 1, weaponName, false, false ) 

Ligne 70:

guiGridListSetItemText(gui["listWidget_2"], row, 1, gadgetName, false, false ) 

Ahh. Merci mais c'est pas sa que je voulais faire, en gros ce que je voulais faire c'est que quand il clique sur OK sa lui donne les fusils..

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...