Looking Fore Woordmix LUA5!
 

News:

29 December 2022 - PtokaX 0.5.3.0 (20th anniversary edition) released...
11 April 2017 - PtokaX 0.5.2.2 released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX 0.5.2.1 for Windows 10 IoT released...
3 September 2015 - PtokaX 0.5.2.1 released...
16 August 2015 - PtokaX 0.5.2.0 released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX 0.5.1.0 released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX 0.5.0.3 released...
13 April 2014 - PtokaX 0.5.0.2 released...
23 March 2014 - PtokaX testing version 0.5.0.1 build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

Looking Fore Woordmix LUA5!

Started by psvoo7, 22 March, 2005, 16:18:39

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

psvoo7

Hello i am looking fore the game woordmix only in lua 5 i hafe a program that make frome lua 4 to lua 5 just now gif it erors and make not good scripts this script do he hafe maded: sAuthor = "P$voo7
sEmail = "woordmix@openshares.com";
sTranslator = "PaTr!cK";
sversion = "Woordmix 3.1 by PaTr!cK"
sBotName = "?WoordMix?";
woordmixinfo = "$MyINFO $ALL "..sBotName.." ? type +start to play ? $ $Light speed"..string.char( 1 ).."$woordmix@openshares.no-ip.com$"
SendToAll(woordmixinfo)
   
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("Woordmix.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 DataArrival(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 = dostring(StrReplace(sScoreFormula));
         iBonus = dostring(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


---
--ScriptRestart = "    -->  "..sversion.." Started"..os.date(" the %d/%m-%Y at %X ").."  <--"
--SendToAll(ScriptRestart)
--SendToAll(woordmixinfo)
---

-- Command Functions --

function StartJumbleGame(curUser, args)
   if(bGameRunning) then return; end

   if(args ~= "") then
      local s, e, args = string.find(args, "([%w%s]+)$");
      args = "Jumble\\"..args..".txt";
      if(readfrom(args)) then
         sJumbleWordsFile = args;
         readfrom();
      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 = io.open(sJumbleWordsFile, "r");

   if(hFile == nil) then
      SendToAll(sBotName, "Fout bij het laden van "..sJumbleWordsFile);
      return;
   end

   local _, phr = nil, nil;
   local iFileSize = seek(hFile , "end")

   math.randomseed(os.clock());

   while(phr == nil) do
      seek(hFile , "set", math.random(iFileSize)-1);

   end

   io.close(hFile);

   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 getglobal(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[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[1]] = tScores;
   end
end

function WriteScoresToFile()
   local hFile = io.open(sJumbleScoresFile, "w");

   write(hFile, "tScores = {\n");

   for i = 1, table.getn(tScores), 1 do
      write(hFile, "["..i.."] = {"..string.format("%q", tScores[1])..","..tScores[2].."},\n");
   end

   write(hFile, "n="..table.getn(tScores).."\n");

   write(hFile, "};");

   io.close(hFile);
end

-- Hint Functions --

function SetJumbleHint()
   local tRevealArray = { };

   local iReveal = dostring(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

Sorry fore my Bad Englisch...


-Leendert-

Hello,

WoordMix is still very popular in my hub. I want to change to the new PtokaX, but first I need the WoordMix script in lua5. Can anyone help me?

Thank you in advance!



-------------------------------------------------------------------------
Owner Open Shares hub


??????Hawk??????

QuotesAuthor = "P$voo7
sEmail = "woordmix@openshares.com";
sTranslator = "PaTr!cK";
sversion = "Woordmix 3.1 by PaTr!cK"



Maby you should put the Origional Credits back on Scripts before you post them. then you wont look a Fool for trying to take credit for someone elses work ...


QuotesAuthor = "RabidWombat";
sEmail = "cbarber@dwc.edu";


??????Hawk??????

Troubadour

#4
else you could try it like

Zitat:
--------------------------------------------------------------------------------
 

sAuthor = "RabidWombat";
sEmail = "cbarber@dwc.edu";
sTranslator = "Troubadour";
sExpanded = "Troubadour";
--------------------------------------------------------------------------------

Then it will be the original Woordmix
 
I done it long time ago with the help of RabitWombat.

Regards,
Troubadour
Regards,

Troubadour

** Guardian Forum **

hubaddy:   nederfun.no-ip.com

SMF spam blocked by CleanTalk