mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-04-30 01:29:21 +02:00
fix houses to be buyable by website only and rent would be taken from player balance
This commit is contained in:
parent
ad7a761167
commit
aa779bbdd9
@ -1,36 +1,4 @@
|
|||||||
function onSay(player, words, param)
|
function onSay(player, words, param)
|
||||||
if player:getPremiumDays() <= 0 then
|
player:sendTextMessage(MESSAGE_INFO_DESCR, "Buying a house is available only through auction which is available at website: https://sabrehaven.com/house.php")
|
||||||
player:sendCancelMessage("You need a premium account.")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
local position = player:getPosition()
|
|
||||||
position:getNextPosition(player:getDirection())
|
|
||||||
|
|
||||||
local tile = Tile(position)
|
|
||||||
local house = tile and tile:getHouse()
|
|
||||||
if house == nil then
|
|
||||||
player:sendCancelMessage("You have to be looking at the door of the house you would like to buy.")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
if house:getOwnerGuid() > 0 then
|
|
||||||
player:sendCancelMessage("This house already has an owner.")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
if player:getHouse() then
|
|
||||||
player:sendCancelMessage("You are already the owner of a house.")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
local price = house:getRent() * 5
|
|
||||||
if not player:removeMoney(price) then
|
|
||||||
player:sendCancelMessage("You do not have enough money.")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
house:setOwnerGuid(player:getGuid())
|
|
||||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "You have successfully bought this house, be sure to have the money for the rent in the bank.")
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -85,17 +85,19 @@ function onSay(player, words, param)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- ORDER TYPE 7 (Direct house purchase)
|
-- ORDER TYPE 7 (Direct house purchase)
|
||||||
if orderType == 7 then
|
if q_type == 7 then
|
||||||
served = true
|
served = true
|
||||||
local house = House(orderItemId)
|
local house = House(q_itemid)
|
||||||
-- Logged in player is not neccesarily the player that bough the house. So we need to load player from db.
|
-- Logged in player is not neccesarily the player that bough the house. So we need to load player from db.
|
||||||
local buyerQuery = db.storeQuery("SELECT `name` FROM `players` WHERE `id` = "..orderCount.." LIMIT 1")
|
print(q_count)
|
||||||
|
local buyerQuery = db.storeQuery("SELECT `name` FROM `players` WHERE `id` = "..q_count.." LIMIT 1")
|
||||||
|
|
||||||
if buyerQuery ~= false then
|
if buyerQuery ~= false then
|
||||||
local buyerName = result.getDataString(buyerQuery, "name")
|
local buyerName = result.getDataString(buyerQuery, "name")
|
||||||
result.free(buyerQuery)
|
result.free(buyerQuery)
|
||||||
if house then
|
if house then
|
||||||
db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. orderId .. ";")
|
db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";")
|
||||||
house:setOwnerGuid(orderCount)
|
house:setOwnerGuid(q_count)
|
||||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "You have successfully bought the house "..house:getName().." on "..buyerName..", be sure to have the money for the rent in the bank.")
|
player:sendTextMessage(MESSAGE_INFO_DESCR, "You have successfully bought the house "..house:getName().." on "..buyerName..", be sure to have the money for the rent in the bank.")
|
||||||
print("Process complete. [".. buyerName .."] has recieved house: ["..house:getName().."]")
|
print("Process complete. [".. buyerName .."] has recieved house: ["..house:getName().."]")
|
||||||
end
|
end
|
||||||
|
@ -109,11 +109,6 @@ void House::updateDoorDescription() const
|
|||||||
ss << "It belongs to house '" << houseName << "'. " << ownerName << " owns this house.";
|
ss << "It belongs to house '" << houseName << "'. " << ownerName << " owns this house.";
|
||||||
} else {
|
} else {
|
||||||
ss << "It belongs to house '" << houseName << "'. Nobody owns this house.";
|
ss << "It belongs to house '" << houseName << "'. Nobody owns this house.";
|
||||||
|
|
||||||
const int32_t housePrice = getRent();
|
|
||||||
if (housePrice != -1) {
|
|
||||||
ss << " It costs " << housePrice * 5 << " gold coins.";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& it : doorSet) {
|
for (const auto& it : doorSet) {
|
||||||
@ -667,7 +662,9 @@ void Houses::payHouses(RentPeriod_t rentPeriod) const
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_game.removeMoney(player.getDepotLocker(house->getTownId(), true), house->getRent(), FLAG_NOLIMIT)) {
|
if (player.getBankBalance() >= rent) {
|
||||||
|
player.setBankBalance(player.getBankBalance() - rent);
|
||||||
|
|
||||||
time_t paidUntil = currentTime;
|
time_t paidUntil = currentTime;
|
||||||
switch (rentPeriod) {
|
switch (rentPeriod) {
|
||||||
case RENTPERIOD_DAILY:
|
case RENTPERIOD_DAILY:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user