Plagiarism source and script from eathena gave me a map-crash!

deviruzy

New member
Messages
67
Points
0
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
 

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:
Turns out the Hercules I had, had a custom plug-in, so I had to ask the person who made it. He or She touched a few things for me and now it works. According to his or her words, plug-in he put in wasn't applied to pre-re version of it. Now it does and everything is fine.

 
Back
Top