Итак, в первом уроке я расскажу о том, как создать самый простенький квест. В этом уроке мы также познакомимся с игровыми скриптами и тем, что они из себя представляют. Приступим: 1) Создадим NPC, у которого поставим Scripted и выберем в полоске Script -> 1 (Это означает номер Case см. ниже). 2) Поставим где-нибудь нашего НПС, чтобы потом поговорить с ним и взять квест. 3) Идём в папку Server -> Scripts -> Events -> и открываем в блокноте ScriptedNpc 4) В папке Scripts -> создаём папку Quests. 5) Создаём еще одного НПЦ. 6) Создаём какую-нибудь вещь, чтобы та дропалась с моба и её нужно было принести квестодателю. 7) Пишем скрипт в ScriptedNpc.То что помечено этим знаком (') - обычный комментарий, его писать ненужно.:
Code
Case 1 'Номер скрипта, который использует NPC If GetPlayerLevel(Index) >= 1 then ' Если уровень персонажа больше или равен еденице, то. If GetVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1") = vbNullString Then Call PlayerMsg(Index, "Здесь должен быть текст, который будет говорить вам NPC в чате.", YELLOW) ' Call - обязательная вещь для вызова того или иного скрипта. Yellow - цвет текста в чате (желтый) Call PutVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1", 1) 'Создаём в папке Quests файл игрока, в котором отмечаются стадии квеста. Сейчас эта стадия - 1. General - то, что написано в квадратных скобках (программное имя квеста). Quest1 - программная отметка квеста. 1 - стадия квеста.'
Else if GetVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1") = 1 Then If CanTake(Index, 2, 8) then' Внимание: цифры могут отличаться от ваших, смотрите: 2 - это номер предмета. 8 - это количество предметов. CanTake - есть ли у вас этот предмет в данном количестве. Call PlayerMsg(Index, "Здесь, по идее, должна быть благодарность NPCa", YELLOW) Call TakeItem(Index, 2, 8) ' Забирает вещи. Скрипт похож на CanTake. 2 - номер предмета. 8 - количество предметов, которые нужно забрать. Call GiveCurrency(Index, 1, 100) ' Выдаёт деньги или тот предмет, что помечен под Currency. 1 - номер предмета, 100 - количество. Call PutVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1", 2) end if end if End if End if Exit Sub
+ в репу b Fulier автор
Сообщение отредактировал 67boy - Пятница, 22 Октября 2010, 23:38
Fulier не плохое дополнение чтобы и тебе поставили спасибку!
Добавлено (19.10.2010, 22:32) --------------------------------------------- Кстати странно попробовал кв не робит почему то имею ввиду потом вещи не отдаёт нипсу и такая вот заглушка получается))
Этот скрипт отвечает за взятие вещи у игрока. Если он не работает, то проблема кроется в правильности работы данной команды в других скриптах. Нужно искать. Лампа. Кофе. Игра. - сайт о компьютерных, компьютерных и еще раз компьютерных играх.
Добавлено (22.10.2010, 20:29) --------------------------------------------- ХД теперь воспринимать вообще перестал Case 4 If GetPlayerLevel(Index) >= 1 then ' Если уровень персонажа больше или равен еденице, то. If GetVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1") = vbNullString Then Call PlayerMsg(Index, "I lost shild help me faind him.", YELLOW) ' Call - обязательная вещь для вызова того или иного скрипта. Yellow - цвет текста в чате (желтый) Call PutVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1", 1) 'Создаём в папке Quests файл игрока, в котором отмечаются стадии квеста. Сейчас эта стадия - 1. General - то, что написано в квадратных скобках (программное имя квеста). Quest1 - программная отметка квеста. 1 - стадия квеста.'
Else if GetVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1") = 1 Then If CanTake(Index, 2, 1) then' Внимание: цифры могут отличаться от ваших, смотрите: 2 - это номер предмета. 8 - это количество предметов. CanTake - есть ли у вас этот предмет в данном количестве. Call PlayerMsg(Index, "Oh, were he is", YELLOW) Call TakeItem(Index, 2, 1) ' Забирает вещи. Скрипт похож на CanTake. 2 - номер предмета. 8 - количество предметов, которые нужно забрать. Call GiveCurrency(Index, 4, 100) ' Выдаёт деньги или тот предмет, что помечен под Currency. 1 - номер предмета, 100 - количество. Call PutVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1", 2) end if end if End if End if Exit Sub
if GetPlayerLevel(Index) >= 1 then ' Если уровень персонажа больше или равен еденице, то. If GetVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1") = vbNullString Then Call PlayerMsg(Index, "I lost shild help me faind him.", YELLOW) ' Call - обязательная вещь для вызова того или иного скрипта. Yellow - цвет текста в чате (желтый) Call PutVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1", 1) 'Создаём в папке Quests файл игрока, в котором отмечаются стадии квеста. Сейчас эта стадия - 1. General - то, что написано в квадратных скобках (программное имя квеста). Quest1 - программная отметка квеста. 1 - стадия квеста.' end if
Else if GetVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1") = 1 Then If CanTake(Index, 2, 1) then' Внимание: цифры могут отличаться от ваших, смотрите: 2 - это номер предмета. 8 - это количество предметов. CanTake - есть ли у вас этот предмет в данном количестве. Call PlayerMsg(Index, "Oh, were he is", YELLOW) Call TakeItem(Index, 2, 1) ' Забирает вещи. Скрипт похож на CanTake. 2 - номер предмета. 8 - количество предметов, которые нужно забрать. Call GiveCurrency(Index, 4, 100) ' Выдаёт деньги или тот предмет, что помечен под Currency. 1 - номер предмета, 100 - количество. Call PutVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1", 2) end if end if End if
Exit Sub
Лампа. Кофе. Игра. - сайт о компьютерных, компьютерных и еще раз компьютерных играх.
Добавлено (23.10.2010, 21:13) --------------------------------------------- вот кодики файлов: scriptedNPC.ess:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Module: ScriptedNPC.ess ' ' Author: Stephan J.R. van Schaik <stephan_van_schaik@msn.com> ' ' Date: August 30th, 2009. ' ' Version: 1.0.0 ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''' ' Function: ScriptedNPC ' ' Brief: executes when somebody talks to a NPC. ' ' Parameters: ' ' Index: the index of the player. ' ' Script: the script to execute. ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub ScriptedNPC(Index, Script) Select Case Script Case 1 if GetPlayerLevel(Index) >= 1 then ' Если уровень персонажа больше или равен еденице, то. If GetVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1") = vbNullString Then Call PlayerMsg(Index, "I lost shild help me faind him.", YELLOW) ' Call - обязательная вещь для вызова того или иного скрипта. Yellow - цвет текста в чате (желтый) Call PutVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1", 1) 'Создаём в папке Quests файл игрока, в котором отмечаются стадии квеста. Сейчас эта стадия - 1. General - то, что написано в квадратных скобках (программное имя квеста). Quest1 - программная отметка квеста. 1 - стадия квеста.' end if
Else if GetVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1") = 1 Then If CanTake(Index, 2, 1) then' Внимание: цифры могут отличаться от ваших, смотрите: 2 - это номер предмета. 8 - это количество предметов. CanTake - есть ли у вас этот предмет в данном количестве. Call PlayerMsg(Index, "Oh, were he is", YELLOW) Call TakeItem(Index, 2, 1) ' Забирает вещи. Скрипт похож на CanTake. 2 - номер предмета. 8 - количество предметов, которые нужно забрать. Call GiveCurrency(Index, 4, 100) ' Выдаёт деньги или тот предмет, что помечен под Currency. 1 - номер предмета, 100 - количество. Call PutVar("Scripts\Quests\" & GetPlayerName(Index) & ".ini", "General", "Quest1", 2) end if end if End if End Select End Sub
Добавлено (23.10.2010, 21:14) --------------------------------------------- Раньше все норм как по часам теперь даже гильд мастер не робит
После каждого Case должен стоять Exit Sub, а между ними располагаются все команды. Также советую проверить папку Quests, правильно ли она располагается и т.п. вещи.
Добавлено (24.10.2010, 09:56) --------------------------------------------- А End Select и End Sub, вообще должны быть использованы только один раз и в самом конце скрипта, после всех Case. (Это если ты вдруг не знаешь, так на всякий случай говорю=)).
Лампа. Кофе. Игра. - сайт о компьютерных, компьютерных и еще раз компьютерных играх.
Люди извиняюсь за свою не внимательность. Если читать гайды на офф форуме то ясно написано все характеристики NPC должны стоять хотябы на 1 Но спс за то что рекомендовали)) Fulier
Code
End Select End Sub
Это всё естественно проставлено))) Ещё раз извиняюсь за балагам всем спасибо. Выпрямляю путем кнута и пряника