Назад

У кого есть продавец статов???

Автор: xDi2x: Дата: 06.03.2009

Ребят, здесь есть у кого нибудь этот нпц, ну а лучше научите его делать)):)

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

Гавно стат селлер (имхо) Объясню:
1) Нет возможности выбора кол-ва статов.
2)

atcommand strcharinfo(0) + ":@agi +10";
atcommand strcharinfo(0) + ":@zeny -4000000";

Убило просто, логи не жалко?
Написал свой вариант, доков под рукой нету, пишу по памяти, ошибки сам исправишь.
prontera,1,1,5	script Стат Селлер	912,{
mes "Привет, я могу тебе добавить статов.";
mes "Стоимость одного стата 10,000 зени";
mes "Выбирай какой стат тебе добавить?";
menu "Ловкость",-,"Жизни",vit,"Выносливость",dex,"Интелект",int,"Сила",str,"Удача",luk;
next;
mes "Сколько тебе добавить ловкости?";
input @a;
if(Zeny < @a*10000)goto No_Zeny;
Setzeny, zeny-@a*10000;
statusup bAgi,@a;
close;
vit:
mes "Сколько тебе добавить жизни?";
input @a;
if(Zeny < @a*10000)goto No_Zeny;
Setzeny, zeny-@a*10000;
statusup bVit,@a;
close;
dex:
mes "Сколько тебе добавить выносливости?";
input @a;
if(Zeny < @a*10000)goto No_Zeny;
Setzeny, zeny-@a*10000;
statusup bDex,@a;
close;
int:
mes "Сколько тебе добавить интелекта?";
input @a;
if(Zeny < @a*10000)goto No_Zeny;
Setzeny, zeny-@a*10000;
statusup bInt,@a;
close;
str:
mes "Сколько тебе добавить силы?";
input @a;
if(Zeny < @a*10000)goto No_Zeny;
Setzeny, zeny-@a*10000;
statusup bStr,@a;
close;
luk:
mes "Сколько тебе добавить удачи?";
input @a;
if(Zeny < @a*10000)goto No_Zeny;
Setzeny, zeny-@a*10000;
statusup bLuk,@a;
close;

No_Zeny:
mes "К сожелению у тебя не хватает зени.";
close;
}

Автор: TrojanX: Дата: 11.02.2009

Я могу скинуть версию тока она на анг.

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

Я уже скинул, ну раз на английском, то не твой скорей всего.

Автор: DiS[IP]: Дата: 11.02.2009

[FONT=Lucida Console]УГ ^_^
Держи:

prontera,144,206,4    script    Продавец статов    906,{
mes "[Продавец статов]";
mes "Привет! Я могу продать тебе статус поинты!";
mes "1 стат поинт = ^339225300.000 зени^000000";
next;
if(select("Купить:Выход") == 2) close;
mes "[Продавец статов]";
mes "Что из статов ты хочешь купить?";
next;
switch(select("Str(^9A6C1FСила^000000):Agi(^9A6C1FЛовкость^000000):Vit(^9A6C1FЖивучесть^000000):Int(^9A6C1FИнтелект^000000):Dex(^9A6C1FСноровка^000000):Luck(^9A6C1FУдача^000000):Ничего"))
{
case 1: set @st,readparam(bStr); set @st_s$,"str"; break;
case 2: set @st,readparam(bAgi); set @st_s$,"agi"; break;
case 3: set @st,readparam(bVit); set @st_s$,"vit"; break;
case 4: set @st,readparam(bInt); set @st_s$,"int"; break;
case 5: set @st,readparam(bDex); set @st_s$,"dex"; break;
case 6: set @st,readparam(bLuk); set @st_s$,"luk"; break;
default: close;
}
mes "[Продавец статов]";
mes "Сколько ты хочешь купить?";
input @s;
set @prices,300000 * @s;
if(Zeny < @prices){
mes "Извините,но у вас недостаточно денег.";
close;
}
atcommand "@"+@st_s$+" "+@s;
set zeny,zeny - @prices;
close;
}
[/FONT]

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

Жесть, мне ещё учиться и учиться...
Сорри за оффтоп.
У меня вопрос вроде всё понял кроме

set @st,readparam(bStr);
что это функция делает? Что-то я так посмотрел и без неё вроде должно работать.

Автор: DiS[IP]: Дата: 11.02.2009

[FONT=Lucida Console]

[/FONT][FONT=Lucida Console]* readparam ;[/FONT]

[FONT=Lucida Console]This function will return the basic stats of an invoking character, referred to
by the parameter number. Instead of a number, you can use a parameter name if it
is defined in "db/const.txt".

For reference, in there these things are defined:

StatusPoint, BaseLevel, SkillPoint, Class, Upper, Zeny, Sex, Weight, MaxWeight,
JobLevel, BaseExp, JobExp, NextBaseExp, NextJobExp, Hp, MaxHp, Sp, MaxSp,
BaseJob, Karma, Manner, bVit, bDex, bAgi, bStr, bInt, bLuk

All of these also behave as variables, but don't expect to be able to just 'set'
all of them - some will not work for various internal reasons.

// This would return how many status points you haven't spent yet
readparam(9)

Using this particular information as a function call is not required. Just
putting

StatusPoint

will give you the same result, and some of these parameters work just like
variables (i.e. you can 'set Zeny,100' to make the character have 100 zeny,
destroying whatever zeny they had before, or 'set Zeny,Zeny+100' to give them
100 zeny)

You can also use this command to get stat values:

readparam(bVit)
if(readparam(bVit)<=77) goto L_End;
mes "Only people with over 77 Vit are reading this";
L_End:
close;[/FONT]
[FONT=Lucida Console]
[/FONT]

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

Я понимаю что это за функция, я вот не понял суть её в этом скрипте, по моему всё работает и так:

prontera,144,206,4    script    Продавец статов    906,{
mes "[Продавец статов]";
mes "Привет! Я могу продать тебе статус поинты!";
mes "1 стат поинт = ^339225300.000 зени^000000";
next;
if(select("Купить:Выход") == 2) close;
mes "[Продавец статов]";
mes "Что из статов ты хочешь купить?";
next;
switch(select("Str(^9A6C1FСила^000000):Agi(^9A6C1FЛовкость^000000):Vit(^9A6C1FЖивучесть^000000):Int(^9A6C1FИнтелект^000000):Dex(^9A6C1FСноровка^000000):Luck(^9A6C1FУдача^000000):Ничего"))
{
case 1: set @st_s$,"str"; break; //Записываем переменные
case 2: set @st_s$,"agi"; break;
case 3: set @st_s$,"vit"; break;
case 4: set @st_s$,"int"; break;
case 5: set @st_s$,"dex"; break;
case 6: set @st_s$,"luk"; break;
default: close;
}
mes "[Продавец статов]";
mes "Сколько ты хочешь купить?";
input @s;
set @prices,300000 * @s;
if(Zeny < @prices){
mes "Извините,но у вас недостаточно денег.";
close;
}
atcommand "@"+@st_s$+" "+@s; //Выдаём статы через переменную @st_s
set zeny,zeny - @prices;
close;
}

Автор: seil_cat: Дата: 12.18.2009

а как в нём поставить ограничение?..например чтоб выше 99 нельзя было поднимать статы,а то он их поднимает и поднимает и выше 1000 поднимает главное деньги плати

Автор: MaxxWell: Дата: 01.10.2010

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

Автор: ВанЬка: Дата: 01.25.2010

А как серьёзно поставить ограничение на Продовца от Dis[IP]????

Автор: DiS[IP]: Дата: 01.25.2010

[FONT=Lucida Console]set @stats,@st + @s;
if (@stats=3000){
mes "Вы не можете купить больше 3000 статов!";
close;
}
[/FONT]

Автор: ВанЬка: Дата: 01.26.2010

