-
Постов
178 -
Зарегистрирован
-
Посещение
-
Победитель дней
24
Сообщения, опубликованные Nurkz
-
-
Заходим в mob.c и находим строки :
} else if( mvp_sd && !md->state.npc_killmonster ) { pc_setparam(mvp_sd, SP_KILLEDRID, md->mob_id);
И далее вписываем :
Для rA :
pc_setreg(mvp_sd, add_str("@mobdead_m"), md->bl.m); pc_setreg(mvp_sd, add_str("@mobdead_x"), md->bl.x); pc_setreg(mvp_sd, add_str("@mobdead_y"), md->bl.y);
Для Herc соответственно :
pc_setreg(mvp_sd, script->add_str("@mobdead_m"), md->bl.m); pc_setreg(mvp_sd, script->add_str("@mobdead_x"), md->bl.x); pc_setreg(mvp_sd, script->add_str("@mobdead_y"), md->bl.y);
Сохраняем, компилим, и вуаля, у нас есть все необходимое.
- script custom_drop -1,{ end; OnNPCKillEvent: switch(killedrid) { default: break; case 1002: makeitem 20000,1,mapid2name(@mobdead_m),@mobdead_x,@mobdead_y; break; } end; }
Имхо, куда легче, чем лопатить всех мобов и делать их эвентными.
- 1
-
getpartymember getcharid(1), 2; for (set .@i, 0; .@i < $@partymembercount; set .@i, .@i + 1) { if (attachrid($@partymemberaid[.@i])) { set round1, round1 + 1; if (round1 == 5) { warp "prontera",0,0; } } }
- 1
-
percentheal 100, (Sp > (MaxSp / 2)? 0 : 50); close;
- 1
-
18 час назад, Leprechaun сказал:
розбиреться
Что это за слово?
-
Если кто-то из пати находится на другой локации, ему будут "мерещиться призраки", нужна проверка на локацию, да и в итоге банальный refresh или fly wing сбивает тот самый крестик, лучше делать через src имхо.
-
prontera,155,167,3 script Валентинка 611,{ if(#q_profession == 1) { dispbottom "Ты уже получал Подарок Валентинки!"; end; } mes "^FF4500[Любовь]^000000"; mes "Привет, ^FF1493С днём Святого Валентина вас!^000000"; mes "В этот чудесный праздник я решила сделать вам подарок"; next; mes "^FF4500[Любовь]^000000"; mes "Если вы хотите подарочек! Принесите мне скромные предметы"; mes "Вы поздравите меня а я вас"; next; if (select("Хорошо, Что бы ты хотела?","У меня других дел хватает") == 1) { mes "^FF4500[Любовь]^000000"; mes "Мне очень хочется тортика, Я сладкоежка"; mes "Добыть Можно тортик со всех монстров на локациях с шансом 10%"; mes "Принеси мне 10 тортиков и я дам тебе подарочек"; next; if (countitem(6099) < 10) { mes "^FF4500[Любовь]^000000"; mes "У тебя нету Тортиков, Приходи с тортиками"; close; } delitem 6099,10; getitem 13822,1; #q_profession = 1; } close; }
- 1
-
Проверку нужно вписать в clif_parse_UseSkillToId
uint16 idx = skill_get_index(HLIF_CHANGE);
struct homun_data *hd = sd->hd;
if (skill_id == AL_TELEPORT) {
hd->blockskill[idx] = 0;
}Заранее извиняюсь если где напутал, сижу с телефона, к ПК пока нет возможности подойти.
Под rAthena.
-
Спасибо!
Сделал так:
ditem = mob_setdropitem(7227, 1, 1002);Но итем не падает с порингов...
ditem = mob_setdropitem(7227, 1, md->mob_id);
-
Где Вы вообще видели защиту от ддос атак? Таковой нет в природе. Защита? То что предлагают хостинг провайдеры: это всего лишь банальная фильтрация, а в большинстве случаев просто маркетинг. Да и кому нужен проект со старой игрой и онлайном в 100-200 человек(это в идеале). Так что Ваше настроение, больше похоже на маразм. Извините пожалуйста, не хотел обидеть.
-
В участке кода
set @MaxDstamp,31; //maximum number of dungeons
Переменная должна быть не более 30, ибо там цикл перемножения.
set @MaxDstamp,30; //maximum number of dungeon
И так-же это косается данжей, больше 30 вы добавить не сможете, нужно переписывать нпц.
Используйте стандартного варпера, чем он плох?
-
Дайте весь скрипт.
-
doubrius,44,55,4 script Волшебник Сардар 494,{
function checkcountstats;
function cost;
mes .npc$;
mes "Привет, ^ff0000" +strcharinfo(0)+ "^000000. Хочешь Что бы я добавил статов или скилов?";
next;
mes "Если у тебя есть премиум Карточка То покупка будет дешевле на 500к Зени!";
next;
if (select("Да:Нет") - 1) close;
mes .npc$;
mes "А что именно Будешь покупать?";
next;
if( prompt( "Статы", "Очки навыков", "Ничего") == 3 ) close;
else if( @menu == 1 ) { // stats points
mes .npc$;
mes "Сколько очков ты хочешь? За каждое добавленное очко, я буду забирать 1.000.000 Зени";
next;
input .@amount;
if ( Zeny < ( .@amount * cost() ) || .@amount <= 0 ) {
mes .npc$;
mes "У тебя нет столько денег!";
close;
}
else {
mes .npc$;
mes "А куда именно " +.@amount+ " очков мы будем добавлять??";
next;
.@s = select("СТР:АГИ:ВИТ:ИНТ:ДЕКС:ЛАК:Ничего") -1;
if( .@s == 6 ) close;
else if( checkcountstats( .@s ) ) { // can't bypass the max stats def in player.conf
mes .npc$;
mes "У тебя уже достигнут лимит данного Стата!.";
close;
}
mes .npc$;
mes "Удачи!";
statusup2 .stat_up[.@s], .@amount;
set Zeny, Zeny - ( .@amount * cost() );
close;
}
}
// skills points
mes .npc$;
mes "Сколько очков вы хотите? За каждое добавленное очко, я буду забирать 1.000.000 Зени";
next;
input .@amount;
if ( Zeny < ( .@amount * cost() ) || .@amount <= 0 ) {
mes .npc$;
mes "У Вас недостаточно средств!";
close;
} else {
set Zeny, Zeny - ( .@amount * cost() );
set SkillPoint, SkillPoint + .@amount;
mes .npc$;
mes "Удачно Куплено " +.@amount+ " Очков навыков.";
close;
}
function checkcountstats {
.@eac = eaclass();
.@s = getarg(0);
if( .@eac&EAJL_BABY && .@eac&EAJL_THIRD ) {
if( readparam( .stat_up[.@s] ) >= .max_param_baby_3 )
return 1;
else
return 0;
} else if( .@eac&EAJL_BABY ) {
if( readparam( .stat_up[.@s] ) >= .max_param_baby )
return 1;
else
return 0;
} else if( .@eac&EAJL_THIRD ) {
if( readparam( .stat_up[.@s] ) >= .max_param_3 )
return 1;
else
return 0;
} else {
if( readparam( .stat_up[.@s] ) >= .max_param )
return 1;
else
return 0;
}
}
function cost {
if (countitem(7056)){
return 1000000;
} else {
return 1500000;
}
}
OnInit:
set .npc$,"[ " +strnpcinfo(1)+ " ]"; // NPC Name
setarray .stat_up, bStr, bAgi, bVit, bInt, bDex, bLuk;
.max_param = getbattleflag( "max_parameter" );
.max_param_3 = getbattleflag( "max_third_parameter" );
.max_param_baby = getbattleflag( "max_baby_parameter" );
.max_param_baby_3 = getbattleflag( "max_baby_third_parameter" );
end;
}- 1
-
В src/common/mapindex.h
Добавить строку:
#define MAP_DOUBRIUS "doubrius"
- 1
-
- script firstlogin -1,{
end;
OnPCLoginEvent:
if(#language) end;
set #language, select("Русский:English");
mes (@menu == 1?"Выбран русский язык!":"English language selected!");
close;
} -
нужно заменить :
set .@instance_id, instance_create("Endless Cellar", getcharid(1));на :
set .@instance_id, instance_create("Endless Cellar");и вместо :
warp has_instance("5@new",156,65);напиши :
instance_enter("Endless Cellar");а лучше даже что-то такое :
switch(instance_enter("Endless Cellar")) {
case 3:
mes "An unknown error has occurred.";
close;
case 2:
mes "The memorial dungeon Endless Cellar does not exist.";
mes "The party leader did not generate the dungeon yet.";
close;
case 1:
mes "You can enter the dungeon after making the party.";
close;
case 0:
end;
}- 1
-
Сдесь написанно что то про сценарий и группу игроков Тоесть если я правильно понял если не в пати персонаж то сценарий остановится и он не телепортнётся)
[Error]: Loading NPC file: npc/instances/EndlessCellar.txt
script error on npc/instances/EndlessCellar.txt line 87
Unexpected newline at string.
82 : mes "^0000FFEndless Cellar^000000 - Try to reserve";
83 : mes "After making a reservation, you have to talk to NPC
behind and";
84 : mes "select the menu 'Enter the Dungeon' to enter the du
ngeon";
85 : close2;
86 : set .@instance_id,instance_create("Endless Cellar",getch
arid(1))";
* 87 : if(.@instance_id < 0){
88 : mes "Failed to create Memorial Dungeon.";
89 : mes "^FF0000Memorial Dungeon instances reached i
ts limit.^000000";
90 : mes "Please report this error to an administrato
r or GM.";
91 : close;
92 : }Ещё бы понять в чём тут ошибка и всё))) на 294 ой строке вроде убрал)
set .@instance_id, instance_create("Endless Cellar", getcharid(1));- 1
-
warp instance_warpall("4@new", 354, 137);
warp instance_warpall("5@new", 156, 65);- 1
-
Эти окна захардкодены в клиенте Только хекс
-
../src/map/battle.c -> battle_calc_damage
- 1
-
Ты уверен что нельзя ?
https://rathena.org/board/topic/57717-r15503-txt-save-engine-removed/
-
Да можно перейти 100% кто шарит тот ответит.
нельзя
-
я писал о создании лоу-рейт сервера 99/70, но сейчас я больше склоняюсь к серверу 255/99
"Ах, эва я любила тебя.."
-
Вроде как сработало, спасибо. Это как-то отразиться на стандартных инстах?
https://rathena.org/...system-rewrite/ вот, если не читал.
Не думаю что отразится, просто он будет брать mapindex карт из db напрямую, без каких-либо сверок с названием карт (типо есть ли там символ @ и так далее)..
Как они пишут :
While the client restricts map names to 8 characters in the [number]@[name] format, the server is able to send a false name to the clients, allowing any map to be instanced.Но судя по всему, старые клиенты плохо принимают false name
- 1
-
Как вариант :
int instance_mapname2mapid(const char *name, short instance_id)
{
struct instance_data *im;
int m = map_mapname2mapid(name);
char iname[MAP_NAME_LENGTH];
int i;
if(m < 0) {
ShowError("instance_mapname2mapid: map name %s does not exist.\n",name);
return -1;
}
strcpy(iname,name);
if(instance_id <= 0 || instance_id > MAX_INSTANCE_DATA)
return -1;
im = &instance_data[instance_id];
if(im->state != INSTANCE_BUSY)
return -1;
for(i = 0; i < MAX_MAP_PER_INSTANCE; i++) {
if(im->map[i].src_m == m) {
return map_mapname2mapid(iname);
}
}
return -1;
}Попробуй.. Я вообще офигел от того, что они там наворотили с этими инстансами..
- 1
Переписать навык и стабилизировать
в Помощь в src
Опубликовано · Изменено пользователем Nurkz
заходим в skill_db.txt и ищем:
меняем на:
Далее идем в skill_cast_db.txt и ищем:
меняем на:
Теперь осталось дело за малым =)
Идем в src/map/battle.c и ищем строки:
листаем чуть ниже и видим:
добавляем после:
Далее идем в src/map/skill.c и ищем строки:
Мотаем ниже пока не находим:
Меняем на:
10000 это 100% шанс наложения статуса =)
Далее заходим в src/map/status.c и ищем:
Добавляем после:
Вот и всё =)
А насчет Devo, он вроде и так по дефолту работает так как ты хочешь О_О