Balıkadam
Newbie
- BNB
- 0,00000150
Herkese merhabalar. @SatoshiTURK hocama bir soru sormuştum. Sorunun cevabını müsait olduğunda verdiğinde başka kişiler de faydalanabilsin diye sorumu bir de buraya yazmak istedim. Sorum aşağıdaki kodda yorum satırı olarak bulunmaktadır.
//SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <=0.9.0;
contract MFC {
address payable owner;
uint public minPrice = 1 ether;
uint public cur_Price;
string public categoryName;
constructor () {
owner = payable(msg.sender);
}
event AddMessage (address recipient, uint messageId);
event DeleteMessage (uint tweetId, bool isDeleted);
struct Message {
uint id;
address username;
string categoryName;
string messageText;
bool isDeleted;
uint curPrice;
}
Message[] private messages;
mapping(uint256 => Message) messageToOwner;
mapping(string => uint) cPr;
function getCpr (string memory category) public view returns (uint) {
return cPr[category];
}
// Aşağıdaki fonksiyonda kategori adı ve mesaj metni ekleyebiliyorum. Mesaj eklerken ücret tahsil ediyor. Yeni mesaj atmak isteyen kişi
// önceki mesaj için ödenenden fazla miktarda ödeme yapmak zorunda. Genel kural olarak bunu yapabildim.
// Ancak bunu her kategori için ayrı ayrı yapmak istiyorum. Örneğin A kategorisinde birisi 1 Ethereum ödeyerek mesaj atmış olsun
// B kategorisinde ise hiç mesaj atılmamış olsun. Yeni gelen kişi A kategorisi için 2 Ethereum ödemek zorundayken B kategorisi için
// daha önce mesaj olmadığı için 1 Ethereum ödesin.
function addMessage(string memory _categoryName, string memory _messageText, bool _isDeleted) external payable {
require(msg.value > (minPrice + cur_Price) - 1); // Yukarıdaki açıklamaya göre buraya bir kural eklemek istiyorum.
cur_Price = msg.value;
categoryName = _categoryName;
uint messageId = messages.length;
messages.push(
Message({
id : messageId,
username : msg.sender,
categoryName : _categoryName,
messageText : _messageText,
isDeleted : _isDeleted,
curPrice : cur_Price
})
);
cPr[_categoryName] = msg.value;
emit AddMessage(msg.sender, messageId);
}
function getInfo(uint _messageId) public view returns (Message memory) {
require(_messageId < messages.length);
return messages[_messageId];
}
}
Moderatör tarafında düzenlendi: