Histórico de Curtidas
-
Rayo recebeu reputação de L3K0T em ✅ - Erro ao instalar siteEntã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
-
Rayo recebeu reputação de GOD Vitor em Alguém consegue fazer - Sistema anti-deslizeEstá disposto a pagar pelo desenvolvimento?
-
Rayo recebeu reputação de Duvidas Muitas Dvds em (Resolvido)Nenhum talkactions funcionaNa tabela "accounts" abra a sua conta e mude o type para 5.
-
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/
-
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
-
Rayo recebeu reputação de mateuscorrea em [Script] Item que invoca MonstroTesta 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
-
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
-
Rayo deu reputação a brasil0014 em (Resolvido)ERRO CONFIGURAÇÃO DE MOVES POKEMONValeu 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
-
Rayo recebeu reputação de brasil0014 em (Resolvido)ERRO CONFIGURAÇÃO DE MOVES POKEMONHá 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.
-
Rayo recebeu reputação de brasil0014 em (Resolvido)ERRO CONFIGURAÇÃO DE MOVES POKEMONSobre 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++).
-
Rayo recebeu reputação de Pedro. em [Baiak 8.6] Formação de EquipeEu mandei uma mensagem no teu privado!
-
Rayo recebeu reputação de Lurk em [Gesior]Dobrar pontos PagSeguro a partir de x valor doadoBom 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!
-
Rayo recebeu reputação de Kramer em [Gesior]Dobrar pontos PagSeguro a partir de x valor doadoBom 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!
-
Rayo recebeu reputação de Pedro. em [Gesior]Dobrar pontos PagSeguro a partir de x valor doadoBom 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!
-
Rayo recebeu reputação de SlowK em [Gesior]Dobrar pontos PagSeguro a partir de x valor doadoBom 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!
-
Rayo recebeu reputação de Zeikko em Como deixar double points acima de R$ 20Onde 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).
-
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.
-
Rayo deu reputação a Pifafa em Erro nas portas de levelAmigos 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
-
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/
-
Rayo recebeu reputação de bpm91 em Fim Premiumfunction 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!
-
Rayo recebeu reputação de EstadualBoy em Pokemon pescado aparece em volta do seu pokemonVersã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:
-
Rayo recebeu reputação de bpm91 em (Resolvido)Monster nao se curam mesmo com scriptEssa 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?
-
Rayo recebeu reputação de bpm91 em (Resolvido)Bug do fire da poi@bpm91 O cara tinha a mesma dúvida e foi sanada!
-
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 ?
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-
Rayo recebeu reputação de Ayron5 em Pokemon pescado aparece em volta do seu pokemonVersã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: