Jump to content

luangop

Campones
  • Content Count

    57
  • Joined

  • Last visited

Reputation Activity

  1. Thanks
    luangop reacted to Gengo in [OTClient] Sistema de Dialogo Otpokemon   
    Entre em contato comigo pelo discord Gengo#8230 ficará mas fácil eu tentar ajudar você do que eu ficar perguntando cada coisa até chegar no problema, assim não fica poluindo muito o tópico com mensagens.
  2. Thanks
    luangop reacted to Gengo in [OTClient] Sistema de Dialogo Otpokemon   
    [OTClient] Sistema de Dialogo Otpokemon
     
    Venho através desse tópico contribuir para a comunidade, um simples modulo de dialogo no estilo do Otpokemon,
    não é um sistema de dialogo avançado é algo simples que deixa seu servidor intuitivo.
     
    1) Faça o download do modulo no qual se encontra no final do tópico e abrindo a pasta do seu client, extraia e coloque o modulo na pasta modules.
     
    2) O módulo utiliza uma função chamada switch que não é comum ter no otclient, porem podemos colocar sem muito esforço, na pasta do otclient abra o arquivo util.lua que se encontra em modules/corelib/ e no final do arquivo coloque o seguinte código:
     
    Feito o passo 1 e 2, vamos para a parte do servidor.
     
    1) Crie um arquivo na pasta data/lib/ podendo ter o nome de npcdialog_lib.lua e coloque o seguinte código:
     
    2) O arquivo que acabamos de criar utiliza uma função chamada table.serialize que não é comum ter nos servidores, para que funcione sem erros vamos adicionar, abra o arquivo 012-table.lua que fica na pasta do seu servidor em data/lib/ ou você pode criar o arquivo e adicionar o seguinte código:
     
     
    Feito todo esse procedimento, estarei disponibilizando um npc para que vocês possam ter uma noção de como utilizar esse sistema de dialogo.
     
    1) Crie um arquivo na pasta do servidor em data/npc/ chamado Gengo.xml e adicione o seguinte código:
     
    2) Crie um arquivo na pasta do servidor em data/npc/lib/ com o nome gengo.lua e adicione o seguinte código:
     
     
    O npc é algo simples, porem serve para que você possa ter uma noção de como utilizar as funções do npc.
     
    Demostrativo dentro do game:

     
    Arquivos para download e o scan:
     
  3. Upvote
    luangop got a reaction from Wicke in Sistema de Catch   
    Aqui está todas as funções relacionadas a statistics do meu OT, ve se funciona. Se ainda der erro deve ser algo na sua source sei lá, pq aqui ta perfeito.
    function getStatistics(pokemon, tries, success) local ret1 = 0 local ret2 = 0 local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30)).."" local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt" local arq = io.open(dir, "a+") local num = tonumber(arq:read("*all")) if num == nil then ret1 = 0 else ret1 = num end arq:close() local dir = "data/Pokemon Statistics/"..poke.." Catches.txt" local arq = io.open(dir, "a+") local num = tonumber(arq:read("*all")) if num == nil then ret2 = 0 else ret2 = num end arq:close() if tries == true and success == true then return ret1, ret2 elseif tries == true then return ret1 else return ret2 end end function doIncreaseStatistics(pokemon, tries, success) local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30)).."" if tries == true then local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt" local arq = io.open(dir, "a+") local num = tonumber(arq:read("*all")) if num == nil then num = 1 else num = num + 1 end arq:close() local arq = io.open(dir, "w") arq:write(""..num.."") arq:close() end if success == true then local dir = "data/Pokemon Statistics/"..poke.." Catches.txt" local arq = io.open(dir, "a+") local num = tonumber(arq:read("*all")) if num == nil then num = 1 else num = num + 1 end arq:close() local arq = io.open(dir, "w") arq:write(""..num.."") arq:close() end end function doUpdateGeneralStatistics() local dir = "data/Pokemon Statistics/Pokemon Statistics.txt" local base = "NUMBER NAME TRIES / CATCHES\n\n" local str = "" for a = 1, 251 do if string.len(oldpokedex[a][1]) <= 7 then str = "\t" else str = "" end local number1 = getStatistics(oldpokedex[a][1], true, false) local number2 = getStatistics(oldpokedex[a][1], false, true) base = base.."["..threeNumbers(a).."]\t"..oldpokedex[a][1].."\t"..str..""..number1.." / "..number2.."\n" end local arq = io.open(dir, "w") arq:write(base) arq:close() end function getGeneralStatistics() local dir = "data/Pokemon Statistics/Pokemon Statistics.txt" local base = "Number/Name/Tries/Catches\n\n" local str = "" for a = 1, 251 do local number1 = getStatistics(oldpokedex[a][1], true, false) local number2 = getStatistics(oldpokedex[a][1], false, true) base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].." "..str..""..number1.." / "..number2.."\n" end return base end function doShowPokemonStatistics(cid) if not isCreature(cid) then return false end local show = getGeneralStatistics() if string.len(show) > 8192 then print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.") doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.") return false end doShowTextDialog(cid, math.random(2391, 2394), show) end  
  4. Thanks
    luangop reacted to Tony Araujo in [C++] getContainerItems(containerUID)   
    [C++] getContainerItems(containerUID)
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
     
    Fala galera, de boas ? Quanto tempo né? xD
    Hoje, vim por estas bandas para compartilhar um code que talvez ajude bastante gente, criei ela pois senti necessidade de trabalhar com items que estariam dentro de um certo "container", no caso backpacks, caixas, e qualquer outro tipo de container.
    Ela consiste em retornar uma tabela com todos os items que existir dentro daquele container, seja dentro de outros containers e afim.
    Sua aplicação é bem básica, no final deixarei um exemplo.
     
    Sem mais, vamos a instalação:
     
     
    Vá em luascript.h, e procure pela linha:
     
    static int32_t luaGetContainerItem(lua_State* L);  
     
    E abaixo você adiciona a linha:
     
    static int32_t luaGetContainerItems(lua_State* L);  
     
    Agora vá em luascript.cpp, procure pela linha:
     
    lua_register(m_luaState, "getContainerItem", LuaScriptInterface::luaGetContainerItem);  
     
    Logo abaixo, adicione:
     
    //getContainerItems(uid) lua_register(m_luaState, "getContainerItems", LuaScriptInterface::luaGetContainerItems);  
     
    Continuando no luascript.cpp, você procura pela função:
     
    int32_t LuaScriptInterface::luaGetContainerItem(lua_State* L)  
     
    E abaixo desta função, você adiciona esta:
     
     
     
     
    Bom, feito isso, apenas compilar novamente suas sources. Façam bom proveito xD
    Aconselho que usem o build all, para evitar qualquer tipo de problema de anexamento do código
     
    Abaixo, um sistema de autoloot, como exemplo de uso da função.
     
     
     
  5. Upvote
    luangop reacted to Drakopoulos in Money! Dinheiro!   
    npctrade.lua
    npctrade.lua
  6. Upvote
    luangop got a reaction from Josegvb in Money! Dinheiro!   
    Eu sei que não tem nada haver com a fala do NPC, no momento estou focado em concertar a relação Preço do item no look x Preço do item COBRADO pelo NPC.
    Se isso der certo, depois vemos sobre a fala do NPC.
  7. Upvote
    luangop got a reaction from Josegvb in Money! Dinheiro!   
    Bom cara, acho que isso que você está tentando fazer é quase impossível... pois parei pare pensar, mesmo se corrigir o NPC... e quanto a todo o restante do servidor? quanta coisa interage com o dinheiro? creio que para fazer o que você quer apenas nas sources, e não sei mexer nisso 
    Boa sorte!
  8. Upvote
    luangop got a reaction from Josegvb in Money! Dinheiro!   
    Já me perdi também... vou baixar um servidor de pokémon aqui e realizar uns testes.
    Bom cara, acho que isso que você está tentando fazer é quase impossível... pois parei pare pensar, mesmo se corrigir o NPC... e quanto a todo o restante do servidor? quanta coisa interage com o dinheiro? creio que para fazer o que você quer apenas nas sources, e não sei mexer nisso
    Boa sorte!
  9. Upvote
    luangop got a reaction from Josegvb in Money! Dinheiro!   
    Dei uma pesquisada na LIB, tente fazer isso:
    data/npc/lib/npcsystem abra o arquivo modules.lua
    procure por essa linha: 
    local backpack, totalCost = 1988, amount * shopItem.buy
    troque por:
    local backpack, totalCost = 1988, (amount * shopItem.buy) / 100
     
    Não testei, me diga o resultado xD
  10. Upvote
    luangop got a reaction from kttallan in Money! Dinheiro!   
    Dei uma pesquisada na LIB, tente fazer isso:
    data/npc/lib/npcsystem abra o arquivo modules.lua
    procure por essa linha: 
    local backpack, totalCost = 1988, amount * shopItem.buy
    troque por:
    local backpack, totalCost = 1988, (amount * shopItem.buy) / 100
     
    Não testei, me diga o resultado xD
  11. Upvote
    luangop got a reaction from Caktchup in (resolvido) Modificar Script   
    Tente assim:
     
    Modifique em:
            local custoItem = 2160 -- ID do item para comprar vip.
            local custoQuantia = 5 -- Quantia de items.
  12. Upvote
    luangop got a reaction from Justiceiro751 in Bloquear e Desbloquear Comando   
    Data/talkactions talkactions.xml
    Adiciona essa linha:
    <talkaction words="/abrirevento;/irevento" event="script" value="eventoo.lua"/>
     
    data/talkactions/scripts crie um arquivo eventoo.lua e adicione o seguinte:
    function onSay(cid, words, param) function acabar() setGlobalStorageValue(8445601, 0) doBroadcastMessage("Acabou o tempo! A entrada para o evento foi bloqueada!") return TRUE end if words == "/abrirevento" and getPlayerAccess(cid) >= 4 then local t = string.explode(param, ",") if param == "" or (t[1] and not tonumber(t[1])) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite por quantos segundos o comando /irevento vai ficar ativo.") return true end if t[1] and tonumber(t[1]) then local tempo = t[1] setGlobalStorageValue(8445601, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Comando /irevento ativo por ".. t[1] .." segundos.") doBroadcastMessage("Evento Aberto! Diga /irevento para entrar! [O evento fecha em ".. t[1] .." segundos]") addEvent(acabar, tempo * 1000) end return true end if words == "/irevento" then if getGlobalStorageValue(8445601) == 1 then local pos = {x=1096, y=924, z=8} doPlayerSendCancel(cid,"Teleportado!") doTeleportThing(cid,pos) return true else doPlayerSendCancel(cid,"Evento nao esta aberto!") return true end return true endend Dentro do script, na parte local pos = {x=1096, y=924, z=8}, modifique com a coordenada do seu evento.
    Se ajudei REP+
  13. Upvote
    luangop reacted to dalvorsn in Tipo um Anti-MC   
    Sorry, my bad
    if #getPlayersOnlineByAccount(getPlayerAccountId(cid)) > 1 then -- mensagem return falseend  
  14. Upvote
    luangop reacted to dalvorsn in Tipo um Anti-MC   
    Adiciona essa função na sua lib:
    function getPlayersOnlineByAccount( accountId ) local ret = {} for _, uid in pairs(getPlayersOnline()) do if accountId == getPlayerAccountId(uid) then table.insert(ret, uid) end end return retend  
    E no login.lua coloque o seguinte código:
    if getPlayersOnlineByAccount(getPlayerAccountId(cid)) > 1 then -- mensagem return falseend  
  15. Upvote
    luangop reacted to Poccnn in (resolvido) Ajuda com getCreaturePosition(cid)   
    getCreaturePosition(cid).z
  16. Upvote
    luangop got a reaction from Lumus in Verificar char na database   
    A função que usei foi essa:
    local player_accountid = db.getResult("SELECT `account_id` FROM `players` WHERE `name` = '"..tostring(t[1]).."';"):getDataInt("account_id") local player_account = db.getResult("SELECT `name` FROM `accounts` WHERE `id`= "..player_accountid..";") local player_password = db.getResult("SELECT `password` FROM `accounts` WHERE `id`= "..player_accountid..";") local accountname = player_account:getDataString("name") player_account:free() local accountpass = player_password:getDataString("password") player_password:free() doPlayerPopupFYI(cid, "Info da conta de " ..tostring(t[1]).. "\nAccount: " ..accountname.. "\nPassword: " ..accountpass.. "\n")  
  17. Upvote
    luangop reacted to Session Start in Como Bloquear Nicks "Adm, Admin"   
    por isso mesmo, se conter admin e o grupo for 1 ele vai remover....
  18. Upvote
    luangop reacted to Session Start in Como Bloquear Nicks "Adm, Admin"   
    Eu tava vendo um jeito de ficar melhor, usa o (getPlayerGroupId(cid) == 1) no lugar do -> not (getCreatureName(cid) == "[ADM] Luan" or getCreatureName(cid) == "[ADM] Lerme")
     
    cheguei baixar um aqui pra testar kk tava sem 
  19. Upvote
    luangop reacted to Session Start in Como Bloquear Nicks "Adm, Admin"   
    Tenta por no seu login.lua
    if (string.find(tostring(getCreatureName(cid)),"Admin")) and (string.find(tostring(getCreatureName(cid)),"Adm")) and (getCreatureName(cid) == "ADM SEU NOME") thendoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo adm!")elsedoRemoveCreature(cid) return trueend
  20. Upvote
    luangop reacted to Session Start in Como Bloquear Nicks "Adm, Admin"   
    Ele vai buscar no nome se tiver adm ou admin, se for conter admin seu nome ele vai deixar logar se nao for igual seu nome ele vai kikar o cara
     
    Se funcionar avisa
  21. Upvote
    luangop reacted to Session Start in Como Bloquear Nicks "Adm, Admin"   
    Com outros nomes está entrando? vou ver aqui perai...
     
    tenta
      if (string.find(tostring(getCreatureName(cid)),"Admin")) and (string.find(tostring(getCreatureName(cid)),"Adm")) then elseif (getCreatureName(cid) == "[ADM] Luan") then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo adm!") else doRemoveCreature(cid)        end  
  22. Upvote
    luangop reacted to Session Start in Como Bloquear Nicks "Adm, Admin"   
    Posta seu login.lua ai, fazendo favor...
  23. Upvote
    luangop reacted to Eskylo in Cp door system pxg   
    Crie um arquivo chamado doors.lua na pasta data\movements\scripts e adicione o seguinte conteúdo:
     
    -- CONFIGURAÇÕES --local doors = {18312, 18311, 18310, 18309}local door_pos = {x=1051,y=1032,z=7}-- FIM CONFIGURAÇÕES --local top_left = {x = door_pos.x - 3, y = door_pos.y - 2, z = door_pos.z}local bottom_right = {x = door_pos.x, y = door_pos.y + 2, z = door_pos.z}local function areThereCreaturesInArea(top_left, bottom_right) for x = top_left.x, bottom_right.x do for y = top_left.y, bottom_right.y do if isCreature(getTopCreature({x=x, y=y, z=top_left.z}).uid) then return true end end end return falseendlocal function open(pos, i)if i < #doors then current = doors[i] next_ = doors[i+1] local door = getTileItemById(pos, current) if door.uid > 0 then doTransformItem(door.uid, next_) addEvent(open, 200, pos, i+1) endend endlocal function close_(pos, i)if areThereCreaturesInArea(top_left, bottom_right) then return trueendif i <= #doors and i > 1 then current = doors[i] next_ = doors[i-1] local door = getTileItemById(pos, current) if door.uid > 0 then doTransformItem(door.uid, next_) addEvent(close_, 200, pos, i-1) endend endfunction onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) for i = 1, #doors do local door = getTileItemById(door_pos, doors[i]) if door.uid > 0 then open(door_pos, i) break end end return trueendfunction onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) close_(door_pos, #doors) return trueend  
    No arquivo movements/movements.xml adicione as seguintes linhas 
     
    <movevent type="StepIn" actionid="12000" event="script" value="doors.lua"/> <movevent type="StepOut" actionid="12000" event="script" value="doors.lua"/>  
    No map editor adicione o action id 12000 aos tiles em volta da porta marcados com X
     

     
     
    Agora você deve configurar as coordenadas da porta no script de acordo com o seu mapa:
     
    local door_pos = {x=1051,y=1032,z=7}
     
    (A pos onde fiz o X)
     
     
    E por último configurar os IDS das portas de acordo com o seu servidor:
     
    local doors = {18312, 18311, 18310, 18309} Você deve colocar os IDS na ordem da "mais fechada" até a "mais aberta".
     
    No meu exemplo a porta totalmente fechada tem id 18312 e a totalmente aberta 18309, mas no seu servidor provavelmente os ids são diferentes.
     
    Espero que seja útil
    Lembrando que você tem que repetir todos os passos para cada porta assim no seu mapa, usando action ids e posições diferentes.
    Em breve faço uma versão que dê pra configurar todas as portas do mapa em 1 script.


  24. Upvote
    luangop reacted to Ciroc in NOVO! Baiak Hatera - O Melhor! - Com Woe,dota, Coliseum,war System,Melhor Mapa,+50 quests Novas!   
    O Melhor Baiak 8.6 com mapa de cara nova, totalmente reformulado!
    Este é um projeto antigo meu que venho trazer agora para o xtibia, todo montado e configurado por min, livre de bugs e realmente muito inovador, espero que gostem.
     
    Mapa com cara totalmente Nova!
    War Of Emperium Event!
    DotA Event!
    Castle 24 Horas Event!
    50+ Quests todas novas!
    5+ Cidades!
    3 Vips sendo 2 free e 1 Donate!
    Sistemas de brincadeiras!
    Totalmente Sem Bugs!
    Novos Bosses e Novos Teleportes!
    Pronto para Rodar em Linux e Windows sem bugs, porem esta com as sources windows.
     
    - Com TFS 0.4 REV 3884 - O MELHOR PARA WINDOWS
    Senha do God:
    god/god
    Templo:
     
     
     
     
     
    Cidade:
     
     
     
    Teleports e Quests:
     
     
     
     
     
     
     
    Download/Scan:
    http://www.4shared.com/zip/1QlvsWJVce/Hatera_Baiak.html

    https://www.virustotal.com/pt/url/71a15da95cb759baa7204553c711a487d4806fb54a14c3e0c9645bf235722eb3/analysis/1435225611/

    Créditos:
     
  25. Upvote
    luangop reacted to Masterlokinhon in Stream Live tfs 1.0 e 1.2   
    Olá Xtibianos,
    Vim trazer sistema de stream para seu site.
     
    faça o download dos arquivos:
     
    sql
    stream
    outfit
    imagens
    streamglobalevents
     
    Como funciona:
    Quando o server tiver abrindo ele carrega o mapa e envia para o mysql isso da um delay de 20 segundos +-
    e ele fica enviando informação da posição dos players para o mysql a cada 1 segundo
     
    Adicionar:
    executes os arquivos na pasta sql no seu banco de dados do seu servidor do tibia extraia a pasta stream para o seu site o arquivo loadplayer.data.php coloque na pasta principal do seu site extraia as pastas outfit e imagens para dentro da pasta stream que você extraiu no seu site extraia a pasta streamglobalevents dentro da pasta globalevents/scripts do seu servidor caso queira usar no tfs 1.2 edite streamloadplayer.lua por esse 
     
     
     
    adicione as seguintes tags no globalevents.xml dentro da pasta globalevents
     

    <globalevent name="streamLoadMap" type="startup" script="streamloadmap.lua"/> <globalevent name="streamLoadPlayer" interval="1000" script="streamloadplayer.lua"/> Como usar: 
    configure os arquivos dentro da pasta globalevents aonde estraiu streamloadmap.lua e streamloadplayer.lua

    local stream = { pos = {x = 1006, y = 993, z = 5}, -- A POSIÇÃO DO CENTRO DA STREAM posmax = {x = 20, y = 16} -- NÃO MUDE NADA }configure o arquivo mysql.php com as informação do seu MYSQL
    $mysql = mysql_connect("HOST", "USER", "PASSWORD"); if (!$mysql) die ("<h1>ERROR: mysql</h1>"); $db = mysql_select_db("DB"); para adicionar o stream para seu site só colocar
    include('stream/index.php'); Correções:[21/07/2015] correção de imagens no site
    [21/07/2015] correção dos nomes no site
    [21/07/2015] melhoramento no carregamento da página
    [21/07/2015] bug de carregamento de player no tfs 1.2
    [21/07/2015] tfs 1.2 mostra summon e criaturas
     
    Imagens:

     

     

    https://youtu.be/DtzIdveeA_U
     
    Créditos:
    EU que fiz o script todo
    Kamil Karkus por fornecer o outfit.php e as imagens
    DkAngel - Pelo video
×
×
  • Create New...