Назад

[Вопросы] Как написать?

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

[FONT=Lucida Console]В этой теме вы можете постить все свои вопросы по написанию какого-либо скрипта и в короткий срок на свой вопрос вы увидите ответ.
Хорошие вопросы будут оцениваться и в дальнейшем ответы на них будут попадать в тему 'Шаблоны скриптов'.:)[/FONT]

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

[FONT=Lucida Console]Держи.:)
Cписок + Описание:http://ea.dj-yhn.com/index.php?s=all[/FONT]

Автор: KsASD: Дата: 05.25.2010

Цитата Dis[IP];24002:
[FONT=Lucida Console]Держи.:)
Cписок + Описание:http://ea.dj-yhn.com/index.php?s=all[/FONT]


Спасибо.

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

[FONT=Lucida Console]Кнопку тыкай.Ну это так на будующее. ^_^[/FONT]

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

Так же в этой теме задавайте вопросы по конкретной комманде, а мы будем вам отвечать с примерами.

Автор: XKoriKX: Дата: 05.25.2010

1)Можно ли узнать, как сделать таймер на Секунды/Минуты/Часы/Дни.
2) Можно ли сделать НПС'а который будет появляться в рандомном месте карты, или варапался каждую минуту например. Эффект поидее должен быть как от Fly Wing или комманды @jump.

Заранее благодарю)

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

[FONT=Lucida Console]1)Проверка на время:

---------------------------------------

*gettime()

This function will return specified information about the current system time.

1 - Seconds (of a minute)
2 - Minutes (of an hour)
3 - Hour (of a day)
4 - Week day (0 for Sunday, 6 is Saturday)
5 - Day of the month.
6 - Number of the month.
7 - Year.
8 - Day of the year.

It will only return numbers.

if (gettime(4)==6) mes "It's a Saturday. I don't work on Saturdays.";

---------------------------------------

Лейблы:
OnClock:
OnMinute:
OnHour:
On:
OnDay:

2)Можно,через скриптовую команду movenpc.[/FONT]

Автор: XKoriKX: Дата: 05.25.2010

А теперь такой вопрос. Можно-ли сделать так, чтобы он переходил так:
1) Невидимо
2) Мнгновенно
3) Не по заданным кординатам, а рандомно по всей карте.

Новый P.S.))) Когда перезагружаешь серв, появляются нпсы, которые должны быть выключены командой "disablenpc". Как это исправить???

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

[FONT=Lucida Console]Мгновенный переход можно сделать.Рандомный переход тоже.
Что написано в P.S не понял.[/FONT]

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

[FONT=Lucida Console]Korik,накатал тебе пример,держи.;)

// Рандомный джамп по городам
set $@disjump,rand(1,5);
if ($@disjump == 1) set $@dismap$,"prontera";
if ($@disjump == 2) set $@dismap$,"izlude";
if ($@disjump == 3) set $@dismap$,"payon";
if ($@disjump == 4) set $@dismap$,"geffen";
if ($@disjump == 5) set $@dismap$,"morocc";
movenpc "Имя НПС"+$@disjump+"",0,0;
end;
// Пример рандомного джампа по координатам
set $@disipx,rand(0,300);
set $@disipy,rand(0,300);
movenpc "Имя НПС"+$@disjump+"",$@disipx,$@disipy;
end;
[/FONT]

Автор: XKoriKX: Дата: 05.25.2010

спс))) отлично) терь можно накатать ивент прятки)

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

[FONT=Lucida Console]Еще раз напоминаю,юзаем кнопку 'Спасибо'.[/FONT]

Автор: Kill Spirit: Дата: 05.25.2010

Как выдавать в скрипте Cash Point?

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

[FONT=Lucida Console]

set #cashpoint,#cashpoint + Количество;
[/FONT]

Автор: XKoriKX: Дата: 05.25.2010

Можно пример простого магазина основанного на каш пойнтах или тцг?

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

prontera,100,100,5    cashshop    Магазин    811,12103:5,5013:20

Автор: Kill Spirit: Дата: 05.25.2010

А тцг магазин на подобие кеш поинтового, как сделать?

Автор: XKoriKX: Дата: 05.25.2010

Dis[IP] Слушай. Как можно сделать так, чтобы:
Если человек не стоит на нужной клетке, то его варапает с мамы.

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

[FONT=Lucida Console]

*checkcell ("",,,);

This command will return 1 or 0, depending on whether the specified cell has
the 'type' flag set or not. There are various types to check, all mimicking
the server's cell_chk enumeration. The types can be found in db/const.txt.

The meaning of the individual types can be confusing, so here's an overview:
- cell_chkwall/water/cliff
these check directly for the 'terrain component' of the specified cell
- cell_chkpass/reach/nopass/noreach
passable = not wall & not cliff, reachable = passable wrt. no-stacking mod
- cell_chknpc/basilica/landprotector/novending/nochat
these check for specific dynamic flags (their name indicates what they do)

Example:

mes "Pick a destination map.";
input .@map$;
mes "Alright, now give me the coordinates.";
input .@x;
input .@y;
if( !checkcell(.@map$,.@x,.@y,cell_chkpass) )
{
mes "Can't warp you there, sorry!";
close;
}
else
{
mes "Ok, get ready...";
close2;
warp .@map$, .@x, .@y;
end;
}[/FONT][FONT=Lucida Console]
[/FONT]

Автор: Kill Spirit: Дата: 05.25.2010

Как сделать, если человек зашел, то снего сняло весь эквип на (к примеру на час)?

Автор: XKoriKX: Дата: 05.25.2010

Dis[IP] Это мне кажется немного не то))) Надо чтоб всех на мапе телепортнули, кроме этих клеток.

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

[FONT=Lucida Console]Kill Spirit,скриптовая команда nude; либо фуллстрип скиллом.[/FONT]

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

[FONT=Lucida Console]Korik,это же проверка на точку карты,это то,что нужно.:)
Ну а остальных,кто не стоит на нужной точке варпаем в пронту.[/FONT]

Автор: Kill Spirit: Дата: 05.25.2010

Дис напиши пример, как стрипнуть польностью эквип на данное время

Автор: XKoriKX: Дата: 05.25.2010

и мне тож примерчик можно, так как я немогу понять как это сделать)))
Мб через if, но я не могу понять как(((

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


if( !checkcell("Карта",x,y,cell_chkpass) ) {
areawarp "quiz_01",23,361,38,376,"prontera",155,182;
}

Как-то так.

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

[FONT=Lucida Console]Korik,

if(checkcell("mapname",x,y,cell_chkpass)){

Kill Spirit,
[/FONT][FONT=Lucida Console]
sc_start SC_STRIPWEAPON,6000000,5;
sc_start SC_STRIPSHIELD,6000000,5;
sc_start SC_STRIPARMOR,6000000,5;
sc_start SC_STRIPHELM,6000000,5;


6000000 = 1 час,ну а для того чтобы сделать полный стрип(очки,маска и т.п)нужно редактировать сорсы.
[/FONT]

Автор: Kill Spirit: Дата: 05.25.2010

А мне?)

Автор: Kill Spirit: Дата: 05.25.2010

А как же тогда снимать на рфуле шмот?Х_Х

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

[FONT=Lucida Console]Как снимать я уже сказал ).[/FONT]

Автор: Kill Spirit: Дата: 05.25.2010

У меня есть крылья + 20% к передвежению и что на рфуле все игроки будут в них бегать?

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

[FONT=Lucida Console]Как я уже сказал выше без редактирования исходного кода ничего сделаешь тогда.Нужно добавлять еще стрип на тот слот,где находятся твои крылья.Если будет вечером время сделаю.[/FONT]

Автор: Kill Spirit: Дата: 05.25.2010

Цитата Dis[IP];24045:
[FONT=Lucida Console]
set #cashpoint,#cashpoint + Количество;
[/FONT]


mes "[Dice]";
mes "Поздравляю!Вы победили!";
close2;
announce "Кубик: У нас есть победитель!Его имя: "+.@name$+"!",0;
sleep 1000;
announce "Кубик: Приз был 200 Cash Point",0;
set #cashpoint,#cashpoint + 200;
warp "prontera",155,182;
disablenpc "Dice#evnt1";


При выдаче кеш поинтов пишет, и не выдает...

[Debug]: Source (NPC): Dice#evnt1 at quiz_01 (204,93)
[Warning]: script:get_val: cannot access player variable '#cashpoint', defaultin
g to 0

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

mes "[Dice]";
mes "Поздравляю!Вы победили!";
set #cashpoint,#cashpoint + 200;
close2;
announce "Кубик: У нас есть победитель!Его имя: "+.@name$+"!",0;
sleep 1000;
announce "Кубик: Приз был 200 Cash Point",0;
warp "prontera",155,182;
disablenpc "Dice#evnt1";

Автор: Kill Spirit: Дата: 05.25.2010

Все ровно не дает, и в пронтеру даже не варпает О_О

Проходит анонс и в мап сервере это

[Error]: script_rid2sd: fatal error ! player not attached!
[Debug]: Source (NPC): Dice#evnt1 at quiz_01 (204,93)

Автор: Kill Spirit: Дата: 05.25.2010

Если надо, то вот скрипт диса

-	script	Dice#announcer	-1,{
OnInit:
disablenpc "prtevent";
hideonnpc "Dice#evnt1";
end;
OnClock1030:
OnClock1300:
OnClock1500:
OnClock1900:
OnClock1820:
announce "Кубик: Cейчас начнется эвент 'Кубик'!.",0;
sleep2 10000;
announce "Кубик: Все желающие могут зайти в портал,который появится в центре пронтеры.",0;
sleep2 10000;
announce "Кубик: Через минуту после появления портала регистрация заканчивается и портал исчезает",0;
sleep2 10000;
announce "Кубик: Пожалуйста подойдите в центр пронтеры и зайдите в варп портал для принятия участия в эвенте!",0;
enablenpc "prtevent";
initnpctimer;
end;

OnTimer30000:
announce "Кубик: До начала осталось 30 секунд",0;
sleep2 5000;
announce "Кубик: Все желающие принять участие могут пройти в варп портал!",0;
end;

OnTimer50000:
announce "Кубик: До начала осталось 10 секунд!",0;
end;

OnTimer55000:
announce "Кубик: ~5~.",0;
end;

OnTimer56000:
announce "Кубик: ~4~.",0;
end;

OnTimer57000:
announce "Кубик: ~3~.",0;
end;

OnTimer58000:
announce "Кубик: ~2~.",0;
end;

OnTimer59000:
announce "Кубик: ~1~.",0;
end;

OnTimer60000:
announce "Кубик: Время вышло!",0;
end;

OnTimer61000:
disablenpc "prtevent";
donpcevent "Dice#evnt1::OnEnable";
stopnpctimer;
end;

OnTimer62000:
announce "Кубик: Cледующий эвент начнется через 30 минут!",0;
end;
}

// Варп портал на эвент //

prontera,147,183,0 warp prtevent 2,2,quiz_01,204,90

// Получение приза //

quiz_01,204,93,6 script Dice#evnt1 715,{
mes "[Dice]";
mes "Назовите свое имя:";
next;
input .@name$;
if(.@name$ != strcharinfo(0)){
mes "[Dice]";
mes "Вы уверены что это имя вашего персонажа?";
close;
}
mes "[Dice]";
mes "Поздравляю!Вы победили!";
set #cashpoint,#cashpoint + 200;
close2;
announce "Кубик: У нас есть победитель!Его имя: "+.@name$+"!",0;
sleep 1000;
announce "Кубик: Приз был 200 Cash Point",0;
warp "prontera",155,182;
disablenpc "Dice#evnt1";
end;

OnEnable:
mapannounce "quiz_01","Dice: Сейчас я расскажу правила эвента:",0;
sleep2 10000;
mapannounce "quiz_01","Dice: Я бросаю кубик числом от 1 до 4",0;
sleep2 10000;
mapannounce "quiz_01","Dice: Пример:Я бросил число 4.Игроки стоящие на клетке с номером от 1 до 3 варпуются обратно в город и считаются проигравшыми!",0;
sleep2 10000;
mapannounce "quiz_01","Dice: Игра продолжается до тех пор пока на карте не останется один человек.",0;
sleep2 10000;
mapannounce "quiz_01","Кубик: Вот и все!Начинаем эвент!",0;
sleep2 10000;
goto L_Start;
end;

L_Start:
if(getmapusers("quiz_01") == 1) goto L_Champ;
if(getmapusers("quiz_01") == 0) goto L_None;
if(getmapusers("quiz_01") > 1){
announce "Бросаю кубик!",0;
set $@kubik,rand(1,4);
sleep2 10000;
announce "Кубик: Я бросил кубик!Встаньте пожалуйста на любую клетку с числами!",0;
sleep2 10000;
announce "Кубик: ~5~",0;
sleep2 5000;
announce "Кубик: ~4~",0;
sleep2 4000;
announce "Кубик: ~3~",0;
sleep2 3000;
announce "Кубик: ~2~",0;
sleep2 2000;
announce "Кубик: ~1~",0;
sleep2 1000;
announce "Кубик: Время вышло!.",0;
donpcevent "evnt#1::OnEnable";
announce "Кубик: Число: "+$@number+"!",0;
if(($@number != 1) && ($@number != 2) && ($@number != 3)) goto L_Lose1;
if(($@number != 1) && ($@number != 2) && ($@number != 4)) goto L_Lose2;
if(($@number != 1) && ($@number != 3) && ($@number != 4)) goto L_Lose3;
if(($@number != 2) && ($@number != 3) && ($@number != 4)) goto L_Lose4;
end;
}

L_Lose1:
areawarp "quiz_01",183,81,191,60,"prontera",155,182;
areawarp "quiz_01",195,81,203,60,"prontera",155,182;
areawarp "quiz_01",207,81,215,60,"prontera",155,182;
goto L_Start;
end;

L_Lose2:
areawarp "quiz_01",183,81,191,60,"prontera",155,182;
areawarp "quiz_01",195,81,203,60,"prontera",155,182;
areawarp "quiz_01",219,81,227,60,"prontera",155,182;;
goto L_Start;
end;

L_Lose3:
areawarp "quiz_01",183,81,191,60,"prontera",155,182;
areawarp "quiz_01",207,81,215,60,"prontera",155,182;
areawarp "quiz_01",219,81,227,60,"prontera",155,182;
goto L_Start;
end;

L_Lose4:
areawarp "quiz_01",195,81,203,60,"prontera",155,182;
areawarp "quiz_01",207,81,215,60,"prontera",155,182;
areawarp "quiz_01",219,81,227,60,"prontera",155,182;
goto L_Start;
end;

L_Champ:
mapannounce "quiz_01","Кубик: Подойдите к НПС и назовите свое имя.",0;
hideoffnpc "Dice#evnt1";
end;

L_None:
disablenpc "Dice#evnt1";
announce "Кубик: Победителей нету",0;
end;
}

