Postado Maio 14, 2015 10 anos na action "confirm_transaction" do shopsystem, na opção de oferta do vip, você colocou o que? A mesma coisa do que ta no itens. Pq nessa aba eu vendo apenas as medalhas de ouro, bronze e prata. Não me recordo o que esta lá. Vou fazer uma assistência remota lá em casa e torce pro PC esta lugado. Assim eu posso postar meu shop aqui luanluciano93 elseif($buy_offer['type'] == 'VipDays') { $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($buy_offer['id']).', '.$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>VipDays 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>'; }
Postado Maio 15, 2015 10 anos Autor $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($buy_offer['id']).', '.$SQL->quote(1).');'; $SQL->query($sql); Essa parte não precisa. Depois dessa linha: $SQL->query($save_transaction); você pode criar uma váriavel que pega o valor do vip_time na database: $player_viptime = $account_logged->getCustomField('vip_time'); Depois você criar uma expressão, para verificar se dá existe um valor de vip_time ou não, e add de acordo: if($player_viptime > 0) { $account_logged->setCustomField('vip_time', $player_viptime + $buy_offer['days'] * 86400); } else { $account_logged->setCustomField('vip_time', time() + $buy_offer['days'] * 86400); } O resto pode deixar. Teste!
Postado Maio 15, 2015 10 anos $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($buy_offer['id']).', '.$SQL->quote(1).');'; $SQL->query($sql); Essa parte não precisa. Depois dessa linha: $SQL->query($save_transaction); você pode criar uma váriavel que pega o valor do vip_time na database: $player_viptime = $account_logged->getCustomField('vip_time'); Depois você criar uma expressão, para verificar se dá existe um valor de vip_time ou não, e add de acordo: if($player_viptime > 0) { $account_logged->setCustomField('vip_time', $player_viptime + $buy_offer['days'] * 86400); } else { $account_logged->setCustomField('vip_time', time() + $buy_offer['days'] * 86400); } O resto pode deixar. Teste! Nai entendi muito bem, e na hora de adiciona os dias de VIP na loja, coloco o que no item ID e quantidade??
Postado Maio 18, 2015 9 anos Segui todo Tutorial Criei um item que da VIP , usando a funcao que voce passou,Porem da este erro na distro Lua Script Error: [Action Interface] data/actions/scripts/vipitem.lua:onUse data/actions/scripts/vipitem.lua:2: attempt to call method 'addVipTime' (a nil value) stack traceback: [C]: in function 'addVipTime' data/actions/scripts/vipitem.lua:2: in function <data/actions/scripts/vipitem.lua:1> Sei que vai Pedir entao Deixo aqui o Script do item: function onUse(player, item, fromPosition, target, toPosition, isHotkey) player:addVipTime(30) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received 30 premium days.") item:remove(1) return true end Ja tentei usar o comando player:addVipDays(30) Oque pode ser? Editado Maio 18, 2015 9 anos por gangul321 (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.