Postado Fevereiro 8, 2015 10 anos Galera, to com uns amigos em um projeto que apenas esta em idéias, e nada em pratica, porem como nosso servidor terá varias vocações, eu fico pensando, que terei que fazer aquele monte de bau em quests simples, que o cara escolheria 1 e nao poderia pegar os outros, igual anihilator, tornario o otserv muito feio, sei lá ... porem, se tivesse como no lugar dos bau um npc, que tu falasse hi, reward, e ele desse o item ao player que seria de acordo com sua vocação, tornaria mais bonito e mais pratico ... nao sei se é dificil, se é facil, só sei que nao sei fazer porra nenhuma, por isso to aqui, quem puder me ajudar, agradecerei muito, e darei rep, u.u Conheça agora os planos e preços da TKS Host. Qualidade e Preço Justo! www.tkshost.com
Postado Fevereiro 8, 2015 10 anos Aqui... vá em npcs/scripts e crie um arquivo chamado Delivery Itens.lua e coloque isso dentro 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 if msgcontains(msg, 'reward') or msgcontains(msg, 'REWARD') and getPlayerStorageValue(cid, 22123) == 0 then if getPlayerVocation(cid) == 1 and getPlayerStorageValue(cid, 22123) == 0 then doPlayerAddItem(cid, 2160, 100) --2160 é o ID do item nesse caso é crystal coins e 100 é a quantidade setPlayerStorageValue(cid, 22123, 1) doPlayerSendTextMessage(cid,22,"Você pegou os itens de Sorcerer.") elseif getPlayerVocation(cid) == 2 and getPlayerStorageValue(cid, 22123) == 0 then doPlayerAddItem(cid, 2160, 100) setPlayerStorageValue(cid, 22123, 1) doPlayerSendTextMessage(cid,22,"Você pegou os itens de Druid.") elseif getPlayerVocation(cid) == 3 and getPlayerStorageValue(cid, 22123) == 0 then doPlayerAddItem(cid, 2160, 100) setPlayerStorageValue(cid, 22123, 1) doPlayerSendTextMessage(cid,22,"Você pegou os itens de Paladin.") elseif getPlayerVocation(cid) == 4 and getPlayerStorageValue(cid, 22123) == 0 then doPlayerAddItem(cid, 2160, 100) setPlayerStorageValue(cid, 22123, 1) doPlayerSendTextMessage(cid,22,"Você pegou os itens de Knight.") return true end if msgcontains(msg, 'reward') or msgcontains(msg, 'REWARD') and getPlayerStorageValue(cid, 22123) == 1 then end npcHandler:say('Você já pegou os seus itens.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) e depois volte para pasta NPCs e crie um arquivo chamado Delivery Itens.xml e coloque isso dentro. <?xml version="1.0" encoding="UTF-8"?> <npc name="Delivery Itens" script="data/npc/scripts/Delivery Itens.lua" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="131" head="95" body="95" legs="95" feet="95" corpse="6080"/> </npc> Agora vá em creaturescript/script e abra o login.lua e coloque isso em algum lugar if getPlayerStorageValue(cid, 22123) == -1 then setPlayerStorageValue(cid, 22123, 0) end Depois disso é só adicionar no RME ou usar o comando /n Delivery Itens e fazer os testes. Editado Fevereiro 8, 2015 10 anos por joadson (veja o histórico de edições) Te ajudei? Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta" Skype: JoadsonAion
Postado Fevereiro 8, 2015 10 anos Se não se importa, fiz minha própria versão do código: 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 config = { storage = 9671, items = { --[vocation_id] = {itemid, count}, [1] = {2160, 100}, --Exemplo. }, } if msgcontains(msg:lower(), "reward") then if getPlayerStorageValue(cid, config.storage) > -1 then selfSay("You already got your reward.", cid) return true elseif not config.items[getPlayerVocation(cid)] then selfSay("No rewards for your vocation.", cid) return true end local item, count = config.items[getPlayerVocation(cid)][1], config.items[getPlayerVocation(cid)][2] setPlayerStorageValue(cid, config.storage, 1) doPlayerAddItem(cid, item, count) selfSay("You received {"..count.."x} "..getItemNameById(item)..(count > 1 and "s" or "")..".", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) não respondo pms solicitando suporte em programação/scripting
Postado Fevereiro 8, 2015 10 anos Autor Amigão, a script ta perfeita, só de ver da gosto e ja te dei rep, mas eu fui com as 10 vocations, e falei hi, reward, e 10 vezes deu debug no client, será que é oque oO? To olhando aqui o console aberto, e nao tem nenhum pau, apenas da debug '-' Conheça agora os planos e preços da TKS Host. Qualidade e Preço Justo! www.tkshost.com
Postado Fevereiro 8, 2015 10 anos Em 08/02/2015 em 19:58, Tryaron disse: Amigão, a script ta perfeita, só de ver da gosto e ja te dei rep, mas eu fui com as 10 vocations, e falei hi, reward, e 10 vezes deu debug no client, será que é oque oO? To olhando aqui o console aberto, e nao tem nenhum pau, apenas da debug '-' Qual é a versao so seu tfs? Porque testei aqui e funcionou normal. Teste o que o @Zipter98 postou também Te ajudei? Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta" Skype: JoadsonAion
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.