• 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!

Erro shopsystem.php Dragon Ball 8.60

cmcpro

New Member
Joined
May 27, 2009
Messages
55
Reaction score
0
Location
Brazil/SP
Hi everyone, I have the following error in my dragon ball server 8.6, when I buy item in the vocation tab or, of utilitarios it does not arrive in the char and it appears these errors ai from below that is the page shopsystem.php that I use and the Shop.xml from the server, someone can help me I'm breaking my head a few days ago ... Thank you in advance. Remembering used geisor


globalevents/shop.php


Lua:
SHOP_MSG_TYPE = 19

SQL_interval = 30

function onThink(interval, lastExecution)
   local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
   if(result_plr:getID() ~= -1) then
       while(true) do
           id = tonumber(result_plr:getDataInt("id"))
           action = tostring(result_plr:getDataString("action"))
           delete = tonumber(result_plr:getDataInt("delete_it"))
           cid = getCreatureByName(tostring(result_plr:getDataString("name")))
           if isPlayer(cid) == TRUE then
               local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
               local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
               local container_id = tonumber(result_plr:getDataInt("param3"))
               local container_count = tonumber(result_plr:getDataInt("param4"))
               local add_item_type = tostring(result_plr:getDataString("param5"))
               local add_item_name = tostring(result_plr:getDataString("param6"))
               local received_item = 0
               local full_weight = 0
               if add_item_type == 'container' then
                   full_weight = getItemWeightById(itemtogive_id, 1)
               end
               local free_cap = getPlayerFreeCap(cid)
               if full_weight <= free_cap then
                   if add_item_type == 'container' then
                       local new_container = doCreateItemEx(container_id, 1)
                       local iter = 0
                       while iter ~= container_count do
                           doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                           iter = iter + 1
                       end
                       received_item = doPlayerAddItemEx(cid, new_container)
                   else
                       local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                       received_item = doPlayerAddItemEx(cid, new_item)
                   end
                   if received_item == RETURNVALUE_NOERROR then
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
                       db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                       db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
doPlayerSave(cid)
else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
                   end
               else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
               end
           end
           if not(result_plr:next()) then
               break
           end
       end
       result_plr:free()
   end
   return TRUE
end

shopsystem.php

