Sigoles
Discord: @sigoles
- Joined
- Nov 20, 2015
- Messages
- 1,209
- Solutions
- 2
- Reaction score
- 154
Hello, I'm trying to block if player try to transfer coins to rook sample, sorcerer sample, druid sample...
Original function:
I tryed this but not have sucess:
Original function:
C++:
void Game::playerTransferCoins(uint32_t playerId, const std::string& recipient, uint16_t amount)
{
Player* player = getPlayerByID(playerId);
if (!player) {
return;
}
if (player->coinBalance < amount) {
return player->sendStoreError(STORE_ERROR_TRANSFER, "You don't have enough coins to transfer.");
}
if (amount % g_config.getNumber(ConfigManager::STORE_COINS_PACKET_SIZE) != 0) {
return player->sendStoreError(STORE_ERROR_TRANSFER, "You can't transfer this amount of coins.");
}
Player *tmpPlayer = g_game.getPlayerByName(recipient);
if (!tmpPlayer) {
tmpPlayer = new Player(nullptr);
if (!IOLoginData::loadPlayerByName(tmpPlayer, recipient)) {
delete tmpPlayer;
return player->sendStoreError(STORE_ERROR_TRANSFER, "Recipient player not found");
}
}
if (tmpPlayer->getAccount() == player->getAccount()) {
return player->sendStoreError(STORE_ERROR_TRANSFER, "You can't transfer coins to the same account.");
}
std::string description(player->getName() + " transferred to " + recipient);
IOAccount::addCoins(player->getAccount(), -static_cast<int32_t>(amount));
player->coinBalance -= amount;
g_store->onTransactionCompleted(player->getAccount(), -static_cast<int32_t>(amount), description);
IOAccount::addCoins(tmpPlayer->getAccount(), amount);
g_store->onTransactionCompleted(tmpPlayer->getAccount(), amount, description);
if (tmpPlayer->isOffline()) {
delete tmpPlayer;
}
return player->sendStorePurchaseCompleted("You have successfully gifted Tibia Coins.");
}
I tryed this but not have sucess:
C++:
void Game::playerTransferCoins(uint32_t playerId, const std::string& recipient, uint16_t amount)
{
Player* player = getPlayerByID(playerId);
if (!player) {
return;
}
if (player->coinBalance < amount) {
return player->sendStoreError(STORE_ERROR_TRANSFER, "You don't have enough coins to transfer.");
}
if (amount % g_config.getNumber(ConfigManager::STORE_COINS_PACKET_SIZE) != 0) {
return player->sendStoreError(STORE_ERROR_TRANSFER, "You can't transfer this amount of coins.");
}
Player *tmpPlayer = g_game.getPlayerByName(recipient);
if (!tmpPlayer) {
tmpPlayer = new Player(nullptr);
if (!IOLoginData::loadPlayerByName(tmpPlayer, recipient)) {
delete tmpPlayer;
return player->sendStoreError(STORE_ERROR_TRANSFER, "Recipient player not found");
}
}
Player *tmpPlayerManager = g_game.getPlayerByName(recipient);
if (!tmpPlayerManager) {
tmpPlayerManager = g_game.getPlayerByName("Rook Sample");
if (!IOLoginData::loadPlayerByName(tmpPlayerManager, recipient)) {
delete tmpPlayerManager;
return player->sendStoreError(STORE_ERROR_TRANSFER, "Recipient player not found");
}
}
if (tmpPlayer->getAccount() == player->getAccount()) {
return player->sendStoreError(STORE_ERROR_TRANSFER, "You can't transfer coins to the same account.");
}
std::string description(player->getName() + " transferred to " + recipient);
IOAccount::addCoins(player->getAccount(), -static_cast<int32_t>(amount));
player->coinBalance -= amount;
g_store->onTransactionCompleted(player->getAccount(), -static_cast<int32_t>(amount), description);
IOAccount::addCoins(tmpPlayer->getAccount(), amount);
g_store->onTransactionCompleted(tmpPlayer->getAccount(), amount, description);
if (tmpPlayer->isOffline()) {
delete tmpPlayer;
}
return player->sendStorePurchaseCompleted("You have successfully gifted Tibia Coins.");
}
Last edited by a moderator: