-
Posts
3,875 -
Joined
-
Days Won
67
Everything posted by DNL291
-
database Receber valor existente no Banco de Dados
DNL291 replied to Lord Henry's topic in Programação em Lua
Sim, eu percebi isso, mas ambos devem funcionar da mesma forma. Fiz um teste aqui e retornou o valor, indexando a tabela da forma que eu disse: run executeSQLQuery("CREATE TABLE IF NOT EXISTS teste (valor1 TEXT, string TEXT, numero INT)") run executeSQLQuery("INSERT INTO teste(valor1,string,numero) VALUES(?,?,?)", "Danilo", "dono", 100 ) run r=executeSQLQuery("SELECT valor1 FROM teste WHERE numero=?", 100 ) print( r[1]['valor1'] ) Usei esse código. Remove as virgulas e tenta fazer da mesma forma, seguindo a maneira que tá no código, deve funcionar. -
database Receber valor existente no Banco de Dados
DNL291 replied to Lord Henry's topic in Programação em Lua
Então acho que a função executeSQLQuery e funções DB tem suas diferenças, porque indexei o valor da tabela usando dbQuery. Achei que funcionasse no seu caso também, depois que li que retorna uma tabela.... Mas acredito que você possa obter o dono indexando essa tabela. Edit: é questão de fazer teste pra saber -
database Receber valor existente no Banco de Dados
DNL291 replied to Lord Henry's topic in Programação em Lua
Não sei te explicar o porque, talvez retorne o valor numa tabela e pra acessar ele você indexa o primeiro valor da tabela. Só suposição minha... não sou muito familiar com SQL só usei 2 vezes pra fazer scripts e obtive o valor dessa forma que mencionei. Te aconselho a pesquisar cada dúvida que surgir, vai te ajudar a se aprofundar mais nessa linguagem. -
database Receber valor existente no Banco de Dados
DNL291 replied to Lord Henry's topic in Programação em Lua
Acho que se você usasse isto também funcionava: local accOwner = executeSQLQuery("SELECT 'owner' FROM 'housevip_data' WHERE 'ID'=?", 2)[1]['owner'] -
Elements-data are synchronized by default.
-
Verifique se o timer já está ativo, na linha 9. Fora isso, também tem um loop em todos veículo - a velocidade verificada será dos veículos do server e não do veículo do jogador local (se é isso que você quer fazer).
-
Quantas vezes sai no chat a msg da linha 12? Deve ser porque o código executa setTimer várias vezes durante o onClientRender.
-
Sometimes people asking for help with scripts don't have much knowledge about Lua, so it's natural for them to use wrong methods. If you're helping them, and you know the right way to do, then why are you going to do what they want? That will make it harder for yourself to help people. Ontopic: Why he will want it without loop if it will be the same thing as with loop - will only change in code, but will do the same thing when Lua executes it. So obviously the question is about performance as well.
-
Will not that method in pratice trigger for each player? Since client unlike server side executes for a specific player. If using a table of player elements it works, can you explain me how the MTA internally will execute this function using a table on 'sendTo' argument? @Avagard: If your code already works, you don't have to worry about it, you will waste your time. Otherwise, make sure your code doesn't use too much bandwidth, in this case you can explain what you want to achieve and we can give you alternatives.
-
It will always trigger depending on the number of team members, you can't simply trigger 1 time for many players because the client-side runs individually.
-
Then just use the event onPlayerWasted and check the team of player who died, or depending on how it should be use this function https://wiki.multitheftauto.com/wiki/GetAlivePlayersInTeam.
-
INSERT INTO statement is for dbExec as well. By the way, replace your function 'mysqlQuery' with this function: function mysqlQuery( ... ) if sourceResource == getResourceFromName( "runcode" ) then return false end checkConnection() local qh = dbPoll( dbQuery( db, ... ), - 1 ) writeToLog(getResourceName(sourceResource), table.concat( { ... }, ", " )) return qh end
-
Tente isto (não testei): function closeDoor(player,colshape) local data = DoorsTable[colshape] if data == nil then return end if getElementData(data["door"],"object.moved") == "moved" then if moveObject(data["door"],2000,data.pos.x,data.pos.y,data.pos.z,0,0,-90) then outputChatBox("Porta fechada com sucesso") end setElementRotation(data["door"],data.rot.x,data.rot.y,data.rot.z - -90) -- checar isso -- ^ A rotação já é definida em moveObject, e menos com menos vai ser uma adição na rotZ setElementData(data["door"],"object.moved","notmoved") end end function toggleDoorOpen(player, key, keyState, colshape) if not isElementWithinColShape( player, colshape ) then return end; --[[ A bind só vai funcionar se tiver dentro do colshape, se quiser desativar só remover essa linha ]] local data = DoorsTable[colshape] if data == nil then return end local rx,ry,rz=getElementRotation(data["door"]) -- se não for usar isso pode remover local doorState = getElementData(data["door"], "object.moved") if doorState and doorState == "moved" and (getElementData(player,"gang") == data["camp"] or data.camp == "false" or not data["camp"]) then closeDoor( player, colshape ) outputChatBox("fechando") return end if doorState and doorState == "notmoved" and (getElementData(player,"gang") == data["camp"] or data.camp == "false" or not data["camp"]) then moveObject(data["door"],2000,data.pos.x,data.pos.y,data.pos.z,0,0,90) setElementData(data["door"],"object.moved","moved") outputChatBox("abrindo porta") end end function bind(hitPlayer, matchingDimension) if getElementType(hitPlayer) == "player" then if type(getElementData( DoorsTable[source]["door"], "object.moved" )) ~= "string" then setElementData( DoorsTable[source]["door"], "object.moved", "notmoved" ) end if isKeyBound( hitPlayer, ",", "down", toggleDoorOpen ) ~= true then bindKey(hitPlayer, ",", "down", toggleDoorOpen, source) end outputChatBox("onColShapeHit add bind") end end addEventHandler("onColShapeHit", resourceRoot, bind) Preste atenção nos comentários que deixei no código.
-
Try this: exports.sql:mysqlQuery ( "INSERT INTO `justTABLE` ( `questions` ) VALUES ( ? );", questions ) EDIT: Remember, you should use dbExec and not dbQuery.
-
Representa todos os elementos da árvore, digamos que é o pai de todos os elementos presente no servidor. Por exemplo, usando a função getElementChildren(root) retorna uma tabela com todos os elementos-filhos (esses são todos elementos, por exemplo). E a estrutura é nessa ordem: root > resources > elementos_do_resource, nunca testei getElementChildren mas deve ser assim. Facilita na hora de chamar uma função na qual deve ser executada pra todos os elementos que convém para a função. Também, caso não saiba, root é a variável predefinida pra getRootElement, usando root no código é o mesmo que chamar essa função. getResourceRootElement funciona da mesma forma, mas engloba apenas os elementos presente em tal resource, e sua variável predefinida é resourceRoot.
-
Só usar esta função: setAccountData
-
Tente: function openDoor(player, key, keyState, colshape) local data = DoorsTable[colshape] if data == nil then return end local rx,ry,rz=getElementRotation(data["door"]) if getElementData(player,"gang") == data["camp"] or data.camp == "false" or not data["camp"] then moveObject(data["door"],2000,data.pos.x,data.pos.y,data.pos.z,0,0,90) setTimer(closeDoor,5000,1,colshape) end end function bind(hitPlayer, matchingDimension) if getElementType(hitPlayer) == "player" then if isKeyBound( hitPlayer, ",", "down", openDoor ) ~= true then bindKey(hitPlayer, ",", "down", openDoor, source) outputChatBox("onColShapeHit add bind") end end end addEventHandler("onColShapeHit", resourceRoot, bind)
-
Tinha esquecido, obrigado pelo aviso
-
Troque source por hitElement (linha 3 e 8).
-
formulario [OFF] Você acha que sabe tudo sobre MTA? Descubra agora!
DNL291 replied to Lord Henry's topic in Portuguese / Português
Não sei se estou indo contra as regras do formulário por mostrar essa imagem, mas está dando como incorreta a minha resposta, certo? Não sei se foi essa a questão que você corrigiu manualmente. Tem duas alternativas corretas (ou eu to meio cego ), então isso é algum erro? Se eu soubesse disso sobre as perguntas de caixas de seleção, teria colocado mais outras, na hora pensei que devia marca pelo menos uma correta. Mas realmente são questões que até quem sabe pode errar (tipo na das dimensões que eu errei), algumas envolvem teste pra saber, se fizer com pressa pode errar quase todas. -
Parece que já conseguiu isso neste tópico: Sendo assim, estou bloqueando este tópico. Só me enviar MP caso queira reabri-lo.
-
source está errado, não vai retornar nada, esses são os parâmetros para a função: function functionName ( player keyPresser, string key, string keyState, [ var arguments, ... ] ) É só definir o elemento-jogador no parâmetro.
-
Cheguei a pensar na função https://wiki.multitheftauto.com/wiki/DxDrawLine3D pra simular a corda de uma forma fácil, mas parece que fica longe de parecer uma corda, e a parte da corda imagino que vai tem que ser separada do código que faz o veículo seguir, ou seja, no lado client. Talvez seja possível só por um meio mais complexo, substituindo uma textura do GTA e atualizando para ele ficar sempre na posição do guinchamento.