Назад

Помогите доделать нпц

Автор: vixa2012: Дата: 02.17.2011

Я делаю нпц которое после каждого гв за удержание замка дает приз коробку которая при открытии дает мегикхард на 48 часов. Нпц должно говорить только с гильд мастером. Если я не взял коробку после гв то после другого гв я смогу взять 2 ужэ коробки.

Вот что я сделал!

//============================================================
- script Gld_Mngr_Template::Gld_Mngr_Template -1,{
// What is the Display Name of the NPC?
set .@name$,strnpcinfo(1);

// Store the Guild ID of castle occupant.
set .@GID, GetCastleData(strnpcinfo(2),1);

// Add custom Guild Castles here.

mes "[ Тест ]";
if (.@GID == 0) {
mes "Я жду возвращения хозяина.";
mes "Если он тебе нужен жди его со мной. ";
close;
}
if (getcharid(2) != .@GID || strcharinfo(0) != getguildmaster(.@GID)){
mes "На данный момент я работаю с ^ff0000" + getguildmaster(.@GID) + "^000000. Его гильдия хозяева замка!";
close;
}
mes "Приветствую тебя , ^ff0000" + getguildmaster(.@GID) + "^000000...";
mes "Что интересует в моем сервисе?.";
next;
switch(select("Информация:Взять")) {
case 1:
mes "[ Тест ]";
mes "За каждое гв если ты удержиш замок.";
mes " я буду давать тебе приз ";
close;
case 2:
mes "[ Тест ]";
mes "Ты хочеш посмотреть приз?";
next;
switch(select("Взять.:Отмена")) {
case 1:
mes "[ Тест ]";
mes "Пожалуйста подожди я проверяю.";
mes "На сегодняшний день твой приз таков";
attachrid(guildmasterid);
set item, item+1;
set item, 0;
if (item == 0) {
mes " Прости дружище но для тебя подарок кончился";
close;
detachrid;
}
else if (item > 0) {
mes "Вот твой приз держи друг";
getitem 664,1;
close;
}
case 2:
mes "[ Тест ]";
mes "Хорошо приходи как надумаеш.";
mes "Моя дверь для тебя всегда открыта.";
close;
}
}
}




//============================================================
prtg_cas01,108,179,3 duplicate(Gld_Mngr_Template) Тест#prtg_cas01 990

Значит когда я не ставил атрибуты attachrid и detacherid нпц давало постоянно коробки когда бы ты не пришел, но поставив эти атрибуты оно перестало ваще давать коробку не до гв не после гв значит моя просьба состоит в том что помогите доделать это нпц так Если гильд мастер захватил и удержал замок он может получить коробку в любое время не только после гв и если он её не взял на прошлом гв и замок удержал снова то он может прийти и получить уже 2 коробки короч говоря чтобы сумировались как бонус эти коробки

Автор: vixa2012: Дата: 02.17.2011

а как надо сделать я ужэ много перепробывал

Автор: Renegade: Дата: 02.17.2011

сет итем = итем+1 если ты хочешь чтобы

Если я не взял коробку после гв то после другого гв я смогу взять 2 ужэ коробки.

Автор: Jarek: Дата: 02.17.2011

Вы не поняли, что вам написал Мяфк?
Вы сбрасываете переменную в ноль, и тут же проверяете её значение - бессмыслица.
Во-первых, сбрасывайте переменную, после получения приза.
Во-вторых, увеличение переменной в процессе диалога... => Сколько бы раз не подошел к нпц, он каждый раз увеличивает переменную => profit!
Начисление следует сделать в триггере окончания гв.

"nice": Какой-то странный скрипт от человека, который не только предлагает услугу их написания, но и обучению скрпитингу.:D

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

