[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Написание Скриптов.
S1rДата: Суббота, 31.03.2007, 16:28 | Сообщение # 1
Bloody Butterfly
Группа: Проверенные
Сообщений: 94
Статус: Offline
Гайд написан лично мной!!!так что не спи*дел, не переживайте!

1. Введение
Скрипт - это текстовый файл, содержащий в себе информацию, которую обрабатывает сервер.
Для подключения скрипта к серверу необходимо в конфигурационный файл map_athena.conf добавить строку следующего вида:

npc: myscript.txt

где myscript.txt - название вашего скрипта.
2. Создание скриптов
Рассмотрим подробно небольшой скрипт, который создает NPC.

new_1-1.gat,66,114,4 script NPCName 85,{ //создаем NPC на карте new_1-1.gat. 66,114 - координаты местонахождения NPC (x,y) (узнать название карты и координаты местонахождения вашего персонажа можно с помощью команды /where). 4 - ID стороны, в которую будет смотреть NPC (1, 2, 3, 4, 5, 6, 7, 8). NPCName - имя NPC. 85 - ID спрайта. Также можно задать дополнительные опции, например new_1-1.gat,66,114,4 script NPCName 85,0,5,{ (85 - ID спрайта, 0 - NPC невидимый, 5 - скрипт будет срабатывать, если персонаж будет находиться в радиусе 5 клеток от NPC).
if (Class == 0) goto gonovice; //логическая конструкция (происходит проверка профессии персонажа (0 - ID профессии)). Также существует возможность проверить уровень профессии (if (JobLevel == 10)), очки скиллов (if (skillpoint == 5)), базовый уровень (if (basejob == Job_Swordman)), количество зени (if (Zeny == 1500)).
mes "Добрый день!"; //сообщение, которое скажет NPC.
next; //продолжение диалога (кнопка next).
menu "Привет!",gohello,"До свидания",goquit; //вывод меню с вариантами ответа (например в случае выбора ответа 'Привет!' срабатывает метка gohello.
gohello: //метка
waitingroom "[Не беспокоить!]",0; //NPC создает 'комнату ожидания' - своеобразный чат.
set number,rand(9); //присваивание переменной number случайного значения от 1 до 9.
mes "^0000FF10Здравствуйте!^000000 Сегодня я видел "+number+" путешественников!"; //^0000FF10Здравствуйте!^000000 - задать цвет текста (0000FF10 - ID цвета в шестнадцатиричном формате, ^000000 - окончание выделения).
next;
mes "Вы слышали свежие новости "+strcharinfo(0)+"?"; //strcharinfo(0) - данная функция возвращает имя персонажа.
next;
mes "В окрестностях города появились опасные монстры!";
if(countitem(909)<5) goto gerror; //логическая конструкция (если у персонажа в инвентаре предметов с ID 909 (Jellopy) меньше 5 штук, то срабатывает метка gerror. Если предметов с ID 909 пять или более, тогда продолжают выполняться следующие команды.
delitem 909,5; //удаление из инвентаря персонажа 5 предметов с ID 909.
getitem 1101,1; //дать персонажу 1 предмет с ID 1101.
jobchange 1; //изменить профессию персонажа (1 - ID профессии).
mes "Возьмите этот замечательный меч! С помощью его силы вы сможете защититься от монстров!";
next;
mes "Еще я дам вам денег. Сколько вы хотите получить зени?";
next;
input $dolg; //окно для ввода данных игроком. Значение, которое введет игрок, будет присвоено переменной $dolg.
set Zeny,Zeny+$dolg; //добавить персонажу зени [значение $dolg] (соответственно set Zeny,Zeny-$dolg; - забрать у персонажа зени [значение $dolg]).
monster "new_1-1.gat",100,100,"Ужасный монстр",1272,1; //создание монстра на карте new_1-1.gat (координаты 100,100).'Ужасный монстр' - имя монстра. 1272 - ID монстра. 1 - количество.
mes "Удачи!";
close;
gonovice:
set novice,1; //присваивание переменной novice значения 1 (данный прием можно использовать для проверки выполнения заданий и т.п.).
mes "Приветствую! Новичок! Будь осторожен!";
savepoint "prontera.gat",116,72; //точка сохранения персонажа (на карте prontera.gat, координаты 116,72.
resetstatus; //сброс всех параметров персонажа.
resetskill; //сброс всех скиллов персонажа.
skill 142,1,0; //добавить персонажу скилл (142 - ID скилла [ID скиллов можно посмотреть в файле db/skill_db.txt]).
heal 1000,0; //восстановить персонажу 1000 HP.
emotion 29; //эмоции NPC (29 - ID эмоции).
next;
warp "payon.gat",90,30; //телепортация персонажа на карту payon.gat в место с координатами 90,30.
end; //завершение всех операций.
gerror:
cutin "prt_soldier",2; //показать в левом углу изображение солдата г.Prontera.
mes "До встречи!";
close;
cutin "prt_soldier",255; //убрать изображение солдата г.Prontera.
goquit:
mapannounce "new_1-1.gat","Счастливого пути "+strcharinfo(0)+"!",0; //объявление на всю карту new_1-1.gat.
mes ":)";
close;
}
prontera.gat,157,187,4 duplicate(NPCName) NewNPC 92 //создать копию NPC на карте prontera.gat (координаты 157,187, 4- ID стороны, NewNPC - имя NPC, 92 - ID спрайта.
//ID профессий:
ПрофессияIDNovice 0 Swordman 1 Magician 2 Archer 3 Acolyte 4 Merchant 5 Thief 6 Knight 7 Priest 8 Wizard 9 Blacksmith 10 Hunter 11 Assassin 12 Knight[Peco Peco]13 Crusader 14 Monk 15 Sage 16 Rogue 17 Alchemist 18 Bard 19 Dancer 20 Crusader 221 SuperNovice 23 TaeKwon Boy 24 Gunslinger 28 Ninja 29 Novice High 4001 Swordman High 4002 Mage High 4003 Archer High 4004 Acolyte High 4005 Merchant High 4006 Thief High 4007 Lord Knight 4008 High Priest 4009 High Wizard 4010 Whitesmith 4011 Sniper 4012 Assassin Cross 4013 Lord Knight[Peco Peco]4014 Paladin 4015 Champion 4016 Professor 4017 Stalker 4018 Creator 4019 Clown 4020 Gypsy 4021 Paladin 24022 Baby 4023 Baby Swordman 4024 Baby Magician 4025 Baby Archer 4026 Baby Acolyte 4027 Baby Merchant 4028 Baby Thief 4029 Baby Knight 4030 Baby Priest 4031 Baby Wizard 4032 Baby Blacksmith 4033 Baby Hunter 4034 Baby Assassin 4035 Baby Knight[Peco Peco] 4036 Baby Crusader 4037 Baby Monk 4038 Baby Sage 4039 Baby Rogue 4040 Baby Alchemist 4041 Baby Bard 4042 Baby Dancer 4043 Super Baby 4045 TaeKwon Boy 4046 Star Gladiator 4047 Soul Linker 4049

3. Использование функций
Очень удобно использовать в скриптах функции, если одинаковые действия выполняют различные NPC.
Описание функции:

function script kfuncz {
mes "Сейчас у вас появится "+getarg(0)+" предмет с ID "+getarg(1)+"!";
next;
getitem getarg(1),getarg(0);
close;
end;
return; //возвращение значений переменных.
}

Вызов функции:

new_1-1.gat,66,114,4 script NPCName 85,{
callfunc "kfuncz",1,1716; //вызов функции (передача значений: 1 - getarg(0), 1716 - getarg(1)).
}


Вся жизнь игра а играть Пи*дато)
http://89.179.243.232/
ftp://89.179.243.232/UPLOAD/96081960rn3.gif


Сообщение отредактировал XIII - Суббота, 31.03.2007, 23:32
 
SANOДата: Суббота, 31.03.2007, 19:38 | Сообщение # 2
Poring
Группа: Пользователи
Сообщений: 14
Статус: Offline
Респект!

Люблю ЛЮБИТЬ
[img]http://forum.zaural.ru/index.php?action=dlattach;topic=2036.0;attach=1876;image[/img]
 
S1rДата: Суббота, 31.03.2007, 20:11 | Сообщение # 3
Bloody Butterfly
Группа: Проверенные
Сообщений: 94
Статус: Offline
2 XIII, Прекрипи тему

Вся жизнь игра а играть Пи*дато)
http://89.179.243.232/
ftp://89.179.243.232/UPLOAD/96081960rn3.gif
 
mrigashiraДата: Воскресенье, 28.10.2007, 11:55 | Сообщение # 4
Poring
Группа: Пользователи
Сообщений: 4
Статус: Offline
а если к примеру я хочу например нпц которое бы писало сообщение на весь мир
Премерно так?
Code
    input $dolg;
  set .@broadcast $dolg;
 
KorsarДата: Четверг, 29.11.2007, 13:53 | Сообщение # 5
...
Группа: Администраторы
Сообщений: 61
Статус: Offline
C1R, не украл говоришь гайд, типа говоришь сам написал...
А вот это что такое?
http://www.eathena.ws/board/ae--t145487.html
??????


Я не РоСкриптер
Я только учусь).....

P.S. Буду рад если научите разбираться в ГРФ архивах)

 
S1rДата: Вторник, 18.12.2007, 19:23 | Сообщение # 6
Bloody Butterfly
Группа: Проверенные
Сообщений: 94
Статус: Offline
Ахахахаха напиши ему в приват:) и там тебе откроеться НОВОСТЬ:)Отвечу тоже я:) Имхо ник S1r, забанен за оскорбление Администрации (Lupus).

Вся жизнь игра а играть Пи*дато)
http://89.179.243.232/
ftp://89.179.243.232/UPLOAD/96081960rn3.gif
 
KorsarДата: Пятница, 21.12.2007, 08:32 | Сообщение # 7
...
Группа: Администраторы
Сообщений: 61
Статус: Offline
=)))))))))

Я не РоСкриптер
Я только учусь).....

P.S. Буду рад если научите разбираться в ГРФ архивах)

 
KorsarДата: Пятница, 21.12.2007, 08:37 | Сообщение # 8
...
Группа: Администраторы
Сообщений: 61
Статус: Offline
Да, кстати, S1r, чот я нимагу заригиться на eathena.ws=((( Ответное письмо не приходит, можешь чо нить посоветовать?

Я не РоСкриптер
Я только учусь).....

P.S. Буду рад если научите разбираться в ГРФ архивах)

 
KuzaДата: Воскресенье, 23.12.2007, 23:33 | Сообщение # 9
Poring
Группа: Проверенные
Сообщений: 3
Статус: Offline
хммм зарегся на mail.google.com там сразу у тя письмо придет
 
KorsarДата: Понедельник, 24.12.2007, 12:04 | Сообщение # 10
...
Группа: Администраторы
Сообщений: 61
Статус: Offline
спасибо, щас попробую...

Я не РоСкриптер
Я только учусь).....

P.S. Буду рад если научите разбираться в ГРФ архивах)

 
SanasolДата: Четверг, 26.06.2008, 04:26 | Сообщение # 11
Poring
Группа: Проверенные
Сообщений: 3
Статус: Offline
Могу дать пример как скрипт сделать магаз cool
Прикрепления: 1488959.jpg (170.0 Kb)
 
  • Страница 1 из 1
  • 1
Поиск: