@abcoathup Exactly. The idea is to setup a IndividuallyCappedCrowdsale and have another contract which will determine how much a certain user will be allowed to purchase.
That other contract would have to call the setCap function.
I am still thinking what the right pattern would be to connect them:
Deploy the Crowdsale first and provide the crowdsale address to the constructor of the other contract
Deploy both contracts “as is” and execute a “setCrowdsaleAddress” thereafter (make it even "update-able by an admin , what could be regarded either as “convenient” or a “security risk”)
Have a 3rd “governance contract” to hold the addresses of each contract, which can be requested by the other contract. (potentially also update-able)
I think technically it all should work, I am just wondering what would be “good practice” ?
[UPDATE] ok, might work with a normal program, but if I change (set) a new address for an external contract, that does not (automatically) result in the contract updating the instance / reference to the external contract … so option 2) might not be a good solution, unless the ‘set’ is forced to be executed only once before use.
One more question : Can I sell a token for something else than ETH, like DAI, … ?