Histórico de Curtidas
-
coriel deu reputação a Nightz em Lost Account funcionando com MailGun (HTTP API)Olá cidadãos do TibiaKing!
Como tenho visto muitas pessoas tendo problemas com o sistema de envio de e-mail do Lost Account através do PHP Mailer, resolvi postar pra vocês uma pequena alteração que fiz no código para utilizar o MailGun no disparo dos e-mails no lugar de um SMTP convencional.
Alguns avisos:
O MailGun é uma plataforma estrangeira, que estou indicando por ter uma API de fácil entendimento. Não sou responsável pela plataforma ou suporte da mesma. O plano grátis do MailGun suporta 10.000 envios por mês. Caso você não tenha um domínio para utilizar (no-ip não é considerado como domínio), terá que fazer os envios através do sandbox deles, que permite 300 envios por hora, limitados a 10.000 por mês.
Para começar o tutorial, se cadastre na plataforma do MailGun aqui: https://mailgun.com/signup (depois que cadastrar, confirme sua conta através do link enviado por e-mail)
Em seguida, adicione seu domínio aqui: https://mailgun.com/app/domains/new
Para confirmar seu domínio, será necessário criar algumas entradas de DNS que estarão explicadas na página do MailGun.
Assim que o domínio for adicionado, clique no mesmo. (Caso não tenha domínio, clique no domínio sandbox).
Precisaremos dos seguintes dados para continuar: API Key API Base URL Default SMTP Login
Depois que obtiver os dados acima, abra o arquivo lostaccount.php e procure pela seguinte parte de código: $mail = new PHPMailer(); if ($config['site']['smtp_enabled']) { $mail->IsSMTP(); $mail->Host = $config['site']['smtp_host']; $mail->Port = $config['site']['smtp_port']; $mail->SMTPAuth = $config['site']['smtp_auth']; $mail->Username = $config['site']['smtp_user']; $mail->Password = $config['site']['smtp_pass']; } $mail->IsMail(); $mail->IsHTML(true); $mail->From = $config['site']['mail_address']; $mail->AddAddress($account->getCustomField('email')); $mail->Subject = $config['server']['serverName']." - Link to >set new password to account<"; $mail->Body = $mailBody; $enviado = $mail->Send(); if($enviado) { $account->set('email_code', $newcode); $account->set('next_email', (time() + $config['site']['email_lai_sec_interval'])); $account->save(); $main_content .= '<br />Link with informations needed to set new password has been sent to account e-mail address. You should receive this e-mail in 15 minutes. Please check your inbox/spam directory.'; } else { $account->set('next_email', (time() + 60)); $account->save(); $main_content .= '<br />An error occorred while sending email! Try again or contact with admin. ('.$mail->ErrorInfo.')'; }Remova todo esse código e substitua por: $to = ''.$account->getCustomField('email').''; $subject = ''.$config['server']['serverName'].' - Set >new password to account<'; $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, 'api:SUA API KEY'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_URL, 'https://api.mailgun.net/v2/SEUDOMINIO/messages'); curl_setopt($ch, CURLOPT_POSTFIELDS, array('from' => 'SEU OT <[email protected]>', 'to' => $to, 'subject' => $subject, 'html' => $mailBody, 'text' => $mailBody)); $result = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); if($info['http_code'] == 200){ $account->set('email_code', $newcode); $account->set('next_email', (time() + $config['site']['email_lai_sec_interval'])); $account->save(); $main_content .= '<br />Link with informations needed to set new password has been sent to account e-mail address. You should receive this e-mail in 15 minutes. Please check your inbox/spam directory.'; }E em seguida altere as seguintes linhas para configurar de acordo com sua conta:curl_setopt($ch, CURLOPT_USERPWD, 'api:key-xxxxxxx'); //Substitua key-xxxxxxx pela sua API Key 'https://api.mailgun.net/v2/SEUDOMINIO/messages'); //Altere SEUDOMINIO com o domínio que se encontra no final da API Base URL array('from' => 'SEU OT <[email protected]>', //Substitua pelo nome e e-mail do jogo (caso tenha domínio). Caso não tenha domínio, utilize o e-mail que está em Default SMTP Login
E pronto, seu Lost Account já estará funcionando normalmente!
Observações: O código final tem algumas modificações para facilitar na configuração e na utilização, mas como a versão final foi desenvolvida para venda, resolvi postar uma versão simplificada que resolve o problema. É necessário ter o PHP cURL funcionando para usar esse método. O código foi feito em cima do Gesior 2012: https://github.com/gesior/Gesior2012 Façam bom proveito
(Esse tutorial foi completamente escrito por mim, incluindo o código. Qualquer cópia deve ser previamente autorizada e conter os devidos créditos.) -
coriel recebeu reputação de lrickes em (Resolvido) Market System (Sistema de Comércio)Cara, ponhe dinheiro no banco, que você vai conseguir usar. Porque se você colocar um item para vender lá e depois tirar o item de venda, ou seja, se você não desejar mais vender esse item, ele vai comer da sua balance 20 gps se não me engano.. Por tanto, antes de fazer uma oferta, coloca dinheiro na sua balance.
-
coriel deu reputação a Fir3element em Suporte em um BUG (Urgente)Sim, é um bug nas versões antigas e na última (0.3.7) já foi fixado.
Você pode tentar copiar o code, é só procurar por revenge na source.
O tópico foi movido para a área correta, preste mais atenção da próxima vez!
Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680
Este tópico foi movido:
De: "OTServ → Suporte OTServ → Suporte de OTServ Geral"
Para: "OTServ → Suporte OTServ → Suporte de Programação" -
coriel deu reputação a luanluciano93 em TFS 0.4 CASTOlá pessoal, tive a iniciativa de criar esse tópico para atualizar e otimizar as sources do TFS 0.4 DEV que é uma das mais usadas no mundo do otserv. Conteúdo totalmente gratuito e pretendemos melhora-lo cada vez mais.
Qualquer um pode colaborar, postando bugs, erros, otimizando códigos, comentar aqui no tópico, toda ajuda é bem vinda, vamos tornar essa a melhor source disponível. Conto com vocês.
Versão do Tibia: 8.60
Alguns sistema já implementados na source:
• TFS 0.4 DEV rev 3777 (by TFS Team)
• Anti-Divulgação (.servegame, .no-ip, .net, .com, .org, .pl, .biz, .br, .sytes, .info)
• War System
• Cast System (by Summ)
• Retirado bugs de anti-push ..
• Retirado bugs de elfbot ...
• Retirado erro de não aceitar outros items ...
• Retirado erro de Malformed File ...
• Add creatureevent onMoveItem() ...
• Add função getCreaturePathTo () ...
• E vários outros!
Complementos:
• Add cast System (passo a passo): [AQUI]
• Pode add o comando na config.lua:
healthHealingColor = COLOR_GREEN -- [podendo alterar a cor]. manaHealingColor = COLOR_DARKPURPLE -- [podendo alterar a cor]. Downloads:
• Distro Compilada 32x
• Distro Compilada 64x
• Sources 7
TESTADO EM WINDOWS, DEBIAN 7.8, UBUNTU 12.04 E 14.05!
• Compilar em Linux:
• Erros para arrumar:
Obrigado ao runeraserver pelo incentivo em fixa-la para linux
E é isso pessoal, espero ter ajudado, abraços
-
coriel deu reputação a Danihcv em Erro na databaseOpa, eu posso:
Executa isso na sua data base:
CREATE TABLE guild_kills ( id INT NOT NULL PRIMARY KEY, guild_id INT NOT NULL, war_id INT NOT NULL, death_id INT NOT NULL ); Avisa se deu certo.
Espero ter ajudado.
Abraços.
-
coriel deu reputação a Danihcv em Erro na databaseEntão faz assim, exclui a sua table guild_kills antiga, aí agora sim executa o código que te passei.
-
coriel deu reputação a xWhiteWolf em (Resolvido)[PEDIDO] Tile que Passa só se tiver GUILDfunction onStepIn(cid, item, position, fromPosition) if getPlayerGuildId(cid) > 0 then doPlayerSendTextMessage(cid, 27, "Voce entrou, sua guild é a "..getPlayerGuildName(cid)..".") return true else doPlayerSendTextMessage(cid, 27, "Voce não possue guild, portanto não pode entrar nessa zona.") doTeleportThing(cid, fromPosition) return false end end
-
coriel deu reputação a Techrlz em Hiho Guys!Salve galera tudo certo???
Para quem não me conhece eu sou o Techrlz da OTLand e tambem conhecido com o mesmo nick pelo tibiaking, com o fim do tibiaking resolvi criar 1 conta aqui afim de ajudar a galera e trocar conhecimentos tambem, sou bem experiente em LUA (coisa de 3anos) e gosto muito de ajudar as pessoas, espero ser bem recepcionado
Valeu pessoal
Techrlz
-
coriel recebeu reputação de lagoa em (RESOLVIDO) Script snow bugadoFala galera, acho que o meu script de snow está bugado. Quando estou em uma cidade de gelo, piso no chão de neve e o chão de neve se transforma em duas pegadas.. Só que tipo, se eu andar alguns sqms pelo chão de neve, alguns voltam ao normal e outros não, ou seja, alguns continuam com as duas pegadas.. O que quero é que quando o player pisasse em qualquer sqm de neve, esse sqm voltaria a ser neve normalmente depois. O que faço para arrumar isso? Sei que o tempo é arrumado nos items.xml.. Mas e o snow.lua? Vou postar aqui o script do snow.lua. Grato! Servidor 9.70. Valendo REP+.
data\movements\scripts\snow.lua
TILE_SNOW = 670 TILE_FOOTPRINT_I = 6594 TILE_FOOTPRINT_II = 6598 function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(isPlayerGhost(cid)) then return true end if(item.itemid == TILE_SNOW) then doTransformItem(item.uid, TILE_FOOTPRINT_I) doDecayItem(item.uid) elseif(item.itemid == TILE_FOOTPRINT_I) then doTransformItem(item.uid, TILE_FOOTPRINT_II) doDecayItem(item.uid) else doTransformItem(item.uid, TILE_FOOTPRINT_I) end return true end
-
coriel deu reputação a MaXwEllDeN em (RESOLVIDO) Script dando erro no distrofunction onStepIn(cid, item, position, fromPosition) if not isCreature(cid) then return true end --- configuration by notle --- local exhaust = 10 -- Tempo para player poder manda messagem denovo! (1 por segundos) local frase1 = "O player" -- frase que vem antes do nome da guild local frase2 = "da guild" -- frase que vem antes do nome dos players local frase3 = "está invadindo o castelo de Rhyves." -- frase que vem depois do nome do player --- configuration by notle --- if getPlayerStorageValue(cid, 14800) >= os.time() and doPlayerSendCancel(cid, "A mensagem de alerta só vai aparecer novamente em "..(getPlayerStorageValue(cid, 14800) - os.time()).." segundos.") then return true end doBroadcastMessage(""..frase1.." \""..getCreatureName(cid).."\" "..frase2.." \""..getPlayerGuildName(cid).."\" "..frase3.." ", MESSAGE_STATUS_CONSOLE_ORANGE) setPlayerStorageValue(cid, 14800, os.time() + exhaust) return true end
-
coriel deu reputação a Skydangerous em (RESOLVIDO) Script dando erro no distroTenta ai:
function onStepIn(cid, item, position, fromPosition) --- configuration by notle --- local exhaust = 10 -- Tempo para player poder manda messagem denovo! (1 por segundos) local frase1 = "O player" -- frase que vem antes do nome da guild local frase2 = "da guild" -- frase que vem antes do nome dos players local frase3 = "está invadindo o castelo de Rhyves." -- frase que vem depois do nome do player --- configuration by notle --- if getPlayerStorageValue(cid, 14800) >= os.time() and doPlayerSendCancel(cid, "A mensagem de alerta só vai aparecer novamente em "..(getPlayerStorageValue(cid, 14800) - os.time()).." segundos.") then return true end doBroadcastMessage(" "..frase1.." \ "..getCreatureName(cid).." \ "..frase2.." \ "..getPlayerGuildName(cid).." \ "..frase3.." ", MESSAGE_STATUS_CONSOLE_ORANGE) setPlayerStorageValue(cid, 14800, os.time() + exhaust) return true end
-
coriel deu reputação a caotic em (RESOLVIDO) Script dando erro no distroMaXwEllDeN uma criatura pode ser o player ou um monstro possivelmente ainda dario erro :X
function onStepIn(cid, item, position, fromPosition) --- configuration by notle --- local exhaust = 10 -- Tempo para player poder manda messagem denovo! (1 por segundos) local frase1 = "O player" -- frase que vem antes do nome da guild local frase2 = "da guild" -- frase que vem antes do nome dos players local frase3 = "está invadindo o castelo de Rhyves." -- frase que vem depois do nome do player if isPlayer(cid) then if getPlayerStorageValue(cid, 14800) >= os.time() and doPlayerSendCancel(cid, "A mensagem de alerta só vai aparecer novamente em "..(getPlayerStorageValue(cid, 14800) - os.time()).." segundos.") then return true end doBroadcastMessage(""..frase1.." \""..getCreatureName(cid).."\" "..frase2.." \""..getPlayerGuildName(cid).."\" "..frase3.." ", MESSAGE_STATUS_CONSOLE_ORANGE) setPlayerStorageValue(cid, 14800, os.time() + exhaust) return true end end
-
coriel deu reputação a Skyforever em (RESOLVIDO) Piso Falantefunction onStepIn(cid, item, position, fromPosition) local n, g = getCreatureName(cid), getPlayerGuildName(cid) if getPlayerGuildId(cid) == 0 then doPlayerSendCancel(cid, "You need a guild to enter.") doTeleportThing(cid, fromPosition, false) return true end if getPlayerStorageValue(cid, 83263) - os.time() < 1 then setPlayerStorageValue(cid, 83263, os.time() + 15 * 1000) broadcastMessage(n .." Está envadindo o castelo de Rhyves para a guild [" .. g .. "].", MESSAGE_STATUS_WARNING) end return true end
-
coriel deu reputação a Kimoszin em [Resolvido]Problema Boss INQlocal storG = 5658 local pos, toPos = {x = 1024, y = 1025, z = 7}, {x = 1017, y = 1025, z = 7} local time = 10 function onDeath(cid, corpse, killer) if (getCreatureName(cid) == "Golgordan") and (getStorage(storG) <= 0) then doSetStorage(storG, 1) doCreateMonster("Latrivan", getCreaturePosition(cid)) elseif (getCreatureName(cid) == "Latrivan") and (getStorage(storG) == 1) then doCreateTeleport(1387, toPos, pos) doCreatureSay(cid, "Você tem "..time.. " segundos para passar pelo teleport, antes que ele seja removido.", TALKTYPE_ORANGE_1) addEvent(rTeleport, time * 1000, cid) end return true end function rTeleport(cid) local t = getTileItemById(pos, 1387) if (t.uid > 0) then doSendMagicEffect(pos, CONST_ME_MAGIC_RED) doSetStorage(storG, -1) return doRemoveItem(t.uid) end end
-
coriel recebeu reputação de Private Sub Teste em (Resolvido) Market System (Sistema de Comércio)Cara, ponhe dinheiro no banco, que você vai conseguir usar. Porque se você colocar um item para vender lá e depois tirar o item de venda, ou seja, se você não desejar mais vender esse item, ele vai comer da sua balance 20 gps se não me engano.. Por tanto, antes de fazer uma oferta, coloca dinheiro na sua balance.
-
coriel recebeu reputação de Vodkart em (Resolvido) Market System (Sistema de Comércio)Cara, ponhe dinheiro no banco, que você vai conseguir usar. Porque se você colocar um item para vender lá e depois tirar o item de venda, ou seja, se você não desejar mais vender esse item, ele vai comer da sua balance 20 gps se não me engano.. Por tanto, antes de fazer uma oferta, coloca dinheiro na sua balance.
-
coriel recebeu reputação de Eduardo Dantas em (Resolvido) Market System (Sistema de Comércio)Cara, ponhe dinheiro no banco, que você vai conseguir usar. Porque se você colocar um item para vender lá e depois tirar o item de venda, ou seja, se você não desejar mais vender esse item, ele vai comer da sua balance 20 gps se não me engano.. Por tanto, antes de fazer uma oferta, coloca dinheiro na sua balance.
-
coriel deu reputação a Kimoszin em [Resolvido] Castle War - AJUDEMVá no config.lua e vê se está assim:
saveGlobalStorage = true