Ir para conteúdo

[Encerrado] Action ID e UP


Tingasgo

Posts Recomendados

Então galera, de novo aqui mas dessa vez queria pedir 3 coisas mais fáceis:

 

1: Então eu queria colocar pra quando o player upar o pokemon recarregasse a vida. 

 

2:Uma alavanca que verifica se você tem uma storage e se você tiver ele te teletransporta pra algum lugar. (RESOLVIDO)

 

3:Como aumentar esse "(itemsss, sep1, sep2)" para ter mais... segue o function:

 

 

 

function doConcatTable(itemsss, sep1, sep2)
    str = ""
    if #itemsss > 0 then
        for i = 1, #itemsss do
            if #itemsss > 1 then
                if i ~= #itemsss then
                    if i ~= 1 then
                        str = str..sep1..itemsss
                    else
                        str = str..itemsss
                    end
                else
                    str = str..sep2..itemsss
                end
            else
                str = itemsss
            end
        end
    end
    return str
end

 

 

OBS: Só uma perguntinha extra como cria spoiler, aquele "citar"?

 

Obrigado pela atenção!

 

Rep+++ pra quem resolver essas minhas perguntas queria muito resolver isso ^^ muito obrigado pela atenção xD

Editado por Tingasgo
Link para o comentário
Compartilhar em outros sites

11 horas atrás, Tingasgo disse:

Então galera, de novo aqui mas dessa vez queria pedir 3 coisas mais fáceis:

 

1: Então eu queria colocar pra quando o player upar o pokemon recarregasse a vida.

 

2:Uma alavanca que verifica se você tem uma storage e se você tiver ele te teletransporta pra algum lugar.

 

3:Como aumentar esse "(itemsss, sep1, sep2)" para ter mais... segue o function:

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

function doConcatTable(itemsss, sep1, sep2)

    str = ""

    if #itemsss > 0 then

        for i = 1, #itemsss do

            if #itemsss > 1 then

                if i ~= #itemsss then

                    if i ~= 1 then

                        str = str..sep1..itemsss

                    else

                        str = str..itemsss

                    end

                else

                    str = str..sep2..itemsss

                end

            else

                str = itemsss

            end

        end

    end

    return str

end

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

OBS: Só uma perguntinha extra como cria spoiler, aquele "citar"?

 

Obrigado pela atenção!

 

Rep+++ pra quem resolver essas minhas perguntas queria muito resolver isso ^^ muito obrigado pela atenção xD

2-

 

local text = "msg"local pos = {x=2510, y=2233, z=14} --locallocal stor = 65423 function onUse(cid, item, fromPosition, itemEx, toPosition)if getPlayerStorageValue(cid, stor) >= 1 then doTeleportThing(cid, pos) doPlayerSendTextMessage(cid, 25, text)else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "x")    endreturn trueend

 

Para criar Spoiler use assim:

 

[spoiler.]

 

Mensagem aqui

 

[/spoiler.]

 

(sem os pontos)

Link para o comentário
Compartilhar em outros sites

14 minutos atrás, Crypter disse:

2-

 

local text = "msg"local pos = {x=2510, y=2233, z=14} --locallocal stor = 65423 function onUse(cid, item, fromPosition, itemEx, toPosition)if getPlayerStorageValue(cid, stor) >= 1 then doTeleportThing(cid, pos) doPlayerSendTextMessage(cid, 25, text)else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "x")    endreturn trueend

 

Para criar Spoiler use assim:

 

[spoiler.]

 

Mensagem aqui

 

[/spoiler.]

 

(sem os pontos)

 

Acredito que seja aqui que eu coloco o doCreatureAddHealth só não sei como fazer que seria o pokemon para se curar ;-;

 

 

 

 

 

 

local configuracao = {

efeito = {28, 29},         -- Efeito que vai mandar ao avançar de level.

texto = "Level up!",     -- Texto que vai aparecer ao avançar de level.

cortexto = 215        -- Cor do texto, sendo o número entre 1 e 254.

}

 

function onAdvance(cid, skill, oldLevel, newLevel)

if skill ~= 8 then return true end

if newLevel >= 11 and newLevel <= 200 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, math.floor(newLevel/2)) end   --alterado v1.8

 

---doRegainSpeed(cid)

local p = getThingPosWithDebug(cid)

doSendMagicEffect({x=p.x+1, y=p.y, z=p.z}, 382)

 

local color = 0

 

local s = getCreatureSummons(cid)

local item = getPlayerSlotItem(cid, 8):

doCreatureAddHealth(cid, getCreatureMaxHealth(cid))                                                            

return true

end

 

 

 

 

 

OBS: Foi mais pra ver se consigo fazer o spoiler ;-; mas caso possa ajudar rs

 

 

Link para o comentário
Compartilhar em outros sites

11 minutos atrás, Tingasgo disse:

 

Acredito que seja aqui que eu coloco o doCreatureAddHealth só não sei como fazer que seria o pokemon para se curar ;-;

 

 

  Ocultar conteúdo

 

 

 

 

 

local configuracao = {

efeito = {28, 29},         -- Efeito que vai mandar ao avançar de level.

texto = "Level up!",     -- Texto que vai aparecer ao avançar de level.

cortexto = 215        -- Cor do texto, sendo o número entre 1 e 254.

}

 

function onAdvance(cid, skill, oldLevel, newLevel)

if skill ~= 8 then return true end

if newLevel >= 11 and newLevel <= 200 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, math.floor(newLevel/2)) end   --alterado v1.8

 

---doRegainSpeed(cid)

local p = getThingPosWithDebug(cid)

doSendMagicEffect({x=p.x+1, y=p.y, z=p.z}, 382)

 

local color = 0

 

local s = getCreatureSummons(cid)

local item = getPlayerSlotItem(cid,

local s = getCreatureSummons(cid)[1]

doCreatureAddHealth(s, getCreatureMaxHealth(s))                                                           

return true

end

 

 

 

 

 

OBS: Foi mais pra ver se consigo fazer o spoiler ;-; mas caso possa ajudar rs

 

 

Editei a script e so testa

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, Crypter disse:

Editei a script e so testa

Nada, agora só não cura mais o player simplesmente passa de nível

 

eu pensei nessa função "doSummonAddHealth" mas não sei se funciona...

 

ficando assim

 

 

 

 

 

local configuracao = {

efeito = {28, 29},         -- Efeito que vai mandar ao avançar de level.

texto = "Level up!",     -- Texto que vai aparecer ao avançar de level.

cortexto = 215        -- Cor do texto, sendo o número entre 1 e 254.

}

 

function onAdvance(cid, skill, oldLevel, newLevel)

if skill ~= 8 then return true end

if newLevel >= 11 and newLevel <= 200 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, math.floor(newLevel/2)) end   --alterado v1.8

 

---doRegainSpeed(cid)

local p = getThingPosWithDebug(cid)

doSendMagicEffect({x=p.x+1, y=p.y, z=p.z}, 382)

 

local color = 0

 

local s = getCreatureSummons(cid)

