BUILDIN_FUNC(rentitem) { struct map_session_data *sd; struct script_data *data; struct item it; int seconds; int nameid = 0, flag; data = script_getdata(st,2); get_val(st,data); if( (sd = script_rid2sd(st)) == NULL ) return 0; if( data_isstring(data) ) { const char *name = conv_str(st,data); struct item_data *itd = itemdb_searchname(name); if( itd == NULL ) { ShowError("buildin_rentitem: Nonexistant item %s requested.\n", name); return 1; } nameid = itd->nameid; } else if( data_isint(data) ) { nameid = conv_num(st,data); if( nameid <= 0 || !itemdb_exists(nameid) ) { ShowError("buildin_rentitem: Nonexistant item %d requested.\n", nameid); return 1; } } else { ShowError("buildin_rentitem: invalid data type for argument #1 (%d).\n", data->type); return 1; } seconds = script_getnum(st,3); memset(&it, 0, sizeof(it)); it.nameid = nameid; it.identify = 1; it.expire_time = (unsigned int)(time(NULL) + seconds); if( (flag = pc_additem(sd, &it, 1)) ) { clif_additem(sd, 0, 0, flag); return 1; } clif_rental_time(sd->fd, nameid, seconds); pc_inventory_rental_add(sd, seconds); if( log_config.enable_logs&LOG_SCRIPT_TRANSACTIONS ) log_pick_pc(sd, "N", nameid, 1, NULL); return 0; }