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

Renegade Bastard

Проверенные
  • Постов

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

  • Посещение

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

    19

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

  1. Странно либо ты не так понял) либо я не так выразился))) Я незнаю как можно этот ивент перебить под КВ которое само даётся, тоесть кв даётся каждые 5 часов На 5 часов) тоесть оно постоянное просто каждые 5 часов сдаётся автоматически и снова начинается)

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

  2. Обновил. Нету) Добавь после case SC_MATKFOOD:

    case SC_EXPBOOST:

    Ну я же не дебил, добавил сразу как нашел. Чуть попозжя перекомпилю.

    У меня не вешается статус. Ну точнее, вешается, но не отображается в списке. Это нормально

    А у меня вешается. Чекни status.c на предмет наличия

    StatusIconchangeTable[SC_EXPBOOST] = SI_EXPBOOST;


  3. int status_change_clear_buffs (struct block_list* bl, int type)
    {
    int i;
    struct status_change *sc= status_get_sc(bl);
    if (!sc || !sc->count)
    return 0;
    if (type&2) //Debuffs
    for( i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++ )
    {
    if(sc->data[i])
    status_change_end(bl,(sc_type)i,-1);
    }
    for( i = SC_COMMON_MAX+1; i < SC_MAX; i++ )
    {
    if(!sc->data[i])
    continue;

    switch (i) {
    //Stuff that cannot be removed
    case SC_WEIGHT50:
    case SC_WEIGHT90:
    case SC_COMBO:
    case SC_SMA:
    case SC_DANCING:
    case SC_GUILDAURA:
    case SC_SAFETYWALL:
    case SC_PNEUMA:
    case SC_NOCHAT:
    case SC_JAILED:
    case SC_ANKLE:
    case SC_BLADESTOP:
    case SC_CP_WEAPON:
    case SC_CP_SHIELD:
    case SC_CP_ARMOR:
    case SC_CP_HELM:
    case SC_STRFOOD:
    case SC_AGIFOOD:
    case SC_VITFOOD:
    case SC_INTFOOD:
    case SC_DEXFOOD:
    case SC_LUKFOOD:
    case SC_HITFOOD:
    case SC_FLEEFOOD:
    case SC_BATKFOOD:
    case SC_WATKFOOD:
    case SC_MATKFOOD:
    continue;

    //Debuffs that can be removed.
    case SC_HALLUCINATION:
    case SC_QUAGMIRE:
    case SC_SIGNUMCRUCIS:
    case SC_DECREASEAGI:
    case SC_SLOWDOWN:
    case SC_MINDBREAKER:
    case SC_WINKCHARM:
    case SC_STOP:
    case SC_ORCISH:
    case SC_STRIPWEAPON:
    case SC_STRIPSHIELD:
    case SC_STRIPARMOR:
    case SC_STRIPHELM:
    if (!(type&2))
    continue;
    break;
    //The rest are buffs that can be removed.
    case SC_BERSERK:
    if (!(type&1))
    continue;
    sc->data[i]->val2 = 0;
    break;
    default:
    if (!(type&1))
    continue;
    break;
    }
    status_change_end(bl,(sc_type)i,-1);
    }
    return 0;
    }

    Нашел в файле /src/map/.svn/text-base/skill.c.svn-base

    но чесноговоря не уверен что оно компилиится оттуда

    В файле status.c (у меня 7414 строка)


    /*==========================================
    * Clears buffs/debuffs of a character.
    * type&1 -> buffs, type&2 -> debuffs
    *------------------------------------------*/
    int status_change_clear_buffs (struct block_list* bl, int type)
    {

    Скажи айди книги на опыт

    точняк, нашел. Кеник, ты царь.

    А книжка - вот

    http://ratemyserver....&isearch=Search

  4. у меня так же. в каком файле искать саму функцию status_change_clear_buffs ?


    ~# grep -rn "status_change_clear_buffs" /home/renegade/trunk/src/
    /home/renegade/trunk/src/map/status.c:5522: status_change_clear_buffs(bl,3); //Remove buffs/debuffs
    /home/renegade/trunk/src/map/status.c:7256:int status_change_clear_buffs (struct block_list* bl, int type)
    Двоичный файл /home/renegade/trunk/src/map/obj_sql/status.o совпадает
    Двоичный файл /home/renegade/trunk/src/map/obj_sql/skill.o совпадает
    /home/renegade/trunk/src/map/.svn/text-base/status.c.svn-base:5522: status_change_clear_buffs(bl,3); //Remove buffs/debuffs
    /home/renegade/trunk/src/map/.svn/text-base/status.c.svn-base:7256:int status_change_clear_buffs (struct block_list* bl, int type)
    /home/renegade/trunk/src/map/.svn/text-base/skill.c.svn-base:5385: status_change_clear_buffs(bl,1);
    /home/renegade/trunk/src/map/.svn/text-base/skill.c.svn-base:7334: status_change_clear_buffs(bl,1); //Should dispell only allies.
    /home/renegade/trunk/src/map/.svn/text-base/skill.c.svn-base:7699: status_change_clear_buffs(bl,2);
    /home/renegade/trunk/src/map/.svn/text-base/status.h.svn-base:1265:int status_change_clear_buffs(struct block_list* bl, int type);
    /home/renegade/trunk/src/map/skill.c:5385: status_change_clear_buffs(bl,1);
    /home/renegade/trunk/src/map/skill.c:7334: status_change_clear_buffs(bl,1); //Should dispell only allies.
    /home/renegade/trunk/src/map/skill.c:7699: status_change_clear_buffs(bl,2);
    /home/renegade/trunk/src/map/status.h:1265:int status_change_clear_buffs(struct block_list* bl, int type);[/font][/color]
    [color=#282828][font=Open Sans', ', sans-serif]

  5. Костыль: в сорсах же в куске кода, где госпель снимает все статусы - сделать проверку на SC_EXPBOOST и не снимать его (:

    8I8fMOJ.png

    я так понял он тупо всем активным статусам обнуляет таймер. Если добавить условный оператор то если висит статус SC_EXPBOOST госпель вообще статусы не скинет. Это будет неочень.

  6. В общем и целом, дискуссия пошла у меня вот тут кому не в лом гляньте. То что мне удалось выяснить в посте по ссылке. То что понял - без модификации исходников эту багу не решить. Но пока слабо представляю себе как. Либо какимто образом менять механизм дебафа от госпеля, либо.. На этом мысль останавливается.

  7. Я бы взял за основу ивент "Осада" и перепилил под свои нужды.


    // ==============================================================
    // = - [Автоэвент] 'Осада'
    // ==============================================================
    // = - Описание:Осада городов
    // ==============================================================
    // = - Версия:1.3
    // ==============================================================
    // 1.0 - Начальная версия.
    // 1.1 - Увеличил количество городов.
    // 1.2 - Кол-во мобов и их ID теперь заносятся в массив.
    // 1.3 - Полная оптимизация.
    // ==============================================================
    // = - Если вы хотите разместить где-либо этот скрипт,то не
    // = - забывайте указывать копирайты,уважайте чужой труд,а тот,
    // = - кто сотрет копирайты - пидарас
    // ==============================================================
    // Автозапуск эвента //
    - script disip_start -1,{
    end;
    // Запуск эвента каждый час //
    OnMinute01:
    OnMvP:
    // Рандомный выбор города,в котором будет проходить эвент //
    set .@disosada,rand(16);
    if(.@disosada == 0) donpcevent "prontera::OnDisIP";
    if(.@disosada == 1) donpcevent "morocc::OnDisIP";
    if(.@disosada == 2) donpcevent "geffen::OnDisIP";
    if(.@disosada == 3) donpcevent "payon::OnDisIP";
    if(.@disosada == 4) donpcevent "louyang::OnDisIP";
    if(.@disosada == 5) donpcevent "izlude::OnDisIP";
    if(.@disosada == 6) donpcevent "hugel::OnDisIP";
    if(.@disosada == 7) donpcevent "rachel::OnDisIP";
    if(.@disosada == 8) donpcevent "alberta:OnDisIP";
    if(.@disosada == 9) donpcevent "aldebaran::OnDisIP";
    if(.@disosada == 10) donpcevent "lighthalzen::OnDisIP";
    if(.@disosada == 11) donpcevent "umbala::OnDisIP";
    if(.@disosada == 12) donpcevent "comodo::OnDisIP";
    if(.@disosada == 13) donpcevent "yuno::OnDisIP";
    if(.@disosada == 14) donpcevent "ayothaya::OnDisIP";
    if(.@disosada == 15) donpcevent "einbech::OnDisIP";
    if(.@disosada == 16) donpcevent "eibroch::OnDisIP";
    end;
    }
    // Осада //
    - script disip_autoevent::disip_autoevent -1,{
    end;
    OnDisIP:
    if (strnpcinfo(1) == "disip_autoevent") end;
    // Список городов и их настройки //
    if(strnpcinfo(0) == "prontera"){ setarray .@disipmob[0],1511,1052,1062,1282; setarray $@countdisipmob[0],2,10,20,20; }
    if(strnpcinfo(0) == "morocc"){ setarray .@disipmob[0],1039,1918,1159,1038; setarray $@countdisipmob[0],2,5,3,1; }
    if(strnpcinfo(0) == "geffen"){ setarray .@disipmob[0],1272,1731,1059,1184; setarray $@countdisipmob[0],2,3,3,30; }
    if(strnpcinfo(0) == "payon"){ setarray .@disipmob[0],1719,1290,1059,1180; setarray $@countdisipmob[0],3,20,3,30; }
    if(strnpcinfo(0) == "louyang"){ setarray .@disipmob[0],1046,1191,1306,1516; setarray $@countdisipmob[0],2,20,30,30; }
    if(strnpcinfo(0) == "izlude"){ setarray .@disipmob[0],1389,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "alberta"){ setarray .@disipmob[0],1115,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "aldebaran"){ setarray .@disipmob[0],1252,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "hugel"){ setarray .@disipmob[0],1768,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "rachel"){ setarray .@disipmob[0],1086,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "ayothaya"){ setarray .@disipmob[0],1885,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "einbech"){ setarray .@disipmob[0],1492,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "einbroch"){ setarray .@disipmob[0],1734,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "comodo"){ setarray .@disipmob[0],1251,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "umbala"){ setarray .@disipmob[0],1779,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "yuno"){ setarray .@disipmob[0],1688,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    if(strnpcinfo(0) == "lighthalzen"){ setarray .@disipmob[0],1785,1068,1144,1070; setarray $@countdisipmob[0],4,20,30,20; }
    // Появление мобов,включения таймера и т.п //
    set $@ocity$,strnpcinfo(0);
    announce "Город ["+strnpcinfo(0)+"] находится под осадой злых монстров!Жители города нуждаются в вашей помощи!",bc_all,0xDDC433;
    initnpctimer; // Включаем таймер для отсчета 10 минут
    monster strnpcinfo(0),0,0,"Главарь Осады",.@disipmob[0],$@countdisipmob[0],"disip_autoevent::OnDisBossDeath";
    for(set .@i,1; .@i<getarraysize(.@disipmob); set .@i,.@i+1) monster strnpcinfo(0),0,0,"Осадники",.@disipmob[.@i],$@countdisipmob[.@i];
    end;
    // Если никто не спас город в течении 10 минут //
    OnTimer600000: // 10 минут
    stopnpctimer;
    killmonsterall strnpcinfo(0);
    announce "Город [ "+ strnpcinfo(0) +" ] был разорён осадой злых монстров!",bc_all,0xDDC433;
    end;
    // Если игрок убивает главаря осады //
    OnDisBossDeath:
    announce strcharinfo(0)+" убил главаря осады!За это он получает 5 Event Points!",bc_all,0xDDC433;
    set ##evp,##evp + 5;
    dispbottom "Вы получили 5 Event Points!";
    dispbottom "Сейчас у вас "+ ##evp +" Event Points!";
    set .@defer,$@countdisipmob[0]-1;
    setarray $@countdisipmob[0],.@defer;
    // Если город был освобожден от осады //
    if (.@defer == 0){ stopnpctimer $@ocity$; killmonsterall $@ocity$; sleep 3000; announce "Город ["+$@ocity$+"] был успешно освобожден от атак злых монстров!",bc_all,0xDDC433; }
    end;
    }
    // Дубликаты //
    prontera,0,0,0 duplicate(disip_autoevent) prontera -1
    morocc,0,0,0 duplicate(disip_autoevent) morocc -1
    geffen,0,0,0 duplicate(disip_autoevent) geffen -1
    payon,0,0,0 duplicate(disip_autoevent) payon -1
    louyang,0,0,0 duplicate(disip_autoevent) louyang -1
    izlude,0,0,0 duplicate(disip_autoevent) izlude -1
    alberta,0,0,0 duplicate(disip_autoevent) alberta -1
    comodo,0,0,0 duplicate(disip_autoevent) comodo -1
    yuno,0,0,0 duplicate(disip_autoevent) yuno -1
    rachel,0,0,0 duplicate(disip_autoevent) rachel -1
    aldebaran,0,0,0 duplicate(disip_autoevent) aldebaran -1
    ayothaya,0,0,0 duplicate(disip_autoevent) ayothaya -1
    umbala,0,0,0 duplicate(disip_autoevent) umbala -1
    lighthalzen,0,0,0 duplicate(disip_autoevent) lighthalzen -1
    hugel,0,0,0 duplicate(disip_autoevent) hugel -1
    einbech,0,0,0 duplicate(disip_autoevent) einbech -1
    einbroch,0,0,0 duplicate(disip_autoevent) einbroch -1
    // -----------------------------------------------------------------------------------------------------------------------------
    // Информация к скрипту:
    // -----------------------------------------------------------------------------------------------------------------------------
    // 1)Массив .@disipmob[0] - заполняется айди монстрами,которые будут появляться на осаде
    // 2)Массив $@countdisipmob[0] - заполняется кол-вом монстров,которые будут появляться.
    // Пример:.@disipmob[0],1389,1731;$@countdisipmob[0],2,10;Это значит что мобов с айди 1389 появится 2-ое,а мобов с 1731 10 штук.
    // -----------------------------------------------------------------------------------------------------------------------------

  8. Посоны, бляхамуха, внезапно я понял как же по вам всем засранчегам соскучился. Номн, Санасол, Кенник, Теилс, Мяфк, бляхамуха, сколько лет прошло :) Теилс наверно уже матёрый дизайнер, а я ещё помню как он робко создавал тему "не судите строго, первый диз". Как же время летит то.... А ещё я внезапно понял что мне скоро тридцатник. Пиздец.

    :D

    • Upvote 2
  9. Единственной кодировкой должна быть UTF-8 а использование других нужно приравнять к разжиганию межнациональной розни и карать соответствующей статьёй УК.

    Ну что за разгильдяйство, товарищи? Кто так проглядел? :)

    Кракозябрит кстати только здесь http://ea-support.ws/ads/

    NtDFFKS.png

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