UserToDelete Posted April 20, 2016 Share Posted April 20, 2016 Hola a todos, Planteo un problema hoy, y resulta que estaba creando un script que tu le clicas a un player y te abre sus stats para reiniciar o cambiar alguna, todo bien, funciona perfecto, a excepcion, de que no cambia el valor del elementData, no tira error, ni nada. Quisiera saber yo por que Server Client local adminmanag = {} addCommandHandler("data", function (source) if hasObjectPermissionTo(source, "command.ban") then adminmanag[source] = true showCursor(source, true) end end ) addEventHandler("onPlayerClick", root, function (_,_, element) if adminmanag[source] then if isElement(element) then if getElementType(element) == 'player' then showCursor(source, false) triggerClientEvent(source, "data:view", source, element, getAllElementData(element)) adminmanag[source] = nil end end end end ) addEvent("data:mod", true) addEventHandler("data:mod", root, function (element_tochango, data, value) outputChatBox("RECIBIDO; "..tostring(data).." ; "..tostring(value).." ; "..tostring(element_tochango), root) if isElement(element_tochango) then setElementData(element_tochango, data, value) else outputChatBox("ERROR ELEMENT", root) end end ) local playerin local function gui () local screenW, screenH = guiGetScreenSize() ventana = guiCreateWindow((screenW - 484) / 2, (screenH - 457) / 2, 484, 457, "", false) guiWindowSetSizable(ventana, false) guiSetAlpha(ventana, 1.00) showCursor(true) botonguardar = guiCreateButton(10, 181, 213, 34, "Guardar data", false, ventana) guiSetFont(botonguardar, "clear-normal") guiSetProperty(botonguardar, "NormalTextColour", "FFAAAAAA") botonsalir = guiCreateButton(262, 181, 213, 34, "Salir sin guardar nada", false, ventana) guiSetFont(botonsalir, "clear-normal") guiSetProperty(botonsalir, "NormalTextColour", "FFAAAAAA") dataname = guiCreateMemo(182, 26, 293, 31, "", false, ventana) labeldata = guiCreateLabel(19, 36, 163, 17, "Data string", false, ventana) guiLabelSetHorizontalAlign(labeldata, "center", true) valuename = guiCreateMemo(185, 67, 290, 31, "", false, ventana) valuelabel = guiCreateLabel(19, 77, 163, 17, "Valor string", false, ventana) guiLabelSetHorizontalAlign(valuelabel, "center", true) datagrid = guiCreateGridList(10, 225, 465, 222, false, ventana) guiGridListAddColumn(datagrid, "data", 0.5) guiGridListAddColumn(datagrid, "value", 0.5) addEventHandler("onClientGUIClick", botonsalir, function () destroyElement(ventana) showCursor(false) end ) addEventHandler("onClientGUIClick", botonguardar, function () local data = guiGetText(dataname) local value = guiGetText(valuename) triggerServerEvent("data:mod", localPlayer, playerin, tostring(data), tostring(value)) playerin = nil showCursor(false) destroyElement(ventana) end ) guiSetInputMode("no_binds_when_editing") end addEvent("data:view", true) addEventHandler("data:view", root, function (element_clicked, tableElement) if isElement(element_clicked) then gui() playerin = element_clicked for k, v in pairs(tableElement) do local row = guiGridListAddRow (datagrid) guiGridListSetItemText(datagrid, row, 1, tostring(k), false, false) guiGridListSetItemText(datagrid, row, 2, tostring(v), false, false) end end end ) Link to comment
Arsilex Posted April 20, 2016 Share Posted April 20, 2016 · Hidden Hidden Según estuve mirando el script esta perfectamente y debería de funcionar, así que lo unos de los problemas pueden ser que tengas otro script que cambie estas elementData después a otro valor, revisaste si no tienes ningún script que se interponga? Link to comment
UserToDelete Posted April 21, 2016 Author Share Posted April 21, 2016 Si pongo un element data inventado lo crea y lo cambia, sin embargo, los ya existentes parece no tener permisoss o llamalo X paara cambiarloss, y sin embargo los intento cambiar, y no, no tengo scripts que lo cambien, mañana pruebo mejor acerca de esto Link to comment
Tomas Posted April 21, 2016 Share Posted April 21, 2016 ¿Por qué no lo cambias desde el cliente? Link to comment
UserToDelete Posted April 21, 2016 Author Share Posted April 21, 2016 ¿Por qué no lo cambias desde el cliente? Me gusta servidor Link to comment
El_Zorro Posted April 21, 2016 Share Posted April 21, 2016 · Hidden Hidden Por que no has seleccionado a ningún jugador de tu lista, por eso no funciona. guiGridListGetSelectedItem. Si éste no está seleccionado en la lista, entonces nunca va a realizar ningún cambio. Te dejo un ejemplo, para que te guies. function onClientVehicleBuy (button, state, absoluteX, absoluteYe) if (source == VehicleButton) then guiSetVisible (shopWindowVehicle, false) showCursor (false) if (guiGridListGetSelectedItem (VehicleGrid)) then local itemName = guiGridListGetItemText (VehicleGrid, guiGridListGetSelectedItem (VehicleGrid), 1) local itemID = getVehicleModelFromName (itemName) local itemCost = guiGridListGetItemText (VehicleGrid, guiGridListGetSelectedItem (VehicleGrid), 2) if itemName and itemID and itemCost then triggerServerEvent ("VehicleBuy", getLocalPlayer(), itemID, itemCost, itemName) end end end end addEventHandler ("onClientGUIClick", VehicleButton, onClientVehicleBuy) Link to comment
Tomas Posted April 21, 2016 Share Posted April 21, 2016 Por que no has seleccionado a ningún jugador de tu lista, por eso no funciona. guiGridListGetSelectedItem. Si éste no está seleccionado en la lista, entonces nunca va a realizar ningún cambio.Te dejo un ejemplo, para que te guies. function onClientVehicleBuy (button, state, absoluteX, absoluteYe) if (source == VehicleButton) then guiSetVisible (shopWindowVehicle, false) showCursor (false) if (guiGridListGetSelectedItem (VehicleGrid)) then local itemName = guiGridListGetItemText (VehicleGrid, guiGridListGetSelectedItem (VehicleGrid), 1) local itemID = getVehicleModelFromName (itemName) local itemCost = guiGridListGetItemText (VehicleGrid, guiGridListGetSelectedItem (VehicleGrid), 2) if itemName and itemID and itemCost then triggerServerEvent ("VehicleBuy", getLocalPlayer(), itemID, itemCost, itemName) end end end end addEventHandler ("onClientGUIClick", VehicleButton, onClientVehicleBuy) Eso no tiene nada que ver, en su gridlist no tiene elementos, solo strings. Y el jugador está almacenado en la variable 'playerin'. Link to comment
El_Zorro Posted April 21, 2016 Share Posted April 21, 2016 · Hidden Hidden Por otra parte, cuando se guarda el dato, no se actualiza automáticamente, sino hasta después de volver a seleccionar el elemento. Quizás eso sea el error. Es decir, el dato se guarda, pero no se actualiza los datos en la lista. Link to comment
Tomas Posted April 21, 2016 Share Posted April 21, 2016 Por otra parte, cuando se guarda el dato, no se actualiza automáticamente, sino hasta después de volver a seleccionar el elemento. Quizás eso sea el error.Es decir, el dato se guarda, pero no se actualiza los datos en la lista. Los datos de la lista son siempre los mismos, y ahí sólo se están usando como información estática, al cambiar la data el valor anterior es indiferente. Link to comment
Enargy, Posted April 21, 2016 Share Posted April 21, 2016 · Hidden Hidden Por otra parte, cuando se guarda el dato, no se actualiza automáticamente, sino hasta después de volver a seleccionar el elemento. Quizás eso sea el error.Es decir, el dato se guarda, pero no se actualiza los datos en la lista. Los datos de la lista son siempre los mismos, y ahí sólo se están usando como información estática, al cambiar la data el valor anterior es indiferente. Tendria que hacer una función que actualice la gridlist. Link to comment
El_Zorro Posted April 21, 2016 Share Posted April 21, 2016 · Hidden Hidden A mi me funciona bien, sin hacerle cambios. Link to comment
UserToDelete Posted April 21, 2016 Author Share Posted April 21, 2016 llamame loco, pero a mi no me va, y usamos el mismo script, no cambia absolutamente nada. sin embargo, aparece cambiado cuando me hago un getAllElementData, pero para el servidor, no lo cambia, que coño? Incluso reconecto usando un save system, y nada, que no me lo cambia realmente, desincronizacion? debe ser cosa de mi servidor Link to comment
El_Zorro Posted April 22, 2016 Share Posted April 22, 2016 · Hidden Hidden Intenta con setAccountData, talvez sí te funciona. Link to comment
UserToDelete Posted April 22, 2016 Author Share Posted April 22, 2016 Zorro,se lo que scripteo en mi server , son elementData Link to comment
Tomas Posted April 22, 2016 Share Posted April 22, 2016 triggerServerEvent("data:mod", resourceRoot, playerin, tostring(data), tostring(value)) Link to comment
Recommended Posts