Назад

Помогите с Нпц пожалуйста.

Автор: KensyWhim: Дата: 12.20.2009

Суть скрипта:
Надо что бы нпц перекрашивал в какой либо цвет итемы (головные уборы), Итемов много, по этому что бы не писать весь список итемов в меню нпц, желательно вводить айди итема, и потом выбор цвета естественно, цвет на выбор из меню, и за свою работу непись брал к приеру 500к и необходимую краску для покраски.
---------------
Помогите с реализацией скрипта пожалуйста.

Автор: KensyWhim: Дата: 12.20.2009

Цитата Хитрюга Джэк;16867:
это нетрудно, завтра выложу скрипт, сейчас просто времени нет


Хорошо, буду ждать, спасибо ^_^

Автор: nomn: Дата: 12.20.2009

Это невозможно. НПС не может перекрашивать вещи, он может менять одну вещь на другую. К примеру красные крылья удаляет, синие даёт. Соответственно в твоём патче и ДБ должны быть все вещи, который НПС должен менять.

Автор: Мяфк: Дата: 12.20.2009

Raff, он писал про это:

Итемов много

Автор: nomn: Дата: 12.20.2009

Надо бросить эту привычку: угадывать вопрос по первым словам.. :)

Автор: KensyWhim: Дата: 12.20.2009

Цитата Raff;16876:
Это невозможно. НПС не может перекрашивать вещи, он может менять одну вещь на другую. К примеру красные крылья удаляет, синие даёт. Соответственно в твоём патче и ДБ должны быть все вещи, который НПС должен менять.


Я понимаю что перекрашивать не возможно, люди то не знающие "сока" скриптов, не будут знать что Нпц делает )))

Автор: Мяфк: Дата: 12.20.2009

Написание нпц долгое, т.к. на каждый айди надо прописать ещё кучу, айди с синей, красной, чёрной шмоткой и т.п., я бы взялся, но не за бесплатно.

Автор: KensyWhim: Дата: 12.20.2009

Цитата Мяфк;16892:
Написание нпц долгое, т.к. на каждый айди надо прописать ещё кучу, айди с синей, красной, чёрной шмоткой и т.п., я бы взялся, но не за бесплатно.


Ну может хотя бы подскажешь где что примерна подставить
Как примерна написать.. :essen:

Я не много то вроде шарю в скриптинге... но тут чутка не догоняю:idontno:

Автор: Мяфк: Дата: 12.20.2009

Ну человек вводит id предмета далее проверка, если этот предмет можно перекрасить, то переходим на выбор цвета, и там уже удаляем старый предмет, даём новый. Гемор в том что к каждому предмету надо прописывать свой код.

Автор: KensyWhim: Дата: 12.20.2009

Цитата Мяфк;16895:
Ну человек вводит id предмета далее проверка, если этот предмет можно перекрасить, то переходим на выбор цвета, и там уже удаляем старый предмет, даём новый. Гемор в том что к каждому предмету надо прописывать свой код.


Спасиб...
Подожду до завтра, Хитрюга Джэк сказал что завтра выложит.
Посмотрим :)

Автор: Хитрюга Джэк: Дата: 12.21.2009

в общем так.... дело на самом деле не быстрое и кропотливое.
уверен что с первого раза не заработает) но всё приходит с опытом)

начинаем с момента когда нам у нас заберают нужные краски и выдают нужную цветную вещь:

mes "[ ^0065DFПокраска^000000 ]";
mes "для этого цвета нужна 1 синяя краска";
mes "У тебя она с собой?";
next;
if(countitem(978)<1) goto NoItems;
delitem 978,1;
delitem 777,1;
mes "Вот,возьмите краску.";
next;

mes "[ ^0065DFПокраска^000000 ]";
mes "Да,это именно то, что нужно";
getitem 777,1;
close;


потом даём расширяем это и делаем чтобы человеку предоставился выбор из нескольких цветов. Не забываем менять ID цветных вещей и ID красок.
Получаем:

mes "[ ^0065DFПокраска^000000 ]";
mes "Каким цветом хотите покрасить вашу вещь?";
next;
switch(select("Синий:Красный:зелёный")) {
case 1:
mes "[ ^0065DFПокраска^000000 ]";
mes "для этого цвета нужна 1 синяя краска";
mes "У тебя она с собой?";
next;
if(countitem(978)<1) goto NoItems;
delitem 978,1;
delitem 777,1;
mes "Вот,возьмите краску.";
next;

mes "[ ^0065DFПокраска^000000 ]";
mes "Да,это именно то, что нужно";
getitem 777,1;
close;

case 2:
mes "[ ^0065DFПокраска^000000 ]";
mes "для этого цвета нужна 1 синяя краска";
mes "У тебя она с собой?";
next;
if(countitem(975)<1) goto NoItems;
delitem 975,1;
delitem 777,1;
mes "Вот,возьмите краску.";
next;

mes "[ ^0065DFПокраска^000000 ]";
mes "Да,это именно то, что нужно";
getitem 888,1;
close;
case 3:
mes "[ ^0065DFПокраска^000000 ]";
mes "для этого цвета нужна 1 синяя краска";
mes "У тебя она с собой?";
next;
if(countitem(979)<1) goto NoItems;
delitem 979,1;
delitem 777,1;
mes "Вот,возьмите краску.";
next;

mes "[ ^0065DFПокраска^000000 ]";
mes "Да,это именно то, что нужно";
getitem 999,1;
close;
}



это мы сделали одну вещь для покраски в нужные цвета.
теперь чтобы сделать покраску всем нужным нам вещам, необходимо ещё на один уровень выше задать выбор вещи, от которого пойдут ветки.
Впринципе несложно, нудно аккуратно делать просто.
Пусть скрипт получится громоздким, но он БУДЕТ работать.

Примечание 777 это вещь стандартного цвета
777 синяя вещь
888 красная вещь
999 зелёная вещь

Автор: KensyWhim: Дата: 12.22.2009

В общем... я тут написал вот такое примерно:



next;
menu "Ввести ID шапки",-,
"Информация",info;

input .@item;
if(.@item == 0) goto exit;

next;
mes "[^1f7fd8Master Hats^000000]";
mes "В какой цвет ты хочешь";
mes "покрасить свою шапку?";

next;
menu "Чёрный",black,
// "Синий",blue,
// "Голубой",bluewh,
// "Жёлтый",yellow,
// "Зелёный",green,
// "Фиолетовый",violet,
// "Красный",red,
// "Белый",white,
"Оставить как есть",exit;
close;

//=================Black=========================
black:
if(countitem(949) > 9 && Zeny > 999999)
if(countitem(5013) > 0)
if(countitem(983) > 0)
{

mes "[^1f7fd8Master Hats^000000]";
mes "Вы уверены, что хотите";
mes "перекрасить свою шапку?";

menu "Да, давай быстрей!",black_y,
"Нет, я передумал пока ты тормозил <_<",exit;

black_y:
delitem 5013,1;
delitem 983,1;
delitem 949,10;
set Zeny,Zeny - 1000000;
getitem 5043,1;
close;

}
mes "[^1f7fd8Master Hats^000000]";
mes "У тебя чего то не хватает!";
mes "Подробнее ознакомься";
mes "с требуемым списком.";
close;



И дальше я вошёл в ступор:bang:
По идее осталась одна комбинация (код, команда), но я не знаю, как дописать, подскажите пожалуйста.

"Эту" команду надо поставить сюда:

input .@item;
if(.@item == 0) goto exit;


В общем что бы, когда вводишь Айди, команда опознавала какой итем вводишь.
И тоесть, когда вводишь итем, Нпц говорил что у тебя такого итема нет, или такой итем я не могу красить, вот как сделать эту проверку, я не догоняю. :(

Автор: Хитрюга Джэк: Дата: 12.22.2009

неужели так много вещей не покраску что проще сделать проверку, чем прописать руками 4-5 этих вещей??

если всё-таки проверять так как ты говоришь то может попробовать так:

input .@item;
if(.@item == 0) goto exit;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta;
else goto Noloot;

viborcveta:
mes "[ ^0065DFПокраска^000000 ]";
mes "Каким цветом хотите покрасить вашу вещь?";
next;
switch(select("Синий:Красный:зелёный")) {
case 1:
mes "[ ^0065DFПокраска^000000 ]";
mes "для этого цвета ..................
типо такого

Автор: KensyWhim: Дата: 12.22.2009

Цитата Хитрюга Джэк;16983:
неужели так много вещей не покраску что проще сделать проверку, чем прописать руками 4-5 этих вещей??


Да, вещей многовато, штук 30-40 ^_^
Само собой, если бы было вещей штук 5-10 я бы сделал в ручную ))

Автор: Хитрюга Джэк: Дата: 12.22.2009

попробуй так, думаю работать будет