Lua:
[/COLOR]
[COLOR=#000000]SHOP_MSG_TYPE = 19[/COLOR]
[COLOR=#ff0000]
SQL_interval = 30

function onThink(interval, lastExecution)
   local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
   if(result_plr:getID() ~= -1) then
       while(true) do
           id = tonumber(result_plr:getDataInt("id"))
           action = tostring(result_plr:getDataString("action"))
           delete = tonumber(result_plr:getDataInt("delete_it"))
           cid = getCreatureByName(tostring(result_plr:getDataString("name")))
           if isPlayer(cid) == TRUE then
               local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
               local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
               local container_id = tonumber(result_plr:getDataInt("param3"))
               local container_count = tonumber(result_plr:getDataInt("param4"))
               local add_item_type = tostring(result_plr:getDataString("param5"))
               local add_item_name = tostring(result_plr:getDataString("param6"))
               local received_item = 0
               local full_weight = 0
               if add_item_type == 'container' then
                   full_weight = getItemWeightById(itemtogive_id, 1)
               end
               local free_cap = getPlayerFreeCap(cid)
               if full_weight <= free_cap then
                   if add_item_type == 'container' then
                       local new_container = doCreateItemEx(container_id, 1)
                       local iter = 0
                       while iter ~= container_count do
                           doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                           iter = iter + 1
                       end
                       received_item = doPlayerAddItemEx(cid, new_container)
                   else
                       local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                       received_item = doPlayerAddItemEx(cid, new_item)
                   end
                   if received_item == RETURNVALUE_NOERROR then
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
                       db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                       db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
doPlayerSave(cid)
else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
                   end
               else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
               end
           end
           if not(result_plr:next()) then
               break
           end
       end
       result_plr:free()
   end
   return TRUE
end
 
Last edited by a moderator:
Solution
Problem was that he had configured the shop to send out container itemids insted, so the itemid was 0.
If someone were to run into this issue again, print out the container itemid and itemid to see if you messed up the param's in your database when inserting the shop items.
Can you please explain a bit more what is exactly wrong? Do you get any errors on your console? If so, paste them here and please use code tags.
 
pt-br.tinypic.com

Can you please explain a bit more what is exactly wrong? Do you get any errors on your console? If so, paste them here and please use code tags.
image.jpg

image.jpg


image.jpg
 
Lua:
SHOP_MSG_TYPE = 19

SQL_interval = 30

function onThink(interval, lastExecution)
   local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
   if(result_plr:getID() ~= -1) then
       while(true) do
           id = tonumber(result_plr:getDataInt("id"))
           action = tostring(result_plr:getDataString("action"))
           delete = tonumber(result_plr:getDataInt("delete_it"))
           cid = getCreatureByName(tostring(result_plr:getDataString("name")))
           if isPlayer(cid) == TRUE then
               local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
               local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
               local container_id = tonumber(result_plr:getDataInt("param3"))
               local container_count = tonumber(result_plr:getDataInt("param4"))
               local add_item_type = tostring(result_plr:getDataString("param5"))
               local add_item_name = tostring(result_plr:getDataString("param6"))
               local received_item = 0
               local full_weight = 0
               if add_item_type == 'container' then
                   full_weight = getItemWeightById(itemtogive_id, 1)
               end
               local free_cap = getPlayerFreeCap(cid)
              print(full_weight, free_cap)
               if full_weight <= free_cap then
                   if add_item_type == 'container' then
                       local new_container = doCreateItemEx(container_id, 1)
                       local iter = 0
                       while iter ~= container_count do
                           doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                           iter = iter + 1
                       end
                       received_item = doPlayerAddItemEx(cid, new_container)
                   else
                       local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                       received_item = doPlayerAddItemEx(cid, new_item)
                   end
                   if received_item == RETURNVALUE_NOERROR then
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
                       db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                       db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
doPlayerSave(cid)
else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
                   end
               else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
               end
           end
           if not(result_plr:next()) then
               break
           end
       end
       result_plr:free()
   end
   return TRUE
end

Try that and take an SS of your console.
 
r8ciW
Lua:
SHOP_MSG_TYPE = 19

SQL_interval = 30

function onThink(interval, lastExecution)
   local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
   if(result_plr:getID() ~= -1) then
       while(true) do
           id = tonumber(result_plr:getDataInt("id"))
           action = tostring(result_plr:getDataString("action"))
           delete = tonumber(result_plr:getDataInt("delete_it"))
           cid = getCreatureByName(tostring(result_plr:getDataString("name")))
           if isPlayer(cid) == TRUE then
               local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
               local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
               local container_id = tonumber(result_plr:getDataInt("param3"))
               local container_count = tonumber(result_plr:getDataInt("param4"))
               local add_item_type = tostring(result_plr:getDataString("param5"))
               local add_item_name = tostring(result_plr:getDataString("param6"))
               local received_item = 0
               local full_weight = 0
               if add_item_type == 'container' then
                   full_weight = getItemWeightById(itemtogive_id, 1)
               end
               local free_cap = getPlayerFreeCap(cid)
              print(full_weight, free_cap)
               if full_weight <= free_cap then
                   if add_item_type == 'container' then
                       local new_container = doCreateItemEx(container_id, 1)
                       local iter = 0
                       while iter ~= container_count do
                           doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                           iter = iter + 1
                       end
                       received_item = doPlayerAddItemEx(cid, new_container)
                   else
                       local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                       received_item = doPlayerAddItemEx(cid, new_item)
                   end
                   if received_item == RETURNVALUE_NOERROR then
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
                       db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                       db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
doPlayerSave(cid)
else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
                   end
               else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
               end
           end
           if not(result_plr:next()) then
               break
           end
       end
       result_plr:free()
   end
   return TRUE
end

Try that and take an SS of your console.
28a3qtg.png
 
What item are you trying to give the player?

Item that earns new vocation example "shenron", and item that wins premium also does not click when I buy, when I click on buy it I do not proceed to purchase

shopsystem.php Correct in two pieces

PHP:
<?php
if(!defined('INITIALIZED'))
    exit;

if($config['site']['shop_system'])
{
    if($logged)
    {
        $user_premium_points = $account_logged->getCustomField('premium_points');
    }
    else
    {
        $user_premium_points = 'Login first';
    }
    function getItemByID($id)
    {
        $id = (int) $id;
        $SQL = $GLOBALS['SQL'];
        $data = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_offer').' WHERE '.$SQL->fieldName('id').' = '.$SQL->quote($id).';')->fetch();
        if($data['offer_type'] == 'item')
        {
            $offer['id'] = $data['id'];
            $offer['type'] = $data['offer_type'];
            $offer['item_id'] = $data['itemid1'];
            $offer['item_count'] = $data['count1'];
            $offer['points'] = $data['points'];
            $offer['description'] = $data['offer_description'];
            $offer['name'] = $data['offer_name'];
        }
        elseif($data['offer_type'] == 'mounts')
        {
            $offer['id'] = $data['id'];
            $offer['type'] = $data['offer_type'];
            $offer['mounts_id'] = $data['itemid1'];
            $offer['mounts_count'] = $data['count1'];
            $offer['item_id'] = $data['itemid2'];
            $offer['item_count'] = $data['count2'];
            $offer['points'] = $data['points'];
            $offer['description'] = $data['offer_description'];
            $offer['name'] = $data['offer_name'];
        }
                elseif($data['offer_type'] == 'addons')
        {
            $offer['id'] = $data['id'];
            $offer['type'] = $data['offer_type'];
            $offer['addons_id'] = $data['itemid1'];
            $offer['addons_count'] = $data['count1'];
            $offer['item_id'] = $data['itemid2'];
            $offer['item_count'] = $data['count2'];
            $offer['points'] = $data['points'];
            $offer['description'] = $data['offer_description'];
            $offer['name'] = $data['offer_name'];
        }
        return $offer;
    }

    function getOfferArray()
    {
        $offer_list = $GLOBALS['SQL']->query('SELECT * FROM '.$GLOBALS['SQL']->tableName('z_shop_offer').';');
        $i_item = 0;
        $i_mounts = 0;
        while($data = $offer_list->fetch())
        {
            if($data['offer_type'] == 'item')
            {
                $offer_array['item'][$i_item]['id'] = $data['id'];
                $offer_array['item'][$i_item]['item_id'] = $data['itemid1'];
                $offer_array['item'][$i_item]['item_count'] = $data['count1'];
                $offer_array['item'][$i_item]['points'] = $data['points'];
                $offer_array['item'][$i_item]['description'] = $data['offer_description'];
                $offer_array['item'][$i_item]['name'] = $data['offer_name'];
                $i_item++;
            }
            elseif($data['offer_type'] == 'mounts')
            {
                $offer_array['mounts'][$i_mounts]['id'] = $data['id'];
                $offer_array['mounts'][$i_mounts]['mounts_id'] = $data['itemid1'];
                $offer_array['mounts'][$i_mounts]['mounts_count'] = $data['count1'];
                $offer_array['mounts'][$i_mounts]['item_id'] = $data['itemid2'];
                $offer_array['mounts'][$i_mounts]['item_count'] = $data['count2'];
                $offer_array['mounts'][$i_mounts]['points'] = $data['points'];
                $offer_array['mounts'][$i_mounts]['description'] = $data['offer_description'];
                $offer_array['mounts'][$i_mounts]['name'] = $data['offer_name'];
                $i_mounts++;
                         }
                         elseif($data['offer_type'] == 'addons')
             {
                $offer_array['addons'][$i_addons]['id'] = $data['id'];
                $offer_array['addons'][$i_addons]['addons_id'] = $data['itemid1'];
                $offer_array['addons'][$i_addons]['addons_count'] = $data['count1'];
                $offer_array['addons'][$i_addons]['item_id'] = $data['itemid2'];
                $offer_array['addons'][$i_addons]['item_count'] = $data['count2'];
                $offer_array['addons'][$i_addons]['points'] = $data['points'];
                $offer_array['addons'][$i_addons]['description'] = $data['offer_description'];
                $offer_array['addons'][$i_addons]['name'] = $data['offer_name'];
                $i_addons++;
            }
        }
        return $offer_array;
    }
    if(($action == '') or ($action == 'item') or ($action == 'mounts') or ($action == 'addons'))
    {
        unset($_SESSION['viewed_confirmation_page']);
        $offer_list = getOfferArray();

        if(empty($action))
        {
            if(count($offer_list['item']) > 0)
                $action = 'item';
            elseif(count($offer_list['mounts']) > 0)
                $action = 'mounts';
                        elseif(count($offer_list['addons']) > 0)
                $action = 'addons';
        }

        function selectcolor($value)
        {
            if($GLOBALS['action'] == $value)
                return '#505050; color: #FFFFFF';
            else
                return '#303030; color: #aaaaaa';
        }

        if((count($offer_list['item']) > 0) or (count($offer_list['mounts']) > 0) or (count($offer_list['addons']) > 0))
        {
      
            if(count($offer_list['item']) > 0) $main_content .= '<a href="?subtopic=shopsystem&action=item" style="padding: 7px 1px 1px 8px; margin: 1px 1px 1px 100px; background-color: '.selectcolor('item').';">ITEMS<img src="images/items/2160.gif"/></a>';
            if(count($offer_list['mounts']) > 0) $main_content .= '<a href="?subtopic=shopsystem&action=mounts" style="padding: 7px 1px 1px 20px; margin: 1px 1px 1px 1px; background-color: '.selectcolor('mounts').';">VOCAÇÕES<img src="images/items/kaio.png"/></a>';
            if(count($offer_list['addons']) > 0) $main_content .= '<a href="?subtopic=shopsystem&action=addons" style="padding: 7px 1px 1px 20px; margin: 1px 1px 1px 1px; background-color: '.selectcolor('addons').';">UTILITÁRIOS<img src="images/items/1988.gif"/></a>';
      
        }

        //show list of items offers
        if((count($offer_list['item']) > 0) and ($action == 'item'))
        {
            $main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%"><tr bgcolor="'.$config['site']['vdarkborder'].'"><td width="8%" align="center" class="white"><b>Points</b></td><td width="9%" align="center" class="white"><b>Picture</b></td><td width="350" align="left" class="white"><b>Description</b></td><td width="250" align="center" class="white"><b>Select product</b></td></tr>';
            foreach($offer_list['item'] as $item)
            {
                if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++;
                $main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><b>'.$item['points'].'</b></td><td align="center"><img src="' . $config['site']['item_images_url'] . $item['item_id'] . $config['site']['item_images_extension'] . '"></td><td><b>'.htmlspecialchars($item['name']).'</b> ('.$item['points'].' points)<br />'.htmlspecialchars($item['description']).'</td><td align="center">';
                                if(!$logged)
                {
                    $main_content .= '<b>Login to buy</b>';
                }
                else
                {
                    $main_content .= '<form action="?subtopic=shopsystem&action=select_player" method="POST" name="itemform_'.$item['id'].'"><input type="hidden" name="buy_id" value="'.$item['id'].'"><div class="navibutton"><a href="" onClick="itemform_'.$item['id'].'.submit();return false;">BUY</a></div></form>';
                }
                $main_content .= '</td></tr>';
            }
            $main_content .= '</table>';
        }
                //show list of mounts offers
                if((count($offer_list['mounts']) > 0) and ($action == 'mounts'))
        {
            $main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%"><tr bgcolor="'.$config['site']['vdarkborder'].'"><td width="8%" align="center" class="white"><b>Points</b></td><td width="9%" align="center" class="white"><b>Picture</b></td><td width="350" align="left" class="white"><b>Description</b></td><td width="250" align="center" class="white"><b>Select product</b></td></tr>';
            foreach($offer_list['mounts'] as $mounts)
            {
                if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++;
                $main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><b>'.$mounts['points'].'</b></td><td align="center"><img src="' . $config['site']['item_images_url'] . $mounts['mounts_id'] . $config['site']['item_images_extension'] . '"></td><td><b>'.htmlspecialchars($mounts['name']).'</b> ('.$mounts['points'].' points)<br />'.htmlspecialchars($mounts['description']).'</td><td align="center">';
                                if(!$logged)
                {
                    $main_content .= '<b>Login to buy</b>';
                }
                else
                {
                    $main_content .= '<form action="?subtopic=shopsystem&action=select_player" method="POST" name="itemform_'.$mounts['id'].'"><input type="hidden" name="buy_id" value="'.$mounts['id'].'"><div class="navibutton"><a href="" onClick="itemform_'.$mounts['id'].'.submit();return false;">BUY</a></div></form>';
                }
                $main_content .= '</td></tr>';
            }
            $main_content .= '</table>';
        }
                //show list of addons offers
        if((count($offer_list['addons']) > 0) and ($action == 'addons'))
        {
            $main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%"><tr bgcolor="'.$config['site']['vdarkborder'].'"><td width="8%" align="center" class="white"><b>Points</b></td><td width="9%" align="center" class="white"><b>Picture</b></td><td width="350" align="left" class="white"><b>Description</b></td><td width="250" align="center" class="white"><b>Select product</b></td></tr>';
            foreach($offer_list['addons'] as $addons)
            {
                if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++;
                $main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><b>'.$addons['points'].'</b></td><td align="center"><img src="' . $config['site']['item_images_url'] . $addons['addons_id'] . $config['site']['item_images_extension'] . '"></td><td><b>'.htmlspecialchars($addons['name']).'</b> ('.$addons['points'].' points)<br />'.htmlspecialchars($addons['description']).'</td><td align="center">';
                                if(!$logged)
                {
                    $main_content .= '<b>Login to buy</b>';
                }
                else
                {
                    $main_content .= '<form action="?subtopic=shopsystem&action=select_player" method="POST" name="itemform_'.$mounts['id'].'"><input type="hidden" name="buy_id" value="'.$mounts['id'].'"><div class="navibutton"><a href="" onClick="itemform_'.$mounts['id'].'.submit();return false;">BUY</a></div></form>';
                }
                $main_content .= '</td></tr>';
            }
            $main_content .= '</table>';
        }

        if((count($offer_list['item']) > 0) or (count($offer_list['mounts']) > 0) or (count($offer_list['addons']) > 0))
        {
            $main_content .= '<table BORDER=0 CELLPaDDING="4" CELLSPaCING="1" style="width:100%;font-weight:bold;text-align:center;">
            <tr style="background:#505050;">
                    <td colspan="3" style="height:px;"></td>
            </tr>
            </table>';
        }
    }
    if($action == 'select_player')
    {
        unset($_SESSION['viewed_confirmation_page']);
        if(!$logged) {
            $errormessage .= 'Please login first.';
        }
        else
        {
            $buy_id = (int) $_REQUEST['buy_id'];
            if(empty($buy_id))
            {
                $errormessage .= 'Please <a href="?subtopic=shopsystem">select item</a> first.';
            }
            else
            {
                $buy_offer = getItemByID($buy_id);
                if(isset($buy_offer['id'])) //item exist in database
                {
                    if($user_premium_points >= $buy_offer['points'])
                    {
                        $main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%">
                        <tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="2" class="white"><b>Selected Offer</b></td></tr>
                        <tr bgcolor="'.$config['site']['lightborder'].'"><td width="100"><b>Name:</b></td><td width="550">'.htmlspecialchars($buy_offer['name']).'</td></tr>
                        <tr bgcolor="'.$config['site']['darkborder'].'"><td width="100"><b>Description:</b></td><td width="550">'.htmlspecialchars($buy_offer['description']).'</td></tr>
                        </table><br />
                        <form action="?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_id" value="'.$buy_id.'">
                        <table border="0" cellpadding="4" cellspacing="1" width="100%">
                        <tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="2" class="white"><b>Give item to player from your account</b></td></tr>
                        <tr bgcolor="'.$config['site']['lightborder'].'"><td width="110"><b>Name:</b></td><td width="550"><select name="buy_name">';
                        $players_from_logged_acc = $account_logged->getPlayersList();
                        if(count($players_from_logged_acc) > 0)
                        {
                            foreach($players_from_logged_acc as $player)
                            {
                                $main_content .= '<option>'.htmlspecialchars($player->getName()).'</option>';
                            }
                        }
                        else
                        {
                            $main_content .= 'You don\'t have any character on your account.';
                        }
                        $main_content .= '</select>&nbsp;<input type="submit" value="Give"></td></tr>
                        </table>
                        </form><br /><form action="?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_id" value="'.$buy_id.'">
                            <table border="0" cellpadding="4" cellspacing="1" width="100%">
                            <tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="2" class="white"><b>Give item to other player</b></td></tr>
                            <tr bgcolor="'.$config['site']['lightborder'].'"><td width="110"><b>To player:</b></td><td width="550"><input type="text" name="buy_name"> - name of player</td></tr>
                            <tr bgcolor="'.$config['site']['darkborder'].'"><td width="110"><b>From:</b></td><td width="550"><input type="text" name="buy_from">&nbsp;<input type="submit" value="Give"> - your nick, \'empty\' = Anonymous</td></tr>
                            </table><br />
                            </form>';

shopsystem.php second part

HTML:
                    }
                    else
                    {
                        $errormessage .= 'For this item you need <b>'.$buy_offer['points'].'</b> points. You have only <b>'.$user_premium_points.'</b> premium points. Please <a href="?subtopic=shopsystem">select other item</a> or buy premium points.';
                    }
                }
                else
                {
                    $errormessage .= 'Offer with ID <b>'.$buy_id.'</b> doesn\'t exist. Please <a href="?subtopic=shopsystem">select item</a> again.';
                }
            }
        }
        if(!empty($errormessage))
        {
            $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Informations</B></TD></TR>
                <TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.$errormessage.'</b></TD></TR>
                </table>';
        }
    }
    elseif($action == 'confirm_transaction')
    {
        if(!$logged)
        {
            $errormessage .= 'Please login first.';
        }
        else
        {
            $buy_id = (int) $_POST['buy_id'];
            $buy_name = trim($_POST['buy_name']);
            $buy_from = trim($_POST['buy_from']);
            if(empty($buy_from))
            {
                $buy_from = 'Anonymous';
            }
            if(empty($buy_id))
            {
                $errormessage .= 'Please <a href="?subtopic=shopsystem">select item</a> first.';
            }
            else
            {
                if(!check_name($buy_from))
                {
                    $errormessage .= 'Invalid nick ("from player") format. Please <a href="?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a> or contact with administrator.';
                }
                else
                {
                    $buy_offer = getItemByID($buy_id);
                    if(isset($buy_offer['id'])) //item exist in database
                    {
                        if($user_premium_points >= $buy_offer['points'])
                        {
                            if(check_name($buy_name))
                            {
                                $buy_player = new Player();
                                $buy_player->find($buy_name);
                                if($buy_player->isLoaded())
                                {
                                    $buy_player_account = $buy_player->getAccount();
                                    if($_SESSION['viewed_confirmation_page'] == 'yes' && $_POST['buy_confirmed'] == 'yes')
                                    {
                                        if($buy_offer['type'] == 'item')
                                        {
                                            $sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' ('.$SQL->fieldName('id').','.$SQL->fieldName('name').','.$SQL->fieldName('type').','.$SQL->fieldName('action').','.$SQL->fieldName('param1').','.$SQL->fieldName('param2').','.$SQL->fieldName('param3').','.$SQL->fieldName('param4').','.$SQL->fieldName('param5').','.$SQL->fieldName('param6').','.$SQL->fieldName('param7').','.$SQL->fieldName('delete_it').') VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote('login').', '.$SQL->quote('give_item').', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['item_count']).', '.$SQL->quote('').', '.$SQL->quote('').', '.$SQL->quote('item').', '.$SQL->quote($buy_offer['name']).', '.$SQL->quote('').', '.$SQL->quote(1).');';
                                            $SQL->query($sql);
                                            $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' ('.$SQL->fieldName('id').','.$SQL->fieldName('to_name').','.$SQL->fieldName('to_account').','.$SQL->fieldName('from_nick').','.$SQL->fieldName('from_account').','.$SQL->fieldName('price').','.$SQL->fieldName('offer_id').','.$SQL->fieldName('trans_state').','.$SQL->fieldName('trans_start').','.$SQL->fieldName('trans_real').') VALUES ('.$SQL->lastInsertId().', '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['name']).', '.$SQL->quote('wait').', '.$SQL->quote(time()).', '.$SQL->quote(0).');';
                                            $SQL->query($save_transaction);
                                            $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
                                            $user_premium_points = $user_premium_points - $buy_offer['points'];
                                            $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
                                                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Item added!</B></TD></TR>
                                                <TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.htmlspecialchars($buy_offer['name']).'</b> added to player <b>'.htmlspecialchars($buy_player->getName()).'</b> items (he will get this items after relog) for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="?subtopic=shopsystem">GO TO MAIN SHOP SITE</a></TD></TR>
                                                </table>';
                                        }
                                        elseif($buy_offer['type'] == 'mounts')
                                        {
                                            $sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' ('.$SQL->fieldName('id').','.$SQL->fieldName('name').','.$SQL->fieldName('type').','.$SQL->fieldName('action').','.$SQL->fieldName('param1').','.$SQL->fieldName('param2').','.$SQL->fieldName('param3').','.$SQL->fieldName('param4').','.$SQL->fieldName('param5').','.$SQL->fieldName('param6').','.$SQL->fieldName('param7').','.$SQL->fieldName('delete_it').') VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote('login').', '.$SQL->quote('give_item').', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['item_count']).', '.$SQL->quote($buy_offer['mounts_id']).', '.$SQL->quote($buy_offer['mounts_count']).', '.$SQL->quote('mounts').', '.$SQL->quote($buy_offer['name']).', '.$SQL->quote('').', '.$SQL->quote(1).');';
                                            $SQL->query($sql);
                                            $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' ('.$SQL->fieldName('id').','.$SQL->fieldName('to_name').','.$SQL->fieldName('to_account').','.$SQL->fieldName('from_nick').','.$SQL->fieldName('from_account').','.$SQL->fieldName('price').','.$SQL->fieldName('offer_id').','.$SQL->fieldName('trans_state').','.$SQL->fieldName('trans_start').','.$SQL->fieldName('trans_real').') VALUES ('.$SQL->lastInsertId().', '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['name']).', '.$SQL->quote('wait').', '.$SQL->quote(time()).', '.$SQL->quote(0).');';
                                            $SQL->query($save_transaction);
                                            $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
                                            $user_premium_points = $user_premium_points - $buy_offer['points'];
                                            $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
                                                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Mounts of items added!</B></TD></TR>
                                                <TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.htmlspecialchars($buy_offer['name']).'</b> added to player <b>'.htmlspecialchars($buy_player->getName()).'</b> items (he will get this mounts with items after relog) for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="?subtopic=shopsystem">GO TO MAIN SHOP SITE</a></TD></TR>
                                                </table>';
                                        }
                                                                                elseif($buy_offer['type'] == 'addons')
                                        {
                                            $sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' ('.$SQL->fieldName('id').','.$SQL->fieldName('name').','.$SQL->fieldName('type').','.$SQL->fieldName('action').','.$SQL->fieldName('param1').','.$SQL->fieldName('param2').','.$SQL->fieldName('param3').','.$SQL->fieldName('param4').','.$SQL->fieldName('param5').','.$SQL->fieldName('param6').','.$SQL->fieldName('param7').','.$SQL->fieldName('delete_it').') VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote('login').', '.$SQL->quote('give_item').', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['item_count']).', '.$SQL->quote($buy_offer['mounts_id']).', '.$SQL->quote($buy_offer['mounts_count']).', '.$SQL->quote('mounts').', '.$SQL->quote($buy_offer['name']).', '.$SQL->quote('').', '.$SQL->quote(1).');';
                                            $SQL->query($sql);
                                            $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' ('.$SQL->fieldName('id').','.$SQL->fieldName('to_name').','.$SQL->fieldName('to_account').','.$SQL->fieldName('from_nick').','.$SQL->fieldName('from_account').','.$SQL->fieldName('price').','.$SQL->fieldName('offer_id').','.$SQL->fieldName('trans_state').','.$SQL->fieldName('trans_start').','.$SQL->fieldName('trans_real').') VALUES ('.$SQL->lastInsertId().', '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['name']).', '.$SQL->quote('wait').', '.$SQL->quote(time()).', '.$SQL->quote(0).');';
                                            $SQL->query($save_transaction);
                                            $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
                                            $user_premium_points = $user_premium_points - $buy_offer['points'];
                                            $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
                                                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Mounts of items added!</B></TD></TR>
                                                <TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.htmlspecialchars($buy_offer['name']).'</b> added to player <b>'.htmlspecialchars($buy_player->getName()).'</b> items (he will get this mounts with items after relog) for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="?subtopic=shopsystem">GO TO MAIN SHOP SITE</a></TD></TR>
                                                </table>';
                                        }
                                    }
                                    else
                                    {
                                        $set_session = TRUE;
                                        $_SESSION['viewed_confirmation_page'] = 'yes';
                                        $main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%">
                                        <tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="3" class="white"><b>Confirm Transaction</b></td></tr>
                                        <tr bgcolor="'.$config['site']['lightborder'].'"><td width="100"><b>Name:</b></td><td width="550" colspan="2">'. htmlspecialchars($buy_offer['name']).'</td></tr>
                                        <tr bgcolor="'.$config['site']['darkborder'].'"><td width="100"><b>Description:</b></td><td width="550" colspan="2">'. htmlspecialchars($buy_offer['description']).'</td></tr>
                                        <tr bgcolor="'.$config['site']['lightborder'].'"><td width="100"><b>Cost:</b></td><td width="550" colspan="2"><b>'. htmlspecialchars($buy_offer['points']).' premium points</b> from your account</td></tr>
                                        <tr bgcolor="'.$config['site']['darkborder'].'"><td width="100"><b>For Player:</b></td><td width="550" colspan="2"><font color="red">'.htmlspecialchars($buy_player->getName()).'</font></td></tr>
                                        <tr bgcolor="'.$config['site']['lightborder'].'"><td width="100"><b>From:</b></td><td width="550" colspan="2"><font color="red">'.htmlspecialchars($buy_from).'</font></td></tr>
                                        <tr bgcolor="'.$config['site']['darkborder'].'"><td colspan="3"></td></tr>
                                        <tr bgcolor="'.$config['site']['darkborder'].'"><td width="100"><b>Transaction?</b></td><td width="275" align="left">
                                        <form action="?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_confirmed" value="yes"><input type="hidden" name="buy_id" value="'.$buy_id.'"><input type="hidden" name="buy_from" value="'.htmlspecialchars($buy_from).'"><input type="hidden" name="buy_name" value="'.htmlspecialchars($buy_name).'"><input type="submit" value="Accept"></form></td>
                                        <td align="right"><form action="?subtopic=shopsystem" method="POST"><input type="submit" value="Cancel"></form></td></tr>
                                        <tr bgcolor="'.$config['site']['darkborder'].'"><td colspan="3"></td></tr>
                                        </table>
                                        ';
                                    }
                                }
                                else
                                {
                                    $errormessage .= 'Player with name <b>'.htmlspecialchars($buy_name).'</b> doesn\'t exist. Please <a href="?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a>.';
                                }
                            }
                            else
                            {
                                $errormessage .= 'Invalid name format. Please <a href="?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a> or contact with administrator.';
                            }
                        }
                        else
                        {
                            $errormessage .= 'For this item you need <b>'.$buy_offer['points'].'</b> points. You have only <b>'.$user_premium_points.'</b> premium points. Please <a href="?subtopic=shopsystem">select other item</a> or buy premium points.';
                        }
                    }
                    else
                    {
                        $errormessage .= 'Offer with ID <b>'.$buy_id.'</b> doesn\'t exist. Please <a href="?subtopic=shopsystem">select item</a> again.';
                    }
                }
            }
        }
        if(!empty($errormessage))
        {
            $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Informations</B></TD></TR>
                <TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.$errormessage.'</b></TD></TR>
                </table>';
        }
        if(!$set_session)
        {
            unset($_SESSION['viewed_confirmation_page']);
        }
    }
    elseif($action == 'show_history')
    {
        if(!$logged)
        {
            $errormessage .= 'Please login first.';
        }
        else
        {
            $items_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_history_item').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';');
            if(is_object($items_history_received))
            {
                foreach($items_history_received as $item_received)
                {
                    if($account_logged->getId() == $item_received['to_account'])
                        $char_color = 'green';
                    else
                        $char_color = 'red';
                    $items_received_text .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td><font color="'.$char_color.'">'.htmlspecialchars($item_received['to_name']).'</font></td><td>';
                    if($account_logged->getId() == $item_received['from_account'])
                        $items_received_text .= '<i>Your account</i>';
                    else
                        $items_received_text .= htmlspecialchars($item_received['from_nick']);
                    $items_received_text .= '</td><td>'.htmlspecialchars($item_received['offer_id']).'</td><td>'.date("j F Y, H:i:s", $item_received['trans_start']).'</td>';
                    if($item_received['trans_real'] > 0)
                        $items_received_text .= '<td>'.date("j F Y, H:i:s", $item_received['trans_real']).'</td>';
                    else
                        $items_received_text .= '<td><b><font color="red">Not realized yet.</font></b></td>';
                    $items_received_text .= '</tr>';
                }
            }
            $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'"></TD></TR>
                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><center><B>Transactions History</B></center></TD></TR>
                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'"></TD></TR>
                </table><br>';
               
            if(!empty($items_received_text))
            {
                $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
                    <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white colspan="5"><B>Item Transactions</B></TD></TR>
                    <tr bgcolor="'.$config['site']['darkborder'].'"><td><b>To:</b></td><td><b>From:</b></td><td><b>Offer name</b></td><td><b>Bought on page</b></td><td><b>Received on OTS</b></td></tr>
                    '.$items_received_text.'
                    </table><br />';
            }
            if(empty($items_received_text))
                $errormessage .= 'You did not buy/receive any item.';
        }
        if(!empty($errormessage))
        {
            $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
                <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Informations</B></TD></TR>
                <TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.$errormessage.'</b></TD></TR>
                </table>';
        }
    }
    $main_content .= '<br><TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
        <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Premium Points</B></TD></TR>
        <TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b><font color="green">You have premium points: </font></b>'.$user_premium_points.'</TD></TR>
        </table>';
}
else
    $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
    <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=center CLASS=white ><B>Shop Information</B></TD></TR>
    <TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><center>Shop is currently closed. [to admin: edit it in \'config/config.php\']</TD></TR>
    </table>';
 

Attachments

Last edited by a moderator:
Please don't tripple post or even double post within 24h, read the rules, if it was because the posts were to long use pastebin.

Try this;
Lua:
SHOP_MSG_TYPE = 19

SQL_interval = 30

function onThink(interval, lastExecution)
   local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
   if(result_plr:getID() ~= -1) then
       while(true) do
           id = tonumber(result_plr:getDataInt("id"))
           action = tostring(result_plr:getDataString("action"))
           delete = tonumber(result_plr:getDataInt("delete_it"))
           cid = getCreatureByName(tostring(result_plr:getDataString("name")))
           if isPlayer(cid) == TRUE then
               local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
               local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
               local container_id = tonumber(result_plr:getDataInt("param3"))
               local container_count = tonumber(result_plr:getDataInt("param4"))
               local add_item_type = tostring(result_plr:getDataString("param5"))
               local add_item_name = tostring(result_plr:getDataString("param6"))
               local received_item = 0
               local full_weight = 0
               if add_item_type == 'container' then
                   full_weight = getItemWeightById(itemtogive_id, 1)
               end
               local free_cap = getPlayerFreeCap(cid)
               if full_weight <= free_cap then
                   if add_item_type == 'container' then
                       local new_container = doCreateItemEx(container_id, 1)
                       local iter = 0
                       while iter ~= container_count do
                           doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                           iter = iter + 1
                       end
                       received_item = doPlayerAddItemEx(cid, new_container)
                   else
                      received_item = doPlayerAddItem(cid, itemtogive_id, itemtogive_count)
                   end
                   if received_item == RETURNVALUE_NOERROR then
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
                       db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                       db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
doPlayerSave(cid)
else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
                   end
               else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
               end
           end
           if not(result_plr:next()) then
               break
           end
       end
       result_plr:free()
   end
   return TRUE
end
 
Please don't tripple post or even double post within 24h, read the rules, if it was because the posts were to long use pastebin.

Try this;
Lua:
SHOP_MSG_TYPE = 19

SQL_interval = 30

function onThink(interval, lastExecution)
   local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
   if(result_plr:getID() ~= -1) then
       while(true) do
           id = tonumber(result_plr:getDataInt("id"))
           action = tostring(result_plr:getDataString("action"))
           delete = tonumber(result_plr:getDataInt("delete_it"))
           cid = getCreatureByName(tostring(result_plr:getDataString("name")))
           if isPlayer(cid) == TRUE then
               local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
               local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
               local container_id = tonumber(result_plr:getDataInt("param3"))
               local container_count = tonumber(result_plr:getDataInt("param4"))
               local add_item_type = tostring(result_plr:getDataString("param5"))
               local add_item_name = tostring(result_plr:getDataString("param6"))
               local received_item = 0
               local full_weight = 0
               if add_item_type == 'container' then
                   full_weight = getItemWeightById(itemtogive_id, 1)
               end
               local free_cap = getPlayerFreeCap(cid)
               if full_weight <= free_cap then
                   if add_item_type == 'container' then
                       local new_container = doCreateItemEx(container_id, 1)
                       local iter = 0
                       while iter ~= container_count do
                           doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                           iter = iter + 1
                       end
                       received_item = doPlayerAddItemEx(cid, new_container)
                   else
                      received_item = doPlayerAddItem(cid, itemtogive_id, itemtogive_count)
                   end
                   if received_item == RETURNVALUE_NOERROR then
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
                       db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                       db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
doPlayerSave(cid)
else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
                   end
               else
                       doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> The item '.. add_item_name ..' << that you just bought on the website couldnt be added. Han error has ocurred, please wait '.. SQL_interval ..' seconds.. Shop ID: '.. id ..'')
               end
           end
           if not(result_plr:next()) then
               break
           end
       end
       result_plr:free()
   end
   return TRUE
end

Continues with the same error
say tibia : 21:05 >> The item Vocação C8 << that you just bought on the website couldnt be added. Han error has ocurred, please wait 30 seconds.. Shop ID: 5
 
Do you have your source code?
Could you send these functions from luascript.cpp;
doPlayerAddItem
doCreateItemEx
 
Where can I find these files?

Where I said, in your source code :p
Do you have any .cpp / .h files in your server directory? If so open luascript.cpp and serach for the function names.
Otherwise give it a try and change the script to something else, I know there are plenty of ppl who have had problems with this and if I remember correctly it's that there is a diffrent return from the function doCreateItemEx
 
Where I said, in your source code :p
Do you have any .cpp / .h files in your server directory? If so open luascript.cpp and serach for the function names.
Otherwise give it a try and change the script to something else, I know there are plenty of ppl who have had problems with this and if I remember correctly it's that there is a diffrent return from the function doCreateItemEx



I have these files in my directory, what I do to fix this problem I'm lost, should I post my .cpp here?
 
I have these files in my directory, what I do to fix this problem I'm lost, should I post my .cpp here?
Sure do that if you think its easier, you will most likely have to attach it due to the size / use pastebin.
 
Where can I be going to fix this problem? Inside the folder date? I do not understand much of script

Upload your luascript.cpp so we can see what the function returns, since the script is expecting a return value your function might return a boolean value (true or false), causing the script to fail.
Or do as I said and try another one, there are plenty of these threads if you serach.
 
Upload your luascript.cpp so we can see what the function returns, since the script is expecting a return value your function might return a boolean value (true or false), causing the script to fail.
Or do as I said and try another one, there are plenty of these threads if you serach.

Where can I find this luascript.cpp? Which directory
luascript.cpp

These are the sources, you can send me a tfs. Compiled without errors I do not know anything about dev-cpp can help me?
Source DboRox.rar
 
Last edited:
Back
Top