Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. Oneshot

    Bug Skill Afz

    Existem servidores 8.60 que a função getPlayerSkillLevel só pegava o valor base da skill, por isso que não existia esse bug. Como você, indevidamente, trocou a versão de seu servidor para 9.53 sem se atentar para qualquer diferença, começaram a surgir esses tipos de bugs. Só de pensar, também, que estou ajudando alguém que provavelmente vai usar isso para lucro próprio, isso me dói a alma. O script arrumado está no spoiler. Abraços.
  2. Oneshot

    Bug Skill Afz

    Agora eu entendi o que é esse bug. Não é preciso enviar nada para o bugtracker do The Forgotten Server. Uma vez que é o script de compra de skills que se apresenta incorreto. A função getPlayerSkillLevel(cid, skill) usada dessa forma, irá retornar juntamente quaisquer modificadores de magias de suporte que o jogador está usando. Ou seja, se o jogador possui Axe Fighting equivalente a 10, usa utito tempo e fica com, digamos, 12 e depois usa o sistema de comprar skills, o sistema defeituoso pegará o Axe Fighting com buff e irá, através de querys, tornar ele permanente. O certo, meu caro colega, é usar a função getPlayerSkillLevel(cid, skill, true), assim ela ignorará modificadores quaisquer. Então, por favor, poste a seguir o script completo de seu sistema de compra de skills.
  3. Caro Vilden, Seu script está incorreto, a função doRemoveItem não iria funcionar, uma vez que como está fora do corpo da função onCastSpell, não iria encontrar um cid válido. O correto seria: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_REDSTAR) setCombatParam(combat, COMBAT_PARAM_USECHARGES, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) local condition = createConditionObject(CONDITION_PHYSICAL) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 1, 3000, -35) addDamageCondition(condition, 3, 3000, -20) addDamageCondition(condition, 2, 3000, -5) setCombatCondition(combat, condition) function onGetFormulaValues(cid, level, skill, attack, factor) local skillTotal, levelTotal = skill + attack, level / 5 return -(skillTotal / 3 + levelTotal), -(skillTotal + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) local item = {itemid = 2160, count = 1} if doPlayerRemoveItem(cid, item.itemid, item.count) then return doCombat(cid, combat, var) end return doPlayerSendCancel(cid, "Você não possui ".. item.count .." ".. getItemNameById(item.itemid) ..".") end Ao criador do tópico, configure você mesmo o itemid da Assassin Star.
  4. Oneshot

    Player Transparente

    ChuckNorris666, Talvez eu esteja errado, mas há como fazer algo parecido com isso manipulando as flags do grupo de Player. Para isso abra seu arquivo groups.xml, que provavelmente está em data/XML e você verá isso: <group id="1" name="Player"/> Troque apenas essa linha por isso: <group id="1" name="Player" customFlags="16777216"/> Assim o grupo Player terá a propriedade PLAYERCUSTOMFLAG_ISWALKABLE que faz que jogadores passem por cima de jogadores. Att.
  5. Sério mesmo? Achei que era um atributo de item a parte. Se for assim do jeito que você falou, tudo fica mais simples. Segue abaixo um esboço do que seria o funcionamento da chave. function onUse(cid, item, fromPosition, itemEx, toPosition) return (item.actionid == itemEx.actionid and doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A chave abriu a porta ") or doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A chave não encaixa na fechadura.")) end Falha nossa, de fato a actionid vira mesmo key number, como visto no items.cpp. else if(it.isKey()) s << " (Key:" << (item ? (int32_t)item->getActionId() : 0) << ")";
  6. Procure algo na pasta mods ou na pasta creaturescripts/scripts relacionado com firstitems.lua, poste aqui no tópico. Att.
  7. Vou atualizar todo o código e adicionar novas opções de configuração Principalmente baseadas nas sugestões dadas. Abraços.
  8. Vasculhei os arquivos items.cpp de algumas revisões de Open Tibia que tenho aqui e não achei nenhum atributo relacionado com números de chaves. Como provavelmente você está querendo mais alguma coisa do Bronson Server, creio que isso deve ser algo extra, mas até simples de fazer em C++.
  9. Depende muito do que você deseja fazer, caro amigo. Se você quer uma interface complexa, que o jogador clique onde quer nascer e etcétera, infelizmente é quase impossível a realização, já que seria necessária a edição até do cliente do Tibia. Mas há também a possibilidade de criar um sistema em Lua, com uma interface bem simples, por prompt de mensagens. Att.
  10. É, acho que cometi um erro no caso desse or mesmo. O código já foi consertado. Att.
  11. Não, não deveria ser and. E não havia pensado no caso do utamo vita.
  12. Você pode tirar, mas eu não aconselho.
  13. Faaala, pessoar. Há um tempo vi em uma comunidade gringa um script super criativo que se baseava no anime Death Note. Através da função onTextEdit(cid, item, newText), o scripter criou um livro que matava jogadores cujo nome fosse escrito. Mas era um código simples e limitado, você só podia matar um jogador por vez e o livro se tornava inútil depois disso. Então resolvi criar meu próprio Death Note com alguns bônus. - Você pode matar um número de jogadores configurável por vez, ou ilimitados se for CM ou mais. - Existe um delay entre a escrita do nome e a morte do alvo de 40 segundos. (Igual o anime) - Depois de escritos os nomes, o jogador que usou o Death Note, fica impossibilitado de usar denovo por 30 minutos. (Sem exhaust para CMs ou mais) - Jogadores com red skull ou black skull não podem ser mortos pelo Death Note. - O livro não se inutiliza. Bom, vamos começar? 1 - Vá em seus items.xml e troque os atributos dos seguintes itens: <item id="1972" article="a" name="death note"> <attribute key="weight" value="1000"> <attribute key="writeable" value="1"> <attribute key="maxTextLen" value="512"> <attribute key="writeOnceItemId" value="1955"> </item> <item id="1955" article="a" name="death note"> <attribute key="weight" value="1000"> </item> 2 - Vá em creaturescripts/scripts, crie um arquivo chamado deathnote.lua e cole o seguinte script abaixo: local deathnote = { max = 3, delay = 40, interval = 30 * 60 } local function DeathNote(param) if isCreature(param.target) then local position, damage = getThingPosition(param.target), getCreatureMaxHealth(param.target) return doAreaCombatHealth(0, COMBAT_DEATHDAMAGE, getThingPosition(param.target), 0, -(damage * 10), -(damage * 10), CONST_ME_MORTAREA) end end function onTextEdit(cid, item, newText) if item.itemid == 1972 then newText = string.explode(newText, "\n") if #newText > deathnote.max and getPlayerGroupId(cid) == 1 then doPlayerSendCancel(cid, "Sorry, but you cannot kill more than ".. deathnote.max .." players.") else if os.time() > getPlayerStorageValue(cid, 101011) or getPlayerGroupId(cid) > 3 then for _, name in ipairs(newText) do local target = getPlayerByNameWildcard(name) if target then if getCreatureSkullType(cid) >= 4 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, but ".. name .." cannot die by the power of Death Note.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, name .." will die in ".. deathnote.delay .." seconds.") setPlayerStorageValue(cid, 101011, os.time() + deathnote.interval) addEvent(DeathNote, deathnote.delay * 1000, {target = target}) end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, but ".. name .." isn't in this world.") end end else doPlayerSendCancel(cid, "You are exhausted to use Death Note.") end end return false end return true end 3 - Ainda em creaturescripts/scripts, abra o arquivo login.lua e adicione a seguinte linha: registerCreatureEvent(cid, "DeathNote") Antes de: return true 4 - Abra o arquivo creaturescripts.xml e adicione a seguinte chave. <event type="textedit" name="DeathNote" event="script" value="deathnote.lua"/> Para usar o Death Note depois de instalado o script, basta dar Use no livro e escrever um nome em cada linha dando Enter depois. Por exemplo: E por aí vai.
  14. Nossa, achei muito interessante e criativo este sistema. Talvez eu possa tentar algo. Qual o nome do servidor que desenvolveu ele?
  15. Veja se funciona. Acabei de acordar. local stones = { {position = {x =685, y = 40, z = 7}, itemid = 1304}, {position = {x =685, y = 41, z = 7}, itemid = 1304}, {position = {x =685, y = 42, z = 7}, itemid = 1304}, {position = {x =685, y = 43, z = 7}, itemid = 1304}, {position = {x =685, y = 44, z = 7}, itemid = 1304}, {position = {x =601, y = 40, z = 7}, itemid = 1304}, {position = {x =601, y = 41, z = 7}, itemid = 1304}, {position = {x =601, y = 42, z = 7}, itemid = 1304}, {position = {x =601, y = 43, z = 7}, itemid = 1304}, {position = {x =601, y = 44, z = 7}, itemid = 1304} } function onSay(cid, words, param, channel) for _, stone in ipairs(stones) do local item = getTileItemById(stone.position, stone.itemid) if item then doRemoveItem(item.uid, 1) end doCreateItem(stone.itemid, stone.position) end return true end
  16. Parabéns, pess0a.
  17. function onEquip(cid, item, slot) local outfit = {[1] = 100, [2] = 200, [3] = 300, [4] = 400} doSetCreatureOutfit(cid, outfit[getPlayerVocation(cid)], -1) doSendMagicEffect(getThingPosition(cid), 67) doChangeSpeed(cid, 500) return true end function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_OUTFIT) doChangeSpeed(cid, -500) doSendMagicEffect(getThingPosition(cid), 67) return true end
  18. Ei, cara. Você quer lucrar com servidor de Tibia e não tem capacidade de arrumar bugs do seu servidor? Ãh?
  19. Interessante. Código simples, mas tratando-se de uma magia, isso é normal. Creio que você deveria postar algum tipo de imagem demonstrando o funcionamento da magia. Att.
  20. Oneshot

    Sistema De Resets

    Qual um que tivesse lido o script, teria visto isso: [color=#282828][font=helvetica, arial, sans-serif]local stage = {Abilitar = {}, Desabilitar = {x}, --<< Abilitar Stages?? >>-- [{x};{}][/font][/color] [color=#282828][font=helvetica, arial, sans-serif] [/font][/color] Mude para isso [/font][/color] [color=#282828][font=helvetica, arial, sans-serif]local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}][/font][/color] [color=#282828][font=helvetica, arial, sans-serif]
  21. Um sistema desse feito pelas sources não iria ter nenhuma diferença notável, pois sua execução não "pesa" muito no processamento e memória do servidor.
  22. Interessante, não conhecia essa biblioteca Lua. Mas qual a relação e as aplicações dessas funções em Open Tibia?
  23. Oneshot

    Sistemas

    A ideia das barras de vida, né? Já vi sim. Tentarei fazer.
  24. 3º lugar? Nossa! Tô podendo hein... Só por curiosidade, quem são os 2º e 1º lugares? Vocês falam que o XTibia está "ruim", pois não viram as outras "comunidades".
  25. Bom, como estou de saída, deixo as dicas para os scripters que visitarem o tópico: - function onLogin(cid) - CONDITION_OUTFIT com CONDITION_PARAM_TICKS igual a -1 Att.
  • Quem Está Navegando   0 membros estão online

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