BUILDIN_FUNC(bonus_script) {
uint8 i, flag = 0;
int16 icon = SI_BLANK;
uint32 dur;
char type = 0;
TBL_PC* sd;
const char *script_str = NULL;
struct script_code *script = NULL;
if (script_hasdata(st,7))
sd = map_charid2sd(script_getnum(st,7));
else
sd = script_rid2sd(st);
if (sd == NULL)
return SCRIPT_CMD_FAILURE;
script_str = script_getstr(st,2);
dur = 1000 * abs(script_getnum(st,3));
FETCH(4,flag);
FETCH(5,type);
FETCH(6,icon);
if (script_str[0] == '\0' || !dur) {
//ShowWarning("buildin_bonus_script: Invalid script. Skipping...\n");
return SCRIPT_CMD_FAILURE;
}
//Skip duplicate entry
ARR_FIND(0,MAX_PC_BONUS_SCRIPT,i,&sd->bonus_script[i] && sd->bonus_script[i].script_str && strcmp(sd->bonus_script[i].script_str,script_str) == 0);
if (i < MAX_PC_BONUS_SCRIPT) {
//ShowWarning("buildin_bonus_script: Duplicate entry with bonus '%d'. Skipping...\n",i);
return SCRIPT_CMD_SUCCESS;
}
if (!(script = parse_script(script_str,"bonus_script",0,1))) {
ShowWarning("buildin_bonus_script: Failed to parse script '%s' (cid:%d). Skipping...\n",script_str,sd->status.char_id);
return SCRIPT_CMD_FAILURE;
}
//Find the empty slot
ARR_FIND(0,MAX_PC_BONUS_SCRIPT,i,!sd->bonus_script[i].script);
if (i >= MAX_PC_BONUS_SCRIPT) {
ShowWarning("buildin_itemscript: Maximum script_bonus is reached (cid:%d max: %d). Skipping...\n",sd->status.char_id,MAX_PC_BONUS_SCRIPT);
return SCRIPT_CMD_SUCCESS;
}
//Add the script data
memcpy(sd->bonus_script[i].script_str,script_str,strlen(script_str)+1);
sd->bonus_script[i].script = script;
sd->bonus_script[i].tick = gettick() + dur;
sd->bonus_script[i].flag = flag;
sd->bonus_script[i].type = type;
sd->bonus_script[i].icon = icon;
if (sd->bonus_script[i].icon != SI_BLANK) //Gives status icon if exist
clif_status_change(&sd->bl,sd->bonus_script[i].icon,1,dur,1,0,0);
status_calc_pc(sd,false);
return SCRIPT_CMD_SUCCESS;
}
^The bonus_script section; But I dont know what you mean xD