Jump to content

Gaimo

Members
  • Posts

    209
  • Joined

  • Last visited

Everything posted by Gaimo

  1. Como eu posso selecionar uma skin aleatoria da tabela famaleSkins? Normalmente eu uso table[math.random(1, #table)]. Mas nesse caso não tem como, como eu poderia selecionar uma? femaleSkins = {9, 10, 11, 12, 13, 31, 38, 39, 40, 41, 53, 54, 55, 56, 63, 64, 69, 75, 76, 77, 85, 87, 88, 89, 90, 91, 92, 93, 129, 130, 131, 138, 139, 140, 141, 145, 148, 150, 151, 152, 157, 169, 172, 178, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 201, 205, 207, 211, 214, 215, 216, 218, 219, 224, 225, 226, 231, 232, 233, 237, 238, 243, 244, 245, 246, 251, 256, 257, 263, 298, 304}
  2. Alguém conhece algum programa parecido com sqlitebrowser mas que acesse remotamente? No caso preciso acessar o banco de dados que está na HOST e se eu edito pelo filezilla a alteração não acontece somente via script.
  3. Como funciona o evento onClientPlayerVoiceStart? voicePlayers = {} globalMuted = {} --- addEventHandler ( "onClientPlayerVoiceStart", root, function() if isPlayerVoiceMuted ( source ) then cancelEvent() return end voicePlayers[source] = true end ) o que tem a ver o voicePlayers[source] = true ? como ele funciona? No script não encontrei nenhum lugar onde o player é jogado dentro do voicePlayers além desse evento, e por que somente quando voicePlayers[source] está true que eu posso ouvir outros jogadores? Qual a diferença do evento onClientPlayerVoiceStart e do setPlayerVoiceBroadcastTo?
  4. Estou tentando puxar todas as ACLs para o cliente e exibir em um GUI mas está chegando zerada no cliente. Server: addEvent( "returnACL", true ) addEventHandler( "returnACL", resourceRoot, function(player) local allACL = aclList() print("SERVER: "..tostring(#allACL)) triggerClientEvent(player, "open_ACL_GUI", player, allACL) end) --DEBUGSCRIPT: SERVER: 15 Client: triggerServerEvent("returnACL", resourceRoot, localPlayer) function openGUI(allACLs) print(tostring(#allACLs)) end addEvent( "open_ACL_GUI", true ) addEventHandler( "open_ACL_GUI", localPlayer, openGUI) --DEBUGSCRIPT: 0 Testei com outro valor como: function openGUI(allACLs, valor) e no valor coloquei uma string "teste" e quando chegou no cliente estava certo, mas o return de ACL não está funcionando qual o motivo?
  5. Não posso chamar funções do servidor pelo client? Exemplo: Server: function returnAllACLs() return aclList() end Client: local allACLs = returnAllACLs()
  6. Então não rola eu usar o resource voice? No caso quero o seguinte, quero definir o jogador em uma frequência e quando ele falar quem está perto e quem está na frequência possa ouvir. Como eu poderia fazer isso? Quero que o jogador posso ficar alternando as frequências, por exemplo se ele trocar da 0 para a 1 ele saia da 0 e entre na 1 e assim por diante. CLIENT function click(btn) if btn == "left" and source == g.up then frequency = frequency + 1 if frequency > 999 then frequency = 0 end dgsSetText(g.label, frequency.." Hz") triggerServerEvent ( "setFrequency", resourceRoot, localPlayer, frequency) elseif btn == "left" and source == g.down then frequency = frequency - 1 if frequency < 0 then frequency = 999 end dgsSetText(g.label, frequency.." Hz") triggerServerEvent ( "setFrequency", resourceRoot, localPlayer, frequency) end end SERVER local players = { } addEvent( "setFrequency", true ) addEventHandler( "setFrequency", resourceRoot, function(player, frequency) players[player] = frequency -- ???? setPlayerVoiceBroadcastTo(player, TABELA_DE_JOGADORES) end) Como eu devo usar o setPlayerVoiceBroadcastTo ?? No caso imagino que preciso adicionar os jogadores da mesma frequência numa mesma tabela e remover mas como? Como posso verificar se dois ou mais jogadores estão na mesma frequência? Aproveitando o post, mais uma dúvida sobre tabelas, como eu percorreria uma tabela assim: local exemplo = {} addEventHandler("onPlayerJoin", root, function() exemplo[source] = math.random(1, 1000) end) Supondo que eu queira descobrir o valor de cada player como eu faria ? Tipo um for que print o valor de todos os players.
  7. Quero fazer um sistema de "radinho" colocar dois ou mais jogadores em uma mesma frequência para conversar entre si, vi que no resource Resource:Voice, tem essa função: setPlayerChannel(player, channel) Minhas dúvidas são: O resource por padrão, só é possível ouvir outro jogador falando se estiver próximo, se eu setar um canal para um jogador, e ele falar vai sair para quem está próximo e quem está no canal ou somente para quem está no canal? Se eu setar um jogador em um canal como eu removo ele se não existe uma função removePlayerChannel? basta setar o ID do canal como 0 ou false? Quando um jogador está em um canal e fala com outros jogadores que estão no canal é por proximidade ou é global?
  8. Quero criar uma bind e que seja editável pelo usuário tipo o do painel admin: Estou utilizando o bindKey como eu deveria fazer?
  9. Pra anular uma variável basta deixa-la como nil ?
  10. AttatchElement Resultado: attachElementToBone Resultado: Diferença, com o bone_attach a posição do player anexado é atualizada, fica melhor mas sem animação. sem bone_attach a posição do player anexado não é atualizada, fica bem zoado mas com animação. Teria como eu colocar animação no bone_attach? Testei depois de anexa o jogador usar um setPedAnimation mas não funciona. Quando eu digo posição é atualizada, é quando você se movimenta com o jogador anexado.
  11. Muito obrigado pela resposta!! Na verdade ainda estou fazendo, por enquanto está no mesmo resource, mas pretendo reformular ele todo pra que seja feito pra suportar várias missões e tals, vou começar a ver a opção de utilizar trigger, não sabia dessa do removeElementData vou começar a utilizar. Sobre váriaveis eu posso deleta-las também? Por que quando não estou usando eu simplesmente deixo como nil.
  12. Acho que eu sei como posso fazer com triggerServerEvent e triggerClientEvent mas a diferença em questão de desempenho contra o setElementData e getElementData vale o esforço ? kkkk
  13. Eu vi que sempre que possível é bom evitar setElementData, ao menos a parte de sincronizar com o servidor, mas no meu caso estou precisando requisitar uma informação do jogador que está no banco de dados, sei que posso solicitar com o triggerServerEvent, mas pra retornar preciso usar triggerClientEvent?? Ou tem como eu colocar um return no event pra ele retornar o que eu quero? Meu script é tipo uma missão, então quando o jogador aceitar ela, quero salvar isso na conta dele, pra que o dialogo seja diferente caso ele já tenha aceitado a missão e converse com o NPC novamente. Parte que interessa: if distance <= 3 then -- VERIFICAR NO SERVIDOR SE O JOGADOR JÁ ACEITOU A QUEST, SE SIM ENTAO: -- SE NAO: if jonny_clicks == 5 then if not g.accept or not g.cancel then g.accept = dgsCreateButton(sW/2, sH/2, 155, 30, "Claro mano deixa comigo.", false,_,_,_,_,_,_,_,tocolor(0,0,0,0), tocolor(0,100,0,255), tocolor(0,100,0,200)) g.cancel = dgsCreateButton(sW/2 + 170, sH/2, 170, 30, "Ta maluco vou fazer isso não.", false,_,_,_,_,_,_,_,tocolor(0,0,0,0), tocolor(140,0,0,255), tocolor(140,0,0,200)) addEventHandler ( "onDgsMouseClick", g.accept, accept_quest ) addEventHandler ( "onDgsMouseClick", g.cancel, cancel_quest ) end elseif jonny_clicks < #jonny_msgs then jonny_clicks = jonny_clicks + 1 end end Inclusive aceito sugestões para melhorar o script. Script completo:
  14. A skin está mudando? Se sim, o nome do resource está como Scripts_Dxmessages ?
  15. Testei getPedAnimantion mas não consegui não, parece que só aparece animações que eu setei com setPedAnimation.
  16. Quero fazer a vida do jogador descer num periodo de 2 minutos. Pensei logo no timer, mas no caso teria que fazer o timer rodar várias vezes? Ou existe uma maneira melhor? setTimer( function() local current_life = getElementHealth(source) setElementHealth(source, current_life - 1) end, 1000, 60*2, source)
  17. Gaimo

    no limit

    Wow this is going to be amazing, especially for bikes that have a very limited number.
  18. onClientPlayerWasted > Eu consigo algumas informações referentes ao killer Queria pegar informações do jogador morto no momento da sua morte, como eu poderia fazer isso? local posX, posY, posZ = getElementPosition(source) local rotX, rotY, rotZ = getElementRotation(source) local interior = getElementInterior(source) local dimension = getElementDimension(source) for i=1,12 do local weaponid = getPedWeapon(source, i) local ammo = getPedTotalAmmo(source, i) local clip = getPedAmmoInClip(source, i) end
  19. -- table que armazena os veiculos veh_for_sale = {} --{veh, name, id, price, amount} addEventHandler ( "onPlayerVehicleEnter", getRootElement(), function(veh, seat, jacked) if #veh_for_sale > 0 then for i=1, #veh_for_sale do if veh_for_sale[i][1] = veh then --COMO VERIFICO SE ALGUEM TENTOU DA UM setElementFrozen(veh, false)? cancelEvent() end end end end) Estou fazendo um sistema de concessionária, quando o jogador entrar no veículo vai abrir um GUI perguntando se ele quer comprar ou testar o veículo, mas como sei que existem alguns scripts que você pode da unfreeze no veículo, quero evitar que o jogador possa descongelar esse carro e sair com ele. Como eu devo verificar se houve uma tentativa de descongelar para cancelar? Ou simplesmente desativo a opção de unfreeze nesse veículo?
  20. Server-side addEventHandler("onResourceStart", resourceRoot, function() local veh_in_db = executeSQLQuery("SELECT * FROM dealership") if #veh_in_db > 0 then for i=1, #veh_in_db do local x, y, z, rx, ry, rz = unpack(fromJSON(tostring(veh_in_db[i]["position"]))) local veh = createVehicle(veh_in_db[i]["model"], x, y, z, rx, ry, rz) table.insert(all_veh, veh) setElementFrozen(veh, true) setVehicleDamageProof(veh, true) if veh_in_db[i]["amount"] ~= -1 then triggerClientEvent("show_tag", resourceRoot, veh, veh_in_db[i]["name"], veh_in_db[i]["id"], veh_in_db[i]["price"], veh_in_db[i]["amount"]) else triggerClientEvent("show_tag", resourceRoot, veh, veh_in_db[i]["name"], veh_in_db[i]["id"], veh_in_db[i]["price"]) end end end end) Client-side local all_veh = {} function dxDrawTextOnElement(TheElement,text,height,distance,R,G,B,alpha,size,font,...) local x, y, z = getElementPosition(TheElement) local x2, y2, z2 = getCameraMatrix() local distance = distance or 20 local height = height or 1 if (isLineOfSightClear(x, y, z+2, x2, y2, z2, ...)) then local sx, sy = getScreenFromWorldPosition(x, y, z+height) if(sx) and (sy) then local distanceBetweenPoints = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) if(distanceBetweenPoints < distance) then dxDrawText(text, sx+2, sy+2, sx, sy, tocolor(R or 255, G or 255, B or 255, alpha or 255), (size or 1)-(distanceBetweenPoints / distance), font or "arial", "center", "center") end end end end addEvent( "show_tag", true ) addEventHandler( "show_tag", resourceRoot, function(veh, name, id, price, amount) if amount then table.insert(all_veh, {veh, name, tostring(id), tostring(price), tostring(amount)}) tostring(all_veh[1][2]) return end table.insert(all_veh, {veh, name, tostring(id), tostring(price), amount="ilimitada"}) end) addEventHandler("onClientRender", root, function() if #all_veh > 0 then for i=1, #all_veh do dxDrawTextOnElement(all_veh[i][1],"Nome: "..all_veh[i][2].." ID: "..all_veh[i][3].." Valor: R$"..all_veh[i][4].." Quantidade: "..all_veh[i][5].."\nPara comprar digite /comprar ID",1 , 20, 255, 255, 255, 255, 2) -- end end end) Erro: Server triggered clientside event show_tag, but event is not added clientside Mas quando eu utilizo o comando /add e utilizo o mesmo trigger funciona. setTimer(triggerClientEvent, 1000, 1, "show_tag", resourceRoot, veh, veh_in_db["name"], veh_in_db["id"], veh_in_db["price"], veh_in_db["amount"]) Com o timer funcionou ?
  21. Okay, vou testar por tabelas, minha ideia é colocar um texto no veículo com suas informações, Nome, ID, Valor e Quantidade, para isso estou usando o dxDrawTextOnElement mas não está exibindo nada, como eu deveria enviar para todos os clients? Client-side local all_veh = {} function dxDrawTextOnElement(TheElement,text,height,distance,R,G,B,alpha,size,font,...) local x, y, z = getElementPosition(TheElement) local x2, y2, z2 = getCameraMatrix() local distance = distance or 20 local height = height or 1 if (isLineOfSightClear(x, y, z+2, x2, y2, z2, ...)) then local sx, sy = getScreenFromWorldPosition(x, y, z+height) if(sx) and (sy) then local distanceBetweenPoints = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) if(distanceBetweenPoints < distance) then dxDrawText(text, sx+2, sy+2, sx, sy, tocolor(R or 255, G or 255, B or 255, alpha or 255), (size or 1)-(distanceBetweenPoints / distance), font or "arial", "center", "center") end end end end addEvent( "show_tag", true ) addEventHandler( "show_tag", localPlayer, function(name, id, price, amount) if amount then all_veh = {source, name, id, price, amount} end all_veh = {source, name, id, price, amount="ilimitada"} end) addEventHandler("onClientRender", root, function() if #all_veh > 0 then for i=1, #all_veh do dxDrawTextOnElement(all_veh[i][1],"Nome: "..all_veh[i][2].." ID: "..all_veh[i][3].." Valor: "..all_veh[i][4].." Quantidade: "..all_veh[i][5].."\nPara comprar digite /comprar ID",1 , 20, 255, 255, 255, 255, 2) end end end) Server-side triggerClientEvent("show_tag", veh, name, id, price, amount) veh = objeto veiculo Existe algum problema enviar o veh como source? Porque pelo que eu entendi, já estou enviando para todos os clients e o source do evento é o veh
  22. Uma dúvida, eu rodo isso aqui e da um erro, depois eu rodo novamente e funciona por que ? executeSQLQuery("CREATE TABLE IF NOT EXISTS dealership (id INTEGER NOT NULL UNIQUE PRIMARY KEY AUTOINCREMENT, owner INTEGER, model INTEGER, health REAL, position TEXT, color TEXT, headlight TEXT, upgrades TEXT, for_sale TEXT, price INTEGER)") erro no debug: Database query failed: SQL logic error Mas quando do restart no resource ele cria o banco de dados e funciona perfeitamente. É só a primeira vez quando não existe o banco de dados que ele dá esse erro.
  23. Vou utilizar client-side and server-side, por questão de desempenho qual seria melhor? Não sabia que dava pra verificar dessa forma eu utilizava for puta merda vou arrumar aqui.
×
×
  • Create New...