Ir para conteúdo

zipter98

Herói
  • Total de itens

    2553
  • Registro em

  • Última visita

  • Dias Ganhos

    72

Tudo que zipter98 postou

  1. Será de apenas 1 outfit, o addon recebido? Ou será de todas? Se for a primeira opção, poderia informar qual o ID da outfit? De qualquer maneira, tenta assim: Primeira opção: 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) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local cfg = { outfit = xxx, --ID da outfit. sto = xxx, --Storage. } if msgcontains(msg, 'first addon') then if getPlayerStorageValue(cid, 845511) < 1 then selfSay("Você tem storage "..cfg.sto.."?", cid) talkState[talkUser] = 1 return true else selfSay("Você já pegou seu primeiro addon.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, cfg.sto) >= 1 then selfSay("Ok, aqui está.", cid) doPlayerAddAddon(cid, cfg.outfit, 1) setPlayerStorageValue(cid, 845511, 1) talkState[talkUser] = 0 return true else selfSay("Você não tem a storage!", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then selfSay("Ok, então,") talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Segunda opção: 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) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local sto = xxx --Storage. if msgcontains(msg, 'first addon') then if getPlayerStorageValue(cid, 845511) < 1 then selfSay("Você tem storage "..sto.."?", cid) talkState[talkUser] = 1 return true else selfSay("Você já pegou seu primeiro addon.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, sto) >= 1 then selfSay("Ok, aqui está.", cid) doPlayerAddAddons(cid, 1) setPlayerStorageValue(cid, 845511, 1) talkState[talkUser] = 0 return true else selfSay("Você não tem a storage!", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then selfSay("Ok, então,") talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Sabe fazer o XML?
  2. Cara, tenta colocar esse código em spoiler. [.spoiler] [./spoiler], sem os pontos.
  3. Pode postar sua função addPokeToPlayer (se não me engano, fica em some functions.lua). local starterpokes = { ["hitmonchan"] = {x = 613, y = 990, z = 7}, ["hitmonlee"] = {x = 615, y = 990, z = 7}, } local btype = "normal" function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) > 20 then return true end local pokemon = "" for a, b in pairs (starterpokes) do if isPosEqualPos(topos, b) then pokemon = a end end if pokemon == "" then return true end if getPlayerStorageValue(cid, 759848) <= 6 then sendMsgToPlayer(cid, 27, "Derrote o Chuck Norris primeiro!!") return true end --alterado v1.9 \/ if getPlayerStorageValue(cid, 938111) >= 1 then return doPlayerSendCancel(cid, "Você já pegou um pokémon!") end doPlayerSendTextMessage(cid, 27, "You got your first pokemon! You also received some pokeballs to help you in your way.") doPlayerSendTextMessage(cid, 27, "Don't forget to use your pokedex on every undiscovered pokemon!") addPokeToPlayer(cid, pokemon, 0, nil, btype, true) doPlayerAddItem(cid, 11446, 10) doSendMagicEffect(getThingPos(cid), 29) setPlayerStorageValue(cid, 938111, 1) doSendMagicEffect(getThingPos(cid), 27) doSendMagicEffect(getThingPos(cid), 29) return TRUE end
  4. Sorry, falta de atenção. local chance = 5 --Chance, pokémon de jogador, sem aura de dar critical. local wild_chance = 10 --Chance do pokémon selvagem de dar critical. local chance_aura = 5 --Chance que será aumentada caso o pokémon tenha aura. if isSummon(attacker) then if getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "aura") then chance = chance + chance_aura else chance = chance end else chance = wild_chance end if math.random(1, 100) <= chance then if combat == PHYSICALDAMAGE then valor = valor else doSendAnimatedText(getThingPos(attacker), "Critical", 215) valor = valor * 2 --O critical está servindo como um "focus" (damage * 2) end end Ou local chance = 5 --Chance, pokémon de jogador, sem aura de dar critical. local wild_chance = 10 --Chance do pokémon selvagem de dar critical. local chance_aura = 5 --Chance que será aumentada caso o pokémon tenha aura. if isSummon(attacker) then if getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "aura") then chance = chance + chance_aura else chance = chance end else chance = wild_chance end if math.random(1, 100) <= chance then if combat == COMBAT_PHYSICALDAMAGE then valor = valor else doSendAnimatedText(getThingPos(attacker), "Critical", 215) valor = valor * 2 --O critical está servindo como um "focus" (damage * 2) end end
  5. data/creaturescripts/scripts, look.lua. Procure por: table.insert(str, "\nHit points: "..getCreatureHealth(thing.uid).."/"..getCreatureMaxHealth(thing.uid)..".") Adicione, abaixo: table.insert(str, "\nOffense: "..getPlayerStorageValue(thing.uid, 1001).."") table.insert(str, "\nSp.Attack: "..getPlayerStorageValue(thing.uid, 1005).."") table.insert(str, "\nDefense: "..getPlayerStorageValue(thing.uid, 1002).."") table.insert(str, "\nAgility: "..getPlayerStorageValue(thing.uid, 1003).."")
  6. Primeiramente, você quer que apareça no look da ball, do pokémon, ou na verificação da pokedex? Ou nos três? #EDIT: Aliás, no look da ball não é possível, infelizmente.
  7. Opa, essa área aqui é para aprovação de tutoriais. Como não é o caso do seu tópico, a área mais apropriada é Pedidos e dúvidas - Servidores derivados. Quando você quiser fazer algum pedido, ou dúvida, relacionado à servidores derivados (como Pokémon), opte por postar nessa área que mencionei. Cuidado da próxima vez, e obrigado.
  8. zipter98

    Item de transformar

    Movements, colartrans.lua. function onEquip(cid, item, slot) doPlayerSendTextMessage(cid, 27, "Você se transformou.") doSetCreatureOutfit(cid, {lookType = 254, lookBody = 77, lookHead = 0, lookLegs = 77, lookFeet = 114}, -1) return true end function onDeEquip(cid, item, slot) doPlayerSendTextMessage(cid, 27, "Você voltou ao normal.") if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) end return true end Tags: <movevent type="Equip" itemid="10220" slot="necklace" event="script" value="colartrans.lua"/> <movevent type="DeEquip" itemid="10220" slot="necklace" event="script" value="colartrans.lua"/>
  9. zipter98

    Pedido De Npc

    Área incorreta. Essa área é para postagem de códigos prontos, e não para pedidos. Para esse último, há uma área específica: Pedidos e dúvidas - Scripting. Portanto, quando for fazer pedidos/dúvidas relacionados à scripting, opte por postar lá. Já quando for relacionado à servidores derivados (Pokémon, Naruto, etc), Pedidos e dúvidas - Servidores derivados. Cuidado da próxima vez, e obrigado.
  10. zipter98

    Item de transformar

    Cara, não é assim que configura a outfit. Como eu disse, é o ID da outfit. Por exemplo, 114. E tirar o tempo = tirar exausted? Se for, function onUse(cid, item, frompos, item2, topos) local outfit = xxx --ID da outfit. local storage_one = 982011 local storage_two = 982012 if getPlayerStorageValue(cid, storage_one) >= 1 then if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, 27, "Você voltou ao normal!") setPlayerStorageValue(cid, storage_one, -1) setPlayerStorageValue(cid, storage_two, 1) end elseif getPlayerStorageValue(cid, storage_two) >= 1 then doSetCreatureOutfit(cid, {lookType = outfit}, -1) doPlayerSendTextMessage(cid, 27, "Você se transformou!") setPlayerStorageValue(cid, storage_two, -1) setPlayerStorageValue(cid, storage_one, 1) end return true end E com essa configuração que você colocou, ficaria assim: function onUse(cid, item, frompos, item2, topos) local storage_one = 982011 local storage_two = 982012 if getPlayerStorageValue(cid, storage_one) >= 1 then if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, 27, "Você voltou ao normal!") setPlayerStorageValue(cid, storage_one, -1) setPlayerStorageValue(cid, storage_two, 1) end elseif getPlayerStorageValue(cid, storage_two) >= 1 then doSetCreatureOutfit(cid, {lookType = 254, lookBody = 77, lookHead = 0, lookLegs = 77, lookFeet = 114}, -1) doPlayerSendTextMessage(cid, 27, "Você se transformou!") setPlayerStorageValue(cid, storage_two, -1) setPlayerStorageValue(cid, storage_one, 1) end return true end
  11. Só se esses status que você se refere, tiverem o valor igual às storages que mencionei acima.
  12. zipter98

    Item de transformar

    function onUse(cid, item, frompos, item2, topos) local cfg = { tempo = x, --Cooldown para usar o item novamente, em segundos. outfit = x, --ID da outfit. } local storage_one = 982011 local storage_two = 982012 if getPlayerStorageValue(cid, 918221) > os.time() then return doPlayerSendCancel(cid, "Aguarde "..getPlayerStorageValue(cid, 918221) - os.time().." segundo(s) para usar esse item novamente.") end if getPlayerStorageValue(cid, storage_one) >= 1 then if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, 27, "Você voltou ao normal!") setPlayerStorageValue(cid, storage_one, -1) setPlayerStorageValue(cid, storage_two, 1) setPlayerStorageValue(cid, 918221, os.time() + cfg.tempo) end elseif getPlayerStorageValue(cid, storage_two) >= 1 then doSetCreatureOutfit(cid, {lookType = cfg.outfit}, -1) doPlayerSendTextMessage(cid, 27, "Você se transformou!") setPlayerStorageValue(cid, storage_two, -1) setPlayerStorageValue(cid, storage_one, 1) setPlayerStorageValue(cid, 918221, os.time() + cfg.tempo) end return true end
  13. zipter98

    Item de transformar

    E como o player fará pra voltar ao "normal"? Por exemplo, após x tempo depois de ter usado o item? De qualquer maneira, fiz dessa maneira. Veja se lhe satisfaz. data/actions/scripts, crie um arquivo com extensão .lua, nomeie-o transform, e coloque o seguinte conteúdo: function onUse(cid, item, frompos, item2, topos) local cfg = { remove = true, --Vai remover o item? [true/sim] [false/não] tempo = x, --Tempo, em segundos, para voltar ao normal. tempo_dois = x, --Cooldown para usar o item novamente, em segundos. outfit = x, --ID da outfit. } if getPlayerStorageValue(cid, 918221) > os.time() then return doPlayerSendCancel(cid, "Aguarde "..getPlayerStorageValue(cid, 918221) - os.time().." segundo(s) para usar esse item novamente.") end doSetCreatureOutfit(cid, {lookType = cfg.outfit}, -1) setPlayerStorageValue(cid, 918221, os.time() + cfg.tempo_dois) if cfg.remove == true then doRemoveItem(item.uid, 1) end addEvent(function() if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) end end, cfg.tempo * 1000) return true end Depois, em data/actions, abra o arquivo actions.xml e coloque a seguinte tag: <action itemid="id do item" event="script" value="transform.lua"/>
  14. zipter98

    Item de transformar

    Transformar em um monstro que você se refere, é mudar a looktype?
  15. Tenta: local chance = 5 --Chance, pokémon de jogador, sem aura de dar critical. local wild_chance = 10 --Chance do pokémon selvagem de dar critical. local chance_aura = 5 --Chance que será aumentada caso o pokémon tenha aura. if isSummon(attacker) then if getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "aura") then chance = chance + chance_aura else chance = chance end else chance = wild_chance end if math.random(1, 100) <= chance then if combat == PHYSICALDAMAGE then valor = valor else doSendAnimatedText(getThingPos(attacker), "Critical", 215) valor = valor * 2 --O critical está servindo como um "focus" (damage * 2) end Ou local chance = 5 --Chance, pokémon de jogador, sem aura de dar critical. local wild_chance = 10 --Chance do pokémon selvagem de dar critical. local chance_aura = 5 --Chance que será aumentada caso o pokémon tenha aura. if isSummon(attacker) then if getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "aura") then chance = chance + chance_aura else chance = chance end else chance = wild_chance end if math.random(1, 100) <= chance then if combat == COMBAT_PHYSICALDAMAGE then valor = valor else doSendAnimatedText(getThingPos(attacker), "Critical", 215) valor = valor * 2 --O critical está servindo como um "focus" (damage * 2) end
  16. Apenas os status "base" do pokémon (os do configuration.lua).
  17. Pode me mandar seu level system.lua, e seu catch system.lua? Testei aqui no PDA com level, v2.9, e tá funcionando perfeitamente. Se você estiver usando o mesmo servidor que eu, provavelmente fez algo errado.
  18. Substitua por esse: Se o erro persistir, me mande por PM seu NPC configurado.
  19. É como eu disse no meu comentário anterior, altere na função adjustStatus. Sendo mais específico, você verá algo como: setPlayerStorageValue(pk, 1001, pokes[getCreatureName(pk)].offense * (getMasterLevel(pk) + getPokemonBoost(pk))) setPlayerStorageValue(pk, 1002, pokes[getCreatureName(pk)].defense) setPlayerStorageValue(pk, 1003, pokes[getCreatureName(pk)].agility) setPlayerStorageValue(pk, 1004, pokes[getCreatureName(pk)].vitality * (getMasterLevel(pk) + getPokemonBoost(pk))) setPlayerStorageValue(pk, 1005, pokes[getCreatureName(pk)].specialattack * (getMasterLevel(pk) + getPokemonBoost(pk))) É isso que define os status do pokémon (por isso que, em PDA sem level, doItemSetAttribute(item, "offense"), por exemplo, não funciona). Basta editar o valor dessas storages à seu gosto (relembrando, valor dessas storages = status). getMasterLevel representa o level do jogador; getPokemonBoost, o boost do pokémon; pokes[getCreatureName(pk)].status, o respectivo status do pokémon na tabela pokes (de configuration.lua).
  20. Sobre sua segunda pergunta, data/lib/level system.lua, função adjustStatus.
  21. Você quer que o critical só funcione para spells? É isso? E, não, a chance mínima é 1%.
  22. Opa, área incorreta. Quando seu pedido for relacionado à servidores derivados (como pokémon, naruto, etc), opte por postar na devida área - Pedidos e dúvidas - Servidores derivados. Cuidado da próxima vez, e obrigado.
  • Quem Está Navegando   0 membros estão online

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