Поиск по сайту

Результаты поиска по тегам 'script'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций




Фильтр по количеству...

Найдено 8 результатов

  1. NPC

    Всем яркого дня и ветер в паруса. Есть кто занимается написанием, редактированием, настройкой NPC за вознаграждение? В ЛС
  2. Present System

    Приветики. Это не полная версия. Полную версию можно купить у меня за $3 Решил сделать систему подарков с промо кодами. (ТОЛЬКО ДЛЯ rAthena) Саму часть с подарком еще не полностью написал, пока что в нпц есть две возможности: 1) Проверить свой код 2) Использовать его. Немного объясню. У нас есть отдельная таблица, которая содержит поля: code - сам код nameid - charid к которому прикреплен код.(пока не важен) itemid - id предмета выдаваемого за код amount - кол-во предметов. classid - id класса для смены (смена профессии) stpoint - stat point (кол-во) skpoint - skill point (кол-во) blvl - базовый уровень (кол-во) jlvl - джоб уровень (кол-во) cash - кэш поинты (кол-во) zeny - зени (кол-во) Пока что код вносится в базу вручную, думаю над генерацией через нпц. Можно ввести сразу все, а можно что-то одно. Нпц генерирует менюшку в зависимости от того, есть ли в данном поле какое-то значение. Т.е. если classid > 0 значит появится меню на выбор класса. если classid > 0 & blvl > 0 появится меню на выбор сменить класс или уровень. Все сразу сменить нельзя, только по одному. Например, ввели код в нпца, вам выбило 3 пункта сменить класс, получить предмет, получить лвл. Сначала вы, например, выбираете сменить класс. Меняете, нпц апдейтит таблицу и делает поле classid = 0. Меню смены класса пропадает. Далее вводите код снова, и можете выбрать то что осталось. В общем, думаю внятно объяснил. Теперь по коду. Все происходит через функции. Например, сменить класс: ChangeJ ( [email protected] ); где [email protected] ID класса(професси) для смены (вытаскивается из базы) Дальше, по настройкам нпца. [email protected] = 10; - длинна кода. Т.е. код должен быть ровно 10 цифр(букв) .LevelCap = 175; // Максимальный уровень на сервере .JobCap = 60; // Максимальный джоб на сервере .MaxZeny = 1000000000; // Максимальное кол-во зени, которое можно носить с собой .Mode = 3; // Мод, для менюшки // Если поставить 1, можно будет только проверить код // Если поставить 3, можно будет проверить и использовать код // Если поставить 7, можно будет проверить, использовать код и подарить подарок (подарок в процессе, пока еще не сделал) UPD. Теперь поддерживает 2 языка(EN/RU) Чтобы изменить язык, достаточно изменить переменную .Lang$ RU - русский EN - английский Добавил функцию добавления кода через нпца. В общем, объяснил что мог. Если будут вопросы - задавайте. http://rghost.ru/7psVjYXDm << скачать
  3. [script][src][custom] Квас — один глоток сделает вас монстром Встречал на ЛюмиРо, очень понравилась идея. Описание Отличный мод для внесения кое-какого разнообразия в игру — из мобов выпадает особый предмет, который позволяет игроку принимать облик этого моба. Работает до перезахода в игру. Можно создавать интересные ивенты и квесты. Необходимо скачать PHP-скрипт для конвертации: conv_mobtosql.php (2.00) (после сохранения удалите расширение файла .txt) eA-скрипт для выпадения предметов: drop_kvass.txt Установка Правим только один файл src/map/pc.c, находим: sd->itemindex = n; Добавляем после: /* NeoTemple Extra - Kvass */ if( sd->status.inventory[n].card[0] == 254 || sd->status.inventory[n].card[0] == 255 ) { pc_setglobalreg(sd, "useditemsign", ((sd->status.inventory[n].card[3]<<16)+sd->status.inventory[n].card[2]) ); } /* end of NeoTemple Extra */ Готово, теперь нам нужно немного изменить базу предметов, открываем db/re/item_db.txt находим строку: 12233,Kvass,Kvass,0,20,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 100,100; },{},{} И заменяем её на: 12233,Kvass,Kvass,0,200,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ disguise useditemsign-140000; },{},{} (настройки веса и стоимости продажи можете сами поменять на нужные вам) Шаманим с базой монстров Теперь нам понадобится скаченный ранее файлик .php, запускать его нужно на сервере, но для начала необходимо сделать настройки. В самом файле есть такие строчки: // Измените эти данные в соответствие с вашими настройками сервера MySQL $mysql_host = "localhost"; $mysql_name = "ragnarok"; $mysql_pass = "ragnarok"; $mysql_db = "ragnarok"; $chardb_start_id = 140000; // С какого ID будет стартовать список мобов $mob_account_id = 1999999; // ID аккаунта, которое выставляется для мобов Основные настройки — это данные для подключения к базе MySQL, внестите необходимые изменения в переменные: $mysql_host — сервер для подлючения к MySQL $mysql_name — имя пользователя MySQL $mysql_pass — пароль $mysql_db — название базы данных Следующие две переменных можно не изменять, но всё равно расскажу о них: $chardb_start_id — каждый персонаж имеет уникальный ID, чтобы подпись к предмету работала, нам нужно создать псевдо-персонажей с именами монстров, с данного ID они будут начинаться (если не знаете, что это, то настоятельно рекомендую ничего не менять) $mob_account_id — у персонажей должен быть уникальный аккаунт, это идентификатор (тоже самое предупреждение, что и в предыдущем пункте) Так же необходимо поместить вместе с файлом и файл базы монстров — mob_db.txt. Если создание пройдёт успешно, то мы увидим на экране заветное: All Done Остаётся только подгрузить скрипт выпадения предметов: - script kvassDrop -1,{ OnNPCKillEvent: if (rand(10000) <= 40) { set [email protected], killedrid+140000; getitem2 12233,1,1,4,0,254,0,[email protected]&0xffff,([email protected]>>16)&0xffff; } end; } И всё будет готово, в скрипте выставлен шанс выпадения предмета 0.40 (<= 40), вы можете поменять его на любое удобное для вас. Как это работает Небольшой сорц-мод создаёт глобальную переменную персонажа: useditemsign — это сделано потому, что разработчики eA не сильно заботились мыслью о том, что кому-то могут понадобиться данные об используемом предмете внутри скрипта предмета. Более того, если предмет последний в инвентаре, то до вызова скрипта будут удалены его данные и даже зная его порядковый номер в инвентаре уже ничего нельзя получить. Поэтому, данная переменная сразу делает то, что нам нужно — вычисляет ID подписанного персонажа (в нашем случае — это псевдо-персонаж с ID монстра). Но данный фикс был бы неполный, если бы не скрипт выпадения предмета, который создаёт данную подпись персонажа. Впринципе, можно немного дописать скрипт и сделать, чтобы изменение сохранялось (допустим) на продолжительный срок даже после перезахода. Перспективы тут достаточно интересные.
  4. [NPC] Very Advanced Warper v2

    [NPC] Very Advanced Warper v2 Осторожнее с настройками данного варпера, так же варпер весьма «тяжёлый» — использует много переменных, есть несколько циклов, размер которых зависит от внесённых по указанному направлению целей перемещения. Описание Данный Варпер полностью универсален, позволяет создавать сложные схемы перемещения, взымать различную оплату (купоны, зени, предмет(ы)). Варпер указывает цены (перемещение может быть и бесплатным, о чём игроку будет сообщено), предлагает направления, а так же сообщает чего именно нехватает для перемещения и в каком кол-ве. Скачать Сам NPC: nt_warper.txt NPC не будет работать без вот этого: nt_extra.txt Настройка, добавление направлений Скрипт достаточно сложный, поэтому принцип работы мы обсуждать не будем (кому интересно внутри достаточно много комментариев). Давайте поговорим о создание направлений и целей для перемещения. Для начала определимся с некоторыми терминами, важный термин — Маркер направления. Всего может быть 5 направлений (запомните, это чертовски важно). Маркер направления — это символ-идентификатор (любой принимаемый символ скриптами). Текстовые значения для меню направлений задаются в скрипте: set .menu_name_waycity$[[email protected]_waycity], "В город"; set .menu_name_waycity$[[email protected]_waydun], "В подземелье"; set .menu_name_waycity$[[email protected]_wayvip], "Особые места"; set .menu_name_waycity$[[email protected]_wayvip2], "Бесплатное перемещение"; set .menu_name_waycity$[[email protected]_wayvip3], "За предметы"; Можете заменить на свои значения, это делается только в одном месте и безболезненно. В скрипте есть define для ID-направлений — их менять нельзя, это временные переменные, созданные для удобства создания целей для перемещения. Вот их список: set [email protected]_waycity, 1; // ID перемещения в город set [email protected]_waydun, 2; // ID перемещения в подземелье set [email protected]_wayvip, 3; // ID перемещения в vip set [email protected]_wayvip2, 4; // ID перемещения в vip set [email protected]_wayvip3, 5; // ID перемещения в vip Каждый NPC имеет 5 разных маркеров, которые и определяют доступные перемещения для игрока. Рассмотрим имя NPC: alberta,113,53,5 duplicate(nt_wrp) Телепортация#00000_02 124 У любого NPC есть понятие «Скрытое имя», в указанном примере оно: «00000_02» — последние «_02» всего лишь порядковый номер NPC (кстати, будет лучше, если для каждого NPC они не будут совпадать, указывать их можно не только цифрами, но и буквами), а вот первые пять символов — это и есть Маркер направления. Данный маркер определяет с каким именно списком целей нужно работать. Каждый маркер — один символ! <[email protected]_waycity><[email protected]_waydun><[email protected]_wayvip><[email protected]_wayvip2><[email protected]_wayvip3> Раз заговорили о настройках NPC, то важно будет ещё сказать, что можно указать имя NPC отображаемое в диалогах и минимальный базовый уровень для работы с NPC. // Имя NPC отображаемое в диалогах set .npc_name$, "Сервис Телепортации"; // Минимальный базовый уровень необходимые для телепортации set .wrp_min_baselvl, 18; Вы можете менять эти значения на своё усмотрение. Теперь перейдём к самому важному — создание целей для перемещения. Пример: callsub L_AddWarpPoint, [email protected]_waycity, "0:(p|1),1:(p|1)", "Alberta", "alberta", 116, 56; За добавления цели отвечает функция L_AddWarpPoint, её параметры для использования: — ID-направления ([email protected]_waycity/[email protected]_waydun/[email protected]_wayvip/[email protected]_wayvip2/[email protected]_wayvip3) — Работа со стоимостью Макера направлений — Название цели для пункта меню — Название карты (из map_index.txt) — Координата X — Координата Y Стоимость задётся очень просто: "<Маркер направления для данного ID-направления><тип стоимости>)|<стоимость>|<только для предметов - название предмета>;...<>" Тип стоимости: z — зени p — кафра купоны <id предмета> — предмет, который необходим, так же к данной записи добавляется параметр с названием, если указать '-', то имя будет браться из базы Если ничего не указывать в стоимости, то перемещение будет бесплатно! (Например: "0:()") Несколько примеров, для понимания: "0:(p|1;z|500;909|20|-)" В данном примере стоимость по Маркеру 0 составит: 1 кафра купон, 500 зени и 20 Jellopy (всё вместе, а не что-то по отдельности или что-то из перечисленного) Более сложный пример "0:(p|5;),1:(z|5000),3:(4001|1|Карта Поринга)" В этом примере видно, что можно указывать стоимость сразу для нескольких маркеров разделённых ',', но вы можете и вызывать для каждого маркера отдельно функцию — оба способа обрабатываются корректно, пример всё в одном: callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|5;),1:(z|5000),3:(4001|1|Карта Поринга)", "Муравьиный ад", "cmd_fild08", 320, 356; Но, можно и вот так: callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|5;)", "Муравьиный ад", "cmd_fild08", 320, 356; callsub L_AddWarpPoint, [email protected]_waydun, "1:(z|5000)", "Муравьиный ад", "cmd_fild08", 320, 356; callsub L_AddWarpPoint, [email protected]_waydun, "3:(4001|1|Карта Поринга)", "Муравьиный ад", "cmd_fild08", 320, 356; Что ж, думаю будет уместен хороший сложный пример, давайте сделаем перемещение в Московию из Пронтеры и телепортацию на территорию Московии из самого города, укажем разные цены и сделаем, невозможным перемещение из Пронтеры на карту с мобами Московии, а вернуться в Пронтеру будет возможно только из Московии: // Цели перемещения // В Московии можно попасть из Пронтеры, но и с mosk_fild02 (сделаем за зени) callsub L_AddWarpPoint, [email protected]_waycity, "0:(p|6),2:(z|1500)", "Moskovia", "moscovia", 223, 184; callsub L_AddWarpPoint, [email protected]_waycity, "1:(p|5)", "Prontera", "prontera", 156, 183; // Данж доступен только из московии (Маркер 1) callsub L_AddWarpPoint, [email protected]_waydun, "1:(p|2)", "Moskovia Field", "mosk_fild02", 197, 247; // Разместим NPC по местам prontera,161,193,5 duplicate(nt_wrp) Телепортация#00000_17 124 moscovia,220,191,5 duplicate(nt_wrp) Телепортация#11000_44 124 mosk_fild02,194,252,4 duplicate(nt_wrp) Телепортация#22000_43 124 Схема, телепортироваться из Пронтеры можно только в Московию за 6 купонов (зачем Варперу в Пронтере портить в Пронтеру?), из Московии в город — Пронтеру за 5 купонов или в данж ("Moskovia Field") за 2 купона, с "Moskovia Field" можно попасть в город Московию за 1500 зеней. Примечание У меня используется cutin, который не стандартный, если у вас клиент будет крешится, то удалите все строки с cutin. Если вы не понимаете зачем это нужно, то используйте стандартного Варпера, если для вас это сложно, то пишите простые скрипты. Это универсальный Варпер, если нужно помочь с созданием схем направления, то можете обращаться, попробуем решить вашу проблему вместе.
  5. Скрипты от Salfer (FanRO)

    Вашему внимаю предлагаю следующие Эвенты: 1) эвент Пати на Хате Деда Мороза >Видео< (цель продержаться в живых в течении 5 минут, Злой Санта призывает клонов, сильный но медленный, победители все, кто выживут, добавлены русские звуки) 2) эвент Прятки на Хате Деда Мороза >Видео< (цель продержаться в живых в течении 5 минут, все персонажи находятся к невидимости, Снегурочка призывает своих клонов, ставит ловушки и просвечивает невидимых(увидила-убила), победители все, кто выживут, добавлены русские звуки ) 3) эвент Минное Поле >Видео< (цель продержаться в живых в течении 5 раундов(каждый раунд длится приблизительно 3 минуты),приз выдаётся за каждый раунд, на локации появляются бомбы 3-ёх типов: неподвижные(взрыв через 2 сек) ,подвижные(взрыв через 1 сек) и очень медленные (взрыв моментальный), победители все, кто выживут, добавлены русские звуки) 4) эвент Защита Крепости >Видео< (цель удерживать крепость как можно дольше, эвент будет провален, если Хранитель умрёт или разобьют Кристалл. Победители все, кто выживут) 5) эвент Лабиринт (250x250) //в разработке (цель выбраться из лабиринта за 15 минут. Попутно будут попадаться злые монстры, сундуки с сокровищами.) 6) эвент Повелитель Стихий >Видео Вода< >Видео Земля< >Видео Огонь< >Видео Ветер< >Видео Тьма< (эвент включает в себя 5 локаций на каждой из которой вас оживает 16 волн монстров соответствующей стихии(вода/земля/ветер/огонь/тьма) около 30 минут гейм плея на каждой стихии. Цель одержать победу над всеми противниками.) Помогу в написании скриптов за $ Донаторам Скидка 10%
  6. [SCRIPT][NPC]NT Craft Api v1.02 + NPC

    [sCRIPT][NPC] NT Craft Api v1.01 + NPC Это API писалось уже больше года назад, я в него почти не вносил изменений с тех пор, так что может что-то работать не так. Я отлично понимаю, что можно сделать лучше и сейчас бы так и поступил, но интерес к данному API минимален, так что если вас устраивает - используйте, если вас что-то не устраивает, просто пропустите мимо глаз. Так же учтите, что здесь выложена информация об API, а не об NPC. Для примера добавлены и сами NPC - простенький и более сложный вариант с квестами. В Базе API всего несколько предметов, если нужно - добавляйте, я обновляю базу API по мере работы с ней. История изменений 2014.05.18: - Добавлена версия 1.02; - Обновлена информация по новой версии (добавление описания/свойства предмета). Описание API позволяет эмулировать формулы крафта и варки зелий (можно дописать и что-то другое). Основной плюс в том, что можно создавать предметы для крафта доступные только через NPC, или другим классам персонажей иметь доступ к крафту и варке без изменений сорцов. Скачать Craft API v1.02: nt_craft_api.txt (v1.02) Craft API v1.01: nt_craft_api.v1.1.txt (v1.01) Простенький NPC-варки: nt_craft_simple.txt (v1.00) NPC-алхимик с квестами: nt_craft_alchemist.txt (v2.00) Принцип работы API работает на вызовах, которые вы подаёте через стандартный callfunc, каждый вызов требует определённого кол-ва параметров, постараюсь привести все с примерами. Синтаксис: callfunc("alch_func", <номер ключа>, <префикс базы>(, <входящие переменные>)); Для начала стоит рассказать о том, что такое <префикс базы> — каждая база создаваемых предметов имеет определённый префикс, это сделано для хранения различных баз на разные случаи (база может быть и одна). Список ключей и их описание: 0 — инициализация базы, во время её вызова создаются дефолтовые переменные, синтаксис: callfunc("alch_func", 0, <префикс базы в кавычках>); Пример: callfunc("alch_func", 0, "potion"); 1 — добавления элемента в базу, здесь нельзя ошибаться и нужно быть внимательным, т.к. функция требует много переменных, синтаксис: callfunc( "alch_func", 1, <префикс базы в кавычках>, <тип визуальных эффектов>, <показывать кол-во создаваемых предметов> <id создаваемого предмета>, <кол-во создаваемых предметов>, <название в списке создаваемых предметов>, <стоимость зени>, <какую формулу учитываем>, (<id необходимого предмета для создания>, <кол-во этого предмета>,) 0, (идентификатор окончания списка необходимых предметов) "" (дополнительное описание выводимое о предмете, символ # - разделитель строк) ); Пример, добавления Red Potion за 25 зени: callfunc( "alch_func", 1, "potion", 0, [email protected]_amount, 501, 1, "", 25, 2, 507, 1, 0, "Отличный напиток#придаёт жизненных сил." ); Теперь нужно рассказать о каждом необходимом параметре: <тип визуальных эффектов>: какой набор визуальных эффектов будет использовать во время крафта предмета, всего есть три набора: 0 - эффекты создания напитков 1 - обычные надписи Success и Failed 2 - эффекты псоздания оружия <показывать кол-во создаваемых напитков>: всё просто, показывать или нет в списке сколько будет создано предметов, 0 - показывать или 1 - скрывать, для удобства сделаны переменные [email protected]_amount и [email protected]_amount. <id создаваемого предмета>: id предмета, который будет создан из списка в item_db.txt, можно указывать любой предмет. <кол-во создаваемых предметов>: какое кол-во будет создано (формула вычисляет только один раз). <название в списке создаваемых предметов>: название предмета, оно будет выводиться только в списке, после создания предмет получит обычное название, если указать пустые кавычки, то имя возьмётся из базы. <стоимость зени>: если указать 0, то требование не будет учитываться. <какую формулу учитываем>: для создания в игре много формул, вот список тех, которые реализованы (вы и сами можете что-то дополнить): 0 - всегда 100% шанс успеха 1 - базовая формула создания напитков (см калькуляторы варки) 2 - формула создания red/yellow/white potion (см калькуляторы варки) 3 - формула создания алкоголя (см калькуляторы варки) 4 - формула создания Bottle Grenade(Fire Bottle)/Acid Bottle/Plant Bottle/Marine Sphere Bottle (см калькуляторы варки) 5 - формула создания Condensed Yellow Potion (см калькуляторы варки) 6 - формула создания Condensed White Potion/Glistening Coat (см калькуляторы варки) 7 - всегда 100% шанс, используется для элементальных свитков 8 - формула крафта Железа (см калькуляторы крафта) 9 - формула крафта Стали (см калькуляторы крафта) 10 - формула крафта Элементальных камней (см калькуляторы крафта) 11 - формула крафта оружия (см калькуляторы крафта) <id необходимого предмета для создания>: id предмета необходимого для производства <кол-во этого предмета>: какое кол-во указанного предмета нужно для производства Эти две строки вы можете повторять много раз (указывая список необходимых предметов для производства). 0 - в конце списка обязателен. Запоминайте порядок добавленных предметов, т.к. это необходимо для будущего построения списка. Отсчёт ведётся от 1. 2 — отрисовка меню выбора предмета для крафта, синтаксис: callfunc("alch_func", 2, <префикс базы в кавычках>, <текст сообщения об отмене>, <array предметов>); Пример: setarray [email protected]_array[0],1,2,3,4; set [email protected], callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", [email protected]_array); mes "Вы выбрали элемент: "[email protected]; close; Возвращает 0, если был выбрал пункт отмены действия или id из списка, в примере переменную из [email protected]_array. 3 — возвращает название выбранного элемента, синтаксис: callfunc("alch_func", 3, <префикс базы в кавычках>, <id выбранного элемента>); Пример: setarray [email protected]_array[0],1,2,3,4; set [email protected], callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", [email protected]_array); if ( [email protected] ) mes "Выбран пункт отмены."; else mes "Вы выбрали элемент: "+callfunc("alch_func", 3, "potion", [email protected]); close; 4 — возвращает id-предмета из item_db.txt выбранного элемента, синтаксис: callfunc("alch_func", 4, <префикс базы в кавычках>, <id выбранного элемента>); Пример: setarray [email protected]_array[0],1,2,3,4; set [email protected], callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", [email protected]_array); if ( [email protected] ) mes "Выбран пункт отмены."; else mes "id-предмета: "+callfunc("alch_func", 4, "potion", [email protected]); close; 5 — возвращает создаваемое кол-во выбранного элемента, синтаксис: callfunc("alch_func", 5, <префикс базы в кавычках>, <id выбранного элемента>); Пример: setarray [email protected]_array[0],1,2,3,4; set [email protected], callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", [email protected]_array); if ( [email protected] ) mes "Выбран пункт отмены."; else mes "Вы получите: "+callfunc("alch_func", 5, "potion", [email protected])+"шт"; close; 6 — выводит список необходимого для крафта выбранного элемента, синтаксис: callfunc("alch_func", 6, <префикс базы в кавычках>, <id выбранного элемента>); Пример: setarray [email protected]_array[0],1,2,3,4; set [email protected], callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", [email protected]_array); if ( [email protected] ) mes "Выбран пункт отмены."; else mes "Для создания необходимо:",callfunc("alch_func", 6, "potion", [email protected]); close; 7 — проверка на наличие всего необходимого для создания выбранного элемента, возвращает 0 - если всё необходимое есть и 1 - если чего-то нехватает, синтаксис: callfunc("alch_func", 7, <префикс базы в кавычках>, <id выбранного элемента>(, <кол-во starcramb>, <id элемента стихии>)); Пример: setarray [email protected]_array[0],1,2,3,4; set [email protected], callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", [email protected]_array); if ( [email protected] ) { mes "Выбран пункт отмены."; close; } if ( callfunc("alch_func", 7, "potion", [email protected]) ) { mes "Чего-то нехватает..."; close; } mes "Всё необходимое есть!"; close; Параметры <кол-во starcramb> и <id элемента стихии> необходимы только для крафта оружия (уровень Strong и элемент стихии). Стихии: 0 - Без стихий 1 - Лёд 2 - Земля 3 - Огонь 4 - Ветер 8 — проверка и вывод недостающего для создания выбранного элемента, синтаксис: callfunc("alch_func", 8, <префикс базы в кавычках>, <id выбранного элемента>(, <кол-во starcramb>, <id элемента стихии>)); Пример: setarray [email protected]_array[0],1,2,3,4; set [email protected], callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", [email protected]_array); if ( [email protected] ) { mes "Выбран пункт отмены."; close; } if ( callfunc("alch_func", 7, "potion", [email protected]) ) { mes "Нехватает:"; callfunc("alch_func", 8, "potion", [email protected]) close; } mes "Всё необходимое есть!"; 9 — процесс создания выбранного элемента, возвращает 0 - если создание прошло успешно, 1 - создание не удалось и 2 - если случились проблемы похожие на читорство игрока, синтаксис для варки: callfunc("alch_func", 9, <префикс базы в кавычках>, <id выбранного элемента>, <joblevel>, <int>, <dex>, <luk>, <Skill lvl Learning Potion>, <Skill lvl Pharmacy>); Синтаксис для крафта: callfunc("alch_func", 9, <префикс базы в кавычках>, <id выбранного элемента>, <joblevel>, <dex>, <luk>, <Anvil level>, <Skill lvl Iron create>, <Skill lvl Steel create>, <Skill lvl Element stone create>, <Skill lvl Smith>, <Skill lvl Weaponry>, <Skill lvl Oridecon>, <кол-во starcramb>, <id элемента стихии>); Уровни наковальни: 0 - Anvil 1 - Oridecon Anvil 2 - Golden Anvil 3 - Emperium Anvil 10 — стоимость в Zeny выбранного элемента, синтаксис: callfunc("alch_func", 10, <префикс базы в кавычках>, <id выбранного элемента>); Пример: setarray [email protected]_array[0],1,2,3,4; set [email protected], callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", [email protected]_array); if ( [email protected] ) mes "Выбран пункт отмены."; else mes "Стоимость: "+callfunc("alch_func", 10, "potion", [email protected])+" Zeny"; close; 11 — проверка на наличие описания к предмету: callfunc("alch_func", 10, <префикс базы в кавычках>, <id выбранного элемента>); 12 — вывод описания к предмету: callfunc("alch_func", 10, <префикс базы в кавычках>, <id выбранного элемента>); Примерное описание работы NPC в следующих постах.
  7. [script] Склонение числительных Описание Популярная функция склонение числительных (для тех кто пишет скрипты на русском языке). Переписана из другого языка программирования в общем ничего особенного, но очень полезно. Скачать Скачать библиотеку содержащую данный скрипт (версия 1.00.1): скачать Скрипт // Склонение числительных // getarg(0) - число // getarg(1)-getarg(3) - числительные function script nt__declOfNum { setarray [email protected][0], 2, 0, 1, 1, 1, 2; set [email protected], getarg(0); set [email protected], 1+(([email protected]%100 > 4 && [email protected]%100 < 20) ? 2 : [email protected][ ([email protected]%10 < 5) ? [email protected]%10 : 5 ]); return [email protected]+" "+ getarg([email protected]); } Пример использования Простенький пример для понимания: callfunc("nt__declOfNum", [email protected]_cash, "купон", "купона", "купонов") Небольшой пример использования: prontera,147,188,4 script Проверка скрипта 74,{ L_MainLoop: mes "[Скрипт-Тест]"; mes "Введите любое число, 0 - выход из проверки."; next; input [email protected]; if ( [email protected] ) close; mes "[Скрипт-Тест]"; mes "Вы ввели ^FF5500"+(callfunc("nt__declOfNum", [email protected], "купон", "купона", "купонов"))+"^000000"; next; goto L_MainLoop; } Подобная функция будет полезна только писателям русскоязычных скриптов.