• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Linux GetplayerCast talkaction

vingo

Active Member
Joined
Oct 27, 2012
Messages
464
Reaction score
43
PHP:
Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/cast.lua:onSay
data/talkactions/scripts/cast.lua:10: attempt to call global 'getPlayerCast' (a nil value)
stack traceback:
    [C]: in function 'getPlayerCast'
    data/talkactions/scripts/cast.lua:10: in function <data/talkactions/scripts/cast.lua:1>

http://pastebin.com/QhjZ02s3 script here
 
I just got this


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff5892700 (LWP 5805)]
0x00000000008d2868 in ProtocolGame::setPlayer(Player*) ()




any idea?
 
That's the C runtime library getting an internal problem. Common causes include an "out of memory" condition or addressing protected memory.

If you moved a compiled OT, you probably need to compile the server on your system.

BTW it's not impossible that it's due to an error in the OT C/C++ code, but not likely unless you're using a new(ish) version.

If you complied on your own system, it could still be a system/technical problem or an OT problem, but you can test that fast from OT: post the LUA script that's running when you get that message. Test several times - it's useful to know if it's always the same script, or it's different each time.
 
Last edited:
how do i know what lua it is i have 4000 of them

im compiling on virtual box linux ubuntu

in foldeer tfs2 then i move executable to tfs1

that error is caused by !leavehouse cmd
 
Try \data\talkactions\scripts\leavehouse.lua

You can (probably) confirm that by looking at \data\talkactions\talkactions.xml
for a line like:
<talkaction words="!leavehouse" script="leavehouse.lua"/>
 
Well, If I use !leavehouse ingame it crashes so im guessing thats enough to know that it bugs it but nvm, Im using biding on website for houses now
 
PHP:
<?PHP
$order = $_REQUEST['order'];
if($order == 'name') {
    $orderby = 'name';
}
if($order == 'level') {
    $orderby = 'level';
}
if($order == 'vocation') {
    $orderby = 'vocation';
}
if(empty($orderby)) {
    $orderby = 'name';
}
if(count($config['site']['worlds']) > 1)
{
    $worlds .= '<i>Select world:</i> ';
    foreach($config['site']['worlds'] as $idd => $world_n)
    {
        if($idd == (int) $_GET['world'])
        {
            $world_id = $idd;
            $world_name = $world_n;
        }
    }
}
if($idd == (int) $_GET['world'])
{
    $world_id = $idd;
    $world_name = $world_n;
}
if(!isset($world_id))
{
    $world_id = 0;
    $world_name = $config['server']['serverName'];
}
if(count($config['site']['worlds']) > 1)
{
    $main_content .= '<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%><TR><TD>
        <FORM ACTION="?subtopic=whoisonline" METHOD=get><INPUT TYPE=hidden NAME=subtopic VALUE=whoisonline><INPUT TYPE=hidden NAME=list VALUE=experience>
        <TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>World Selection</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['lightborder'].'">
        <TABLE BORDER=0 CELLPADDING=1><TR><TD>World: </TD><TD><SELECT SIZE="1" NAME="world"><OPTION VALUE="" SELECTED>(choose world)</OPTION>';
        foreach($config['site']['worlds'] as $id => $world_n)
        {
            $main_content .= '<OPTION VALUE="'.$id.'">'.$world_n.'</OPTION>';
        }
        $main_content .= '</SELECT> </TD><TD><INPUT TYPE=image NAME="Submit" ALT="Submit" SRC="'.$layout_name.'/images/buttons/sbutton_submit.gif" BORDER=0 WIDTH=120 HEIGHT=18>
        </TD></TR></TABLE></TABLE></FORM></TABLE><br>';
}
$players_online_data = $SQL->query('SELECT * FROM players WHERE online > 0 AND cast = 1 AND world_id = '.$world_id.' ORDER BY '.$orderby);
$number_of_players_online = 0;
foreach($players_online_data as $player)
{
    $number_of_players_online++;
    if($config['site']['show_flag'])
    {
        $account = $SQL->query('SELECT * FROM accounts WHERE id = '.$player['account_id'].'')->fetch();
        $flag = '<image src="images/flags/'.$account['flag'].'.png"/> ';
    }
    if(is_int($number_of_players_online / 2))
    {
        $bgcolor = $config['site']['darkborder'];
    }
    else
    {
        $bgcolor = $config['site']['lightborder'];
    }
    $players_rows .= '
    <TR BGCOLOR='.$bgcolor.'>
        <TD WIDTH=40%>'.$flag.'<A HREF="index.php?subtopic=characters&name='.urlencode($player['name']).'">'.$player['name'].'</A>
        <br/>'.$player['level'].' '.Website::getVocationName($player['vocation'], $player['promotion']).'</TD>
        <TD WIDTH=40%>'.($player['castDescription'] == "" ? '-' : $player['castDescription']).'</TD>
        <TD WIDTH=20%>'.$player['castViewers'].'/50</TD>
    </TR>';
}
if($number_of_players_online == 0)
{
    //server status - server empty
    $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD CLASS=white><B>Server Status</B></TD></TR><TR BGCOLOR='.$config['site']['darkborder'].'><TD><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1><TR><TD>Currently there are no active casts on '.$config['server']['serverName'].'.</TD></TR></TABLE></TD></TR></TABLE><BR>';
}
else
{
    //server status - someone is online
    $main_content .= '
    <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
        <TR BGCOLOR="'.$config['site']['vdarkborder'].'">
            <TD CLASS=white><B>Server Status</B></TD>
        </TR>
        <TR BGCOLOR='.$config['site']['darkborder'].'>
            <TD>';
            $main_content .= 'Currently there are '.$number_of_players_online.' active live casts';
            $main_content .= ' on '.$world_name.' gameworlds.<br>
            </TD>
        </TR>
    </TABLE><BR>';
    //list of players
    $main_content .= '
    <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
        <TR BGCOLOR="'.$config['site']['vdarkborder'].'">
            <TD><A HREF="index.php?subtopic=cast&order=name" CLASS=white>Name</A></TD>
            <TD><A HREF="index.php?subtopic=cast&order=level" CLASS=white>Description</A></TD>
            <TD><A HREF="index.php?subtopic=cast&order=vocation" CLASS=white>Viewers</TD>
        </TR>
    '.$players_rows.'</TABLE>';
    //search bar
    //$main_content .= '<BR><FORM ACTION="index.php?subtopic=characters" METHOD=post>  <TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Search Character</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><TABLE BORDER=0 CELLPADDING=1><TR><TD>Name:</TD><TD><INPUT NAME="name" VALUE=""SIZE=29 MAXLENGTH=29></TD><TD><INPUT TYPE=image NAME="Submit" SRC="'.$layout_name.'/images/buttons/sbutton_submit.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></TABLE></TD></TR></TABLE></FORM>';
}
    $main_content .= '<BR><TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Description</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><h4 style="margin: 0px;">Commands (owner):</h4><i>/cast {on/off}</i> - Create or close your own cast<br/><i>/cast password |password|</i> - Sets a password for the cast<br/><i>/cast desc |description|</i> - Set a description for the cast<br/><i>/cast status</i> - Information about your cast (viewer amount, description, password)<br/><i>/cast viewers</i> - Displays the name of all viewers<br/><i>/cast {ban/unban} "name"</i> - Bans a viewer from joining your cast/Removes the ban<br/><i>/cast {mute/unmute} "name"</i> - Mutes a viewer on your cast/Removes the mute<br/><i>/cast bans</i> - Displays a list of banned viewers<br/><i>/cast mutes</i> - Displays a list of muted viewers<br/><i>/cast update</i> - Updates the description and status on the website<br/><br/><h4 style="margin: 0px;">Commands (viewer):</h4><i>/nick newNick</i> - Changes the viewer\'s name<br><i>/info</i> - Displays a list of all viewers</TD></TR></TABLE>';

?>

this doesn't work

That is not summ's atleast, that PHP code looks alot better then this..
It is not mine, because mine did actually work.
It might be the cast by kamilwxx if I remember correctly (for TFS 1.0)

But you have said there was some crash problems with it, what was it, or diden't you find that out?
 
The version that was leaked is not bugfree as the person who released it did not stay in contact with me obviously.
Despite that the code is not nice though.
 
The version that was leaked is not bugfree as the person who released it did not stay in contact with me obviously.
Despite that the code is not nice though.

And would you still be ready to sell your cast system? Rather buy it from you insted of some reseller of Elfs, if its fully working.
 
I already want to share cast system

Code:
function onSay(cid, words, param, channel)
    local tmp = param:explode(" ")
    if not(tmp[1]) then
        return doPlayerSendCancel(cid, "Parameters needed")
    end
  
    if tmp[1] == "on" then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cast has started.")
        doPlayerSetCastState(cid, true)
        doPlayerSave(cid)
    elseif getPlayerCast(cid).status == false then
        return doPlayerSendCancel(cid, "Your cast has to be running for this action.")
    elseif tmp[1] == "off" then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cast has ended.")
        doPlayerSetCastState(cid, false)
                doPlayerSave(cid)
    elseif isInArray({"pass", "password", "p"}, tmp[1]) then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "You need to set a password")
        end
      
        if tmp[2]:len() > 10 then
            return doPlayerSendCancel(cid, "The password is too long. (Max.: 10 letters)")
        end
      
        if tmp[2] == "off" then
            doPlayerSetCastPassword(cid, "")
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cast password has been removed.")
        else
            doPlayerSetCastPassword(cid, tmp[2])
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cast password was set to: " .. tmp[2])
        end
    elseif isInArray({"desc", "description", "d"}, tmp[1]) then
        local d = param:gsub(tmp[1]..(tmp[2] and " " or ""), "")
      
        if not(d) or d:len() == 0 then
            return doPlayerSendCancel(cid, "You need to specify a description.")
        end
      
        if d:len() > 50 then
            return doPlayerSendCancel(cid, "The description is too long. (Max.: 50 letters)")
        end
      
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cast description was set to: ")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, d)
        doPlayerSetCastDescription(cid, d)
    elseif tmp[1] == "ban" then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Specify a spectator that you want to ban.")
        end
      
        if doPlayerAddCastBan(cid, tmp[2]) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Spectator '" .. tmp[2] .. "' has been banned.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Spectator '" .. tmp[2] .. "' could not be banned.")
        end
    elseif tmp[1] == "unban" then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Specify the person you want to unban.")
        end
      
        if doPlayerRemoveCastBan(cid, tmp[2]) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Spectator '" .. tmp[2] .. "' has been unbanned.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Spectator '" .. tmp[2] .. "' could not be unbanned.")
        end
    elseif param == "bans" then
        local t = getCastBans(cid)
        local text = "Cast Bans:\n\n"
        for k, v in pairs(t) do
            text = text .. "*" .. v.name .. "\n"
        end
        if text == "Cast Bans:\n\n" then
            text = text .. "No bans."
        end
        doShowTextDialog(cid, 5958, text)
    elseif tmp[1] == "mute" then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Specify a spectator that you want to mute.")
        end
      
        if doPlayerAddCastMute(cid, tmp[2]) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Spectator '" .. tmp[2] .. "' has been muted.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Spectator '" .. tmp[2] .. "' could not be muted.")
        end
    elseif tmp[1] == "unmute" then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Specify the person you want to unmute.")
        end
      
        if doPlayerRemoveCastMute(cid, tmp[2]) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Spectator '" .. tmp[2] .. "' has been unmuted.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Spectator '" .. tmp[2] .. "' could not be unmuted.")
        end
    elseif param == "mutes" then
        local t = getCastMutes(cid)
        local text = "Cast Mutes:\n\n"
        for k, v in pairs(t) do
            text = text .. "*" .. v.name .. "\n"
        end
        if text == "Cast Bans:\n\n" then
            text = text .. "No mutes."
        end
        doShowTextDialog(cid, 5958, text)
    elseif param == "viewers" then
        local t = getCastViewers(cid)
        local text, count = "Cast Viewers:\n#Viewers: |COUNT|\n\n", 0
        for _,v in pairs(t) do
            count = count + 1
            text = text .. "*" .. v.name .."\n"
        end
      
        if text == "Cast Viewers:\n#Viewers: |COUNT|\n\n" then text = "Cast Viewers:\n\nNo viewers." end
        text = text:gsub("|COUNT|", count)
        doShowTextDialog(cid, 5958, text)
    elseif param == "status" then
        local t, c = getCastViewers(cid), getPlayerCast(cid)
        local count = 0
        for _,v in pairs(t) do count = count + 1 end
      
        doShowTextDialog(cid, 5958, "Cast Status:\n\n*Viewers:\n      " .. count .. "\n*Description:\n      "..(c.description == "" and "Not set" or c.description).."\n*Password:\n      " .. (c.password == "" and "Not set" or "Set - '"..c.password.."'"))
    elseif param == "update" then
        if getPlayerStorageValue(cid, 656544) > os.time() then
            return doPlayerSendCancel(cid, "You used this command lately. Wait: " .. (getPlayerStorageValue(cid, 656544)-os.time()) .. " sec.")
        end
        doPlayerSave(cid)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The cast settings have been updated.")
        doPlayerSetStorageValue(cid, 656544, os.time()+60)
    end
    return true
end
 
Back
Top