if (item==0) {
Держи итем
set item, item+1;
if (item <1) {
Ты уже брал итем.
Новый день: set item,0;

Автор: vixa2012: Дата: 02.17.2011


написал как сказа Мяфк и серавно лут дается постояно

set item, item+1;
set item, 0;
if (item == 0) {
mes "Вот твой приз держи друг";
getitem 664,1;
close;
}
else if (item < 1) {
mes " Прости дружище но для тебя подарок кончился";
close;
}

Автор: Renegade: Дата: 02.17.2011

set item, item+1;

должен быть ВНЕ ДИАЛОГА.

Это строка посути назначения приза.

Автор: vixa2012: Дата: 02.17.2011

вынес все сделал серавно подарок дает бесконечно когда только бы не подошол
Зайдите ктото в аську пожалуйста

а если ставлю if (item > 0) {

ваще не дает или if (item == 1) {
тоже

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

Писалось на коленке. Для корректной работы в OnAgitBreak нужно добавить:


set $@dayli_priz, 0;



Сам скрипт:


mes "[ Тест ]";

if (.@GID == 0) {
mes "Я жду возвращения хозяина.";
mes "Если он тебе нужен жди его со мной. ";
close;
}

if (getcharid(2) != .@GID || strcharinfo(0) != getguildmaster(.@GID)){
mes "На данный момент я работаю с ^ff0000" + getguildmaster(.@GID) + "^000000. Его гильдия хозяева замка!";
close;
}

mes "Приветствую тебя , ^ff0000" + getguildmaster(.@GID) + "^000000...";
mes "Что интересует в моем сервисе?.";
next;

if (select("Информация","Взять") == 1) {

mes "[ Тест ]";
mes "За каждое гв если ты удержиш замок.";
mes " я буду давать тебе приз ";
close;
}

mes "[ Тест ]";
mes "Ты хочеш посмотреть приз?";
next;

if select("Взять","Отмена") == 2) {
mes "[ Тест ]";
mes "Хорошо приходи как надумаеш.";
mes "Моя дверь для тебя всегда открыта.";
close;
}

mes "[ Тест ]";
mes "Пожалуйста подожди я проверяю.";

if ($@dayli_priz < 1) {
mes "Сегодня уже нет призов.";
close;
}

mes "У тебя есть "+$@dayli_priz+" призов. Забрать?";

if (select("Взять","Отмена") == 2) {
mes "[ Тест ]";
mes "Хорошо приходи как надумаеш.";
mes "Моя дверь для тебя всегда открыта.";
close;
}

getitem 664, $@dayli_priz;
set $@dayli_priz, 0;
close;

OnClock0005:
set $@dayli_priz, $@dayli_priz + 1;
end;

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

Были опечатки. Исправил.

Автор: vixa2012: Дата: 02.17.2011

Спасибо ном

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

Цитата vixa2012;34045:
Спасибо ном

[COLOR="Indigo"]
есть кнопка.[/COLOR]

Автор: vixa2012: Дата: 02.17.2011

Слушай а можно сделать както чтобы он давал приз не в onclock 0005:
а именно после гв если замок был удержан?

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

Можно. Допиши в скрипт гв, в OnAgitEnd

Автор: vixa2012: Дата: 02.17.2011

Ошибки не работает чтото

//============================================================
- script test::test -1,{

// Add custom Guild Castles here.

mes "[ Тест ]";

if (.@GID == 0) {
mes "Я жду возвращения хозяина.";
mes "Если он тебе нужен жди его со мной. ";
close;
}

if (getcharid(2) != .@GID || strcharinfo(0) != getguildmaster(.@GID)){
mes "На данный момент я работаю с ^ff0000" + getguildmaster(.@GID) + "^000000. Его гильдия хозяева замка!";
close;
}

mes "Приветствую тебя , ^ff0000" + getguildmaster(.@GID) + "^000000...";
mes "Что интересует в моем сервисе?.";
next;

if (select("Информация","Взять") == 1) {

mes "[ Тест ]";
mes "За каждое гв если ты удержиш замок.";
mes " я буду давать тебе приз ";
close;
}

mes "[ Тест ]";
mes "Ты хочеш посмотреть приз?";
next;

if select("Взять","Отмена") == 2) {
mes "[ Тест ]";
mes "Хорошо приходи как надумаеш.";
mes "Моя дверь для тебя всегда открыта.";
close;
}

mes "[ Тест ]";
mes "Пожалуйста подожди я проверяю.";

if ($@dayli_priz < 1) {
mes "Сегодня уже нет призов.";
close;
}

mes "У тебя есть "+$@dayli_priz+" призов. Забрать?";

if (select("Взять","Отмена") == 2) {
mes "[ Тест ]";
mes "Хорошо приходи как надумаеш.";
mes "Моя дверь для тебя всегда открыта.";
close;
}

getitem 664, $@dayli_priz;
set $@dayli_priz, 0;
close;

OnClock0005:
set $@dayli_priz, $@dayli_priz + 1;
end;





//============================================================
prtg_cas01,108,179,3 duplicate(test) Тест#prtg_cas01 990



http://img266.imageshack.us/i/42761635.jpg/

Автор: dimjke: Дата: 02.17.2011

В конце добавь скобку

Автор: vixa2012: Дата: 02.17.2011

теперь такая ошибка



//============================================================
- script test::test -1,{

// Add custom Guild Castles here.

mes "[ Тест ]";

if (.@GID == 0) {
mes "Я жду возвращения хозяина.";
mes "Если он тебе нужен жди его со мной. ";
close;
}

if (getcharid(2) != .@GID || strcharinfo(0) != getguildmaster(.@GID)){
mes "На данный момент я работаю с ^ff0000" + getguildmaster(.@GID) + "^000000. Его гильдия хозяева замка!";
close;
}

mes "Приветствую тебя , ^ff0000" + getguildmaster(.@GID) + "^000000...";
mes "Что интересует в моем сервисе?.";
next;
if (select("Информация","Взять") == 1) {
mes "[ Тест ]";
mes "За каждое гв если ты удержиш замок.";
mes " я буду давать тебе приз ";
close;
}

mes "[ Тест ]";
mes "Ты хочеш посмотреть приз?";
next;
if select("Взять","Отмена") == 2) {
mes "[ Тест ]";
mes "Хорошо приходи как надумаеш.";
mes "Моя дверь для тебя всегда открыта.";
close;
}

mes "[ Тест ]";
mes "Пожалуйста подожди я проверяю.";
if ($@dayli_priz < 1) {
mes "Сегодня уже нет призов.";
close;
}

mes "У тебя есть "+$@dayli_priz+" призов. Забрать?";
if (select("Взять","Отмена") == 2) {
mes "[ Тест ]";
mes "Хорошо приходи как надумаеш.";
mes "Моя дверь для тебя всегда открыта.";
close;
}

getitem 664, $@dayli_priz;
set $@dayli_priz, 0;
close;

OnClock0005:
set $@dayli_priz, $@dayli_priz + 1;
end;
}
}



//============================================================
prtg_cas01,108,179,3 duplicate(test) Тест#prtg_cas01 990

http://img89.imageshack.us/i/98479586.jpg/

Автор: dimjke: Дата: 02.17.2011

ничего не заметил?

if select("Взять","Отмена") == 2) {

и в конце одна лишняя }

Автор: vixa2012: Дата: 02.18.2011

Все работает отлично только чот после гв не 1 приз а 2 сразу дает

Можно закрывать тему!