- script evnt#1 -1,{
OnEnable:
areawarp "quiz_01",185,87,188,82,"prontera",155,182;
areawarp "quiz_01",197,87,200,82,"prontera",155,182;
areawarp "quiz_01",209,87,212,82,"prontera",155,182;
areawarp "quiz_01",221,87,224,82,"prontera",155,182;
end;
}

Автор: Ordos: Дата: 05.25.2010

Цитата Dis[IP];24002:
[FONT=Lucida Console]Держи.:)
Cписок + Описание:http://ea.dj-yhn.com/index.php?s=all[/FONT]

Ссылка не хочет открываться :mellow:
Всё таки открылась. Спасибо за список!

Автор: Skllip: Дата: 05.25.2010

Хм...

set #cashpoint,#cashpoint + 200;

Скорее всего так:
set #CASHPOINTS,#CASHPOINTS+200;

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

[FONT=Lucida Console]От того,что слово cashpoint написано капсом суть не поменяется,на моем эмуле работае и так.[/FONT]

Автор: Skllip: Дата: 05.25.2010

Дело не в капсе, у тебя: cashpoint, у меня cashpoints проверял моё работает.

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

[FONT=Lucida Console]Впринципе разницы особой не вижу,у меня все и при таком написании работает да и ошибка у Спирита совсем другая.Ему пишет что игрок не при аттачен к скрипту.[/FONT]

Автор: Skllip: Дата: 05.25.2010

Ну не знаю у меня при cashpoint мап сервер ошибку не выдавал, а в игре не работало. А при cashpoints всё нормально.

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

[FONT=Lucida Console]Опять же дело сейчас не в этом ).
Kill Spirit,про аттач чара смотри тут:

[/FONT][FONT=Lucida Console]*attachrid()
*detachrid

A 'RID' is an ID of a character who caused the NPC script to run, as has been
explained above in the introduction section. Quite a bit of commands want a RID
to work, since they wouldn't know where to send information otherwise. And in
quite a few cases the script gets invoked with a RID of zero (like through
OnTime special labels). If an NPC script needs this, it can attach a specified
character's id to itself. by calling the '' function.

'' returns 1 if the character was found online and 0 if it wasn't.

This could also be used, while running in a script invoked by a character
through talking to an NPC, to mess with other characters.
Detaching the RID will make the RID of the script zero.

You can gain you own RID by using this command

getcharid(3)

or for someone else

getcharid(3,NAME)

Where NAME = the name of the person

Example

input @NAME$; < You would enter the name of a person
attachrid(getcharid(3,@NAME$)); < It will find the RID of that person and attach it to this script
mes "Someone want you"; < This will appear of the other persons screen
close;

This comes with its draw backs, without checks you will get errors in your map-server
A check can look like this

input @NAME$;
if(isloggedin(getcharid(3,@NAME$))==0) goto L_Notlogged;
.........
L_Notlogged:[/FONT]
mes "That person is not logged in";
close;

Автор: Jake: Дата: 05.28.2010

Вот хотел спросить, чисто ради интереса. Как сделать Автоанонсера? А вопрос будет в следующем, что писать в первой строке там где x,y,x и т.д. Что писать следующее? Время? или текст?Прошу объянсить это с простым наглядным примером, ради ознакомления!

Автор: Kill Spirit: Дата: 05.28.2010

Чего?

Нечего не понял, напишу тупой кусочек скрипта...

input @announce$;
announce strcharinfo(0) + ": "+@announce$+"",0,0xFF0000;
next;
mes "До встречи, приходи еще!";
close;

Автор: Jake: Дата: 05.28.2010

Мне нужно простая версия аннонсера, с обсуждением почему тут так, а тут так.

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

[FONT=Lucida Console]Kill Spirit,у тебя просто аннонсер,а Jak'y нужен автоаннонс.
Jake,держи пример ;) :

-    script    autoannounce    -1,{
//Автоаннонс каждый час
OnMinute00:
announce "Добро пожаловать на наш сервер!",0;
end;
}
[/FONT]

Автор: Jake: Дата: 05.29.2010

Спасибо! Это то что я хотел!

-    script    autoannounce    -1,{ -1 обозначает что нпц никакого нет?
//Автоаннонс каждый час
OnMinute00: (какое время тут ставить? по каким расценкам мминуты,секунды? или например OnMinute00:2100 ???
announce "Добро пожаловать на наш сервер!",0; (что значит тут 0?)
end;
}

/////////////////////////////
И можно ли написать так?
- script autoannounce -1,{
Onclock0100:
announce "Добро пожаловать на наш сервер!",0;
Onclock0200:
announce "Можно так прописать?!"
end;
}

Автор: Kill Spirit: Дата: 05.29.2010

Цитата Jake;24323:
Спасибо! Это то что я хотел!
-    script    autoannounce    -1,{ -1 обозначает что нпц никакого нет?
//Автоаннонс каждый час
OnMinute00: (какое время тут ставить? по каким расценкам мминуты,секунды? или например OnMinute00:2100 ???
announce "Добро пожаловать на наш сервер!",0; (что значит тут 0?)
end;
}

/////////////////////////////
И можно ли написать так?
- script autoannounce -1,{
Onclock0100:
announce "Добро пожаловать на наш сервер!",0;
Onclock0200:
announce "Можно так прописать?!"
end;
}


1. да нпц нету...

2.Онминут00 это каждый час, чтобы было в разное время, то OnClock2100(или любое время)

3. 0 незнаю

4. вот так

- script autoannounce -1,{
OnСlock1200:
announce "Добро пожаловать на наш сервер!",0;
OnСlock2100:
announce "Можно так прописать?!"
end;
}

Автор: Jake: Дата: 05.29.2010

Спасибо, но мне важно знать что такое announce "Добро пожаловать на наш сервер!",0; <---- 0 ибо просто так ничего не бывает. А так я написал тоже самое что и ты;) ^_^

Автор: Kill Spirit: Дата: 05.29.2010

Что ты написал тоже самое что и я?

в первом куске ты спрашивал, я ответил

Во 2 ты спросил можно ли так написать, я подправил и выложил...

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

[FONT=Lucida Console]Да, -1 обозначает,что НПС нету.
Cписок лейблов времени:

OnClock:
OnMinute:
OnHour:
On:
OnDay:

0 - это дефолтовый цвет аннонса,то есть желтый.Цвет аннонса указывается в RGB формате.Вот список некоторых цветов:
0xD20000-Красный
0x000000-Черный
0x33FF33-Зеленый
0xFF33CC-Розовый
0xBAB9B9-Серый
0xFF9900-Оранжевый
0xCC00FF-Фиолетовый

Структура аннонса:
announce "Текст",Флаг,Цвет;
Цвета я указал выше.Теперь флаги:
- bc_all: Broadcast message is sent server-wide
- bc_map: Message is sent to everyone in the same map
- bc_area: Message is sent to players in the vecinity of the source.
- bc_self: Message is sent only to current player.

Ну впринципе все ).[/FONT]

Автор: Jake: Дата: 05.29.2010

Что ты там подправил кроме время? извеняюсь если чтото не заметил. И всё же прошу объяснить, кто знает, что значит цифра 0 В конце аннонса

