Ir para conteúdo
  • 0

como fazer para uma classe nao receber points ?


kazaana

Pergunta

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 por kazaana
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

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

×
×
  • Criar Novo...