Ir para conteúdo

Noninhouh

Membro
  • Registro em

  • Última visita

Tudo que Noninhouh postou

  1. Fiz um aqui usando os scripts acima como base, mas não cheguei a testar brother
  2. Acredito que possa ser pela falta da função isSummon... No arquivo /server/data/lib/050-function.lua, adicione essa função: function isSummon(cid) return getCreatureMaster(cid) end
  3. Tente assim: function onAttack(cid, target, attacker, type, combat, value) if isSummon(target) then doMonsterSetTarget(cid, getCreatureMaster(target)) end return true end
  4. Cara, não entendi muito bem o que você quer Você quer deixar todos os itens disponíveis, e somente disponíveis para ver, ou para poder comprar? Pq se for para comprar, mesmo que não tenha o dinheiro, é só colocar o valor de 0 gold... Agora se for disponível para clicar e ver o item, é no arquivo otclient/modules/game_npctrade/npctrade.lua, na função: Especificamente nessa parte playerMoney >= getItemPrice(item, true), os outros são apenas para checar sua capacidade e o checkBox, se quer que cheque a capacidade ou não E em baixo é para a aba de venda de itens, que ativa se o player possuir o item
  5. Desculpe, não entrei no fórum nesses últimos dias... Cara, eu também não sei, pois não entendo muito dessa linguagem, mas abri rapidinho aqui as sources do meu client só pra dar uma olhada nisso que você falou e vi algumas coisas, como: Ela tem uma pasta do otml, provavelmente é nela que você consiguirá modificar algo, provavelmente! (otc-master/src/framework/otml) O arquivo otmm parece que é apenas para ler o mapa que já está aberto, e isso parece que apenas é usado no arquivo minimap.lua dos modulos: Como eu disse anteriormente, não entendo muito do C++, então não tenho certeza se é nesses arquivos que você conseguirá algo. Eu recomendaria você pedir ajuda de alguém mais experiente do que eu, ou até mesmo você procurar entender como funciona (que seria a opção mais viável)
  6. Quando você configura o client, abre o mapa, e faz essas coisas, elas ficam salvas nessa pasta: C:\Users\Nome\otclient Provavelmente se você modificar algo nas sources, pra ele ler esses mesmos 2 arquivos que já ficam salvos na pasta do otclient, as configurações que iram ter ao ele abrir o client serão as mesmas que você deixou salva
  7. Explique a situação direito amigo... É somente esse Pokemon que está curando os outros, ou são esses ataques? Você já fez o teste pra saber se realmente é o Pokemon?
  8. Eu ajustei a função do @Zzyzx, ele criou a função pra contar o tempo mas não chamou ela, só isso. OBS: Não cheguei a testar.
  9. Noninhouh postou uma resposta no tópico em Suporte Tibia OTServer
    Veja se tem alguma função no creaturescripts relacionada a função onAdvance, se tiver poste aqui!
  10. Noninhouh postou uma resposta no tópico em Suporte Tibia OTServer
    setPlayerStorageValue(cid, Storages[i], XXX) Naquele XXX você precisa colocar o valor que a storage precisa ter pra completar a task (nos scripts ali estão 1, mas deve ser outro valor)
  11. mysterybox.lua: OBS: Não cheguei a testar!!
  12. local function sendEffStone(cid, pos, stones) if not isCreature(cid) then return true end for i = 1, 255 do pos.stackpos = i local item = getTileThingByPos(pos) if item.uid ~= 0 then if isContainer(item.uid) then if isContainer(item.uid) and getContainerSize(item.uid) > 0 then for slot=0, (getContainerSize(item.uid)-1) do local stone = getContainerItem(item.uid, slot) if isInArray(stones, stone.itemid) then doSendMagicEffect(getThingPos(cid), 18) end end end end end end end function onKill(cid, target) local stones = {11453, 11441, 11442, 11443, 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11454, 12244, 12232, 12242, 12417, 12419, 12245, 12401, 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414} --id de todas as stones if ehMonstro(target) and isPlayer(cid) then local pos = getThingPos(target) local pid = getCreatureSummons(cid)[1] addEvent(sendEffStone, 150, pid, pos, stones) end return TRUE end Desculpe por deixar mal formatado, mas estou no celular, e não conseguir por spoiler nem code. Achei esse código em outro fórum, e não vou saber te dizer que o fez, mas foi postado pelo Heinekenn. Só precisa adicionar a tag no .xml, adicionar o evento onKill ao player e formatar de acordo o seu gosto o script. Espero ter ajudado...
  13. Não tenho certeza, mas acho que esse sistema no PokeTibia é refazendo o sistema de dropLoot. Ao matar o pokemon, o loot é adicionado ao corpse, e ao identificar um dos itens de uma tabela, enviar tal efeito... @Cain Jorge, sem querer me intrometer na discursão de vocês, mas quando você precisar de um script assim, em vez de vim ao forum pedir o script como primeira opção, procure entender como funciona em outros servidores que já possui o sistema, como ele funciona. E também, peça e seja gentil. Tenho certeza que o @Yamborghini lhe respondeu com o intuito de te ajudar...
  14. Noninhouh postou uma resposta no tópico em Suporte Tibia OTServer
    Modifique o arquivo /creaturescripts/scripts/DoublePotion.lua que o @Danyel Varejao lhe passou, deixe assim:
  15. Entendi, valeu tio Anta kk
  16. Algum erro no console ou algo do tipo? Tem certeza que adicionou a tag no actions.xml?
  17. Creio que sim, se ela está funcionando para o player voltar ao evento, provavelmente deve funcionar, porém não sei qual a diferença dela pra a função onDeath se alguém pudesse explicar pra mim seria bom kk
  18. Acho que a função assim está consertada, como o @caiohp disse. Não vou dar certeza que irá funcionar pois não sei se essa função playerExists(name) checa players offline também.
  19. Na pasta /data/actions/scripts/ crie um arquivo chamado pet.lua e cole isso dentro: Em /data/actions/actions.xml adicione essa tag: <action itemid="xxxx" event="script" value="pet.lua"/> Nesse itemid="xxxx" você coloca o id do item que será usado para sumonar o pet. Bom, nesse sisteminha, se você já possui algum summon, creio que não irá importar, pois ele checará se seu summon tem a storage 83712 para remove-lo, caso nenhum se seus summons tenha essa storage, ele irá sumonar seu pet. E caso você não tenha nenhum summon, ele também irá sumonar seu pet.
  20. Bom, vou falar uma forma, mas não sei se seria a melhor de fazer esse evento. Primeiramente eu colocaria um: (usará para começar a contar as mortes). E isso: addEvent(setGlobalStorageValue, 15 * 60 * 1000, storage, -1) addEvent(setGlobalStorageValue, 15 * 60 * 1000, globalStorageTeamRed, -1) addEvent(setGlobalStorageValue, 15 * 60 * 1000, globalStorageTeamBlue, -1) (usará para encerrar a contagem) Depois eu criaria um arquivo com a função onDeath(cid, corpse, deathList) no creaturescripts.xml para adicionar a contagem. Nele você colocaria algo similar a isso: Sei que foi uma explicação bem ruim, mas se você tiver um conhecimento básico de lua acho que entenderá.
  21. Tente assim: Com a tag: <talkaction words="!name" filter="quotation" event="script" value="name.lua"/> No caso será usado assim: (!name"Jon Snow) E é como o @yanloco70 disse, não fique sempre esperando pelos outros, procure ir mexendo no script até que você ache a solução do seu problema.
  22. Bom, vou mostrar a vocês como editar o andar diagonal no otclient da maneira que vocês preferirem... Atualmente, creio que quando você anda diagonalmente, tem um delay até que você possa andar novamente. Vou ensinar tirar esse delay, e deixar a velocidade ao gosto de vocês. Em creature.cpp do server, procure pela linha: if(std::abs(newPos.x - oldPos.x) >= 1 && std::abs(newPos.y - oldPos.y) >= 1) lastStepCost = 3; Esse lastStepCost será a velocidade que o player terá ao andar diagonalmente, em relação a velocidade de quando ele anda em uma direção reta, por exemplo, um player que demora 1 segundo para andar 1 sqm, demoraria 3 segundos para andar diagonalmente. Edite esse valor ao seu gosto! Em creature.cpp do client, procure as linhas que tem isso: getStepDuration(true) E deixe assim: getStepDuration() Agora procure por: float factor = 3; if(g_game.getClientVersion() <= 810) factor = 2; Apague essa parte Logo mais abaixo tem: if(!ignoreDiagonal && (m_lastStepDirection == Otc::NorthWest || m_lastStepDirection == Otc::NorthEast || m_lastStepDirection == Otc::SouthWest || m_lastStepDirection == Otc::SouthEast)) interval *= factor; Em factor, deixe o mesmo valor que você deixou em lastStepCost no servidor. Agora em localplayer.cpp no client, novamente procure por: getStepDuration(true) E troque por: getStepDuration() Pronto, seu personagem andará diagonalmente mais suave, e com a velocidade que você escolheu.
  23. Obrigado @KotZletY, não sabia que não precisava registrar o do logout, vou editar o tópico
  24. Bom galera, hoje vim aqui trazer pra vocês um sisteminha bem legal que a PxG possui, no entanto, esse sistema eu fiz para um servidor de Tibia, então para vocês usarem em um derivado seria bom adapta-lo, devido a outros sistemas (como o fly do poketibia). Como seria esse sistema? Basicamente você digita o comando !walk e o seu personagem começará a andar na direção em que está virado até encontrar um obstáculo, ou até digitar o comando !walk novamente. Crie um arquivo chamado walk.lua em /data/talkactions/scripts/, e cole isso dentro: Em talkactions.xml coloque a tag: <talkaction words="!walk" event="script" value="walk.lua"/> Em creaturescripts.xml, veja se já tem o evento "logout", caso não tenha coloque: <event type="logout" name="PlayerLogout" event="script" value="logout.lua"/> Em /data/creaturescripts/scripts/, crie um arquivo chamando logout.lua (caso não tenha) e cole isso dentro:
  25. E aí gente, beleza? Gostaria de saber se existe alguma função para eu checar se o player tem determinado item pelo uid, alguma função tipo: getPlayerItemByUid(cid, item.uid) ---------------- EDIT ------------------- Já pesquisei mais sobre, parece que não tem... Mas fiz uma e vou deixar para caso alguém precise: function getPlayerItemByUid(cid, uid) repeat if getItemParent(uid).itemid ~= 0 then uid = getItemParent(uid).uid end until getItemParent(uid).itemid == 0 for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do if getPlayerSlotItem(cid, slot).uid == uid then return true end end return false end Podem fechar o tópico.

Informação Importante

Confirmação de Termo