samandriel
Active Member
- Joined
- Oct 19, 2016
- Messages
- 242
- Solutions
- 1
- Reaction score
- 46
I have to check if in the start there is a [RARE], [EPIC] or [LEGENDARY]
How to?
I tried this with some part of scripts i found here:
But when i try to to test this script with a [RARE] battle axe:
It prints:
what is wrong?
full script:
How to?
I tried this with some part of scripts i found here:
Code:
function getRarity(str)
print("starts getRarity")
local value = 0
local n = str:match("%[(.-)%]")
print("rarity:")
print(n)
if n == "RARE" then
value = 1
elseif n == "EPIC" then
value = 2
elseif n == "LEGENDARY" then
value = 3
end
print("value:")
print(value)
print("ends getRarity")
return value
end
But when i try to to test this script with a [RARE] battle axe:
Code:
08:30 You see a [RARE] battle axe (Atk:28, Def:12). It weighs 50.00 oz.
08:31 You successfully add 1 battle axe for 500 gps to offerts database.
It prints:
Code:
2378
1
battle axe
battle axe
starts getRarity
rarity:
value:
0
ends getRarity
0
what is wrong?
full script:
Code:
--[[
Offline player to player item trader (Auction System) by vDk
Script version: 1.2a [ -- FIXED CLONE ITEMS BUG -- ]
]]--
local config = {
levelRequiredToAdd = 5,
SendOffersOnlyInPZ = true,
blocked_items = {2165, 2152, 2148, 2160, 2166, 2167, 2168, 2169, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2343, 2433, 2640, 6132, 6300, 6301, 9932, 9933, 6093, 2123}
}
local function updatePlayerBalance(name, value)
db.query('UPDATE players SET balance=' .. value .. ' WHERE name=' .. db.escapeString(name) .. ' LIMIT 1')
end
function getRarity(str)
print("starts getRarity")
local value = 0
local n = str:match("%[(.-)%]")
print("rarity:")
print(n)
if n == "RARE" then
value = 1
elseif n == "EPIC" then
value = 2
elseif n == "LEGENDARY" then
value = 3
end
print("value:")
print(value)
print("ends getRarity")
return value
end
function onSay(cid, words, param, channel)
if(param == '') then
local msg = "Market:\n\n/market buy, ID\n/market remove, ID\n/market add, ItemPrice\n\nMore information look in us website!"
doPlayerPopupFYI(cid, msg)
return true
end
local maxOffersPerPlayer = math.floor(getPlayerLevel(cid) / 5)
local pricePerOffer = 500
local t = string.explode(param, ",")
if(t[1] == "add") then
local Item_Price = t[2]
if(not Item_Price) then
local msg = "/market add, ItemPrice"
doPlayerPopupFYI(cid, msg)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg)
return true
end
if(not tonumber(Item_Price)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't set valid price or items count.")
return true
end
if(string.len(Item_Price) > 7) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This price or item count is too high.")
return true
end
if getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid == 0 then
return doPlayerSendCancel(cid, "You have no item in your equipament arrow slot to sell!")
end
local item = getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid
print(item)
local Item_Count = getPlayerSlotItem(cid, CONST_SLOT_AMMO).type
if(tonumber(Item_Count) < 1) then
Item_Count = 1
end
print(Item_Count)
local Item_Name = getItemNameById(item)
print(Item_Name)
if(getPlayerLevel(cid) < config.levelRequiredToAdd) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't have required (" .. config.levelRequiredToAdd .. ") level.")
return true
end
if(isInArray(config.blocked_items, item)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This item is blocked.")
return true
end
local check = db.getResult("SELECT `id` FROM `auction_system` WHERE `player` = " .. getPlayerGUID(cid) .. ";")
if(check:getID() == -1) then
elseif(check:getRows(true) >= maxOffersPerPlayer) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't add more offers (max for your level: " .. maxOffersPerPlayer .. ")")
return true
end
if(config.SendOffersOnlyInPZ) then
if(not getTilePzInfo(getPlayerPosition(cid))) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You must be in PZ area when you add offert to database.")
return true
end
end
if((tonumber(Item_Price) < 1)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to type a number higher than 0.")
return true
end
if(getPlayerBalance(cid) < 500) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to have 500GPs in your bank balance to make a offer.")
return true
end
-- check if it is enchanted
-- check if before name there is:
-- [RARE] itemname
-- [EPIC] itemname
-- [LEGENDARY] itemname
local itemname = Item_Name
print(itemname)
local test = getRarity(itemname)
print(test)
doPlayerSetBalance(cid, getPlayerBalance(cid) - 500)
updatePlayerBalance(getCreatureByName(cid), getPlayerBalance(cid))
local itemcount, costgp = math.floor(Item_Count), math.floor(Item_Price)
doPlayerRemoveItem(cid, item, itemcount)
db.executeQuery("INSERT INTO `auction_system` (`player`, `item_name`, `item_id`, `count`, `cost`, `date`) VALUES (" .. getPlayerGUID(cid) .. ", \"" .. Item_Name .. "\", " .. getItemIdByName(Item_Name) .. ", " .. itemcount .. ", " .. costgp ..", " .. os.time() .. ")")
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You successfully add " .. itemcount .." " .. Item_Name .." for " .. costgp .. " gps to offerts database.")
end
if(t[1] == "buy") then
if(not tonumber(t[2])) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.")
return true
end
local buy = db.getResult("SELECT * FROM `auction_system` WHERE `id` = " .. (tonumber(t[2])) .. ";")
if(buy:getID() ~= -1) then
if (getPlayerBalance(cid) < buy:getDataInt("cost")) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't have enoguh Bank Balance.")
buy:free()
return true
end
if(getPlayerName(cid) == getPlayerNameByGUID(buy:getDataInt("player"))) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, you can't buy your own items.")
buy:free()
return true
end
if(getPlayerFreeCap(cid) < getItemWeightById(buy:getDataInt("item_id"), buy:getDataInt("count")))then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You try to buy a " .. buy:getDataString("item_name") .. ". It weight " .. getItemWeightById(buy:getDataInt("item_id"), buy:getDataInt("count")) .. " cap oz. and you have only " .. getPlayerFreeCap(cid) .. " oz. free capacity. Put some items to depot and try again.")
buy:free()
return true
end
if(isItemStackable((buy:getDataString("item_id")))) then
doPlayerAddItem(cid, buy:getDataString("item_id"), buy:getDataInt("count"))
else
for i = 1, buy:getDataInt("count") do
doPlayerAddItem(cid, buy:getDataString("item_id"), 1)
end
end
doPlayerSetBalance(cid, getPlayerBalance(cid) - buy:getDataInt("cost"))
updatePlayerBalance(getCreatureName(cid), getPlayerBalance(cid))
db.executeQuery("DELETE FROM `auction_system` WHERE `id` = " .. t[2] .. ";")
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You bought " .. buy:getDataInt("count") .. " ".. buy:getDataString("item_name") .. " for " .. buy:getDataInt("cost") .. " gps!")
local tid = getPlayerByGUID(buy:getDataInt("player"))
if(isPlayer(tid)) then
doPlayerSetBalance(tid, getPlayerBalance(tid) + buy:getDataInt("cost"))
else
db.executeQuery("UPDATE `players` SET `balance` = `balance` + " .. buy:getDataInt("cost") .. " WHERE `id` = " .. buy:getDataInt("player") .. ";")
end
buy:free()
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.")
end
end
if(t[1] == "remove") then
if((not tonumber(t[2]))) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.")
return true
end
if(config.SendOffersOnlyInPZ) then
if(not getTilePzInfo(getPlayerPosition(cid))) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You must be in PZ area when you remove offerts from database.")
return true
end
end
local delete = db.getResult("SELECT * FROM `auction_system` WHERE `id` = " .. (tonumber(t[2])) .. ";")
if(delete:getID() ~= -1) then
if(getPlayerGUID(cid) == delete:getDataInt("player")) then
db.executeQuery("DELETE FROM `auction_system` WHERE `id` = " .. t[2] .. ";")
if(isItemStackable(delete:getDataString("item_id"))) then
doPlayerAddItem(cid, delete:getDataString("item_id"), delete:getDataInt("count"))
else
for i = 1, delete:getDataInt("count") do
doPlayerAddItem(cid, delete:getDataString("item_id"), 1)
end
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your offert has been deleted from offerts database.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This is not your offert!")
end
delete:free()
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.")
end
end
return true
end
Last edited: