Перейти к содержанию

b72g

Очередь
  • Постов

    27
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные b72g

  1. @loadnpc <path>

    Loads an NPC script by path.

    Example:

    @loadnpc npc/custom/jobmaster.txt

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

    @unloadnpc <npc name>

    Unloads an NPC.

    Example:

    @unloadnpc Job Master

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

    @unloadnpcfile <path>

    Unloads all NPCs in a file.

    Example:

    @unloadnpcfile npc/custom/jobmaster.txt

    Видимо я дурачок :)

    Спасибо!

  2. Привет всем, вообщем есть задумка о реализации комманды @reloadscriptname. Дело в том что обычный @reloadscript перезагружает все скрипты в афене, всех мобов, нпц и.т.д. Но очень часто нужно перезагрузить всего 1-2 скрипта, тем более если сервер уже рабочий, то перезагрузка всего очень помешает игрокам, тем более все мобы в том числе и МВП заного переродятся на картах.

    Вообщем хотел бы узнать, может кто то знает как реализовать такую комманду, которая бы перезагружала 1 скрипт ( ведь он занимает в перезагрузке долю секунды, чем все 800 и более НПЦ )

    К примеру, чтобы она перезагружала

    @reloadscriptname [ имя нпц ]

    или если это проблемотично, то.

    @reloadscriptfloder [ и путь папки, с txt для перезагрузки ]

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

    Как всегда идей много , а знаний для реализации не хватает :)

    Заранее спасибо :)

  3. >> P.S Во второй менюшке null вконце

    потому, что

    for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

    set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

    }

    <= getarraysize(.insertids);

    надо поставить < getarraysize(.insertids);

    А вставляется не то, что надо, потому что переменная .@choose используется там, где надо и там, где не надо :D Индекс массива с нужным камнем находится в переменной .@insert

    delitem .@choose + .baseid, 1;

    delitem .insertids[.@insert], 1;

    getitem2 .@choose + .baseid, 1,1,0,0,.insertids[.@insert] ,0,0,0;

    P.S. Правильно, что взял getitem2 вместо atcommand (:

    Спасибо за помощь. :)

  4. Вообщем, почему то стоуны неадекватно вставляются, выбираешь один, вставляется другой...

    Получается так..

    1 итем - 2 камень (если выбирать 1 камень)

    2- итем - 3 камень (если выбирать 1 камень)

    3 итем - 5 камень (если выбирать 1 камень)

    4 итем - 6 камень (если выбирать 1 камень)

    5 итем и слудующие - ничего

    Как это исправить?

    P.S Во второй менюшке null вконце

    prontera,151,177,5 script Wing Man 115,{

    set .baseid, 20003;

    set .countids, 105; // Количество вещей

    for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

    set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

    }

    mes "Выбери крылья";

    set .@choose, select(.@menu$);

    next;

    setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

    set .@menu$, "";

    for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

    set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

    }

    mes "Я теперь выбери стоун";

    set .@insert, select(.@menu$) - 1;

    next;

    delitem .@choose + .baseid, 1;

    delitem .@choose + .insertids, 1;

    getitem2 .@choose + .baseid, 1,1,0,0,.@choose + .insertids ,0,0,0;

    close;

    }

  5. поработай детально с каждой переменной. Как меняется на что и чего нужно получить нам. У тебя есть переменные взятые с неба, вот и не работает.

    prontera,151,177,5 script Wing Man 115,{

    set .baseid, 20000;

    set .countids, 108; // Количество вещей

    for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

    set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

    }

    mes "Выбери крылья";

    set .@choose, select(.@menu$) -1;

    next;

    setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

    set .@menu$, "";

    for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

    set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

    }

    mes "Я теперь выбери стоун";

    set .@insert, select(.@menu$) - 1;

    next;

    delitem .@choose + .baseid, 1;

    atcommand "@item2"+" "+@baseid[.@i]"+" "+1 1 0 0"+" "+@insertids[.@j]"+" "+0 0 0";

    close;

    }

    Попробовал комманду сделать, не пашет. Делал по разному. всеравно че то..

    подумай над этим

    Спасибо что помучила меня. Вообщем попарился и получилось.

    getitem2 .@choose + .baseid, 1,1,0,0,.@choose + .insertids ,0,0,0;

    :D

  6. prontera,151,177,5 script Wing Man 115,{

    set .baseid, 20000;

    set .countids, 108; // Количество вещей

    for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

    set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

    }

    mes "Выбери крылья";

    set .@choose, select(.@menu$);

    next;

    setarray .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

    set .@menu$, "";

    for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

    set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

    }

    mes "Я теперь выбери стоун";

    set .@insert, select(.@menu$) - 1;

    next;

    delitem .@choose + .baseid, 1;

    atcommand "@item2"+" "+@baseid[.@i]"+" "+1 1 0 0"+" "+@insertids[.@j]"+" "+0 0 0";

    close;

    }

    Попробовал комманду сделать, не пашет. Делал по разному. всеравно че то..

  7. atcommand "@item2"+" "+@hatid[.@j] 1 1 0 0"+" "+@stoneid[.@i]"+" "+0 0 0";

    Внимательнее надо быть.

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

    Вот попытался сделать, чтобы он выдавал за 3 стоуна, крылья со стоуном внутри, но нпц просто пропало..

    причем тут мой скрипт? у тебя другая задача, другие переменные И другая локация. Тем более что его тоже переделать нужно, хоть он и работает без переделки

    Да думал может с ним, что получиться сделать...

    Первый что делал вообще не нажимается.. Ну я там нагородил очень.

    prontera,151,177,5 script Wing Man 115,{

    set .baseid, 20000;

    set .countids, 108; // Количество вещей

    for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

    set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

    }

    set .insertids[0], 1991, 1992, 1993, 1994, 1995, 1996;

    for (set .@j, 0; .@j <= getarraysize(.insertids); set .@j, .@j + 1) {

    set .@menu$, .@menu$+getitemname(.insertids[.@j]) + ":";

    }

    mes "Выбери крылья";

    set .@choose, select(.@menu$);

    next;

    mes "Я теперь выбери стоун";

    set .@insert, select(.@menu$) - 1;

    next;

    getitem .@choose + .baseid, 1; // Получает выбранный предмет в инвентарь

    close;

    }

  8. Вот попытался сделать, чтобы он выдавал за 3 стоуна, крылья со стоуном внутри, но нпц просто пропало..

    //Настройка. При добавлении большего количества предметов, не забывать добавлять case'ы.

    setarray @hatid[0],20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011,20012,20013,20014;

    setarray @stoneid[0],1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991;

    setarray @loot01id[0],1991,2,3,4,5,6,7,8,9,10,11,12,13,14;

    setarray @loot01cnt[0],1,2,3,4,5,6,7,8,9,10,11,12,13,14;

    setarray @loot02id[0],1991,2,3,4,5,6,7,8,9,10,11,12,13,14;

    setarray @loot02cnt[0],1,2,3,4,5,6,7,8,9,10,11,12,13,14;

    setarray @loot03id[0],1991,2,3,4,5,6,7,8,9,10,11,12,13,14;

    setarray @loot03cnt[0],1,2,3,4,5,6,7,8,9,10,11,12,13,14;

    setarray @customvar$[0],"1","2","3","4","5","6","7","8","9","10","11","12","13","14";

    setarray @customvarcnt[0],1,2,3,4,5,6,7,8,9,10,11,12,13,14;

    for(set .@j,0; .@j<getarraysize(@hatid) ; set .@j,.@j+1 )

    {

    set .@menu$,.@menu$+getitemname(@hatid[.@j])+":";

    }

    for(set .@i,0; .@i<getarraysize(@stoneid) ; set .@i,.@i+1 )

    {

    set .@menu$,.@menu$+getitemname(@stoneid[.@i])+":";

    }

    mes "[Костюмер]";

    mes "Посмотри на мои шапочки!";

    mes "Они не дают бонусов, не занимают место обычной шапки, зато очень красивые!";

    switch(select(.@menu$)) {

    case 1:

    set .@j,0;

    next;

    set .@i,0;

    break;

    case 2:

    set .@j,1;

    next;

    set .@i,1;

    break;

    case 3:

    set .@j,2;

    next;

    set .@i,2;

    break;

    case 4:

    set .@j,3;

    next;

    set .@i,3;

    break;

    case 5:

    set .@j,4;

    next;

    set .@i,4;

    break;

    case 6:

    set .@j,5;

    next;

    set .@i,5;

    break;

    case 7:

    set .@j,6;

    next;

    set .@i,6;

    break;

    case 8:

    set .@j,7;

    next;

    set .@i,7;

    break;

    case 9:

    set .@j,8;

    next;

    set .@i,8;

    break;

    case 10:

    set .@j,9;

    next;

    set .@i,9;

    break;

    case 11:

    set .@j,10;

    next;

    set .@i,10;

    break;

    case 12:

    set .@j,11;

    next;

    set .@i,11;

    break;

    case 13:

    set .@j,12;

    next;

    set .@i,12;

    break;

    case 14:

    set .@j,13;

    next;

    set .@i,13;

    break;

    }

    //default: //

    //set .@j,1;

    mes "[Костюмер]";

    mes "["+getitemname(@hatid[.@j])+"]";

    mes "["+getitemname(@stoneid[.@i])+"]";

    mes "Для этой костюмной шапочки необходимо:";

    mes " "+getitemname(@loot01id[.@j])+" "+@loot01cnt[.@j]+" шт.";

    mes " "+getitemname(@loot02id[.@j])+" "+@loot02cnt[.@j]+" шт.";

    mes " "+getitemname(@loot03id[.@j])+" "+@loot03cnt[.@j]+" шт.";

    next;

    mes "[Костюмер]";

    if (select( "Я собрал все необходимое!:Хорошо, я запомнил.") != 1) {mes "Приходи, когда захочешь."; close;}

    if(countitem(@loot01id[.@j]) < @loot01cnt[.@j] || countitem(@loot02id[.@j]) < @loot02cnt[.@j] || countitem(@loot03id[.@j]) < @loot03cnt[.@j]) {

    mes "У тебя нет достаточного количества вещей, чтобы получить шапочку. Возвращайся, когда соберешь все.";

    close;

    }

    mes "[Костюмер]";

    mes "Одну секунду...";

    delitem @loot01id[.@j],@loot01cnt[.@j];

    delitem @loot02id[.@j],@loot02cnt[.@j];

    delitem @loot03id[.@j],@loot03cnt[.@j];

    atcommand "@item2"+" "+@hatid[.@j] 1 1 0 0"+" "+@stoneid[.@i]"+" "+0 0 0";

    next;

    mes "[Костюмер]";

    mes "Вуаля!";

    mes "Носи с удовольствием!";

    close;

    }

  9. atcommand "@item2"+" "+ @hatid[.@j];

    Как можно в это значение присобачить 1 1 0 1 1991 0 0 0

    чтобы в итоге было @item2 hatid 1 1 0 1 1991 0 0 0

    И как можно сделать таблицу stoneid, чтобы туда входили значения 1991,1992,1993,1994,1995,1996

    Чтобы cделать:

    @item2 hatid 1 1 0 1 stoneid 0 0 0

  10. set .baseid, 20000;

    set .countids, 108; // Количество вещей

    for (set .@i, 1; .@i <= .countids; set .@i, .@i + 1) {

    set .@menu$, .@menu$+getitemname(.baseid + .@i) + ":";

    }

    set .@choose, select(.@menu$);

    getitem .@choose + .baseid, 1; // Получает выбранный предмет в инвентарь

    Спасибо!

    В меню добавились все названия итемов!

    Только вопрос как сделать, чтобы после выбора орп.итема, появлялось меню с итемами, которые бы вставлялись в 1 итем ( как карта )

  11. 1.Вообщем у меня не большая проблема с реализацией скрипта(npc). Вообщем в задумке сделать скрипт, который может считывать определенные иды итемов(которые есть у игрока в инвентаре или на себе) и чтобы они появлялись в меню нпц, после чего игрок выбирает определенный ид ( который тоже считывается при наличии ) и в итоге если все удачно, то в первый итем вставляется второй итем (как карта)

    P.S Скрипт нужен по причине того, что карты не сортируются в слотах head, в оригинале игры 3 слота head ( голова, глаза, рот ) и карты такие как исила,ванберк и.т.д вставляются в любой слот head. В моем случае итем надевается в рот(3 слот head), И из-за того, что нельзя сделать карту, которая бы вставлялась только в рот(3 слот head) требуется реализовать нпц, который будет добавлять эти итемы в вещь.

    Я начал писать скрипт, но в связи с тем, что нужно будет добавить более 100 итемов, в которые будут вставляться любые 6 карт очень долго. Поэтому хочу чтобы профессионалы в скриптинге подсказали как вбить иды для распознания(или добавить диапазон идов от 20001 до 20108) и чтобы они появлялись в меню. После выбора опр итема, выбирался итем для вставки в первый итем(который тоже бы считывался при наличии) и после успешной проверки, выдавался первый итем со вставкой во второй.

    Вот скрипт, который начал писать: пока что добавил 1 итем и 6 вставок для него.

    Очень прошу помощи для упрощения его.

    prontera,151,177,5 script Wing Man 115,{

    mes "[Wings Man]";

    mes "Hello, I can embellish your wings!";

    mes "Please choose your wings.";

    next;

    menu "Wings Of Loyalty",loyalty,"I Don't Have a Wings",LUnfathomable;

    loyalty:

    mes "[Wings Man]";

    mes "Please choose your stone!";

    next;

    menu "Strong Wings Stone",str,"Fast Wings Stone",agi,"Clever Wings Stone",int,"Hardy Wings Stone",vit,"Accurate Wings Stone",dex,"Lucky Wings Stone",luk,"I Don't Have a Stone",LUnfathomable;

    str:

    mes "[Wings Man]";

    if(countitem(20001) < 1 || countitem(1991) < 1 || Zeny < 0) goto LNotEnough;

    delitem 20001,1;

    delitem 1991,1;

    set Zeny,Zeny-0;

    mes "Have a nice day!";

    atcommand "@item2 20001 1 1 0 0 1991 0 0 0";

    mes ". . . . .";

    mes "Enjoy being God of Rune Midgard!";

    close;

    agi:

    mes "[Wings Man]";

    if(countitem(20001) < 1 || countitem(1992) < 1 || Zeny < 0) goto LNotEnough;

    delitem 20001,1;

    delitem 1992,1;

    set Zeny,Zeny-0;

    mes "Have a nice day!";

    atcommand "@item2 20001 1 1 0 0 1992 0 0 0";

    mes ". . . . .";

    mes "Enjoy being God of Rune Midgard!";

    close;

    int:

    mes "[Wings Man]";

    if(countitem(20001) < 1 || countitem(1993) < 1 || Zeny < 0) goto LNotEnough;

    delitem 20001,1;

    delitem 1993,1;

    set Zeny,Zeny-0;

    mes "Have a nice day!";

    atcommand "@item2 20001 1 1 0 0 1993 0 0 0";

    mes ". . . . .";

    mes "Enjoy being God of Rune Midgard!";

    close;

    vit:

    mes "[Wings Man]";

    if(countitem(20001) < 1 || countitem(1994) < 1 || Zeny < 0) goto LNotEnough;

    delitem 20001,1;

    delitem 1994,1;

    set Zeny,Zeny-0;

    mes "Have a nice day!";

    atcommand "@item2 20001 1 1 0 0 1994 0 0 0";

    mes ". . . . .";

    mes "Enjoy being God of Rune Midgard!";

    close;

    dex:

    mes "[Wings Man]";

    if(countitem(20001) < 1 || countitem(1995) < 1 || Zeny < 0) goto LNotEnough;

    delitem 20001,1;

    delitem 1995,1;

    set Zeny,Zeny-0;

    mes "Have a nice day!";

    atcommand "@item2 20001 1 1 0 0 1995 0 0 0";

    mes ". . . . .";

    mes "Enjoy being God of Rune Midgard!";

    close;

    luk:

    mes "[Wings Man]";

    if(countitem(20001) < 1 || countitem(1996) < 1 || Zeny < 0) goto LNotEnough;

    delitem 20001,1;

    delitem 1996,1;

    set Zeny,Zeny-0;

    mes "Have a nice day!";

    atcommand "@item2 20001 1 1 0 0 1996 0 0 0";

    mes ". . . . .";

    mes "Enjoy being God of Rune Midgard!";

    close;

    LNotEnough:

    mes "Bring me a stone and wings!";

    close;

    LUnfathomable:

    mes "[Wings Man]";

    mes "Sorry. I can't help you.";

    mes "Have a nice day!";

    close;

    }

    Заранее спасибо :)

  12. У меня почему то даже картинка итема не ставиться, как я щас разобрался lua только за отображение отвечает предмета на игроке.

    Пишу в idnum2itemresnametable ид текстурки и она не отображается (пустое место), хотя стандартные все работают.

    С чем это может быть связано?

    Может что то в дифе клиента надо сделать?

    Я ставил

    Enable multiple GRFs

    Load Lua Before Lub

    Increase Headgear ViewID to 2000

    создавал даже grf с текстурками и txt файлами и привязывал через data.ini, всеравно не пашет

    может еще что то добавить надо?

  13. ACCESSORY_CUSTOM_HAT = 874

    1990,alphawings,Alpha Wings,5,,0,10,,10,,0,2147483647,7,2,1,,1,1,1041,{ bonus bAllStats,5; },{},{}

    Они должны быть одинаковыми.... вроде...

    Переставил на 874, сделал @reloaditemdb

    Добавил еще раз итем, пытался перезаходить, всеравно таже шляпа :(

    http://imgdepo.ru/id/i6331245

  14. Вообщем попробовал добавить в lua итем. Сделал вот так.

    В accessoryid.lua

    ACCESSORY_CUSTOM_HAT = 874

    accname.lua

    [ACCESSORY_IDs.ACCESSORY_CUSTOM_HAT] = "_AlphaWings"

    Потом переделал их в lub

    В txt я проставил так.

    в idnum2itemdesctable

    1990#

    Тестовые крылья.

    Class :^777777 Wings^000000

    Defense :^777777 10^000000

    Weight :^777777 10^000000

    Applicable Job :^777777 Every Job^000000

    #

    в idnum2itemdisplaynametable

    1990#Alpha Wings#

    в idnum2itemresnametable

    1990#AlphaWings#

    Описание шмотки есть и название поставлено, но сама шмотка прозрачная без спрайта и после её нажатия выкидывает error.

    Подскажите может что не так сделал?

    (Директории были сделаны правильно, все спрайты и текстуры в папке data)

    data/sprite/¾ÆÀÌÅÛ/ далее там спрайты

    data/sprite/¾ÆÀÌÅÛ/¿© далее спрайты

    data/sprite/¾ÆÀÌÅÛ/³² далее спрайты

    data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/Collection/ далее текстуры

    data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/item/ далее текстуры

  15. Доброго времени суток всем.

    Уже долго мучаюсь насчет добавления спрайтов в клиент. Вообщем хочу добавить несколько новых спрайтов для новых итемов, но все они не читаются, либо я делаю что-то не правильно.

    Сам использовал Ragexe, версии PACKETVER 20100728 - 2010 07 28a, задифил его, поставил нужную библиотеку lua и все работало идеально. Но к сожалению не разобрался как добавлять спрайты.

    Позже узнал, что для добавления спрайтов нужен Xray.exe

    Еле нашел xray с которым заходит в игру. Это версия, которую я задифил на 2009-10-13a.

    Истинное название - 2009-10-13aRagexeRE X-Ray

    Но сам exe выдает куча lua ошибок ( под него библиотеку я не смог подходящую найти ) И когда я захожу в игре после целых туч ошибок у меня нету ни NPC, ни warper зон и на некоторых мапах выходит error.

    Вообщем хотел бы узнать:

    1.Как правильно добавлять спрайты, желательно без использования xray, к примеру с Ragexe 2010 07 28a версии.

    2.Если это невозможно, то как правильно настроить xray, найти к нему нужную библиотеку. т.к все lua библиотеки , что я находил заканчивались на 2010 году. и один 2009, который не подошел. И как правильно с ним добавлять спрайты.

    Заранее спасибо, кто разъяснит. Дело в том, что с клиентом я работал не так много и поэтому мне очень сложно разобраться. Разбираюсь уже несколько дней и в итоге модифицировать клиент, мне не удалось.

  16. Доброго времени суток всем.

    Не могли бы вы мне помочь со скриптом, который повышает level аккаунта ( именно GM level ) , но на определенное количество времени.

    на 30, 60, 90 дней.

    Сейчас я создаю скрипт, который будет давать ВИП Аккаунт на определенное количество времени.

    Сам использую Eathena SVN SQL Trunk.

    Заранее спасибо :)

×
×
  • Создать...
Яндекс.Метрика