Ir para conteúdo

Rayo

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Rayo recebeu reputação de L3K0T em ✅ - Erro ao instalar site   
    Então cara,seu servidor web ou vps está com alguma configuração errada pois ele deveria PELO MENOS executar o arquivo HTML.  Veja se este tutorial te ajuda:
     
    Se não funcionar, veja outros vídeos desta lista: https://www.youtube.com/results?search_query=Instalando+Servidor+Web+Linux+vps
  2. Curtir
    Rayo recebeu reputação de GOD Vitor em Alguém consegue fazer - Sistema anti-deslize   
    Está disposto a pagar pelo desenvolvimento?
  3. Curtir
    Rayo recebeu reputação de Duvidas Muitas Dvds em (Resolvido)Nenhum talkactions funciona   
    Na tabela "accounts" abra a sua conta e mude o type  para 5.
  4. Gostei
    Rayo recebeu reputação de Matheus Chanavat em Teleport Tile [TFS 1.2]   
    Da uma olhada neste tutorial da otland:

    https://otland.net/threads/tfs-1-2-teleport-pad-system-rewrite.245784/
     
     
  5. Curtir
    Rayo deu reputação a mateuscorrea em [Script] Item que invoca Monstro   
    @L3K0T @LeoTK @Rayo  Resolvi o problema, obrigado pela ajuda de vocês. 
    Vou explicar os passos de arrumar o erro, caso alguém também tenha no futuro.
     
    Primeiro , você precisa achar no paste itens.xml um item que não tenha funcionalidade no jogo e que possa atribuir uma função de script.
     
    Fui na pasta ITEMS.Xml e fiz o seguinte:
    <item id="9077" article="an" name="Red Demon Bag" />   
    Pronto , ja havia atribuido uma funcionalidade ao item 9077 (Antiga Bag de demon evento)
     
    Segundo , você deve criar um monstro dentro da pasta Monster  ( ja entenderão o motivo),  então usei o seguinte script: 
     
    ?xml version="1.0" encoding="UTF-8"?>
    <monster name="Red Demon" nameDescription="a red demon" race="fire" experience="0" speed="300" manacost="10000">
      <health now="8200" max="8200"/>
      <look type="35" corpse="5995"/>
      <targetchange interval="5000" chance="8"/>
      <strategy attack="200" defense="100"/>
      <flags>
        <flag summonable="1"/>
        <flag attackable="1"/>
        <flag hostile="0"/>
        <flag illusionable="0"/>
        <flag convinceable="1"/>
        <flag pushable="0"/>
        <flag canpushitems="1"/>
        <flag canpushcreatures="1"/>
        <flag targetdistance="1"/>
        <flag staticattack="90"/>
        <flag runonhealth="0"/>
     
    Importe seu monstro na pasta monster.xml 
    monster name="Red Demon" file="Monstros Danger/Red Demon.xml"/>
     
    Após Criar o monstro , deverá fazer o script que vai atribuir o monstro a ser invocado na pasta actions com o seguinte nome : smonster.lua 
     
    local config = {
        
        name = "Red Demon", -- Nome do Summon
        max = 1, -- Máximo de summons
        exaust_sto = 5555, -- Storage que contabiliza o exaust
        exaust_time = 2 -- Segundos de Exaust
        
    }
    function onUse(cid, item, fromPosition, itemEx, toPosition)
        local pos = getCreaturePosition(cid)
            if not exhaustion.check(cid, config.exaust_sto) then
                if table.maxn(getCreatureSummons(cid)) <= config.max then
                    local target = doCreateMonster(config.name, pos)
                    doConvinceCreature(cid, target)
                    doPlayerSendTextMessage(cid, 27, "Voce invocou o monstro ".. config.name .."!!")
                    doSendMagicEffect(pos, CONST_ME_TELEPORT)
                    exhaustion.set(cid, config.exaust_sto, config.exaust_time)
                    return true
                else
                    doPlayerSendTextMessage(cid, 27, "Você ja tem a quantidade máxima de summons ativos!")
                    doSendMagicEffect(pos, POFF)
                    return false 
                end
            else
                doPlayerSendTextMessage(cid, 27, "Exhaustion!! Wait ".. exhaustion.get(cid, config.exaust_sto) .." seconds.")
                doSendMagicEffect(pos, POFF)
                return false
            end
        return true
    end
     
    Terceiro ,  colocar esse script dentro da pasta do actions : 
    <action itemid="9076" script="smonster.lua"/>
     
     
    Quarto passo abrir o Mapa do jogo e importar o monstro!
     
    A explicação sobre a criação do monstro é simples .
    Normalmente os monstros vem com atribuições dentro do seu script sobre atacar , summonar e etc.
    Se você simplesmente pegar um monstro do seu mapa que ja existe e altera-lo , vai interferir em todos os monstros que ja estão importados no game.
     
    Então o Adequeado é que se crie um monstro com as características que você quer para que ele seja seu PET , acaba que fica muito mais fácil do que PET SYSTEM
     
    E como ultimo passo
    Assim como foi citado pelo nosso amigo @L3K0T  existe um pequeno problema ao adicionar esse sistema de monstros .
     
    Deve ir nas FLAGS do monstro e alterar para:
     
    <flags>
        <flag summonable="0"/>   (Atribua um valor 1 ) - Para que possa ser sumonado  =     <flag summonable="1"/> 
        <flag attackable="1"/>       (Caso queira que o Pet possa ser atacado deixe como esta)
        <flag hostile="1"/>             (Chegamos ao problema , HOSTIL = 1 significa que o monstro também mata quem somona , então coloque 0)
        <flag illusionable="0"/>  
        <flag convinceable="0"/>   (E para finalizar Convinceable deve ter o valor 1 , para você conseguir controlar o monstro)  = <flag convinceable="0"/>  
        <flag pushable="0"/>
        <flag canpushitems="1"/>
        <flag canpushcreatures="1"/>
        <flag targetdistance="1"/>
        <flag staticattack="90"/>
        <flag runonhealth="0"/>
      </flags>
     
     
    Obrigado por todos que me deram essa idéia , ja testei em outros mapas e funcionou  ! Valeu gente . Repp++ pra todos
  6. Curtir
    Rayo recebeu reputação de mateuscorrea em [Script] Item que invoca Monstro   
    Testa ai amigo:

     
    local config = { name = "Morgaroth", -- Nome do Summon max = 1, -- Máximo de summons exaust_sto = 5555, -- Storage que contabiliza o exaust exaust_time = 2 -- Segundos de Exaust } function onUse(cid, item, fromPosition, itemEx, toPosition) local player = Creature(cid) local position = player:getPosition() local summon = Game.createMonster(config.name,position,true) if not exhaustion.check(player, config.exaust_sto) then if #player:getSummons() < config.max then player:addSummon(summon) doPlayerSendTextMessage(player, 27, "Voce invocou o monstro ".. config.name .."!!") doSendMagicEffect(position, CONST_ME_TELEPORT) exhaustion.set(cid, config.exaust_sto, config.exaust_time) return true else doPlayerSendTextMessage(player, 27, "Você ja tem a quantidade máxima de summons ativos!") doSendMagicEffect(position, POFF) return false end else doPlayerSendTextMessage(player 27, "Exhaustion!! Wait ".. exhaustion.get(player, config.exaust_sto) .." seconds.") doSendMagicEffect(position, POFF) return false end return true end  
  7. Gostei
    Rayo deu reputação a Celulose em Erro de Item que Sumonna   
    @mateuscorrea 
    <event type="combat" name="SummonAntKillPlayer" event="script" value="SummonAntKillPlayer.lua"/> <event type="combat" name="PlayerAntKillSummon" event="script" value="PlayerAntKillSummon.lua"/> SummonAntKillPlayer.lua
     
    function onCombat(cid, target) if isInArray(getCreatureSummons(target), cid) then return false end return true end  
    PlayerAntKillSummon.lua
     
    function onCombat(cid, target) if cid == getCreatureMaster(target) then doPlayerSendCancel(cid, "Voce nao pode matar seu summon.") return false end return true end  
    login.lua
    registerCreatureEvent(cid, "PlayerAntKillSummon") registerCreatureEvent(cid, "SummonAntKillPlayer")  
    Creditos
    ackerzin
     
  8. Gostei
    Rayo deu reputação a brasil0014 em (Resolvido)ERRO CONFIGURAÇÃO DE MOVES POKEMON   
    Valeu broder já me ajudou muito, minha dúvida com relação ao erro acima foi sanada, se quiser podem fechar o tópico. Dúvida sanada 
  9. Obrigado
    Rayo recebeu reputação de brasil0014 em (Resolvido)ERRO CONFIGURAÇÃO DE MOVES POKEMON   
    Há sim... se você souber o código que foi implementado, ai é só abrir o visual studio,colocar o código fonte e compilar. Caso contrario, é melhor escolher outra base.
  10. Gostei
    Rayo recebeu reputação de brasil0014 em (Resolvido)ERRO CONFIGURAÇÃO DE MOVES POKEMON   
    Sobre o erro:Ele está tentando chamar uma função com o nome: getCD que não existe na source.(Pode ser que ela exista dentro dos códigos LUA mas não existe dentro dos códigos C++).
  11. Curtir
    Rayo recebeu reputação de Pedro. em [Baiak 8.6] Formação de Equipe   
    Eu mandei uma mensagem no teu privado!
  12. Curtir
    Rayo recebeu reputação de Lurk em [Gesior]Dobrar pontos PagSeguro a partir de x valor doado   
    Bom dia, realizei a modificação a partir do pedido de um membro do fórum.Onde ele desejava que fosse dado o dobro de pontos a partir de x pontos comprados.
     
    A modificação é baseada no tópico do Natanael Beckman:
     
    No arquivo config.php:
    $config['pagSeguro']['doublePoints'] = false // Não altere,deixe como false mesmo  No arquivo retpagseguro.php substitua por este:
    <?php ### DONT TOUCH IN THIS CODE ### ### WORKING FINE 19/08/2006 ### ### IVENSPONTES ### ### github.com/ivenspontes/ ### header("access-control-allow-origin: https://pagseguro.uol.com.br"); require_once 'custom_scripts/PagSeguroLibrary/PagSeguroLibrary.php'; require 'config/config.php'; $method = $_SERVER['REQUEST_METHOD']; if('POST' == $method){ $type = $_POST['notificationType']; $notificationCode = $_POST['notificationCode']; if ($type === 'transaction'){ try { $credentials = PagSeguroConfig::getAccountCredentials(); $transaction = PagSeguroNotificationService::checkTransaction($credentials, $notificationCode); $arrayPDO['transaction_code'] = $transaction->getCode(); $arrayPDO['name'] = $transaction->getReference(); $arrayPDO['payment_method'] = $transaction->getPaymentMethod()->getType()->getTypeFromValue(); $arrayPDO['status'] = $transaction->getStatus()->getTypeFromValue(); $item = $transaction->getItems(); $arrayPDO['item_count'] = $item[0]->getQuantity(); $date_now = date('Y-m-d H:i:s'); $arrayPDO['data'] = $date_now; $dobrarApartirDe = 10; try { $conn = new PDO('mysql:host='.$config['pagSeguro']['host'].';dbname='.$config['pagSeguro']['database'].'', $config['pagSeguro']['databaseUser'], $config['pagSeguro']['databasePass']); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare('INSERT into pagseguro_transactions SET transaction_code = :transaction_code, name = :name, payment_method = :payment_method, status = :status, item_count = :item_count, data = :data'); $stmt->execute($arrayPDO); if ($arrayPDO['status'] == 'PAID') { if (!$config['pagSeguro']['doublePoints'] && $arrayPDO['item_count'] >= $dobrarApartirDe) { $arrayPDO['item_count'] = $arrayPDO['item_count']*2; } $stmt = $conn->prepare('UPDATE accounts SET premium_points = premium_points + :item_count WHERE name = :name'); $stmt->execute(array('item_count' => $arrayPDO['item_count'], 'name' => $arrayPDO['name'])); $stmt = $conn->prepare("UPDATE pagseguro_transactions SET status = 'DELIVERED' WHERE transaction_code = :transaction_code AND status = 'PAID'"); $stmt->execute(array('transaction_code' => $arrayPDO['transaction_code'])); } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } catch(PagSeguroServiceException $e) { die($e->getMessage()); } } }  
    Substitua o valor da variável $dobrarApartirDe pelo valor que você deseja dobrar os pontos.
     
    Ex: Se você só deseja dobrar os pontos quando o doador fizer a compra de 10 pontos ou mais, o valor da variável será $dobrarApartirDe = 10;
     
    Espero ter ajudado com essa simples modificação!
     
    Até mais!
  13. Curtir
    Rayo recebeu reputação de Kramer em [Gesior]Dobrar pontos PagSeguro a partir de x valor doado   
    Bom dia, realizei a modificação a partir do pedido de um membro do fórum.Onde ele desejava que fosse dado o dobro de pontos a partir de x pontos comprados.
     
    A modificação é baseada no tópico do Natanael Beckman:
     
    No arquivo config.php:
    $config['pagSeguro']['doublePoints'] = false // Não altere,deixe como false mesmo  No arquivo retpagseguro.php substitua por este:
    <?php ### DONT TOUCH IN THIS CODE ### ### WORKING FINE 19/08/2006 ### ### IVENSPONTES ### ### github.com/ivenspontes/ ### header("access-control-allow-origin: https://pagseguro.uol.com.br"); require_once 'custom_scripts/PagSeguroLibrary/PagSeguroLibrary.php'; require 'config/config.php'; $method = $_SERVER['REQUEST_METHOD']; if('POST' == $method){ $type = $_POST['notificationType']; $notificationCode = $_POST['notificationCode']; if ($type === 'transaction'){ try { $credentials = PagSeguroConfig::getAccountCredentials(); $transaction = PagSeguroNotificationService::checkTransaction($credentials, $notificationCode); $arrayPDO['transaction_code'] = $transaction->getCode(); $arrayPDO['name'] = $transaction->getReference(); $arrayPDO['payment_method'] = $transaction->getPaymentMethod()->getType()->getTypeFromValue(); $arrayPDO['status'] = $transaction->getStatus()->getTypeFromValue(); $item = $transaction->getItems(); $arrayPDO['item_count'] = $item[0]->getQuantity(); $date_now = date('Y-m-d H:i:s'); $arrayPDO['data'] = $date_now; $dobrarApartirDe = 10; try { $conn = new PDO('mysql:host='.$config['pagSeguro']['host'].';dbname='.$config['pagSeguro']['database'].'', $config['pagSeguro']['databaseUser'], $config['pagSeguro']['databasePass']); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare('INSERT into pagseguro_transactions SET transaction_code = :transaction_code, name = :name, payment_method = :payment_method, status = :status, item_count = :item_count, data = :data'); $stmt->execute($arrayPDO); if ($arrayPDO['status'] == 'PAID') { if (!$config['pagSeguro']['doublePoints'] && $arrayPDO['item_count'] >= $dobrarApartirDe) { $arrayPDO['item_count'] = $arrayPDO['item_count']*2; } $stmt = $conn->prepare('UPDATE accounts SET premium_points = premium_points + :item_count WHERE name = :name'); $stmt->execute(array('item_count' => $arrayPDO['item_count'], 'name' => $arrayPDO['name'])); $stmt = $conn->prepare("UPDATE pagseguro_transactions SET status = 'DELIVERED' WHERE transaction_code = :transaction_code AND status = 'PAID'"); $stmt->execute(array('transaction_code' => $arrayPDO['transaction_code'])); } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } catch(PagSeguroServiceException $e) { die($e->getMessage()); } } }  
    Substitua o valor da variável $dobrarApartirDe pelo valor que você deseja dobrar os pontos.
     
    Ex: Se você só deseja dobrar os pontos quando o doador fizer a compra de 10 pontos ou mais, o valor da variável será $dobrarApartirDe = 10;
     
    Espero ter ajudado com essa simples modificação!
     
    Até mais!
  14. Gostei
    Rayo recebeu reputação de Pedro. em [Gesior]Dobrar pontos PagSeguro a partir de x valor doado   
    Bom dia, realizei a modificação a partir do pedido de um membro do fórum.Onde ele desejava que fosse dado o dobro de pontos a partir de x pontos comprados.
     
    A modificação é baseada no tópico do Natanael Beckman:
     
    No arquivo config.php:
    $config['pagSeguro']['doublePoints'] = false // Não altere,deixe como false mesmo  No arquivo retpagseguro.php substitua por este:
    <?php ### DONT TOUCH IN THIS CODE ### ### WORKING FINE 19/08/2006 ### ### IVENSPONTES ### ### github.com/ivenspontes/ ### header("access-control-allow-origin: https://pagseguro.uol.com.br"); require_once 'custom_scripts/PagSeguroLibrary/PagSeguroLibrary.php'; require 'config/config.php'; $method = $_SERVER['REQUEST_METHOD']; if('POST' == $method){ $type = $_POST['notificationType']; $notificationCode = $_POST['notificationCode']; if ($type === 'transaction'){ try { $credentials = PagSeguroConfig::getAccountCredentials(); $transaction = PagSeguroNotificationService::checkTransaction($credentials, $notificationCode); $arrayPDO['transaction_code'] = $transaction->getCode(); $arrayPDO['name'] = $transaction->getReference(); $arrayPDO['payment_method'] = $transaction->getPaymentMethod()->getType()->getTypeFromValue(); $arrayPDO['status'] = $transaction->getStatus()->getTypeFromValue(); $item = $transaction->getItems(); $arrayPDO['item_count'] = $item[0]->getQuantity(); $date_now = date('Y-m-d H:i:s'); $arrayPDO['data'] = $date_now; $dobrarApartirDe = 10; try { $conn = new PDO('mysql:host='.$config['pagSeguro']['host'].';dbname='.$config['pagSeguro']['database'].'', $config['pagSeguro']['databaseUser'], $config['pagSeguro']['databasePass']); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare('INSERT into pagseguro_transactions SET transaction_code = :transaction_code, name = :name, payment_method = :payment_method, status = :status, item_count = :item_count, data = :data'); $stmt->execute($arrayPDO); if ($arrayPDO['status'] == 'PAID') { if (!$config['pagSeguro']['doublePoints'] && $arrayPDO['item_count'] >= $dobrarApartirDe) { $arrayPDO['item_count'] = $arrayPDO['item_count']*2; } $stmt = $conn->prepare('UPDATE accounts SET premium_points = premium_points + :item_count WHERE name = :name'); $stmt->execute(array('item_count' => $arrayPDO['item_count'], 'name' => $arrayPDO['name'])); $stmt = $conn->prepare("UPDATE pagseguro_transactions SET status = 'DELIVERED' WHERE transaction_code = :transaction_code AND status = 'PAID'"); $stmt->execute(array('transaction_code' => $arrayPDO['transaction_code'])); } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } catch(PagSeguroServiceException $e) { die($e->getMessage()); } } }  
    Substitua o valor da variável $dobrarApartirDe pelo valor que você deseja dobrar os pontos.
     
    Ex: Se você só deseja dobrar os pontos quando o doador fizer a compra de 10 pontos ou mais, o valor da variável será $dobrarApartirDe = 10;
     
    Espero ter ajudado com essa simples modificação!
     
    Até mais!
  15. Curtir
    Rayo recebeu reputação de SlowK em [Gesior]Dobrar pontos PagSeguro a partir de x valor doado   
    Bom dia, realizei a modificação a partir do pedido de um membro do fórum.Onde ele desejava que fosse dado o dobro de pontos a partir de x pontos comprados.
     
    A modificação é baseada no tópico do Natanael Beckman:
     
    No arquivo config.php:
    $config['pagSeguro']['doublePoints'] = false // Não altere,deixe como false mesmo  No arquivo retpagseguro.php substitua por este:
    <?php ### DONT TOUCH IN THIS CODE ### ### WORKING FINE 19/08/2006 ### ### IVENSPONTES ### ### github.com/ivenspontes/ ### header("access-control-allow-origin: https://pagseguro.uol.com.br"); require_once 'custom_scripts/PagSeguroLibrary/PagSeguroLibrary.php'; require 'config/config.php'; $method = $_SERVER['REQUEST_METHOD']; if('POST' == $method){ $type = $_POST['notificationType']; $notificationCode = $_POST['notificationCode']; if ($type === 'transaction'){ try { $credentials = PagSeguroConfig::getAccountCredentials(); $transaction = PagSeguroNotificationService::checkTransaction($credentials, $notificationCode); $arrayPDO['transaction_code'] = $transaction->getCode(); $arrayPDO['name'] = $transaction->getReference(); $arrayPDO['payment_method'] = $transaction->getPaymentMethod()->getType()->getTypeFromValue(); $arrayPDO['status'] = $transaction->getStatus()->getTypeFromValue(); $item = $transaction->getItems(); $arrayPDO['item_count'] = $item[0]->getQuantity(); $date_now = date('Y-m-d H:i:s'); $arrayPDO['data'] = $date_now; $dobrarApartirDe = 10; try { $conn = new PDO('mysql:host='.$config['pagSeguro']['host'].';dbname='.$config['pagSeguro']['database'].'', $config['pagSeguro']['databaseUser'], $config['pagSeguro']['databasePass']); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare('INSERT into pagseguro_transactions SET transaction_code = :transaction_code, name = :name, payment_method = :payment_method, status = :status, item_count = :item_count, data = :data'); $stmt->execute($arrayPDO); if ($arrayPDO['status'] == 'PAID') { if (!$config['pagSeguro']['doublePoints'] && $arrayPDO['item_count'] >= $dobrarApartirDe) { $arrayPDO['item_count'] = $arrayPDO['item_count']*2; } $stmt = $conn->prepare('UPDATE accounts SET premium_points = premium_points + :item_count WHERE name = :name'); $stmt->execute(array('item_count' => $arrayPDO['item_count'], 'name' => $arrayPDO['name'])); $stmt = $conn->prepare("UPDATE pagseguro_transactions SET status = 'DELIVERED' WHERE transaction_code = :transaction_code AND status = 'PAID'"); $stmt->execute(array('transaction_code' => $arrayPDO['transaction_code'])); } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } catch(PagSeguroServiceException $e) { die($e->getMessage()); } } }  
    Substitua o valor da variável $dobrarApartirDe pelo valor que você deseja dobrar os pontos.
     
    Ex: Se você só deseja dobrar os pontos quando o doador fizer a compra de 10 pontos ou mais, o valor da variável será $dobrarApartirDe = 10;
     
    Espero ter ajudado com essa simples modificação!
     
    Até mais!
  16. Curtir
    Rayo recebeu reputação de Zeikko em Como deixar double points acima de R$ 20   
    Onde tem $config['pagSeguro']['productValue'] = 1.00;   é o valor da Premium points, ou seja, 1 premium point vale R$1.00(Um Real).
    Se você colocar 20.00 irá mudar o valor da premium point,ou seja, 1 premium point valerá R$20.00(Vinte reais).
  17. Curtir
    Rayo recebeu reputação de Zeikko em Como deixar double points acima de R$ 20   
    @Zeikko Em $config['pagSeguro']['doublePoints'] = false; (não altere,deixe como false mesmo) e Substitua o seu retpagseguro.php por este:
    <?php ### DONT TOUCH IN THIS CODE ### ### WORKING FINE 19/08/2006 ### ### IVENSPONTES ### ### github.com/ivenspontes/ ### header("access-control-allow-origin: https://pagseguro.uol.com.br"); require_once 'custom_scripts/PagSeguroLibrary/PagSeguroLibrary.php'; require 'config/config.php'; $method = $_SERVER['REQUEST_METHOD']; if('POST' == $method){ $type = $_POST['notificationType']; $notificationCode = $_POST['notificationCode']; if ($type === 'transaction'){ try { $credentials = PagSeguroConfig::getAccountCredentials(); $transaction = PagSeguroNotificationService::checkTransaction($credentials, $notificationCode); $arrayPDO['transaction_code'] = $transaction->getCode(); $arrayPDO['name'] = $transaction->getReference(); $arrayPDO['payment_method'] = $transaction->getPaymentMethod()->getType()->getTypeFromValue(); $arrayPDO['status'] = $transaction->getStatus()->getTypeFromValue(); $item = $transaction->getItems(); $arrayPDO['item_count'] = $item[0]->getQuantity(); $date_now = date('Y-m-d H:i:s'); $arrayPDO['data'] = $date_now; try { $conn = new PDO('mysql:host='.$config['pagSeguro']['host'].';dbname='.$config['pagSeguro']['database'].'', $config['pagSeguro']['databaseUser'], $config['pagSeguro']['databasePass']); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare('INSERT into pagseguro_transactions SET transaction_code = :transaction_code, name = :name, payment_method = :payment_method, status = :status, item_count = :item_count, data = :data'); $stmt->execute($arrayPDO); if ($arrayPDO['status'] == 'PAID') { if (!$config['pagSeguro']['doublePoints'] && $arrayPDO['item_count'] >= 20 ) { $arrayPDO['item_count'] = $arrayPDO['item_count']*2; } $stmt = $conn->prepare('UPDATE accounts SET premium_points = premium_points + :item_count WHERE name = :name'); $stmt->execute(array('item_count' => $arrayPDO['item_count'], 'name' => $arrayPDO['name'])); $stmt = $conn->prepare("UPDATE pagseguro_transactions SET status = 'DELIVERED' WHERE transaction_code = :transaction_code AND status = 'PAID'"); $stmt->execute(array('transaction_code' => $arrayPDO['transaction_code'])); } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } catch(PagSeguroServiceException $e) { die($e->getMessage()); } } } Faça o teste e veja se funcionou! Lembrando que só dará pontos em dobros quando for comprado 20 ou mais pontos.
  18. Curtir
    Rayo deu reputação a Pifafa em Erro nas portas de level   
    Amigos e amigas, estou hoje aqui com um problema medonho!
     
    [Error - MoveEvents Interface] data/movements/scripts/closingdoor.lua:onStepOut Description: data/movements/scripts/closingdoor.lua:20: attempt to compare number with table stack traceback: data/movements/scripts/closingdoor.lua:20: in function <data/movements/scripts/closingdoor.lua:1> Não sei que diabos é que da isso.... mas enfim
    Basicamente se player fica sem lvl pra passa na porta ele não passa! Isso ok porem, quando o mesmo tem lvl fica apresentando esse diabólico erro.

    Porta fica aberta kkk
     

     
    Para dar mais informações meu clossingdoors é!

     
    function onStepOut(cid, item, position, lastPosition) if(getTileInfo(position).creatures > 0) then return true end local newPosition = {x = position.x + 1, y = position.y, z = position.z} local query = doTileQueryAdd(cid, newPosition, 6) if query ~= RETURNVALUE_NOERROR or query == RETURNVALUE_NOTENOUGHROOM then newPosition.x = newPosition.x - 1 newPosition.y = newPosition.y + 1 query = doTileQueryAdd(cid, newPosition, 6) -- repeat until found end if query == RETURNVALUE_NOERROR or ((not query == RETURNVALUE_NOTENOUGHROOM) and (not query == RETURNVALUE_NOTPOSSIBLE)) then doRelocate(position, newPosition) end position.stackpos = -1 local i, tileItem, tileCount = 1, {uid = 1}, getTileThingByPos(position) while(tileItem.uid ~= 0 and i < tileCount) do position.stackpos = i tileItem = getTileThingByPos(position) if(tileItem.uid ~= 0 and tileItem.uid ~= item.uid and not isMovable(tileItem.uid) and not isCorpse(tileItem.uid)) then doRemoveItem(tileItem.uid) else i = i + 1 end end local itemInfo = getItemInfo(item.itemid) doTransformItem(item.uid, itemInfo.transformUseTo) return true end  
    Olá pessoal resolvi com o seguinte script!
     
    function onStepOut(cid, item, position, lastPosition) if(getTileInfo(position).creatures > 0) then return true end local newPosition = {x = position.x + 1, y = position.y, z = position.z} local query = doTileQueryAdd(cid, newPosition) if(query == RETURNVALUE_NOTENOUGHROOM) then newPosition.x = newPosition.x - 1 newPosition.y = newPosition.y + 1 query = doTileQueryAdd(cid, newPosition) -- repeat until found end if(query == RETURNVALUE_NOERROR and query == RETURNVALUE_NOTENOUGHROOM) then doRelocate(position, newPosition) end position.stackpos = -1 local i, tileItem, tileCount = 1, {uid = 1}, getTileThingByPos(position) while(tileItem.uid ~= 0 and i < tileCount) do position.stackpos = i tileItem = getTileThingByPos(position) if(tileItem.uid ~= 0 and tileItem.uid ~= item.uid and isMovable(tileItem.uid)) then doRemoveItem(tileItem.uid) else i = i + 1 end end local itemInfo = getItemInfo(item.itemid) doTransformItem(item.uid, itemInfo.transformUseTo) return true end function onStepOut(cid, item, position, lastPosition) local itemInfo = getItemInfo(item.itemid) doTransformItem(item.uid, itemInfo.transformUseTo) return true end  
  19. Curtir
    Rayo recebeu reputação de bpm91 em Quais comando linux para Ot Nao fechar?   
    Veja este tópico: 
     
    Ou este da otland:

    https://otland.net/threads/auto-restart-linux.262336/
     
  20. Curtir
    Rayo recebeu reputação de bpm91 em Fim Premium   
    function onLogin(cid) registerCreatureEvent(cid,"FimPremium") local pos = {x = 32369, y = 32241, z = 7} if isPremium(cid) then setPlayerStorageValue(cid, 59898989, 1) elseif getPlayerStorageValue(cid, 59898989) == 1 and not isPremium(cid) and getPlayerSex(cid) == 0 and getPlayerVocation(cid) > 0 then doCreatureChangeOutfit(cid, {lookType = 136}) doTeleportThing(cid, pos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, t) t = "Your premium account is over" doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) setPlayerStorageValue(cid, 59898989, -1) elseif getPlayerStorageValue(cid, 59898989) == 1 and not isPremium(cid) and getPlayerSex(cid) == 1 and getPlayerVocation(cid) > 0 then doCreatureChangeOutfit(cid, {lookType = 128}) doTeleportThing(cid, pos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, t) t = "Your premium account is over" doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) setPlayerStorageValue(cid, 59898989, -1) end return TRUE end Eu não testei mas o que eu fiz foi adicionar:
    getPlayerVocation(cid) > 0
    Ou seja, como um char de rook não tem vocação então ele não vai realizar o resto do algoritmo. Só ira prosseguir se o player tiver alguma vocação.
     
    @bpm91 testa e veja se funcionou!
  21. Curtir
    Rayo recebeu reputação de EstadualBoy em Pokemon pescado aparece em volta do seu pokemon   
    Versão do Servidor: TFS - 0.3.4 (DxP)
    Pedido feito:
    Solução desenvolvida por mim:
     
    Substitua a função doFish no arquivo: "DxP-Server-V3\data\actions\scripts\Basic\pesca.lua"
    local function doFish(cid, pos, ppos, interval) if not isCreature(cid) then return false end if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then return false end doSendMagicEffect(pos, CONST_ME_LOSEENERGY) if interval > 0 then addEvent(doFish, 1000, cid, pos, ppos, interval-1) return true end local peixe = 0 local playerpos = getClosestFreeTile(cid, getThingPos(cid)) local fishes = fishing[getPlayerStorageValue(cid, sto_iscas)] local random = {} if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, bonus * 5) end --[[if math.random(1, 100) <= chance then if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, bonus * 5) end]] random = fishes.pokes[math.random(#fishes.pokes)] for i = 1, math.random(random[2]) do if #getCreatureSummons(cid) >= 1 -- se o jogador tiver sumonado algum pokemon,pegará a posição do pokemon then peixe = doSummonCreature(random[1], getClosestFreeTile(cid, getThingPos(getCreatureSummons(cid)[1]))) -- se não pegará a do jogador else peixe = doSummonCreature(random[1],playerpos) end if not isCreature(peixe) then setPlayerStorageValue(cid, storageP, -1) doRemoveCondition(cid, CONDITION_OUTFIT) return true end setPokemonPassive(peixe, true) doSetPokemonAgressiveToPlayer(peixe, cid) setPlayerStorageValue(peixe, storageP, 1) if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 0) doChallengeCreature(getCreatureSummons(cid)[1], peixe) else doSendMagicEffect(getThingPos(cid), 0) doChallengeCreature(cid, peixe) end end setPlayerStorageValue(cid, storageP, -1) doRemoveCondition(cid, CONDITION_OUTFIT) return true end Como funciona?
    Se o jogador  tiver invocado um pokemon,ele vai sumonar os pokemons pescados próximo ao pokemon do jogador,caso contrario,será próximo ao jogador.
     
    Resultado:
     

  22. Curtir
    Rayo recebeu reputação de bpm91 em (Resolvido)Monster nao se curam mesmo com script   
    Essa função:
    function onStatsChange(cid, attacker, type, combat, value) -- This should block all damage monster cause on eachother expect player summons if isMonster(cid) and isMonster(attacker) then local master = getCreatureMaster(cid) if not master or not isPlayer(master) then return false end end return true end Foi você que criou? ou faz parte do script da hydra?Se sim,em qual arquivo ela se encontra?
  23. Curtir
    Rayo recebeu reputação de bpm91 em (Resolvido)Bug do fire da poi   
    @bpm91 O cara tinha a mesma dúvida e foi sanada!
     
  24. Gostei
    Rayo deu reputação a Azzus22 em [[ Sistema de PET TFS 0.4 ]]   
    Fala galera do TK tudo belezura? Espero que sim com todo mundo...
    Peço caridosamente a moderação que me mova para a área correta caso eu tenha feito o post no lugar errado. ??
    Bom o que eu vim trazer na faixa para vocês é um sistema onde o jogador vai poder ter um PET que vai subindo até certo level e com isso vai ganhando mais força.
    Eu me baseei no sistema desse amiguinho aqui:
    @PsyMcKenzie
    Link para o Post do amiguinho. Onde eu vi que tava muito legal mas estavam faltando algumas verificações.
    Demorei para fazer esses scripts e toda a lógica mexendo apenas 2 horas por dia, por isso vou dar um alert:
    <<<< -------------------- >>>>
    "PAM: não me peça para mudar scripts ou adaptar de algum jeito pois eu não vou ter muito tempo para atender pedidos. Vou postar do jeito que está funcionando e se por acaso precisar de ajuste, peço para que outros scripters dêem a devida atenção. Obrigado pela compreensão amiguinhos ?"
    <<<< -------------------- >>>>
    Vamos lá, saiba que você vai ter que alterar várias partes de vários fontes, então deixa de preguiça e coloque a mão na massa...
    Espero que esse script incentive a continuação e aperfeiçõamento de mais desenvolvedores a trabalhar com a nossa comunidade.
     
    Na sua pasta de Movements Ex.: "Pasta do Ot Sever\data\movements" no arquivo movements.xml acrescente essas 2 tags:
    Na pasta scripts dentro da pasta Movements Ex.: "Pasta do Ot Server\data\movements\scripts" crie um arquivo com nome equippet.lua e cole isso dentro do arquivo
    Na pasta Actions Ex.: "Pasta do Ot Server\data\actions" no arquivo actions.xml cole a TAG:
    Na pasta Scripts em Actions Ex.: "Pasta do Ot Server\data\actions\scripts" crie um arquivo chamado catchpet.lua e cole isso dentro:
    Na pasta creaturescripts Ex.: "Pasta do Ot Server\data\creaturescripts" no arquivo creaturescripts.xml cole a TAG:
    No arquivo dentro da pasta Scripts em CreatureScripts Ex.: "Pasta do Ot Server\data\creaturescripts\scripts" com o arquivo login.lua aberto, procure por "registerCreatureEvent" e adicione abaixo de qualquer um, a seguinte linha de comando:
     
    Se o seu Ot server tiver o arquivo save.lua dentro da pasta de creaturescripts Ex.: "Pasta do Ot Server\creaturescripts\scripts\save.lua" você precisa adaptar o script abaixo para se adequar ao seu save.lua. caso seu ot server não tenha o arquivo save.lua apenas insira o script abaixo:
    Na pasta Monster Ex.: "Pasta do Ot Server\data\monster" no arquivo monster.xml você vai precisar inserir as tags dos pets que for adicionando, por exemplo no meu caso eu criei 5 níveis de pet e você vai entender porque na explicação mais a frente.
    Na pasta Scripts em Monster Ex.: "Pasta do Ot Server\data\monster\scripts" crie uma pasta chamada Pet e dentro dela o monstro deve ter o mesmo nome que está no arquivo "catchpet.lua" que criamos no começo do processo. Por exemplo no arquivo catchpet.lua que criamos o pet do Dragon Lord está definido como ["Dragon Lord Pet"] = {hp = 500, maxhp = 500, corpse = 7622, chance = 100, level = 0, experience = 0, basename = 'Dragon Lord Pet'} então o monstro deve ser Dragon Lord Pet seguido dos níveis: 0, 1, 2, 3, 4, 5, 6.
    Por exemplo dentro da pasta "Pasta do Ot Server\data\monster\scripts\Pet" tem que ter os monstros DragonLord Pet0.xml, DragonLord Pet1.xml, DragonLord Pet2.xml, DragonLord Pet3.xml
    ----------------------------------
    Na pasta lib Ex.: "Pasta do Ot Server\data\lib" acrescente no fim do arquivo 050-function.lua o script abaixo:
    Obs.: Esse script foi feito pelo amiguinho @Orochi Elf e ficou espetacular, parabéns cara... eu só precisei remover o local da variável item pq quando o script verificava itens na BP e nos Slots estava fechando o servidor. Mas o crédito é todo dele, ótimo desenvolvedor sem dúvida.
     Na pasta npc Ex.: "Pasta do Ot Server\data\npc" crie um arquivo com nome PetHealer.xml e acrescente o código abaixo:
    Na pasta Scripts de npc Ex.: "Pasta do Ot Server\data\npc\scripts" crie um arquivo com nome pethealer.lua e acrescente o código abaixo:
    Obs.: Esse script do TalkAlot não fui eu quem desenvolveu, foi alguém aqui do fórum mas tem muito tempo que eu peguei e uso e não lembro a quem devo os créditos, foi mal ai...
     
    Execute essa query no seu banco de dados:
    E agora finalmente a explicação do código:
    Bom primeiramente o sistema inicial estava utilizando actions e não movements, mas eu resolvi colocar como movements para evitar um pouco de transtorno na lógica apesar de não ter evitado muito...
    Bem, o sistema consiste em utilizar um item no corpse de um monstro morto para capturá-lo essa é a função do script: catchpet.lua
      as definições de monstros que podem ser capturados estão no objeto
    local mtrs = {
        ["Rat Pet"] = {hp = 500, maxhp = 1000, corpse = 2813, chance = 100, level = 0, experience = 0, basename = 'Rat Pet'},
        ["Dragon Lord Pet"] = {hp = 500, maxhp = 500, corpse = 7622, chance = 100, level = 0, experience = 0, basename = 'Dragon Lord Pet'}
    }
    Como podem ver o nome entre colchetes e o basename são iguais e tem que ser assim para não dar nenhum erro... o base name tem que ser o mesmo nome do monstro criado na pasta monster\Pet... na pasta como falei antes, o basename tem que ser acompanhado dos níveis no caso do Rat por exemplo, seria Rat Pet0.xml, Rat Pet1.xml, Rat Pet2.xml, até o nível que você determinar, esse sistema do jeito que está, habilita os pets até o nível 10.
    Os pets são como summons, então coisas relacionadas a ATK, DEF, Magias que os pets tem, tem que ser configuradas no arquivo do monstro. Por exemplo se eu quiser que um Rat nível 2 use UE, vou configurar isso no XML Rat Pet2.xml
    - hp e maxhp, são as configurações para o hp máximo e hp atual,
    - chance é a chance em % que o player tem de capturar o monstro,
    - corpse é o id do corpo que o player pode usar o item para capturar o monstro.
    na linha de comando "local itemcatch = doPlayerAddItem(cid, 9980, 1, false, 1, 3) -- Cristal que contem o monstro." o id 9980 é o item que vai armazenar as informações do pet e isso você pode mudar sem a necessidade de mexer no items.xml. 
    Obs.: Lembrando que se esse id for alterado, você precisa verificar nos fontes onde mais ele faz referência para esse id, por exemplo no save.lua na pasta data\creaturescripts\scripts
    Obs2.: não use itens stackáveis pois eles perdem a informação do pet quando você os movimenta, pelo menos nessa source que eu estou usando.
     
    O itemid definido na tag actions.xml é o item que vai ser usado na captura do monstro.
     
    No fonte do equippet.lua as informações cruciais são:
    Toda vez que que o pet é equipado com sucesso, uma linha é gravada na database com o xp do player atualmente, e quando desequipado com sucesso, essa linha é removida, e a diferença de exp adiquirida é acrescentada no Pet.
    Você pode alterar as condições de level do Pet dentro do método updateAttributes.
     
    O arquivo save.lua só foi alterado para avaliar algumas condições antes do player deslogar caso ele esteja com o pet.
     
    Para usar o pet, vc precisa estar com o item do pet capturado e colocar no slot da flecha, se as condições estiverem certas ele sumona o pet. Se o item for removido do slot e tiver com as condições corretas, ele remove o summon.
     
    O sistema não tem muitos efeitos especiais pois acredito que isso é uma coisa particular de cada Host.
    Se por acaso o pet for morto, o PetHealer pode trazê-lo de volta por uma quantia de 300k mas isso pode ser alterado no script é bem simples. Além disso o NPC PetHealer tem uma micro IA que explica como utilizar o Pet.
     
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Bom, espero que vocês gostem do sistema, testem e me avaliem nos comentários se tiverem algum problema e se for útil para você, da um REP++ ai ?
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     
  25. Curtir
    Rayo recebeu reputação de Ayron5 em Pokemon pescado aparece em volta do seu pokemon   
    Versão do Servidor: TFS - 0.3.4 (DxP)
    Pedido feito:
    Solução desenvolvida por mim:
     
    Substitua a função doFish no arquivo: "DxP-Server-V3\data\actions\scripts\Basic\pesca.lua"
    local function doFish(cid, pos, ppos, interval) if not isCreature(cid) then return false end if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then return false end doSendMagicEffect(pos, CONST_ME_LOSEENERGY) if interval > 0 then addEvent(doFish, 1000, cid, pos, ppos, interval-1) return true end local peixe = 0 local playerpos = getClosestFreeTile(cid, getThingPos(cid)) local fishes = fishing[getPlayerStorageValue(cid, sto_iscas)] local random = {} if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, bonus * 5) end --[[if math.random(1, 100) <= chance then if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, bonus * 5) end]] random = fishes.pokes[math.random(#fishes.pokes)] for i = 1, math.random(random[2]) do if #getCreatureSummons(cid) >= 1 -- se o jogador tiver sumonado algum pokemon,pegará a posição do pokemon then peixe = doSummonCreature(random[1], getClosestFreeTile(cid, getThingPos(getCreatureSummons(cid)[1]))) -- se não pegará a do jogador else peixe = doSummonCreature(random[1],playerpos) end if not isCreature(peixe) then setPlayerStorageValue(cid, storageP, -1) doRemoveCondition(cid, CONDITION_OUTFIT) return true end setPokemonPassive(peixe, true) doSetPokemonAgressiveToPlayer(peixe, cid) setPlayerStorageValue(peixe, storageP, 1) if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 0) doChallengeCreature(getCreatureSummons(cid)[1], peixe) else doSendMagicEffect(getThingPos(cid), 0) doChallengeCreature(cid, peixe) end end setPlayerStorageValue(cid, storageP, -1) doRemoveCondition(cid, CONDITION_OUTFIT) return true end Como funciona?
    Se o jogador  tiver invocado um pokemon,ele vai sumonar os pokemons pescados próximo ao pokemon do jogador,caso contrario,será próximo ao jogador.
     
    Resultado:
     

Informação Importante

Confirmação de Termo