Jump to content

Jarek

Members
  • Posts

    143
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Jarek

  1. This is effect duration per skill level. 60000 means 60 seconds. I really dont know why SA have 6 min duration in your server =\ Try to check all yours skill related changes, may be there is small mistake that affects on effect duration (unlikely)
  2. ACMD_FUNC(mobsearch) { char mob_name[100]; int mob_id; int number = 0; struct s_mapiterator* it; nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "[^\n]", mob_name) < 1) { clif_displaymessage(fd, msg_txt(sd,1218)); // Please enter a monster name (usage: @mobsearch <monster name>). return -1; } if ((mob_id = atoi(mob_name)) == 0) mob_id = mobdb_searchname(mob_name); if(mob_id > 0 && mobdb_checkid(mob_id) == 0){ snprintf(atcmd_output, sizeof atcmd_output, msg_txt(sd,1219),mob_name); // Invalid mob ID %s! clif_displaymessage(fd, atcmd_output); return -1; } if(mob_id == atoi(mob_name) && mob_db(mob_id)->jname) strcpy(mob_name,mob_db(mob_id)->jname); // --ja-- // strcpy(mob_name,mob_db(mob_id)->name); // --en-- snprintf(atcmd_output, sizeof atcmd_output, msg_txt(sd,1220), mob_name, mapindex_id2name(sd->mapindex)); // Mob Search... %s %s clif_displaymessage(fd, atcmd_output); it = mapit_geteachmob(); for(; { TBL_MOB* md = (TBL_MOB*)mapit_next(it); if( md == NULL ) break;// no more mobs if( md->bl.m != sd->bl.m ) continue; if( mob_id != -1 && md->class_ != mob_id ) continue; ++number; if( md->spawn_timer == INVALID_TIMER ) + if (pc_get_group_level(sd) < 99) + snprintf(atcmd_output, sizeof(atcmd_output), "2d[%s] %s", number, "alive", md->name); + else snprintf(atcmd_output, sizeof(atcmd_output), "2d[%3d:%3d] %s", number, md->bl.x, md->bl.y, md->name); else snprintf(atcmd_output, sizeof(atcmd_output), "2d[%s] %s", number, "dead", md->name); clif_displaymessage(fd, atcmd_output); } mapit_free(it); return 0; } With this modification only 99 Gms can see mob coordinates
  3. WoE 2: Тут все намного интереснее. Доступ к имериуму закрывает 3 ряда баррикад. Баррикады нельзя уничтожить пока "живы" Guardian Stone'ы Это такие "мини-империумы". Любой член гильдии, держащей замок, может восстановить этот камень через панель управления, вняся плату в виде определенного набора предметов. И тогда атакующим гильдиям вновь придется бросить пилить баррикады и опять пилить эти камни. К тому же Гильдмастер может починить баррикады, тоже за определенный набор предметов. Как и в WoE1 ГМ может купить гвардов. БГ: бои стенка на стенку с механикой WoE. Tierra Valley: форты команд расположены на севере и юге локации. Главная цель - уничтожить склад форта другой команды и защитить свой. По центру карты расположена нейтральная база, захват которой даёт бонусы в виде распауна на этой базе вместо своего форта, а также покупкой гвардов. Flavius: Нужно уничтожить кристалл (читай имп) другой команды, причем 2 раза, т.к. Bo3. Каждый кристалл охраняется двумя гвардами. Живые гварды обеспечивают иммунитет кристаллу. Kreiger Von Midgard (KVM): У команды есть 5 минут, чтобы выпилить другую, иначе побеждает команда с наибольшим количеством выживших. Для детальной информации можете почитать iRO Wiki http://irowiki.org/wiki/War_of_Emperium http://irowiki.org/wiki/War_of_Emperium_2 http://irowiki.org/wiki/Battlegrounds
  4. 2373:1631,{ bonus bHealPower,3*getequiprefinerycnt(EQI_HAND_R);} 2373:<ID>,{if (getequiprefinerycnt(EQI_HAND_R)>10) bonus bHealPower,20;} I can't find ID of Holy Stick[0] in my item_db, so I just write <ID>
  5. Here is a diff itemdelay_17269.patch
  6. O.o It works for me
  7. Jarek

    downrefitem

    «You are doing it wrong». (= Try this: BUILDIN_FUNC(downrefitem) { int i = -1,num,ep; TBL_PC *sd; num = script_getnum(st,2); sd = script_rid2sd(st); if( sd == NULL ) return 0; if (num > 0 && num <= ARRAYLENGTH(equip)) i = pc_checkequip(sd,equip[num-1]); if(i >= 0) { ep = sd->status.inventory[i].equip; //Logs items, got from (N)PC scripts [Lupus] log_pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->status.inventory[i]); sd->status.inventory[i].refine++; pc_unequipitem(sd,i,2); // status calc will happen in pc_equipitem() below if(sd->status.inventory[i].refine < 4) clif_refine(sd->fd,2,i,sd->status.inventory[i].refine = 0); else clif_refine(sd->fd,2,i,sd->status.inventory[i].refine = sd->status.inventory[i].refine - 4); clif_delitem(sd,i,1,3); //Logs items, got from (N)PC scripts [Lupus] log_pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[i]); clif_additem(sd,i,1,0); pc_equipitem(sd,i,ep); clif_misceffect(&sd->bl,2); } return 0; } Yeah, that's more simple >.<
  8. You can increase MAX_EVENTQUEUE in src\map\map.h
  9. skill_cast_db.txt 89,4800:5600:6400:7200:8000:8800:9600:10400:11200:12000,5000,0,4600,12000,1000,0
  10. produce_db.txt //-- Embryo <-- AM_PHARMACY & Potion Creation Guide & 1 Seed of Life, 1 Morning Dew of Yggdrasil, 1 Glass Tube 7142,22,228,1,7144,0,7140,1,7141,1,7143,1
  11. Hmm I'm tried to make new skill (but i don't create new skil 'cause it takes time and i'm too lazy, just replace code for MC_IDENTIFY) and it works All i do is replaced this case MC_IDENTIFY: if(sd) clif_item_identify_list(sd); break; with this case MC_IDENTIFY: if(sd) if (storage_storageopen(sd)) return -1; break; and wrote in the beginning #include "storage.h" What i'm doing wrong? (=
  12. Guide + skill.c / skill_castend_damage_id function ... case YOUR_SKILL: if(sd) if (storage_storageopen(sd)) return -1; break;
  13. atcommand.c ACMD_FUNC(monster) ... memset(name, '\0', sizeof(name)); memset(monster, '\0', sizeof(monster)); memset(atcmd_output, '\0', sizeof(atcmd_output)); + if((pc_get_group_level(sd) < 99) && (map[sd->bl.m].flag.town)) + return -1; if (!message || !*message) { ...
  14. Ru localization http://pastebin.com/sap6wqVG +I found some typos:
  15. Ну я думаю следует сделать через чтение файла, в котором указаны связки итемов. Сам запрет написать в pc_isUseitem
  16. replace OnClock000: OnClock0305: OnClock0605: OnClock0905: OnClock1205: OnClock1505: OnClock1805: OnClock2105: goto startlmsevent; startlmsevent: with OnClock1600: if(gettime(4) != 6) end;
  17. А тут все просто. 1) в db\ создаем файл, например mob_mydb.txt Первой строчкой там вписываем 0,Poring,1002 А потом уже свой список. 2) в mob.h Увеличиваем MAX_RANDOMMONSTER на 1 (по идее там должно быть 4, значит меняем на 5) 3) в mob.c ищем функцию mob_read_randommonster вписываем название своего файла const char* mobfile[] = { "mob_branch.txt", "mob_poring.txt", "mob_boss.txt", "mob_pouch.txt", "mob_mydb.txt"}; 4) Рекомпилим 5) Скрипт для вызова случайного монстра из вашего списка { monster "this",-1,-1,"--ja--",-5,1,""; }
  18. Use -1 for infinite duration {},{sc_start SC_EXPBOOST,-1,50; sc_start SC_ITEMBOOST,-1,150;},{sc_end SC_EXPBOOST; sc_end SC_ITEMBOOST;} But if you wanna use your headgear + battle manual \ bubble gum, it's better to create new status effect
  19. src\map\skill.c Just comment this block and recompile server if( dstmd && dstmd->class_ == MOBID_EMPERIUM ) { map_freeblock_unlock(); return 1; }
  20. You can find what you need in npc\quests\collection folder.
  21. setarray .@i[0],7437,1711,217,167,238; set .@j$,"Misery"; Players must type "Misery" instead of "Sorrow"
×
×
  • Create New...