| Universo Games Suporte e Desenvolvimento só no Universo Games |
Ola Convidado, Seja Bem vindo a equipe lhe deseja boa sorte no seu projeto! |
| | Sistema de Quest com Editor | |
| | Autor | Mensagem |
---|
Lucas Roberto Administrador
Mensagens : 711
| Assunto: Sistema de Quest com Editor Qua 22 Jul 2015, 02:48 | |
| Este é o tutorial da engine do tópico: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]Faça um Backup do seu Projeto antes de continuar.Eu não testei o tutorial logo se tiver algo faltando, comente. Cliente Side - Adicione a form frmMissionEditor anexada no final do post. - Vá na frmMirage, e crie uma picturebox com o nome de picMission, coloque Visible = False, e dentro dela adicione 4 labels, uma com o nome de lblMissionName(será o nome da quest), outro com lblFala (a fala da quest), e os outros dois serão lblOpcao1 e lblOpcao2 (as respostas). - Agora crie mais uma picturebox, esta será pra mostrar as nossas missões, coloque o nome de picMyMissions, Visible = False, e dentro dela coloque 2 listboxs, um com nome de lstMissions e outro de lstCompletedMissions. Agora crie um botão para abrir essa picture e adicione dentro: - Código:
-
picMyMissions.Visible = Not picMyMissions.Visible Dê 2 cliques na lblOpcao1 e adicione: - Código:
-
Select Case lblOpcao1.Caption Case "Aceitar" Call SendData("aceitarmissao" & SEP_CHAR & lblMissionName.Caption & END_CHAR) picMission.Visible = False Case "Voltar" picMission.Visible = False Case "Pegar recompensas" Call SendData("pegarrecompensas" & SEP_CHAR & lblMissionName.Caption & END_CHAR) picMission.Visible = False End Select Na lblOpcao2 adicione: - Código:
-
Select Case lblOpcao2.Caption Case "Rejeitar" picMission.Visible = False Case "Desistir" Call SendData("desistirmissao" & SEP_CHAR & lblMissionName.Caption & END_CHAR) picMission.Visible = False Case "Esquecer recompensas" Call SendData("esquecerrecompensas" & SEP_CHAR & lblMissionName.Caption & END_CHAR) picMission.Visible = False End Select Procure: - Código:
-
Public MAX_SPEECH As Long Em baixo adicione: - Código:
-
Public MAX_MISSIONS As Long Procure: - Código:
-
Type ItemRec Name As String * NAME_LENGTH desc As String * 150 Pic As Long Type As Byte Data1 As Long Data2 As Long Data3 As Long StrReq As Long DefReq As Long SpeedReq As Long MagicReq As Long ClassReq As Long AccessReq As Byte AddHP As Long AddMP As Long AddSP As Long AddStr As Long AddDef As Long AddMagi As Long AddSpeed As Long AddEXP As Long AttackSpeed As Long End Type Em baixo adicione: - Código:
-
Type MissionRec Name As String ' Nome da missão Fala(0 To 2) As String ' 0 = Fala ao iniciar 1 = Fala em progresso 2 = Fala final Tipo As Byte ' Tipo da Missão ' No caso de missão tipo MATAR NPC NPCAMatar As Long NPCAMatarQuant As Long ' No caso de missão tipo Explorar Mapa MapaAExplorar As Long ' No caso de missão tipo Falar com NPC NPCAFalar As Long ' No caso de missão tipo Matar Jogador QuantidadeAMatar As Long ' No caso de missão tipo Pegar Item ItemAPegar As Long ItemAPegarQuant As Long NextMission As Long ' Dar outra missão ao terminar? Repetitiva As Long ' Missão repetitiva? ' Requerimentos: LevelReq As Long MissionReq As Long ItemReq As Long ItemQuantReq As Long ' Recompensas: LevelRec As Long EXPRec As Long ItemRec As Long ItemQuantRec As Long MapRec As Long XRec As Long YRec As Long End Type Procure: - Código:
-
ItemNPC(1 To MAX_NPC_DROPS) As NPCEditorRec Adicione em baixo: - Código:
-
Mission As Long Ache: - Código:
-
Public Speech() As SpeechRec Adicione em baixo: - Código:
-
Public Mission() As MissionRec Ache: - Código:
-
Public InSpawnEditor As Boolean Adicione em baixo: - Código:
-
Public InMissionEditor As Boolean Procure: - Código:
-
Public Sub ArrowEditorCancel() InArrowEditor = False Unload frmEditArrows End Sub Em baixo ponha: - Código:
-
Public Sub MissionEditorInit() frmMissionEditor.txtName.Text = Mission(EditorIndex).Name frmMissionEditor.txtFala(0).Text = Mission(EditorIndex).Fala(0) frmMissionEditor.txtFala(1).Text = Mission(EditorIndex).Fala(1) frmMissionEditor.txtFala(2).Text = Mission(EditorIndex).Fala(2) frmMissionEditor.chkRepetir.Value = Mission(EditorIndex).Repetitiva frmMissionEditor.txtNextMission.Text = Mission(EditorIndex).NextMission frmMissionEditor.txtLvlReq.Text = Mission(EditorIndex).LevelReq frmMissionEditor.txtMissionReq.Text = Mission(EditorIndex).MissionReq frmMissionEditor.txtItemReq.Text = Mission(EditorIndex).ItemReq frmMissionEditor.txtItemQuantReq.Text = Mission(EditorIndex).ItemQuantReq frmMissionEditor.cmbType.ListIndex = Mission(EditorIndex).Tipo frmMissionEditor.scrlMatarNpc.Value = Mission(EditorIndex).NPCAMatar frmMissionEditor.txtMatarNpcQuant.Text = Mission(EditorIndex).NPCAMatarQuant frmMissionEditor.txtLevelRec.Text = Mission(EditorIndex).LevelRec frmMissionEditor.txtEXPRec.Text = Mission(EditorIndex).EXPRec frmMissionEditor.txtItemRec.Text = Mission(EditorIndex).ItemRec frmMissionEditor.txtItemQuantRec.Text = Mission(EditorIndex).ItemQuantRec frmMissionEditor.txtMapRec.Text = Mission(EditorIndex).MapRec frmMissionEditor.txtXRec.Text = Mission(EditorIndex).XRec frmMissionEditor.txtYRec.Text = Mission(EditorIndex).YRec frmMissionEditor.txtExplorarMapa.Text = Mission(EditorIndex).MapaAExplorar frmMissionEditor.txtNPCAFalar.Text = Mission(EditorIndex).NPCAFalar frmMissionEditor.txtQuantidadeAMatar.Text = Mission(EditorIndex).QuantidadeAMatar frmMissionEditor.scrlPegarItem.Value = Mission(EditorIndex).ItemAPegar frmMissionEditor.txtPegarItemQuant.Text = Mission(EditorIndex).ItemAPegarQuant frmMissionEditor.Show vbModal End Sub Public Sub MissionEditorCancel() InMissionEditor = False Unload frmMissionEditor End Sub Public Sub MissionEditorOk() Mission(EditorIndex).Name = frmMissionEditor.txtName.Text Mission(EditorIndex).Tipo = frmMissionEditor.cmbType.ListIndex Mission(EditorIndex).Fala(0) = frmMissionEditor.txtFala(0).Text Mission(EditorIndex).Fala(1) = frmMissionEditor.txtFala(1).Text Mission(EditorIndex).Fala(2) = frmMissionEditor.txtFala(2).Text Mission(EditorIndex).Repetitiva = frmMissionEditor.chkRepetir.Value Mission(EditorIndex).NextMission = frmMissionEditor.txtNextMission.Text Mission(EditorIndex).LevelReq = frmMissionEditor.txtLvlReq.Text Mission(EditorIndex).MissionReq = frmMissionEditor.txtMissionReq.Text Mission(EditorIndex).ItemReq = frmMissionEditor.txtItemReq.Text Mission(EditorIndex).ItemQuantReq = frmMissionEditor.txtItemQuantReq.Text Mission(EditorIndex).NPCAMatar = frmMissionEditor.scrlMatarNpc.Value Mission(EditorIndex).NPCAMatarQuant = frmMissionEditor.txtMatarNpcQuant.Text Mission(EditorIndex).LevelRec = frmMissionEditor.txtLevelRec.Text Mission(EditorIndex).EXPRec = frmMissionEditor.txtEXPRec.Text Mission(EditorIndex).ItemRec = frmMissionEditor.txtItemRec.Text Mission(EditorIndex).ItemQuantRec = frmMissionEditor.txtItemQuantRec.Text Mission(EditorIndex).MapRec = frmMissionEditor.txtMapRec.Text Mission(EditorIndex).XRec = frmMissionEditor.txtXRec.Text Mission(EditorIndex).YRec = frmMissionEditor.txtYRec.Text Mission(EditorIndex).MapaAExplorar = frmMissionEditor.txtExplorarMapa.Text Mission(EditorIndex).NPCAFalar = frmMissionEditor.txtNPCAFalar.Text Mission(EditorIndex).QuantidadeAMatar = frmMissionEditor.txtQuantidadeAMatar.Text Mission(EditorIndex).ItemAPegar = frmMissionEditor.scrlPegarItem.Value Mission(EditorIndex).ItemAPegarQuant = frmMissionEditor.txtPegarItemQuant.Text
Call SendSaveMission(EditorIndex) InMissionEditor = False Unload frmMissionEditor End Sub Procure: - Código:
-
frmNpcEditor.BigNpc.Value = Npc(EditorIndex).Big Em baixo ponha: - Código:
-
frmNpcEditor.scrlMission.Value = Npc(EditorIndex).Mission Procure: - Código:
-
Npc(EditorIndex).Speech = frmNpcEditor.scrlSpeech.Value Em baixo ponha: - Código:
-
Npc(EditorIndex).Mission = frmNpcEditor.scrlMission.Value Procure: - Código:
-
MAX_SPEECH = Val(Parse(12)) Em baixo adicionar: - Código:
-
MAX_MISSIONS = Val(Parse(13)) Procure: - Código:
-
If Parse(0) = "spawnitem" Then n = Val(Parse(1)) MapItem(n).Num = Val(Parse(2)) MapItem(n).Value = Val(Parse(3)) MapItem(n).Dur = Val(Parse(4)) MapItem(n).x = Val(Parse(5)) MapItem(n).y = Val(Parse(6)) Exit Sub End If Em baixo coloque: - Código:
-
' Edit Mission Packet If Parse(0) = "editmission" Then n = Val(Parse(1)) Mission(n).Name = Parse(2) Mission(n).Tipo = Parse(3) Mission(n).Fala(0) = Parse(4) Mission(n).Fala(1) = Parse(5) Mission(n).Fala(2) = Parse(6) Mission(n).LevelReq = Parse(7) Mission(n).MissionReq = Parse(8) Mission(n).ItemReq = Parse(9) Mission(n).ItemQuantReq = Parse(10) Mission(n).NextMission = Parse(11) Mission(n).Repetitiva = Parse(12) Mission(n).NPCAMatar = Parse(13) Mission(n).NPCAMatarQuant = Parse(14) Mission(n).LevelRec = Parse(15) Mission(n).EXPRec = Parse(16) Mission(n).ItemRec = Parse(17) Mission(n).ItemQuantRec = Parse(18) Mission(n).MapRec = Parse(19) Mission(n).XRec = Parse(20) Mission(n).YRec = Parse(21) Mission(n).MapaAExplorar = Parse(22) Mission(n).NPCAFalar = Parse(23) Mission(n).QuantidadeAMatar = Parse(24) Mission(n).ItemAPegar = Parse(25) Mission(n).ItemAPegarQuant = Parse(26) Call MissionEditorInit Exit Sub End If ' Update Mission Packet If Parse(0) = "updatemission" Then n = Val(Parse(1)) Mission(n).Name = Parse(2) Mission(n).Tipo = Parse(3) Mission(n).Fala(0) = Parse(4) Mission(n).Fala(1) = Parse(5) Mission(n).Fala(2) = Parse(6) Mission(n).LevelReq = Parse(7) Mission(n).MissionReq = Parse(8) Mission(n).ItemReq = Parse(9) Mission(n).ItemQuantReq = Parse(10) Mission(n).NextMission = Parse(11) Mission(n).Repetitiva = Parse(12) Mission(n).NPCAMatar = Parse(13) Mission(n).NPCAMatarQuant = Parse(14) Mission(n).LevelRec = Parse(15) Mission(n).EXPRec = Parse(16) Mission(n).ItemRec = Parse(17) Mission(n).ItemQuantRec = Parse(18) Mission(n).MapRec = Parse(19) Mission(n).XRec = Parse(20) Mission(n).YRec = Parse(21) Mission(n).MapaAExplorar = Parse(22) Mission(n).NPCAFalar = Parse(23) Mission(n).QuantidadeAMatar = Parse(24) Mission(n).ItemAPegar = Parse(25) Mission(n).ItemAPegarQuant = Parse(26) Exit Sub End If Ache: - Código:
-
Npc(n).Speech = Val(Parse(6)) Adicione em baixo: - Código:
-
Npc(n).Mission = Val(Parse(7)) Ache: - Código:
-
Npc(n).Speech = Val(Parse(16)) Adicione em baixo: - Código:
-
Npc(n).Mission = Val(Parse(17)) Logo em baixo terá z = 17, mude para 18 Procure: - Código:
-
' :::::::::::::::::: ' :: Start Speech :: ' :::::::::::::::::: EM Cima adicione: - Código:
-
If Parse(0) = "clearmisslist" Then frmMirage.lstMissions.Clear frmMirage.lstCompletedMissions.Clear Exit Sub End If If Parse(0) = "misslist" Then frmMirage.lstMissions.AddItem Parse(1) Exit Sub End If If Parse(0) = "commisslist" Then frmMirage.lstCompletedMissions.AddItem Parse(1) Exit Sub End If ' Mission editor packet If Parse(0) = "missioneditor" Then InMissionEditor = True frmIndex.Show frmIndex.lstIndex.Clear For I = 1 To MAX_MISSIONS frmIndex.lstIndex.AddItem I & ": " & Trim(Mission(I).Name) Next I frmIndex.lstIndex.ListIndex = 0 Exit Sub End If ' Start Mission ' If Parse(0) = "startmission" Then I = Val(Parse(1)) ' Status da missão n = Val(Parse(2)) ' numero da missão Select Case I Case 1 frmMirage.lblMissionName.Caption = Mission(n).Name frmMirage.lblFala.Caption = Mission(n).Fala(0) frmMirage.lblOpcao1.Caption = "Aceitar" frmMirage.lblOpcao2.Caption = "Rejeitar" frmMirage.picMission.Visible = True Case 2 frmMirage.lblMissionName.Caption = Mission(n).Name frmMirage.lblFala.Caption = Mission(n).Fala(1) frmMirage.lblOpcao1.Caption = "Voltar" frmMirage.lblOpcao2.Caption = "Desistir" frmMirage.picMission.Visible = True Case 3 frmMirage.lblMissionName.Caption = Mission(n).Name frmMirage.lblFala.Caption = Mission(n).Fala(2) frmMirage.lblOpcao1.Caption = "Pegar recompensas" frmMirage.lblOpcao2.Caption = "Esquecer recompensas" frmMirage.picMission.Visible = True End Select Exit Sub End If Procure: - Código:
-
Packet = "SAVENPC" & SEP_CHAR & NpcNum & SEP_CHAR & Trim(Npc(NpcNum).Name) & SEP_CHAR & Trim(Npc(NpcNum).AttackSay) & SEP_CHAR & Npc(NpcNum).Sprite & SEP_CHAR & Npc(NpcNum).SpawnSecs & SEP_CHAR & Npc(NpcNum).Behavior & SEP_CHAR & Npc(NpcNum).Range & SEP_CHAR & Npc(NpcNum).STR & SEP_CHAR & Npc(NpcNum).DEF & SEP_CHAR & Npc(NpcNum).Speed & SEP_CHAR & Npc(NpcNum).MAGI & SEP_CHAR & Npc(NpcNum).Big & SEP_CHAR & Npc(NpcNum).MaxHP & SEP_CHAR & Npc(NpcNum).EXP & SEP_CHAR & Npc(NpcNum).SpawnTime & SEP_CHAR & Npc(NpcNum).Speech & SEP_CHAR Mude para: - Código:
-
Packet = "SAVENPC" & SEP_CHAR & NpcNum & SEP_CHAR & Trim(Npc(NpcNum).Name) & SEP_CHAR & Trim(Npc(NpcNum).AttackSay) & SEP_CHAR & Npc(NpcNum).Sprite & SEP_CHAR & Npc(NpcNum).SpawnSecs & SEP_CHAR & Npc(NpcNum).Behavior & SEP_CHAR & Npc(NpcNum).Range & SEP_CHAR & Npc(NpcNum).STR & SEP_CHAR & Npc(NpcNum).DEF & SEP_CHAR & Npc(NpcNum).Speed & SEP_CHAR & Npc(NpcNum).MAGI & SEP_CHAR & Npc(NpcNum).Big & SEP_CHAR & Npc(NpcNum).MaxHP & SEP_CHAR & Npc(NpcNum).EXP & SEP_CHAR & Npc(NpcNum).SpawnTime & SEP_CHAR & Npc(NpcNum).Speech & SEP_CHAR & Npc(NpcNum).Mission & SEP_CHAR Procure: - Código:
-
Sub SendSetPlayerSprite(ByVal Name As String, ByVal SpriteNum As Byte) Dim Packet As String
Packet = "SETPLAYERSPRITE" & SEP_CHAR & Name & SEP_CHAR & SpriteNum & END_CHAR Call SendData(Packet) End Sub Em baixo ponha: - Código:
-
Sub SendSaveMission(ByVal Num As Long) Dim Packet As String
Packet = "SAVEMISSION" & SEP_CHAR & Num & SEP_CHAR & Trim(Mission(Num).Name) & SEP_CHAR & Mission(Num).Tipo & SEP_CHAR & Mission(Num).Fala(0) & SEP_CHAR & Mission(Num).Fala(1) & SEP_CHAR & Mission(Num).Fala(2) & SEP_CHAR & Mission(Num).LevelReq & SEP_CHAR & Mission(Num).MissionReq & SEP_CHAR & Mission(Num).ItemReq & SEP_CHAR & Mission(Num).ItemQuantReq & SEP_CHAR & Mission(Num).NextMission & SEP_CHAR & Mission(Num).Repetitiva & SEP_CHAR & Mission(Num).NPCAMatar & SEP_CHAR & Mission(Num).NPCAMatarQuant & SEP_CHAR & Mission(Num).LevelRec & SEP_CHAR & Mission(Num).EXPRec & SEP_CHAR & Mission(Num).ItemRec & SEP_CHAR & Mission(Num).ItemQuantRec & SEP_CHAR & Mission(Num).MapRec & SEP_CHAR & Mission(Num).XRec & SEP_CHAR & Mission(Num).YRec & SEP_CHAR & Mission(Num).MapaAExplorar & SEP_CHAR & Mission(Num).NPCAFalar & SEP_CHAR & Mission(Num).QuantidadeAMatar & SEP_CHAR & Mission(Num).ItemAPegar & SEP_CHAR & Mission(Num).ItemAPegarQuant & END_CHAR Call SendData(Packet) End Sub Sub SendRequestEditMission() Dim Packet As String
Packet = "REQUESTEDITMISSION" & END_CHAR Call SendData(Packet) End Sub Procure: - Código:
-
If InSpeechEditor = True Then Call SendData("EDITSPEECH" & SEP_CHAR & EditorIndex & END_CHAR) End If Em baixo coloque: - Código:
-
If InMissionEditor = True Then Call SendData("EDITMISSION" & SEP_CHAR & EditorIndex & END_CHAR) End If Procure: - Código:
-
InArrowEditor = False Em baixo ponha: - Código:
-
InMissionEditor = False - Vá na frmNpcEditor e adicione um scrollbar com nome de scrlMission, uma label antes dele com Caption "Missão: " e outra label do lado dele com Caption "0" e nome de lblMission. De dois cliques no scrlMission e adicione: - Código:
-
lblMission.Caption = STR(scrlMission.Value) - Vá na frmAdmin e adicione um botão, chamado btnEditMission e com caption Editar Missões. Dê dois cliques nele e adicione: - Código:
-
If GetPlayerAccess(MyIndex) >= ADMIN_MAPPER Then Call SendRequestEditMission Else: Call AddText("Você não está autorizado para exercer essa função.", BrightRed) End If Procure: - Código:
-
' Não estamos em jogo! InGame = False GettingMap = True InEditor = False InSpeechEditor = False InItemsEditor = False InNpcEditor = False InShopEditor = False InEmoticonEditor = False InArrowEditor = False InSpawnEditor = False Em baixo ponha: - Código:
-
InMissionEditor = False Cliente terminado. SERVER-SIDE; Procure: - Código:
-
If LCase$(Dir$(App.Path & "\falas", vbDirectory)) <> "falas" Then Call MkDir$(App.Path & "\Falas") End If Em baixo adicione: - Código:
-
If LCase$(Dir$(App.Path & "\missions", vbDirectory)) <> "missions" Then Call MkDir$(App.Path & "\Missions") End If Procure: - Código:
-
MAX_SPEECH = Val(GetVar(App.Path & "\Dados.ini", "MAX", "MAX_SPEECH")) Em baixo ponha: - Código:
-
MAX_MISSIONS = Val(GetVar(App.Path & "\Dados.ini", "MAX", "MAX_MISSIONS")) - Abra o arquivo Dados.ini do servidor e adicione em baixo de MAX_SPEECH=50: - Código:
-
MAX_MISSIONS=70 Voltando ao server side procure: - Código:
-
ReDim Npc(0 To MAX_NPCS) As NpcRec Adicione em baixo: - Código:
-
ReDim Mission(1 To MAX_MISSIONS) As MissionRec Procure: - Código:
-
Call LoadClasses Adicione em baixo: - Código:
-
Call SetStatus("Limpando Missões...") Call ClearMissions Procure: - Código:
-
Call LoadItems Em baixo ponha: - Código:
-
Call SetStatus("Carregando missões...") Call LoadMissions Procure: - Código:
-
Packs = Packs & MAX_SPEECH & SEP_CHAR Em baixo adicione: - Código:
-
Packs = Packs & MAX_MISSIONS & SEP_CHAR Procure: - Código:
-
Call AddLog(GetPlayerName(Index) & " editando Item #" & n & ".", ADMIN_LOG) Call SendEditItemTo(Index, n) Exit Sub Abaixo adicione: - Código:
-
Case "pegarrecompensas" Name = Parse(1) ' nome da missao For i = 1 To MAX_MISSIONS If Mission(i).Name = Name Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 3 Then Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 4 If Not Mission(i).LevelRec = 0 Then If GetPlayerLevel(Index) >= MAX_LEVEL Then Call SetPlayerExp(Index, Experience(MAX_LEVEL)) Call SendStats(Index) Else Call SetPlayerLevel(Index, GetPlayerLevel(Index) + Mission(i).LevelRec) Call SetPlayerPOINTS(Index, GetPlayerPOINTS(Index) + Mission(i).LevelRec * 3) ' 3 = pontos ganhos por level, se for outro no seu jogo, mude
If GetPlayerLevel(Index) >= MAX_LEVEL Then Call SetPlayerExp(Index, Experience(MAX_LEVEL)) Call SendStats(Index) End If Call SendStats(Index) End If End If If Not Mission(i).EXPRec = 0 Then Call SetPlayerExp(Index, GetPlayerExp(Index) + Mission(i).EXPRec) Call CheckPlayerLevelUp(Index) End If If Not Mission(i).ItemRec = 0 Then Call GiveItem(Index, Mission(i).ItemRec, Mission(i).ItemQuantRec) End If If Not Mission(i).MapRec = 0 Then Call PlayerWarp(Index, Mission(i).MapRec, Mission(i).XRec, Mission(i).YRec, True) End If If Mission(i).Tipo = 4 Then Call TakeItem(Index, Mission(i).ItemAPegar, Mission(i).ItemAPegarQuant) End If Call PlayerMsg(Index, "Você recebeu suas recompensas", Green) If Mission(i).NextMission <> 0 Then Player(Index).Char(Player(Index).CharNum).MissionStatus(Mission(i).NextMission) = 2 Call PlayerMsg(Index, "Missão " & Mission(Mission(i).NextMission).Name & " ativa!", Green) End If End If End If Next Call SendMyMissions(Index) Exit Sub Case "esquecerrecompensas" Name = Parse(1) ' nome da missao For i = 1 To MAX_MISSIONS If Mission(i).Name = Name Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 3 Then Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 4 If Mission(i).Tipo = 4 Then Call TakeItem(Index, Mission(i).ItemAPegar, Mission(i).ItemAPegarQuant) End If Call PlayerMsg(Index, "Você terminou a missão sem receber recompensas.", White) End If End If Next Call SendMyMissions(Index) Exit Sub Case "aceitarmissao" Name = Parse(1) ' nome da missao For i = 1 To MAX_MISSIONS If Mission(i).Name = Name Then ' Requerimentos If GetPlayerLevel(Index) < Mission(i).LevelReq Then Call PlayerMsg(Index, "Você não tem level suficiente para esta missão.", Red) Exit Sub End If If HasItem(Index, Mission(i).ItemReq) < Mission(i).ItemQuantReq Then Call PlayerMsg(Index, "Você não tem o item ou quantidade necessária!", Red) Exit Sub End If If Mission(i).MissionReq <> 0 Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(Mission(i).MissionReq) <> 4 Then Call PlayerMsg(Index, "Você não fez a missão pedida!", Red) Exit Sub End If End If ' Fim requerimentos ' Dar missão Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 2 Call PlayerMsg(Index, "Missão '" & Name & "' ativa!", Green) ' Checar se ele ja tem o item no caso de missao pegar item If Mission(i).Tipo = 4 Then If HasItem(Index, Mission(i).ItemAPegar) >= Mission(i).ItemAPegarQuant Then Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 3 Call PlayerMsg(Index, "Missão " & Mission(i).Name & " completa, retorne à quem lhe deu a missão para receber as recompensas.", Green) End If End If End If Next Call SendMyMissions(Index) Exit Sub Case "desistirmissao" Name = Parse(1) ' Nome da missao For i = 1 To MAX_MISSIONS If Mission(i).Name = Name Then Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 1 Call PlayerMsg(Index, "Você desistiu da missão " & Name & ".", Red) End If Next Call SendMyMissions(Index) Exit Sub ' Salvar Missão Case "savemission" ' Proteção If GetPlayerAccess(Index) < ADMIN_MAPPER Then Call HackingAttempt(Index, "Admin Cloning") Exit Sub End If n = Val(Parse(1))
If n < 0 Or n > MAX_MISSIONS Then Call HackingAttempt(Index, "Invalid Mission Index") Exit Sub End If
' Atualizar a missão Mission(n).Name = Parse(2) Mission(n).Tipo = Parse(3) Mission(n).Fala(0) = Parse(4) Mission(n).Fala(1) = Parse(5) Mission(n).Fala(2) = Parse(6) Mission(n).LevelReq = Parse(7) Mission(n).MissionReq = Parse(8) Mission(n).ItemReq = Parse(9) Mission(n).ItemQuantReq = Parse(10) Mission(n).NextMission = Parse(11) Mission(n).Repetitiva = Parse(12) Mission(n).NPCAMatar = Parse(13) Mission(n).NPCAMatarQuant = Parse(14) Mission(n).LevelRec = Parse(15) Mission(n).EXPRec = Parse(16) Mission(n).ItemRec = Parse(17) Mission(n).ItemQuantRec = Parse(18) Mission(n).MapRec = Parse(19) Mission(n).XRec = Parse(20) Mission(n).YRec = Parse(21) Mission(n).MapaAExplorar = Parse(22) Mission(n).NPCAFalar = Parse(23) Mission(n).QuantidadeAMatar = Parse(24) Mission(n).ItemAPegar = Parse(25) Mission(n).ItemAPegarQuant = Parse(26) ' Save it Call SendUpdateMissionToAll(n) Call SaveMission(n) Call AddLog(GetPlayerName(Index) & " salvou missão #" & n & ".", ADMIN_LOG) Exit Sub Procure: - Código:
-
Npc(n).Speech = Val(Parse(16)) Abaixo ponha: - Código:
-
Npc(n).Mission = Val(Parse(17)) Logo em baixo terá z = 17, mude para z = 18 Procure: - Código:
-
Case "speechscript"
If SCRIPTING = 1 Then MyScript.ExecuteStatement "Scripts\Principal.txt", "ScriptedTile " & Index & "," & Parse(1) End If
Exit Sub Abaixo ponha: - Código:
-
Case "requesteditmission" ' Prevent hacking If GetPlayerAccess(Index) < ADMIN_DEVELOPER Then Call HackingAttempt(Index, "Admin Cloning") Exit Sub End If Call SendDataTo(Index, "MISSIONEDITOR" & END_CHAR) Exit Sub Case "editmission"
If GetPlayerAccess(Index) < ADMIN_MAPPER Then Call HackingAttempt(Index, "Admin Cloning") Exit Sub End If
n = Val(Parse(1))
If n < 0 Or n > MAX_MISSIONS Then Call HackingAttempt(Index, "Invalid Mission Index") Exit Sub End If
Call AddLog(GetPlayerName(Index) & " editando missão #" & n & ".", ADMIN_LOG) Call SendEditMissionTo(Index, n) Exit Sub Na sub SendEditNpcTo ache: - Código:
-
Packet = "EDITNPC" & SEP_CHAR & NpcNum & SEP_CHAR & Trim$(Npc(NpcNum).Name) & SEP_CHAR & Trim$(Npc(NpcNum).AttackSay) & SEP_CHAR & Npc(NpcNum).Sprite & SEP_CHAR & Npc(NpcNum).SpawnSecs & SEP_CHAR & Npc(NpcNum).Behavior & SEP_CHAR & Npc(NpcNum).Range & SEP_CHAR & Npc(NpcNum).STR & SEP_CHAR & Npc(NpcNum).DEF & SEP_CHAR & Npc(NpcNum).Speed & SEP_CHAR & Npc(NpcNum).Magi & SEP_CHAR & Npc(NpcNum).Big & SEP_CHAR & Npc(NpcNum).MaxHp & SEP_CHAR & Npc(NpcNum).Exp & SEP_CHAR & Npc(NpcNum).SpawnTime & SEP_CHAR & Npc(NpcNum).Speech & SEP_CHAR Mude para: - Código:
-
Packet = "EDITNPC" & SEP_CHAR & NpcNum & SEP_CHAR & Trim$(Npc(NpcNum).Name) & SEP_CHAR & Trim$(Npc(NpcNum).AttackSay) & SEP_CHAR & Npc(NpcNum).Sprite & SEP_CHAR & Npc(NpcNum).SpawnSecs & SEP_CHAR & Npc(NpcNum).Behavior & SEP_CHAR & Npc(NpcNum).Range & SEP_CHAR & Npc(NpcNum).STR & SEP_CHAR & Npc(NpcNum).DEF & SEP_CHAR & Npc(NpcNum).Speed & SEP_CHAR & Npc(NpcNum).Magi & SEP_CHAR & Npc(NpcNum).Big & SEP_CHAR & Npc(NpcNum).MaxHp & SEP_CHAR & Npc(NpcNum).Exp & SEP_CHAR & Npc(NpcNum).SpawnTime & SEP_CHAR & Npc(NpcNum).Speech & SEP_CHAR & Npc(NpcNum).Mission & SEP_CHAR Procure: - Código:
-
Packet = "UPDATENPC" & SEP_CHAR & NpcNum & SEP_CHAR & Trim$(Npc(NpcNum).Name) & SEP_CHAR & Npc(NpcNum).Sprite & SEP_CHAR & Npc(NpcNum).Big & SEP_CHAR & Npc(NpcNum).MaxHp & SEP_CHAR & Npc(NpcNum).Speech & END_CHAR Mude para: - Código:
-
Packet = "UPDATENPC" & SEP_CHAR & NpcNum & SEP_CHAR & Trim$(Npc(NpcNum).Name) & SEP_CHAR & Npc(NpcNum).Sprite & SEP_CHAR & Npc(NpcNum).Big & SEP_CHAR & Npc(NpcNum).MaxHp & SEP_CHAR & Npc(NpcNum).Speech & SEP_CHAR & Npc(NpcNum).Mission & END_CHAR Procure novamente: - Código:
-
Packet = "UPDATENPC" & SEP_CHAR & NpcNum & SEP_CHAR & Trim$(Npc(NpcNum).Name) & SEP_CHAR & Npc(NpcNum).Sprite & SEP_CHAR & Npc(NpcNum).Big & SEP_CHAR & Npc(NpcNum).MaxHp & SEP_CHAR & Npc(NpcNum).Speech & END_CHAR Mude para: - Código:
-
Packet = "UPDATENPC" & SEP_CHAR & NpcNum & SEP_CHAR & Trim$(Npc(NpcNum).Name) & SEP_CHAR & Npc(NpcNum).Sprite & SEP_CHAR & Npc(NpcNum).Big & SEP_CHAR & Npc(NpcNum).MaxHp & SEP_CHAR & Npc(NpcNum).Speech & SEP_CHAR & Npc(NpcNum).Mission & END_CHAR No final do modServerTCP adicione: - Código:
-
Sub SendEditMissionTo(ByVal Index As Long, ByVal num As Long) Dim Packet As String
Packet = "EDITMISSION" & SEP_CHAR & num & SEP_CHAR & Trim$(Mission(num).Name) & SEP_CHAR & Mission(num).Tipo & SEP_CHAR & Mission(num).Fala(0) & SEP_CHAR & Mission(num).Fala(1) & SEP_CHAR & Mission(num).Fala(2) & SEP_CHAR & Mission(num).LevelReq & SEP_CHAR & Mission(num).MissionReq & SEP_CHAR & Mission(num).ItemReq & SEP_CHAR & Mission(num).ItemQuantReq & SEP_CHAR & Mission(num).NextMission & SEP_CHAR & Mission(num).Repetitiva & SEP_CHAR & Mission(num).NPCAMatar & SEP_CHAR & Mission(num).NPCAMatarQuant & SEP_CHAR & Mission(num).LevelRec & SEP_CHAR & Mission(num).EXPRec & SEP_CHAR & Mission(num).ItemRec & SEP_CHAR & Mission(num).ItemQuantRec & SEP_CHAR & Mission(num).MapRec & SEP_CHAR & Mission(num).XRec & SEP_CHAR & Mission(num).YRec & SEP_CHAR & Mission(num).MapaAExplorar & SEP_CHAR & Mission(num).NPCAFalar & SEP_CHAR & Mission(num).QuantidadeAMatar & SEP_CHAR & Mission(num).ItemAPegar & SEP_CHAR & Mission(num).ItemAPegarQuant & END_CHAR Call SendDataTo(Index, Packet) End Sub
Sub SendMissions(ByVal Index As Long) Dim i As Long
For i = 1 To MAX_MISSIONS
If Trim$(Mission(i).Name) <> vbNullString Then Call SendUpdateMissionTo(Index, i) End If
Next
End Sub
Sub SendUpdateMissionTo(ByVal Index As Long, ByVal num As Long) Dim Packet As String
Packet = "UPDATEMISSION" & SEP_CHAR & num & SEP_CHAR & Trim$(Mission(num).Name) & SEP_CHAR & Mission(num).Tipo & SEP_CHAR & Mission(num).Fala(0) & SEP_CHAR & Mission(num).Fala(1) & SEP_CHAR & Mission(num).Fala(2) & SEP_CHAR & Mission(num).LevelReq & SEP_CHAR & Mission(num).MissionReq & SEP_CHAR & Mission(num).ItemReq & SEP_CHAR & Mission(num).ItemQuantReq & SEP_CHAR & Mission(num).NextMission & SEP_CHAR & Mission(num).Repetitiva & SEP_CHAR & Mission(num).NPCAMatar & SEP_CHAR & Mission(num).NPCAMatarQuant & SEP_CHAR & Mission(num).LevelRec & SEP_CHAR & Mission(num).EXPRec & SEP_CHAR & Mission(num).ItemRec & SEP_CHAR & Mission(num).ItemQuantRec & SEP_CHAR & Mission(num).MapRec & SEP_CHAR & Mission(num).XRec & SEP_CHAR & Mission(num).YRec & SEP_CHAR & Mission(num).MapaAExplorar & SEP_CHAR & Mission(num).NPCAFalar & SEP_CHAR & Mission(num).QuantidadeAMatar & SEP_CHAR & Mission(num).ItemAPegar & SEP_CHAR & Mission(num).ItemAPegarQuant & END_CHAR Call SendDataTo(Index, Packet) End Sub
Sub SendUpdateMissionToAll(ByVal num As Long) Dim Packet As String
Packet = "UPDATEMISSION" & SEP_CHAR & num & SEP_CHAR & Trim$(Mission(num).Name) & SEP_CHAR & Mission(num).Tipo & SEP_CHAR & Mission(num).Fala(0) & SEP_CHAR & Mission(num).Fala(1) & SEP_CHAR & Mission(num).Fala(2) & SEP_CHAR & Mission(num).LevelReq & SEP_CHAR & Mission(num).MissionReq & SEP_CHAR & Mission(num).ItemReq & SEP_CHAR & Mission(num).ItemQuantReq & SEP_CHAR & Mission(num).NextMission & SEP_CHAR & Mission(num).Repetitiva & SEP_CHAR & Mission(num).NPCAMatar & SEP_CHAR & Mission(num).NPCAMatarQuant & SEP_CHAR & Mission(num).LevelRec & SEP_CHAR & Mission(num).EXPRec & SEP_CHAR & Mission(num).ItemRec & SEP_CHAR & Mission(num).ItemQuantRec & SEP_CHAR & Mission(num).MapRec & SEP_CHAR & Mission(num).XRec & SEP_CHAR & Mission(num).YRec & SEP_CHAR & Mission(num).MapaAExplorar & SEP_CHAR & Mission(num).NPCAFalar & SEP_CHAR & Mission(num).QuantidadeAMatar & SEP_CHAR & Mission(num).ItemAPegar & SEP_CHAR & Mission(num).ItemAPegarQuant & END_CHAR Call SendDataToAll(Packet) End Sub
Public Sub ChecarEXPLORARMAPA(ByVal Index As Long, ByVal Map As Long) Dim i As Long For i = 1 To MAX_MISSIONS If Mission(i).Tipo = 1 Then If Mission(i).MapaAExplorar = Map Then If GetPlayerMap(Index) = Map Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 2 Then Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 3 Call PlayerMsg(Index, "Você explorou o mapa " & Map & " (da missão " & Mission(i).Name & ")", Green) Call PlayerMsg(Index, "Para finalizar a missão volte a quem lhe deu a missão!", Green) End If End If End If End If Next End Sub
Procure na Sub PlayerMapDropItem(ByVal Index As Long, ByVal InvNum As Long, ByVal Amount As Long): - Código:
-
' Check for subscript out of range If IsPlaying(Index) = False Or InvNum <= 0 Or InvNum > MAX_INV Then Exit Sub End If Abaixo ponha: - Código:
-
For i = 1 To MAX_MISSIONS If Mission(i).Tipo = 4 Then If Mission(i).ItemAPegar = GetPlayerInvItemNum(Index, InvNum) Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 3 Then Call PlayerMsg(Index, "Você não pode dropar o item da missão, você deve entregá-lo!", Red) Exit Sub End If End If End If Next Procure: - Código:
-
Sub CheckItems() Call SaveItems End Sub Em cima adicione: - Código:
-
Sub CheckMissions() Call SaveMissions End Sub Procure: - Código:
-
Sub LoadExps() Dim FileName As String Dim i As Long
Call CheckExps FileName = App.Path & "\Experiência.ini"
For i = 1 To MAX_LEVEL Call SetStatus("Carregando experiência... " & Int((i / MAX_LEVEL) * 100) & "%") Experience(i) = GetVar(FileName, "EXPERIENCE", "Exp" & i)
DoEvents Next
End Sub Abaixo ponha: - Código:
-
Sub LoadMissions() Dim FileName As String Dim i As Long Dim f As Long
Call CheckMissions
For i = 1 To MAX_MISSIONS Call SetStatus("Carregando missões... " & Int((i / MAX_MISSIONS) * 100) & "%") FileName = App.Path & "\Missions\Mission" & i & ".dat" f = FreeFile Open FileName For Binary As #f Get #f, , Mission(i) Close #f
DoEvents Next
End Sub Procure: - Código:
-
' Inventário For n = 1 To MAX_INV Player(Index).Char(i).Inv(n).num = Val(GetVar(FileName, "CHAR" & i, "InvItemNum" & n)) Player(Index).Char(i).Inv(n).Value = Val(GetVar(FileName, "CHAR" & i, "InvItemVal" & n)) Player(Index).Char(i).Inv(n).Dur = Val(GetVar(FileName, "CHAR" & i, "InvItemDur" & n)) Next Abaixo ponha: - Código:
-
For n = 1 To MAX_MISSIONS Player(Index).Char(i).MissionStatus(n) = Val(GetVar(FileName, "CHAR" & i, "MissionStatus" & n)) Player(Index).Char(i).Matados(n) = Val(GetVar(FileName, "CHAR" & i, "Matados" & n)) Player(Index).Char(i).JogadoresMatados(n) = Val(GetVar(FileName, "CHAR" & i, "JogadoresMatados" & n)) Next Procure: - Código:
-
Sub SaveItem(ByVal ItemNum As Long) Dim FileName As String Dim f As Long
FileName = App.Path & "\Itens\item" & ItemNum & ".dat" f = FreeFile Open FileName For Binary As #f Put #f, , Item(ItemNum) Close #f End Sub Abaixo ponha: - Código:
-
Sub SaveMission(ByVal ItemNum As Long) Dim FileName As String Dim f As Long
FileName = App.Path & "\Missions\mission" & ItemNum & ".dat" f = FreeFile Open FileName For Binary As #f Put #f, , Mission(ItemNum) Close #f End Sub Sub SaveMissions() Dim i As Long
Call SetStatus("Salvando missões... ")
For i = 1 To MAX_MISSIONS
If Not FileExist("Missions\mission" & i & ".dat") Then Call SetStatus("Salvando missões... " & Int((i / MAX_MISSIONS) * 100) & "%")
DoEvents Call SaveMission(i) End If
Next
End Sub Procure: - Código:
-
' Inventário For n = 1 To MAX_INV Call PutVar(FileName, "CHAR" & i, "InvItemNum" & n, STR(Player(Index).Char(i).Inv(n).num)) Call PutVar(FileName, "CHAR" & i, "InvItemVal" & n, STR(Player(Index).Char(i).Inv(n).Value)) Call PutVar(FileName, "CHAR" & i, "InvItemDur" & n, STR(Player(Index).Char(i).Inv(n).Dur)) Next Abaixo ponha: - Código:
-
For n = 1 To MAX_MISSIONS Call PutVar(FileName, "CHAR" & i, "MissionStatus" & n, STR(Player(Index).Char(i).MissionStatus(n))) Call PutVar(FileName, "CHAR" & i, "Matados" & n, STR(Player(Index).Char(i).Matados(n))) Call PutVar(FileName, "CHAR" & i, "JogadoresMatados" & n, STR(Player(Index).Char(i).JogadoresMatados(n))) Next Procure: - Código:
-
Public MAX_SPEECH As Long Adicione em baixo: - Código:
-
Public MAX_MISSIONS As Long Procure na Type PlayerRec: - Código:
-
PK As Byte Abaixo coloque: - Código:
-
MissionStatus(1 To 70) As Long ' 1 = Pegando 2 = Em progresso 3 = Completa mas nao pegou recompensa 4 = completa Matados(1 To 70) As Long ' Quantos NPCs matados no caso de missões "Matar NPC" JogadoresMatados(1 To 70) As Long ' Quantos Jogadores Matados no caso de missões "Matar Jogador" CONTINUA... | |
| | | Lucas Roberto Administrador
Mensagens : 711
| Assunto: Re: Sistema de Quest com Editor Qua 22 Jul 2015, 02:48 | |
| Procure: - Código:
-
Type ClassRec Name As String * NAME_LENGTH AdvanceFrom As Long LevelReq As Long
Type As Long Locked As Long MaleSprite As Long FemaleSprite As Long STR As Long DEF As Long Speed As Long Magi As Long Map As Long x As Byte y As Byte End Type Em baixo coloque: - Código:
-
Type MissionRec Name As String ' Nome da missão Fala(0 To 2) As String ' 0 = Fala ao iniciar 1 = Fala em progresso 2 = Fala final
Tipo As Byte ' Tipo da Missão ' No caso de missão tipo MATAR NPC NPCAMatar As Long NPCAMatarQuant As Long ' No caso de missão tipo Explorar Mapa MapaAExplorar As Long ' No caso de missão tipo Falar com NPC NPCAFalar As Long ' No caso de missão tipo Matar Jogador QuantidadeAMatar As Long ' No caso de missão tipo Pegar Item ItemAPegar As Long ItemAPegarQuant As Long NextMission As Long Repetitiva As Long ' Requerimentos: LevelReq As Long MissionReq As Long ItemReq As Long ItemQuantReq As Long ' Recompensas: LevelRec As Long EXPRec As Long ItemRec As Long ItemQuantRec As Long MapRec As Long XRec As Long YRec As Long End Type Procure: - Código:
-
ItemNPC(1 To MAX_NPC_DROPS) As NPCEditorRec Abaixo ponha: - Código:
-
Mission As Long Procure: - Código:
-
Public Npc() As NpcRec Abaixo ponha: - Código:
-
Public Mission() As MissionRec Procure: - Código:
-
Sub ClearGrid() Dim i As Long, y As Long, x As Long
For i = 1 To MAX_MAPS For x = 0 To MAX_MAPX For y = 0 To MAX_MAPY Grid(i).Loc(x, y).Blocked = False Next Next Next
End Sub Abaixo ponha: - Código:
-
Sub ClearMission(ByVal Index As Long) Mission(Index).Name = vbNullString Mission(Index).Tipo = 0 Mission(Index).Fala(0) = vbNullString Mission(Index).Fala(1) = vbNullString Mission(Index).Fala(2) = vbNullString Mission(Index).LevelReq = 0 Mission(Index).MissionReq = 0 Mission(Index).ItemReq = 0 Mission(Index).ItemQuantReq = 0 Mission(Index).NextMission = 0 Mission(Index).Repetitiva = 0 Mission(Index).NPCAMatar = 1 Mission(Index).NPCAMatarQuant = 0 Mission(Index).LevelRec = 0 Mission(Index).EXPRec = 0 Mission(Index).ItemRec = 0 Mission(Index).ItemQuantRec = 0 Mission(Index).MapRec = 0 Mission(Index).XRec = 0 Mission(Index).YRec = 0 Mission(Index).MapaAExplorar = 0 Mission(Index).NPCAFalar = 0 Mission(Index).QuantidadeAMatar = 0 Mission(Index).ItemAPegar = 1 Mission(Index).ItemAPegarQuant = 1 End Sub Sub ClearMissions() Dim i As Long
For i = 1 To MAX_MISSIONS Call ClearMission(i) Next
End Sub Procure na sub ClearNPC - Código:
-
Npc(Index).Speech = 0 Abaixo ponha: - Código:
-
Npc(Index).Mission = 0 Procure: - Código:
-
For n = 1 To MAX_PLAYER_SPELLS Player(Index).Char(i).Spell(n) = 0 Next Acima adicione: - Código:
-
For n = 1 To MAX_MISSIONS Player(Index).Char(i).MissionStatus(n) = 1 Player(Index).Char(i).Matados(n) = 0 Player(Index).Char(i).JogadoresMatados(n) = 0 Next Na Function CanAttackNPC procure: - Código:
-
If Npc(NpcNum).Speech <> 0 Then Call SendDataTo(Attacker, "STARTSPEECH" & SEP_CHAR & Npc(NpcNum).Speech & SEP_CHAR & 0 & SEP_CHAR & NpcNum & END_CHAR) Abaixo ponha: (SIM, ANTES DO END IF) - Código:
-
Call ChecarFALARCOMNPC(Attacker, NpcNum) Agora depois do End if adicione: - Código:
-
If Npc(NpcNum).Mission <> 0 Then Call StartMission(Attacker, Npc(NpcNum).Mission) End If Na Sub JoinGame ache: - Código:
-
Call SendSpeech(Index) Abaixo coloque: - Código:
-
Call SendMissions(Index) Call SendMyMissions(Index) No final do modGameLogic adicione: - Código:
-
Sub StartMission(ByVal Index As Long, ByVal Missionn As Long) Select Case Player(Index).Char(Player(Index).CharNum).MissionStatus(Missionn) Case 1 Call SendDataTo(Index, "STARTMISSION" & SEP_CHAR & "1" & SEP_CHAR & Missionn & END_CHAR) Case 2 Call SendDataTo(Index, "STARTMISSION" & SEP_CHAR & "2" & SEP_CHAR & Missionn & END_CHAR) Case 3 Call SendDataTo(Index, "STARTMISSION" & SEP_CHAR & "3" & SEP_CHAR & Missionn & END_CHAR) Case 4 If Mission(Missionn).Repetitiva = 1 Then Call SendDataTo(Index, "STARTMISSION" & SEP_CHAR & "1" & SEP_CHAR & Missionn & END_CHAR) Else Call PlayerMsg(Index, "Você já fez esta missão e ela não pode se repetir!", Red) End If End Select End Sub
Sub SendMyMissions(ByVal Index As Long) Dim i As Long Call SendDataTo(Index, "clearmisslist" & END_CHAR)
For i = 1 To MAX_MISSIONS If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) <> 1 Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) <> 3 Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) <> 4 Then Call SendDataTo(Index, "misslist" & SEP_CHAR & Mission(i).Name & END_CHAR) End If End If End If If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 4 Then Call SendDataTo(Index, "commisslist" & SEP_CHAR & Mission(i).Name & END_CHAR) End If Next End Sub
Sub ChecarMATARNPC(ByVal Index As Long, ByVal Np As Long) Dim i As Long For i = 1 To MAX_MISSIONS If Mission(i).Tipo = 0 Then If Mission(i).NPCAMatar = Np Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 2 Then Player(Index).Char(Player(Index).CharNum).Matados(i) = Player(Index).Char(Player(Index).CharNum).Matados(i) + 1 Call PlayerMsg(Index, Trim$(Npc(Np).Name) & ": " & Val(Player(Index).Char(Player(Index).CharNum).Matados(i)) & "/" & Val(Mission(i).NPCAMatarQuant), Green) If Player(Index).Char(Player(Index).CharNum).Matados(i) >= Mission(i).NPCAMatarQuant Then Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 3 Player(Index).Char(Player(Index).CharNum).Matados(i) = 0 Call PlayerMsg(Index, "Missão " & Mission(i).Name & " completa, retorne à quem lhe deu a missão para receber as recompensas.", Green) End If End If End If End If Next End Sub
Sub ChecarFALARCOMNPC(ByVal Index As Long, ByVal NpcNum As Long) Dim i As Long For i = 1 To MAX_MISSIONS If Mission(i).Tipo = 2 Then If Mission(i).NPCAFalar = NpcNum Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 2 Then Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 3 Call PlayerMsg(Index, "Missão " & Mission(i).Name & " completa, retorne à quem lhe deu a missão para receber as recompensas.", Green) End If End If End If Next End Sub
Sub ChecarMATARJOGADOR(ByVal Attacker As Long) Dim i As Long For i = 1 To MAX_MISSIONS If Mission(i).Tipo = 3 Then If Player(Attacker).Char(Player(Attacker).CharNum).MissionStatus(i) = 2 Then Player(Attacker).Char(Player(Attacker).CharNum).JogadoresMatados(i) = Player(Attacker).Char(Player(Attacker).CharNum).JogadoresMatados(i) + 1 Call PlayerMsg(Attacker, "Jogadores Matados: " & Val(Player(Attacker).Char(Player(Attacker).CharNum).JogadoresMatados(i)) & "/" & Val(Mission(i).QuantidadeAMatar), Green) If Player(Attacker).Char(Player(Attacker).CharNum).JogadoresMatados(i) >= Mission(i).QuantidadeAMatar Then Player(Attacker).Char(Player(Attacker).CharNum).MissionStatus(i) = 3 Player(Attacker).Char(Player(Attacker).CharNum).JogadoresMatados(i) = 0 Call PlayerMsg(Attacker, "Missão " & Mission(i).Name & " completa, retorne à quem lhe deu a missão para receber as recompensas.", Green) End If End If End If Next End Sub
Sub ChecarPEGARITEM(ByVal Index As Long, ByVal n As Long) ' Item(GetPlayerInvItemNum(Index, N)).Name Dim i As Long For i = 1 To MAX_MISSIONS If Mission(i).Tipo = 4 Then If Item(Mission(i).ItemAPegar).Name = Item(GetPlayerInvItemNum(Index, n)).Name Then If Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 2 Then If HasItem(Index, Mission(i).ItemAPegar) >= Mission(i).ItemAPegarQuant Then Player(Index).Char(Player(Index).CharNum).MissionStatus(i) = 3 Call PlayerMsg(Index, "Missão " & Mission(i).Name & " completa, retorne à quem lhe deu a missão para receber as recompensas.", Green) End If End If End If End If Next End Sub
Procure: - Código:
-
Call GlobalMsg(GetPlayerName(Victim) & " foi morto por " & GetPlayerName(Attacker), BrightRed) Adicione em baixo: - Código:
-
Call ChecarMATARJOGADOR(Attacker) Procure: - Código:
-
' Agora, setar HP para 0 Abaixo adicione: - Código:
-
Call ChecarMATARNPC(Attacker, NpcNum) Procure: - Código:
-
' Erase item from the map MapItem(MapNum, i).num = 0 MapItem(MapNum, i).Value = 0 MapItem(MapNum, i).Dur = 0 MapItem(MapNum, i).x = 0 MapItem(MapNum, i).y = 0 Call SendInventoryUpdate(Index, n) Call SpawnItemSlot(i, 0, 0, 0, GetPlayerMap(Index), GetPlayerX(Index), GetPlayerY(Index)) Call PlayerMsg(Index, Msg, Yellow) Adicione em baixo: - Código:
-
Call ChecarPEGARITEM(Index, n) Download da form frmMissionEditor: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]Créditos: Renan | |
| | | | Sistema de Quest com Editor | |
|
Tópicos semelhantes | |
|
| Permissões neste sub-fórum | Não podes responder a tópicos
| |
| |
| |
|