local item = getPlayerSlotItem(cid,

doCreatureAddHealth(s, getCreatureMaxHealth(s))    

doSummonAddHealth(s, getCreatureMaxHealth(s))                                    

return true

end

 

 

 

 

Não faço a minima ideia se funciona ;-;

Link para o comentário
Compartilhar em outros sites

12 minutos atrás, Poccnn disse:

Eu não entendi. Tu quer por mais parâmetros?

Sim, mais ou menos, olha vou te explicar, tenho o sistema de profissão e quando eu tento adicionar mais de 3 itens na tabela o npc simplesmente não funciona mas quando tem menos de 2 ou 2 ele funciona normalmente segue o script:

 

LIB

 

 

 

-- Sistema de profissão

-- Desenvolvido por Gabriel Lucena (Drazyn1291/BielLucena1291) e GOD Vitor.

 

-- Geral

 

ProfessionLib = {

    geral_sto = 123123, -- Não mecha

    OutfitTime = 3, -- Tempo em que dura a outfit

    NeedVip = false, -- Se precisa de vip para mudar/virar a profissão

    CostToChange = 5, -- Quantidade do itemid abaixo que vai ser usado para mudar de profissão

    itemid = 2145, -- Item que vai ser usado para mudar de profissão

    quantMax = 5, -- Quantidade máxima

}

ProfessionId = {

    --[4] = {name = Proffision Name, looktypeM = LookType male (Coletando item), looktypeF = LookType Female, CollectItemId = Item que coleta (Ex: Machado do stylist), CollectItem = Item Que é coletado (Madeira do stylist), targetItem = {target = Item Alvo (Arvore do Stylist), newid = Item que é transformado depois de cortado}},

    [1] = {name = "Stylist", looktypeM = 2749, looktypeF = 2750, CollectItemId = 17130, CollectItem = 17143, targetItem = {target = 2711, newid = 17150}},

    [2] = {name = "Engineer", looktypeM = 2747, looktypeF = 2748, CollectItemId = 17127, CollectItem = 17133, targetItem = {target = 17132, newid = 9419}},

    [3] = {name = "Adventurer", looktypeM = 2753, looktypeF = 2754, CollectItemId = 17173, CollectItem = 17189, targetItem = {target = 17174, newid = 17175}},

    [4] = {name = "Teacher", looktypeM = 2751, looktypeF = 2752, CollectItemId = 17155, CollectItem = 17153, targetItem = {target = 17156, newid = 6216}},

}

-- NPC de troca

SellStylist = { 

    --{id = ID, toDo = {{id, quant}, {id, quant}}}

    [1] = {id = 17135, quant = 100, level = 50, toDo = {{17143, 500}}},

    [2] = {id = 17347, quant = 1, level = 50, toDo = {{17135, 300}}},

    [3] = {id = 17137, quant = 100, level = 100, toDo = {{17135, 200}}},

    [4] = {id = 17346, quant = 1, level = 100, toDo = {{17137, 200}}},

}

SellEnginner = {

    --{id = ID, toDo = {{id, quant}, {id, quant}}}

    [1] = {id = 17198, quant = 1, level = 100, toDo = {{17133, 1000}}},

    [2] = {id = 17195, quant = 1, level = 150, toDo = {{17198, 1}, {11447, 50}}},

    [3] = {id = 17197, quant = 1, level = 200, toDo = {{17195, 1}, {11442, 50}}},

    [4] = {id = 17199, quant = 1, level = 250, toDo = {{17197, 1}, {11450, 50}}},

    [5] = {id = 17196, quant = 1, level = 300, toDo = {{17199, 1}, {11441, 100}}},

}

SellAdventurer = {

    --{id = ID, toDo = {{id, quant}, {id, quant}}}

    [1] = {id = 16689, quant = 1, level = 100, toDo = {{17189, 500}, {17133, 50}}},

    [2] = {id = 17350, quant = 1, level = 100, toDo = {{17189, 1000}, {17137, 50}}},

}

 

SellTeacher = {

    --{id = ID, toDo = {{id, quant}, {id, quant}}}

    [1] = {id = 2174, quant = 100, level = 10, toDo = {{2177, 10}, {2160, 2}}},

    [2] = {id = 2175, quant = 10, level = 10, toDo = {{2179, 2}, {2160, 3}}},

}

 

-- Functions

 

function canEnterInProfession(cid)

    if ProfessionLib.NeedVip and not isPremium(cid) then

        return false

    end

    return true

end

 

function existProfession(profName)

    cont = false

    for i = 1, #ProfessionId do

        if not cont then

            if ProfessionId.name == profName then

                cont = true

            end

        end

    end

    return cont

end

 

function hasProfession(cid)

    if ProfessionId[getPlayerProfessionId(cid)] then

        return true

    end

    return false

end

 

function existProfession(profName)

    cont = false

    for i = 1, #ProfessionId do

        if not cont then

            if ProfessionId.name == profName then

                cont = true

            end

        end

    end

    return cont

end

 

function getProfessionIdByName(profName)

    for i = 1, #ProfessionId do

        if ProfessionId.name == profName then

            return i

        end

    end    

end

 

function doChangeProfession(cid, id, check)

    if ProfessionLib.NeedVip and not isPremium(cid) then

        return false

    end

 

    if check then

        if hasProfession(cid) then

            return false

        else

            if ProfessionId[id] or id == 0 then

                setPlayerStorageValue(cid, ProfessionLib.geral_sto, id)

                doPlayerAddItem(cid, ProfessionId[id].CollectItemId, 1)

            else

                return false

            end

        end

    else

        if ProfessionId[id] or id == 0 then

            setPlayerStorageValue(cid, ProfessionLib.geral_sto, id)

            doPlayerAddItem(cid, ProfessionId[id].CollectItemId, 1)

        else

            return false

        end        

    end

end

 

function getPlayerProfessionId(cid)

    return getPlayerStorageValue(cid, ProfessionLib.geral_sto)

end

 

function getProfessionName(cid)

    if hasProfession(cid) then

        return ProfessionId[getPlayerProfessionId(cid)].name

    end

    return ""

end

 

function doReturnItemsWithDelay(toPosition, itemid, times)

    local function doReturnItem(itemposition,oldid)

        local pos = getThingfromPos(itemposition)

        doTransformItem(pos.uid,oldid)

        doSetItemText(pos.uid, getItemNameById(oldid))    

    end

    addEvent(doReturnItem, times * 3000,toPosition, itemid)

end

 

function doConcatTable(itemsss, sep1, sep2)

    str = ""

    if #itemsss > 0 then

        for i = 1, #itemsss do

            if #itemsss > 1 then

                if i ~= #itemsss then

                    if i ~= 1 then

                        str = str..sep1..itemsss

                    else

                        str = str..itemsss

                    end

                else

                    str = str..sep2..itemsss

                end

            else

                str = itemsss

            end

        end

    end

    return str

end

 

 

 

 OBS: Eu acredito que para poder colocar mais de 2 itens na tabela tenha que aumentar a os parâmetros marcados.

 

Action:

 

 

 

 

 

-- Sistema de profissão

-- Desenvolvido por Gabriel Lucena (Drazyn1291/BielLucena1291)

 

--Tag: <action itemid="ITEMID;ITEMID;ITEMID;ITEMID" event="script" value="ProfessionAction.lua"/>-

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

    if not isCreature(itemEx.uid) then

        if not (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then

            if ProfessionId[getPlayerProfessionId(cid)] then

                cont = false

                name = ""

                for i = 1, #ProfessionId do

                    if item.itemid == ProfessionId.CollectItemId and i == getPlayerProfessionId(cid) then

                        cont = true

                    else

                        if item.itemid == ProfessionId.CollectItemId then

                            name = ProfessionId.name

                        end

                    end

                end

                if cont then

                    if ProfessionId[getPlayerProfessionId(cid)].targetItem.target == itemEx.itemid then

                        toPos = getThingPosition(itemEx.uid)

                        fromPos = getCreaturePosition(cid)

                        if getDistanceBetween(fromPos, toPos) <= 1 then

                            if getDirectionTo(fromPos, toPos) == getCreatureLookDirection(cid) then

                                quantItem = math.random(1, ProfessionLib.quantMax)

                                doCreatureSetNoMove(cid, true)

                                if getPlayerSex(cid) == 1 then

                                    lp = ProfessionId[getPlayerProfessionId(cid)].looktypeM

                                else

                                    lp = ProfessionId[getPlayerProfessionId(cid)].looktypeF

                                end

                                doSetCreatureOutfit(cid, {lookType = lp}, -1) -- getCreatureLookDirection(cid)

                                addEvent(function()

                                    doRemoveCondition(cid, CONDITION_OUTFIT)

                                    doCreatureSetNoMove(cid, false)

                                    doTransformItem(getThingFromPos(toPos).uid, ProfessionId[getPlayerProfessionId(cid)].targetItem.newid)

                                    doReturnItemsWithDelay(toPos, ProfessionId[getPlayerProfessionId(cid)].targetItem.target, 15)

                                    doPlayerAddItem(cid, ProfessionId[getPlayerProfessionId(cid)].CollectItem, quantItem)

                                    doPlayerSendTextMessage(cid, 27, "Você recebeu "..quantItem.."x "..getItemNameById(ProfessionId[getPlayerProfessionId(cid)].CollectItem).." por fazer essa ação!")

                                end, ProfessionLib.OutfitTime*1000)

                            else

                                doPlayerSendCancel(cid, "Você percisa ficar de frente para esse item!")

                            end

                        else

                            doPlayerSendCancel(cid, "Você precisa está na frente do item!")

                        end

                    else

                        doPlayerSendCancel(cid, "Você não pode usar esse item aqui!")

                    end

                else

                    doPlayerSendCancel(cid, "Você precisa ser "..name.." para usar esse item!")

                end

            else

                doPlayerSendCancel(cid, "Você não tem nenhuma profissão!")

            end

        else

            doPlayerSendCancel(cid, "Você não pode usar esse item enquanto estiver montado!")

        end

    else

        doPlayerSendCancel(cid, "Você não pode usar esse item aqui!")

    end

    return true

end

 

 

 

 

E por ultimo um arquivo do npc:

 

 

 

 

 

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

    if isInArray({"Help", "Stylist"}, doCorrectString(msg)) then

        if getPlayerProfessionId(cid) == 1 then

            itemsName = {}

            for i = 1, #SellStylist do

                if getPlayerLevel(cid) >= SellAdventurer.level then

                    table.insert(itemsName, i, "{"..doCorrectString(getItemNameById(SellStylist.id)).."}")

                end

            end

            selfSay("Eu posso te ajudar a fazer ".. doConcatTable(itemsName, ", ", " ou ") ..".", cid)

            talkState[talkUser] = 1

        else

            selfSay("Você não é estilista!", cid)

        end

    elseif talkState[talkUser] == 1 then

        mesg = "{"..doCorrectString(msg).."}"

        if isInArray(itemsName, mesg) then

            itemid = getItemIdByName(msg)

            id = 0

            for i = 1, #SellStylist do

                if itemid == SellStylist.id then

                    id = i

                end

            end    

            if SellStylist[id] then

                tab = SellStylist[id]

                if getPlayerLevel(cid) >= tab.level then

                    itemsToDo = {}

                    for _, t in ipairs(tab.toDo) do

                        table.insert(itemsToDo, t[2].."x "..getItemNameById(t[1]))

                    end

                    talkState[talkUser] = 2

                    selfSay("Você precisa de ".. doConcatTable(itemsToDo, ", ", " e ")..", para fazer "..tab.quant.."x "..doCorrectString(msg).."!", cid)

                end

            end

        end

    elseif talkState[talkUser] == 2 then

        if isInArray({"yes", "sim", "si"}, msg) then

            cont = true

            for _, t in ipairs(tab.toDo) do

                if getPlayerItemCount(cid, t[1]) < t[2] then

                    cont = false

                end

            end

            if cont then

                for _, t in ipairs(tab.toDo) do

                    doPlayerRemoveItem(cid, t[1], t[2])

                end

                doPlayerAddItem(cid, tab.id, tab.quant, false)

                selfSay("Pronto, pegue aqui seu(s) item(s)!", cid)

            else

                selfSay("Você não tem os items nescessários.", cid)

            end

        elseif isInArray({"no", "nao", "não"}, msg) then

            selfSay("Ok, adeus.", cid)

        end

    else

        selfSay("Eu não sei fazer isso!", cid)

    end

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

Obrigado pela atenção desde já ^^

Editado por Tingasgo
Link para o comentário
Compartilhar em outros sites

Citar

function doConcatTable(itemsss, sep1, sep2)
    str = ""

    if #itemsss > 0 then

        for i = 1, #itemsss do

            if #itemsss > 1 then

                if i ~= #itemsss then

                    if i ~= 1 then

                        str = str..sep1..itemsss

                    else

                        str = str..itemsss

                    end

                else

                    str = str..sep2..itemsss

                end

            else

                str = itemsss

            end

        end

    end

    return str

end 

 

Sinceramente eu nem sei como esse script consegue concatenar uma tabela usando o operador de atribuição(..). Isso em lua resulta em erro.

 

Sinceramente, esse é o tipo do sistema que eu prefiro refaze-lo do que remenda-lo. 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Poccnn disse:

 

Sinceramente eu nem sei como esse script consegue concatenar uma tabela usando o operador de atribuição(..). Isso em lua resulta em erro.

 

Sinceramente, esse é o tipo do sistema que eu prefiro refaze-lo do que remenda-lo. 

Tem alguma maneira de você refaze-lo para mim?

5 horas atrás, Crypter disse:

Editei a script e so testa

Amigo, ainda não consegui... 

Alguma idéia?

 

(BASE DXP)

Link para o comentário
Compartilhar em outros sites

Faz o seguinte: nessa função doconcattable, apaga tudo de dentro do bloco dela e insere isso:

Citar

return "string concat"

 

Agora testa de volta teu sistema.

Link para o comentário
Compartilhar em outros sites

8 horas atrás, Poccnn disse:

Faz o seguinte: nessa função doconcattable, apaga tudo de dentro do bloco dela e insere isso:

 

Agora testa de volta teu sistema.

Deixei o sistema assim:

 

function doConcatTable(itemsss, sep1, sep2)

    return "string concat"

end

 

Com mais de 2 objetos ainda permanece o mesmo erro mas quando você deixa 2 ou menos o npc fala isso:

 

Shae: Eu posso te ajudar a fazer string concat.

 

Alguma ideia?

Editado por Tingasgo
Link para o comentário
Compartilhar em outros sites

A única coisa que posso te dizer é que teria que ser refeito ou analisado minuciosamente todo o código para que possa ser refeito ou recuperado. 

Link para o comentário
Compartilhar em outros sites

  • 8 months later...
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

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