Автор: Jake: Дата: 05.29.2010

Стандартно пишется на весь мир? а вот допустим фиолетовым это будет так?

announce "Добро пожаловать на наш сервер!",0xCC00FF;

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

[FONT=Lucida Console]Да так.Я тебе про 0 уже все написал,читать учимся ).
[/FONT]

Автор: Kill Spirit: Дата: 05.29.2010

Да...

И меня интересует почему ты все время чтото спрашиваешь? но сам то нечего дельного не выкладывал...

Автор: Jake: Дата: 05.29.2010

и последний, самый глупый вопрос.Заливать стандартно а потом через @loadnpc ?

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

[FONT=Lucida Console]Да.[/FONT]

Автор: Jake: Дата: 05.29.2010

Kill Spirit
Поясняю, помоему это формум? Темболее раздел "школа". Тут и следует спрашивать. Люди не рождаются с набором скриптов и умений в голове. Все когда то это учат.

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

Оффтоп:
Лично я учил скрипты по примерам и докам, ни у кого не спрашивал.
А сам сервер по гайдам :)

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

[FONT=Lucida Console]Оффтоп:Ну раньше учили многие так,но с появлением такого раздела поменялось все ).[/FONT]

Автор: Jake: Дата: 05.29.2010

Наверное меня будут некоторые гнобить, что я часто задаю вопросы.Ну да ладно.Писать аннонсы я научился. Теперь хочу научиться открывать шоп.
Поковырялся в скриптах, нашёл тучу функций.Но не понятных.Вот решил сделать нубового шопера.

prontera,x,y,x	script	Торговец	910,{
mes "Салют тебе! "+strcharinfo(0)+" Хочешь взглянуть на мой товар?";
if(select("Хочу:Нед")==2){ close; }


Что дальше ? знаю что комманда на открывание шопа, знаю что:
setarray .ITEMS[0],id,цена

Но после чего, незнаю.Растолкуйте.Сорри если много вопросов тупых.:rolleyes:

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

[FONT=Lucida Console]Если шоп простой,то скриптовая команда:

callshop "Название",Тип;
Типы магазина:
[/FONT]
0 = The normal window (buy, sell and cancel)
1 = The buy window
2 = The sell window
[FONT=Lucida Console]
Ну а так было бы не плохо увидеть полное описание того,что ты хочешь и какой магазин.[/FONT]

Автор: Jake: Дата: 05.30.2010

Пока я не буду учиться писать тгц, хотелось бы узнать просто магаз например стрелы,поты там. Мелочёвка.

prontera,x,y,x	script	Торговец	910,{
mes "Салют тебе! "+strcharinfo(0)+" Хочешь взглянуть на мой товар?";
if(select("Хочу:Нед")==2){ close; }
callshop "Барахло",0;
Дальше идет как я понимаю та самая комманда?
setarray .ITEMS[0],574,8000

Так? или чтото другое?

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

[FONT=Lucida Console]Бугага,причем тут массивы то :lol:
Держи:

-	shop	Название магазина	Cпрайт НПС,ID предмета:Цена,ID предмета:Цена
[/FONT]

Автор: [OneLife]: Дата: 05.30.2010

Посмотри вот тут пример
Думаю разберешься :)

Автор: Jake: Дата: 06.07.2010

Вот кусок эвента, как сделать при Победе чтобы всех с карты выкидывало в пронту?

OnMobKilled: 
dispbottom "Грац Ты нашел меня!";
announce "Поринга нашел игрок "+ strcharinfo(0) +"! Поздравляем его!",0;
set count,count+25;
disablenpc "Poring Catcher";
killmonster "poring_w01.gat","All";
end;
}

Автор: Kill Spirit: Дата: 06.07.2010

Цитата Jake;24816:
Вот кусок эвента, как сделать при Победе чтобы всех с карты выкидывало в пронту?
OnMobKilled: 
dispbottom "Грац Ты нашел меня!";
announce "Поринга нашел игрок "+ strcharinfo(0) +"! Поздравляем его!",0;
set count,count+25;
disablenpc "Poring Catcher";
killmonster "poring_w01.gat","All";
end;
}


areawarp "имя карты (откуда варпать)","куда варпать",х,у;

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

[FONT=Lucida Console]To Kill Spirit:Типа пошутил?
Jake держи ) :

* mapwarp "С какой карты варпаем","На какую карту варпаем",X,Y;
[/FONT]

Автор: Jake: Дата: 06.10.2010

Вот хочу сделать квест потруднее. Мне нужно сделать так Чтобы когда вы отдали 1 нпц итемы он посылал ко второму, а тот уже выдал соответственно вещь. и в тоже время,если ктото случайно увидит и поговорит со 2 нпц, не говоря с 1 то 2 скажет. Иди своей дорогой.К примеру)

quiz_01,42,369,3	script	Бог Солнца	936,{
mes "[Бог Солнца]";
mes "Приветствую тебя,великий путник!";
mes "Ты наверное хочешь узнать что я здесь делаю?";
if(select("Конечно:Мне всёравно")==2){ close; }
mes "[Бог Солнца]";
mes "Я так устал светить.Мне нужен покой..";
mes "Я могу научить тебя издавать немного тепла и света!";
mes "В этом тебе поможет Emblem of the Sun God";
next;
mes "[Бог Солнца]";
mes "Хочешь получить ёё?";
if(select("Да:Нет,я не готов")==2){ close; }
mes "[Бог Солнца]";
mes "Но просто так я тебе не могу её сделать";
next;
mes "[Бог Солнца]";
mes "Для этого мне понадобится:";
next;
mes "[Бог Солнца]";
mes "50 Gold,10 Emperium,100 Wind of Verdure";
next;
mes "[Бог Солнца]";
mes "И так.. Приступим";
if(countitem(969)<50 || countitem(714)<10 || countitem(992)<100){ mes "Ты хочешь мена разгневать?!Ты не всё принес!"; close; }
delitem 969,50;
delitem 714,10;
delitem 992,100;
mes "[Бог Солнца]";
mes "Ступай теперь к моему знакомому Кузнецу-Тору и забери у него Эмблему";
mes "Удачи тебе";
close;
}

