Ir para conteúdo
Banner com Efeitos

keilost1

Membro
  • Registro em

  • Última visita

Tudo que keilost1 postou

  1. keilost1 postou uma resposta no tópico em Suporte Tibia OTServer
    Bom, então o problema vai estar na suas sources, sugiro que encontre um programador C++ ou troque suas sources com uma compativel ao seu server.
  2. keilost1 postou uma resposta no tópico em Suporte Tibia OTServer
    Isso não é um bug, é a formula de attack speed que funciona assim mesmo.
  3. Sim, deve jogar o seu servidor com suas sources O comando apt-get serve para reler a lista de pacotes disponiveis para assim baixar as bibliotecas necessárias para compilar a distro. Não é obrigatório utilizar o site para que o servidor funcione. O seu config.lua deve conter as informações de acesso ao banco de dados sqlType = "mysql" -- deve ser mysql para a distro saber qual é o tipo de banco de dados sqlHost = "127.0.0.1" -- pode ser localhost ou 127.0.0.1 que é o IP local da máquina sqlPort = 3306 -- não troque ao menos que você trocou a porta do MYSQL sqlUser = "root" -- usuario do banco de dados MYSQL sqlPass = "123" -- senha do banco de dados MYSQL sqlDatabase = "otserv" -- nome do banco de dados MYSQL Eu irei passar um tutorial que acho util para você para instalar o phpMyAdmin + Apache + Mysql + PHP apt-get install apache2 apt-get install mysql-server-5.0 (nesta instalação será solicitado uma senha para o administrador do MySQL) apt-get install php5 apt-get install php5-mysql apt-get install phpmyadmin (aqui você definirá uma senha para o phpmyadmin) Após executar esses comandos com sucesso (lembrando que deve dar apt-get update e apt-get upgrade antes) Execute esse comando: cp -r /usr/share/phpmyadmin/ /var/www/phpmyadmin Pronto, está configurando seu banco de dados e o acesso a ele que vai ser feito pelo: http://ipdamaquina/phpmyadmin
  4. Espero que sim, pois há ação do char... Qualquer coisa só mandar privado, abraço!
  5. Olá, desculpe pela demora, só fui me lembrar do Tibia King hoje rsrs... Eu não testei, vê se deu certo: function mudarVis(uid) look = getCreatureLookDirection(uid) look = look < 3 and look + 1 or 0 doCreatureSetLookDirection(uid, look) addEvent(mudarVis, 2000, uid) end local events1 = {} local trainerst = 456488 function onStepIn(cid) events1[getPlayerGUID(cid)] = addEvent(mudarVis, 1000, cid) doPlayerSendTextMessage(cid, 27, "Bem-vindo a sua sala de treinamento, você será movimentado automaticamente para que continue treinando!") setPlayerStorageValue(cid,trainerst,1) return true end function onStepOut(cid) stopEvent(events1[getPlayerGUID(cid)]) setPlayerStorageValue(cid,trainerst,-1) return true end Isso você coloca em movements/scripts e as tags abaixo em movements.xml <!--Trainer--> <movevent type="StepIn" actionid="13549" event="script" value="train.lua" /> <movevent type="StepOut" actionid="13549" event="script" value="train.lua" /> Em creaturescripts/idle.lua vai ter essa linha (se não for exatamente igual me manda): if(getTileInfo(getCreaturePosition(cid)).noLogout or getCreatureNoMove(cid) or getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_ALLOWIDLE) then return true end Você deve alterar para: if(getTileInfo(getCreaturePosition(cid)).noLogout or getCreatureNoMove(cid) or getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_ALLOWIDLE) or getPlayerStorageValue(cid,456488) == 1) then return true end
  6. Yago, se o xWhiteWolf autorizar eu criar um script para você igual ao do servidor dele (player rodar no SQM, eu faço sem problemas. @Edit Detalhe, existe um sistema chamado XLogged que não contabiliza os players AFK, ele é uma alteração feita pelas sources.
  7. Olá, a OTServ list bani os otservs em que ela checa se um player está idle a muito tempo e sem movimento normalmente, não é baseado se existe ou não o idle system. Eu tive de ser banido 4x até entender que o problema era esse, uma vez esqueci um char em uma area no-loggout e meu servidor não possuia global server save(reiniciar todo dia), após uma semana que ele estava lá tomei ban. Trainer 24 h também causa isso. Solução? Coloquei server save as 6 horas da manhã e trainer 3 horas por dia, assim não há uma grande quantidade de players afk por um tempo longo e também não corre o risco de algum player ficar travado em algum lugar. Caso você desejar esse sistema de retirar o idle por determinada área eu posso fazer sem problemas também.
  8. Só uma correção, não é necessário remover essa parte para que funcione. Logo abaixo verá essa opção que você deve remover: account.salt = result->getDataString("salt");
  9. Ola Snow, Obrigado pela dica, somente copiei o script de um servidor que encontrei, não tenho créditos sobre essa coisa rsrs...
  10. Loreal, Não ligue para esses amadores hahaha.... Existe duas possibilidades: 1º Sua distro pode ter alguma falha 2º Existe alguma action que quando executada faz com que as outras pare de pegar, faça o teste, quando o potion parar de pegar tente puxar uma alavanca ou algo do tipo.
  11. local config = { positions = { ["texto2"] = { x = 894, y = 1963, z = 7 }, ["texto1"] = { x = 1099, y = 1060, z = 7}, } } function onThink(cid, interval, lastExecution) for text, pos in pairs(config.positions) do doSendAnimatedText(pos, text, 205) end return TRUE end O numero 205 é uma cor (não me lembro qual), também não me lembro até quanto vai esse número, mas começa do 1 por diante.. <globalevent name="mensagem" interval="2000" script="arquivo.lua"/> Isso você poe no seu globalevents.xml e o outro em um arquivo qualquer lua dentro do scripts. Caso essa explicação não for o suficiente não hesite em perguntar
  12. E aí galera do TK, Estou trazendo mais uma inovação para o Tibia King, é o sistema de anunciar as ultimas 5 newstickers postadas no site! Vamos ao código, em globalevents.xml adicione: <globalevent name="information" interval="1800000" event="script" value="autobroadcast.lua"/> Ele vai anunciar de 30 em 30 minutos as mensagens, lembrando que não anuncia todas de uma vez, ele sorteia uma das 5. Em globalevents/scripts adicione um arquivo lua com o nome de autobroadcast e coloque isso dentro do conteúdo: function onThink(interval, lastExecution) local result = db.getResult("SELECT text FROM `z_news_tickers` ORDER by date DESC LIMIT 0,5") local sorteado = math.random(1, 5) local news = {} if result:getID() == -1 then return false end repeat if result:getID() ~= -1 then table.insert(news, result:getDataString("text")) end until not result:next() if not news[sorteado] then return false end doBroadcastMessage("News: " .. string.sub(news[sorteado], 1, 150) .. "", MESSAGE_EVENT_ADVANCE) return TRUE end Pronto, já estará funcionando seu sistema (se sua tabela de newsticker não for z_news_tickers é só mudar. Créditos: Keilost Globalwar
  13. Bom, eu vi mesmo que sabe, de nada por tentar ensinar algo.
  14. Ceos, uma dica Os ends fecham as seguintes coisas: Função, Condição Function teste() doSomething() end (no caso só um end) Function teste2() if 2 + 2 = 4 then doSomething() end end
  15. Desculpe ser grosso, mas não funciona de burreza, porque você não manda uma foto de erro e nem fala qual é o erro e outra aqui funciona normalmente.
  16. Bom, nao tem muito o que modificar no script: <talkaction words="andar" script="elevador.lua"/> function onSay(cid, words, param, channel) pos = getPlayerPosition(cid) pos.stackpos = 0 floor_id = getThingfromPos(pos).itemid z = (pos.z - 7) * -1 -- verifica se está no piso do elevador if floor_id == 417 and getPlayerStorageValue(cid,42000)== -1 then -- verifica se existe o parametro numero do andar, se não existir termina o codigo if (not isNumber(param)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite o numero do andar.") return false end numeroDeAndares = tonumber(param) - z -- teleporte a andares superiores if numeroDeAndares > 0 then new_pos = {x=pos.x,y=pos.y,z=pos.z-numeroDeAndares,stackpos=0} if getThingfromPos(new_pos).itemid == 416 then doCreatureSay(cid, "Subindo!!!", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid,42000,1) for i=1, numeroDeAndares do addEvent(doTeleportThing,500*i,cid, {x=pos.x,y=pos.y,z=pos.z-i}, true) end addEvent(checkAndar,500,cid,param) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Andar invalido.") return false end -- teleporte a andar inferiores elseif numeroDeAndares < 0 then setPlayerStorageValue(cid,42000,1) doCreatureSay(cid, "Descendo!!!", TALKTYPE_ORANGE_1) for i=1, numeroDeAndares*-1 do addEvent(doTeleportThing,500*i,cid, {x=pos.x,y=pos.y,z=pos.z+i}, true) end addEvent(checkAndar,500,cid,param) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce esta neste andar.") return false end elseif floor_id ~= 417 then doCreatureSay(cid, words .." ".. param) end return true end function checkAndar(cid, param) pos = getPlayerPosition(cid) z = (pos.z - 7) * -1 if tonumber(param) == z then doSendMagicEffect({x=pos.x,y=pos.y,z=pos.z}, CONST_ME_TELEPORT) doSendAnimatedText({x=pos.x,y=pos.y,z=pos.z}, "Andar "..tonumber(param), 180) setPlayerStorageValue(cid,42000,-1) else addEvent(checkAndar,500,cid,param) end end
  17. Olá, ele tem compatibilidade com a OTX, talvez seja algum problema com o TFS, Tentem assim: function onSay(cid, words, param) local t = string.explode(param, ",") if(t == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local pid = getCreatureByName("".. t[1] .."") if isPlayer(pid) then doRemoveCreature(pid) end if t[2] == 1 then db.executeQuery("UPDATE `otserv`.`players` SET `deleted` = '1' WHERE `players`.`name` =".. t[1] ..";") doPlayerSendTextMessage(cid, 27, "Player ".. t[1] .." foi deletado.") end if t[2] == 0 then db.executeQuery("UPDATE `otserv`.`players` SET `deleted` = '0' WHERE `players`.`name` =".. t[1] ..";") doPlayerSendTextMessage(cid, 27, "O delete do player ".. t[1] .." foi retirado.") end return true end
  18. O comando é simples, ele funciona para deletar player e retirar o delete, vocês podem dizer "o rule violation já faz a função de deletar", no caso do meu ot não tinha o rule violation, então estou passando o conteúdo para o Tibia King pois achei útil para mim. Vamos ao script: Em talkactions/scripts crie um arquivo chamado deleteplayer.lua e então coloque esse conteúdo dentro: function onSay(cid, words, param) local t = string.explode(param, ",") if(t == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local pid = getCreatureByName("".. t[1] .."") if isPlayer(pid) then doRemoveCreature(pid) end if t[2] == 1 then db.executeQuery("UPDATE `players` SET `deleted` = '1' WHERE `players`.`name` ='".. t[1] .."';") doPlayerSendTextMessage(cid, 27, "Player ".. t[1] .." foi deletado.") end if t[2] == 0 then db.executeQuery("UPDATE `players` SET `deleted` = '0' WHERE `players`.`name` ='".. t[1] .."';") doPlayerSendTextMessage(cid, 27, "O delete do player ".. t[1] .." foi retirado.") end return true end No seu talkactions.xml coloque: Como funciona o comando? Para deletar o player: /delete Nome,1 Para remover o delete: /delete Nome,0 Corrigido a query, havia esquecido de remover a tabela `otserv` (que é a que eu usava) Créditos: Keilost
  19. Galera, alguém pode me dar uma força nessa função? Não consigo criar ela. Ela tem que anunciar o nome do player que possui o maior valor da storage x. function getTopPoints() pointscp = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerStorageValue(pid, 891931) ~= -1 then local pt = getPlayerStorageValue(pid, 891931)+1 table.insert(pointscp, {getCreatureName(pid), pt}) end end table.sort(pointscp, function(a,b) return a[1][2] > b[1][2] end) for _, pid in pairs(getPlayersOnline()) do setPlayerStorageValue(pid,891931,-1) end return doBroadcastMessage("".. pointscp[1][1] .." foi o jogador que teve mais pontos (".. pointscp[1][2] ..") ") end
  20. Não escrevem estranho, só não sabem escrever, mas alguns ainda é possível decifrar rsrs
  21. keilost1 postou uma resposta no tópico em Suporte Tibia OTServer
    Não sei se é permitido ou se estou na area correta, porém, busco um programador C++ para fazer alguns códigos para mim, pago pelo serviço.
  22. O comando é /s no novo TFS, serve tanto para sumonar NPC como monstros.
  23. keilost1 postou uma resposta no tópico em Suporte & Pedidos
    Po cara, não acredito que está desenvolvendo um mesmo OT com a ideia de Sword Art Online, é o mesmo que estou fazendo.
  24. Bom, não sei de quem é os créditos pelo código, porém eu adaptei para tfs 1.0 e resolvi compartilhar. Para quem não sabe, o shutdown serve para desligar o servidor, você pode usar ele em contagem regressiva, exemplo: /shutdown 5 - O servidor irá desligar em 5 minutos. Para cancelar a contagem /shutdown stop Caso você queira pular a contagem /shutdown kill E caso você queira que não tenha contagem, basta /shutdown Vamos ao código, em talkactions/scripts: local shutdownEvent = 0 function onSay(cid, words, param, channel) if(param == '') then Game.setGameState(GAME_STATE_SHUTDOWN) return true end if(param:lower() == "stop") then stopEvent(shutdownEvent) shutdownEvent = 0 return true elseif(param:lower() == "kill") then os.exit() return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Numeric param may not be lower than 0.") return true end if(shutdownEvent ~= 0) then stopEvent(shutdownEvent) end return prepareShutdown(math.abs(math.ceil(param))) end function prepareShutdown(minutes) if(minutes <= 0) then Game.setGameState(GAME_STATE_SHUTDOWN) return false end if(minutes == 1) then broadcastMessage("Server is going down in " .. minutes .. " minute, please log out now!") elseif(minutes <= 3) then broadcastMessage("Server is going down in " .. minutes .. " minutes, please log out.") else broadcastMessage("Server is going down in " .. minutes .. " minutes.") end shutdownEvent = addEvent(prepareShutdown, 60000, minutes - 1) return true end Em talkactions.xml: <talkaction words="/shutdown" separator=" " script="shutdown.lua" />

Informação Importante

Confirmação de Termo