Ir para conteúdo

zipter98

Herói
  • Total de itens

    2553
  • Registro em

  • Última visita

  • Dias Ganhos

    72

Tudo que zipter98 postou

  1. Tópico movido para lixeira, qualquer dúvida entre em contato com qualquer membro da equipe.
  2. Tópico movido para lixeira, qualquer dúvida entre em contato com qualquer membro da equipe.
  3. Tópico movido para lixeira, qualquer dúvida entre em contato com qualquer membro da equipe.
  4. Tópico movido para lixeira, qualquer dúvida entre em contato com qualquer membro da equipe.
  5. Tópico movido para lixeira, qualquer dúvida entre em contato com qualquer membro da equipe.
  6. Sim, em ambos.
  7. Por padrão, não há como configurar na tag condições envolvendo outras skills, como as citadas por você. Apesar de ser possível mudar isso nas sources do servidor, a opção mais fácil é no próprio código Lua, usando a seguinte função: getPlayerSkillLevel(cid, skillid) Exemplo de uso: if getPlayerSkillLevel(cid, SKILL_SWORD) < 10 then return doPlayerSendCancel(cid, "Você não pode usar esta spell pois seu nível em sword é abaixo de 10.") end OBS: Você deve usar esta condição abaixo do callback onCastSpell.
  8. Veja meu comentário neste tópico.
  9. Troque: if not look then doSetItemAttribute(pb,"addon",0) return false end if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) return true end por: if not look then doSetItemAttribute(pb,"addon",0) end if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end
  10. zipter98

    Npc Quest

    Uhum, editado.
  11. data/movements/scripts: local health, mana = xxx, xxx --Respectivamente, quantidade de vida e mana adicionadas. function onEquip(cid) setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + health) setCreatureMaxMana(cid, getCreatureMaxMana(cid) + mana) return true end function onDeEquip(cid) setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) - health) setCreatureMaxMana(cid, getCreatureMaxMana(cid) - mana) return true end Tags: <movevent type="Equip" itemid="ID_do_anel" slot="slot_do_anel" event="script" value="nome_do_arquivo.lua"/> <movevent type="DeEquip" itemid="ID_do_anel" slot="slot_do_anel" event="script" value="nome_do_arquivo.lua"/>
  12. zipter98

    Npc Quest

    local options = { --["option"] = key, --Ex.: ["task_1"] = 9230, ["task_2"] = 9321, ["quest"] = 9322, } local choose_more_times = true --True se puder escolher mais de uma opção, false caso contrário. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) msg = msg:lower() if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "quest") or msgcontains(msg, "help") or msgcontains(msg, "options") then local option_table = {} for option, key in pairs(options) do if not choose_more_times and getPlayerStorageValue(cid, key) > -1 then return selfSay("You already have chosen your option.", cid) end option_table[#option_table + 1] = option end selfSay("I have "..#option_table.." options for you. Which one do you choose? {"..table.concat(option_table, ",").."}", cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if options[msg] then selfSay("Ok, you chose "..msg.."!", cid) setPlayerStorageValue(cid, options[msg], 1) talkState[talkUser] = 0 else selfSay("I didn't give you this option. Please, tell me a valid one.", cid) end else selfSay("Sorry, I didn't understand what you said.", cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  13. Uhum, creatureevent editado.
  14. @Martelix O único problema no seu código é a comparação de tabelas através do sinal de igualdade não ser possível. @topic local positions = { wallPos = {x = x, y = y, z = z}, --Posição da parede. toPos = {x = x, y = y, z = z} --Para onde o jogador será teleportado. } function onUse(cid, item, fromPosition, itemEx, toPosition) if toPosition.x == positions.wallPos.x and toPosition.y == positions.wallPos.y and toPosition.z == positions.wallPos.z then doPlayerSendTextMessage(cid, 27, "You used your "..getItemNameById(item.itemid).." in a "..getItemNameById(itemEx.itemid).." and was teleported.") doTeleportThing(cid, positions.toPos) doRemoveItem(item.uid, 1) else doPlayerSendCancel(cid, "Use it in the correct wall.") end return true end Tag: <action itemid="5468" event="script" value="nome_do_arquivo.lua"/>
  15. Um amigo me pediu este sisteminha alguns dias atrás. Como poderá ver, é algo bem simples. Entretanto, ele pode conflitar com outras mudanças de outfit que o pokémon venha sofrer. Para evitar isso, você terá de fazer algumas mudanças adicionais, explicadas adiante. Primeiramente, em algum arquivo da lib: outfits_order = { --["nome_do_pokemon"] = {outfit1, outfit2, outfit3, ...}, } function doTradeOutfit(cid, index) if not isSummon(cid) then return true end local outfit = outfits_order[getCreatureName(cid)] if not outfit[index] then index = 1 end doSetCreatureOutfit(cid, {lookType = outfit[index]}, -1) addEvent(doTradeOutfit, 200, cid, index + 1) end As outfits devem ser configuradas na ordem em que serão trocadas. O resto dependerá de onde a função será chamada. Se a animação do pokémon começar logo após ele ter sido chamado da pokébola, então, em goback.lua (data/actions/scripts): Abaixo de: local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end Coloque: if outfits_order[getCreatureName(pk)] then doTradeOutfit(pk, 1) end Se formos seguir a lógica da gif demonstrada, a função deveria ser chamada após a mega evolução, o que dependeria de como o sistema usado por você foi escrito. Usando o meu, o processo seria o seguinte: Em pokemon moves.lua (data/lib), no código da spell Mega Evolution: Abaixo de: adjustStatus(newPoke, ball, true, false) coloque: if outfits_order[getCreatureName(newPoke)] then doTradeOutfit(newPoke, 1) end Caso os pokémons que façam parte do sistema de mudança constante de outfit possam ter sua looktype alterada de alguma maneira durante o jogo (por exemplo, um Mega Charizard X usando Outrage ou uma Rapidash usando Blue Flames), você deverá fazer algumas pequenas mudanças. Troque a função que passei anteriormente por essa: function doTradeOutfit(cid, index) if not isSummon(cid) then return true end local outfit = outfits_order[getCreatureName(cid)] if not getCreatureCondition(cid, CONDITION_OUTFIT) or isInArray(outfit, getCreatureOutfit(cid).lookType) then if not outfit[index] then index = 1 end doSetCreatureOutfit(cid, {lookType = outfit[index]}, -1) end addEvent(doTradeOutfit, 200, cid, index + 1) end Depois, no código de todos os possíveis fatores que possam mudar a outfit dos pokémons participantes do sistema, acima da linha responsável pela alteração na looktype: doSetCreatureOutfit(...) Coloque isso: if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) end Sinceramente, acho que você só terá de fazer isso em pouquíssimos códigos. Por gentileza, poste um feedback do sistema. Assim, saberei se devo ou não mover o tópico.
  16. Tópico Movido Este tópico foi movido de "OTServ → Suporte → Suporte Scripting" para "OTServ → Suporte → Suporte Servidores derivados".
  17. Epa, jurei ter lido que a vocação iria trocar, não que o jogador seria promovido. Corrigido.
  18. NPC: Creatureevent (data/creaturescripts/scripts): local prom_lv, toPos = 2, {x = x, y = y, z = z} --Respectivamente, nível da promoção e posição para onde o jogador será teleportado quando a premium acabar. function onLogin(cid) local prem_days = getPlayerPremiumDays(cid) if prem_days > 0 and getPlayerPromotionLevel(cid) ~= prom_lv then doPlayerSetPromotionLevel(cid, prom_lv) elseif prem_days == 0 and getPlayerPromotionLevel(cid) == prom_lv then doPlayerSetPromotionLevel(cid, prom_lv - 1) doTeleportThing(cid, toPos) end return true end Tag: <event type="login" name="checkVocationPremium" event="script" value="nome_do_arquivo.lua"/>
  19. Tópico movido para dúvidas / pedidos resolvidos.
  20. Como a explicação ficou meio vaga, fiz da maneira que entendi. local itemid, toPos = xxx, {x = x, y = y, z = z} --Respectivamente, ID da parede e para onde o jogador será teleportado. function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == itemid then doPlayerSendTextMessage(cid, 27, "You used your "..getItemNameById(item.itemid).." in a "..getItemNameById(itemid).." and was teleported.") doTeleportThing(cid, toPos) doRemoveItem(item.uid, 1) else doPlayerSendCancel(cid, "Use it in the correct wall.") end return true end
  21. Tópico Movido Este tópico foi movido de "Xtibia.com → Atendimento → Feedback" para "OTServ → Suporte → Suporte Programação".
  22. Se a storage for alterada durante o "processo", o servidor cai. Para evitar isso, vejam a correção que enviei alguns comentários acima para o nociam. Troque a linha responsável pela modificação na storage por este código: local name = "monster_name" --Nome do monstro. function Substitute(cid) for _, pid in pairs(getSpectators(getThingPos(cid), 8, 8)) do if isMonster(pid) and getCreatureName(pid) == name then local healthNow, posNow = getCreatureHealth(pid), getThingPos(pid) doRemoveCreature(pid) local newMonster = doCreateMonster(name, posNow) doCreatureAddHealth(newMonster, -(getCreatureMaxHealth(newMonster) - healthNow)) end end end setPlayerStorageValue(cid, storage, valor) Substitute(cid)
  23. Tópico Movido Este tópico foi movido de "OTServ → Anúncio de OTservers → Servidores Derivados" para "OTServ → Downloads → Servidores → Servidores derivados → Sprites de servidores derivados".
  24. Tópico Movido Este tópico foi movido de "OTServ → Anúncio de OTservers → Servidores Derivados" para "OTServ → Downloads → Servidores → Servidores derivados → Sprites de servidores derivados".
  25. Tópico movido para dúvidas / pedidos resolvidos.
  • Quem Está Navegando   0 membros estão online

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