Назад

Помогите плиз

Автор: Asgardion: Дата: 11.28.2009

Нашёл нпс в каком то архиве, точит 100% любую шмотку и не просто на 100% а может точить ещё на 11,12 и тд, хз до скольки просьба людям знающим исправить этот скриптик чтобы на 100% не точил, и точил только до 10.






prontera,141,197,5	script	Кузнец	926,{
mes "[Кузнец]";
mes "Здраствуйте, я главный кузнец Рун-Мидгарда.";
mes "У меня вы сможите воспользоваться любыми видами услуг заточки ваших вещей.";
next;
switch(select("Обычная заточка")) {
case 1:set @type,1;break;
case 2:set @type,2;break;
case 3:set @type,0;break;
}
mes "[Кузнец]";
mes "Выберите то, чтобы вы хотели заточить";
switch(select(getequipname(1),getequipname(2),getequipname(3),getequipname(4),getequipname(5),getequipname(6))) {
case 1:
//Головные уборы
callfunc("ChekRefine",1,@type);
break;
case 2:
//Броньки
callfunc("ChekRefine",2,@type);
break;
case 3:
//Левая рука
callfunc("ChekRefine",3,@type);
break;
case 4:
//Щиты
callfunc("ChekRefine",4,@type);
break;
case 5:
//Муффы
callfunc("ChekRefine",5,@type);
break;
case 6:
//Сапоги
callfunc("ChekRefine",6,@type);
break;
}
}

function script ChekRefine {
//if(getgmlevel() < 1 && getarg(1) != 2) { //Здесь у меня стоит проверка на наличие "Премиум-игрока". По желанию можно убрать.
//mes "Извините, но услуги данного характера только для премиум игроков";
//close; end;
//}
if (!getequipisequiped(getarg(0))) {
mes "Я не понимаю, что вы здесь хотите заточить?!";
close;
}
else if (!getequipisidentify(getarg(0))) {
mes "[Кузнец]";
mes "Да вы читер!!!!";
close;
}
else if (!getequipisenableref(getarg(0))) {
mes "[Кузнец]";
mes "Я немогу заточить эту вещь!";
close;
}
else if(getequiprefinerycnt(getarg(0)) < 10) callfunc("RefIt",getarg(0),getarg(1));
else {
mes "[Кузнец]";
mes "Извините, но эта вещь заточена на максимум.";
close;
}
}

function script RefIt {
set @chance,1;
set @refineitemid, getequipid(getarg(0));
set @refinerycnt, getequiprefinerycnt(getarg(0));
if(getarg(1) == 2) {
set @material,671;
set @matname$,"Gold Coins";
set @price,0;
set @safe,10;
}
if(getequipweaponlv(getarg(0)) == 0 && getarg(1) < 2) {
if(getarg(1) == 0) {
set @chance,1;
set @matname$,"Enriched Elunium";
set @material,7619;
set @price,20;
set @safe,4;
}
else {
set @matname$,"Elunium";
set @material,985;
set @price,20;
set @safe,4;
}
}
else if(getequipweaponlv(getarg(0)) == 1 && getarg(1) < 2) {
set @matname$,"Phracon";
set @material,1010;
set @price,20;
set @safe,7;
}
else if(getequipweaponlv(getarg(0)) == 2 && getarg(1) < 2) {
set @matname$,"Emveretarcon";
set @material,1011;
set @price,20;
set @safe,6;
}
else if(getequipweaponlv(getarg(0)) == 2 && getarg(1) < 2) {
if(getarg(1) == 0) {
set @chance,1;
set @matname$,"Enriched Oridecon";
set @material,7620;
set @price,20;
set @safe,4;
}
else {
set @matname$,"Oridecon";
set @material,984;
set @price,20;
set @safe,4;
}
}
else if(getarg(1) < 2) {
if(getarg(1) == 0) {
set @chance,1;
set @matname$,"Enriched Oridecon";
set @material,7620;
set @price,20;
set @safe,4;
}
else {
set @matname$,"Oridecon";
set @material,984;
set @price,20;
set @safe,4;
}
}
mes "Для данной вещи мне необходимо ^ff9999" + @matname$ + "^000000 и " + @price + " Zeny за одну заточку";
if(getarg(1) < 2) mes "Безопасно заточить могу до: ^ff9999" + @safe + "^000000 Уровня.";
next;
Menus:
switch(select("Точи до безопасного:Точи до...:Точи дальше")) {
case 1:
if(countitem(@material) < @safe-getequiprefinerycnt(getarg(0)) || (Zeny < @price*(@safe-getequiprefinerycnt(getarg(0))))) {
mes "Извините, но у вас не хватает или Zeny или "+@matname$;
close; end;
}
for(set @i,getequiprefinerycnt(getarg(0)) ; @i < @safe ; set @i,@i+1) {
successrefitem getarg(0);
set Zeny,Zeny-@price;
delitem @material,1;
}
mes "Вещь заточена до безопасного уровня!";
close;
end;
case 2:
input @needref;
if ((@needref >10) || (@needref < 1) || (getequiprefinerycnt(getarg(0)) >= @needref)) {
mes "Введите пожалуйста реальное число от 1 - 10! И чтобы число было больше того, на сколько уже сейчас заточена ваша вещь";
close; end;
}
if (countitem(@material) < @needref-getequiprefinerycnt(getarg(0)) || (Zeny < @price*(@needref-getequiprefinerycnt(getarg(0))))) {
mes "У вас нет столько материалов или Денег, чтобы заточить на столько данную вещь";
close; end;
}
for(set @i,getequiprefinerycnt(getarg(0)) ; @i < @needref ; set @i,@i+1) {
set Zeny,Zeny-@price;
delitem @material,1;
if(getequiprefinerycnt(getarg(0)) > @safe && getarg(1) < 2) {
if (getequippercentrefinery(getarg(0)) < rand(@chance)) {
mes "Извините, но вашу вещь не удалось заточить на +"+@needref;
failedrefitem getarg(0);
close; break;
}
}
successrefitem getarg(0);
}
mes "Поздравляю! Ваша вещь заточена на +"+@needref;
close;
case 3:
if (countitem(@material) < 1 || Zeny < @price) {
mes "У вас нет столько материалов или Денег, чтобы заточить на столько данную вещь";
close; end;
}
set Zeny,Zeny-@price;
delitem @material,1;
if(getequiprefinerycnt(getarg(0)) > @safe && getarg(1) < 2) {
mes "Я могу сейчас сломать вашу вещь!";
switch(select("нет!:Да")) {
case 1: goto Menus;
case 2:
if (getequippercentrefinery(getarg(0)) < rand(@chance)) {
mes "Извините, но я сломал вашу вещь!";
failedrefitem getarg(0);
close; break;
}
}

}
successrefitem getarg(0);
goto Menus;
}
end;
}

Автор: Asgardion: Дата: 11.29.2009

Стандартного я не прошу, мне нужен этот) Так этот точит на любое число. Единственное с ним трабл он точит со 100% шансом.

Автор: Melhior: Дата: 11.29.2009

Кстати... Судя по скрипту, он точит максимум до +10...

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

http://rus-ea.ru/forums/showthread.php?t=1196