Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. @OverKILL Como esse assunto já é outro, você deveria criar outro tópico, mas vou relevar dessa vez. Então, acho que você deve adicionar a função no lado client e não no server. Esse erro das casas decimais aumentarem vai acontecer quando o valor for passado ao client.
  2. Remove "onClientRender" event from the code, edit the event "mute:mutePlayer" and add there addEventHandler (" onClientRender ", root, drawMuteTime) at the end of the function. Also, use removeEventHandler to remove the text when the time runs out.
  3. local screenW, screenH = guiGetScreenSize() function drawMuteTime( ) if not timerMute then return end local getMuteTimerDetails = math.floor(getTimerDetails( timerMute )) -- here if getMuteTimerDetails > 0 and mute == true then -----------162 LINE-------- dxDrawText("Muted time: "..tostring(getMuteTimerDetails), screenW * 0.0078, screenH * 0.6094, screenW * 0.2727, screenH * 0.6484, tocolor(255, 0, 0, 255), 1.00, "bankgothic", "left", "top", false, false, false, false, false) end end addEventHandler( "onClientRender", root, drawMuteTime )
  4. Because you're using getTimerDetails once and outside the drawMuteTime function.
  5. Não sei como tá o seu código, mas vou dar um exemplo de como ocorre esse erro: -- server triggerClientEvent( root, "onServerSend", root ) -- -- client addEvent( "onServerSend", true ) addEventHandler( "onServerSend", root, function() outputChatBox("@onServerSend") end ) Nesse exemplo o lado server tem apenas a função triggerClientEvent fora de qualquer função, e ela vai executar ao mesmo tempo que carregar o script. Enquanto que o lado client, que sempre é baixado e executado não estará carregado no mesmo momento da chamada do server. No seu caso, não sei se é isso que ocorre, essa é uma possibilidade, enfim, só vendo o script pra saber o que é exatamente.
  6. Quando o evento é chamado pelo server ele é tido como inexistente. Motivo: ou o outro script tem algum erro ou o lado server está chamando ele antes que o script do client é carregado.
  7. Try something like this: local maxDist = 500 local cinemax, cinemay, cinemaz = 0, 0, 0 local x, y, z = getElementPosition(localPlayer) local dis = getDistanceBetweenPoints3D(x, y, z, cinemax, cinemay, cinemaz) local volume = ( dis / maxDist ) volume = dis >= maxDist and 1 or volume setBrowserVolume( Screen, 1-volume )
  8. Your script won't work since it's actually client side.
  9. You don't have to hide each GUI element, just use the parent element. The parent elements, in this case, are the window and the gridList. guiSetVisible( GUIEditor.window[1], bool ) guiSetVisible(GUIEditor.gridlist[1], bool) That is enough. Edit: Hide only the window, gridList is the window's child. But the problem was the window's variable 'name' that wasn't being used on the other elements, instead it was 'GUIEditor.window [1]'. And in your last code, replace 'name' with GUIEditor.window[1] in guiWindowSetSizable.
  10. GUIEditor = { gridlist = {}, window = {}, button = {}, label = {} } addEventHandler("onClientResourceStart", resourceRoot, function () name = guiCreateWindow(856, 143, 264, 388, "Walking Style", false) guiWindowSetSizable(name, false) label = guiCreateLabel(6, 1, 254, 15, "", false, GUIEditor.window[1]) GUIEditor.gridlist[1] = guiCreateGridList(28, 44, 209, 308, false, GUIEditor.window[1]) Default = guiCreateButton(10, 14, 189, 30, "Default", false, GUIEditor.gridlist[1]) Drunk = guiCreateButton(10, 54, 189, 30, "Drunk Man", false, GUIEditor.gridlist[1]) Sneak = guiCreateButton(10, 94, 189, 30, "Sneaking", false, GUIEditor.gridlist[1]) Blind = guiCreateButton(10, 134, 189, 30, "Blind Man", false, GUIEditor.gridlist[1]) Gangstar = guiCreateButton(10, 174, 189, 30, "Gangstar", false, GUIEditor.gridlist[1]) Sexy = guiCreateButton(10, 214, 189, 30, "Sexy", false, GUIEditor.gridlist[1]) fat = guiCreateButton(10, 254, 189, 30, "Fat man", false, GUIEditor.gridlist[1]) Close = guiCreateButton(104, 357, 58, 17, "Done", false, GUIEditor.window[1]) guiSetVisible(name, false) addEventHandler ( "onClientGUIClick", guiRoot, setWalkingStyle ) end ) addCommandHandler("ws", function() guiSetVisible( name, true ) showCursor( true ) end) function setWalkingStyle() if source == Default then setPedWalkingStyle ( localPlayer, 0 ) elseif source == Drunk then setPedWalkingStyle ( localPlayer, 126 ) elseif source == Sneak then setPedWalkingStyle ( localPlayer, 69 ) elseif source == Blind then setPedWalkingStyle ( localPlayer, 127 ) elseif source == Gangstar then setPedWalkingStyle ( localPlayer, 121 ) elseif source == Sexy then setPedWalkingStyle ( localPlayer, 132 ) elseif source == fat then setPedWalkingStyle ( localPlayer, 124 ) elseif source == Close then guiSetVisible( name, false ) showCursor( false ) end end Try it.
  11. Try checking the attacker parameter first: function MakePlayerHeadshot( attacker, weapon, bodypart, loss ) if attacker and getElementType ( attacker ) == "ped" then if bodypart == 9 then triggerEvent( "onPlayerHeadshot", source, attacker, weapon, loss ) setPedHeadless ( source, true ) killPed( source, attacker, weapon, bodypart ) setTimer( BackUp, 900, 1, source ) end end end
  12. Atualmente não é possível usar anim customizada no MTA, essa função foi desativada já tem um bom tempo por problemas de funcionalidade. Mas você pode encontrar um tópico aqui no fórum a respeito disso: Tem uma pessoa trabalhando nisso e pelo visto já é possível substituir animações, isso está em fase de testes ainda.
  13. A função tá dentro do loop function chatadminbyjonas ( thePlayer, _, ... ) local message = table.concat ( { ... }, " " ) if ( isPlayerOnGroup ( thePlayer ) ) then for _, player in ipairs ( getElementsByType ( "player" ) ) do outputChatBox ( "#FF0000[ADM] #FFFFFF".. getPlayerName ( thePlayer ) .." : #FF0000".. message, player, 255, 255, 255, true ) end outputServerLog("ADMCHAT: " .. getPlayerName(thePlayer) .. " : " .. message) -- ENVIA LOG'S PARA O CONSOLE E NOS ARQUIVOS DE TEXTO ! else outputChatBox ( "#FF0000[ERRO] - #FFFFFFVocê não é um administrador !", thePlayer, 255, 255, 255, true ) end end addCommandHandler("adminchat", chatadminbyjonas)
  14. Você não vai conseguir usar um elemento aonde deve ser string. outputServerLog("ADMCHAT: " .. getPlayerName(thePlayer) .. " : " .. message)
  15. Você está chamando ZedMissionCheckKill() sem passar o argumento da missão. O correto seria assim (fiz pra você a lógica que o script vai funcionar): local currentMission,zombiesKilled = 0, 0 local missionZeds local zedsTable = { { 198, 158, 107, 108 }, {48, 18, 79, 23 } } function ZedMissionOnKill( killer ) -- Faz a checagem para saber se quem matou é um jogador e a vitíma um ped if ( killer and getElementType(killer) == "player" and getElementType(source) == "ped" ) then zombiesKilled = zombiesKilled+1 if zombiesKilled == missionZeds then -- Você vai precisar armazenar numa variável a quantidade de zumbis da missão atual ZedMissionWin () -- Nessa função você já vai poder criar a outra missão end end end function startZedMission() if currentMission ~= 0 then return end currentMission = 1 spawnZeds( currentMission ) outputChatBox ( "Your Get Mission" ) addEventHandler ( "onClientPedWasted", root, ZedMissionOnKill ) end addCommandHandler ( "mission", startZedMission ) function ZedMissionWin () outputChatBox( "Good job, mission completed!" ) givePlayerMoney ( thePlayer, 30000 ) -- Use isso no lado server! -- Vamos criar a outra missão spawnZeds( currentMission + 1 ) end function spawnZeds( mission ) if tonumber(mission) and tonumber(mission) > #zedsTable then currentMission = 0 return outputChatBox( "Parabéns, você completou todas as missões", 0, 240, 0 ) end missionZeds = #zedsTable[ tonumber(mission) ] for _, id in pairs( zedsTable[tonumber(mission)] ) do -- criar os zumbis end currentMission = tonumber(mission) end
  16. Qual erro deu? Porque o código está correto. Pode ser que você tenha usado no lado client, nesse caso, você receberia um erro: Atempt to call global...
  17. O MTA usa um tipo de Programação orientada a eventos (veja o link) (no caso scripting - que aplica-se ao próprio Mod). Tudo será difícil pra você se ainda é novato em programação. Seria melhor você buscar o conhecimento básico da programação O básico seria: Variáveis, funções, if - elseif - else, (loop) for - while, tabelas Para usar uma função, você precisa entender a sua sintaxe. Eventos como já foi explicado, faz a função ligada a ele ser chamada quando a ação do evento for feita. E existem eventos que envia parâmetros pra função ligada a ele (você pode ver esses exemplos do Lord Henry com os eventos onPlayerWasted e onVehicleEnter). Na vida real, esse "evento" seria como seu despertador que seria configurado para te chamar num horário que você programou, a diferença é que na aplicação no MTA ele serve para fazer a chamada em tudo que é necessário - em veículos, jogadores, elementos do jogo, interface e criações do MTA, mundo do GTA, etc. Você também pode adicionar o seu próprio evento usando addEvent. Enfim, esse vídeo será útil pra você ter um bom começo em programação: https://www.youtube.com/watch?v=Ds1n6aHchRU
  18. Remova a linha: if ( isPlayerOnGroup ( player ) ) then Essa função verifica se o jogador é um Staff.
  19. Desbuga ele, ué. Ou você espera que alguém te dê de presente um novo?
  20. O que você quer dizer com output? Seria quando alguém fala no chat? O evento pra isso é onPlayerChat e já tem essa função do resource freeroam. Se você tá usando outro gamemode, você vai precisar fazer algo similar, se eu entendi bem, o que você quer é permitir o uso de códigos hex no chat sem que o nick do jogador mude a cor da mensagem? Tente algo assim: local hexstr = string.format("#%.2X%.2X%.2X", r, g, b) outputChatBox(getPlayerName(source) .. ': ' .. hexstr .. msg, g_Root, r, g, b, true)
  21. Um erro óbvio aí. Tire o loop que está no código e em setPlayerWantedLevel troque por source. Edit: O jogador vai receber dinheiro no lado client, pra sincronizar o dinheiro com os outros jogadores você precisa definir no lado server.
  22. Lembrando que esse false no final é redundante, pois, se você simplesmente não usar, é como se você já tivesse definido false. Então o uso dessa boolean para o outputChatBox só é usado na prática para ativar os códigos hexadecimais. Assim como os argumentos R, G e B que por padrão, caso não especificados, serão 231, 217 e 176 respectivamente.
  23. Isso mesmo. A função setElementInterior já tem os argumentos do teleporte então é desnecessária a função setElementPosition. Também é melhor usar apenas um evento pra isso, tipo assim: --client addEventHandler( "onClientMarkerHit", root, function ( Marker1 ) if Marker1 == localPlayer then if source == Entrar_Loja1 and assalta == true and ativo == true and passivo == false then triggerServerEvent ("doSetPlayerLocation", localPlayer) exports["notices"]:addNotification("Digite /roubar dentro do marker para assaltar a loja",'info') elseif source == Sair_Loja1 then triggerServerEvent ("doSetPlayerLocation", localPlayer, true) end end end ) -- server function setPlayerLocation( exit ) if exit ~= true then setElementInterior(source, 9, 364.90844726563,-11.365772247314+2,1001.8515625) setElementDimension(source, 4) return end setElementInterior (source, 0, 2420.4567871094,-1508.8905029297+3,24) setElementDimension(source, 0) end addEvent("doSetPlayerLocation", true) addEventHandler("doSetPlayerLocation", root, setPlayerLocation)
  24. Porque a dimensão/Interior são setados no lado client. Use o código no lado server que irá funcionar.
  25. Por que pedir outro resource que você mesmo já tem? Seria mais fácil terminar o seu próprio e mostrar o que você está tentando fazer até porque você já tem um: rank system mostrando kill/deaths/ratio e o nick de cada jogador
×
×
  • Create New...