Перейти к содержанию

Рекомендуемые сообщения

Итак, имеется нпц регистратор. Можно ли, сделать так, чтобы он запоминал игрока в глобальную переменную, чтобы в дальнейшем, игрок смог общаться со всеми остальными НПЦ? И как это сделать?

Ссылка на комментарий
Поделиться на другие сайты

т.е. подойдя к одному нпц открывается доступ ко всем остальным?

если да,то в код первого нпц вводим новую переменную

set registrator,1;

в остальных нпц делаем проверку на нее

if(registrator!=1) end;

Ссылка на комментарий
Поделиться на другие сайты

Итак, вот мой скрипт регистратора:


sec_in01.gat,73,167,0 script Регистратор 871,{
set registrator,1;
if(registrator!=0) {
mes "[Регистратор]";
mes "Привет "+strcharinfo(0)+". Я главный Регистратор.";
mes "Я вижу, что ты тут новенький!";
mes "Для того чтобы начать играть, я должен тебя зарегистрировать.";
next;
mes "[Регистратор]";
mes "Приступим...";
next;
mes "[Регистратор]";
mes "...";
next;
mes "[Регистратор]";
mes "......";
next;
mes "[Регистратор]";
mes ".........";
next;
mes "[Регистратор]";
mes "Твое имя - "+strcharinfo(0)+"";
mes "Твоя профессия - "+Job+"";
mes "Твой базовый уровень - "+BaseLevel+"";
mes "Твой рабочий уровень - "+JobLevel+"";
mes "Время - "+gettime(3)+"";
next;
mes "[Регистратор]";
mes "Великолепно!";
mes "Хорошо, отнеси эти бумаги моему помощнику.";
getitem 7848,1;
next;
mes "[Регистратор]";
mes "Не потеряй их! Без них ты не сможешь пройти обучающий курс новичка!";
mes "Удачи тебе и успехов.";
close;
}
else {
mes "[Регистратор]";
mes "Я тебе дал необходимые бумаги, пожалуйста";
mes "поговорите с моим помощником.";
close;
}
}

Мне нужно, чтобы он делал проверку на повтор разговора, но почему-то не работает. В чем косяк?

Ссылка на комментарий
Поделиться на другие сайты

sec_in01.gat,73,167,0   script  Регистратор     871,{
if(registrator==1){ mes "[Регистратор]"; mes "Я тебе дал необходимые бумаги,пожалуйста поговорите с моим помощником."; close; }
mes "[Регистратор]";
mes "Привет "+strcharinfo(0)+". Я главный Регистратор.";
mes "Я вижу, что ты тут новенький!";
mes "Для того чтобы начать играть, я должен тебя зарегистрировать.";
next;
mes "[Регистратор]";
mes "Приступим...";
next;
mes "[Регистратор]";
mes "...";
next;
mes "[Регистратор]";
mes "......";
next;
mes "[Регистратор]";
mes ".........";
next;
mes "[Регистратор]";
mes "Твое имя - "+strcharinfo(0)+"";
mes "Твоя профессия - "+Job+"";
mes "Твой базовый уровень - "+BaseLevel+"";
mes "Твой рабочий уровень - "+JobLevel+"";
mes "Время - "+gettime(3)+"";
next;
mes "[Регистратор]";
mes "Великолепно!";
mes "Хорошо, отнеси эти бумаги моему помощнику.";
getitem 7848,1;
next;
mes "[Регистратор]";
mes "Не потеряй их! Без них ты не сможешь пройти обучающий курс новичка!";
mes "Удачи тебе и успехов.";
set registrator,1;
close;
}

  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

Работает, спасибо.

Теперь другой вопрос при выведении

mes "...";

Для того чтобы сделать по очередное выведение каждой точки, нужна команда sleep?

Ссылка на комментарий
Поделиться на другие сайты

Возможно ли выложить шпаргалку по знакам, т.е. ==, != и т.д.

Будет полезно начинающим.

В отдельной теме.

Ссылка на комментарий
Поделиться на другие сайты

Самые основные,

==

!=

и другие, их вроде не очень много как мне помнится из курса qbasic'a

Ссылка на комментарий
Поделиться на другие сайты

если мне необходимо тп персонажа сразу после разговора с нпц, допустим:


mes "Сейчас я тебя телепортирую";
....
close;

что прописать надо?

Ссылка на комментарий
Поделиться на другие сайты

Имеется кусок кода:

mes "[Помощник Регистратора]";

mes "Привет! Я помощник Регистратора.";

mes "Сейчас я проверю твои бумаги и мы приступим.";

delitem 7848,1;

next;

mes "[Помощник Регистратора]";

mes "Все в порядке.";

mes "Сейчас я тебе расскажу, о том, что тебе нужно будет сделать дальше.";

mes "Хочешь послушать меня?";

switch(select("Да, мне интересно:Нет, я все знаю:Пока")){

close

}

Как сделать так: если персонаж случайно нажимает close и при этом у него забирают бумаги, то при повторном нажатие на помощника он смог с ним говорить, а не выходил с диалога с ошибкой, якобы бумаг нет

Ссылка на комментарий
Поделиться на другие сайты

нужно не удалять бумаги сразу,а сделать проверку на их наличие

if(countitem(7848)==0) end;

а после "Да,мне интересно" уже удалить

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Вот:


