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

Jarek

Donators
  • Постов

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

  • Посещение

  • Победитель дней

    24

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

  1. Заменил ужасающее количество проверок на это:


    if(checkquest(40002) != 2){
    switch(checkquest(40002, HUNTING)){
    case 0:
    mes "Kill 10 Drops before I get angry!";
    mes "Quickly!";
    close;
    case 1:
    mes "Time is up for killing Drops.";
    mes "Kill 10 Porings before I get angry!";
    mes "Again!";
    changequest 40002, 40001;
    close;
    case 2:
    mes "Mission completed";
    completequest 40002;
    close;
    default:
    switch(checkquest(40001, HUNTING)){
    case 0:
    mes "Kill 10 Porings before I get angry!";
    mes "Quickly!";
    close;
    case 1:
    mes "Time is up for killing Porings.";
    mes "Kill 10 Porings before I get angry!";
    mes "Again!";
    erasequest 40001;
    setquest 40001;
    close;
    case 2:
    mes "Mission completed.";
    mes "Now kill 10 Drops before I get angry!";
    changequest 40001, 40002;
    close;
    default:
    mes "Kill 10 Porings before I get angry!";
    setquest 40001;
    close;
    }
    }
    }
    else {
    mes "You've already completed this mission.";
    close;
    }

    Все работает прекрасно

    • Upvote 1
  2. Ну вообще-то если игрок выйдет во время выполнения кв по убийству мобов, то прогресс сохраняется

    Вы неясно сформулировали свою проблему "При выполнении квеста" лично я интерпретировал как квест выполнен, а не квест в процессе выполнения.

    Как я понял, вы пытаетесь сделать "убей X мобов за Y времени"?

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

    Если так, то проблема где-то у вас, ибо система должна замечательно работать

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

    • Upvote 1
  3. Проблемы может быть две:

    1) В сервере по умолчанию отключено юзанье петами скиллов, включается в pet.conf опцией 'pet_status_support'

    2) Для использования скилла пету необходим аксессуар, если акс для кастомного пета не предусмотрен, то можно отключить это требование там же 'pet_equip_required'

    • Upvote 1
  4. Еще при желании можно выводить имена тех, кто накосячил

    Elmiria, ну я лишь привел основу

    Edit: не уверен насчет того, примет ли парсер скриптов continue в цикле, если нет - можно что-нибудь придумать

  5. alpha 0.1b

    координаты рассчитываются на основе рисунка из 6-го поста

    номера вершин показаны схематически в коде

    .@fail = .@true = 0;
    getpartymember getcharid(1);
    if ($@partymembercount < 6)
    .@fail = 1;
    else {
    //___0___
    //1_____2
    //_______
    //_3___4_
    getmapxy(.@map, .@x, .@y, 0, strcharinfo(0));
    setarray .@px[0], .@x, .@x-4, .@x+4, .@x-3, .@x+3,
    setarray .@py[0], .@y+4, .@y+1, .@y+1, .@y-4, .@y-4;
    for(.@i = 0; .@i < $@partymembercount; .@i++ ){
    if(strcharinfo(0) == $@partymembername$[.@i])
    continue; //если данный член пати - вызывающий, не нужно его проверять
    getmapxy(.@mapp, .@xp, .@yp, 0, $@partymembername$[.@i]);
    for(.@j = 0; .@j < getarraysize(.@px); .@j++){
    if((.@xp == .@px[.@j]) && (.@yp == .@py[.@j])){
    .@true++;
    //удаляем из массивов координат "занятые"
    deletearray .@px[.@j],1;
    deletearray .@py[.@j],1;
    }
    }
    }
    if(.@true<5)
    .@fail = 1;
    }
    if (.@fail)
    monster .@map, .@x, .@y, "Грыбочек",<mob id>,1;
    else
    monster "this",-1,-1,"--ja--",-3,1,"";
    delitem <coupon_id>,1;
    end;

    • Upvote 2
  6. Чисто теоретически:

    1) получаем координаты шести тел

    2) проверяем, найдется ли такое тело, которое равноудалено от остальных? (если да, то высчитываем среднее значение и получаем R)

    3) убедиться, что остальные 5 образуют пятиугольник (например будет ли каждое удалено от двух на t (длина стороны), а от других двух на d(диагональ) (предварительно посчитав t и d на основе R)

    (не уверен будет ли такая проверка правильной, но не смог её опровергнуть)

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

    тогда координаты центрального игрока берутся за основу, и проверяется, будет ли в определенных клетках от него стоят его же сопартийцы

  7. В есть видео\скрины?

    Мне интересно как создать правильную пентаграмму, у которой вершины с целыми координатами

    На набросках ужасно криво, а уж какие погрешности придется учитывать...

    fDXlnBp.png

    P.S.: И да, на мотре прем не жмет на купон, сначала пишет @pentagram, от чего между всеми членами пати появляются нитки, а потом пишет @mvp, после чего уже происходит проверка, вызов и забирание купона

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