kazaana 2 Postado Fevereiro 23, 2014 Share Postado Fevereiro 23, 2014 (editado) Olá galera do xTibia ! eu gostaria de pedir ajuda com um sistema ',' sempre que um personagem passar de nivel ele ganha 5 Pontos , e esses pontos são trocados por Life ou Mana .. -> creaturescript ~ scripts ~ AdvPoints.lua function onAdvance(cid, skill, oldlevel, newlevel) local config = { repeatAfterDeath = false, points = 5, storage = 14005 } if skill ~= SKILL__LEVEL or (not config.repeatAfterDeath and getPlayerStorageValue(cid, config.storage) >= newlevel) then return true end doShowTextDialog(cid, 0, "Voce recebeu 5 points. \n Va ao dumbledore para trocar seus pontos.") addPoints(cid, config.points) setPlayerStorageValue(cid, config.storage, newlevel) return true end -> Creaturescripts ~ Creaturescrips.xml <event type="advance" name="AdvPoints" event="script" value="advpoints.lua"/> Npc ~~> Pontos.xml <?xml version="1.0"?> <npc name="Pontos" script="data/npc/scripts/points.lua" access="1" monster="1" speed="0" lookdir="2" pushable="0" level="100"> <health now="150" max="150"/> <look type="229" head="0" body="0" legs="0" feet="0" corpse="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Vendo {life} por 2 POINTS e {mana} por 2 POINTS."/> <parameter key="message_farewell" value="Adeus."/> <parameter key="message_walkaway" value="Ate logo entao..." /> </parameters> </npc> npc ~ scripts ~~ Pontos.lua 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 life,mana = {points = 2,Hp = 5},{points = 2,mn = 10} if (msgcontains(msg, 'life') or msgcontains(msg, 'life'))then npcHandler:say("Você quer comprar "..life.Hp.." Pontos de Hp por "..life.points.." points? {yes}", cid) talkState[talkUser] = 1 elseif (msgcontains(msg, 'mana') or msgcontains(msg, 'MANA'))then npcHandler:say("Você quer comprar "..mana.mn.." Pontos de mana por "..mana.points.." points ? {yes}", cid) talkState[talkUser] = 2 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPoints(cid) >= life.points then setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+life.Hp) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) removePoints(cid, life.points) npcHandler:say("Parabéns, você recebeu "..life.Hp.." Points de Hp!", cid) talkState[talkUser] = 0 else npcHandler:say("Desculpe, mas você você não tem "..life.points.." points!", cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then if getPoints(cid) >= mana.points then setCreatureMaxMana(cid, getCreatureMaxMana(cid)+mana.mn) doCreatureAddMana(cid, getCreatureMaxMana(cid)) removePoints(cid, mana.points) npcHandler:say("Parabéns, você recebeu "..mana.mn.." Pontos de Mana!", cid) talkState[talkUser] = 0 else npcHandler:say("Desculpe, mas você você não tem "..mana.points.." points!", cid) talkState[talkUser] = 0 end elseif msg == "no" then selfSay("Then not", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) .... gostaria de fazer para apenas as classes , 1 , 2 e 3 ganharem pontos a classe 4 não ... podem ajudar ? PS : como coloca em spoiler ?? Editado Fevereiro 23, 2014 por kazaana Link para o comentário Compartilhar em outros sites More sharing options...
0 MasterDino 41 Postado Fevereiro 23, 2014 Share Postado Fevereiro 23, 2014 so prescisa modificar o creaturescripts para nao ganhar os points: local config = { repeatAfterDeath = false, points = 5, storage = 14005, vocations = {1,2,3}, -- IDs das vocation que poderao ganhar points. } function onAdvance(cid, skill, oldlevel, newlevel) if skill ~= SKILL__LEVEL or (not config.repeatAfterDeath and getPlayerStorageValue(cid, config.storage) >= newlevel) then return true end if not isInArray(config.vocations, getPlayerVocation(cid)) then return true end doShowTextDialog(cid, 0, "Voce recebeu 5 points. \n Va ao dumbledore para trocar seus pontos.") addPoints(cid, config.points) setPlayerStorageValue(cid, config.storage, newlevel) return true end Link para o comentário Compartilhar em outros sites More sharing options...
0 DuuhCarvalho 325 Postado Fevereiro 23, 2014 Share Postado Fevereiro 23, 2014 seria melhor usar .. if getPlayerVocation(cid) < 4 then Link para o comentário Compartilhar em outros sites More sharing options...
0 kazaana 2 Postado Fevereiro 23, 2014 Autor Share Postado Fevereiro 23, 2014 Obrigado aos dois ! reps concedidos . podem fecha Link para o comentário Compartilhar em outros sites More sharing options...
0 zipter98 1101 Postado Fevereiro 23, 2014 Share Postado Fevereiro 23, 2014 Tópico movido para a seção de dúvidas e pedidos resolvidos. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
kazaana 2
Olá galera do xTibia ! eu gostaria de pedir ajuda com um sistema ','
sempre que um personagem passar de nivel ele ganha 5 Pontos , e esses pontos são trocados por Life ou Mana ..
-> creaturescript ~ scripts ~ AdvPoints.lua
PS : como coloca em spoiler ??
Editado por kazaanaLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados