Joomla Template Membership Club

Голосуй

  • Голосовать
  • Статистика

     
    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Создание скриптов
    WOlFДата: Понедельник, 16.03.2009, 06:29 | Сообщение # 1
    Анубис
    Группа: Администраторы
    Сообщений: 136
    Репутация: 1
    Статус: Offline
    biggrin

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

    Рассмотрим подробно небольшой скрипт, который создает NPC.
    new_1-1.gat,66,114,4|TAB|script|TAB|NPCName|TAB|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).

    |TAB|if (Class == 0) goto gonovice; //логическая конструкция (происходит проверка профессии персонажа (0 - ID профессии)). Также существует возможность проверить уровень профессии (if (JobLevel == 10)), очки скиллов (if (skillpoint == 5)), базовый уровень (if (basejob == Job_Swordman)), количество зени (if (Zeny == 1500)).

    |TAB|mes "Добрый день!"; //сообщение, которое скажет NPC.

    |TAB|next; //продолжение диалога (кнопка next).

    |TAB|menu "Привет!",gohello,"До свидания",goquit; //вывод меню с вариантами ответа (например в случае выбора ответа 'Привет!' срабатывает метка gohello.

    gohello: //метка

    |TAB|waitingroom "[Не беспокоить!]",0; //NPC создает 'комнату ожидания' - своеобразный чат.

    |TAB|set number,rand(9); //присваивание переменной number случайного значения от 1 до 9.

    mes "^0000FF10Здравствуйте!^000000 Сегодня я видел "+number+" путешественников!"; //^0000FF10Здравствуйте!^000000 - задать цвет текста (0000FF10 - ID цвета в шестнадцатиричном формате, ^000000 - окончание выделения).

    |TAB|next;

    |TAB|mes "Вы слышали свежие новости "+strcharinfo(0)+"?"; //strcharinfo(0) - данная функция возвращает имя персонажа.

    |TAB|next;

    |TAB|mes "В окрестностях города появились опасные монстры!";

    |TAB|if(countitem(909)<5) goto gerror; //логическая конструкция (если у персонажа в инвентаре предметов с ID 909 (Jellopy) меньше 5 штук, то срабатывает метка gerror. Если предметов с ID 909 пять или более, тогда продолжают выполняться следующие команды.

    |TAB|delitem 909,5; //удаление из инвентаря персонажа 5 предметов с ID 909.

    |TAB|getitem 1101,1; //дать персонажу 1 предмет с ID 1101.

    |TAB|jobchange 1; //изменить профессию персонажа (1 - ID профессии).

    |TAB|mes "Возьмите этот замечательный меч! С помощью его силы вы сможете защититься от монстров!";

    |TAB|next;

    |TAB|mes "Еще я дам вам денег. Сколько вы хотите получить зени?";

    |TAB|next;

    |TAB|input $dolg; //окно для ввода данных игроком. Значение, которое введет игрок, будет присвоено переменной $dolg.

    |TAB|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 профессий:

    Айдишники думаю не нужно перечислять...

    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)).
    }

    Везде не стал писать что нужно ставить |TAB|

    Начнем разжовывать это простой скрипт.
    prontera.gat,152,183,5 - Название локации(2 следующих числа это координаты Нпц, а 3 число это куда будет смотреть нпц)
    далее ставиться TAB(тобиш Табуляция)scrip(это пишеться всегда)TABназвание скриптаTABномерНпц(тоесть каки вид он у вас будет имеють,для этого юзайте item_list)
    mes - команда с помошью которого Нпц разговаривает с персонажем
    if (Zeny<20000) goto m_noz; Нпц перекинет вас к определенному меню если у вас мало денег в данном случае наше меню называеться m_noz (незабывайте после каждой команды ставить ";")также эту команду можно применить не только к зеням но и клюбой вещи - напрмиер if(countitem(999)<40 это определенная вешь если их менее 40 то опятьже идете к определенному меню.
    set Zeny,zeny-20000-это снятие с персонажа 20000к(можно поставить больше.
    percentheal 100,100 - это значит что ващ хилер будет востонавливать Хп и Сп полностью.
    sc_start sc_blessing,420000,10; - это команда на опкастовку.тут указываеться лв скила и всяка белебирда.
    emotion 30,0 - думаю всем понятно? ну если нет, то пишу, это Нпц будет юзать эту эмоцию в определенном меню.. в данном случае при касте.
    skilleffect 29,0; - эффект скила тоесть ставиться номер скила а там все уже взаимосвязано...(номера эффектов лежат в папке doc) .
    close; закрытие данного меню:)
    end; конец скрипта ( также не забываем ставить { и так } Это значит начало скрипта и конеч скрипта.

     
    • Страница 1 из 1
    • 1
    Поиск:

    Опрос

    Оцените мой сайт
    Всего ответов: 108

    Авторизация

    Суббота
    05.07.2025
    21:22

    Адаптация EvilDM,Сайт WOlF ©