PtokaX forum

Archive => Archived 5.0 boards => Request for scripts => Topic started by: drewster on 25 August, 2005, 00:29:53

Title: RAGAMAN
Post by: drewster on 25 August, 2005, 00:29:53
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  ?(
Title:
Post by: bastya_elvtars on 25 August, 2005, 00:38:54
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?
Title:
Post by: ??????Hawk?????? on 06 September, 2005, 17:40:38
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
Title:
Post by: ??????Hawk?????? on 06 September, 2005, 17:41:43
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 )