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

nejiko

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

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

  • Посещение

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

    19

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

  1. Сеты


    if(число игроков на карте < 2)
    set .gmname$, "Свободно";
    else set .gmname$, "Занято";


    waitingroom .gmname$, 0;

    Блин,оно на сколько просто я просто в ах*е! Почему я так не додумался?(((


    OnTimer10000:
    initnpctimer;
    delwaitingroom;
    if($duel < 2)
    set $duel, "Свободно";
    else set $duel, "Занято";
    waitingroom $duel,0;
    end;
    }

    Где ошибка в вайтруме пишет 0.

    Сеты


    if(число игроков на карте < 2)
    set .gmname$, "Свободно";
    else set .gmname$, "Занято";


    waitingroom .gmname$, 0;

    Блин,оно на сколько просто я просто в ах*е! Почему я так не додумался?(((


    OnTimer10000:
    initnpctimer;
    delwaitingroom;
    if($duel < 2)
    set $duel, "Свободно";
    else set $duel, "Занято";
    waitingroom $duel,0;
    end;
    }

    Где ошибка в вайтруме пишет 0.

  2. Здравствуйте! Помогите реализовать такую идейку!


    prontera,163,174,4 script Арена 810,{
    if(Baselevel < 200) { mes "Простите, но минимальный лвл для входа 200!";close; }
    set $duel,$duel+1;
    if($duel >= 3) { mes "Простите,но максимальное кол-во игроков 2!";close; }
    percentheal 100,100;
    warp "pvp_2v2.gat",52,46;
    skilleffect 34,0; sc_start SC_BLESSING,360000,10;
    skilleffect 29,0; sc_start SC_INCREASEAGI,360000,10;
    close;
    }

    Как можно прикрепить Waitingroom что бы показывал Когда игроков 1 - то (Свободно) когда 2 (Занято)

    ЗА пример брал скрипт только не понял как править его!


    prontera,111,111,1 script Technoviking 2125,{
    end;
    OnInit:
    initnpctimer;
    end;
    OnTimer10000:
    initnpctimer;
    delwaitingroom;
    set .gmname$,"GM-ChuckNorris";
    if(isloggedin(getcharid(3,.gmname$)))
    set .gmname$, .gmname$ + ": В сети";
    else set .gmname$, .gmname$ + ": Не в сети";
    waitingroom .gmname$, 0;
    end;
    }

  3. Проблему товарищу решили, сорс модификацию исправили.

    Готовое решение (большая часть копипаста и исходники там старенькие использовали, но вы без проблем поймёте чего и куда вставлять):


    //battle.c
    //find this
    int battle_check_target( struct block_list *src, struct block_list *target,int flag)
    //add this before it
    bool cell_pk_check(struct block_list *t_bl, struct block_list *s_bl, int m)
    {
    if(t_bl->type == BL_PC && map[m].cell[s_bl->x+s_bl->y*map[m].xs].pk == true && map[m].cell[t_bl->x+t_bl->y*map[m].xs].pk == true) {
    int s_party = status_get_party_id(s_bl);
    int s_guild = status_get_guild_id(s_bl);
    if( s_party && s_party == status_get_party_id(t_bl) ) {
    if(map[m].flag.pvp_noparty)
    return true;
    else
    return false;
    }
    if( s_guild && s_guild == status_get_guild_id(t_bl) ) {
    if(map[m].flag.pvp_noguild && map[m].flag.gvg)
    return true;
    else
    return false;
    }
    return true;
    }
    return false;
    }
    //+++++++++++++++++++++++++++++++++//

    //find this
    else if(( sd->duel_group && !((!battle_config.duel_allow_pvp && map[m].flag.p
    //use this to replace
    else if(( sd->duel_group && !((!battle_config.duel_allow_pvp && map[m].flag.pvp) || (!battle_config.duel_allow_gvg && map_flag_gvg(m))))||( cell_pk_check(t_bl, s_bl, m) == true ))

    //+++++++++++++++++++++++++++++++++//

    //map.c
    void map_setcell(int m, int x, int y, cell_t cell, bool flag)
    {
    int j;
    if( m < 0 || m >= map_num || x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys )
    return;
    j = x + y*map[m].xs;
    switch( cell ) {
    case CELL_WALKABLE: map[m].cell[j].walkable = flag; break;
    case CELL_SHOOTABLE: map[m].cell[j].shootable = flag; break;
    case CELL_WATER: map[m].cell[j].water = flag; break;
    case CELL_NPC: map[m].cell[j].npc = flag; break;
    case CELL_BASILICA: map[m].cell[j].basilica = flag; break;
    case CELL_LANDPROTECTOR: map[m].cell[j].landprotector = flag; break;
    case CELL_NOVENDING: map[m].cell[j].novending = flag; break;
    case CELL_NOCHAT: map[m].cell[j].nochat = flag; break;

    case CELL_PK: map[m].cell[j].pk = flag; break; //<---add this line

    default:
    ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell);
    break;
    }
    }

    //+++++++++++++++++++++++++++++++++//

    //map.h
    typedef enum {
    CELL_WALKABLE,
    CELL_SHOOTABLE,
    CELL_WATER,
    CELL_NPC,
    CELL_BASILICA,
    CELL_LANDPROTECTOR,
    CELL_NOVENDING,
    CELL_NOCHAT,
    CELL_MAELSTROM,
    CELL_ICEWALL,
    CELL_PK, // <---add this line
    } cell_t;

    //+++++++++++++++++++++++++++++++++//

    struct mapcell
    {
    // terrain flags
    unsigned char
    walkable : 1,
    shootable : 1,
    water : 1;

    // dynamic flags
    unsigned char
    npc : 1,
    basilica : 1,
    landprotector : 1,
    novending : 1,
    nochat : 1,
    pk : 1;//<---add this

    //+++++++++++++++++++++++++++++++++//

    // db\const.txt
    cell_walkable 0
    cell_shootable 1
    cell_water 2
    cell_npc 3
    cell_basilica 4
    cell_landprotector 5
    cell_novending 6
    cell_nochat 7
    cell_pk 10 // <---add this line

    //+++++++++++++++++++++++++++++++++//

    Огромное спасибо данному человеку!! Единственный кто помог в данной проблеме!

  4. Здравствуйте! Хотел узнать как можно реализовать ПВП только на определенных клетках на арене?

    Как бы что-бы зрителей не могли атаковать и что-бы зрители не дрались,а просто смотрели!

    Вот что я пытался сделать!

    Пвп на локе отключено,а по кординатам должно было включаться!

    Пробовал вместо basilica ставить pvp , pvp_off только значения менять на 0!

    Сборка: 3ceam

    Вот что искал нашел по этой теме: Тык и Тык

    Кто что подскажет?


    pvp_2v2,1,1,1 script NoPvPDuelArena -1,{
    end;
    OnInit:
    // Можно
    setcell "pvp_2v2.gat",41,52,41,39,cell_basilica,1;
    setcell "pvp_2v2.gat",41,39,62,39,cell_basilica,1;
    setcell "pvp_2v2.gat",62,39,62,52,cell_basilica,1;
    setcell "pvp_2v2.gat",62,52,41,52,cell_basilica,1;
    }

    Вот схема работы моей идеи!

    FRLqdJQl61A.jpg

  5. Почему-то у меня не работает! Что не так то? Рекомпиляция прошла успешно!


    /*==========================================
    * Alters experienced based on self bonuses that do not get even shared to the party.
    *------------------------------------------*/
    static void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src)
    {
    int bonus = 0;
    struct status_data *status = status_get_status_data(src);
    if (sd->expaddrace[status->race])
    bonus += sd->expaddrace[status->race];
    bonus += sd->expaddrace[status->mode&MD_BOSS?RC_BOSS:RC_NONBOSS];
    if (battle_config.pk_mode &&
    (int)(status_get_lv(src) - sd->status.base_level) >= 20)
    bonus += 15; // pk_mode additional exp if monster >20 levels [Valaris]
    if (sd->sc.data[SC_EXPBOOST])
    bonus += sd->sc.data[SC_EXPBOOST]->val1;

    if(!pc_isGM(sd))
    {
    *base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus/100., 1, UINT_MAX);
    }
    else if(pc_isGM(sd) == 1) // Иначе если гм лвл 1
    {
    *base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus * 2/100., 1, UINT_MAX);
    }
    else if(pc_isGM(sd) == 2) // Иначе если гм лвл 2
    {
    *base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus * 3/100., 1, UINT_MAX);
    }
    if (sd->sc.data[SC_JEXPBOOST])
    bonus += sd->sc.data[SC_JEXPBOOST]->val1;
    *job_exp = (unsigned int) cap_value(*job_exp + (double)*job_exp * bonus/100., 1, UINT_MAX);
    return;
    }

  6. нашел вот такие вещи,но это помоему в моем же скрипте есть!


    *setbattleflag "<battle flag>",<value>;
    *getbattleflag("<battle flag>")
    Sets or gets the value of the given battle flag.
    Battle flags are the flags found in the battle/*.conf files and is also used in Lupus' variable rates script.
    Example(s):
    //will set the base experience rate to 20x (2000%)
    setBattleFlag "base_exp_rate",2000;

    //will return the value of the base experience rate (when used after the above example, it would print 2000).
    mes getBattleFlag("base_exp_rate");

    И вот кое что!


    bonus2 bExpAddRace,n,x; Increase exp gained by x% vs. enemies of race n

  7. Все это можно сделать без сорца.

    Я сделал иначе - в таблице аккаунта, добавил ячейку donat. Куда простым запросом вводилось значение (например 10, что ровнялось 10 долларам), а при заходе стояла проверка на то, что если ячейка donat не равна 0, то скрипт преобразовывал ее в глобальную переменную #CASHPOINTS, с которой и велись работы ;D

    Также и по поводу бонусов аккаунта, все решаемо.

    Для этого изучи:

    doc/script_commands.txt
    doc/item_bonus.txt

    Все зависит только от твоего желания и фантазии ;D

    Вот нашел по поводу Премиум системы и доната! Можете показать как это примерно реализовать??) Знаю оборзел совсем)

    • Downvote 2
  8. Здравствуйте!

    Нужна помощь,на сервере стоят рейты х1000,нужно что-бы после 99 лвл-а они увеличились рандомно с х5000 до х10,000!

    Написал не большой скриптик,поправте где ошибка!


    - script announce_lvl -1,{
    end;
    OnPCBaseLvUpEvent:
    if(BaseLevel==99){
    set $@bxp,rand(1100000,5600000);
    set $@jxp,rand(1100000,5600000);
    setbattleflag("base_exp_rate",$@bxp);
    setbattleflag("job_exp_rate",$@jxp);
    dispbottom "Теперь вы сможете получать EXP в несколько раз больше от х5000 до х10,000!";
    }
    }

    Заранее спасибо!

    • Downvote 2
  9. Здравствуйте! Давно я тут не был вот решил восстановить нoстрaльгию,поковырять серверок! Дак ближе к делу:

    1) d59da2893cd54b7a553fd5a4f57f.png Программа запущена!

    2) f898267817ee568b280d18122b90.png Нет стат пишет только это!

    3)583fa709a028add632cc0cd62234.png Порт занят только Мозилой!

    4) В итоге!

    07eb3f71569cba0dabbef86ec803.png

    Что с этим делать? В интернете искал проблему решить не вышло собственно вопрос такой! Заранее спасибо!

    Версии пробовал от 2.29 до 2.26!

    Операционка: Windows 7 x86

  10. Какие вещи одеты на тебе когда клона создаешь? Может быть создается РоялГвард с Луком и крашит?

    Да нет,проблема решилась сама собой после перекомпиляции сервера! Спасибо за помощь тему можно Клоуз!

  11. 1) Я так понял когда прописываешь в Castle_db то Имп нельзя бить скиллами?? Увы это мне не нужно,мешает ли тот [Error] который в Map-сервере? Его можно убрать без прописывания в Castle_db??

    2) Появилась 2 проблема у меня стоит еще один скрипт Emperium Арены в Prontera Field 8 когда ломаешь сначала его, потом тот что в pvp_n_5-5 нельзя бить,как так?

    Ап

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