Нус поеххали
На стороне сервера и клиента в modConstants
после NPC_BEHAVIOUR_GUARD вставляем
Code
Public Const NPC_BEHAVIOUR_SCRIPTED As Byte = 5
на стороне клиента в frmEditor_NPC
для скрола с названием cmbBehaviour добавляем в разделе
List надпись Scripted (Тык)
На стороне сервера (modCombat)
В функции Function CanPlayerAttackNpc
изменяем:
Code
If Npc(npcNum).Behaviour <> NPC_BEHAVIOUR_FRIENDLY And Npc(npcNum).Behaviour <> NPC_BEHAVIOUR_SHOPKEEPER Then
на
Code
If Npc(npcNum).Behaviour <> NPC_BEHAVIOUR_FRIENDLY And Npc(npcNum).Behaviour <> NPC_BEHAVIOUR_SHOPKEEPER And Npc(npcNum).Behaviour <> NPC_BEHAVIOUR_SCRIPTED Then
Так с вызовом закончили.
Теперь собственно переходим к самим кв.
На стороне сервера в modCombat
Удаляем как на рисунке в месте с Else
Рисунок
вставляем на место удаленного Код:
Code
If Npc(npcNum).Behaviour = NPC_BEHAVIOUR_SCRIPTED Then
CanPlayerAttackNpc = False
Call QuestScript(attacker, Int(npcNum))
Exit Function
End If
Переходим в modTypes
Найдите ' public data structures
И в самом конце вставьте
Code
Public Quest(1 To MAX_PLAYERS) As PlayerRec
в этом же модуле
после
Code
Public Type HotbarRec
Slot As Long
sType As Byte
End Type
Вставьте
Code
Public Type QuestRec
NPCQuestProgress As Long
End Type
В PlayerRec поместите это:
Code
'Quest
NPCQuest(1 To MAX_NPCS) As QuestRec
Создайте новый модуль назовите его modQuest и поместите
туда этот код
Code
Public Sub QuestScript(attacker, Script)
Select Case Script
Case 1
If Player(attacker).NPCQuest(Int(Script)).NPCQuestProgress = 2 Then
Call PlayerMsg(attacker, "Angel: Nice job getting the weird potion!", Green)
ElseIf Player(attacker).NPCQuest(Int(Script)).NPCQuestProgress = 1 Then
If HasItem(attacker, 3) Then
Call TakeInvItem(attacker, 3, 0)
Call PlayerMsg(attacker, "Angel: Wow, I needed this. Now I can make a stronger potion! Here's your reward.", Green)
Call PlayerMsg(attacker, "You just obtained 100 Gold!", Green)
Call GiveInvItem(attacker, 1, 100, True)
Player(attacker).NPCQuest(Int(Script)).NPCQuestProgress = 2
Else
Call PlayerMsg(attacker, "Angel: I believe you can get a Weird Potion by cutting down one of these trees, don't know how you obtain a Potion for it though haha.", Green)
End If
ElseIf Player(attacker).NPCQuest(Int(Script)).NPCQuestProgress = 0 Then
Call PlayerMsg(attacker, "Angel: Hey.. Maybe you can help me, I like to get a Weird Potion? I'll reward you...", Green)
Player(attacker).NPCQuest(Int(Script)).NPCQuestProgress = 1
End If
Exit Sub
Case 2
Exit Sub
Case 3
Exit Sub
Case 4
Exit Sub
Case 5
Exit Sub
Case Else
Call PlayerMsg(attacker, "There is no quest script for NPC Number " & Int(Script) & ". Check the source..", BrightRed)
Exit Sub
End Select
End Sub
На стороне клиента в modTypes
перед PlayerRec разместить:
Code
Public Type QuestRec
NPCQuestProgress As Long
End Type
Внутрь PlayerRec поместить это:
Code
'Quest
NPCQuest(1 To MAX_NPCS) As QuestRec
Я поместил туда еще кв самим с форума, откуда и сам кввестовый движок ради пробы.
Принцип движка прост, проверяет сделан ли кв если нет выдает ошибку, проверяет если сделан кв, то больше уже его не выдает.
http://www.touchofdeathforums.com/smf/index.php/topic,68426.0.html - оригинал
Добавлено (20.02.2011, 21:00)
---------------------------------------------
Это обычный текстовой, но есть еще и графический типо: выводит окно кнопочки есть все такое как в нормальных MMO только у меня его не получилось сделать выдает какие то ошибки хотя разработчик говорит, что на 2.0 все оч хорошо идет посижу поломаю щас голову