Tingasgo 38 Postado Fevereiro 28, 2017 Share Postado Fevereiro 28, 2017 (editado) 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 strend 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 Fevereiro 28, 2017 por Tingasgo Link para o comentário Compartilhar em outros sites More sharing options...
Crypter 136 Postado Fevereiro 28, 2017 Share Postado Fevereiro 28, 2017 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 More sharing options...
Tingasgo 38 Postado Fevereiro 28, 2017 Autor Share Postado Fevereiro 28, 2017 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, 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 More sharing options...
Crypter 136 Postado Fevereiro 28, 2017 Share Postado Fevereiro 28, 2017 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 More sharing options...
Tingasgo 38 Postado Fevereiro 28, 2017 Autor Share Postado Fevereiro 28, 2017 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 More sharing options...
Poccnn 385 Postado Fevereiro 28, 2017 Share Postado Fevereiro 28, 2017 13 horas atrás, Tingasgo disse: Como aumentar esse "(itemsss, sep1, sep2)" para ter mais... segue o function: Eu não entendi. Tu quer por mais parâmetros? Link para o comentário Compartilhar em outros sites More sharing options...
Tingasgo 38 Postado Fevereiro 28, 2017 Autor Share Postado Fevereiro 28, 2017 (editado) 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 Fevereiro 28, 2017 por Tingasgo Link para o comentário Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Fevereiro 28, 2017 Share Postado Fevereiro 28, 2017 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 More sharing options...
Tingasgo 38 Postado Fevereiro 28, 2017 Autor Share Postado Fevereiro 28, 2017 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 More sharing options...
Poccnn 385 Postado Março 1, 2017 Share Postado Março 1, 2017 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 More sharing options...
Tingasgo 38 Postado Março 1, 2017 Autor Share Postado Março 1, 2017 (editado) 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 Março 1, 2017 por Tingasgo Link para o comentário Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Março 1, 2017 Share Postado Março 1, 2017 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 More sharing options...
Stigal 584 Postado Novembro 29, 2017 Share Postado Novembro 29, 2017 A questão neste tópico de suporte foi encerrada por falta de resposta. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados