Jump to content

(Resolvido)Como alterar fonte da DLL Lua51 ?


Go to solution Solved by Bruno Minervino,

Recommended Posts

  • Solution

Amigo para ler a source de uma dll você precisa decompilar. Não há como lê-la sua source sem este procedimento, o máximo que você consegue é ler suas funções e métodos, na qual esta é a finalidade de utilizar uma dll.

Atenciosamente,

Bruno Minervino

 

Tibia Clients - Downloads Windows & Linux

Link to post
Share on other sites

Não precisa ler a dll, você tem que abrir a source pra ver em qual arquivo ta o erro...

Pelo jeito deve ser em algum script/função.

 

Tenta clicar em "Load", não lembro como abre esses log.

Man, a dúvida dele é como ele faz para ler a source de uma dll, o que foi dito a ele é que para tal procedimento tem a necessidade de decompilar.

Se ele deseja alterar a programação da mesma, não tem como fazer isso apenas com a dll física.

Atenciosamente,

Bruno Minervino

 

Tibia Clients - Downloads Windows & Linux

Link to post
Share on other sites

Esse debug é pra ver porque o otserv caiu, e a dll do Lua é só um indício de que foi algum script que causou o crash.

O certo é aparecer algo tipo isso:

 

Vou explicar a imagem que deixei no inicio do tópico:

Executei o server direto do Visual Studio, coloquei alguns break points onde queria analisar o código e em determinado momento o código chamou uma função que ('aparentemente') esta dentro desta DLL então a mensagem (que está na imagem) foi exibida no VS pois ele não conseguiu localizar o código para continuar o debug.

Isso não foi um crash, ao apertar Continue/F5 o VS e o cliente/jogo funciona normalmente.

 

--

 

Já consegui começar a fazer as alterações de onde precisava.

Creio que já resolvi essa situação.

 

Vlw Bruno e fireelement por me ajudarem! \o

Edited by Wesllen Delfino (see edit history)
Link to post
Share on other sites

Vou explicar a imagem que deixei no inicio do tópico:

Executei o server direto do Visual Studio, coloquei alguns break points onde queria analisar o código e em determinado momento o código chamou uma função que ('aparentemente') esta dentro desta DLL então a mensagem (que está na imagem) foi exibida no VS pois ele não conseguiu localizar o código para continuar o debug.

Isso não foi um crash, ao apertar Continue/F5 o VS e o cliente/jogo funciona normalmente.

 

--

 

Já consegui começar a fazer as alterações de onde precisava.

Creio que já resolvi essa situação.

 

Vlw Bruno e fireelement por me ajudarem! \o

Achei que fosse um crash :facepalm:

Entendi agora haha, qualquer dúvida posta ai que a gente tenta ajudar.

Link to post
Share on other sites

Entendo Bruno, mas eu não tentei descompilar a DLL por que na maioria das vezes é necessário realizar vários ajustes.

Acredito que a DLL também seja open source por isso seria mais pratico se tivesse o source, mas vou tentar descompilar e ver no que da.

Sim, alguma delas são, eu também nem prestei muito atenção em qual você queria, estava na maior correria no trampo.

A lua51 eu utilizo no meu tutorial de compilação... :P

Abraço!

Atenciosamente,

Bruno Minervino

 

Tibia Clients - Downloads Windows & Linux

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By lauasss
      Como transforma o New Client em Old Client ???
    • By Fakeownerz
      Olá!
      Primeiramente peço desculpas pelo que vão ler, pois não entendo muito do assunto (por isso vim fazer o tópico '-')
       
      Vamos lá.
       
      Ao tentar abrir o servidor , me deparo com o seguinte erro:
       
       
      Meu config.lua está assim:
       
       
      Gostaria de saber como arrumar (só para abrir em meu pc , pra dar uma olhada pra arrumar algums bugs...) ou até mesmo só passar pra sqlite (que eu acho bem mais simples e tenho o mínimo de noção... Agradeço a atenção e peço desculpas novamente pela ignorância sobre o assunto caso seja algo extremamente simples.
    • By Beyond Sky
      Estou voltando ao mundo do Open Tibia (na área de desenvolvimento) e estou testando meu potencial em scriptings quando me fiz ausente tinha um conhecimento bom já não tão grande mas quebrava um galho agora voltei e percebi que regredi bastante. Enfim, eu estava pegando uns scripts pra dar uma estudada e me deparei com uma coisa louca e gostaria muito que vocês experientes me ajudassem com isso.
       
      Peguei esse script da annihilator lever e está muito louco bem diferente do antigo postarei os dois e gostaria de saber qual a diferença entre os dois e se pudessem me explicar as vantagens e as condições usada no novo pq me embananei todo olhando esse script.
       
      Script Novo (que não entendi nada, o que aconteceu com a famosa function onUse(cid, item, frompos, item2, topos)) :
       
      local players_area = { {x = 33225, y = 31671, z = 13}, {x = 33222, y = 31671, z = 13} } local new_player_pos = { {x = 33222, y = 31659, z = 13}, {x = 33221, y = 31659, z = 13}, {x = 33220, y = 31659, z = 13}, {x = 33219, y = 31659, z = 13} } local demonPos = { {x = 33219, y = 31657, z = 13}, {x = 33221, y = 31657, z = 13}, {x = 33223, y = 31659, z = 13}, {x = 33224, y = 31659, z = 13}, {x = 33220, y = 31661, z = 13}, {x = 33222, y = 31661, z = 13} } function getPlayerCountInArea(toPos, fromPos) local count = 0 local cid = {} for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do for z = toPos.z, toPos.z do local creature = getTopCreature({x = x, y = y, z = z, stackpos = 255}).uid if(creature > 0) then if(isPlayer(creature)) then table.insert(cid, creature) count = count + 1 if(getPlayerLevel(creature) < 100) then return "All players must be above level 100." end elseif(isMonster(creature)) then return "Players are allowed only." end end end end end if(count < 4) then return "You need 4 players." else for i = 1,4 do Player(cid[5-i]):teleportTo(new_player_pos[i]) Player(cid[5-i]):getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end return true end function SummonDemon(Pos) local count = 0 local cid = {} for x = Pos[1].x, Pos[4].x do for y = Pos[1].y, Pos[6].y do for z = Pos[1].z, Pos[6].z do local creature = getTopCreature({x = x, y = y, z = z, stackpos = 255}).uid if(creature > 0) then if(isPlayer(creature)) then return "A team is already inside the quest room." elseif(isMonster(creature)) then table.insert(cid, creature) count = count + 1 end end end end end for i = 1, #cid do doRemoveCreature(cid[i]) end for i = 1, #Pos do doSummonCreature("Demon", Pos[i]) end return getPlayerCountInArea(players_area[1], players_area[2]) end function onUse(cid, item) if(item.itemid == 1946) then local condition = SummonDemon(demonPos) if(condition ~= true) then doPlayerSendCancel(cid, condition) end else Item(item.uid):transform(1946) end return true end  
      Script Antigo (do qual tenho total conhecimento sobre o que acontece ou não e por que)
      -- Alavanca Annihilator Quest -- by Nottinghster   function onUse(cid, item, frompos, item2, topos)         if item.uid == 7000 and item.itemid == 1945 then                 player1pos = {x=1109, y=1204, z=11, stackpos=253}                 player1 = getThingfromPos(player1pos)                   player2pos = {x=1110, y=1204, z=11, stackpos=253}                 player2 = getThingfromPos(player2pos)                   player3pos = {x=1111, y=1204, z=11, stackpos=253}                 player3 = getThingfromPos(player3pos)                   player4pos = {x=1112, y=1204, z=11, stackpos=253}                 player4 = getThingfromPos(player4pos)                     if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then                         queststatus1 = getPlayerStorageValue(player1.uid,7000)                         queststatus2 = getPlayerStorageValue(player2.uid,7000)                         queststatus3 = getPlayerStorageValue(player3.uid,7000)                         queststatus4 = getPlayerStorageValue(player4.uid,7000)                           if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then                                 nplayer1pos = {x=1128, y=1181, z=11}                                 nplayer2pos = {x=1129, y=1181, z=11}                                 nplayer3pos = {x=1130, y=1181, z=11}                                 nplayer4pos = {x=1131, y=1181, z=11}                                   doSendMagicEffect(player1pos,2)                                 doSendMagicEffect(player2pos,2)                                 doSendMagicEffect(player3pos,2)                                 doSendMagicEffect(player4pos,2)                                   doTeleportThing(player1.uid,nplayer1pos)                                 doTeleportThing(player2.uid,nplayer2pos)                                 doTeleportThing(player3.uid,nplayer3pos)                                 doTeleportThing(player4.uid,nplayer4pos)                                   doSendMagicEffect(nplayer1pos,10)                                 doSendMagicEffect(nplayer2pos,10)                                 doSendMagicEffect(nplayer3pos,10)                                 doSendMagicEffect(nplayer4pos,10)                                   doTransformItem(item.uid,item.itemid+1)                         else                                 doPlayerSendCancel(cid,"Alguém em seu time já fez esta quest.")                         end                 else                         doPlayerSendCancel(cid,"Você precisa de um grupo de 4 pessoas para esta quest.")                 end           elseif item.uid == 7000 and item.itemid == 1946 then                 if getPlayerAccess(cid) > 0 then                         doTransformItem(item.uid,item.itemid-1)                 else                         doPlayerSendCancel(cid,"Desculpe, não é possível.")                 end         else                 return FALSE         end           return TRUE end
    • By cesarfilho55
      no meu ot o attack e o msm q quando eu ataco 1 bixo 
      ex
      eu ranko 10k no bixo ,ai eu tb ranko 10k no player quando eu ataco ele
      se alguem souber como arrumar .
    • By Viniciusysland
      Então, não sei se estou na área correta, caso não estiver, algum moderador por favor verifique e troque de local!
       
      É o seguinte, já criei meu site do GESIOR pelo XAMP, porém, gostaria de saber como colocar um endereço ou um link no site para que as pessoas possam acessá-lo, por exemplo: nomedoot.com, nomedoot.com.br ou até nomedoot.servegame.com! E caso dê para colocar com o domínio .com ou .com.br gratuitamente, como fazer? Sim, vou hosteá-lo no meu computador! Já procurei em vários lugares e não achei nada parecido! Aliás, no próprio lugar que eu encontrei como fazer um site para OT Server não explicava nada a respeito disto!
       
      Agradeço desde já!
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo