ThupaThuplex 0 Postado Março 20, 2018 Share Postado Março 20, 2018 Preciso muito de um Npc Script para a versão 8.6 que funciona da seguinte maneira: Quando o player alcançar o level 20, e for por exemplo Knight, o Player conversará com o Npc e terá duas opções de vocações diferentes para escolher, ele poderá ser Blade ou Templar por exemplo. Se ele for Sorcerer terá outras duas Vocações para escolher, e assim por diante. Lembrando que o Player só pode fazer a mudança de Vocação apenas uma vez. Ficarei muito Grato pela ajuda e Atenção de Todos. Obrigado e Até mais! Link para o comentário Compartilhar em outros sites More sharing options...
0 Qwizer 203 Postado Março 20, 2018 Share Postado Março 20, 2018 15 minutos atrás, ThupaThuplex disse: Preciso muito de um Npc Script para a versão 8.6 que funciona da seguinte maneira: Quando o player alcançar o level 20, e for por exemplo Knight, o Player conversará com o Npc e terá duas opções de vocações diferentes para escolher, ele poderá ser Blade ou Templar por exemplo. Se ele for Sorcerer terá outras duas Vocações para escolher, e assim por diante. Lembrando que o Player só pode fazer a mudança de Vocação apenas uma vez. Ficarei muito Grato pela ajuda e Atenção de Todos. Obrigado e Até mais! vou fazer aqui pra voce Link para o comentário Compartilhar em outros sites More sharing options...
0 gabriel28 60 Postado Março 20, 2018 Share Postado Março 20, 2018 (editado) @ThupaThuplex Fiz minha versão: Spoiler 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 local storage = 1111514 --storage da quest local voc1 = {1} local voc2 = {2} local voc3 = {3} local voc4 = {4} 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, "promotion") then if getPlayerStorageValue(cid, storage) == -1 then if isInArray(voc1, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {A} ou {B}?", cid) --Opções para Sorc talkState[talkUser] = 1 elseif isInArray(voc2, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {C} ou {D}?", cid) --Opções para Druid talkState[talkUser] = 2 elseif isInArray(voc3, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {E} ou {F}?", cid) --Opções para Pally talkState[talkUser] = 3 elseif isInArray(voc4, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {G} ou {H}?", cid) --Opções para Kina talkState[talkUser] = 4 end else selfSay("Você já pegou a promotion.", cid) npcHandler:addFocus(cid) end end if msgcontains(msg, "A") and talkState[talkUser] == 1 then selfSay("ai está, você agora é a promotion A", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "B") and talkState[talkUser] == 1 then selfSay("ai está, você agora é a promotion B", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "C") and talkState[talkUser] == 2 then selfSay("ai está, você agora é a promotion C", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "D") and talkState[talkUser] == 2 then selfSay("ai está, você agora é a promotion D", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "E") and talkState[talkUser] == 3 then selfSay("ai está, você agora é a promotion E", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "F") and talkState[talkUser] == 3 then selfSay("ai está, você agora é a promotion F", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "G") and talkState[talkUser] == 4 then selfSay("ai está, você agora é a promotion G", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "H") and talkState[talkUser] == 4 then selfSay("ai está, você agora é a promotion H", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em 'doPlayerSetVocation(cid, X)' no script, troque o X pela id da vocation. Edit: Acrescentei uma mensagem, que eu tinha esquecido, pra caso o player já tenha pego uma promotion. Editado Março 20, 2018 por gabriel28 Link para o comentário Compartilhar em outros sites More sharing options...
0 ThupaThuplex 0 Postado Março 20, 2018 Autor Share Postado Março 20, 2018 1 hora atrás, Qwizer disse: vou fazer aqui pra voce Valeu, no Aguarde =) 33 minutos atrás, gabriel28 disse: @ThupaThuplex Fiz minha versão: Mostrar conteúdo oculto 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 local storage = 1111514 --storage da quest local voc1 = {1} local voc2 = {2} local voc3 = {3} local voc4 = {4} 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, "promotion") then if getPlayerStorageValue(cid, storage) == -1 then if isInArray(voc1, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {A} ou {B}?", cid) --Opções para Sorc talkState[talkUser] = 1 elseif isInArray(voc2, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {C} ou {D}?", cid) --Opções para Druid talkState[talkUser] = 2 elseif isInArray(voc3, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {E} ou {F}?", cid) --Opções para Pally talkState[talkUser] = 3 elseif isInArray(voc4, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {G} ou {H}?", cid) --Opções para Kina talkState[talkUser] = 4 end else selfSay("Você já pegou a promotion.", cid) npcHandler:addFocus(cid) end end if msgcontains(msg, "A") and talkState[talkUser] == 1 then selfSay("ai está, você agora é a promotion A", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "B") and talkState[talkUser] == 1 then selfSay("ai está, você agora é a promotion B", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "C") and talkState[talkUser] == 2 then selfSay("ai está, você agora é a promotion C", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "D") and talkState[talkUser] == 2 then selfSay("ai está, você agora é a promotion D", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "E") and talkState[talkUser] == 3 then selfSay("ai está, você agora é a promotion E", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "F") and talkState[talkUser] == 3 then selfSay("ai está, você agora é a promotion F", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "G") and talkState[talkUser] == 4 then selfSay("ai está, você agora é a promotion G", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "H") and talkState[talkUser] == 4 then selfSay("ai está, você agora é a promotion H", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em 'doPlayerSetVocation(cid, X)' no script, troque o X pela id da vocation. Edit: Acrescentei uma mensagem, que eu tinha esquecido, pra caso o player já tenha pego uma promotion. Obrigado mesmo antes de Testar. Agradeço pela atenção. #Testando^^ 58 minutos atrás, gabriel28 disse: @ThupaThuplex Fiz minha versão: Mostrar conteúdo oculto 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 local storage = 1111514 --storage da quest local voc1 = {1} local voc2 = {2} local voc3 = {3} local voc4 = {4} 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, "promotion") then if getPlayerStorageValue(cid, storage) == -1 then if isInArray(voc1, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {A} ou {B}?", cid) --Opções para Sorc talkState[talkUser] = 1 elseif isInArray(voc2, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {C} ou {D}?", cid) --Opções para Druid talkState[talkUser] = 2 elseif isInArray(voc3, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {E} ou {F}?", cid) --Opções para Pally talkState[talkUser] = 3 elseif isInArray(voc4, getPlayerVocation(cid)) then selfSay("Então você quer ser promovido? Bem, que promotion você deseja, {G} ou {H}?", cid) --Opções para Kina talkState[talkUser] = 4 end else selfSay("Você já pegou a promotion.", cid) npcHandler:addFocus(cid) end end if msgcontains(msg, "A") and talkState[talkUser] == 1 then selfSay("ai está, você agora é a promotion A", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "B") and talkState[talkUser] == 1 then selfSay("ai está, você agora é a promotion B", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "C") and talkState[talkUser] == 2 then selfSay("ai está, você agora é a promotion C", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "D") and talkState[talkUser] == 2 then selfSay("ai está, você agora é a promotion D", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "E") and talkState[talkUser] == 3 then selfSay("ai está, você agora é a promotion E", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "F") and talkState[talkUser] == 3 then selfSay("ai está, você agora é a promotion F", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "G") and talkState[talkUser] == 4 then selfSay("ai está, você agora é a promotion G", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end if msgcontains(msg, "H") and talkState[talkUser] == 4 then selfSay("ai está, você agora é a promotion H", cid) doPlayerSetVocation(cid, X) setPlayerStorageValue(cid, storage, 1) end return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em 'doPlayerSetVocation(cid, X)' no script, troque o X pela id da vocation. Edit: Acrescentei uma mensagem, que eu tinha esquecido, pra caso o player já tenha pego uma promotion. Eu testei e está funcionando 100%. Muito Obrigado. Queria saber se não seria possível adicionar no Script, com level para mudar a Vocação e se cada vocação que fosse trocada ganhasse um StoreValue diferente.. De Qualquer forma muito obrigado. 1 hora atrás, ThupaThuplex disse: Valeu, no Aguarde =) Obrigado mesmo antes de Testar. Agradeço pela atenção. #Testando^^ Eu testei e está funcionando 100%. Muito Obrigado. Queria saber se não seria possível adicionar no Script, com level para mudar a Vocação e se cada vocação que fosse trocada ganhasse um StoreValue diferente.. De Qualquer forma muito obrigado. Quando o Player desloga, volta na Vocação que ele estava... =/ Link para o comentário Compartilhar em outros sites More sharing options...
0 gabriel28 60 Postado Março 20, 2018 Share Postado Março 20, 2018 @ThupaThuplex Se cada uma der uma storage diferente, o player poderá trocar de vocação. E você arrumou o 'fromvoc' de cada promotion em vocations.xml? Poe exemplo, usando o nome que você deu. O fromvoc de Blade Knight e Templar Knight devem ser 4, já que ambos são uma promoção da vocação Knight. Dai seguindo essa lógica você faz pras outras. Se continuar o erro, provavelmente terá que modificar o script, pra ao invés de setar uma vocação, setar um nível de promotion. Faça o que eu disse primeiro, se continuar voltando a vocação, me diz que eu arrumo. Link para o comentário Compartilhar em outros sites More sharing options...
0 ThupaThuplex 0 Postado Março 20, 2018 Autor Share Postado Março 20, 2018 3 horas atrás, gabriel28 disse: @ThupaThuplex Se cada uma der uma storage diferente, o player poderá trocar de vocação. E você arrumou o 'fromvoc' de cada promotion em vocations.xml? Poe exemplo, usando o nome que você deu. O fromvoc de Blade Knight e Templar Knight devem ser 4, já que ambos são uma promoção da vocação Knight. Dai seguindo essa lógica você faz pras outras. Se continuar o erro, provavelmente terá que modificar o script, pra ao invés de setar uma vocação, setar um nível de promotion. Faça o que eu disse primeiro, se continuar voltando a vocação, me diz que eu arrumo. No meu vocations.xml está tudo seguindo a ordem do "fromvoc", porém mesmo assim ao "Deslogar" e depois "Logar", o player volta a sua Vocação Inicial e não pode mais fazer a troca de Vocação, pois o Npc reconhece que ele já fez a troca. Preciso que ele apenas mantenha a Nova Vocação que foi trocada, fora isso está tudo certo... Link para o comentário Compartilhar em outros sites More sharing options...
0 gabriel28 60 Postado Março 20, 2018 Share Postado Março 20, 2018 @ThupaThuplex Passa teu vocations.xml (poem em spoiler e em code) pra eu arrumar de acordo com as modificações do script que vou fazer. Link para o comentário Compartilhar em outros sites More sharing options...
0 Stigal 584 Postado Abril 27, 2018 Share Postado Abril 27, 2018 O pedido neste tópico de foi atendido e/ou o autor do tópico resolveu sua duvida. Este tópico está fechado e foi movido para Pedidos - Resolvidos. Se você tiver outros pedidos, crie um novo tópico. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ThupaThuplex 0
Preciso muito de um Npc Script para a versão 8.6 que funciona da seguinte maneira:
Quando o player alcançar o level 20, e for por exemplo Knight, o Player conversará com o Npc
e terá duas opções de vocações diferentes para escolher, ele poderá ser Blade ou Templar por exemplo.
Se ele for Sorcerer terá outras duas Vocações para escolher, e assim por diante.
Lembrando que o Player só pode fazer a mudança de Vocação apenas uma vez.
Ficarei muito Grato pela ajuda e Atenção de Todos.
Obrigado e Até mais!
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados