Thank you. I will try to build of of it.
Yes, thank you! Iâve been looking for one of these.
(i know this topic is kind of old but i couldnt stop myself from showing that)
i found an old script from 2007 that used htmlservice so
i launched a 2007 roblox client and ran the following script
-- WARNING! For full functionality, do not edit this script!
local w = game:GetService("HtmlService"):NewWindow(470,530)
function getPlayer(humanoid)
local players = game.Players:children()
for i = 1, #players do
if players[i].Character.Humanoid == humanoid then return players[i] end
end
return nil
end
w:SetCallback(function(a)
print(a)
if a == "help" then
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Chat: Help</b></font></p>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"help/"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Opens the Help window.</font></p></div></td>
</tr>
</table>
<br>
<input id="Button" type="button" width="20" value="Back" onclick="window.external.Call('back')" /><br />
</div>
</td>
</tr>
</table>
]==])
w:Show()
end
if a == "vec" then
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Chat: Teleport</b></font></p>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"vec/Player/Vector3"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Moves Player's character to Vector3.</font></p></div></td>
</tr>
</table>
<br>
<input id="Button" type="button" width="20" value="Back" onclick="window.external.Call('back')" /><br />
</div>
</td>
</tr>
</table>
]==])
w:Show()
end
if a == "admin" then
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Chat: Administration</b></font></p>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"admin/Player[/...]"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Adds Player to the permission list.<br>
Extra arguments can be used for extra players.</font></p></div></td>
</tr>
</table>
<br>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"unadmin/Player[/...]"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Removes Player from the permission list.<br>
Extra arguments can be used for extra players.</font></p></div></td>
</tr>
</table>
<br>
<input id="Button" type="button" value="Back" onclick="window.external.Call('back')" /><br />
</div>
</td>
</tr>
</table>
]==])
w:Show()
end
if a == "ban" then
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Chat: Ban</b></font></p>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><div align="center"><p><font color="#FFFF00">"ban/Player[/...]"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><div align="center"><p><font color="#FFFF00">Bans Player from the server.<br>
Extra arguments can be used for extra players.</font></p></div></td>
</tr>
</table>
<br>
<input id="Button" type="button" width="20" value="Back" onclick="window.external.Call('back')" /><br />
</div>
</td>
</tr>
</table>
]==])
w:Show()
end
if a == "boot" then
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Chat: Boot</b></font></p>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"boot/Player[/...]"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Removes Player from the server (player can come back).<br>
Extra arguments can be used for extra players.</font></p></div></td>
</tr>
</table>
<br>
<input id="Button" type="button" width="20" value="Back" onclick="window.external.Call('back')" /><br />
</div>
</td>
</tr>
</table>
]==])
w:Show()
end
if a == "kill" then
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Chat: Kill</b></font></p>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"kill/(1: all)(2: Player[/...])"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function(1):</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Kills all non-admin players.</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function(2):</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Kills Player.<br>
Extra arguments can be used for extra players.</font></p></div></td>
</tr>
</table>
<br>
<input id="Button" type="button" width="20" value="Back" onclick="window.external.Call('back')" /><br />
</div>
</td>
</tr>
</table>
]==])
w:Show()
end
if a == "msg" then
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Chat: Message</b></font></p>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"m/Message[/Wait]"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Displays Message to all players.<br>
An extra argument sets the duration of Message</font></p></div></td>
</tr>
</table>
<br>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"h/Message"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Displays Message to all players in a hint</font></p></div></td>
</tr>
</table>
<br>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"rh/"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Removes a hint if displayed</font></p></div></td>
</tr>
</table>
<br>
<table width="410" height="0" border="2" bordercolor="blue">
<tr>
<td><p><font color="#FFFF00" size="4">Command:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">"dm/"</font></p></div></td>
</tr>
<tr>
<td><p><font color="#FFFF00" size="4">Function:</font></p></td>
<td><div align="center"><p><font color="#FFFF00">Removes all messages and hints from all players and the workspace</font></p></div></td>
</tr>
</table>
<br>
<input id="Button" type="button" value="Back" onclick="window.external.Call('back')" /><br />
</div>
</td>
</tr>
</table>
]==])
w:Show()
end
if a == "back" then
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Admin Help</b></font></p>
<p><font color="#FFFF00">Click on one of the following buttons to learn their commands.</font></p>
<input id="Button" type="button" style="width: 150px;" value="Help" onclick="window.external.Call('help')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Administration" onclick="window.external.Call('admin')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Vector3" onclick="window.external.Call('vec')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Ban" onclick="window.external.Call('ban')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Boot" onclick="window.external.Call('boot')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Kill" onclick="window.external.Call('kill')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Message" onclick="window.external.Call('msg')" /><br>
<br>
<input id="Button" type="button" value="Close" onclick="window.external.Call('close')" /><br>
<p><font color="#FFFF00" size="1">All commands are in the following format: "[function]/[argument]/[argument]"</font></p>
</div>
</td>
</tr>
</table>
]==])
w:Show()
end
if a == "close" then
w:Close()
end
end)
w.DocumentComplete:connect(function ()
w:SetBody([==[
<table width="420" height="470" border="2" bordercolor="blue">
<tr>
<td width="490" bgcolor="#000000"><font color="#FFFF00">
</font><div align="center">
<p><font color="#FFFF00" size="6"><b>Admin Help</b></font></p>
<p><font color="#FFFF00">Click on one of the following buttons to learn their commands.</font></p>
<input id="Button" type="button" style="width: 150px;" value="Help" onclick="window.external.Call('help')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Administration" onclick="window.external.Call('admin')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Vector3" onclick="window.external.Call('vec')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Ban" onclick="window.external.Call('ban')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Boot" onclick="window.external.Call('boot')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Kill" onclick="window.external.Call('kill')" /><br>
<input id="Button" type="button" style="width: 150px;" value="Message" onclick="window.external.Call('msg')" /><br>
<br>
<input id="Button" type="button" value="Close" onclick="window.external.Call('close')" /><br>
<p><font color="#FFFF00" size="1">All commands are in the following format: "[function]/[argument]/[argument]"</font></p>
</div>
</td>
</tr>
</table>
]==])
w:Show()
end)
w:Navigate()
and this happened
I suppose that after HTTPService was released they didnât want people being able to display random (maybe questionable) webpages to Roblox playersâŚ
Yeah, but the thing is, you can technically do the same thing right now, just with GUI objects instead of HTML rendering, so you can do it but itâs just slow and inefficient. Thatâs why I wish Roblox would add HtmlService back, or at least a modern equivalent, because it would be an efficient way to display web pages.
Dude, that can be used to show obscene pictures. Roblox didnât remove it?