//////////Part 2////////
quiz_01,42,369,3 script Тор 813,{
mes "[Тор]";
mes "Здравствуй путник.Ты пришёл за эмблемой?";
if(select("Да:Какой Эмблемой?")==2){ close; }

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

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

Автор: Jake: Дата: 06.10.2010

Ничего не понятно, мне желательно наглядно на моём. Я так понимаю а что куда не очень

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

там вполне всё ясно. Проследи за использованием переменной nya_1, это банальный условный оператор (if, then, else).

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

[FONT=Lucida Console]Держи,красным выделены нужные части.

quiz_01,42,369,3    script    Бог Солнца    936,{
mes "[Бог Солнца]";
mes "Приветствую тебя,великий путник!";
mes "Ты наверное хочешь узнать что я здесь делаю?";
if(select("Конечно:Мне всёравно")==2){ close; }
mes "[Бог Солнца]";
mes "Я так устал светить.Мне нужен покой..";
mes "Я могу научить тебя издавать немного тепла и света!";
mes "В этом тебе поможет Emblem of the Sun God";
next;
mes "[Бог Солнца]";
mes "Хочешь получить ёё?";
if(select("Да:Нет,я не готов")==2){ close; }
mes "[Бог Солнца]";
mes "Но просто так я тебе не могу её сделать";
next;
mes "[Бог Солнца]";
mes "Для этого мне понадобится:";
next;
mes "[Бог Солнца]";
mes "50 Gold,10 Emperium,100 Wind of Verdure";
next;
mes "[Бог Солнца]";
mes "И так.. Приступим";
if(countitem(969)<50 || countitem(714)<10 || countitem(992)<100){ mes "Ты хочешь мена разгневать?!Ты не всё принес!"; close; }
delitem 969,50;
delitem 714,10;
delitem 992,100;
mes "[Бог Солнца]";
mes "Ступай теперь к моему знакомому Кузнецу-Тору и забери у него Эмблему";
mes "Удачи тебе";
[COLOR=Red]// Устанавливаем переменную myquest
set myquest,1;[/COLOR]
close;
}

//////////Part 2////////
quiz_01,42,369,3 script Тор 813,{
[COLOR=Red]// Если игрок взял начало квеста у Бога Солнца и принес все предметы,то выводим такой диалог
if(quest==1){[/COLOR]
mes "[Тор]";
mes "Здравствуй путник.Ты пришёл за эмблемой?";
if(select("Да:Какой Эмблемой?")==2){ close; }
..............................................
[COLOR=Red]// Если игрок не взял начало квеста у Бога Солнца,то выводим такой диалог:
} else { mes "Иди свой дорогой!"; close; }[/COLOR]
[/FONT]

Автор: XKoriKX: Дата: 06.10.2010

Дис. А не проще лэйбл сделать?)

quiz_01,42,369,3 script Тор 813,{
if(myquest==1){
goto L_lable; // Перемещаем человека к диалогу L_lable если на нём висит переменная myquest равная 1
}
mes "Иди свой дорогой!"; // Диалог с человеком, не сдававшим предметы.
close;

L_lable: //Cобственно сам диалог, с отдавшим предметы человеком.
mes "[Тор]";
mes "Здравствуй путник.Ты пришёл за эмблемой?";
if(select("Да:Какой Эмблемой?")==2){ close; }
..............................................

Автор: Kill Spirit: Дата: 06.10.2010

Цитата XKoriKX;25028:
Дис. А не проще лэйбл сделать?)


А смысл?

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

[FONT=Lucida Console]OMFG,HOLY SHIT!!!!!!!!!!!! :lol:
1)Зачем?
2)Лейблами уже давно никто не пишет.
3)Да и больше строк выходит с ними.
4)Вон даже Jake теперь пишет правильно без лейблов.[/FONT]

Автор: XKoriKX: Дата: 06.10.2010

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

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

goto всегда было дурным тоном в программировании.

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

[FONT=Lucida Console]

Цитата XKoriKX;25032]ну просто для меня так удобнее))) сразу видно что к чему)))
так легче писать квесты)

И чем же удобней то?Раскрой нам вековую тайну лейблов :lol:
Хотя опять же каждый пишет так,чтобы ему было удобно.Работоспособность скрипта от этого не изменится.[/FONT:

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

Ну он наверное имеет ввиду не запутаться. Когда много case можно не понять к чему одна, к чему другая.
Ну я советую в таком случаи делать комментарии.

Автор: XKoriKX: Дата: 06.11.2010

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

If (ляляля==1) { goto L_ляляля; }


Просто мне удобней водить goto, чем писать условие в условии в условии, и так до бесконечности) Типо такого.
if(quest==1){
mes "ляляля";
}
else
{
%%%%% if(quest==2){
%%%%% mes "ляляля";
%%%%% close;
%%%%% }
%%%%% else
%%%%% {
%%%%%%%%%% if(quest==3){
%%%%%%%%%% mes "ляляля";
%%%%%%%%%% close;
%%%%%%%%%% }
%%%%% }
mes "Вали отсюда. ляляля";
close;
}

P.S. %%%%% - табы)))

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

[FONT=Lucida Console]Сорс код тоже лейблами с ляляками будешь писать? :D
Лейблы твои занимают больше строк в скрипте,можно все это согнать в одну строку.

if(quest==1){ mes "ляляля"; } else { if(quest==2){ mes "ляляля"; close; } else { if(quest==3){ mes "ляляля"; close; } } }
mes "Вали отсюда. ляляля";
close;
}

И как у же тебе сказал Мяфк,если ты не в состоянии запомнить все пиши комментарии (//).[/FONT]

Автор: XKoriKX: Дата: 06.11.2010

Кароч) Мне так удобней пока. Может потом мне будет удобней так. А пока я пользуюсь го ту)

P.S. Вот даже сан так пишет)))

L_Start:
[COLOR="DarkGreen"]if(getmapusers("quiz_00") == 1) goto L_Champ;
if(getmapusers("quiz_00") == 0) goto L_None;[/COLOR]
if(getmapusers("quiz_00") > 1){
ляляля
}
L_Champ:
mapannounce "quiz_00","Кубо-Человек: Подойдите к НПС и назовите свое имя.",0;
enablenpc "Кубик#dice_event";
end;

L_None:
disablenpc "Кубик#dice_event";
end;

Автор: Sanasol: Дата: 06.11.2010

Лол. Мне не нравится этот вариант. Я правил только функционал. А структура не изменилась это так Махина написал(-а).

Если будет желаение переделаю. Хотя никто спасибки не ставят вообще надо убрать пусть опять плодят темы про кубики.


Я бы пол скрипта в функции перелепил нафиг. Удобнее было бы.

if(getmapusers("quiz_00") == 1) {callfunc "winner"}

function script winner { enablenpc...announce }

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

[FONT=Lucida Console]АП темке.Продолжайте задавать вопросы по скриптингу. ^_^[/FONT]

Автор: ZmMEe11: Дата: 01.11.2011

как сделать чтоб всем игрокам находящихся на карте выпал скил "Tarot Card of Fate" c 100% шансом?

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

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

prontera,150,150,0	script	npcname	-1,200,200,{
OnInit:
disablenpc "npcname";
end;
OnTouch:
unitskilluseid getcharid(3),489,10;
end;
}


Это при условии, что я вас правильно понял. Вам ведь нужно, чтобы игрок скастовал этот скилл?

Автор: ZmMEe11: Дата: 01.11.2011

нет) я хочу авто евент "Таро" написать но знаний не хватает(

Автор: GM Holsten: Дата: 01.11.2011

я че то не чего не понял как писать скрипты можете обяснить нормально и попонятнее=)!спс за внимание

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

[FONT=Lucida Console]eA/doc/script_commands.txt[/FONT]

Автор: HolyAcid: Дата: 01.11.2011

на стандарт ро видел такой интересный скрипт итема как "мобильный телефон" находящийся в отделе расходки в инвентаре. при использовании непропадал и вызывал меню нпц. как это сделать? (P.S. я у мамы дурачек)

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

[FONT=Lucida Console]В 1-ые { } предмета вставить

callfunc "test";

Потом создаем скрипт:
function    script    test    {
mes "1,2 или 3?";
switch(select("1:2:3")){
case 1:
mes "Вы выбрали 1";
close;
case 2:
mes "Вы выбрали 2";
close;
case 3:
mes "Вы выбрали 3";
close;
}
}
[/FONT]

Автор: HolyAcid: Дата: 01.11.2011

а что отвечает за то чтобы предмет не "тратился"?

Автор: ValikDRV: Дата: 01.11.2011

