-
Постов
367 -
Зарегистрирован
-
Посещение
-
Победитель дней
19
Сообщения, опубликованные Renegade Bastard
-
-
Странно либо ты не так понял) либо я не так выразился))) Я незнаю как можно этот ивент перебить под КВ которое само даётся, тоесть кв даётся каждые 5 часов На 5 часов) тоесть оно постоянное просто каждые 5 часов сдаётся автоматически и снова начинается)
ну как. появились квестовые мобы, исчезли квестовые мобы. За убийство мобов идёт награда в нужном тебе виде. Если за отведённое время мобы не убиты награды нет.
-
Обновил. Нету) Добавь после case SC_MATKFOOD:
case SC_EXPBOOST:
Ну я же не дебил, добавил сразу как нашел. Чуть попозжя перекомпилю.
У меня не вешается статус. Ну точнее, вешается, но не отображается в списке. Это нормально
А у меня вешается. Чекни status.c на предмет наличия
StatusIconchangeTable[SC_EXPBOOST] = SI_EXPBOOST;
-
Страничку обнови. Хорошо что не Кенни
-
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)
{Скажи айди книги на опыт
точняк, нашел. Кеник, ты царь.
А книжка - вот
-
у меня так же. в каком файле искать саму функцию 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] -
Костыль: в сорсах же в куске кода, где госпель снимает все статусы - сделать проверку на SC_EXPBOOST и не снимать его (:
я так понял он тупо всем активным статусам обнуляет таймер. Если добавить условный оператор то если висит статус SC_EXPBOOST госпель вообще статусы не скинет. Это будет неочень.
-
В общем и целом, дискуссия пошла у меня вот тут кому не в лом гляньте. То что мне удалось выяснить в посте по ссылке. То что понял - без модификации исходников эту багу не решить. Но пока слабо представляю себе как. Либо какимто образом менять механизм дебафа от госпеля, либо.. На этом мысль останавливается.
-
Я бы взял за основу ивент "Осада" и перепилил под свои нужды.
// ==============================================================
// = - [Автоэвент] 'Осада'
// ==============================================================
// = - Описание:Осада городов
// ==============================================================
// = - Версия: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 штук.
// ----------------------------------------------------------------------------------------------------------------------------- -
А у меня один минус в день. Нечестно
-
Не нашел гайда как написать скрытый плюсиком текст.
-
я конечно понимаю что некропостинг и все дела, но я не удержался, сори
-
Увидел, таки да. Ну зато темку апнули
- 1
-
-
Посоны, бляхамуха, внезапно я понял как же по вам всем засранчегам соскучился. Номн, Санасол, Кенник, Теилс, Мяфк, бляхамуха, сколько лет прошло Теилс наверно уже матёрый дизайнер, а я ещё помню как он робко создавал тему "не судите строго, первый диз". Как же время летит то.... А ещё я внезапно понял что мне скоро тридцатник. Пиздец.
- 2
-
почему скрипт лежит в разделе src модификаций?
-
Единственной кодировкой должна быть UTF-8 а использование других нужно приравнять к разжиганию межнациональной розни и карать соответствующей статьёй УК.
Ну что за разгильдяйство, товарищи? Кто так проглядел?
Кракозябрит кстати только здесь http://ea-support.ws/ads/
-
а это не его екзе, это вот эта хрень: http://ucp-anticheat.ru/
-
ShopOS? Если да там и бесплатно вроде норм.
в бесплатной версии нет некоторых крайне нужных функций.
-
теилс, вот какбе зацени мою последнюю работу например http://comcy.com.ua/
подружбе могу оч дёшево продать движок. у меня куплена лицуха какбе.
- 1
-
уныло. Больше ярости.
-
Может подскажете как бороться с искажением скриншота в w7?
распространённая проблема на семёрке с кривыми дравами ATI
обновляшки.
- 1
-
посещалка очень низкая
- 1
-
сейчас нельзя просто так взять и зарегатся вконтакте. тебя должен ктото проинвайтить.
- 1
-
на nintendo ds афигительный рагнарок с мультиплеером по инету.
Как можно и можно ли вообще
в Помощь в скриптинге
Опубликовано · Изменено пользователем Renegade Bastard
OnNPCKillEvent: может пригодится?
я если чесно фик знает, года три уже не притрагивался к афине. Не помню нифига.