-
-
Notifications
You must be signed in to change notification settings - Fork 198
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #63 from brewsterl/otxserv2
Fix exhaust for 7x (error al compilar) & Added CastSystem and AntiDupeSystem for 7x
- Loading branch information
Showing
23 changed files
with
2,202 additions
and
494 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,251 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<mod name="Mod Cast" version="1.0" author="Martyx" contact="[email protected]" enabled="yes"> | ||
<event type="logout" name="cast-log-out" event="script"><![CDATA[ | ||
function onLogout(cid, forceLogout) | ||
db.executeQuery("UPDATE `players` SET `broadcasting` = 0, `viewers` = 0 WHERE `id` = " .. getPlayerGUID(cid) .. " LIMIT 1") | ||
return true | ||
end | ||
]]></event> | ||
<globalevent name="viewers" interval="10000" event="script"><![CDATA[ | ||
function onThink(interval) | ||
local players = getPlayersOnline() | ||
for _, pid in ipairs(players) do | ||
local data = getPlayerSpectators(pid) | ||
if(data.broadcast) then | ||
db.executeQuery("UPDATE `players` set `viewers` = " .. table.maxn(data.names) .. " where `id` = " .. getPlayerGUID(pid) .. ";") | ||
end | ||
end | ||
return true | ||
end | ||
]]></globalevent> | ||
<talkaction words="/live" event="script"><![CDATA[ | ||
function onSay(cid, words, param, channelId) | ||
local t, data = string.explode(param, " ", 1), getPlayerSpectators(cid) | ||
if(isInArray({'off', 'no', 'disable'}, t[1])) then | ||
data.mutes = {} | ||
data.broadcast = false | ||
doPlayerSetSpectators(cid, data) | ||
db.executeQuery("UPDATE `players` SET `broadcasting` = 0, `viewers` = 0 WHERE `id` = " .. getPlayerGUID(cid)) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have disabled your live stream.") | ||
elseif(isInArray({'on', 'yes', 'enable'}, t[1])) then | ||
data.broadcast = true | ||
doPlayerSetSpectators(cid, data) | ||
db.executeQuery("UPDATE `players` SET `broadcasting` = 1 WHERE `id` = " .. getPlayerGUID(cid)) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have enabled your live stream.") | ||
elseif(isInArray({'show', 'count', 'see'}, t[1])) then | ||
if(data.broadcast) then | ||
local count = table.maxn(data.names) | ||
if(count > 0) then | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are currently watched by " .. count .. " people.") | ||
local str = "" | ||
for _, name in ipairs(data.names) do | ||
str = str .. (str:len() > 0 and ", " or "") .. name | ||
end | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str .. ".") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "None is watching your stream right now.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.") | ||
end | ||
elseif(isInArray({'kick', 'remove'}, t[1])) then | ||
if(data.broadcast) then | ||
if(t[2]) then | ||
if(t[2] ~= "all") then | ||
local found = false | ||
for _, name in ipairs(data.names) do | ||
if(t[2]:lower() == name:lower()) then | ||
found = true | ||
break | ||
end | ||
end | ||
if(found) then | ||
table.insert(data.kick, t[2]) | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been kicked.") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.") | ||
end | ||
else | ||
data.kick = data.names | ||
doPlayerSetSpectators(cid, data) | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.") | ||
end | ||
elseif(isInArray({'ban', 'block'}, t[1])) then | ||
if(data.broadcast) then | ||
if(t[2]) then | ||
local found = false | ||
for _, name in ipairs(data.names) do | ||
if(t[2]:lower() == name:lower()) then | ||
found = true | ||
break | ||
end | ||
end | ||
if(found) then | ||
table.insert(data.bans, t[2]) | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been banned.") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.") | ||
end | ||
elseif(isInArray({'unban', 'unblock'}, t[1])) then | ||
if(data.broadcast) then | ||
if(t[2]) then | ||
local found, i = 0, 1 | ||
for _, name in ipairs(data.bans) do | ||
if(t[2]:lower() == name:lower()) then | ||
found = i | ||
break | ||
end | ||
i = i + 1 | ||
end | ||
if(found > 0) then | ||
table.remove(data.bans, found) | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been unbanned.") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.") | ||
end | ||
elseif(isInArray({'bans', 'banlist'}, t[1])) then | ||
if(table.maxn(data.bans)) then | ||
local str = "" | ||
for _, name in ipairs(data.bans) do | ||
str = str .. (str:len() > 0 and ", " or "") .. name | ||
end | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently banned spectators: " .. str .. ".") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your ban list is empty.") | ||
end | ||
elseif(isInArray({'mute', 'squelch'}, t[1])) then | ||
if(data.broadcast) then | ||
if(t[2]) then | ||
local found = false | ||
for _, name in ipairs(data.names) do | ||
if(t[2]:lower() == name:lower()) then | ||
found = true | ||
break | ||
end | ||
end | ||
if(found) then | ||
table.insert(data.mutes, t[2]) | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been muted.") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.") | ||
end | ||
elseif(isInArray({'unmute', 'unsquelch'}, t[1])) then | ||
if(data.broadcast) then | ||
if(t[2]) then | ||
local found, i = 0, 1 | ||
for _, name in ipairs(data.mutes) do | ||
if(t[2]:lower() == name:lower()) then | ||
found = i | ||
break | ||
end | ||
i = i + 1 | ||
end | ||
if(found > 0) then | ||
table.remove(data.mutes, found) | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been unmuted.") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.") | ||
end | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.") | ||
end | ||
elseif(isInArray({'mutes', 'mutelist'}, t[1])) then | ||
if(table.maxn(data.mutes)) then | ||
local str = "" | ||
for _, name in ipairs(data.mutes) do | ||
str = str .. (str:len() > 0 and ", " or "") .. name | ||
end | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently muted spectators: " .. str .. ".") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your mute list is empty.") | ||
end | ||
elseif(isInArray({'auth', 'protect', 'protection', 'protected'}, t[1])) then | ||
if(isInArray({'off', 'no', 'disable'}, t[2])) then | ||
data.auth = false | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your chat is now unprotected, all spectators can chat without authentication.") | ||
elseif(isInArray({'on', 'yes', 'enable'}, t[2])) then | ||
data.auth = true | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your chat is now protected, all spectators have to authenticate before they can talk.") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your chat is currently " .. (data.auth and "protected" or "unprotected") .. " from guests.") | ||
end | ||
elseif(isInArray({'password', 'guard'}, t[1])) then | ||
if(t[2]) then | ||
if(isInArray({'off', 'no', 'disable'}, t[2])) then | ||
if(data.password:len() ~= 0) then | ||
db.executeQuery("UPDATE `players` SET `broadcasting` = `broadcasting` - 2 WHERE `id` = " .. getPlayerGUID(cid)) | ||
end | ||
data.password = "" | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have removed password for your stream.") | ||
else | ||
if(data.password:len() ~= 0) then | ||
db.executeQuery("UPDATE `players` SET `broadcasting` = `broadcasting` + 2 WHERE `id` = " .. getPlayerGUID(cid)) | ||
end | ||
data.password = string.trim(t[2]) | ||
doPlayerSetSpectators(cid, data) | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have set new password for your stream.") | ||
end | ||
elseif(data.password ~= "") then | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your stream is currently protected with password: " .. data.password .. ".") | ||
else | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your stream is currently not protected.") | ||
end | ||
elseif(isInArray({'status', 'info'}, t[1])) then | ||
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your stream is currently " .. (data.broadcast and "enabled" or "disabled") .. ".") | ||
else | ||
doShowTextDialog(cid, 1950, "Available commands:\n\n/live on - enables the stream\n/live off - disables the stream\n/live password {password} - sets a password on the stream\n/live password off - disables the password protection\n/live auth on - enables requirement of authentication on chat\n/live auth off - disables requirement of authentication on chat\n/live kick {name} - kick a spectator from your stream\n/live ban {name} - locks spectator IP from joining your stream\n/live unban {name} - removes banishment lock\n/live bans - shows banished spectators list\n/live mute {name} - mutes selected spectator from chat\n/live unmute {name} - removes mute\n/live mutes - shows muted spectators list\n/live show - displays the amount and nicknames of current spectators\n/live status - displays stream status") | ||
end | ||
return true | ||
end | ||
]]></talkaction> | ||
</mod> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.