HolyAcid, type

11 Usable with delayed consumption (item is lost from inventory after selecting a target, for use with skills and pet lures)

type - 11 должен подойти.

Пример:
501,Red_Potion,Red Potion,0,50,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(45,65),0; },{},{}

Меняем 0 на 11 и ред пот не тратится :)


З.Ы. Если я ошибаюсь попавте меня.

Автор: FakeChel: Дата: 02.01.2011

Какое максимальное значение ХП можно поставить монстру? Хочу сделать тренировочного моба. Задача моба: выдерживать все удары, не умирать, стоять на месте и не реагировать никак на происходящее вокруг, позволять наносить по себе все удары с 100% попаданием и уроном.
Билд моба на вскидку:
mod: 0x0
HP: 10kk
SP: 1
All stats: 1
Как сделать монстру быстрый реген, не используя скилл Heal?

Автор: Alort: Дата: 02.01.2011

Цитата FakeChel;32283:
Какое максимальное значение ХП можно поставить монстру?


Я так понимаю ~максимальное число хп в ро = 2.1ккк+, хотя в sql версии в бд может стоять и другое ограничение(на количество символов)

Upd: покавырялся в бд, кол-во хп у игрока 2.1мильярда(ни помню как это число называется, кто знает напишите), а у монстра там как то подругому, покрайней мере 3 мильярда ставиться спокойно.

Upd, что то неполучается поставить(у игрока) хп>1кк, ладно поф, но у меня есть уверенность что это ограничение можно где то убрать, просто щас капать мне влом.

Автор: Alort: Дата: 02.01.2011

Цитата FakeChel;32283:
Хочу сделать тренировочного моба. Задача моба: выдерживать все удары, не умирать, стоять на месте и не реагировать никак на происходящее вокруг, позволять наносить по себе все удары с 100% попаданием и уроном.
Билд моба на вскидку:
mod: 0x0
HP: 10kk
SP: 1
All stats: 1
Как сделать монстру быстрый реген, не используя скилл Heal?


Копию любого моба, аля имп\флаг, под новым айди, с другими, нужными тебе статами\хп.

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

Цитата FakeChel;32283:
Как сделать монстру быстрый реген, не используя скилл Heal?


Дай ему пасивный скилл регена найтов сотого левела :)

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

Цитата FakeChel;32283]Какое максимальное значение ХП можно поставить монстру? Хочу сделать тренировочного моба. Задача моба: выдерживать все удары, не умирать, стоять на месте и не реагировать никак на происходящее вокруг, позволять наносить по себе все удары с 100% попаданием и уроном.
Билд моба на вскидку:
mod: 0x0
HP: 10kk
SP: 1
All stats: 1
Как сделать монстру быстрый реген, не используя скилл Heal?

[FONT=Comic Sans MS]Ну можно скриптом.Поставь своему мобу необходимое тебе кол-во хп и другие парамертры после чего запусти такой скриптик:[/FONT]
[FONT=Comic Sans MS]
 [/FONT]
