Ir para conteúdo

MarcosWalker

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    MarcosWalker deu reputação a Erimyth em [Tutorial] Protegendo seu Gesior e XAMPP!   
    Galerinha todo mundo sabe que o Gesior é uma bosta no quesito segurança e o XAMPP também tem suas falhas, porém muitos ainda utilizam o Gesior e o XAMP por diversos motivos, até mesmo por afinidade. Hoje eu vim aqui dar algumas dicas valiosas para que você possa tornar seu querido Gesior e seu XAMPP um pouco mais seguro.
     
    1 - Se você utiliza XAMPP, siga os passos abaixo para tornar-lo mais seguro:
    Crie um senha relativamente boa e segura para o seu xampp/phpMyAdmin. Exclua completamente a pasta webdav. Vá até o seu phpMyAdmin > Privilégios e exclua o usuário pma. Vá até a pasta phpMyadmin/config.inc.php e procure pela seguinte tag:
    $cfg['blowfish_secret'] = 'xampp'; E mude a palava xampp por algo completamente sem sentido, exemplo:
    $cfg['blowfish_secret'] = 'hsdewu1721has1au'; Ainda em config.inc.php e procure pela seguinte tag:
    $cfg['Servers'][$i]['auth_type'] = 'config'; E mude-a para:
    $cfg['Servers'][$i]['auth_type'] = 'cookie'; Agora vá até php/php.ini e procure pela seguinte tag:
    Safe_mode = Off Ative-o, deixando assim:
    Safe_mode = On Prontinho, seu XAMPP está bem mais seguro!
     
    2 - Bom agora vamos ao Gesior, vá até o arquivo config/config.php e faça as edições nas seguintes tags:
    $config['site']['access_news'] = 6; // access level needed to edit news $config['site']['access_tickers'] = 6; // access level needed to edit tickers $config['site']['access_admin_panel'] = 6; // access level needed to open admin panel Mude todas para 6 para não termos problemas com invasões ao sistema de tickers, porém lembre de por page_acess 6 na sua account pelo phpMyAdmin para você administrar seu site.
     
    3 - Vá até layouts/sua-skin/layout.php e procure a tag <body e substitua por essa:
    <body onBeforeUnLoad="SaveMenu();" onUnload="SaveMenu();" oncontextmenu="return false" onselectstart="return false" ondragstart="return false"> Agora, logo abaixo da tag <body>, você adicionará o seguinte código:
    <?php { $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql); $sql = trim($sql); $sql = strip_tags($sql); $sql = addslashes($sql); return $sql; }   function protect($str) { if( !is_array($str) ) { $str = preg_replace("/(from|select|insert|delete|where|drop table|show tables)/i","",$str); $str = preg_replace('~&amp;#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))',$str); $str = preg_replace('~&amp;#([0-9]+);~e', 'chr("\\1")',$str); $str = str_replace("<script","",$str); $str = str_replace("script>","",$str); $str = str_replace("<Script","",$str); $str = str_replace("Script>","",$str); $str = trim($str); $tbl = get_html_translation_table(HTML_ENTITIES); $tbl = array_flip($tbl); $str = addslashes($str); $str = strip_tags($str); return strtr($str,$tbl); } else return $str; }   $nome = anti_injection($_POST["nome"]); $senha = anti_injection($_POST["senha"]);   $link = htmlspecialchars($_POST['link'], ENT_QUOTES); echo $link;    header("Content-Type: text/html;  charset=ISO-8859-1",true)?> Ainda em layout.php logo abaixo da tag <head>, você adicionará o seguinte código:
    <script type="text/javascript"> function click() { if (event.button==2||event.button==3) { oncontextmenu='return false'; } } document.onmousedown=click document.oncontextmenu = new Function("return false;") </script> Esses códigos te ajudarão a se previr contra SQL Injection, mas eu afirmo logo que isso não é 100% seguro.
     
    4 - Vá até o arquivo guilds.php e localize a seguinte tag:
    $guild_logo = $guild->getCustomField('logo_gfx_name'); if(empty($guild_logo) || !file_exists("guilds/".$guild_logo)) $guild_logo = "default_logo.gif";  Agora substitua por isso:
    foreach (array("/", "\\", "..") as $char) {     $guild_logo = str_replace($char, "", $guild->getCustomField('logo_gfx_name')); } if (empty($guild_logo) || !file_exists("guilds/".$guild_logo)) {     $guild_logo = "default_logo.gif"; }   Pronto, seu guilds.php está seguro agora.
     
    5 - Exclua completamente o arquivo houses.php, ele é um arquivo muito inutilizado e ainda muito vulnerável, pessoas maliciosas podem conseguir ver sua config.lua através dele, portanto apenas exclua.
     
    Pronto, por enquanto é só, se você tiver mais dicas para deixar o Gesior e o XAMPP mais seguro, poste nesse tópico que você com certeza estará ajudando muitas pessoas necessitadas!
     
    Créditos:
    Matheus gpedro Red Stian
      Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!  
  2. Curtir
    MarcosWalker deu reputação a Alienbear em (Resolvido)[Error] Doors   
    keys = {2086, 2087, 2088, 2089, 2090, 2091, 2092, 10032, 10091} closingDoors = {1224, 1226, 1228, 1230, 1242, 1244, 1246, 1248, 1256, 1258, 1260, 1262, 3541, 3543, 3550, 3552, 5104, 5106, 5113, 5115, 5122, 5124, 5131, 5133, 5289, 5291, 5293, 5295, 6203, 6205, 6207, 6209, 6260, 6262, 6264, 6266, 6897, 6899, 6906, 6908, 7039, 7041, 7048, 7050, 8552, 8554, 8556, 8558, 9176, 9178, 9180, 9182, 9278, 9280, 9282, 9284, 10279, 10281, 10283, 10285, 10474, 10476, 10483, 10485, 10780, 10782, 10789, 10791} verticalOpenDoors = {1211, 1220, 1224, 1228, 1233, 1238, 1242, 1246, 1251, 1256, 1260, 1540, 3546, 3548, 3550, 3552, 4915, 5083, 5109, 5111, 5113, 5115, 5127, 5129, 5131, 5133, 5142, 5145, 5283, 5285, 5289, 5293, 5516, 5737, 5749, 6194, 6199, 6203, 6207, 6251, 6256, 6260, 6264, 6798, 6802, 6902, 6904, 6906, 6908, 7044, 7046, 7048, 7050, 7055, 8543, 8548, 8552, 8556, 9167, 9172, 9269, 9274, 9278, 9282, 10270, 10275, 10279, 10283, 10479, 10481, 10483, 10485, 10789, 10791} horizontalOpenDoors = {1214, 1222, 1226, 1230, 1236, 1240, 1244, 1248, 1254, 1258, 1262, 1542, 3537, 3539, 3541, 3543, 4918, 5085, 5100, 5102, 5104, 5106, 5118, 5120, 5122, 5124, 5136, 5139, 5280, 5287, 5291, 5295, 5518, 5734, 5746, 6197, 6201, 6205, 6209, 6254, 6258, 6262, 6266, 6796, 6800, 6893, 6895, 6897, 6899, 7035, 7037, 7039, 7041, 7057, 8546, 8550, 8554, 8558, 9170, 9174, 9272, 9276, 9280, 9284, 10273, 10277, 10281, 10285, 10470, 10472, 10474, 10476, 10780, 10782} doors = {[1209] = 1211, [1210] = 1211, [1212] = 1214, [1213] = 1214, [1219] = 1220, [1221] = 1222, [1231] = 1233, [1232] = 1233, [1234] = 1236, [1235] = 1236, [1237] = 1238, [1239] = 1240, [1249] = 1251, [1250] = 1251, [1252] = 1254, [1253] = 1254, [1539] = 1540, [1541] = 1542, [3535] = 3537, [3536] = 3537, [3538] = 3539, [3544] = 3546, [3545] = 3546, [3547] = 3548, [4913] = 4915, [4914] = 4915, [4916] = 4918, [4917] = 4918, [5082] = 5083, [5084] = 5085, [5098] = 5100, [5099] = 5100, [5101] = 5102, [5107] = 5109, [5108] = 5109, [5110] = 5111, [5116] = 5118, [5117] = 5118, [5119] = 5120, [5125] = 5127, [5126] = 5127, [5128] = 5129, [5134] = 5136, [5135] = 5136, [5137] = 5139, [5138] = 5139, [5140] = 5142, [5141] = 5142, [5143] = 5145, [5144] = 5145, [5278] = 5280, [5279] = 5280, [5281] = 5283, [5282] = 5283, [5284] = 5285, [5286] = 5287, [5515] = 5516, [5517] = 5518, [5732] = 5734, [5733] = 5734, [5735] = 5737, [5736] = 5737, [6192] = 6194, [6193] = 6194, [6195] = 6197, [6196] = 6197, [6198] = 6199, [6200] = 6201, [6249] = 6251, [6250] = 6251, [6252] = 6254, [6253] = 6254, [6255] = 6256, [6257] = 6258, [6795] = 6796, [6797] = 6798, [6799] = 6800, [6801] = 6802, [6891] = 6893, [6892] = 6893, [6894] = 6895, [6900] = 6902, [6901] = 6902, [6903] = 6904, [7033] = 7035, [7034] = 7035, [7036] = 7037, [7042] = 7044, [7043] = 7044, [7045] = 7046, [7054] = 7055, [7056] = 7057, [8541] = 8543, [8542] = 8543, [8544] = 8546, [8545] = 8546, [8547] = 8548, [8549] = 8550, [9165] = 9167, [9166] = 9167, [9168] = 9170, [9169] = 9170, [9171] = 9172, [9173] = 9174, [9267] = 9269, [9268] = 9269, [9270] = 9272, [9271] = 9272, [9273] = 9274, [9275] = 9276, [10276] = 10277, [10274] = 10275, [10268] = 10270, [10269] = 10270, [10271] = 10273, [10272] = 10273, [10471] = 10472, [10480] = 10481, [10477] = 10479, [10478] = 10479, [10468] = 10470, [10469] = 10470, [10774] = 10776, [10775] = 10776, [10779] = 10780, [10781] = 10782, [10783] = 10785, [10784] = 10785, [10788] = 10789, [10790] = 10791} specialDoors = {1223, 1225, 1241, 1243, 1255, 1257, 3542, 3551, 5105, 5114, 5123, 5132, 5288, 5290, 5745, 5748, 6202, 6204, 6259, 6261, 6898, 6907, 7040, 7049, 8551, 8553, 9175, 9177, 9277, 9279, 10278, 10280, 10475, 10484, 10781, 10790} tenta adicionar isso em 000-constant
  3. Gostei
    MarcosWalker deu reputação a Higor15 em Ligar 2 OtServer em 1 VPS   
    Na vdd tem como sim voce ligar 2 servers num ip só, mas nesse caso vc vai precisar de 2 clients diferentes e 2 pastas separadas pra cada server, uma para o mundo 1 e outra pro mundo 2.
     
    1- Abra o Modules > Client Entergame > Entergame.lua
    Nele busque por 7171 e mude todos pra 7373
     
    2- Agora no config.lua do seu segundo server procure por 7171 e mude pra 7373, depois procure por 7172 e mude pra 7374;
     
    3- Ainda no config.lua procure por worldId que provavelmente vai estar "worldId = 0" nesse caso troque para "worldId = 1"
     
    4- Por fim vá no seu sqlite editor, dê load na database do seu segundo server, depois abra a aba "Players" e você vai visualizar na parte superior mini janelas com nome de Structure, data, Indexes, Dll, etc. Clique em Structure, depois procure por "World Id" e onde estiver 0 troque por 1.
     
    Nota: Não se esqueça de abrir as portas 7373 e 7374 na sua VPS, se não o server não vai mandar informação pro client e não vai ser possível logar.
     
    Pronto! Só abrir o server e utilizar esse segundo client pra jogar normalmente 100% individual do primeiro mundo que voce abriu.
     
    Ajudei? Deixa um Rep!
  4. Gostei
    MarcosWalker deu reputação a Qwizer em Ligar 2 OtServer em 1 VPS   
    n e impossível basta usar porta diferente a padrao e 7171 e 7172 basta mudar a do secundario para 7173 e 7174 e pronto, alem do mais da pra abrir 1 ot com multiworld na mesma tela de login assim como no tibia usando o mesmo IP
    isso e ra caso vc use otcliente, se não usar basta por a porta do ot que vc quer logar no ip changer.
  5. Gostei
    MarcosWalker deu reputação a Danihcv em [TUTORIAL] Resolvendo qualquer erro na data base   
    Opa, galerinha do TK, pro meu primeiro tutorial resolvi fazer uma solução de um problema que desde que cheguei no TK, vejo que ocorre com uma certa frequência. Os erros da data base.
     
    Neste tutorial vou ensinar a resolver os erros do tipo No such table, Insert into, No such column, ... has no column named... etc.
     
    1°) NO SUCH TABLE
     
    Bom, para o erro No such table, basta vc visualizar qual table está faltando. Para isso basta ler o erro na distro:

     
    No caso da imagem, está faltando a table: player_statements
    Para resolver este e qualquer outro problema deste tipo, caso sua data base seja sqlite,
    basta abrir sua data base pelo Sqlite Studio(download: http://sqlitestudio.pl/?act=download) e clicar em Open SQL query editor:



     
    Mas caso sua data base seja Mysql abra pelo phpMyadmin, ou por outro editor de sua preferencia.
     
    1.1°) EXECUTANDO OS COMANDOS PARA RESOLVER O PROBLEMA
      Bom, dependendo da table que estiver faltando, vc irá colocar seu respectivo comando, segue abaixo TODOS os comandos básicos necessários para que sua data base fique Ok! :   (VC VAI PEGAR O COMANDO REFERENTE À TABLE QUE VC QUER!!!)
     
     
    account_viplist



     
    Sqlite




     
    accounts



     
    Sqlite




     
    bans



     
    Sqlite




     
    environment_killers



     
    Sqlite




     
    global_storage



     
    Sqlite




     
    guild_invites



     
    Sqlite




     
    guild_kills



     
    Sqlite




     
    guild_ranks



     
    Sqlite




     
    guild_wars



     
    Sqlite




     
    guilds



     
    Sqlite




     
    house_auctions



     
    Sqlite




     
    house_data



     
    Sqlite




     
    house_lists



     
    Sqlite




     
    houses



     
    Sqlite




     
    killers



     
    Sqlite




     
    market_history



     
    Sqlite




     
    market_offers



     
    Sqlite




     
    player_deaths



     
    Sqlite




     
    player_depotitems



     
    Sqlite




     
    player_inboxitems



     
    Sqlite




     
    player_items



     
    Sqlite




     
    player_killers



     
    Sqlite




     
    player_namelocks



     
    Sqlite




     
    player_skills



     
    Sqlite




     
    player_spells



     
    Sqlite




     
    player_statements



     
    Sqlite




     
    player_storage



     
    Sqlite




     
    player_viplist



     
    Sqlite




     
    players



     
    Sqlite




     
    server_config



     
    Sqlite




     
    server_motd



     
    Sqlite




     
    server_record



     
    Sqlite




     
    server_reports



     
    Sqlite




     
    tile_items



     
    Sqlite




     
    tile_store



     
    Sqlite




     
    tiles



     
    Sqlite




     
    announcements



     
    Sqlite




     
    pagsegurotransacoes



     
    Sqlite




     
    player_advances



     
    Sqlite




     
    reports



     
    Sqlite




     
    thanks



     
    Sqlite




     
    z_bug_logs



     
    Sqlite




     
    z_featured_article



     
    Sqlite




     
    z_forum



     
    Sqlite




     
    z_helpdesk



     
    Sqlite




     
    z_monsters



     
    Sqlite




     
    z_network_box



     
    Sqlite




     
    z_news_tickers



     
    Sqlite




     
    z_ots_comunication



     
    Sqlite




     
    z_polls



     
    Sqlite




     
    z_polls_answers



     
    Sqlite




     
    z_poll_votes



     
    Sqlite




     
    z_shop_history_item



     
    Sqlite




     
    z_shop_history_pacc



     
    Sqlite




     
    z_shop_offer



     
    Sqlite




     
    z_spells



     
    Sqlite




     
    z_news_big



     
    Sqlite




     
     
    2°) No such column /  "NOME DA TABLE" has no column named "NOME DA COLUMN QUE FALTA" / Insert into
      Bom, para resolver esse problema vc deve identificar em qual TABLE está essa coluna que falta. Para isso, basta ler o erro como na imagem:

     
    No caso da imagem, está faltando a column WORLD_ID dentro da table MARKET_OFFERS. Para resolver, vc deve executar excluir a sua table MARKET_OFFERS existante em sua data base, e em seguida, executar o domando da da market_offers, encontrado acima, logicamente isso só se aplica ao caso da imagem, depende do seu caso, vc deve excutar o comando da table que estiver sendo referida no erro. Mas antes de executá-lo vc deve excluir a sua table EXISTENTE, para então executar o comando.
     
    ESTA FORMA DE RESOLUÇÃO SE APLICA AOS TRÊS CASOS: NO SUCH COLUMN, ...HAS NO COLUMN NAMED... e INSERT INTO.
     
     
     
    Bom galera, é isso.
     
    SE ENCONTRAREM, OU SE DEPARAREM COM ALGUM ERRO, BASTA ME PEDIR AJUDA QUE EU DAREI TOTAL SUPORTE PARA VOCÊS!
     
    SE ESTIVR FALTANDO MAIS ALGUMA TABLE QUE EU NÃO COLOQUEI AQUI, PF ME INFORMEM E EU ATUALIZAREI O TÓPICO!!!
     
     
    Lembrem-se, se eu te ajudei, por favor, deem REP++ pois foi meio trabolhoso fazer este tutorial todo...
     
    ESTOU A DISPOSIÇÃO DE TODOS! Tanto por PM quanto por SKYPE, e até mesmo por aqui, pois vou checar este tópico regularmente!!
     
     
    Espero ter ajudado!!
    Abraços.
  6. Gostei
    MarcosWalker deu reputação a EddyHavoc em The Forgotten Server 0.3.7 10.10x   
    The Forgotten Server 0.3.7, versão 10.10
     
    Atualizações:
    Client 10.10 suportado. Novas montarias. Removido salt do login, agora pode usar acc manager e acc maker normalmente. Adicionado projeto do Dev-Cpp. OBS.: as features novas 10.x não foram implantadas (browse field, etc).  

     
    Downloads:
    Server (32-bit): http://www.mediafire...aq9av842mwawf0g Server (64-bit): http://www.mediafire...iqqv5c8cer5862g Source: http://www.mediafire.../source1010.rar Scans:
    Server (32-bit): https://www.virustot...sis/1377354392/ Server (64-bit): https://www.virustot...sis/1377434735/ Source: https://www.virustot...sis/1377354174/  
    Todos os créditos vão para fireelement pela disponibilização, por eddyhavoc publicação no tibiaking e a equipe do TFS (Elf, Talaturen, Dalkon, BeniS, Tryller e Kornholijo).
  7. Gostei
    MarcosWalker deu reputação a Vodkart em [NPC] Mount Seller Por Items [8.7+]   
    lib/functions.lua

    function getItemsFromList(items) -- by vodka local str = '' if table.maxn(items) > 0 then for i = 1, table.maxn(items) do str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1]) if i ~= table.maxn(items) then str = str .. ', ' end end end return str end function doRemoveItemsFromList(cid,items) -- by vodka local count = 0 if table.maxn(items) > 0 then for i = 1, table.maxn(items) do if getPlayerItemCount(cid,items[i][1]) >= items[i][2] then count = count + 1 end end end if count == table.maxn(items) then for i = 1, table.maxn(items) do doPlayerRemoveItem(cid,items[i][1],items[i][2]) end else return false end return true end Data/NPC Mount Seller.xml <?xml version="1.0"?> <npc name="Mount Seller" script="data/npc/scripts/buymount.lua" walkinterval="50000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="95" body="116" legs="121" feet="115" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|.I have many {mounts} to sell for you!" /> </parameters> </npc> Data/Npc/script buymount.lua local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function AddMount(cid, message, keywords, parameters, node) --by vodka if(not npcHandler:isFocused(cid)) then return false end if (isPlayerPremiumCallback == nil or isPlayerPremiumCallback(cid) == true or parameters.premium == false) then if(parameters.level ~= nil and getPlayerLevel(cid) < parameters.level) then npcHandler:say('You must reach level ' .. parameters.level .. ' to buy this mount.', cid) elseif canPlayerRideMount(cid, parameters.mountid) then npcHandler:say('you already have this mount!', cid) elseif not doRemoveItemsFromList(cid,parameters.items) then npcHandler:say('Sorry You need '..getItemsFromList(parameters.items)..' to buy this mount!', cid) else doPlayerAddMount(cid, parameters.mountid) npcHandler:say('Here is your mount!', cid) npcHandler:resetNpc() end else npcHandler:say('I can only allow premium players to buy this mount.', cid) end npcHandler:resetNpc() return true end local mounts = { {"widow queen", items = {{2124,1},{2393,2}}, mountid = 1, level = 10, premium = false}, {"racing bird", items = {{2494,1},{2393,2}}, mountid = 2, level = 15, premium = true}, {"mounts", text = "I sell these mounts: {widow queen},{racing bird},{war Bear},{black sheep},{midnight panther},{draptor},{titanica},{tin lizzard}.{blazebringer},{rapid boar},{stampor} or {undead cavebear}!"} } for i = 1, #mounts do local get = mounts[i] if type(get.items) == "table" then local node = keywordHandler:addKeyword({get[1]}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "You want to buy the mount " .. get[1] .. " for "..getItemsFromList(get.items).." ?"}) node:addChildKeyword({"yes"}, AddMount, {items = get.items,mountid = get.mountid, level = get.level, premium = get.premium}) node:addChildKeyword({"no"}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "Ok, then.", reset = true}) else keywordHandler:addKeyword({get[1]}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = get.text}) end end mounts = nil npcHandler:addModule(FocusModule:new()) configuração: local mounts = { {"widow queen", items = {{2124,1},{2393,2}}, mountid = 1, level = 10, premium = false}, {"racing bird", items = {{2494,1},{2393,2}}, mountid = 2, level = 15, premium = true}, {"mounts", text = "I sell these mounts: {widow queen},{racing bird},{war Bear},{black sheep},{midnight panther},{draptor},{titanica},{tin lizzard}.{blazebringer},{rapid boar},{stampor} or {undead cavebear}!"} } "nome da montaria" items = {} -- é os items que precisa ter trocar pela mount mountid -- é o id da montaria level -- level necessario para comprar premium -- se precisa ser premium para comprar text -- n precisa mexer,é para saber que montaria ele pode comprar,pode adicionar + nome na lista se quiser adicionando mount então por exemplo war bear: local mounts = { {"widow queen", items = {{2124,1},{2393,2}}, mountid = 1, level = 10, premium = false}, {"racing bird", items = {{2494,1},{2393,2}}, mountid = 2, level = 15, premium = true}, {"war bear", items = {{2123,2},{2124,1},{2173,1}}, mountid = 3, level = 20, premium = false}, {"mounts", text = "I sell these mounts: {widow queen},{racing bird},{war Bear},{black sheep},{midnight panther},{draptor},{titanica},{tin lizzard}.{blazebringer},{rapid boar},{stampor} or {undead cavebear}!"} }
  8. Gostei
    MarcosWalker deu reputação a ZORAN em [Tutorial] Compilando TFS v1.0 com MSVC 2013   
    Olá amigos da Comunidade Tibiaking venho trazer a vocês este tutorial de como compilar o TFS v1.0 em windows 32 or 64 bits com Microsoft Visual Studio 2013 (Obs: Eu uso a 2013 Ultimater Recomendo).   Vamos ao tutorial >>   1) Primeito baixe os programas abaixo se não tiver claro:   MSVS 2013 >> Click Here http://www.visualstudio.com/downloads/download-visual-studio-vs   Agora baixar os Programas do TFS v1.0:   TFS Sdk >> Click Here - Link 2: (Mirror)
      Source Do TFS v1.0 >> Click Here
      Atenção Baixe apenas a Boost da versão do Pc 32 or 64 Bits.   Boost MSVS 2013 32Bits >> Click Here
      Boost MSVS 2013 64Bits >> Click Here
      2) Agora vamos começar a instalar os Programs do TFS v1.0 >> Primeiro instale o Boost 32 or 64Bits No diretorio raiz do seu HD:   Print >>  
      Agora coloque o SDK Extraido na raiz do Seu HD:   Print >>       Faça a mesma coisa com a source do TFS v1.0:   Print>>     Depois de ter feito tudo isso abra a pasta da source e abra a pasta vc12 e siga a print: ( Obs: Você vera Boost32 isso acontece porque na instalação  eu coloquei no diretório como Boost32 (Primeira foto) mas basta você deixar como C:\Boost  ( A letra C:\  Refere-se a letrado do seu HD  ela pode ser D - H - F e Etc... Varia de Pc a Pc.) )   Print >>     Com o Visual Studio (2013 Recomendado) aberto Siga as Prints abaixo:   Click com botão direito no projeto e vá em propriedades:   Print >>     Depois Click em Cofiguration manager:   Print >>   Vamos as explicações: 1 >> Click la Primeiro Quando abrir a caixa com os passos 2-3 and 4 siga-os abaixo >> 2>> Coloque release e só nada mais. 3>> escolha para qual sistema de 32 or 64Bits. (Lembrado que ali e de acordo com a Boost oks. ) 4>> Só Click lá quando terminar de fazer os passos acima. Rsrs.] ------------------------------------|||||------------------------------- 3) Terceira parte Passos 1 do tutorial vamos lá >> Primeiro agora depois de fazer os passos anteriores faça os seguintes passos Click em C/C++ >>> General e siga a Print:   Print>>     Caso você não entendeu siga as explicações: Vamos as explicações: 1>> Onde você Deve clicar C/C++ >> General. 2>> Click onde a seta esta apontado e click em edit ou de dois clicks. 3>> Quando abrir a caixa de dialogo  deixe os diretórios iguais ao da foto e de um Ok. ( Obs: Você vera Boost32 isso acontece porque na instalação  eu coloquei no diretório como Boost32 (Primeira foto) mas basta você deixar como C:\Boost )   Terceira parte passo 2 Click em Linker >> General e siga  as Prints >>   Prints >>     Vamos as explicações: 1>> Onde você deve Clicar depois de fazer os passos anteriores da terceira parte passos 1. Oks. 2>> igual ao passo 2 da parte 1 da terceira parte só que mais explicativo. 3>> Click em Edit e espere abrir a caixa de Dialogo siga a Print 2.   Print 2>>     Deixe igual a caixa de dialogo  onde esta marcado com o 1 Grande Oks. Depois basta da um OK e um Apply e Ok e esperar aparecer Ready >>    
      Print>>     Explicações: 1>> Esperar o Ready. 2>> Click com o botão direito no projeto e depois em BuilD.            Basta Esperar terminar a compilação e Pronto.            Caso o tutorial não tenha sido bem explicativo Posso melhorá-lo a sugestão e depois posto a foto final da compilação Oks.   Se quiser me agradecer eu serei grato pois deu trabalho fazer esse tutorial pois bugo algumas vezes.   Um grande abraço e fiquem com Deus!   Nota: Eu Tenho permissão do autor do tutorial Original em Inglês para criar o post em PT-Br Não e permitido copiar ou reproduzir sem a devida autorização de Dominique120. Não e permitido postar o Faq do mesmo aqui neste tutorial para ver mais informações siga o LINK ou Veja os #créditos.   #Creditos: -------------------///------------------ Dominique120 >> Click aqui para ver o tutorial original  -------------------///-------------------- ZORAN  >> Click aqui para ver o meu perfil
  9. Gostei
    MarcosWalker deu reputação a vedovi em Serviço SMTP   
    Sim, desative todos seus firewalls e faça o procedimento que te falei.
     
    caso funcione faço outro poste te ajudando para funcionar com seu firewall.
    me add skype gorath29
  10. Gostei
    MarcosWalker deu reputação a Rusherzin em Erro no ServerInfo   
    É, o problema é nas stages. Posta o arquivo stages.xml e o serverinfo.php completo.
  11. Gostei
    MarcosWalker deu reputação a Vampira em [Tutorial] Criando quest log   
    *Criando quest log por Action*


    Como eu não achei nenhum tutorial desse por aqui resolvi criar um, neste tutorial ensinarei vocês a criar um quest log para suas quests

    Oque é quest log: Quest Log tem a função de armazenar as quests que você fez ou está fazendo, mostrar em que parte da QUEST você está e como seguir adiante, etc...

    Em data/XML abra o arquivo chamado quests.xml nele vai ter mais ou menos assim:


    Entendendo:

    Vermelho = Nome da sua Quest
    Verde = Storage ID da Quest que vai aparecer no Quest Log
    Azul = Numéro de Início da Quest
    Negrito = Nome da Missão
    Rosa = Storage da Missão
    Laranja = Valor de Início da Missão
    Marrom = Valor de Finalização
    Preto = Descrição da Missão

    Bom, agora que nós já entendemos o que cada coisa faz, podemos dar continuidade com o SCRIPT. aonde estáNome da Quest você deve colocar o Nome que vai aparecer no Quest Log, depois que você inseriu o nome da sua Quest você deve ir na pasta data/actions/scripts e achar o arquivo .lua da sua Quest, nele você apertaCTRL+F e depois digita isso aqui:


    Depois que você encontrar este comando clique em Cancelar, depois vai ter mais ou menos isso:

    Exemplo:


    Relembrando que a cor Verde é o nosso Storage ID e o Azul é o nosso Comando de Início

    Agora que nós achamos o nosso Storage ID e o nosso Comando de Início podemos preencher a primeira linha da nossa Quest assim:


    Explicando um pouco para poder continuarmos com nosso Tutorial, uma quest é composta de Storages Values, cada movimento que você avança em sua Quest é dado um Storage Value novo.

    EX: Você pega a Quest (Ganhou seu primeiro Storage Value), Você abriu o Baú (Ganhou seu Storage Value Final.). Isso quando você está fazendo a Quest por Action.

    Então nós entendemos que na primeira linha da Quest nós precisamos por o Value de quando você pega a Quest. Agora continuando com o SCRIPT...

    Nós vimos que o nosso Storage ID era 1 e o nosso Comando de Início era 1, então nós acabamos de preencher a primeira linha com os números que encontramos.

    Agora nós vamos para a segunda linha, primeiramente você deve colocar o nome da sua missão, dai você me pergunta:

    - Nós já não colocamos o nome da nossa Quest?
    Resposta: Sim, nós colocamos o NOME DA QUEST agora vamos colocar o NOME DA MISSÃO, ou seja, aqueles nomes que fica no retângulo de cima quando você da SHOW na QUEST, aquilo é uma Missão.

    Bom, depois que você colocou o Nome da sua Missão, como eu havia explicado antes sobre Storages Values, nós devemos pegar agora o nosso primeiro Storage Value novamente e o nosso primeiro Comando de início, ficando assim:


    Pronto, nós preenchemos o nosso StorageValue e o nosso Comando de Início agora nós precisamos inserir o valor de término, depois que você pega o Baú (como expliquei ali em cima) você recebe o seu segundo Storage Value digamos que o meu seja assim:


    Observe que o Storage Value de quando você pega o Baú tem 2 em vez de 1, isto porque o 2 é o número de encerramento da missão, então nós devemos colocar assim na segunda linha:


    Resumindo, a nossa missão começa logo quando você recebe a missão do NPC e ela se completa quando você abre o Baú. Agora que a parte mais difícil já foi, vamos para a parte mais fácil do nosso SCRIPT, a Descrição da missão (a frase que aparece no quadro de baixo).


    Esse
    é o número da descrição, no caso nós colocamos apenas uma Missão então seria uma Descrição, se você colocar 2 Missão, você vai colocar e na outra você vai colocar depois da nossa missionstate tudo que devemos fazer é colocar nossa descrição onde está "Descrição da Missão.", ficando assim:

    Lembrando que nunca se deve usar carácteres especiais, como:


    Terminamos aqui nosso tutorial espero que tenham gostado

    Creditos: meu
    Inspiração: joaovbz
  12. Gostei
    MarcosWalker deu reputação a MaTTch em (Resolvido)Limpa todas as Houses   
    DELETE FROM `tile_items`; Executa esse comando na sua database com o server offline.
  13. Gostei
    MarcosWalker deu reputação a Rusherzin em (Resolvido)Item que da premium   
    function onUse(cid, item, frompos, item2, topos) configs = { premydays = 1 -- Dias de premmy que o item dara } if(getTilePzInfo(getCreaturePosition(cid))) then doPlayerAddPremiumDays(cid, configs.premydays) doPlayerSendTextMessage(cid, 25, "Você acabou de receber "..configs.premydays.." dia de VIP.") doRemoveItem(item.uid, 1) doRemoveCreature(cid) else doPlayerSendTextMessage(cid, 25, "Você precisa estar na Protection Zone.") end end  
  14. Gostei
    MarcosWalker deu reputação a Natanael Beckman em GesiorACC 2019 8.60 UPDATE 29/06/2019   
    Atualização de 29/06/2019.
     
    Olá meus amigos, essa é a minha última contribuição free que faço na área de OTserver, fiz uma atualização bem completa do Gesior comparando com os que existem disponíveis, não vou falar muito pois grande parte já conhecem... Vou apenas posta algumas imagem das mudanças feitas.
    Sempre gostei de evoluir e de oferecer aos demais uma facilidade de obter um material grátis e de qualidade, nunca utilizei meu pouco conhecimento para prejudicar os demais, pelo o contrario sempre foi na intenção de ajudar e se em algum momento falhei, falhei inconscientemente.
     
    - Foi mudado algumas imagens de layout para renovar a estrutura.

     
    - Server Info + Most Power Ful Guilds na mesma estrura.

     
    - Create Account exigindo senhas com letras minusculas, maiúsculas e números, fortalecendo
    a segurança do seu cliente e dificultando futuras dores de cabeças.

     
    - Adicionado o mecanismo que identifica os valores de Premuim Points e Backup Points.
    - Algumas mudanças de layout.
    - Nome do player abaixo linkado.

     
    - Adicionado um Box de doação, com a intenção apenas de complementar
    o layout enriquecendo a pagina.

     
    - Fixado o bug edit town, e melhorado o layout.

     
    - Characters.php refeito, nesta imagem é uma visão de uma conta com access admin.

     
    - Visão normal.

     
    - Inventário completo.
    - Guilds com visão ampliada.

     
    - Detalhes...

     
    - Novo SHOP com as estrutura de layout melhorada e modernizada.
    - Sem BUGs lembre-se do CTRL + F5 para atualizar os cookies nesta pagina.

     
    - Detalhes...

     
    - Detalhes...

     
    - Detalhes...

     
    - Histórico do SHOP...

     
    DOWNLOAD SITE
    SHOP.LUA XAMPP 1.7.3 DATABASE LIMPA MYSQL DATABASE COMPLETA MYSQL   TUTORIAIS ÚTEIS E COMPATÍVEIS PARA O SITE: PAGSEGURO AUTOMATICO SHOPGUILD BACKUP_POINTS SISTEMA VIP_TIME   Créditos: Gesior.pl(WEBMaster) Felipe Monteiro(WEBMaster, WEBDesigner) Natanael Beckman(WEBNada) Nailan (WEBMaster) Ivens Pontes (WEBMaster) Marcio Porto (WEBMaster) Danyel Varejão (Programmer LUA, C++)
  15. Gostei
    MarcosWalker recebeu reputação de Wakon em rune_soma   
    Olá!
    Vim trazer uma action que junta runas, útil para versões inferiores do 8.6.
     
    Vá em actions/script crie um arquivo .lua nomeando-o para rune_soma.lua
    Adicione isso dentro:
    function onUse(cid, item, frompos, item2, topos) if item2.itemid <= 2316 and item2.itemid >= 2261 then if item.itemid == item2.itemid then if item.uid ~= item2.uid then if item.type < 200 and item2.type < 200 and (item.type + item2.type) <= 200 then local total = item.type + item2.type doRemoveItem(item.uid) doTransformItem(item2.uid, item2.itemid, total) else doPlayerSendTextMessage(cid,22,"Você só pode juntar até 200 cargas.") end end end end return false end  
    Agora vá em actions.lua e adicione essa tag:
    <action fromid="2261" toid="2316" script="rune_soma.lua" allowfaruse="1"/> Agora basta usar o lado direito do mouse na runa e depois clicar do lado esquerdo do mouse na runa que vc quer que junte. ;P
  16. Gostei
    MarcosWalker deu reputação a L3K0T em (Resolvido)[Ajuda] Exhausted   
    stairhopDelay = 2 * 1000 em config.lua do seu server ali tá 2 segundos 
  17. Gostei
    MarcosWalker deu reputação a grafit em [C++] doStartTrade(cid, target, item)   
    Bom dia!


    Há um certo tempo eu tive um servidor de Tibia que possuía um sistema bem interessante de tradevip. Funcionava da seguinte maneira, o player que possuísse premdays(ou VIP) usava o comando !tradevip [DIAS], [Nome do Jogador] e automaticamente gerava uma janela de trade com um item e assim poderiam ser vendidos dias de premium sem o perigo de ninguém ser roubado.

    Por padrão isso não é possível no Tibia, mas um usuário chamado Oneshot fez modificações nas sources para tornar isso possível.


    Segue agora as modificações que permitem funcionar esse sistema:
     
     
    Em luascript.h, adicione essa linha, abaixo das linhas parecidas. static int32_t luaDoStartTrade(lua_State* L); Em luascript.cpp, adicione isso perto das linhas parecidas. //doStartTrade(cid, target, item) lua_register(m_luaState, "doStartTrade", LuaInterface::luaDoStartTrade);   Ainda em luascript.cpp, adicione isso logo abaixo de alguma estrutura parecida. int32_t LuaInterface::luaDoStartTrade(lua_State* L) { ScriptEnviroment* env = getEnv(); Item* item = env->getItemByUID(popNumber(L)); if(!item) { errorEx(getError(LUA_ERROR_ITEM_NOT_FOUND)); lua_pushboolean(L, false); return 1; } Player* target = env->getPlayerByUID(popNumber(L)); Player* player = env->getPlayerByUID(popNumber(L)); if(!player || !target) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } if(g_game.internalStartTrade(player, target, item)) { lua_pushboolean(L, true); return 1; } return 1; } Agora use sua imaginação para criar seus scripts.


    Créditos: Oneshot
  18. Gostei
    MarcosWalker deu reputação a Wakon em [RESOLVIDO] Respawn de bosses   
    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 → Aprovação de Tópicos de Conteúdos"
    Para: "OTServ → Suporte OTServ → Suporte de Scripts"

Informação Importante

Confirmação de Termo