I found custom source and script for making plagiarism NPC but it was only tested on eathena. When I applied it on Hercules the script worked but when I actually tested it map server crashed! Would you take a look and see if this source needs to be modified in order to make it work on Hercules? or is the problem because of me using Hercules with custom plugins?
script.c
Script part
Turns out the custom plug-in I had, had a compatability problem with pre-re setup. By directly moving plugins into trunk It worked perfectly fine.
script.c
BUILDIN(plagiarism)
{
int type;
int skillid = script_getnum(st,2);
int idx = 0, cidx = 0;
int skilllv = script_getnum(st,3);
struct map_session_data *sd = map->id2sd(st->rid);
nullpo_retr(-1, sd);
if (skillid <= 0 || skilllv <= 0) {
ShowError("스킬id나 스킬lv은 1보다 작을 수 없습니다.n", skillid, skilllv);
script->reportsrc(st);
script_pushint (st, -1);
return false;
}
if (script_hasdata(st, 4) && ((type = pc->checkskill (sd, SC_REPRODUCE)) > 0)) {
if (sd->reproduceskill_id) {
idx = skill->get_index(sd->reproduceskill_id);
if(sd->status.skill[idx].flag == SKILL_FLAG_PLAGIARIZED ) {
sd->status.skill[idx].id = 0;
sd->status.skill[idx].lv = 0;
sd->status.skill[idx].flag = 0;
clif->deleteskill(sd,sd->reproduceskill_id);
}
}
skilllv = (type < skilllv ? type : skilllv);
cidx = skill->get_index(skillid);
sd->reproduceskill_id = skillid;
pc_setglobalreg(sd, "REPRODUCE_SKILL", skillid);
pc_setglobalreg(sd, "REPRODUCE_SKILL_LV", skilllv);
sd->status.skill[cidx].id = skillid;
sd->status.skill[cidx].lv = skilllv;
sd->status.skill[cidx].flag = SKILL_FLAG_PLAGIARIZED;
clif->addskill(sd,skillid);
}
else if ((type = pc->checkskill (sd,RG_PLAGIARISM)) > 0) {
if (sd->cloneskill_id){
idx = skill->get_index(sd->cloneskill_id);
if(sd->status.skill[sd->cloneskill_id].flag == SKILL_FLAG_PLAGIARIZED) {
sd->status.skill[idx].id = 0;
sd->status.skill[idx].lv = 0;
sd->status.skill[idx].flag = 0;
}
}
skilllv = (type < skilllv ? type : skilllv);
cidx = skill->get_index(sd->cloneskill_id);
sd->cloneskill_id = skillid;
pc_setglobalreg(sd, "CLONE_SKILL", skillid);
pc_setglobalreg(sd, "CLONE_SKILL_LV", skilllv);
sd->status.skill[cidx].id = skillid;
sd->status.skill[cidx].lv = skilllv;
sd->status.skill[cidx].flag = SKILL_FLAG_PLAGIARIZED;
clif->skillinfoblock(sd);
} else {
script_pushint (st, 1);
script->reportsrc(st);
return false;
}
script_pushint (st, 0);
return true;
}
BUILDIN_DEF(plagiarism, "ii?"), // 패드곰님의 스크립트입니다.
Script part
prontera.gat,166,198,3 script rogue 747,{
plagiarism "5",GetSkilllv(225);
close;
}
Turns out the custom plug-in I had, had a compatability problem with pre-re setup. By directly moving plugins into trunk It worked perfectly fine.
Last edited by a moderator: