Ir para conteúdo

Killua

Conde
  • Total de itens

    904
  • Registro em

  • Última visita

  • Dias Ganhos

    13

Tudo que Killua postou

  1. Tem certeza que instalou corretamente, amigo? Acabei de testa-lo novamente... Você já adicionou tasks? O NPC só responde quando vc fala um nome que vc escolheu pra alguma task.
  2. Realmente estava com erro no script do meu npc... Um erro bem besta que não se manifestou em versões antigas. Pegue o novo script do npc.lua que editei no tópico. Obrigado por avisar
  3. Olá amigos, nessa terça venho trazer um mod que criei... É aquele sistema que o carrinho vai andando com vc. Para ver os outros scripts de terça, clique aqui. Explicando: Os caminhos são definidos pelo ot admin, ou seja, o player não poderá andar livremente. Enquanto estiver no carrinho, o jogador não poderá logar, entrar em batalha e nem andar. Instalando: Crie Killua Cart System.xml em data/mods e coloque esse código: Configurando: Simplesmente coloque action ID 5191 no piso que player deve pisar para começar a andar para o NORTE; action ID 5192 para LESTE (direita); action ID 5193 para SUL; action ID 5194 para OESTE (esquerda); action ID 5195 para o player parar de andar e sair do carrinho. Seguem imagem de exemplo:
  4. Eu não tinha pensado nisso... Mas acredito que a função getPlayerIp(cid) pegue o IP da net do jogador, portanto, se estiverem numa lan house, o ip deles será o mesmo. Sendo assim, quem estivesse numa lan house teria problemas... Para arrumar esse problema, basta mudar o número máximo de acc managers para 10, por exemplo. Uma vez que 10 acc managers não são o suficiente para derrubar seu ot, e, numa lan house, normalmente não tem mais de 10 pcs, muito menos 10 pcs logados no acc manager...
  5. Assim funciona sim, RigBy. Para vc checar se o tile está livre, existem duas funções: isWalkable(pos), criada pelo Nord e getClosestFreeTile(cid,targetpos[,extended=false[,ignoreHouse=true]]) que já vem no TFS. A primeira simplesmente checa se tile escolhido é "andável" e a segunda pode ser usada dentro do doTeleportThing, pois ela procura o tile livre mais próximo dos que vc escolheu. No teu acho acho melhor usar a isWalkable, pq com ela vc pode definir um segundo tile com else caso o primeiro esteja ocupado... function isWalkable(pos)-- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif getTopCreature(pos).uid > 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end
  6. Tá certo dalvo =S Mas o Omega me deu uma outra idéia: Criar uma tabela na db com as colunas x, y, z e tile_id daí usa o startup para ler ela e transformar o tile
  7. Outra idéia é: Ao usar o item que transforma o chão, armazenar a posição numa tabela criada na lib. Exemplo: function onUse(cid, item, fromPosition, itemEx, toPosition) table.insert(tabela, getThingPos(itemEx.uid)) return true end Depois, num globalevents com callback onStartUp, vc transforma os tiles das posições da tabela para o id que vc quer. Para isso, vc pode usar minha função doTransformTile: function doTransformTile(pos, id) pos.stackpos = 0 return doTransformItem(getThingFromPos(pos).uid, id) end function onStartup() for i = 1, #tabela do doTransformTile(tabela[i], 216) end return true end Acredito que assim funcione... Dessa forma não serão necessárias alterações nas sources...
  8. Killua

    Anti Nuke System

    Ainda hoje, muitos servidores são nukados com MageBomb (mass log de Account Manager)... Por este motivo, vou compartilhar um script, que eu otimizei, que impede esse tipo de mass log. Basta criar: AntiNuke.lua em data/creaturescripts/script e colocar esse código: -- Anti Mage Bomb System otimizado por Killua - XTibia.com local config = { max = 3, -- Quantos acc manager o mesmo ip pode logar de uma vez acc_name = "Account Manager", -- Nome do account manager ip_banishment = "false", -- Se logar mais acc manager do que o permitido, leva ban? "true" ou "false" banishment_length = 20 -- Quantos dias o ip fica banido? } local accepted_ip_list = {""} -- lista dos ips permitidos a logar varios acc manager, exemplo: {"200.85.3.60", "201.36.5.222"} local function antiMC(cid) if (#getPlayersByIp(getPlayerIp(cid)) >= config.max) then if config.ip_banishment == "true" then doAddIpBanishment(getPlayerIp(cid), banishment_length * 24 * 60 * 60) end doRemoveCreature(cid) end return true end function onLogin(cid) if getPlayerName(cid) == config.acc_name then if isInArray(accepted_ip_list,doConvertIntegerToIp(getPlayerIp(cid))) then return true else addEvent(antiMC, 1000, cid) end end return true end Em data/creaturescripts/creaturescripts.xml, coloque essa TAG: <event type="login" name="antinukemc" event="script" value="AntiNuke.lua"/>
  9. Na realidade eu nem pensei na possibilidade de o monstro ser summon... Eu fiz pensando em usar somente monstros mais fortes. De qualquer forma, atualizei o tópico com a checagem, obrigado pela sugestão.
  10. Amigo, este é basicamente a mesma coisa do outro, a diferença é que este, ao invés de remover o player, bane o ip dele. Portanto, basta utilizar assim: local config = { max = 3, -- número de Account Manager permitido para logar de uma só vez group_id = "Account Manager" -- kikar apenas player com o group id 1 } local accepted_ip_list = {""} -- lista dos players permitidos a usar MC, exemplo: {"200.85.3.60", "201.36.5.222"} local function antiMC(cid) if (#getPlayersByIp(getPlayerIp(cid)) >= config.max) then doAddIpBanishment(getPlayerIp(cid), 365 * 24 * 60 * 60) doRemoveCreature(cid) end return true end function onLogin(cid) if getPlayerName(cid) == config.group_id then if isInArray(accepted_ip_list,doConvertIntegerToIp(getPlayerIp(cid))) then return true else addEvent(antiMC, 1000, cid) end end return true end
  11. Isso se deve ao fato de a variavel idDasParedes estar igual a 9486. Se deseja mudar a parede, basta alterar essa variavel. Ainda hoje vou postar uma versão otimizada do evento. Evento atualiazado! 12/04/2014 Leiam o tópico para saber o que eu mudei. * Aconselho todos a instalar a nova versão, por estar otimizada. Abraços.
  12. Teste assim, amigo: local config = { max = 3, -- número de Account Manager permitido para logar de uma só vez group_id = "Account Manager" -- kikar apenas player com o group id 1 } local accepted_ip_list = {""} -- lista dos players permitidos a usar MC, exemplo: {"200.85.3.60", "201.36.5.222"} local function antiMC(cid) if (#getPlayersByIp(getPlayerIp(cid)) >= config.max) then doRemoveCreature(cid) end return true end function onLogin(cid) if getPlayerName(cid) == config.group_id then if isInArray(accepted_ip_list,doConvertIntegerToIp(getPlayerIp(cid))) then return true else addEvent(antiMC, 1000, cid) end end return true end
  13. Vc editou a tabela? local floors = { [1] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}}, --[andar] = {posição que o jogador deve ficar, posição para onde será teleportado}, [2] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}}, [3] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}}, [4] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}}, [5] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}}, [6] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}}, [7] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}}, } Edit Fiz de uma maneira mais simples... local maxFloor = 7 local minFloor = 2 function onUse(cid, item, fromPosition, itemEx, toPosition) local pos_ = getThingPos(cid) if pos_.z < maxFloor and pos_.z < minFloor then if item.actionid == 4912 then doTeleportThing(cid, {x = pos_.x, y = pos_.y, z = pos_.z + 1}) doSendMagicEffect({x = pos_.x, y = pos_.y, z = pos_.z + 1}, 28) doPlayerSendTextMessage(cid, 25, "Voce desceu um andar.") elseif item.actionid == 4913 then doTeleportThing(cid, {x = pos_.x, y = pos_.y, z = pos_.z - 1}) doSendMagicEffect({x = pos_.x, y = pos_.y, z = pos_.z - 1}, 28) doPlayerSendTextMessage(cid, 25, "Voce subiu um andar.") end else doPlayerSendCancel(cid, "Voce ja esta no andar maximo!") end return true end Registra no actions.xml os actionIDs 4912 e 4913. Na alavanca de subir andar vc bota 4913 e na de descer vc bota 4912. maxFloor é o andar máximo q o cara pode ir minFloor é o andar mínimo q o cara pode ir
  14. Confundi o tópico... foi mal kkkkkk obrigado por avisar.
  15. Nesta área não devem ser postados pedidos nem dúvidas. Preste mais atenção quando for criar um tópico! Movido para Pedidos e dúvidas - Scripting.
  16. Nesta área não devem ser postados pedidos e nem dúvidas. Preste mais atenção quando for criar um tópico! Movido para Pedidos e dúvidas - Servidores derivados.
  17. Caro usuário, você não é novo no fórum e, ainda assim, fez um double topic numa área incorreta. Usuário alertado e tópico movido para Pedidos e dúvidas - Servidores derivados.
  18. Monster Hunter Event Como não tive tempo para trazer um script semana passada, criei um bem legal para essa semana. Para ver os outros scripts de terça, clique aqui. Vídeo demonstrativo: Explicação detalhada: O evento possui duas versões: automática (globalevent) e manual (talkaction). Quando o evento inicia, é sorteado um monstro e um intervalo de tempo, por exemplo: Hydra e 15 minutos. Seguindo esse exemplo, os jogadores terão 15 minutos para matar hydras, no final dos 15 minutos, aquele que tiver matado mais hydras será o vencedor e receberá um prêmio. - É tudo configurável. Instalação: Crie Monster Hunter.lua em data/creaturescripts/scripts e coloque: -- Monster Hunter Event feito por Killua, XTibia.com function onKill(cid, target, lastHit) if isPlayer(cid) and isMonster(target) then if getCreatureMaster(target) ~= nil then return true end local name = getGlobalStorageValue(1919211) if string.lower(getCreatureName(target)) == string.lower(name) then doPlayerSetStorageValue(cid, 1814210, getPlayerStorageValue(cid, 1814210) + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Monster Hunter Event] Voce ja matou "..getPlayerStorageValue(cid, 1814210).." "..name.."s! Continue matando para ser o vencedor!") end end return true end function onLogin(cid) if getGlobalStorageValue(1919211) == 0 then doPlayerSetStorageValue(cid, 1814210, 0) end registerCreatureEvent(cid, "Monster Hunter") return true end Em data/creaturescripts/creaturescripts.xml adicione essas TAGs: <event type="kill" name="Monster Hunter" event="script" value="Monster Hunter.lua"/> <event type="login" name="Monster Hunterl" event="script" value="Monster Hunter.lua"/> A próxima parte irá depender de qual versão escolher Versão manual (talkaction) Versão automática (globalevent) Configuração: local monsters = {"Demon", "Rat", "Hydra", "Dragon Lord", "Ancient Scarab"} -- Monstros que podem ser sorteados local time_min, max = 10, 15 -- Em minutos local premios, gold = {{2160, 10}, {2157, 5}}, 10000 -- {id do item, quantidade} que o jogador ganha e quantia de gold Em monsters, coloque o nome dos monstros que poderão ser sorteados no evento. Em time_min, max, coloque o tempo mínimo e o tempo máximo de duração do evento. em premios, gold adicione os itens e a quantidade de gold que o vencedor receberá (seguindo o modelo apresentado). TAG no Globalevents.xml (versão automática): <globalevent name="Monster Hunter Event" interval="3600000" event="script" value="Monster Hunter.lua"/> interval é o intervalo entre as execuções do evento, coloquei 3600000, que equivale a 1 hora (1000 = 1 segundo). Se seu servidor NÃO for em milissegundos, use 1 = 1 segundo, logo 1 hora = 3600. TAG no Talkactions.xml (versão manual): <talkaction log="yes" access="5" words="/monsterhunter" event="script" value="Monster Hunter.lua"/> Em access coloque o núemero de acesso mínimo para poder usar o comando. 5 = somente gods podem usar. Para iniciar o evento na maneira manual, basta usar /monsterhunter Para iniciar o evento na maneira automática, basta aguardar o tempo configurado.
  19. Todos na equipe têm oportunidade e chance de crescer dentro dela. Não entendo esse desespero que vocês tem de querer que o Caotic e o Tony subam. Concordo plenamente que os dois são excelentes no que fazem, mas eles não estão tristes por não estarem em um cargo elevado. Eles voltaram para a equipe faz pouco tempo, por isso ainda não subiram. Pode ter certeza que os dois vão subir bastante de cargo, se continuarem como estão, mas isso não é do dia pra noite. Leva um certo tempo... Tenham paciência.
  20. Killua

    Spells Rain

    Tópico movido para a seção de dúvidas e pedidos resolvidos.
  21. Killua

    spells que tira dano

    Tópico movido para a seção de dúvidas e pedidos resolvidos.
  22. Killua

    Bau Vocation

    Tópico movido para a seção de dúvidas e pedidos resolvidos.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...