[FONT=Comic Sans MS:
- script reload_mob -1,{
OnInit:
monster "твоя карта",0,0,"Имя моба",ID,1,"reload_mob::OnRM";
end;
OnRM:
monster "твоя карта",0,0,"Имя моба",ID,1,"reload_mob::OnRM";
end;
}[/FONT]
[FONT=Comic Sans MS]
[/FONT]

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

Помнится модификация Зефируса позволяла спаунить гибко-настраиваемого монстра.

Автор: Toli4ok: Дата: 02.15.2011

посмотрите правильно ли я написал нпц варпающее в квест зону

Prontera,180,190,5 script Квест зона 70,{
mes "[Квест зона]";
mes "Привет ти хочеш попасть в Квест Зону";

}
switch(select("да","нет")) {
case 1:

warp "mapname",X,Y;

break;

case 2:

close;

break;
}

строго не судити учусь

Автор: FakeChel: Дата: 02.15.2011

Цитата Toli4ok;33891:
посмотрите правильно ли я написал нпц варпающее в квест зону

строго не судити учусь


Prontera,180,190,5	script	Квест зона	70,{
mes "[Квест зона]";
mes "Привет ти хочеш попасть в Квест Зону";

switch(select("да","нет")) {
case 1:

warp "mapname",X,Y;

end;

case 2:

close;
}
}

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

prontera,180,190,5 script Квест зона 70,{
mes "[Квест зона]";
mes "Привет ты хочешь попасть в Квест Зону?";
if(select("Да:Нет")==1){ warp "mapname",X,Y; close; }
close;
}

Автор: Кеник: Дата: 02.16.2011

Написал нормально :D Работать будет.. Дис просто вые*ывается :D Рано парню еще над оптимизацией моск ломать.

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

[FONT=Comic Sans MS]Кеник,надо сразу учиться парню нормально писать код,а не потом из говностайла переучиваться.И времени меньше потратится и код приятней смотреться будет.Свитч хорош только тогда,когда в меню больше 2-ух вариантов,а так только cелектом и никаких других вариантов быть не может.[/FONT]

Автор: Кеник: Дата: 02.16.2011

Ну... Есть смысл в твоих словах :D Но все же для начала главное понять саму логику написания скриптов и т.п. Я сам изначально писал ужаснейший код (да и щас он далек от идеала), но мне самому так было проще. А вот если бы ты написал пояснение из прошлого поста сразу же, вместе со своим вариантом нпц - было бы замечательно :D Тогда все было бы на местах, ибо твоя логика - не есть моя логика (или его).

Автор: FakeChel: Дата: 02.16.2011

Цитата DiS[IP];33910:
prontera,180,190,5 script Квест зона 70,{
mes "[Квест зона]";
mes "Привет ты хочешь попасть в Квест Зону?";
if(select("Да:Нет")==1){ warp "mapname",X,Y; close; }
close;
}


prontera,180,190,5 script Квест зона 70,{
mes "[Квест зона]";
mes "Привет ты хочешь попасть в Квест Зону?";
if(select("Да:Нет")==1) warp "mapname",X,Y;
close;
}

Можно и так написать, если говорить о красивости или компактности...

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

[FONT=Comic Sans MS]Разницы никакой.Кол-во строк в скрипте не изменилось,да и сам смысл скрипта тоже.Убирание {} и close; это не признак красивости и компактности.Именно в этом скрипте убрать {} можно,но в каком-нибудь другом скрипте где будет куча проверок убирать {} глупо ибо можно запутаться.[/FONT]

Автор: Toli4ok: Дата: 02.16.2011

Как написать простой магазин ну штобы он продавал за ТЦГ

Автор: FakeChel: Дата: 02.16.2011

Цитата DiS[IP];33981:
[FONT=Comic Sans MS]Разницы никакой.Кол-во строк в скрипте не изменилось,да и сам смысл скрипта тоже.Убирание {} и close; это не признак красивости и компактности.Именно в этом скрипте убрать {} можно,но в каком-нибудь другом скрипте где будет куча проверок убирать {} глупо ибо можно запутаться.[/FONT]

Я привел этот пример к тому, что ты написал скрипт по своему, а не исправил и не указал на ошибку в скрипте автора. Каждый пишет по своему, есть лишь общепринятые рамки в стиле написания, но они совершенно не обязательны! Согласен?
Цитата Toli4ok;34001:
Как написать простой магазин ну штобы он продавал за ТЦГ

prontera,150,150,0	script	Seller	123,{
mes"Продам чонить за TCG";
next;
switch(select("Яблоко 5 TCG:Золото 100 TCG:Ножик 50 TCG:Закрыть")){
case 1:
if(countitem(7227)<5) break;
delitem 7227,5;
getitem 512,1;
goto L_ok;
case 2:
if(countitem(7227)<100) break;
delitem 7227,100;
getitem 969,1;
goto L_ok;
case 3:
if(countitem(7227)<50) break;
delitem 7227,50;
getitem 1201,1;
goto L_ok;
default:
mes "Досвидания";
close;
}
mes "У вас недостаточно TCG.";
close;
L_ok:
mes "Спасибо за покупку.";
close;
}

Самый простой магазин.

Автор: Toli4ok: Дата: 02.16.2011

я хотел такой магазин как за зени ну вместо зени тцг

Автор: FakeChel: Дата: 02.16.2011

Цитата Toli4ok;34003:
я хотел такой магазин как за зени ну вместо зени тцг


doc\sample\npc_dynamic_shop.txt за пример пойдет тебе

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

и што в етом скрипте надо изминить штоби нпц продавало за тцг? и в кокой строке добавлять придмети?

- shop dyn_shop1 -1,501:50

prontera,181,200,4 script Dynamic Shop 123,{
callshop "dyn_shop1",0;
npcshopattach "dyn_shop1";
end;

OnSellItem:
for(set @i, 0; @i < getarraysize(@sold_nameid); set @i, @i + 1){
if(countitem(@sold_nameid[@i]) < @sold_quantity[@i] && @sold_quantity[@i] <= 0){
mes "omgh4x!";
close;
}
if(@sold_nameid[@i] == 501){
set $@rpotsleft, $@rpotsleft + @sold_quantity[@i];
set Zeny, Zeny + @sold_quantity[@i]*20;
delitem 501, @sold_quantity[@i];
} else {
if(@sold_nameid[@i] == 502){
set $@opotsleft, $@opotsleft + @sold_quantity[@i];
set Zeny, Zeny + @sold_quantity[@i]*100;
delitem 502, @sold_quantity[@i];
} else {
mes "Sorry, I don't need your items.";
}
}
}
deletearray @sold_quantity, getarraysize(@sold_quantity);
deletearray @sold_nameid, getarraysize(@sold_nameid);
mes "Deal completed.";
close;

OnBuyItem:
for(set @i, 0; @i < getarraysize(@bought_nameid); set @i, @i + 1){
if(@bought_quantity[@i] <= 0){
mes "omgh4x!";
end;
}
if(@bought_nameid[@i] == 501){
if(@bought_quantity[@i] > $@rpotsleft){
if($@rpotsleft > 0){
set @bought_quantity[@i], $@rpotsleft;
} else {
mes "We are out of red potions!";
close;
}
}
if(Zeny >= 40*@bought_quantity[@i]){
set Zeny, Zeny - 40*@bought_quantity[@i];
getitem 501, @bought_quantity[@i];
set $@rpotsleft, $@rpotsleft - @bought_quantity[@i];
} else {
mes "You have insufficient cash.";
close;
}
} else {
if(@bought_quantity[@i] > $@opotsleft){
if($@opotsleft > 0){
set @bought_quantity[@i], $@opotsleft;
} else {
mes "We are out of orange potions!";
close;
}
}
if(Zeny >= 200*@bought_quantity[@i]){
set Zeny, Zeny - 200*@bought_quantity[@i];
getitem 502, @bought_quantity[@i];
set $@opotsleft, $@opotsleft - @bought_quantity[@i];
} else {
mes "You have insufficient cash.";
close;
}
}
}
deletearray @bought_quantity, getarraysize(@bought_quantity);
deletearray @bought_nameid, getarraysize(@bought_nameid);
mes "Trade done.";
close;

OnInit:
npcshopitem "dyn_shop1", 501,40,502,200;
set $@rpotsleft, 10;
set $@opotsleft, 10;
end;
}

Автор: ll Daggerfall ll: Дата: 02.22.2011

Добрый день. Есть вопрос:
я хочу сделать предмету такое свойство, чтобы он давал разные бонусы разным профессиям. Можете ли вы разжевать мне как это делать и показать на примере? Заранее спасибо. Поправка: не бо первым джобам что бы делилась (маг-класс и т.д.) а по адвансам (Профессор, ЛК) и недопрофам (Ниндзя, Линкер, Ганс, Суперновис, СГ и Тейквон)

Автор: MadJackII: Дата: 02.22.2011

Вот была темка, изучи её там и вопросы, и примеры есть.
http://rus-ea.ru/showthread.php?t=3207&highlight=%E1%EE%ED%F3%F1

Автор: ll Daggerfall ll: Дата: 02.22.2011

Цитата Toli4ok;34051:
и што в етом скрипте надо изминить штоби нпц продавало за тцг? и в кокой строке добавлять придмети?


Попробуй лучше сделать нпц с использованием:
if(countitem(tcg)<how_many_tcg) goto L_no_tcg;
next;
delitem tcg,how_many_tcg;
getitem what_you_buy,how_many_you_buy;




Поясню:
tcg - то, за что покупаешь, в данном случае тцг
if(countitem(tcg)<how_many_tcg) goto L_no_tcg; - проверка на наличие требуемого кол-ва тцг
getitem what_you_buy - получение того, что ты покупаешь
how_many_you_buy - сколько ты покупаешь

Автор: Fast death: Дата: 04.11.2011

Как переделать нпц под кафра поинты?
prontera.gat,158,179,3 cashshop Cash shop 90,7227:200

Автор: [OneLife]: Дата: 04.11.2011

Цитата Fast death;38430:
Как переделать нпц под кафра поинты?
prontera.gat,158,179,3 cashshop Cash shop 90,7227:200

а что именно не работает то?

Автор: Fast death: Дата: 04.11.2011

Этот скрипт работает.
Нужно чтобы нпц продавал вещи не за кэш поинты, а за кафра поинты, возможно ли это?)

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

да

Автор: ruro98: Дата: 04.14.2011

В описании к команде JobChange нашел ссылку, что профы должны лежать в db/const.txt

Захожу в тот файл и вижу загадочную профу: Job_Xmas под номером 26
Если я не ошибаюсь, то Xmas-это рождество... :huh: Интересно, что за профа, и вообще можно-ли мне подробно "Перевести каждую строку"?
:(:)

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

ничего она не загадочная.

Автор: ruro98: Дата: 04.14.2011

И всё-же разъясните мне про нее и другие профы.
Например в чём разница между Paladin и Paladin2.
И Lord_Knight и Lord_Knight2; И кто такие:

Job_Gangsi 4050
Job_Death_Knight 4051
Job_Dark_Collector 4052

Job_Rune_Knight 4054
Job_Warlock 4055
Job_Ranger 4056
Job_Arch_Bishop 4057
Job_Mechanic 4058
Job_Guillotine_Cross 4059

Job_Rune_Knight_T 4060
Job_Warlock_T 4061
Job_Ranger_T 4062
Job_Arch_Bishop_T 4063
Job_Mechanic_T 4064
Job_Guillotine_Cross_T 4065

Job_Royal_Guard 4066
Job_Sorcerer 4067
Job_Minstrel 4068
Job_Wanderer 4069
Job_Sura 4070
Job_Genetic 4071
Job_Shadow_Chaser 4072

Job_Royal_Guard_T 4073
Job_Sorcerer_T 4074
Job_Minstrel_T 4075
Job_Wanderer_T 4076
Job_Sura_T 4077
Job_Genetic_T 4078
Job_Shadow_Chaser_T 4079

Job_Rune_Knight2 4080
Job_Rune_Knight_T2 4081
Job_Royal_Guard2 4082
Job_Royal_Guard_T2 4083
Job_Ranger2 4084
Job_Ranger_T2 4085
Job_Mechanic2 4086
Job_Mechanic_T2 4087

И т.д.

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

3и профы

Автор: ruro98: Дата: 04.14.2011

А можно поподробнее(к примеру Xmas-3я профа ...;Sorcerer-3я профа ...)
Очень прошу перевести весь лист проф.
Просто как-то трудно пытаться писать скрипт по переходу на профы, не зная, даже чьи они...:(

Автор: Cole McCormick: Дата: 04.14.2011

Цитата ruro98;38679:
В описании к команде JobChange нашел ссылку, что профы должны лежать в db/const.txt

Захожу в тот файл и вижу загадочную профу: Job_Xmas под номером 26
Если я не ошибаюсь, то Xmas-это рождество... :huh: Интересно, что за профа, и вообще можно-ли мне подробно "Перевести каждую строку"?
:(:)

Енто дедушка мороз )

Автор: ruro98: Дата: 04.14.2011

Профа 0_о.........
ЧЁ! А можно где-то ссылочку на её описание(Скилы и после кого она идет)
:o:o:o:o:o:o:o:o:o

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

нет там скилов. тебя кидает в него когда одеваеш костюм санты.

бля, сколько ещё нубов будут делать сервера...

нет, ну круто конечно что он решил разобратся и вопрос риторический...

короче.. надо накатить, я пошол.

Автор: ruro98: Дата: 04.14.2011

Цитата ruro98;38683:

Очень прошу перевести весь лист проф.
Просто как-то трудно пытаться писать скрипт по переходу на профы, не зная, даже чьи они...:(
:mellow:

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

Цифра 2 означает маунт
Буква T означает, что переход на третью профу был осуществлен со второй адванс-профы.
Gangsi, Death_Knight, Dark_Collector не введены

Автор: ruro98: Дата: 04.14.2011

Цитата Jarek;38689:
Цифра 2 означает маунт.

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

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

http://irowiki.org/wiki/Classes
Маунт - персонаж верхом на животном (пеко, грандпеко, варг в зависимости от класса)
Где это E на конце?

Автор: ruro98: Дата: 04.14.2011

Job_Super_Novice_E 4190
Job_Super_Baby_E 4191
Спасибо тебе :baby: , и кстати на счет

Цитата Renegade;38686:
бля, сколько ещё нубов будут делать сервера...

Извини но ВСЕ люди начинают с нубов, учатся узнают то, чё не знали...
И становятся нормальными людьми<_<<_<<_<

Автор: Kill Spirit: Дата: 04.14.2011

Цитата ruro98;38695:
Извини но ВСЕ люди начинают с нубов, учатся узнают то, чё не знали...
И становятся нормальными людьми<_<<_<<_<


Сначало стоит выучить английский язык, доки, поискать в поиске, в гугле, в яндексе. И потом что-то узнавать на форуме, создавая темы или постя глупые сообщения.
Только тогда ты будешь нормальным человеком.

Советую пройти [Русский язык 3 класс, запятые перед "но"] и пойти поиграть на оффе, узнать, что такое рагнарёк.

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

Цитата ruro98;38695:
Job_Super_Novice_E 4190
Job_Super_Baby_E 4191


А вспомнил.
A supernovice that reaches base and job level 99 can now expand their max level.

Это супер новисы с увеличенным макс уровнем и новыми скиллами.

Автор: Cole McCormick: Дата: 04.14.2011

Цитата Kill Spirit;38696:
Сначало стоит выучить английский язык, доки, поискать в поиске, в гугле, в яндексе. И потом что-то узнавать на форуме, создавая темы или постя глупые сообщения.
Только тогда ты будешь нормальным человеком.

Советую пройти [Русский язык 3 класс, запятые перед "но"] и пойти поиграть на оффе, узнать, что такое рагнарёк.


Типа умный да? Так чтож ты сам, языки не учишь? Когда научишься юзать поиск? И хватит уже херню всякую писать, челапук ^_^.

ruro98 дело говорит, как можно чемуто научиться, если тебя носом тыкать не будут? На провах Котэ ©. Елиб мне друг, нерассказал про существование эмулятора, много лет назад, яб уже забил на ро и рус-еа не существовала бы.

Автор: Kill Spirit: Дата: 04.14.2011

Цитата Naota;38700:
Типа умный да? Так чтож ты сам, языки не учишь? Когда научишься юзать поиск? И хватит уже херню всякую писать, челапук ^_^.

ruro98 дело говорит, как можно чемуто научиться, если тебя носом тыкать не будут? На провах Котэ ©. Елиб мне друг, нерассказал про существование эмулятора, много лет назад, яб уже забил на ро и рус-еа не существовала бы.


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

Автор: Cole McCormick: Дата: 04.14.2011

Цитата Kill Spirit;38701:
Я знаю английский на троечку, а ещё я пользуюсь переводчиками.
Я уже много месяцев темы с вопросами не создаю, ололо.
И вопросов по эмулю я не задаю, а пишу лишь то, что думаю.


Ты пишешь недумая. Несоздаешь потомучто усвоил. На троечку? Я на троечку, немецкий знаю =) С английским порядок, уроки не прогуливал. Русский прогуливал, каюсь;) И то щас одной левой пишу.

Автор: Kill Spirit: Дата: 04.14.2011

Цитата Naota;38703:
Ты пишешь недумая. Несоздаешь потомучто усвоил. На троечку? Я на троечку, немецкий знаю =) С английским порядок, уроки не прогуливал. Русский прогуливал, каюсь;) И то щас одной левой пишу.


Я на уроках английского списывал и нехуя не слушал преподов. Немецкий незнаю вообще. Пишу может и не думая, но надо же, как-то нубов на место поставить? Вообще оборзели уже.

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

на самом деле правила на форуме давно ен соблюдаются нихуя. посмотрите на www.eathena.ws где если задашь вопрос ответ на который уже был будешь обложен хуями и забанен.

И именно поэтому там можно чтото найти.

А этот форум понемногу превращается в свалку с темами типа ПАМАГИТЕ ОЛОЛООО АААААА ПАМАГИТЕЕ!!! и никого это ниипёт помоему.

Именно тот факт что это ненормально а администрации срать породило сдесь троллизм.

Автор: Kill Spirit: Дата: 04.14.2011

Я бы тоже соблюдал правила, если бы тут на это не было наплевать и были бы баны за темы, которые в поиске.

Да поэтому на еа.вс столько людей, потому что там нету срача и тем, аля "ПОМОГИТЕ АААААААААА ОЛОЛОЛО ТРОЛОЛО"

Автор: Cole McCormick: Дата: 04.14.2011

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

Автор: Kill Spirit: Дата: 04.14.2011

Я так и не понял, нахуя тогда нужен раздел "Тесторый форум"?

Автор: Cole McCormick: Дата: 04.14.2011

Цитата Kill Spirit;38710:
Я так и не понял, нахуя тогда нужен раздел "Тесторый форум"?

Я его чтоль придумал? Найди куратора, и заставь обьясниться.