ber
Members-
Posts
167 -
Joined
-
Last visited
-
Days Won
1
Everything posted by ber
-
Estou precisando de um MOD de concessionária/garagem e achei um na net que parece ser muito bom, porém analisando ele não "destroi" e "cria" o veículo quando o player guarda e tira da garagem, ele apenas manda para outra dimensão aleatória, isso faz com que o servidor fique pesado e lagando ou pelo fato de estar em outra dimensão já dá uma diminuída?
-
Isso deve resolver seu problema: setElementRotation(source, 0, 0, 180)
-
Não tenho certeza, mas creio que quando o veículo estiver com o damageProof ativado os tiros não irão acertar o player dentro pois o carro estará blindado.
-
Não pode ser utilizada uma variável no accountData, você precisa primeiro pegar a conta desse elemento utilizando 'getPlayerAccount' e aí sim usar ela no accountData. Exemplo: local contaPlayer = getPlayerAccount(source) setAccountData(contaPlayer , "Porte", sim) Outra coisa, não use set/getAccountData de uma vez pois eles consomem muita memória e demoram para serem buscados. É melhor usar o set/getAccountData apenas quando o player logar/quitar do servidor, e baseado no resultado você setar o elementData no player. Exemplo: function savePorte(source) local conta = getPlayerAccount(source) if getElementData(source, "Porte") == true then setAccountData(conta, "Porte", 1) end end addEventHandler("onPlayerQuit", getRootElement(), savePorte) function restorePorte(source) local conta = getPlayerAccount(source) if getAccountData(conta, "Porte") == 1 then setElementData(source, "Porte", true) end end addEventHandler("onPlayerLogin", getRootElement(), restorePorte) Seu código corrigido: function Porte() local Porte = getElementData ( source, "Porte" ) if ( getPlayerMoney (source) >= 10000) then if Porte == false then takePlayerMoney(source, 10000) setElementData(source, "Porte", true) exports.Scripts_Dxmessages:outputDx(source,"Você Comprou Um Porte de Armas por R$:10,000 ","success",source, true) else exports.Scripts_Dxmessages:outputDx(source,"Você Ja Possui Porte","error",source, true) end else exports.Scripts_Dxmessages:outputDx(source,"Você Não Possui DInheiro suficiente Para Comprar o Porte","error",source, true) end end addEvent("Porte", true) addEventHandler("Porte", root, Porte) function savePorte(source) local conta = getPlayerAccount(source) if getElementData(source, "Porte") == true then setAccountData(conta, "Porte", 1) end end addEventHandler("onPlayerQuit", getRootElement(), savePorte) function restorePorte(source) local conta = getPlayerAccount(source) if getAccountData(conta, "Porte") == 1 then setElementData(source, "Porte", true) end end addEventHandler("onPlayerLogin", getRootElement(), restorePorte)
-
Alterar é impossível mesmo, mas caso queira reseta-los você consegue excluindo o MOD de ID e colocando ele novamente do jeito que você o baixou.
-
Depende, se o eventHandler que você está usando o source for o player sim, caso contrário use player.
-
Ou seria mais fácil mudar todo esse script para server-side, pois não vi nenhuma função aí que seja apenas client-side. Só dar ctrl-c ctrl-v no script de server-side e mudar o localPlayer
-
Poderia reformular sua pergunta? Pois pra mim não ficou muito claro seu problema. O alarme só dispara uma vez? Tipo, se um veículo estiver disparado e você bater em outro ele não vai disparar nesse mais recente?
-
Os sistemas de ID usam o ID real da conta pelo comando getAccountID, e não existe o setAccountID, então ele apenas puxa o ID da conta do jogador e não tem como alterar, se alterar o elementData quando o player relogar vai voltar para o ID antigo mesmo.
-
Ia falar o mesmo kk
-
dxDrawRectangle(screenW * 0.5514, screenH * 0.5022, screenW * 0.1319, screenH * 0.0522, COLOR, false) COLOR = tocolor(0, 0, 0, 150) if isCursorOnElement (screenW * 0.5514, screenH * 0.5022, screenW * 0.1319, screenH * 0.0522) then COLOR = tocolor(30, 144, 255, 150) end O COLOR você coloca no lugar do tocolor(xxx, xxx, xxx, xxx)
-
Estou tentando de todas as maneiras fazer uma progress bar por timer mas ela sempre buga e não começa do início, ela tipo "avança" um pouco e quando ela termina ainda demora uns 5~10 segundos para que o timer finalize e a bar suma. Esse é o código que estou usando (não o fiz do 0, apenas editei um pouco): function ProgressBar () local barra = interpolateBetween(0, 0, 0, 0.3558, 0, 0, (getTickCount()-tick)/3/60000, "Linear") dxDrawRectangle(screenW * 0.3221, screenH * 0.4701, screenW * 0.3558, screenH * 0.0599, tocolor(0, 0, 0, 150), false) dxDrawRectangle(screenW * 0.3221, screenH * 0.4701, screenW * barra, screenH * 0.0599, tocolor(30, 144, 255, 150), false) dxDrawText("Hackeando...", screenW * 0.4524, screenH * 0.4844, screenW * 0.5476, screenH * 0.5091, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) end Queria saber como eu faço para ela ficar perfeitamente sincronizada com um tempo de 3 minutos, pois desse jeito que ta não fica 100% sincronizado
-
Na próxima vez tenta colocar o código aqui para que possamos ajudar melhor, pois senão serão apenas suposições. Eu suponho que o Blip está sendo criado pela função createBlipAttachedTo, você precisa mudar para createBlip e colocar as coordenadas do player que ligou, e para pegar essas coordenadas basta usar o getElementPosition
-
https://wiki.multitheftauto.com/wiki/IsVehicleReversing <- usa esta função para verificar se o veículo esta dando ré e use marker corona para fazer a luz
-
Não seria mais simples um: onVehicleStartEnter > getVehicleController > if getElementType(ped) then > destroyElement ??
-
Não é o jeito certo mas o importante é que funciona: local id = getElementModel(altere aqui pela var do veiculo) if id ~= 418 and id ~= 416 and id ~= 433 and id ~= 427 and id ~= 490 then ......... ... ....... ..... else outputChatBox("Você não pode desmanchar este veículo", source) end end Essa função irá ver o ID do veículo que estão tentando desmanchar e se for diferente de todos esses IDs aí ele irá aceitar. Mas como o colega informou aí encima, o correto é utilizar tabela para deixar o código mais "organizado".
-
Estou fazendo um trabalho de carregador e preciso da animação em que o ped ergue os dois braços para tipo segurar uma caixa, porém não consigo colocar essa anim e fazer com que ele consiga andar para levar a caixa em outro lugar, como posso fazer isso?
-
Eu uso um spawn de veículos por marker no meu servidor que peguei na net e editei só o básico, mas ja joguei em outros servidores em que tinha um spawn melhorado, onde se o veículo estivesse spawnado ele podia passar na marker que não acontecia nada, só conseguiria pegar outro veículo se ele destruísse o anterior passando na outra marker de destroy. Dessa forma fica mais organizado pois não precisa spawnar o veículo longe da marker, pois se spawnar dentro da marker vai ficar bugando infinitamente. local viatura = createMarker(1278.04, -1804.923, 13.384 -1, "cylinder", 2.5, 30, 144, 255, 80) local rocam = createMarker(1278.187, -1810.993, 13.386 -1, "cylinder", 2.5, 30, 144, 255, 80) local destroy = createMarker(1277.769, -1798.945, 13.389 -1, "cylinder", 2.5, 255, 0, 0, 80) veh = {} function spawnVT(source) if isElementWithinMarker(source, viatura) then if isElement(veh[source]) then destroyElement(veh[source]) end veh[source] = createVehicle(597, 1278.108, -1817.025, 13.387, 0, 0, 90) warpPedIntoVehicle(source, veh[source]) end end addEventHandler("onMarkerHit", viatura, spawnVT) function spawnROCAM(source) if isElementWithinMarker(source, viatura) then if isElement(veh[source]) then destroyElement(veh[source]) end veh[source] = createVehicle(523, 1278.108, -1817.025, 13.387, 0, 0, 90) warpPedIntoVehicle(source, veh[source]) end end addEventHandler("onMarkerHit", rocam, spawnROCAM) function destroyVeh(source) if isElementWithinMarker(source, destroy) then destroyElement(veh[source]) end end addEventHandler("onMarkerHit", destroy, destroyVeh) function sairserver() destroyElement(veh[source]) end addEventHandler("onPlayerQuit", root, sairserver) Já tentei alterar para: veh = {} function spawnVT(source) if isElementWithinMarker(source, viatura) then if isElement(veh[source]) then return end veh[source] = createVehicle(597, 1278.108, -1817.025, 13.387, 0, 0, 90) warpPedIntoVehicle(source, veh[source]) end end addEventHandler("onMarkerHit", viatura, spawnVT) ou: veh = {} function spawnVT(source) if isElementWithinMarker(source, viatura) then if veh[source] == nil then veh[source] = createVehicle(597, 1278.108, -1817.025, 13.387, 0, 0, 90) warpPedIntoVehicle(source, veh[source]) end end end addEventHandler("onMarkerHit", viatura, spawnVT) porém não obtive sucesso, ele não destrói o meu veículo mas cria um novo do mesmo jeito, ja tentei de muitas formas consertar isso mas não consigo... Se puderem me ajudar ficarei muito agradecido.
-
Sempre que eu abro algum script mais avançado para editar sempre me deparo com duas linhas/conjuntos de código que eu nunca entendo, uma é for v, in players do - algo assim, não faço idéia do que seja isso e ja tentei procurar na wiki do mta e não tem nada a respeito disso. a outra é geralmente veh[player] - sei que ela cria um veículo associado ao player para facilitar depois para ser destruído ou algo assim, mas eu posso usar esse [player] em outras ocasiões também? quais seriam?
-
Não, abaixo do warpPed você coloca setVehicleHandling(veh[player], hand). como disse ali encima esse nome antes do = é uma indicação para aquela função, se você colocar o ID do carro não vai acontecer nada, você precisa nomear aquela ação e usar esse nome para que seja executado algo referente a ela
-
Da pra fazer usando o esquema de banco ou dinheiro sujo, só criar um elementData("Dinheiro:VIP") tipo assim. Procura na net um script de banco ou dinheiro sujo descompilado e estude o código dele e veja o que da pra reutilizar pra adiantar seu trabalho.
-
Você pode usar um cancelEvent junto com a onVehicleDamage ou um setVehicleDamageProof(true) dentro da função de spawn do veículo