Postado Fevereiro 15, 2020 5 anos Uso TFS 0.4, e em meu servidor tenho sistema de reputação por storage, e tem um rank de acordo com o valor da storage, por exempo se o valor da storage XXXX = 1000 ele é Heroi, se o valor for = -1000 ele é um Criminoso. Estou querendo fazer npc que teria quest para cada rank de reputação, para isso eu poderia fazer um npc que após ele falar missão, verifica a storage e se for valor adequado continua a quest, do contrario encerra ali. Mas meu servidor estou focando em ter um local (continente) totalmente focado no RPG e Historia, por isso gostaria que o NPC fizesse uma verificação de storage a partir da hora que o Player fala "Hi", assim se for a requerida ele executa uma fala do contrario executa outra. Se precisar mexer nas sources tenho elas e um pouco de conhecimento se me indicarem o local. Agradeço dês de ja. Discord: Naze#3578 Ter Linux Dentro de Windows com Acesso 'localhost' para testes e + AutoLoot Otimizado Direto na Source (tfs 0.4/otx) // Pirataria é crime, original é roubo, compartilhar é legal.
Postado Fevereiro 15, 2020 5 anos Autor Ainda não criei os NPCs em questão, mas pode utilizar a partir desse Spoiler local DESTINO = {x = 2241, y = 2374, z = 7} -- POSIÇÃO DE DESTINO local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} 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 msgcontains(msg, "ancient paradise") then if getPlayerStorageValue(cid, 100101) >= 2 then selfSay("Você ja obteve a aprovação, porque está ocupando meu tempo?", cid) talkState[talkUser] = nil npcHandler:onCreatureDisappear(cid) else doNPCTalkALot(cid, getNpcCid(), 1000, {"Jovem Heroi, Ancient Paradise acreditamos que seja um continente imensuravel, e sua localização foi descoberta por navegadores, e essa ilha a nomeamos como Small Paradise, a primeira ilha antes de chegar em Ancient Paradise Island.", "Eu estou encarregado de aprovar novos aventureiro nessa ilha, se passar pelo meu {teste} podera ir sem mais restrições para Ancient Paradise e também desfrutar dos misterios dessa Small Paradise."}) talkState[talkUser] = 1 end elseif msgcontains(msg, "teste") and talkState[talkUser] == 1 then talkState[talkUser] = 2 doNPCTalkALot(cid, getNpcCid(), 1000, {"Veja bem, meu teste é muito simples, essa Smalll Paradise está repleta de monstros um tanto curioso, então por isso resolvemos usar ela para fazer esse teste.", "Você vai precisar escontrar um báu deixado por mim em uma determinada parte da ilha, após encontra recebera um presente por sua conquista, e também te darei acesso imediato a Ancient Paradise, deseja {tentar} obeter aprovação agora?"}) elseif msgcontains(msg, "tentar") and talkState[talkUser] == 2 then talkState[talkUser] = 3 selfSay("Você realmente deseja tentar obter aprovação, recomendo altamente ir em grupo, e achar o caminho de volta pode ser muito dificil se não conseguir?", cid) elseif msgcontains(msg, "yes") or msgcontains(msg, "sim") then if talkState[talkUser] == 3 then if getPlayerLevel(cid) >= 400 then doNPCTalkALot(cid, getNpcCid(), 2000, {"Para obter sua aprovação encontre o báu que deixei na ilha, se conseguir te teleportarei novamente e recebera acesso a Ancient Paradise, e poderá explorar o restante dessa Small Paradise.", "Jovem herói, não que eu teja olhando para baixo em você, mas você não me parece que possa passar a aprovação com apenas isso... Por isso vou te dar um aviso e também conta como ajuda já que vai saber o que enfrentar, va em grupo e cuidado com os dragões.","Tome esse {machete} também vai precisar. Mais informações checa seu {Quest Log}."}) local bp = doPlayerAddItem(cid, 1987, 1) doAddContainerItem(bp, 2420, 1) setPlayerStorageValue(cid,100101,1) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) talkState[talkUser] = nil else selfSay("Me desculpe, mas você não tem level necessario para obter aprovação. Volte quando atingir level 400 e não esqueça de vim em grupo, sozinho sera muito difícil.", cid) npcHandler:onCreatureDisappear(cid) talkState[talkUser] = nil end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Discord: Naze#3578 Ter Linux Dentro de Windows com Acesso 'localhost' para testes e + AutoLoot Otimizado Direto na Source (tfs 0.4/otx) // Pirataria é crime, original é roubo, compartilhar é legal.
Postado Fevereiro 15, 2020 5 anos Remove alguma mensagem que estiver no xml. No arquivo lua fica algo assim: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function onCreatureSay(cid, type, msg) npcHandler:setMessage(MESSAGE_FAREWELL, "Byee..") if (getPlayerStorageValue(cid,12345) == 3) then npcHandler:setMessage(MESSAGE_GREET, "Sua storage eh 3.") elseif (getPlayerStorageValue(cid,12345) == 4) then npcHandler:setMessage(MESSAGE_GREET, "Sua storage eh 4.") elseif (getPlayerStorageValue(cid,12345) < 4) then npcHandler:setMessage(MESSAGE_GREET, "Sua storage eh menor que 4.") end npcHandler:onCreatureSay(cid, type, msg) end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return FALSE end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Postado Fevereiro 15, 2020 5 anos Autor @dragonfight Obrigado. Discord: Naze#3578 Ter Linux Dentro de Windows com Acesso 'localhost' para testes e + AutoLoot Otimizado Direto na Source (tfs 0.4/otx) // Pirataria é crime, original é roubo, compartilhar é legal.
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.