72 сообщения в этой теме

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

0

Поделиться сообщением


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

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

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

set registrator,1;

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

if(registrator!=1) end;

0

Поделиться сообщением


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

Какие переменный отвечают за вывод базового и джоб уровня?

0

Поделиться сообщением


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

JobLevel и BaseLevel соответственно

0

Поделиться сообщением


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

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


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;
}
}

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
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;
}

2

Поделиться сообщением


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

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

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

mes "...";

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

0

Поделиться сообщением


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

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

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

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

0

Поделиться сообщением


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

если ты будешь писать sleep; аттач сбросится.нужно использовать sleep2.

какие еще знаки нужно пояснить?

0

Поделиться сообщением


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

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

==

!=

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

0

Поделиться сообщением


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

из курса математики скорее))

!= не равно
== равно
>= больше либо равно
<= меньше либо равно

1

Поделиться сообщением


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

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


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

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mes "Сейчас я тебя телепортирую";
close2;
warp "карта",x,y;

0

Поделиться сообщением


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

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

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

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

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

delitem 7848,1;

next;

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

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

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

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

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

close

}

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

0

Поделиться сообщением


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

точнее при нажатие close, бумаги не забирались

0

Поделиться сообщением


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

Не совсем понятно,что ты хочешь.Выложи полный код скрипта.

0

Поделиться сообщением


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

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

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

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

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;

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

0

Поделиться сообщением


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

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


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
}

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

1

Поделиться сообщением


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

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

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

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

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

0

Поделиться сообщением


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

кнопочке есть :rolleyes:

1

Поделиться сообщением


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

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


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;

0

Поделиться сообщением


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

      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;

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

0

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас