Renaz Posted May 26, 2019 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? Discord: Rena#5383
Jonas^ Posted May 26, 2019 Posted May 26, 2019 De onde você tirou giveElementData? essa função não existe no MTA, pra salvar permanente use setAccountData. 1
Renaz Posted May 26, 2019 Author 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? Discord: Rena#5383
Jonas^ Posted May 26, 2019 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
Renaz Posted May 26, 2019 Author 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 Discord: Rena#5383
Jonas^ Posted May 26, 2019 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
Renaz Posted May 26, 2019 Author 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 Discord: Rena#5383
Jonas^ Posted May 26, 2019 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
Jonas^ Posted May 26, 2019 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
Jonas^ Posted May 26, 2019 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
Renaz Posted May 26, 2019 Author 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. Discord: Rena#5383
Jonas^ Posted May 26, 2019 Posted May 26, 2019 Sim, getPlayerAccount é somente server, passe pra element-data novamente e salve na conta do jogador quando ele quitar com setAccountData.
Renaz Posted May 26, 2019 Author 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 Discord: Rena#5383
Jonas^ Posted May 26, 2019 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
Renaz Posted May 26, 2019 Author 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?? Discord: Rena#5383
Jonas^ Posted May 26, 2019 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
Renaz Posted May 26, 2019 Author 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? Discord: Rena#5383
Jonas^ Posted May 26, 2019 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
Renaz Posted May 26, 2019 Author 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 Discord: Rena#5383
Renaz Posted May 26, 2019 Author 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 Discord: Rena#5383
DNL291 Posted May 26, 2019 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. Please do not PM me with scripting related question nor support, use the forums instead.
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