input .@item;
if(.@item == 0) goto exit;
if(.@item == idВещиКоторуюХочешьКрасить1) goto viborcveta1;
if(.@item == idВещиКоторуюХочешьКрасить2) goto viborcveta2;
if(.@item == idВещиКоторуюХочешьКрасить3) goto viborcveta3;
if(.@item == idВещиКоторуюХочешьКрасить4) goto viborcveta4;
if(.@item == idВещиКоторуюХочешьКрасить5) goto viborcveta5;
if(.@item == idВещиКоторуюХочешьКрасить6) goto viborcveta6;
if(.@item == idВещиКоторуюХочешьКрасить7) goto viborcveta7;
if(.@item == idВещиКоторуюХочешьКрасить8) goto viborcveta8;
if(.@item == idВещиКоторуюХочешьКрасить9) goto viborcveta9;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta1;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta2;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta3;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta4;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta5;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta6;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta7;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta8;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta9;
if(.@item<1) goto NoItems;


viborcveta1:
mes "[ ^0065DFПокраска^000000 ]";
mes "Каким цветом хотите покрасить вашу вещь?";
next;
switch(select("Синий:Красный:зелёный")) {
case 1:
mes "[ ^0065DFПокраска^000000 ]";
mes "для этого цвета ..................


а ещё как вариант поищи как вводить переменные в скрипт и вбей id вещи которую вводит игрок как переменную, тога не понадобиться горы скриптов, тогда ограничишься одним шаблонным столбцом, в котором значение переменной будет влиять на дальнейшее развитие событий. как это сделать я не знаю, но где то встречал.

Автор: KensyWhim: Дата: 12.22.2009

Цитата Хитрюга Джэк;16983:
неужели так много вещей не покраску что проще сделать проверку, чем прописать руками 4-5 этих вещей??

если всё-таки проверять так как ты говоришь то может попробовать так:

input .@item;
if(.@item == 0) goto exit;
if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta;
else goto Noloot;

viborcveta:
mes "[ ^0065DFПокраска^000000 ]";
mes "Каким цветом хотите покрасить вашу вещь?";
next;
switch(select("Синий:Красный:зелёный")) {
case 1:
mes "[ ^0065DFПокраска^000000 ]";
mes "для этого цвета ..................
типо такого


Эм...
Это чё?

if(.@item == idВещиКоторуюХочешьКрасить) goto viborcveta;


Я же говорю что бы он сам проверял итем, а не мне прописывать каждый итем...

з.ы. Щас попробую )

Автор: Хитрюга Джэк: Дата: 12.22.2009

нужно сделать так:
принять айди вещи за X
принять номер цвета за С
принять ингридиенты для вещи за Y
принять вещь другого цвета за Z
и прописать алгоритм чтобы выбирай первую и вторую переменную , остальным переменным автоматические присваивались значения.

Автор: Мяфк: Дата: 12.22.2009

В принципе, я знаю как написать твоим способом, но писать честно лень. Если что помогу за WM, пиши в асю в профиле.

Автор: KensyWhim: Дата: 12.22.2009

Цитата Мяфк;16998:
В принципе, я знаю как написать твоим способом, но писать честно лень. Если что помогу за WM, пиши в асю в профиле.


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

Если тебе так в лом написать пару строк с командой, то извини...<_<

Автор: Хитрюга Джэк: Дата: 12.22.2009

KensyWhim, а со мной скриптом поделишься? Хочется посмотреть каким образом ты это устроил всё.

Автор: KensyWhim: Дата: 12.22.2009

Цитата Хитрюга Джэк;17009:
KensyWhim, а со мной скриптом поделишься? Хочется посмотреть каким образом ты это устроил всё.


Без проблем, потом выложу сюда его, когда допишу... ;)

Автор: Мяфк: Дата: 12.22.2009

Дак какую команду скажи, подскажу.

Автор: KensyWhim: Дата: 12.22.2009

Цитата Мяфк;17017:
Дак какую команду скажи, подскажу.


Читай #13 пост ;)

Автор: San: Дата: 12.22.2009

занеси все айди итемов в array, и потом проверка, если есть такой итем, то идем дальше, а если нету, то пока...

Автор: KensyWhim: Дата: 12.22.2009

Цитата San;17022:
занеси все айди итемов в array, и потом проверка, если есть такой итем, то идем дальше, а если нету, то пока...


Можно поподробнее?
Что за array?:huh:

Автор: Мяфк: Дата: 12.22.2009

Смотри как тут реализовано. http://rus-ea.ru/forums/showthread.php?t=806