sec_in01,72,181,0 script Помощник Регистратора 864,{
if(registrator==0){
mes "[Помощник Регистраторп]";
mes "Сперва ты должен поговорить с Главным Регистратором.";
close;
}
if(registrator!=1) end;
if(countitem(7848)<1 goto L_noitems;
mes "[Помощник Регистратора]";
mes "Привет! Я помощник Регистратора.";
mes "Сейчас я проверю твои бумаги и мы приступим.";
delitem 7848,1;
next;
mes "[Помощник Регистратора]";
mes "Все в порядке.";
mes "Сейчас я тебе расскажу, о том, что тебе нужно будет сделать дальше.";
mes "Хочешь послушать меня?";
switch(select("Да, мне интересно:Нет, я все знаю:Пока")){
case 1:
mes "[Помощник Регистратора]";
mes "Прекрасно, прослушав мою лекцию, в конце тебя ждет подарок.";
next;
mes "[Помощник Регистратора]";
mes "Итак, ты находишься в Информационном Центре Новичка.";
mes "Здесь ты можешь научиться основам основ и";
mes "потом применить все свое мастерство на практике.";
next;
mes "[Помощник Регистратора]";
mes "Для начала тебе нужно будет поговорить с Мастером Правил.";
mes "Он расскажет тебе правила поведения на нашем сервере.";
mes "Потом задаст тебе пару простых вопросов и подготовит";
mes "все необходимые бумаги.";
next;
mes "[Помощник Регистратора]";
mes "Далее тебе нужно будет отнести эти бумаги к Тренеру Новичков.";
mes "Он расскажет тебе о правилах боя";
mes "о том как получить профессию и много разной чепухи...";
mes "Просто сама сдала экзамен по блату ^^";
next;
mes "[Помощник Регистратора]";
mes "После всех разговоров, ты перенесешься в Центр Подготовки Новичков.";
mes "Там ты сможешь применить все свои знания на практике";
mes "и набраться необходимого опыта";
next;
mes "[Помощник Регистратора]";
mes "После всех тренировок ты продолжишь свой путь";
mes "перед тобой откроются превосходные возможности.";
mes "Ты сможешь добиться большого успеха, если будешь";
mes "стараться и прикладывать свои усилия.";
next;
mes "[Помощник Регистратора]";
mes "Сейчас подготовлю все бумаги и отпущу тебя.";
next;
mes "[Помощник Регистратора]";
mes "Вот держи, спасибо, что прослушал(а) мою лекцию.";
getitem 7847,1;
next;
mes "[Помощник Регистратора]";
mes "А это за-то, что набрался(ась) терпения.";
getitem 7199,1;
close;
case 2:
mes "[Помощник Регистратора]";
mes "Отлмчно, тогда я тебе сразу дам направление к Мастеру Правил.";
getitem 7847,1;
close;
case 3:
mes "[Помощник Регистратора]";
mes "Ты не сможешь продолжить свой путь, не поговорив со мной.";
close;
}
L_noitems;
mes "[Помощник Регистратора]";
mes "Извини у тебя нет необходимых бумаг.";
close;
}

И допустим, на этом моменте:


if(countitem(7848)<1 goto L_noitems;
mes "[Помощник Регистратора]";
mes "Привет! Я помощник Регистратора.";
mes "Сейчас я проверю твои бумаги и мы приступим.";
delitem 7848,1;

Игрок нажимает close и его кидает на этот момент:


L_noitems;
mes "[Помощник Регистратора]";
mes "Извини у тебя нет необходимых бумаг.";
close;

Как можно это исправить?

Ссылка на комментарий
Поделиться на другие сайты

Ну блин делай как было. Выше же уже подсказали. В момент забирания бумаг ставь опять глобальную переменную


mes "[Помощник Регистратора]";
if (registrator == 2) goto DOC_OK;
mes "Привет! Я помощник Регистратора.";
mes "Сейчас я проверю твои бумаги и мы приступим.";
delitem 7848,1;
set registrator,2;
next;

DOC_OK:
mes "[Помощник Регистратора]";
mes "Все в порядке.";
mes "Сейчас я тебе расскажу, о том, что тебе нужно будет сделать дальше.";
mes "Хочешь послушать меня?";
switch(select("Да, мне интересно:Нет, я все знаю:Пока")){
close
}

и да, выше правильно сказали что надо делать обязательно проверку на итемы. :)

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

нужно не удалять бумаги сразу,а сделать проверку на их наличие

if(countitem(7848)==0) end;

а после "Да,мне интересно" уже удалить

Во! Точно, спасибо

Ссылка на комментарий
Поделиться на другие сайты

Получается так?


if(registrator!=1) end;
if(countitem(7848)==0) goto L_noitems;
mes "[Помощник Регистратора]";
mes "Привет! Я помощник Регистратора.";
mes "Сейчас я проверю твои бумаги и мы приступим.";
next;
mes "[Помощник Регистратора]";
mes "Все в порядке.";
mes "Сейчас я тебе расскажу, о том, что тебе нужно будет сделать дальше.";
mes "Хочешь послушать меня?";
switch(select("Да, мне интересно:Нет, я все знаю:Пока")){
case 1:
delitem 7848,1;
mes "[Помощник Регистратора]";
mes "Прекрасно, прослушав мою лекцию, в конце тебя ждет подарок.";
next;

Ссылка на комментарий
Поделиться на другие сайты

      if(registrator!=1) end;
mes "[Помощник Регистратора]";
mes "Привет! Я помощник Регистратора.";
mes "Сейчас я проверю твои бумаги и мы приступим.";
if(countitem(7848)==0) goto L_noitems;
next;
mes "[Помощник Регистратора]";
mes "Все в порядке.";
mes "Сейчас я тебе расскажу, о том, что тебе нужно будет сделать дальше.";
mes "Хочешь послушать меня?";
switch(select("Да, мне интересно:Нет, я все знаю:Пока")){
case 1:
delitem 7848,1;
mes "[Помощник Регистратора]";
mes "Прекрасно, прослушав мою лекцию, в конце тебя ждет подарок.";
next;

если ты поставишь проверку до "Сейчас я проверю твои бумаги и мы приступим." будет глупо)

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика