WERE CAN I GET RAGAMAN LUA 5 FROM I AM DOINN MY NUT IN TRY 2 FIND ONE PUT HAVE NO LUCK SO IF YOU CAN HELP ME THEN PLZ DO ?(
QuoteOriginally posted by drewster
WERE CAN I GET RAGAMAN LUA 5 FROM I AM DOINN MY NUT IN TRY 2 FIND ONE PUT HAVE NO LUCK SO IF YOU CAN HELP ME THEN PLZ DO ?(
First of all, locate the leftmost column on your keypad and then locate the third key from the bottom, and press it in order to get some lowercase characters.
Second, did you search?
Third, what is that bot supposed to do?
Main LUA File
sAuthor = "RabidWombat";
sEmail = "cbarber@dwc.edu";
sConversion = " Converted to LUA 5 by ??????Hawk?????? 03/03/2005"
bGameRunning, bGamePaused = nil, nil;
sJumblePhrase, sActualPhrases, NoSpacePhrase = nil,nil,nil;
iLength, iBonusTime = 0, 0;
sScoreOutput, sHintOutput, sHelpOutput, sOpHelpOutput = nil, nil, nil, "";
iTimeCount, iGameNoReplyCount = 0, 0;
tScores, tScoresByName = { n = 0 }, {};
tChannelUsers, iChannelCount = {}, nil;
-- PtokaX Events --
function Main()
dofile("jumble.cfg");
sScoreFormula = "return "..sScoreFormula;
sBonusFormula = "return "..sBonusFormula;
sHintFormula = "return "..sHintFormula;
frmHub:RegBot(sBotName);
sHelpOutput = StrReplace(tStringTable[1]);
for cmd,tTemp in tCommands do
if(tTemp[1] == DisplayJumbleHelp) then
sJumbleHelp = cmd;
end
sCmd, sDesc = cmd, tTemp[3];
if(tTemp[2] == 0) then
sHelpOutput = sHelpOutput..StrReplace(tStringTable[2]);
else
sOpHelpOutput = sOpHelpOutput..StrReplace(tStringTable[2]);
end
end
OldSendToAll = SendToAll;
UserDisconnected = LeaveJumble;
OpDisconnected = LeaveJumble;
SetTimer(1000);
ReadScoresFromFile();
SetScores();
end
function OnTimer()
if(bGamePaused) then
iTimeCount = iTimeCount + 1;
if(iTimeCount >= iPauseTime) then
StartJumblePhrase();
end
elseif(bGameRunning) then
iTimeCount = iTimeCount + 1;
if(iTimeCount == iHintTime) then
SendToAll(sBotName, sHintOutput);
elseif (iTimeCount == iGameEndTime - 10) then
SendToAll(sBotName, StrReplace(tStringTable[3]));
elseif (iTimeCount == iGameEndTime) then
StopJumblePhrase();
if(iGameNoReplyCount >= 3) then
StopJumbleGame();
end
else
end
else
end
end
function ChatArrival(curUser, sData)
local s, e, sNewData, chat, cmd, args = string.find(sData, "(%b<>%s+((%S+)%s*([^%|]*)))%|$");
local s, e, sTo = string.find(sData, "^%$To: (%S+)");
if(cmd == nil or (sTo and sTo ~= sBotName)) then return 0; end
sUserName = curUser.sName;
if(sTo) then
curUser.SendData = curUser.SendPM;
end
cmd = string.lower(cmd);
if(tCommands[cmd] and (tCommands[cmd][2] == 0 or curUser.bOperator)) then
curUser:SendData(sData);
tCommands[cmd][1](curUser, args);
return 1;
else
if (not(iChannelCount) and string.sub(sData,1,1) == "<") then
iGameNoReplyCount = 0;
end
if(iChannelCount and string.find(sData, "$To: "..sBotName, 1, 1) == 1 and cmd == "!me") then
sNewData = "* "..sUserName..string.sub(chat, 4);
end
if(bGameRunning and bGamePaused == nil and string.find(string.upper(chat), sActualPhrase, 1, 1)) then
SendToAll(sNewData);
iBonusTime = math.max(iBonusTimeLimit - iTimeCount, 0);
iScore = assert(loadstring(StrReplace(sScoreFormula)))();
iBonus = assert(loadstring(StrReplace(sBonusFormula)))();
if(tScoresByName[sUserName]) then
tScoresByName[sUserName][2] = tScoresByName[sUserName][2] + iScore + iBonus;
else
tScoresByName[sUserName] = {sUserName, iScore + iBonus};
table.insert(tScores, tScoresByName[sUserName]);
end
iRank = SetScores(sUserName);
iRankTotal = table.getn(tScores);
iUserScore = tScoresByName[sUserName][2];
WriteScoresToFile();
StopJumblePhrase();
if(iBonusTime ~= 0) then
SendToAll(sBotName, StrReplace(tStringTable[4]));
else
SendToAll(sBotName, StrReplace(tStringTable[5]));
end
iGameNoReplyCount = 0;
return 1;
else
if(iChannelCount and string.find(sData, "^$To: "..sBotName, 1, 1) == 1) then
if(tChannelUsers[sUserName] == nil) then
JoinJumble(curUser);
else
SendToAll(sNewData);
iGameNoReplyCount = 0;
end
return 1;
end
end
end
end
-- Command Functions --
function StartJumbleGame(curUser, args)
if(bGameRunning) then return; end
if(args ~= "") then
HubGameActive = 2
local s, e, args = string.find(args, "([%w%s]+)$");
args = "Jumble\\"..args..".txt";
local f,e = io.open(args,"r")
if f then
sJumbleWordsFile = args;
f:close(f)
end
end
OldSendToAll(sBotName, StrReplace(tStringTable[6]));
StartJumblePhrase();
SendToAll(sBotName, StrReplace(tStringTable[7]));
iGameNoReplyCount = 0;
end
function StopJumbleGame(curUser)
if not(bGameRunning) then return; end
if not(bGamePaused) then
StopJumblePhrase();
end
if(curUser) then
OldSendToAll(sBotName, StrReplace(tStringTable[8]));
else
OldSendToAll(sBotName, StrReplace(tStringTable[21]));
-- TODO: fix numbers
end
bGameRunning, bGamePaused = nil, nil;
iBonusTime, iLength = 0, 0;
StopTimer();
end
function DisplayJumblePhrase(curUser)
if(bGameRunning and not bGamePaused) then
if(curUser == nil) then
SendToAll(sBotName, StrReplace(tStringTable[9]));
else
curUser:SendData(sBotName, StrReplace(tStringTable[9]));
end
end
end
function DisplayJumbleHelp(curUser)
if(curUser.bOperator) then
curUser:SendData(sBotName, sHelpOutput..sOpHelpOutput);
else
curUser:SendData(sBotName, sHelpOutput);
end
end
function DisplayJumbleScores(curUser)
curUser:SendData(sBotName, sScoresOutput);
end
function DisplayMyJumbleScore(curUser)
iRank = tScoresByName[curUser.sName][3];
iRankTotal = table.getn(tScores);
iUserScore = tScoresByName[sUserName][2];
if(tScoresByName[curUser.sName]) then
curUser:SendData(sBotName, StrReplace(tStringTable[10]));
else
curUser:SendData(sBotName, StrReplace(tStringTable[11]));
end
end
function DisplayJumbleHint(curUser)
if(iTimeCount >= iHintTime) then
curUser:SendData(sBotName, sHintOutput);
end
end
function JoinJumble(curUser)
if(iChannelCount and tChannelUsers[curUser.sName] == nil) then
SendToAll(sBotName, StrReplace(tStringTable[12]));
curUser:SendPM(sBotName, StrReplace(tStringTable[13]));
curUser.SendData = curUser.SendPM;
DisplayJumblePhrase(curUser);
DisplayJumbleHint(curUser);
tChannelUsers[curUser.sName] = 1;
iChannelCount = iChannelCount + 1;
end
end
function LeaveJumble(curUser)
if(iChannelCount and tChannelUsers[curUser.sName]) then
sUserName = curUser.sName;
SendToAll(sBotName, StrReplace(tStringTable[14]));
tChannelUsers[curUser.sName] = nil;
iChannelCount = iChannelCount - 1;
if(iChannelCount <= 0) then
iChannelCount = 0;
StopJumbleGame();
end
end
end
function SetPrivateJumbleGame(curUser)
if(iChannelCount == nil) then
SendToAll = SendToAllInChannel;
iChannelCount = 0;
end
end
function SetPublicJumbleGame(curUser)
if(iChannelCount) then
SendToAll = OldSendToAll;
tChannelUsers = {};
iChannelCount = nil;
end
end
-- Jumble Phrase Functions --
function JumbleString(str)
local tStr = { n = 0; };
local newString = "";
string.gsub(str, "(.)", function(c) table.insert(tStr, c); end);
math.randomseed(os.clock());
-- Fisher-Yates shuffle
for n = table.getn(tStr), 1, -1 do
local pos = math.random(n);
newString = tStr[pos].." "..newString;
tStr[pos] = tStr[n];
end
return newString;
end
function JumblePhrase(phr)
return string.sub(string.gsub(phr, "(%S+)", function (w) return JumbleString(w).." "; end), 1, -2);
end
function StartJumblePhrase()
local hFile,Er = io.open(sJumbleWordsFile, "r");
if(hFile == nil) then
SendToAll(sBotName, "Error opening "..sJumbleWordsFile);
return;
end
local _, phr = nil, nil;
local iFileSize = hFile:seek("end")
math.randomseed(os.clock());
while(phr == nil) do
hFile:seek("set", math.random(iFileSize)-1);
_, phr = hFile:read( "*l", "*l");
end
hFile:close();
sActualPhrase = string.upper(phr);
sNoSpacePhrase = string.gsub(sActualPhrase, "%s", "");
sJumblePhrase = JumblePhrase(sActualPhrase);
iLength = string.len(sNoSpacePhrase);
SetJumbleHint();
SendToAll(sBotName, StrReplace(tStringTable[9]));
iTimeCount = 0;
bGameRunning = 1;
bGamePaused = nil;
StopTimer(); StartTimer();
end
function StopJumblePhrase()
SendToAll(sBotName, StrReplace(tStringTable[15]));
sActualPhrase, sNoSpacePhrase, sJumblePhrase = nil, nil, nil;
iTimeCount = 0;
bGamePaused = 1;
iGameNoReplyCount = iGameNoReplyCount + 1;
end
-- String Functions --
function StrReplace(sString)
sString = string.gsub(sString, "%$(%w+)", function (w)
if(string.sub(w,1,1) == "$") then
return string.sub(w,2,-1);
else
return _G[w] or "nil";
end
end);
return sString;
end
-- Score Functions --
function SetScores(sName)
local iCount = table.getn(tScores);
iDisplayCount = iDisplayScores or iCount
if(iDisplayScores) then
sScoresOutput = StrReplace(tStringTable[16]);
else
sScoresOutput = StrReplace(tStringTable[17]);
end
if(iCount == 0) then
sScoresOutput = StrReplace(tStringTable[18]);
else
table.sort(tScores, function(a, b) return a[2] > b[2]; end);
for i = 1, iCount, 1 do
tScores[i][3] = i; -- set ranks for all users
end
for i = 1, math.min(iDisplayCount, iCount), 1 do
iPos = i;
sUserName = tScores[iPos][1];
iUserScore = tScores[iPos][2];
sScoresOutput = sScoresOutput..StrReplace(tStringTable[19]);
end
end
sUserName = sName;
if(sName) then
return tScoresByName[sName][3];
end
end
function ReadScoresFromFile()
dofile(sJumbleScoresFile);
for i = 1, table.getn(tScores), 1 do
tScoresByName[tScores[i][1]] = tScores[i];
end
end
function ToArrival(user, data)
ChatArrival(user, data)
end
function WriteScoresToFile()
local hFile,Er = io.open(sJumbleScoresFile, "w");
hFile:write("tScores = {\n");
for i = 1, table.getn(tScores), 1 do
hFile:write("["..i.."] = {"..string.format("%q", tScores[i][1])..","..tScores[i][2].."},\n");
end
hFile:write("n="..table.getn(tScores).."\n");
hFile:write("};");
hFile:close();
end
-- Hint Functions --
function SetJumbleHint()
local tRevealArray = { };
local iReveal = assert(loadstring(StrReplace(sHintFormula)))();
local iPos = nil;
while(iReveal > 0) do
repeat iPos = math.random(iLength); until tRevealArray[iPos] == nil
tRevealArray[iPos] = 1;
iReveal = iReveal - 1;
end
tRevealArray.iPos = 1;
sHint = string.gsub(sActualPhrase, "(%S)", function (c)
if (c == nil) then return ""; end
local out, tTemp = nil, tRevealArray;
if(tTemp[tTemp.iPos]) then
out = c;
else
out = sHintChar;
end
tTemp.iPos = tTemp.iPos + 1;
return out.." ";
end);
sHint = string.sub(sHint, 1, -2);
sHintOutput = StrReplace(tStringTable[20]);
end
-- Channel Functions --
function SendToAllInChannel(sSender, sRawOutput)
if(sSender) then
local _;
if(sRawOutput == nil) then
sRawOutput = sSender;
_, _, sSender = string.find(sRawOutput, "^%<(.-)%>");
else
sRawOutput = "<"..sSender.."> "..sRawOutput;
end
for nick, val in tChannelUsers do
if(nick ~= sSender) then
SendToNick(nick, "$To: "..nick.." From: "..sBotName.." $"..sRawOutput);
end
end
end
end
Jumble.cfg file
-- JumbleFever
-- Author: RabidWombat
-- This is the config file to set values.
-- Do so at your own risk.
sBotName = "JumbleFever";
sTranslator = "Your name here";
-- NOTE: this file is a lua file. JumbleFever calls dofile on it. So
-- you can do anything in here that you would want to occur in the
-- PtokaX Main event.
sJumbleWordsFile = "Jumble\\English.txt";
sJumbleScoresFile = "JumbleScores.txt";
sHintChar = "?"
iDisplayScores = 10; -- displays top 10 scores
-- iDisplayScores = nil; -- displays all scores
-- In seconds
iPauseTime = 10;
iHintTime = 60;
iGameEndTime = 120;
iBonusTimeLimit = 10;
-- FORMULA SYSTEM --
-- Scores and Hint are now formula strings that have variables:
-- iLength = length of phrase (minus spaces)
-- iBonusTime = bonus time remaining
-- additional math functions such as min, max, floor, etc can be used
-- If you're not a scripter, don't change this.
-- Cause I don't want to help 20 people with nil problems :-P
sScoreFormula = "6"; -- score equals 6
-- sScoreFormula = "$iLength"; -- score equals length of phrase
-- sScoreFormula = "2 * $iLength + 3" -- score equals length of phrase times 2 plus 3
-- sScoreFormula = "min($iLength - 5, 0) * 2 + 6"; -- score equals 6 plus 2 for every letter beyond 5
sBonusFormula = "$iBonusTime"; -- bonus score equals bonus time
sHintFormula = "math.floor(.4 * $iLength + .5)";
-- Command table.
-- Format: ["cmdname"] = { FunctionName, OperatorOnly, "Description"}
tCommands = {
[string.lower("a.start")] = { StartJumbleGame, 0, "Start the jumble game. Can be used with language selction (a.start language)"},
[string.lower("a.stop")] = { StopJumbleGame, 0, "Stop the jumble game."},
[string.lower("a.phrase")] = { DisplayJumblePhrase, 0, "Display the current jumble phrase."},
[string.lower("a.help")] = { DisplayJumbleHelp, 0, "Display this message."},
[string.lower("a.scores")] = { DisplayJumbleScores, 0, "Display current scores."},
[string.lower("a.myscore")] = { DisplayMyJumbleScore, 0, "Display your score."},
[string.lower("a.hint")] = { DisplayJumbleHint, 0, "Display the hint."},
[string.lower("a.join")] = { JoinJumble, 0, "Join the private jumble game."},
[string.lower("a.leave")] = { LeaveJumble, 0, "Leave the private jumble game."},
[string.lower("a.private")] = { SetPrivateJumbleGame, 1, "Set Jumble to be private."},
[string.lower("a.public")] = { SetPublicJumbleGame, 1, "Set Jumble to be public."},
}
-- This string table is dynamic. You define GLOBAL variables with $varname. To define "$"
-- user $$. All above values are considered globals. All others in this table have easy
-- names so I hope everyone understands without an explaination. Try to use common sense
-- when selecting global variables in a string. If you don't think it will be set at the
-- time the string is displayed, it probably isn't :-P
tStringTable = {
[1] = "\r\n$sBotName designed by: $sAuthor Email: $sEmail\r\n"..
"Play word jumble with your hub mates! Any text in the main chat is \r\n"..
"considered a guess for the jumble phrase. Here are the commands:\r\n",
[2] = "$sCmd\t- $sDesc\r\n",
[3] = "10 seconds left!!!",
[4] = "$sUserName recieves $iScore points and $iBonus time bonus. Rank $iRank/$iRankTotal (Score: $iUserScore)",
[5] = "$sUserName recieves $iScore points. Rank $iRank/$iRankTotal (Score: $iUserScore)",
[6] = "$sUserName has started a new $sBotName game!!!",
[7] = "Type \"$sJumbleHelp\" for help.",
[8] = "$sUserName has stopped the $sBotName game. :-(",
[9] = "The Jumble Phrase is: $sJumblePhrase", -- fix
[10] = "Rank: $iRank/$iRankTotal Score: $iUserScore",
[11] = "You don\'t have a score! Loser. :-)",
[12] = "$sUserName has joined the jumble game.",
[13] = "Hello $sUserName",
[14] = "$sUserName has left the jumble game.",
[15] = "The Jumble Phrase was: $sActualPhrase",
[16] = "Top $iDisplayScores $sBotName Players\r\n\r\n",
[17] = "All $sBotName Players\r\n\r\n",
[18] = "No Scores",
[19] = "$iPos) Name: $sUserName - Score: $iUserScore\r\n",
[20] = "Here\'s a hint: $sHint",
[21] = "The $sBotName has stopped automatically. :-("
};
A Version of Jumble/Anagrams is also in the Terminator Package with more options & Features.
( click my sig for Details )