Ir para conteúdo
  • Cadastre-se

Mathias Kenfi

Membro
  • Total de itens

    233
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Tudo que Mathias Kenfi postou

  1. Você está equivocado, a função getSpectators faz uma checagem em uma area de acordo com os parâmetros fornecido e depois retorna um array com todas as criaturas encontradas. local t = { players = { -- posições que os players devem ficar ao puxar a alavanca [1] = Position(33918,31626,8), [2] = Position(33919,31626,8), [3] = Position(33920,31626,8), [4] = Position(33921,31626,8), [5] = Position(33922,31626,8) }, boss = {name = "Urmahlullu the Weakened", create_pos = Position(33919,31648,8)}, destination = Position(33919,31657,8), --
  2. @wevertonvrb Aqui vai o script. OBS: Para utilizar na versão TFS 0.3, 0.4 ou OTX2. Siga os passos para instalação dessa lib ->https://github.com/kenfi2/KenfiLib local config = { aid = 23000, items = {7425,7429,7414}, createItems = { 2160, -- Item acima do itemEx. 1515, -- Item do andar de baixo } } function onUse(player, item, fromPosition, itemEx, toPosition) --Se você não usa TFS 0.3, 0.4 ou OTX 2.x pode apagar essa parte abaixo até o comentário de referência local player = Player(player) local item = Item(item.uid) local fromPos
  3. Essa parte não tem na TFS 0.4 porque essa é a parte que você precisa implementar. Sugiro que preste atenção nas modificações que você precisa fazer, está tudo certo o passo a passo que foi testado na TFS 0.4 e na OTX 2.X que é, inclusive, baseado na TFS 0.4 As linhas que não existem em algumas TFS 0.4, como attackSpeed, foram alteradas. Recomendo que para aqueles que não conseguiram, refaçam as alterações que fizeram e comecem novamente.
  4. Storage armazena apenas números inteiros e strings Se você tentar armazenar um valor decimal solo, como por exemplo setPlayerStorageValue(cid, 1251, 0.5) Ele vai enviar o 0.5 e interpretar como uma string, no caso salvaria como 0.5. Porém se vc tentar de forma aritmética, como por exemplo: 0.5 + 0.8 ou 0.5 + 152783278. Ele vai arredondar pro valor inteiro mais próximo. Os valores numéricos são salvos em valores inteiros de -2147483647 a 2147483647
  5. @Gabrieldsadaxas @leozincorsair O tutorial foi feito a partir da OTX 2.xx séries na qual já existe, por padrão, atributos como dualwield e attackspeed Vocês devem, no entanto, adaptar para a source de vocês. Não tem que colocar especificamente depois de ATTR_DUALWIELD = 43; Vocês devem colocar ele depois do PENÚLTIMO ATTR e antes do ÚLTIMO A mesma coisa no item.cpp em relação ao attackspeed if(it.attackSpeed || (item && item->getAttackSpeed())) Se não tem na source vocês podem olhar em uma source que tenha (OTX 2.XX séries de prefer
  6. Todos os arquivos estão citados. items.cpp items.h item.cpp item.h player.cpp player.h game.cpp
  7. Esse sistema foi feito utilizando a source disponibilizada neste link Pode funcionar em TFS 0.4, OTX 2.X e, talvez, em TFS 0.4 só que a probabilidade erros é maior por ter diferentes nomes de funções e variáveis. Fiz um vídeo seguindo o passo a passo abaixo para facilitar o processo de instalação do sistema. Hoje estarei ensinando a instalar os seguintes novos atributos/sistemas em sua source CriticalHitChance e DodgeChance -- (Funciona da mesma maneira que o critical básico de script, porém sem bugs de callstack) Life e Mana Absorb -- (Regenera, de
  8. Melhor verificar se salvou os arquivos e se o channel Loot é o mesmo channel do config.lua <channel id="11" name="Loot" logged="yes" active="0" enable="0"/> Config.lua lootChannelId = 11
  9. [TESTADO EM OTX 2.x.x SERIES] 8.60 Primeiramente vá em game.cpp e procure por: bool Game::broadcastMessage(const std::string& text, MessageClasses type) { std::clog << "> Broadcasted message: \"" << text << "\"." << std::endl; for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) it->second->sendTextMessage(type, text); return true; } Abaixo adicione: bool Game::globalSendChannelMessage(std::string author, std::string text, MessageClasses type, uint16_t channel) { std::cl
  10. [TESTADO EM OTX 2.1+] 8.60 [TESTADO EM TFS 0.3.6] 8.54 ~ 8.60 Créditos: ~Mathias Kenfi
  11. --[[ Script By ~Mathias Kenfi]]-- local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) function onGetFormulaValues(cid, level) skill = getPlayerSkillLevel(cid, 4) -- 4 é sword attack = getItemInfo(getPlayerWeapon(cid).itemid).attack total = (level + skill) + attack return -total, -total end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat, var) end
  12. Tente trocar tudo por uid if item.aid == quest.aid then Mude para: if item.uid == quest.aid then Em actions.xml coloque uniqueid e tente. E me diz qual a versão da sua distro
  13. local config = { ["Primeira Quest"] = {aid = 40000, premio = {2160,1}, str = 160000}, ["Segunda Quest"] = {aid = 40001, premio = {2159,1}, str = 160001} aid é o ACTIONID que você vai colocar no baú, str é a storage da quest. Em premio você coloca o ID e a quantidade {ID, Quantidade} dos itens que vão ganhar na quest
  14. --[[Script By ~Mathias Kenfi]]-- local config = { ["Primeira Quest"] = {aid = 40000, premio = {2160,1}, str = 160000}, ["Segunda Quest"] = {aid = 40001, premio = {2159,1}, str = 160001} } function onUse(cid, item, frompos, item2, topos) for index, quest in pairs(config) do if item.aid == quest.aid then if getPlayerStorageValue(cid, quest.str) ~= 1 then doPlayerSendTextMessage(cid,22,"Você cumpriu a "..index.." e ganhou "..quest.premio[2].." "..string.lower(getItemNameById(quest.premio[1]))) doPlayerAddItem(cid,quest.premio[1],quest.premio[2]) setPlayerStorageValue(cid,q
  15. pos = {x=160, y=54, z=7} Como você pode ver, pos é uma tabela e os indexes são X, Y e Z. Então para retornar o valor de X você deve utilizar pos.x, Y pos.y e Z pos.z Neste caso para adicionar um valor a X você cria outra mini tabela. pos2 = {x=pos.x+1, y=pos.y, z=pos.z} // Assim irá retornar os valores da tabela pos Para verificar um piso você pode utilizar algumas funções. getTileItemById(pos, ID).uid doFindItemInPos({ID}, pos)[1]
  16. Não é pra tirar print do index.php e sim da página do erro
  17. Mudança de evento é necessário reiniciar, você reiniciou? Qual a versão do seu OT? Qual versão da sua source? --[[Script criado por ~Mathias Kenfi Email: [email protected] Contato: 034991286815 ]]-- function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) storage = getPlayerStorageValue(cid, 23100) target = lastHitKiller[1] if not(isPlayer(cid)) then return false end if not(isPlayer(target)) then return false end if getPlayerIp(cid) ~= getPlayerIp(target) then if getPlayerLevel(target) <= 100000 then doPlayerAddExperience(target, (storage*1)
  18. Colocar define('DEBUG_DATABASE', true); é apenas para mostrar qual erro vai dar na Database e não resolver o erro. Você tirou print de uma parte totalmente aleatória da sua Database, entre em accounts e mande PRINT de toda a estrutura. Tire print de tudo, do erro (com define('DEBUG_DATABASE', true) e da estruta da tabela
  19. Aonde você adicionou este script? Tem como enviar todo o script?
  20. A função foi mudada para onDeath() --[[Script criado por ~Mathias Kenfi Email: [email protected] Contato: 034991286815 ]]-- function onDeath(cid, corpse, deathList) local storage = getPlayerStorageValue(cid, 2310) if isPlayer(cid) and isPlayer(deathList[1]) then if getPlayerIp(cid) ~= getPlayerIp(deathList[1]) then if getPlayerLevel(deathList[1]) <= 100000 then doPlayerAddExperience(deathList[1], (storage*1) * (getPlayerExperience(cid) / 1000)) end end end return true end
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo