Renaz Posted May 26, 2019 Share Posted May 26, 2019 local porte = createMarker (249.60247802734,68.466117858887,1003.640625, "cylinder", 1 , 255 ,255 ,255 ,50) setElementDimension(porte, 1) setElementInterior(porte, 6) function comprarPorte (player, cmd) if isElementWithinMarker (player, porte) then if getElementData(player,"porte") then if getPlayerMoney (player) >= 30000 then takePlayerMoney (player,30000) giveElementData(player , "porte" , true) outputChatBox("[AVISO] Você comprou o porte de armas!",player,255,255,255) else outputChatBox("[AVISO] Você não tem dinheiro para o porte!",player,255,255,255) else outputChatBox("[AVISO] Você já tem o porte de armas!",player,255,255,255) else outputChatBox("[AVISO] Você não está na delegacia!",player,255,255,255) end end end end addCommandHandler ("comprarporte", comprarPorte) fiz este script de porte de armas , no caso o giveElementData seria o melhor para se usar? no caso de ser para sempre? Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 De onde você tirou giveElementData? essa função não existe no MTA, pra salvar permanente use setAccountData. 1 Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 1 minute ago, Jonas^ said: De onde você tirou giveElementData? no caso seria setElementData* ,erro. 1 minute ago, Jonas^ said: setAccountData. ok local porte = createMarker (249.60247802734,68.466117858887,1003.640625, "cylinder", 1 , 255 ,255 ,255 ,50) setElementDimension(porte, 1) setElementInterior(porte, 6) function comprarPorte (player, cmd) if isElementWithinMarker (player, porte) then if getElementData(player,"porte") then if getPlayerMoney (player) >= 30000 then takePlayerMoney (player,30000) setAccountData ( player,"porte", true) outputChatBox("[AVISO] Você comprou o porte de armas!",player,255,255,255) else outputChatBox("[AVISO] Você não tem dinheiro para o porte!",player,255,255,255) else outputChatBox("[AVISO] Você já tem o porte de armas!",player,255,255,255) else outputChatBox("[AVISO] Você não está na delegacia!",player,255,255,255) end end end end addCommandHandler ("comprarporte", comprarPorte) assim? Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 (edited) Não, setAccountData requer uma conta e não um elemento como argumento, e porque deixou a verificação de getElementData? Edited May 26, 2019 by Jonas^ 1 Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 (edited) local porte = createMarker (249.60247802734,68.466117858887,1002.640625, "cylinder", 1 , 255 ,255 ,255 ,50) setElementDimension(porte, 1) setElementInterior(porte, 6) local acc = getPlayerAccount ( player ) function comprarPorte (player, cmd) if isElementWithinMarker (player, porte) then if getAccountData(acc,"porte") if getPlayerMoney (player) >= 30000 then takePlayerMoney (player,30000) setAccountData ( acc ,"porte", true) outputChatBox("[AVISO] Você comprou o porte de armas!",player,255,255,255) else outputChatBox("[AVISO] Você não tem dinheiro para o porte!",player,255,255,255) else outputChatBox("[AVISO] Você já tem o porte de armas!",player,255,255,255) else outputChatBox("[AVISO] Você não está na delegacia!",player,255,255,255) end end end end addCommandHandler ("comprarporte", comprarPorte) desse jeito? Edited May 26, 2019 by Renazz Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 (edited) addCommandHandler ("comprarporte", function (player, cmd) if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então: if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então: if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então: if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então: takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador. setAccountData (getPlayerAccount(player), "porte", true) -- Seta a account-data na conta do jogador. outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 255, 255, 255) else --Se o jogador não tiver 30k, então: outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 255, 255) end else -- Se o jogador tiver a account-data, então: outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 255, 255) end else -- Se o jogador não estiver no marker, então: outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 255, 255) end else -- Se o jogador estiver deslogado, então: outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 255, 255) end end) @Renazz Edited May 26, 2019 by Jonas^ Adicionando verificação se o jogador estiver deslogado/logado pois se trata de account-data é necessário o jogador estar logado. 1 Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 (edited) local porte = createMarker (250.04884338379,67.623962402344,1003.640625, "cylinder", 1 , 255 ,255 ,255 ,50) setElementInterior(porte,6) setElementDimension(porte,1) addCommandHandler ("comprarporte", function (player, cmd) if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então: if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então: if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então: if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então: takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador. setAccountData (getPlayerAccount(player), "porte", true) -- Seta a account-data na conta do jogador. outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 255, 255, 255) else --Se o jogador não tiver 30k, então: outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 255, 255) end else -- Se o jogador tiver a account-data, então: outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 255, 255) end else -- Se o jogador não estiver no marker, então: outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 255, 255) end else -- Se o jogador estiver deslogado, então: outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 255, 255) end end) agora o marker não está aparecendo de nenhum jeito, tentei colocar fora do interior e ele não apareceu. Edited May 26, 2019 by Renazz Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 18 minutes ago, Renazz said: local porte = createMarker (250.04884338379,67.623962402344,1003.640625, "cylinder", 1 , 255 ,255 ,255 ,50) setElementInterior(porte,6) setElementDimension(porte,1) addCommandHandler ("comprarporte", function (player, cmd) if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então: if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então: if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então: if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então: takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador. setAccountData (getPlayerAccount(player), "porte", true) -- Seta a account-data na conta do jogador. outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 255, 255, 255) else --Se o jogador não tiver 30k, então: outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 255, 255) end else -- Se o jogador tiver a account-data, então: outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 255, 255) end else -- Se o jogador não estiver no marker, então: outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 255, 255) end else -- Se o jogador estiver deslogado, então: outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 255, 255) end end) agora o marker não está aparecendo de nenhum jeito, tentei colocar fora do interior e ele não apareceu. /debugscript 3 me diga oque mostra ao restartar o resouce 1 Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 O código está certo posso te afirmar isso, seu problema é no meta, mas por via das dúvidas copie o código de novo: local porte = createMarker (249.60, 68.46, 1002.64, "cylinder", 1, 255, 255, 255, 50) setElementDimension (porte, 1) setElementInterior (porte, 6) addCommandHandler ("comprarporte", function (player, cmd) if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então: if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então: if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então: if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então: takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador. setAccountData (getPlayerAccount(player), "porte", true) -- Seta a account-data na conta do jogador. outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 0, 255, 0) else --Se o jogador não tiver 30k, então: outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 30, 30) end else -- Se o jogador tiver a account-data, então: outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 30, 30) end else -- Se o jogador não estiver no marker, então: outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 30, 30) end else -- Se o jogador estiver deslogado, então: outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 30, 30) end end) Meta: <meta> <script src="server.lua" type="server"/> </meta> 1 Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 (edited) Ali no meu comentário na linha 9 ta errado, é -- Se o jogador tiver, maior ou igual a 30k, então: 6 minutes ago, Renazz said: agora foi! Edited May 26, 2019 by Jonas^ 1 Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 opa , voltando ao assunto o meu script de revistar para pegar se o player tem o porte é neccessário usar o getElementData local Porte = tonumber(getElementData(Jogador , "porte")) or 0 if Porte > 1 then dxDrawText("Porte de Armas: (#00ff00X#ffffff)", x*748, y*269, x*832, y*284, tocolor(255, 255, 255, 255), x*1.00, Font_5, "left", "top", false, false, false, true, false) else dxDrawText("Porte de Armas: (#ff0000X#ffffff)", x*748, y*269, x*832, y*284, tocolor(255, 255, 255, 255), x*1.00, Font_5, "left", "top", false, false, false, true, false) end se eu substituir por getAccountData ele não funciona o script inteiro. Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 Sim, getPlayerAccount é somente server, passe pra element-data novamente e salve na conta do jogador quando ele quitar com setAccountData. Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 10 minutes ago, Jonas^ said: Sim, getPlayerAccount é somente serve ok 11 minutes ago, Jonas^ said: passe pra element-data novamente e salve na conta do jogador quando ele quitar com setAccountData. não entendi Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 Coloque o comando novamente com element-data, ou seja, getElementData (..) e setElementData (..), dai quando o jogador quitar você usa o evento onPlayerQuit pra salvar na conta do jogador com getElementData e setAccountData dai quando ele logar getAccountData e setElementData com o valor. 1 Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 local Porte = tonumber(getElementData(Jogador, "porte")) or 0 if Porte > 1 then dxDrawText("Porte de Armas: (#00ff00X#ffffff)", x*748, y*269, x*832, y*284, tocolor(255, 255, 255, 255), x*1.00, Font_5, "left", "top", false, false, false, true, false) else dxDrawText("Porte de Armas: (#ff0000X#ffffff)", x*748, y*269, x*832, y*284, tocolor(255, 255, 255, 255), x*1.00, Font_5, "left", "top", false, false, false, true, false) end local porte = createMarker (252.36033630371,69.68399810791,1002.640625, "cylinder", 1.3, 255, 255, 255, 50) setElementDimension (porte, 1) setElementInterior (porte, 6) addCommandHandler ("comprarporte", function (player, cmd) if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então: if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então: if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então: if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então: takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador. getElementData (player, "porte", true) -- Seta a account-data na conta do jogador. outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 0, 255, 0) else --Se o jogador não tiver 30k, então: outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 30, 30) end else -- Se o jogador tiver a account-data, então: outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 30, 30) end else -- Se o jogador não estiver no marker, então: outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 30, 30) end else -- Se o jogador estiver deslogado, então: outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 30, 30) end end) addEventHandler("onPlayerQuit" , player , setAccountData(player,"porte")) desse jeito?? Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 Meu deus mano, você ta tentando fazer sem nem se quer entender, olha oque você fez '-', primeira vez que vejo isso jesus 1 Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 tá , eu teria que fazer com o getElementData e depois o setElementData, ai quando o player desloga-se eu usaria o setAccountData para setar "porte" , dai quando ele entra-se eu usaria o OnPlayerJoin para verificar se getAccountData "porte" caso ele tivesse usaria o setElementData"porte" é isso? Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 (edited) Não, não se usa onPlayerJoin pra verificar uma data existente pois esse evento é antes do jogador fazer login na sua conta, vai retornar false. Faça assim mano: server-side local porte = createMarker (249.60, 68.46, 1002.64, "cylinder", 1, 255, 255, 255, 50) setElementDimension (porte, 1) setElementInterior (porte, 6) addCommandHandler ("comprarporte", function (player, cmd) if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então: if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então: if not getElementData (player, "porte") then -- Se o jogador não estiver com a element-data "porte", então: if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então: takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador. setElementData (player, "porte", true) -- Seta a data no jogador. outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 0, 255, 0) else --Se o jogador não tiver 30k, então: outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 30, 30) end else -- Se o jogador tiver a account-data, então: outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 30, 30) end else -- Se o jogador não estiver no marker, então: outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 30, 30) end else -- Se o jogador estiver deslogado, então: outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 30, 30) end end) function savePlayerPorte (p) if isElement(p) then local savePorte = getElementData (p, "porte") or false setAccountData (getPlayerAccount(p), "porte", savePorte) end end function loadPlayerPorte (p) if isElement(p) and not (isGuestAccount(getPlayerAccount(p))) then local loadPorte = getAccountData (getPlayerAccount(p), "porte") or false setElementData (p, "porte", loadPorte) end end addEventHandler ("onResourceStart", resourceRoot, function () for i, p in ipairs(getElementsByType("player")) do loadPlayerPorte (p) end end) addEventHandler ("onPlayerLogin", root, function () loadPlayerPorte (source) end) addEventHandler ("onResourceStop", resourceRoot, function () for i, p in ipairs(getElementsByType("player")) do savePlayerPorte (p) end end) addEventHandler ("onPlayerQuit", root, function () savePlayerPorte (source) end) addEventHandler ("onPlayerLogout", root, function (acc) savePlayerPorte (source, acc) end) client-side addEventHandler ("onClientRender", root, function () local checkPorte = getElementData (localPlayer, "porte") or false if (checkPorte) then dxDrawText ("Porte: Sim", -19, 459, 346, 493, tocolor(0, 255, 0, 255), 2.00, "default-bold", "center", "center", false, false, false, false, false) else dxDrawText ("Porte: Não", -19, 459, 346, 493, tocolor(255, 0, 0, 255), 2.00, "default-bold", "center", "center", false, false, false, false, false) end end) Leia este tópico: Isso pode te ajudar de alguma forma. Boa sorte! @Renazz Edited May 26, 2019 by Jonas^ Adição tópico do DNL 1 1 Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 https://imgur.com/a/Q4GdBg7 Agora o "Porte de Armas" no painel tá parecendo que não faz mais parte do painel ele aparece quando revisto mas não some nem quando mudo de aba nem quando fecho o painel Link to comment
Jonas^ Posted May 26, 2019 Share Posted May 26, 2019 Mostre o onClientRender completo desse painel aí. 1 Link to comment
Renaz Posted May 26, 2019 Author Share Posted May 26, 2019 Arrumado , foi só tirar o onClientRender 1 hour ago, Jonas^ said: addEventHandler ("onClientRender", root, function () https://imgur.com/a/6eW8wmV + uma coisa não to conseguindo colocar quando o player colide com a marker aparecer uma mensagem Link to comment
DNL291 Posted May 26, 2019 Share Posted May 26, 2019 1 hour ago, Renazz said: Arrumado , foi só tirar o onClientRender https://imgur.com/a/6eW8wmV + uma coisa não to conseguindo colocar quando o player colide com a marker aparecer uma mensagem Mostre o código que você está tentando. 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