ma2med Posted May 17, 2014 Share Posted May 17, 2014 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
M0USTiK Posted May 18, 2014 Share Posted May 18, 2014 Je peux essayer de te faire sa, pour demain soir sa seras pret Au passage regarde mon probleme si tu pourrait le resoudre sa serait sympa https://forum.multitheftauto.com/viewtopic.php?f=128&t=75594 Link to comment
Moderators Citizen Posted May 22, 2014 Moderators Share Posted May 22, 2014 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
ma2med Posted May 22, 2014 Author Share Posted May 22, 2014 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 Citizen Posted May 22, 2014 Moderators Share Posted May 22, 2014 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
ma2med Posted May 22, 2014 Author Share Posted May 22, 2014 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
Moderators Citizen Posted May 22, 2014 Moderators Share Posted May 22, 2014 J'ai corrigé "ton" code et je t'ai avancé en récupérant le nom des éléments qu'il a choisit. Il était évident que c'était à toi de terminer ton script. Link to comment
ma2med Posted May 22, 2014 Author Share Posted May 22, 2014 Ah d'accord merci, j'ai trouvé Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now