Неработает=(

Автор: DiS[IP]: Дата: 01.26.2010

[FONT=Lucida Console]Ну если тот отрывок пихать куда угодно в скрипт,то конечно же ничего работать не будет :huh:

prontera,144,206,4    script    Продавец статов    811,{
set .npc$,"[Продавец статов]";
mes .npc$;
mes "Приветствую вас,"+strcharinfo(0)+"!Я могу продать тебе статус поинты.";
mes "1 стат = ^339225300.000 зени^000000";
next;
if(select("Купить:Выход") == 2) close;
mes .npc$;
mes "Что из статов желаете купить?";
next;
switch(select("Str(^9A6C1FСила^000000):Agi(^9A6C1FЛовкость^000000):Vit(^9A6C1FЖивучесть^000000):Int(^9A6C1FИнтелект^000000):Dex(^9A6C1FСноровка^000000):Luck(^9A6C1FУдача^000000):Ничего"))
{
case 1: set @st,readparam(bStr); set @st_s$,"str"; break;
case 2: set @st,readparam(bAgi); set @st_s$,"agi"; break;
case 3: set @st,readparam(bVit); set @st_s$,"vit"; break;
case 4: set @st,readparam(bInt); set @st_s$,"int"; break;
case 5: set @st,readparam(bDex); set @st_s$,"dex"; break;
case 6: set @st,readparam(bLuk); set @st_s$,"luk"; break;
default: close;
}
mes .npc$;
mes "Введите кол-во статов,которое желаете купить:";
input @s;
set @zeny,300000 * @s;
set @stats,@st + @s;
if(@stats == 3000){
mes .npc$;
mes "Вы не можете купить больше 3000 статов!";
close;
}
if(Zeny < @zeny){
mes .npc$;
mes "К сожалению,у вас нет необходимой суммы денег!";
close;
}
atcommand "@"+@st_s$+" "+@s;
set zeny,zeny - @zeny;
close;
}
[/FONT]

Автор: ВанЬка: Дата: 01.27.2010

И щас нпц незапускается=(

Автор: -OnIZuCa-: Дата: 01.27.2010

Хм.. Установил у себя, тут как я понимаю скрипт чуток "кривой" без обид Диисп.

Отредактировал, теперь все работает.

//   Отредактировал: OnIZuCa      ||

prontera,155,179,5 script Продавец статов 811,{
mes "[Продавец статов]";
mes "Приветствую вас,"+strcharinfo(0)+"!Я могу продать тебе статус поинты.";
mes "1 стат = ^339225300.000 зени^000000";
next;
if(select("Купить:Выход") == 2) close;
mes "[Продавец статов]";
mes "Что из статов желаете купить?";
next;
switch(select("Str(^9A6C1FСила^000000):Agi(^9A6C1FЛовкость^000000):Vit(^9A6C1FЖивучесть^000000):Int(^9A6C1FИнтелект^000000):Dex(^9A6C1FСноровка^000000):Luck(^9A6C1FУдача^000000):Ничего"))
{
case 1: set @st,readparam(bStr); set @st_s$,"str"; break;
case 2: set @st,readparam(bAgi); set @st_s$,"agi"; break;
case 3: set @st,readparam(bVit); set @st_s$,"vit"; break;
case 4: set @st,readparam(bInt); set @st_s$,"int"; break;
case 5: set @st,readparam(bDex); set @st_s$,"dex"; break;
case 6: set @st,readparam(bLuk); set @st_s$,"luk"; break;
default: close;
}
mes "[Продавец статов]";
mes "Введите кол-во статов,которое желаете купить:";
input @s;
set @zeny,300000 * @s;
set @stats,@st + @s;
if(@stats == 3000) goto not;
if(Zeny < @Zeny) goto notz;

atcommand "@"+@st_s$+" "+@s;
set zeny,zeny - @zeny;
close;

not:
mes "[Продавец статов]";
mes "Вы не можете купить больше 3000 статов!";
close;

notz:
mes "[Продавец статов]";
mes "К сожалению,у вас нет необходимой суммы денег!";
close;

}

Автор: DiS[IP]: Дата: 01.27.2010

[FONT=Lucida Console]Ах,ну да,забыл поставить 1 знак.Ошибка не значительная.
To Ванька:А прочитать какую ошибку пишет мап сервер и в какой строчке и исправить ее нам не судьба,ага?:huh:
To OnI - От того что в скрипте появились лейблы вместо {...} суть и исправление ошибки не меняется.
Скрипт поправил в своём посте.[/FONT]

Автор: -OnIZuCa-: Дата: 01.27.2010

Ты конечно прав.
На счет лэйблов, тут уже кому как удобнее и понятнее.
=)

Автор: ВанЬка: Дата: 01.30.2010

Соровно ограничение неработает.
Нашол ошибку нодо писать > а не ==
Короче так if(@stats>300) goto not;
Или у меня одного раньше неработало??

Автор: -OnIZuCa-: Дата: 01.30.2010

А, мою версию пробывал?

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

В твоей версии такая же ошибка.

Автор: MaHapX: Дата: 01.30.2010

в Этоге получается :



prontera,155,179,5	script	Продавец статов	811,{
mes "[Продавец статов]";
mes "Приветствую вас,"+strcharinfo(0)+"!Я могу продать тебе статус поинты.";
mes "1 стат = ^339225300.000 зени^000000";
next;
if(select("Купить:Выход") == 2) close;
mes "[Продавец статов]";
mes "Что из статов желаете купить?";
next;
switch(select("Str(^9A6C1FСила^000000):Agi(^9A6C1FЛовкость^000000):Vit(^9A6C1FЖивучесть^000000):Int(^9A6C1FИнтелект^000000):Dex(^9A6C1FСноровка^000000):Luck(^9A6C1FУдача^000000):Ничего"))
{
case 1: set @st,readparam(bStr); set @st_s$,"str"; break;
case 2: set @st,readparam(bAgi); set @st_s$,"agi"; break;
case 3: set @st,readparam(bVit); set @st_s$,"vit"; break;
case 4: set @st,readparam(bInt); set @st_s$,"int"; break;
case 5: set @st,readparam(bDex); set @st_s$,"dex"; break;
case 6: set @st,readparam(bLuk); set @st_s$,"luk"; break;
default: close;
}
mes "[Продавец статов]";
mes "Введите кол-во статов,которое желаете купить:";
input @s;
set @zeny,300000 * @s;
set @stats,@st + @s;
if(@stats>3000) goto not;
if(Zeny < @Zeny) goto notz;

atcommand "@"+@st_s$+" "+@s;
set zeny,zeny - @zeny;
close;

not:
mes "[Продавец статов]";
mes "Вы не можете купить больше 3000 статов!";
close;

notz:
mes "[Продавец статов]";
mes "К сожалению,у вас нет необходимой суммы денег!";
close;

}