Rakashy Posted September 24, 2020 Share Posted September 24, 2020 Bom, eu possuo um sistema de compra de items por uma loja, tudo perfeito sem nenhum erro, porém quando tento comprar algo, recebo o seguinte erro: server.lua:14 attempt to compare number with boolean abaixo a parte aonde está dando o erro. function buyItem(player, item, value, amount, count, db) if (getElementData(player, "char.money")>=amount) then exports.inventario:giveItem(player, item, value, db, 0) setElementData(player, "char.money", getElementData(player, "char.money") - amount) exports["info"]:showBoxS(player,"Compra efetuada com sucesso","info") else exports["info"]:showBoxS(player,"Dinheiro insuficiente","error") end end addEvent("addItem", true) addEventHandler("addItem", getRootElement(), buyItem) Alguma solução ? o erro poderia ser devido ao "amount" dps do >= ? por não conter um numeral de 0-1 ? se alguém tiver alguma sugestão.. Link to comment
Other Languages Moderators Lord Henry Posted September 24, 2020 Other Languages Moderators Share Posted September 24, 2020 O erro ocorre pois provavelmente getElementData(player, "char.money") é false. Link to comment
Rakashy Posted September 24, 2020 Author Share Posted September 24, 2020 2 minutes ago, Lord Henry said: O erro ocorre pois provavelmente getElementData(player, "char.money") é false. E como eu poderia resolver isto ? deve ser algo bobo, más que está me dando uma dor de cabeça... Link to comment
Other Languages Moderators Lord Henry Posted September 24, 2020 Other Languages Moderators Share Posted September 24, 2020 (edited) Coloque isso na linha anterior: if not (getElementData(player, "char.money")) then return end Edited September 24, 2020 by Lord Henry Link to comment
Rakashy Posted September 24, 2020 Author Share Posted September 24, 2020 7 minutes ago, Lord Henry said: Coloque isso na linha anterior: if not (getElementData(player, "char.money")) then return end Bom, parou de dar erro, porém agora quando clico pra confirmar a compra do item na loja (no caso comida), não acontece absolutamente nada, o item não vai ao inventário, e também não apresenta nenhum erro... Bom, consegui resolver, era um Event errado, Erro meu, porém kkk, agora o problema é que consigo comprar o item na loja, só que não está descontando o dinheiro, o item vem de graça, e por exemplo, ele custa "6Reais", quando compra vem 6 Unidades do item, alguma ideia ? Link to comment
DNL291 Posted September 24, 2020 Share Posted September 24, 2020 Onde desconta o dinheiro é por meio da element-data "char.money"? Se não souber a resposta, procure-a. Provavelmente é dessa forma que manipula o dinheiro do jogador e pode haver erros nessa parte. Link to comment
Rakashy Posted September 24, 2020 Author Share Posted September 24, 2020 11 minutes ago, DNL291 said: Onde desconta o dinheiro é por meio da element-data "char.money"? Se não souber a resposta, procure-a. Provavelmente é dessa forma que manipula o dinheiro do jogador e pode haver erros nessa parte. Notei que no script todo não há registro de algum "setElementData (char.money)", logo, o getElementData (char.money) nao funciona, talvez este seja o erro ? se sim, aonde basicamente eu deveria adicionar a data? Link to comment
Gustavo Freire Posted October 1, 2020 Share Posted October 1, 2020 Este mod foi removido de um backup que não usa o dinheiro nativo do mta, como por exemplo o: givePlayerMoney(player, 1000) O que você deve fazer é adaptar esse script para o dinheiro nativo do mta. Tente usar isto: function buyItem(player, item, value, amount, count, db) local money = getPlayerMoney(player) if (money >= amount) then exports.inventario:giveItem(player, item, value, db, 0) takePlayerMoney(player, amount) exports["info"]:showBoxS(player,"Compra efetuada com sucesso","info") else exports["info"]:showBoxS(player,"Dinheiro insuficiente","error") end end addEvent("addItem", true) addEventHandler("addItem", getRootElement(), buyItem) desculpa se não estiver funcionando, ainda tenho muito o que aprender <:) Link to comment
Rakashy Posted October 1, 2020 Author Share Posted October 1, 2020 7 hours ago, Gustavo Freire said: Este mod foi removido de um backup que não usa o dinheiro nativo do mta, como por exemplo o: givePlayerMoney(player, 1000) O que você deve fazer é adaptar esse script para o dinheiro nativo do mta. Tente usar isto: function buyItem(player, item, value, amount, count, db) local money = getPlayerMoney(player) if (money >= amount) then exports.inventario:giveItem(player, item, value, db, 0) takePlayerMoney(player, amount) exports["info"]:showBoxS(player,"Compra efetuada com sucesso","info") else exports["info"]:showBoxS(player,"Dinheiro insuficiente","error") end end addEvent("addItem", true) addEventHandler("addItem", getRootElement(), buyItem) desculpa se não estiver funcionando, ainda tenho muito o que aprender <:) Eu ja fiz essa alteração kkk, li na wiki e chegue ia este mesmo resultado, funciona bem, a questão é que, os items não estão indo para o banco de dados, nas tabelas do mysql até geram os ids de item quando compro algo, porém não estão aparecendo no inventário. Link to comment
HiroShi Posted October 12, 2020 Share Posted October 12, 2020 On 01/10/2020 at 18:27, Rakashy said: Eu ja fiz essa alteração kkk, li na wiki e chegue ia este mesmo resultado, funciona bem, a questão é que, os items não estão indo para o banco de dados, nas tabelas do mysql até geram os ids de item quando compro algo, porém não estão aparecendo no inventário. function buyItem(player, item, value, amount, count, db) if (getElementData(player, "char.money") or 0) >= amount then exports.inventario:giveItem(player, item, value, db, 0) takePlayerMoney(player, amount) exports["info"]:showBoxS(player,"Compra efetuada com sucesso","info") else exports["info"]:showBoxS(player,"Dinheiro insuficiente","error") end end addEvent("addItem", true) addEventHandler("addItem", getRootElement(), buyItem) tente isso 1 Link to comment
Rakashy Posted October 15, 2020 Author Share Posted October 15, 2020 Resolvido, pode fechar o post Link to comment
Recommended Posts