Npc Suporte 10 quests

    Compartilhe

    gui408
    Ocasional
    Ocasional

    Mensagens : 184
    Créditos : 7

    Npc Suporte 10 quests

    Mensagem por gui408 em Sab Maio 23, 2015 3:00 pm

    Alguem poderia me ajudar,queria colocar para o npc ter 10 numeros de quests,pois cada npc so pode ter uma quest,uso sistema de quest do alatar 1.2.
    exemplo: Npc Derik tem a quest numero 1,mas nao tem como eu por a quest numero 1 e numero 2,3,4 no derik,vou ter q criar outro npc para poder colocar a quest numero 2 e outro npc para por a quest numero 3 e por ai vai,por isso q quero por para o npc derik ter as quest numero 1,2,3,4,5,6... acho q deu para entender xD.
    So lembrando nao venha fala q é so por mais task,eu quero sao numero de quest para o npc,que ele suporte umas 10.
    Obrigado quem puder me ajudar,ja estou tentando mas nao conscigo vlw.

    Profane ~
    Moderador Local
    Moderador Local

    Mensagens : 366
    Créditos : 66

    Re: Npc Suporte 10 quests

    Mensagem por Profane ~ em Ter Jun 02, 2015 11:10 pm

    Well Gui408 ;v ;

         Estou afastado do Vb a alguns meses, entrelaçado em C# e outros e.e Mas por com a voz de um pouco de experiência que tenho (Pouco mais que 8 anos...) venho lhe dizer que é uma "sobrecarga". 

    Npc's inicialmente foram feitos para não ter quest's... São basicamentes suportes de eventos e monstros; Isso já pesa bastante para eles, e nas trade server client. 

    Em palavras mais fáceis:  Fazer com que sua engine de vb seja compatível a mais de 1 Quest não valeria a pena. 

    Qual foi a solução encontrada ? ~ Eventos. Por isso eventos é quase uma coisa infinita. Daqui lhe darei três Alternativas.

    1) Usar eventos para Alternar Npc's. (Crie o mesmo npc várias vezes e por modo de StoryLine; faça um check no evento para modificar o Npc quando o Player houver completado a quest passada, assim ele passando a ser um outro mesmo Npc visualmente... contendo outro data de quest. )

    2) Criar apenas mesmo uma StoryLine dando Exp e itens. (Quests Informais) forçando assim os player's a saberem o que está ocorrendo e aonde estão, o que devem fazer.

    3) Adicionar ao Sistema de evento uma nova procedure, no caso para que Via Evento você consiga rec eber Quests. (Sabendo configurar as edições a longo prazo se torna a melhor forma de trabalho.) Podendo assim transformar seu jogo em literalmente um...Skyrim ou The Witcher ;v Em quesito Storyline + Quest's + Interações (Escolhas e Decisões).

    Bom, espero ter esclarecido um pouco o que você pode buscar... Abandone essa de 1 Npc apenas ter 10 quests... (Não foram feitos para este peso ;x )

    Att Profane ~


    _________________

    gui408
    Ocasional
    Ocasional

    Mensagens : 184
    Créditos : 7

    Re: Npc Suporte 10 quests

    Mensagem por gui408 em Qua Jun 03, 2015 3:12 pm

    Entendi uq vc quis dizer,mas nao é 1 npc apenas ter 10 quest,ja viu multiplos drops,onde 1 npc pode dropa mais de um item,exemplo ele pode dropa 10 itens,seria a mesma coisa que eu queria,que o npc poderia ter 10 quest,ai outro npc mais 10 quest e por assim vai,pois criar 50 npc para ter 50 quests fik muito feio,e o jogo se tornaria com poucas quest,entao n sei se vc me entendeu muito bem,n sei se vc ja viu outros games,onde 1 npc vc pode pega quest sequenciais de acordo que vc vai completando,seria o memso caso,acho q é isso obrigado pela atençao.

    Profane ~
    Moderador Local
    Moderador Local

    Mensagens : 366
    Créditos : 66

    Re: Npc Suporte 10 quests

    Mensagem por Profane ~ em Qui Jun 04, 2015 11:53 pm

    : ); Voltando;

    Você não citou que queria múltiplos drops, sendo que multiplos drops é apenas uma variável sem necessidade de alguma edição grande. Você mesmo é capaz de adicionar isso em pouco mais de 2minutos.

    Já no quesito quest's, que é algo que engloba não apenas o Npc, mas também o ambiente e também ao Player. Se torna algo mais complexo.

    Que levaria alguns dias para desenvolver em ;x (Adicionar uma variavel de speech, para selecionar qual das quests ele irá verificar (quests a qual o npc terá salvo em seu data); após isso fazer os save e verificações com o jogador. Não é nada do outro mundo, possível sim, mas trabalhoso.




    _________________

    gui408
    Ocasional
    Ocasional

    Mensagens : 184
    Créditos : 7

    Re: Npc Suporte 10 quests

    Mensagem por gui408 em Sex Jun 05, 2015 12:17 am

    entendo,mas o multiplo drops eu ja fiz,isto e algo muito facil,so pensei q teria como faze-lo em modo de multiplas quests,mas ta bom entao.Obrigado pela atençao.

    Dooolly
    Moderador Global
    Moderador Global

    Medalhas :
    Mensagens : 1175
    Créditos : 125

    Re: Npc Suporte 10 quests

    Mensagem por Dooolly em Sex Jun 05, 2015 12:26 am

    Profane ~ escreveu:: ); Voltando;

    Você não citou que queria múltiplos drops, sendo que multiplos drops é apenas uma variável sem necessidade de alguma edição grande. Você mesmo é capaz de adicionar isso em pouco mais de 2minutos.

    Já no quesito quest's, que é algo que engloba não apenas o Npc, mas também o ambiente e também ao Player. Se torna algo mais complexo.

    Que levaria alguns dias para desenvolver em ;x (Adicionar uma variavel de speech, para selecionar qual das quests ele irá verificar (quests a qual o npc terá salvo em seu data); após isso fazer os save e verificações com o jogador. Não é nada do outro mundo, possível sim, mas trabalhoso.



    Discordo plenamente, da para fazer o NPC ter multiplas quest igual ao Drop apenas modificando uma variavel:

    Cliente
    Mude no Editor de NPC a parte de selecinar quest para algo assim:


    2 - Frame
     Primeira(Name=fraQuest, Caption=Missões)
     Segunda(Name=fraQuestNum, Caption=Missão: 1)
    1 - ScrollBar
     ScrollBar(Name=scrlQuests, Max=10, Min=1)
    O Resto você ja tem...

    Dê um double clique em scrlQuests(ScrollBar Adicionada) e Adicione:
    Código:
    ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
        
        fraQuestNum.Caption = "Missão: " & scrlQuests.value
        
        scrlQuest.value = NPC(EditorIndex).QuestNum(scrlQuests.value)
        chkQuest.value = NPC(EditorIndex).Quest(scrlQuests.value)
        
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "scrlQuests_Change", "frmEditor_NPC", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub

    Em modTypes procure por:
    Código:
    ' Missões
        Quest As Byte
        QuestNum As Long

    e Mude para:
    Código:
    ' Missões
        Quest(1 To MAX_NPC_QUEST) As Byte
        QuestNum(1 To MAX_NPC_QUEST) As Long

    Em modConstants procure por:
    Código:
    Public Const MAX_PARTY_MEMBERS As Long = 4

    Abaixo adicione:
    Código:
    Public Const MAX_NPC_QUEST As Byte = 10

    Procure por:
    Código:
    NPC(EditorIndex).QuestNum = scrlQuest.value

    Mude para:
    Código:
    NPC(EditorIndex).QuestNum(scrlQuests.value) = scrlQuest.value

    Procure por:
    Código:
    NPC(EditorIndex).Quest = chkQuest.value

    Mude para:
    Código:
    NPC(EditorIndex).Quest(scrlQuests.value) = chkQuest.value

    Procure por:
    Código:
    .chkQuest.value = NPC(EditorIndex).Quest
            .scrlQuest.value = NPC(EditorIndex).QuestNum

    Mude para:
    Código:
    .chkQuest.value = NPC(EditorIndex).Quest(1)
            .scrlQuest.value = NPC(EditorIndex).QuestNum(1)
            .scrlMissoes.max = MAX_NPC_QUEST
            .scrlMissoes.value = 1

    Cliente pronto!

    Servidor
    Em modTypes procure por:
    Código:
    ' Missões
        Quest As Byte
        QuestNum As Long

    e Mude para:
    Código:
    ' Missões
        Quest(1 To MAX_NPC_QUEST) As Byte
        QuestNum(1 To MAX_NPC_QUEST) As Long

    Em modConstants procure por:
    Código:
    Public Const MAX_PARTY_MEMBERS As Long = 4

    Abaixo adicione:
    Código:
    Public Const MAX_NPC_QUEST As Byte = 10

    Em modCombat procure por:
    Código:
    If NPC(npcNum).Behaviour = NPC_BEHAVIOUR_FRIENDLY Or NPC(npcNum).Behaviour = NPC_BEHAVIOUR_SHOPKEEPER Then
    Call CheckTasks(attacker, QUEST_TYPE_GOTALK, npcNum)
    Call CheckTasks(attacker, QUEST_TYPE_GOGIVE, npcNum)
    Call CheckTasks(attacker, QUEST_TYPE_GOGET, npcNum)


    If NPC(npcNum).Quest = YES Then
    If Player(attacker).PlayerQuest(NPC(npcNum).Quest).Status = QUEST_COMPLETED Then
    If Quest(NPC(npcNum).Quest).Repeat = YES Then
    Player(attacker).PlayerQuest(NPC(npcNum).Quest).Status = QUEST_COMPLETED_BUT
    Exit Function
    End If
    End If

    If CanStartQuest(attacker, NPC(npcNum).QuestNum) Then

    'if can start show the request message (speech1)
    QuestMessage attacker, NPC(npcNum).QuestNum, Trim$(Quest(NPC(npcNum).QuestNum).Speech(1)), NPC(npcNum).QuestNum
    Exit Function
    End If
    If QuestInProgress(attacker, NPC(npcNum).QuestNum) Then

    'if the quest is in progress show the meanwhile message (speech2)
    QuestMessage attacker, NPC(npcNum).QuestNum, Trim$(Quest(NPC(npcNum).QuestNum).Speech(2)), 0

    Exit Function
    End If
    End If
    End If

    Mude para:
    Código:
                            If NPC(npcNum).Behaviour = NPC_BEHAVIOUR_FRIENDLY Or NPC(npcNum).Behaviour = NPC_BEHAVIOUR_SHOPKEEPER Then
                              For i = 1 To MAX_NPC_QUEST
                                If NPC(npcNum).Quest(i) = YES Then
                                  If Player(attacker).PlayerQuest(NPC(npcNum).Quest(i)).Status = QUEST_COMPLETED Then
                                    If Quest(NPC(npcNum).Quest(i)).Repeat = YES Then
                                      Player(attacker).PlayerQuest(NPC(npcNum).Quest(i)).Status = QUEST_COMPLETED_BUT
                                      Exit For
                                    End If
                                  End If
                               
                                  If CanStartQuest(attacker, NPC(npcNum).QuestNum(i)) Then
                                    ' if can start show the request message (speech1)
                                    QuestMessage attacker, NPC(npcNum).QuestNum(i), Trim$(Quest(NPC(npcNum).QuestNum(i)).Speech(1)), NPC(npcNum).QuestNum(i)
                                    Exit For
                                  End If
                               
                                  If QuestInProgress(attacker, NPC(npcNum).QuestNum(i)) Then
                                    'if the quest is in progress show the meanwhile message (speech2)
                                    QuestMessage attacker, NPC(npcNum).QuestNum(i), Trim$(Quest(NPC(npcNum).QuestNum(i)).Speech(2)), 0
                                    Exit For
                                  End If
                                End If
                              Next
                             
                              Call CheckTasks(attacker, QUEST_TYPE_GOTALK, npcNum)
                              Call CheckTasks(attacker, QUEST_TYPE_GOGIVE, npcNum)
                              Call CheckTasks(attacker, QUEST_TYPE_GOGET, npcNum)
                            End If

    Delete todas as missões e pronto!

    Peguei do meu projeto, não testei o tutorial, qualquer erro fala ai posso ter esquecido de algo!

    gui408
    Ocasional
    Ocasional

    Mensagens : 184
    Créditos : 7

    Re: Npc Suporte 10 quests

    Mensagem por gui408 em Sab Jun 06, 2015 3:06 pm

    Fiz tudo correto,deletei todas quest,npc,contas,tudo,mas quando eu vo loga da o seguinte erro.
    Compile erro
    type mismath

    e quando aperto Ok
    vai para
    If NPC(npcNum).QuestNum = i Then

    = fik sumblinhado com azul

    isto fika na parte Drawn Npc Name

    Edit
    Eu tirei a exclamacao mas se vc puder me ajuda a conscerta esta parte,o sistema funcionar perfeitamente,mas claro com a exclamacao encima do nome fikaria melhor xD,muito obg por me ajudar e pela atencao,sistema 100% funcional.

    Dooolly
    Moderador Global
    Moderador Global

    Medalhas :
    Mensagens : 1175
    Créditos : 125

    Re: Npc Suporte 10 quests

    Mensagem por Dooolly em Sab Jun 06, 2015 8:33 pm

    gui408 escreveu:Fiz tudo correto,deletei todas quest,npc,contas,tudo,mas quando eu vo loga da o seguinte erro.
    Compile erro
    type mismath

    e quando aperto Ok
    vai para
    If NPC(npcNum).QuestNum = i Then

    = fik sumblinhado com azul

    isto fika na parte Drawn Npc Name

    Edit
    Eu tirei a exclamacao mas se vc puder me ajuda a conscerta esta parte,o sistema funcionar perfeitamente,mas claro com a exclamacao encima do nome fikaria melhor xD,muito obg por me ajudar e pela atencao,sistema 100% funcional.

    Como eu falei poderia ter esquecido algo, e tá ai oque eu esqueci:

    Procure por:
    Código:
    'check if the npc is the starter to any quest: [!] symbol
                'can accept the quest as a new one?
                If Player(MyIndex).PlayerQuest(i).Status = QUEST_NOT_STARTED Or Player(MyIndex).PlayerQuest(i).Status = QUEST_COMPLETED_BUT Then
                  If Quest(i).RequiredLevel <= Player(MyIndex).Level Then
                    'the npc gives this quest?
                    If NPC(npcNum).QuestNum = i Then
                        Name = "[!]"
                        TextX = ConvertMapX(MapNpc(Index).x * PIC_X) + MapNpc(Index).XOffset + (PIC_X \ 2) - getWidth(TexthDC, (Trim$(Name)))
                        If NPC(npcNum).Sprite < 1 Or NPC(npcNum).Sprite > NumCharacters Then
                            TextY = ConvertMapY(MapNpc(Index).y * PIC_Y) + MapNpc(Index).YOffset - 16
                        Else
                            TextY = ConvertMapY(MapNpc(Index).y * PIC_Y) + MapNpc(Index).YOffset - (DDSD_Character(NPC(npcNum).Sprite).lHeight / 4)
                        End If
                        Call DrawText(TexthDC, TextX, TextY, Name, QBColor(Yellow))
                        Exit For
                    End If
                  End If
                End If

    Mude para:
    Código:
    'check if the npc is the starter to any quest: [!] symbol
            'can accept the quest as a new one?
            If Player(MyIndex).PlayerQuest(i).status = QUEST_NOT_STARTED Or Player(MyIndex).PlayerQuest(i).status = QUEST_COMPLETED_BUT Then
              If Quest(i).RequiredLevel <= Player(MyIndex).Level Then
                'the npc gives this quest?
                For n = 1 To MAX_NPC_QUEST
                  If NPC(npcNum).QuestNum(n) = i Then
                    name = "[!]"
                    TextX = ConvertMapX(MapNpc(Index).x * PIC_X) + MapNpc(Index).XOffset + (PIC_X \ 2) - getWidth(TexthDC, (Trim$(Name)))
                        If NPC(npcNum).Sprite < 1 Or NPC(npcNum).Sprite > NumCharacters Then
                            TextY = ConvertMapY(MapNpc(Index).y * PIC_Y) + MapNpc(Index).YOffset - 16
                        Else
                            TextY = ConvertMapY(MapNpc(Index).y * PIC_Y) + MapNpc(Index).YOffset - (DDSD_Character(NPC(npcNum).Sprite).lHeight / 4)
                        End If
                    Call DrawText(TexthDC, TextX, TextY, Name, QBColor(Yellow))
                  End If
                Next
              End If
            End If

    Pronto Successful

    Profane ~
    Moderador Local
    Moderador Local

    Mensagens : 366
    Créditos : 66

    Re: Npc Suporte 10 quests

    Mensagem por Profane ~ em Dom Jun 07, 2015 1:17 pm

    Boa Dooly ;v

    Mas se ler novamente, eu não falei que as Quests eram fáceis. Estava me referindo aos multiplos drops; amor meu.

    Muito bom o tutorial,ainda mais com a confirmação de ser funcional xD~

    Falei que estava afastado, e como era extenso ia ser tenso ajudar (logo busquei formas dele desenvolver isso sem precisar scriptar algo como você já fez.)

    Toda via, nice! Copia isso e posta nos tutoriais do Eclipse; Vai ajudar mais gente.


    _________________

    Dooolly
    Moderador Global
    Moderador Global

    Medalhas :
    Mensagens : 1175
    Créditos : 125

    Re: Npc Suporte 10 quests

    Mensagem por Dooolly em Dom Jun 07, 2015 2:28 pm

    Profane ~ escreveu:Boa Dooly ;v

    Mas se ler novamente, eu não falei que as Quests eram fáceis. Estava me referindo aos multiplos drops; amor meu.

    Muito bom o tutorial,ainda mais com a confirmação de ser funcional xD~

    Falei que estava afastado, e como era extenso ia ser tenso ajudar (logo busquei formas dele desenvolver isso sem precisar scriptar algo como você já fez.)

    Toda via, nice! Copia isso e posta nos tutoriais do Eclipse; Vai ajudar mais gente.

    Vlw Profane, eu não discordei apenas da parte que eu citei eu discordei do assunto em geral, tipo da parte de quest, que você falou que pesaria muito e talz, bom acho que não já que ele vai trabalhar com apenas 1 quest por vez, e sair da sub, evitando todo o processo, mas claro que daria um aumento no peso já que qualquer variável dá diferença, pode ser qualquer sistema vai sim pesar de alguma forma. Obrigado por ser seu amor , vc é um bom membro e é um dos que mais ajuda aqui no fórum, e agradeço por isso. E sim tb pensei que seria extenso por isso não tinha falado nada antes, mas ai lembrei que tinha feito isso em uma d minhas engines, então eu apenas ripei.

    sobre postar isso nos tutoriais, acho que não, já que é apenas um complemento e eu nao gosto de fazer isso em sistemas dos outros e por meu meu nome, entao vai fikar aque na area de duvidas mesmo, caso alguem precise e so procurar Obrigado.

      Data/hora atual: Sex Dez 09, 2016 4:42 am