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

Помогите реализовать скрипт.


b72g

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

Вот попытался сделать, чтобы он выдавал за 3 стоуна, крылья со стоуном внутри, но нпц просто пропало..

//Настройка. При добавлении большего количества предметов, не забывать добавлять case'ы.

setarray @hatid[0],20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011,20012,20013,20014;

setarray @stoneid[0],1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991;

setarray @loot01id[0],1991,2,3,4,5,6,7,8,9,10,11,12,13,14;

setarray @loot01cnt[0],1,2,3,4,5,6,7,8,9,10,11,12,13,14;

setarray @loot02id[0],1991,2,3,4,5,6,7,8,9,10,11,12,13,14;

setarray @loot02cnt[0],1,2,3,4,5,6,7,8,9,10,11,12,13,14;

setarray @loot03id[0],1991,2,3,4,5,6,7,8,9,10,11,12,13,14;

setarray @loot03cnt[0],1,2,3,4,5,6,7,8,9,10,11,12,13,14;

setarray @customvar$[0],"1","2","3","4","5","6","7","8","9","10","11","12","13","14";

setarray @customvarcnt[0],1,2,3,4,5,6,7,8,9,10,11,12,13,14;

for(set .@j,0; .@j<getarraysize(@hatid) ; set .@j,.@j+1 )

{

set .@menu$,.@menu$+getitemname(@hatid[.@j])+":";

}

for(set .@i,0; .@i<getarraysize(@stoneid) ; set .@i,.@i+1 )

{

set .@menu$,.@menu$+getitemname(@stoneid[.@i])+":";

}

mes "[Костюмер]";

mes "Посмотри на мои шапочки!";

mes "Они не дают бонусов, не занимают место обычной шапки, зато очень красивые!";

switch(select(.@menu$)) {

case 1:

set .@j,0;

next;

set .@i,0;

break;

case 2:

set .@j,1;

next;

set .@i,1;

break;

case 3:

set .@j,2;

next;

set .@i,2;

break;

case 4:

set .@j,3;

next;

set .@i,3;

break;

case 5:

set .@j,4;

next;

set .@i,4;

break;

case 6:

set .@j,5;

next;

set .@i,5;

break;

case 7:

set .@j,6;

next;

set .@i,6;

break;

case 8:

set .@j,7;

next;

set .@i,7;

break;

case 9:

set .@j,8;

next;

set .@i,8;

break;

case 10:

set .@j,9;

next;

set .@i,9;

break;

case 11:

set .@j,10;

next;

set .@i,10;

break;

case 12:

set .@j,11;

next;

set .@i,11;

break;

case 13:

set .@j,12;

next;

set .@i,12;

break;

case 14:

set .@j,13;

next;

set .@i,13;

break;

}

//default: //

//set .@j,1;

mes "[Костюмер]";

mes "["+getitemname(@hatid[.@j])+"]";

mes "["+getitemname(@stoneid[.@i])+"]";

mes "Для этой костюмной шапочки необходимо:";

mes " "+getitemname(@loot01id[.@j])+" "+@loot01cnt[.@j]+" шт.";

mes " "+getitemname(@loot02id[.@j])+" "+@loot02cnt[.@j]+" шт.";

mes " "+getitemname(@loot03id[.@j])+" "+@loot03cnt[.@j]+" шт.";

next;

mes "[Костюмер]";

if (select( "Я собрал все необходимое!:Хорошо, я запомнил.") != 1) {mes "Приходи, когда захочешь."; close;}

if(countitem(@loot01id[.@j]) < @loot01cnt[.@j] || countitem(@loot02id[.@j]) < @loot02cnt[.@j] || countitem(@loot03id[.@j]) < @loot03cnt[.@j]) {

mes "У тебя нет достаточного количества вещей, чтобы получить шапочку. Возвращайся, когда соберешь все.";

close;

}

mes "[Костюмер]";

mes "Одну секунду...";

delitem @loot01id[.@j],@loot01cnt[.@j];

