• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

guild get points

Sirion_Mido

Experienced Member
Joined
Jul 22, 2012
Messages
579
Reaction score
43
Location
E-G-Y-P-T
Dear otland,
This script for big guilds
if my guild have 15 members and all members level 250 and have 10 members have not same ip
it should give 100 points for each guild member who have these terms

now the problem is:
when the script check ips , if the 10 members have not same ip , it says 0 ips finded
so anyways it always say 0 ips find and there is 10 , so it no add points
when i make ips needed 0 , it adding points
so problem is in ips check
Lua:
local playersNeeded = 15
local ipsNeeded = 10
local minimumLevel = 250
local storageId = 41578
local pointsForPlayer = 100
 
local function sendPlayersList(cid, list)
	for i, pid in ipairs(list) do
		local level = getPlayerLevel(pid) < minimumLevel and " - " .. getPlayerLevel(cid) .. " level " or ""
		local valid = getCreatureStorage(pid, storageId) > 1 and " - already received!" or ""
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(pid) .. level)
	end
end
 
function onSay(cid, words, param, channel)
	if(getPlayerGuildLevel(cid) == 3) then
		local leaderGuild = getPlayerGuildId(cid)
		local players = getPlayersOnline()
		local guildMembersValid = {}
		local guildMembersInvalid = {}
		for i, pid in ipairs(players) do
			if(leaderGuild == getPlayerGuildId(pid)) then
				if(getPlayerLevel(pid) >= minimumLevel and tonumber(getCreatureStorage(pid, storageId)) < 2) then
					table.insert(guildMembersValid, pid)
				else
					table.insert(guildMembersInvalid, pid)
				end
			end
		end
 
		if(#guildMembersValid >= playersNeeded) then
			local IPs = {}
			for i, pid in ipairs(guildMembersValid) do
				local ip = getPlayerIp(pid)
				if(IPs[ip] == nil) then
					IPs[ip] = ip
				end
			end
			if(#IPs >= ipsNeeded) then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Players that received points:")
				sendPlayersList(cid, guildMembersValid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Players that did not receive points:")
				sendPlayersList(cid, guildMembersInvalid)
				local accounts = {}
				for i, pid in ipairs(guildMembersValid) do
					table.insert(accounts, getPlayerAccountId(pid))
					doCreatureSetStorage(pid, storageId, os.time())
				end
				db.executeQuery("UPDATE `accounts` SET `guild_points` = `guild_points`+" .. pointsForPlayer .. " WHERE `id` IN (" .. table.concat(accounts, ',') .. ");")
			else
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, #guildMembersValid .. " players from your guild are valid (" .. playersNeeded .. " required), but you have together only " .. #IPs .. " IPs (" .. ipsNeeded .. " required)")
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Valid players:")
				sendPlayersList(cid, guildMembersValid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Invalid players:")
				sendPlayersList(cid, guildMembersInvalid)
			end
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, #guildMembersValid .. " players from your guild are valid, " .. playersNeeded .. " required. Minimum level required is " .. minimumLevel)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Valid players:")
			sendPlayersList(cid, guildMembersValid)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Invalid players:")
			sendPlayersList(cid, guildMembersInvalid)
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.")
	end
	return true
end
 
Last edited:
Back
Top