-
Posts
410 -
Joined
-
Last visited
-
Days Won
32
Everything posted by FernandoMTA
-
New 2.0.2 update: replaced couroutines code with use of Asyncio library + fixed removeExternalMod function + newmodels-example fixes. Full changelog on GitHub. Update recommended.
-
Small 2.0.1 update posted with some QoL improvements & a fix for when you try to load hundreds of mods at once. Also uploaded the resource to community.mtasa.com.
-
NEW MAJOR RELEASE: v2.0.0 Click the link above to see the Changelog on the Github Release page. Please update your newmodels & sampobj_reloaded resources to the latest version. You will greatly benefit from the changes. Enjoy!
-
cheers to MTA's AC that is one of the main reasons this platform is very popular today
-
thank you to all the people who make MTA great happy new year and to a bright future!
-
There is an ongoing Closed Beta (whitelist) that you can be apart of. It's been a pleasure developing this game mode so far. Come join the Discord if you haven't already It has lots of potential.
-
For further contact please only contact @Klis Thank you.
-
Hey, just an advice: in 3dvoicegui.lua Line 205 you do fileDelete("3dvoicegui.lua") to delete the file from client's download cache. You can do exactly the same by instead just putting cache="false" in meta.xml for the 3dvoicegui.lua script.
-
no cliente a setWeaponProperty é só pra armas custom q n da para usar. N pergunte porquê ;( https://wiki.multitheftauto.com/wiki/SetWeaponProperty
-
being able to play MTA from a VM and access only local servers could be interesting... This would facilitate the lives of developers when we need to test scripts in multiplayer but nobody is available to come help you out
-
function changeM4Crosshair(thePlayer) if not getElementData(thePlayer, "zoom") then setWeaponProperty("m4", "pro", "flag_aim_1st_person", true) setWeaponProperty("m4", "std", "flag_aim_1st_person", true) setWeaponProperty("m4", "poor", "flag_aim_1st_person", true) setElementData(thePlayer, "zoom", true) outputChatBox("on", thePlayer, 0,255,0) else setWeaponProperty("m4", "pro", "flag_aim_1st_person", false) setWeaponProperty("m4", "std", "flag_aim_1st_person", false) setWeaponProperty("m4", "poor", "flag_aim_1st_person", false) removeElementData(thePlayer, "zoom") outputChatBox("off", thePlayer, 255,255,0) end end addCommandHandler("mira", changeM4Crosshair, false, false) @copo se eu bem entendi, quando vc dá esse comando ele ativa o modo mirar em 1ª pessoa. Ao dar o comando outra vez, desativa. está bom assim ou você quer mais alguma coisa? Vejo que no seu print tem uma mira diferente (vermelha), isso ja faz parte de outro script q muda a crosshair por shader. EDIT: Eu me apercebi que isso n vai dar certo infelizmente pq o setWeaponProperty muda a propriedade da arma pro servidor todo, e não apenas para o player que você quer...
-
1. Quando é que a função fly que faz triggerClientEvent é chamada? 2. Se você adicionar um print no arquivo client.lua ele aparece na sua debugscript?
-
Mostre o erro pf.
-
Tem alguns erros de escrita no seu codigo. Verifique todas as linhas Mas para começar, isso aí não faz sentido Você poderia usar element data no jogador. if not getElementData(thePlayer, "zoom") then -- ativar setElementData(thePlayer, "zoom", true) else -- desativar removeElementData(thePlayer, "zoom") end Veja a wiki do MTA sobre as funcoes setElementData e getElementData, e setWeaponProperty tambem amigo @copo
-
tudo que trigga eventos do client, não funciona
FernandoMTA replied to Doongogar's topic in Programação em Lua
provavelmente seu meta.xml ta errado como você mostrou noutro post. Veja na consola do servidor se todos os scripts do resource foram carregados com sucesso. -
Spawnar no carro mais proximo sem um piloto
FernandoMTA replied to Doongogar's topic in Programação em Lua
function irCarroProximo(thePlayer, cmd) -- checar permissao de staff aqui local x,y,z = getElementPosition(thePlayer) local int, dim = getElementInterior(thePlayer), getElementDimension(thePlayer) local closestVehicle = nil local smallestDistance = nil for k, vehicle in ipairs(getElementsByType("vehicle")) do local vx,vy,vz = getElementPosition(vehicle) local vint, vdim = getElementInterior(vehicle), getElementDimension(vehicle) -- verificar se tao no mesmo mundo if vint == int and vdim == dim then -- verificar se n tem ngm dentro if not getVehicleController(vehicle) then -- verificar posicao local dist = getDistanceBetweenPoints3D(x,y,z, vx,vy,vz) if (smallestDistance == nil) or (dist < smallestDistance) then smallestDistance = dist closestVehicle = vehicle end end end end if not closestVehicle then outputChatBox("Nenhum veículo desocupado foi encontrado", thePlayer, 255,0,0) return end local vx,vy,vz = getElementPosition(closestVehicle) setElementPosition(thePlayer, vx, vy, vz +3) outputChatBox("Teleportado para o veículo mais próximo#ffffff "..vx..", "..vy..", "..vz, thePlayer, 0,255,0, true) end addCommandHandler("ircarroproximo", irCarroProximo, false, false) se tiver alguma dúvida não hesite @SciptNovato -
@SciptNovato como ficaram os arquivos? Nesse ultimo print falta alguns ', olhe: Tem que ser: <script src="server_S.lua" type="server"/> <script src="client.lua" type="client" cache="false"/> de acordo com os nomes dos arquivos. E o min client version é assim q bota: <min_mta_version client="1.5.9-9.21118.0" server="1.5.9-9.21118.0"/> Pode botar um print("oi") no final de cada arquivo para ver na consola se eles foram carregados.
-
@copo sobre o 1o script: o addCommandHandler parece bem. Quando a função abrir for executada por ele, vai tentar verificar "painel == false". Não faço ideia de onde vem essa variável, suponho que nunca foi declarada. Quando uma variável não existe, o valor dela é nil e não false. Logo você pode verificar "if painel == nil then" ou "if not painel then". Aí ele vai adicionar o onClientRender. E quando for fazer o comando novamente para esconder o painel, a variável vai estar a true como você setou, então vai executar o que vem depois do "else", removendo assim o onClientRender. Sobre o 2o script: Você estava quase, mude esse "if exibir_bulssola = false then" para "if not exibir_bussola then" (bussola ta mal escrito e também faltava um = na comparação) Sobre o 3o script: N faço ideia o que você está tentando fazer. Essa função apenas seta algumas propriedades de arma sempre que é chamada. Você teria que mudar isso
-
No worries. You can always change the SPAZ properties serverside to improve the weapon
-
Marker para teletransportar para interior nao funciona
FernandoMTA replied to Doongogar's topic in Programação em Lua
Eu testei o seu código e realmente não estava acontecendo nada ao entrar no marker, então eu mudei: local entrarInterior = createMarker(2231.294921875,-2414.8959960938,12.65, "cylinder", 1, 255, 255, 255, 50) function entrarLocal(thePlayer, matchingDimension) if (getElementType(thePlayer) == "player") and (matchingDimension) and (not getPedOccupiedVehicle(thePlayer)) then setElementPosition(thePlayer, 941.87628173828, 2115.2114257812, 1011.0302734375) setElementInterior(thePlayer, 1) end end addEventHandler("onMarkerHit", entrarInterior, entrarLocal) - Coloquei getPedOccupiedVehicle em vez de isPedInVehicle pois essa função está obsoleta - adicionei matchingDimension que é um argumento do onMarkerHit - botei o event handler no marker mesmo, em vez de root + verificar o source depois - aumentei ligeiramente a coordenada Z do marker: de 12.54 para 12.65 e passou a funcionar. Realmente o marker estava muito para baixo e não estava detetando o player. Espero ter ajudado @SciptNovato -
Marker para teletransportar para interior nao funciona
FernandoMTA replied to Doongogar's topic in Programação em Lua
Esse script é de tipo "server" no meta.xml, certo? Pois o evento onMarkerHit é serverside. Para clientside seria onClientMarkerHit. @SciptNovato -
I don't think u need to modify ACL often. Either way, you have many ACL functions to try: https://wiki.multitheftauto.com/wiki/AclGroupAddObject
-
Why does dxDrawText use end position and not width and hight?
FernandoMTA replied to Gaimo's topic in Scripting
float leftX, float topY [, float rightX = leftX, float bottomY = topY It uses those arguments for positioning so that you can determine the 4 points of a rectangle in which the text will be. Default alignment is horizontal "left" and vertical "top". You can easily change this to "center", "center" to place your text in the middle of the rectangle you defined with the 4 left, top, right, bottom points. Idk why they didn't just do x,y, width,height but it works like this. -
@RaxzenThe wiki says: Custom weapons are weapons you create with https://wiki.multitheftauto.com/wiki/CreateWeapon that can't be held by a player/ped, and are in the world. What you would be looking for is a clientside version of this to set weapon ID properties for the client only, and not the whole server: ... but sadly it doesn't exist. There are some suggestions related to weapon properties, skill levels, etc in the Bug tracker here, which you can explore. I remember seeing a suggestion saying that setWeaponProperty should be able to take a player argument so it only applies to a certain player. I wish this was implemented already
-
You coud do something like this in a client script: local DAMAGE_AREA = createColPolygon(-1, 4, 5, 8, 9, 4, 5, -2, -1, 4) -- colshape coordinates here local DAMAGE_DELAY = 3000 -- miliseconds between damage hits local DAMAGE_AMOUNT = 5 -- health points to lose local damageTimer local function takeDamage() -- cancel damage timer if dead if isPedDead(localPlayer) then if isTimer(damageTimer) then killTimer(damageTimer) damageTimer = nil end return end -- take damage (this may kill the player) setElementHealth(localPlayer, math.max(0, getElementHealth(localPlayer) - DAMAGE_AMOUNT)) outputChatBox("Ouch", 255, 56, 56) -- you can trigger some visual effects here (if you want) end addEventHandler( "onClientColShapeHit", DAMAGE_AREA, function (theElement, matchingDimension) if (theElement ~= localPlayer) then return end if not (matchingDimension) then return end -- take damage instantly (if you want) takeDamage() -- set damage timer damageTimer = setTimer(takeDamage, DAMAGE_DELAY, 0) end) addEventHandler( "onClientColShapeLeave", DAMAGE_AREA, function (theElement, matchingDimension) if (theElement ~= localPlayer) then return end if not (matchingDimension) then return end -- cancel damage timer if isTimer(damageTimer) then killTimer(damageTimer) damageTimer = nil end end)