delitem @loot02id[.@j],@loot02cnt[.@j];

delitem @loot03id[.@j],@loot03cnt[.@j];

atcommand "@item2"+" "+@hatid[.@j] 1 1 0 0"+" "+@stoneid[.@i]"+" "+0 0 0";

next;

mes "[Костюмер]";

mes "Вуаля!";

mes "Носи с удовольствием!";

close;

}

pron_mall,104,76,4 script Костюмер#1 864,{

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

atcommand "@item2"+" "+@hatid[.@j] 1 1 0 0"+" "+@stoneid[.@i]"+" "+0 0 0";

Внимательнее надо быть.

ага, поправила, вообще еще путаюсь, что надо выносить за кавычки, а что нет

Вот попытался сделать, чтобы он выдавал за 3 стоуна, крылья со стоуном внутри, но нпц просто пропало..

причем тут мой скрипт? у тебя другая задача, другие переменные И другая локация. Тем более что его тоже переделать нужно, хоть он и работает без переделки

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

atcommand "@item2"+" "+@hatid[.@j] 1 1 0 0"+" "+@stoneid[.@i]"+" "+0 0 0";

Внимательнее надо быть.

ага, поправила, вообще еще путаюсь, что надо выносить за кавычки, а что нет

Вот попытался сделать, чтобы он выдавал за 3 стоуна, крылья со стоуном внутри, но нпц просто пропало..

причем тут мой скрипт? у тебя другая задача, другие переменные И другая локация. Тем более что его тоже переделать нужно, хоть он и работает без переделки

Да думал может с ним, что получиться сделать...

Первый что делал вообще не нажимается.. Ну я там нагородил очень.

prontera,151,177,5 script Wing Man 115,{

set .baseid, 20000;

set .countids, 108; // Количество вещей

for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

}

set .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

}

mes "Выбери крылья";

set .@choose, select(.@menu$);

next;

mes "Я теперь выбери стоун";

set .@insert, select(.@menu$) - 1;

next;

getitem .@choose + .baseid, 1; // Получает выбранный предмет в инвентарь

close;

}

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

У тебя все запихивается в одно .@menu$

Все правильно. Нахрена ему плодить их тонну? Просто надо сбросить перед второй его генерацией..


prontera,151,177,5 script Wing Man 115,{
set .baseid, 20000;
set .countids, 108; // Количество вещей
for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {
set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";
}
mes "Выбери крылья";
set .@choose, select(.@menu$);
next;
setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;
set .@menu$, "";
for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {
set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";
}
mes "Я теперь выбери стоун";
set .@insert, select(.@menu$) - 1;
next;
delitem .@choose + .baseid, 1;
getitem .@choose + .baseid, 1; // Получает выбранный предмет в инвентарь (Заменить на нормальную команду для получения нужного предмета)
close;
}

P.S. Массивы объявляются командой setarray! >.<

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

У тебя все запихивается в одно .@menu$

Все правильно. Нахрена ему плодить их тонну? Просто надо сбросить перед второй его генерацией..


prontera,151,177,5 script Wing Man 115,{
set .baseid, 20000;
set .countids, 108; // Количество вещей
for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {
set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";
}
mes "Выбери крылья";
set .@choose, select(.@menu$);
next;
setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;
set .@menu$, "";
for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {
set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";
}
mes "Я теперь выбери стоун";
set .@insert, select(.@menu$) - 1;
next;
delitem .@choose + .baseid, 1;
getitem .@choose + .baseid, 1; // Получает выбранный предмет в инвентарь (Заменить на нормальную команду для получения нужного предмета)
close;
}

P.S. Массивы объявляются командой setarray! >.<

Я указал на ошибку. Оптимизация - другое делоmee.png
Ссылка на комментарий
Поделиться на другие сайты

prontera,151,177,5 script Wing Man 115,{

set .baseid, 20000;

set .countids, 108; // Количество вещей

for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

}

mes "Выбери крылья";

set .@choose, select(.@menu$);

next;

setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

set .@menu$, "";

for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

}

mes "Я теперь выбери стоун";

set .@insert, select(.@menu$) - 1;

next;

delitem .@choose + .baseid, 1;

atcommand "@item2"+" "+@baseid[.@i]"+" "+1 1 0 0"+" "+@insertids[.@j]"+" "+0 0 0";

close;

}

Попробовал комманду сделать, не пашет. Делал по разному. всеравно че то..

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

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

prontera,151,177,5 script Wing Man 115,{

set .baseid, 20000;

set .countids, 108; // Количество вещей

for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

}

mes "Выбери крылья";

set .@choose, select(.@menu$) -1;

next;

setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

set .@menu$, "";

for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

}

mes "Я теперь выбери стоун";

set .@insert, select(.@menu$) - 1;

next;

delitem .@choose + .baseid, 1;

atcommand "@item2"+" "+@baseid[.@i]"+" "+1 1 0 0"+" "+@insertids[.@j]"+" "+0 0 0";

close;

}

Попробовал комманду сделать, не пашет. Делал по разному. всеравно че то..

подумай над этим

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

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

prontera,151,177,5 script Wing Man 115,{

set .baseid, 20000;

set .countids, 108; // Количество вещей

for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

}

mes "Выбери крылья";

set .@choose, select(.@menu$) -1;

next;

setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

set .@menu$, "";

for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

}

mes "Я теперь выбери стоун";

set .@insert, select(.@menu$) - 1;

next;

delitem .@choose + .baseid, 1;

atcommand "@item2"+" "+@baseid[.@i]"+" "+1 1 0 0"+" "+@insertids[.@j]"+" "+0 0 0";

close;

}

Попробовал комманду сделать, не пашет. Делал по разному. всеравно че то..

подумай над этим

Спасибо что помучила меня. Вообщем попарился и получилось.

getitem2 .@choose + .baseid, 1,1,0,0,.@choose + .insertids ,0,0,0;

:D

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

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

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

1 итем - 2 камень (если выбирать 1 камень)

2- итем - 3 камень (если выбирать 1 камень)

3 итем - 5 камень (если выбирать 1 камень)

4 итем - 6 камень (если выбирать 1 камень)

5 итем и слудующие - ничего

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

P.S Во второй менюшке null вконце

prontera,151,177,5 script Wing Man 115,{

set .baseid, 20003;

set .countids, 105; // Количество вещей

for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

}

mes "Выбери крылья";

set .@choose, select(.@menu$);

next;

setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

set .@menu$, "";

for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

}

mes "Я теперь выбери стоун";

set .@insert, select(.@menu$) - 1;

next;

delitem .@choose + .baseid, 1;

delitem .@choose + .insertids, 1;

getitem2 .@choose + .baseid, 1,1,0,0,.@choose + .insertids ,0,0,0;

close;

}

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

>> P.S Во второй менюшке null вконце

потому, что

for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

}

<= getarraysize(.insertids);

надо поставить < getarraysize(.insertids);

А вставляется не то, что надо, потому что переменная .@choose используется там, где надо и там, где не надо :D Индекс массива с нужным камнем находится в переменной .@insert

delitem .@choose + .baseid, 1;

delitem .insertids[.@insert], 1;

getitem2 .@choose + .baseid, 1,1,0,0,.insertids[.@insert] ,0,0,0;

P.S. Правильно, что взял getitem2 вместо atcommand (:

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

>> P.S Во второй менюшке null вконце

потому, что

for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

}

<= getarraysize(.insertids);

надо поставить < getarraysize(.insertids);

А вставляется не то, что надо, потому что переменная .@choose используется там, где надо и там, где не надо :D Индекс массива с нужным камнем находится в переменной .@insert

delitem .@choose + .baseid, 1;

delitem .insertids[.@insert], 1;

getitem2 .@choose + .baseid, 1,1,0,0,.insertids[.@insert] ,0,0,0;

P.S. Правильно, что взял getitem2 вместо atcommand (:

Спасибо за помощь. :)

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

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