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

Jarek

Donators
  • Постов

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

  • Посещение

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

    24

Весь контент Jarek

  1. Инкремент в скриптах только не работает
  2. чем меню хуже свитч селекта обьясни Тем, что это быдлокод =) Использование меток в программировании допускается в крайне редких случаях. И да, структурированный код легче читается, что не скажешь про goto, "пойди туда, не знаю куда, там есть то, не знаю что". Помнится, у нас в универе была одна преподавательница, которая посылала в эротическое пешее путешествие, если в лабе были метки.
  3. На примере золотых монет, заодно покажу ошибки case 1: if (countitem(671) < 1) { mes "[Нумизмат]"; mes "У Вас нету монет..."; //В русском языке нету слова нету xD close; } mes "[Нумизмат]"; mes "Сколько хотите продать?"; next; //set @gol,@gol; //Вообще лишняя строчка input (@gol,0,20); //0-min 20-max, т.к. 20*50м=maxzeny if (@gol == 0){// Можно написать if(!@gol) mes "[Нумизмат]"; mes "Ну пока."; close; } if(Zeny+@gol*50000000>1000000000){ mes "[Нумизмат]"; mes "Если вы продадите все эти монеты, то потеряете часть денег"; mes "Вы действительно хотите продолжить?"; if(select("Да:Нет")==2){ mes "[Нумизмат]"; mes "Ну пока."; close; } } delitem 671,@gol; set Zeny, Zeny + 50000000*@gol; mes "[Нумизмат]"; mes "Вот ваши zeny."; close;
  4. prontera,111,111,1 script Technoviking 2125,{ end; OnInit: setarray .gmnames$[0],"GM-Bruce","GM-Arnold","GM-Silvestr";//массив для имен гм'ов initnpctimer; end; OnTimer10000: initnpctimer; delwaitingroom; set .@flag,0;//флаг отвечает за наличие хотя бы одного гм'а онлайн for(set .@i,0; .@i<getarraysize(.gmnames$); set .@i, .@i+1) if(isloggedin(getcharid(3,.gmname$[.@i]))){ set .@flag,1; set .@mes$, .gmname$[.@i] + ": В сети"; break;//Нашли онлайн ГМ'а, можно выходить } if(!.@flag) set .@mes$, "ГМ'ов в сети нет"; waitingroom .@mes$, 0; end; } Возможно, я написал что-то лишнее, но на данный момент не могу написать короче.
  5. Ну тут смотря что вам нужно, исходя из того, что количество символов к названии рума ограничено, и впихнуть одновременно всех гмов и их статусы не получится Расскажите подробнее, как вы видите ситуацию, тогда дам конкретное решение
  6. Jarek

    Пару Sprite Mobs

    Бафомет вырвиглаз, да и снейклорд како-то слишком контрастный что-ли
  7. Надо было еще тело скрипта засунуть в теги [cоde] , а то нечитабельно...
  8. Накидал 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; }
  9. Цвет названии комнаты не полуится сделать (по крайней мере онли сервер-сайд) (исправьте если я не прав, можете камень кинуть) ГМ один? Если да, то при старте скрипта включаем таймер 10сек: обнуляем таймер удаляем старый waitroom устанавливаем в переменную имя гм'а если проверяем на онлайн, то переменная = переменная + в сети иначе переменная = переменная + не в сети задаем waitroom где в качестве названия используем переменную Как-то так
  10. Jarek

    скилл

    Ну я могу сказать, что я делал. Но опять же, при этом способе теряется 1,1к урона. skill.c (skill_castend_damage_id) case NPC_DARKBREATH: clif_emotion(src,E_AG); case SN_FALCONASSAULT: case PA_PRESSURE: case CR_ACIDDEMONSTRATION: case TF_THROWSTONE: case NPC_SMOKING: case GS_FLING: case NJ_ZENYNAGE: skill_attack(BF_MISC,src,src,bl,skillid,skilllv,tick,flag); break; заменил на case NPC_DARKBREATH: clif_emotion(src,E_AG); // case SN_FALCONASSAULT: case PA_PRESSURE: case CR_ACIDDEMONSTRATION: case TF_THROWSTONE: case NPC_SMOKING: case GS_FLING: case NJ_ZENYNAGE: skill_attack(BF_MISC,src,src,bl,skillid,skilllv,tick,flag); break; + case SN_FALCONASSAULT: + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); break; battle.c Закомментил часть здесь (battle_calc_misc_attack) case HT_BLITZBEAT: //case SN_FALCONASSAULT: //Blitz-beat Damage. if(!sd || (skill = pc_checkskill(sd,HT_STEELCROW)) <= 0) skill=0; md.damage=(sstatus->dex/10+sstatus->int_/2+skill*3+40)*2; if(mflag > 1) //Autocasted Blitz. nk|=NK_SPLASHSPLIT; /*if (skill_num == SN_FALCONASSAULT) { //Div fix of Blitzbeat skill = skill_get_num(HT_BLITZBEAT, 5); damage_div_fix(md.damage, skill); //Falcon Assault Modifier md.damage=md.damage*(150+70*skill_lv)/100; }*/ break; Добавил соотв код сюда (battle_calc_weapon_attack) switch (skill_num) { //Calc base damage according to skill + case SN_FALCONASSAULT: + //Blitz-beat Damage. + if(!sd || (skill = pc_checkskill(sd,HT_STEELCROW)) <= 0) + skill=0; + wd.damage=(sstatus->dex/10+sstatus->int_/2+skill*3+40)*2; + //Div fix of Blitzbeat + skill = skill_get_num(HT_BLITZBEAT, 5); + damage_div_fix(wd.damage, skill); + //Falcon Assault Modifier + wd.damage=wd.damage*(150+70*skill_lv)/100; + break; case NJ_ISSEN:
  11. Jarek

    скилл

    В общем, я понял в чем проблема. Менять тип атаки в skill_db недостаточно, ибо фальконассаулт все равно вызывает skill_attack(BF_MISC,src,src,bl,skillid,skilllv,tick,flag); К тому же рассчет урона идет в функции battle_calc_misc_attack. Я попробовал перенести куски кода из функции в функцию, но видимо что-то упустил, т.к атака без элементального оружия упала в среднем на 1,1к (при статах @allstat 100). Но цели я добился, при атаке хайорка водным ножиком, урон увеличился почти в 2 раза ( 175% если верить таблице). Направления я вам дал, попробуйте разобраться. Что-то не получится - пишите, поможем.
  12. Jarek

    скилл

    Я про себя говорил, у меня ничего этого уже нет
  13. Jarek

    скилл

    Появилась одна идейка, но надо скачать студию, эмуль, настроить ехе и поесть.
  14. Jarek

    скилл

    Empty и Funt утверждали, что должно работать =\ http://www.eathena.ws/board/index.php?showtopic=214471&view=findpost&p=1173892
  15. Jarek

    Mvp hunter

    This function returns a number ... (if you specify one) ... randomly positioned between 0 and the number you specify -1.
  16. Насколько я понял, нужен анистатус, т.е иммунитет к определенному статусу Иммунитет дается неписем, видимо за квест. Возможно ты это и имел в виду, поскольку я не понял твой ответ (=
  17. Русскоязычная поддержка эмулятора eAthena и rAthena Мб заменить на ов? И да, на лого указан только rA, дискриминация! xD И да2, последние 5 тем (кроме этой) в этой ветке перенести бы в более соответствующий раздел
  18. По поводу 99999 часов: насколько я помню можно было вешать бесконечный статус, если поставить -1 секунду.
  19. Если нужно изменить формулу подсчета, то : battle.c if( battle_config.vit_penalty_type && battle_config.vit_penalty_target&target->type ) { unsigned char target_count; //256 max targets should be a sane max target_count = unit_counttargeted(target,battle_config.vit_penalty_count_lv); if(target_count >= battle_config.vit_penalty_count) { if(battle_config.vit_penalty_type == 1) { if( !tsc || !tsc->data[SC_STEELBODY] ) def1 = (def1 * (100 - (target_count - (battle_config.vit_penalty_count - 1))*battle_config.vit_penalty_num))/100; def2 = (def2 * (100 - (target_count - (battle_config.vit_penalty_count - 1))*battle_config.vit_penalty_num))/100; } else { //Assume type 2 if( !tsc || !tsc->data[SC_STEELBODY] ) def1 -= (target_count - (battle_config.vit_penalty_count - 1))*battle_config.vit_penalty_num; def2 -= (target_count - (battle_config.vit_penalty_count - 1))*battle_config.vit_penalty_num; } } if(skill_num == AM_ACIDTERROR) def1 = 0; //Acid Terror ignores only armor defense. [Skotlex] if(def2 < 1) def2 = 1; } Конфигурация в battle.conf // Type of penalty that is applied to both equipment and vit DEF when more than vit_penalty_count monsters are targetting player // 0 = no penalty is applied // 1 = vit_penalty_num is reduced from DEF as a % // 2 = vit_penalty_num is reduced from DEF as an exact amount vit_penalty_type: 1 // When vit penalty is enabled, to whom it should apply to? (Note 3) // By default, only players get the penalty. vit_penalty_target: 1 // Amount of enemies required to be targetting player before defense begins to be penalized vit_penalty_count: 3 // Amount of VIT defense penalized per each attacking monster more than vit_penalty_count vit_penalty_num: 5 // How to count the number of attackers when applying vit penalty ? (choose one) // 1-: Count every attack attempt (even those that were dodged/lucky-dodged) // 2 : Count every non-lucky-dodged attack attempt // 3 : Count attacks that miss due to element/race modifier // 4 : Count attacks whose damages are blocked by skills // 5 : Count only attacks that actually connect // 6+: None of the above, count will always be 0 vit_penalty_count_lv: 3
  20. Темя явно не скриптам относится, а к src-кодингу. Переместил.
  21. lolwut? eA http://eathena-project.googlecode.com/svn/trunk/CMakeLists.txt rA https://rathena.svn.sourceforge.net/svnroot/rathena/trunk/CMakeLists.txt Sanasol опередил =\
×
×
  • Создать...
Яндекс.Метрика