Ir para conteúdo

sylar07

Campones
  • Total de itens

    8
  • Registro em

  • Última visita

1 Seguidor

Sobre sylar07

Informações

  • Forma que conheci o xTibia
    Otservs
  • Sou
    OT-Admin

Últimos Visitantes

1039 visualizações

sylar07's Achievements

  1. Olá, também já fui programador de otserver mas já faz muitos anos que fiquei afastado dessa área, e não me lembro de absolutamente nada. então queria uma ajuda de algum programador, é o seguinte: Depois que o cara comprou a VIP , e eu digito um comando ex: "/addvip nomedoplayer,knight" o jogador recebesse o item, e após clicar no item... ganhasse VIP por 30dias ou o tempo que eu defnir + o set VIP que ele pediu, no exemplo acima eu usei o knight. mas poderia ser paladin,sorcerer,druid.... depende da escolha do jogador, e os itens podem ser transferido para o inventário do jogador (BP) ou o próprio DP isso não tem tanta importância. Difícil hein, mas quem ajudar dou REP++
  2. Responde minhas msgs.... -.-
  3. Acredito que muitos até querem se dedicar á montar um servidor legal, com boa jogabilidade, experiência(xp) boa, e tudo mais. - Um dos motivos que eu sei que acontece é: ¹ O cara quer criar um servidor, mas não pode deixa-lo online no prório computador o dia inteiro, não tem mais de um computador, e se tiver não é adequado pela internet que nós pessoas físicas possuímos, ou não tem dinheiro pra pagar um dedicado. ² Falta de pessoal que quer levar o projeto á sério, muitos servidores procuram pessoas 'sérias' pra colocar em prática o projeto, mas não adianta... sempre existe aquele Admin/God/Gm noob que quer fazer um servidor pra passar o tempo, por exemplo: coloca XP= 9999999999 pra quando o jogador matar 1 monstro já ir do level 8 ao level 2000 em apenas um hit, depois virarem pks matar os outros, terminar todas as quest disponível no mapa, e vazar. ³ Falta de administração do(s) criador(es), não sabem organizar uma equipe ou ver o que está em falta no servidor. 4 E esse é o mais irritante de todos, os famosos "nuker", que são pessoas totalmente retardadas e infantil que se acham hackers e normalmente tem 14 anos pra baixo, que também são conhecidos como 'lammers', eles entram no servidor do cara que já tem 200Mil problemas pra resolver, e começam a se divertir derrubando não só 1 como vários ots , eles passam um pente fino em todos os servidores vulnerável na database do otservlist,e outros. - Isso acaba atrapalhando, pois muitas vezes o dono do servidor entende do jogo, mas não sabe se previnir de ataques e acabam sendo vencidos pelos nukers. Pra melhorar tudo isso, creio que solução seja: - Os servidores cloud, adicionar um plano simples , nem que seja semi-dedicado, abaixar o preço para aqueles que não tem dinheiro pra pagar um hoster decente, os planos atuais para semi-dedicado não está tão caro, mas poderiam ser melhores. - Os criadores de distro, poderiam inserir novas funções anti-nuker, ou algum script que bloqueie esse tipo função. até mesmo deixar aquele simples script que limita a quantidade de contas por IP já ajudaria e muito. - Quanto á internet, hoje em dia não está 'tão' difícil como era antes, uma internet de 1Mb aqui em são paulo hoje custa menos de R$ 30,00 Reais, o chamado 'Internet popular'. - Poderia existir uma área aqui no xtibia tipo um 'curso' para quem desejar montar um otserv com todas as dicas para faciltar, também distribuir apostilas de programação .lua para formar novos scripters, usando exemplos etc.
  4. sylar07

    Account Manager

    - Acabei de editar o tutorial no meu primeiro post. Acredito que este método que eu postei seja sua melhor opção - já pensou limitar 5 account manager e tiver 10 pessoas querendo entrar no seu ot? você acaba perdendo player... - No método que passei, só limita á quantidade de contas online por "ip" e não o account manager, que é super importante para o servidor e seu crescimento.
  5. sylar07

    Account Manager

    Olá, tudo bem? - Existe sim um método, mas não é pra limitar o account manager, e sim á quantidade de contas que um certo "ip" pode logar e então você defini o número de contas, ex: 2 conta por IP - Desse jeito, se o suposto 'nuker' tentar usar programas, para logar diversos account manager, o script não irá permitir e fará ele logar apenas + 1 account manager, e automáticamente deslogar os demais. Se você deseja adicionar o script, faça o seguinte: Entre na pasta "\data\globalevents\scripts" e crie um novo script com o nome "anti_nuker.lua" dentro do script coloque o seguinte: --[[ Anti-nuker System by Sylar07 ]]-- local config = { msg = "Tibia system has detected that you are multi clienting.", maxMultiClients = 2, allowGroupId = 2, ignoreIps = {} } function onLogin(cid) if getPlayerGroupId(cid) >= config.allowGroupId then return TRUE end local number local playersOnline = getPlayersOnline() for _, pid in pairs(playersOnline) do local pip = getPlayerIp(pid) if cid ~= pid and getPlayerIp(cid) == pip and not isInArray(config.ignoreIps, doConvertIntegerToIp(getPlayerIp(cid))) then number = (number or 0) + 1 if number > config.maxMultiClients then return FALSE, doPlayerPopupFYI(cid, config.msg) end end end return TRUE end Entenda o script: Nessa parte, é definido á mensagem que irá aparecer quando o player logar com mais de uma conta. msg = "Tibia system has detected that you are multi clienting.", Aqui, indica á quantidade player por "ip" no exemplo, está indicado duas contas por "ip". maxMultiClients = 2, E essa parte permite que players com 'GroupId=2" podem logar com quantidade ilimitada de contas. allowGroupId = 2, Aqui você pode abrir uma exceção para algum ip, por exemplo: ignoreIps = {"127.0.0.1"} Continuando: Após inserir adicionar o script "anti_nuker.lua" na pasta "\data\globalevents\scripts" adicione a seguinte tag no arquivo "globalevents.xml" que encontra-se na pasta de mesmo nome. <event type="login" name="AntiNuker" event="script" value="anti_nuker.lua"/>
  6. - Sim, também funciona. - Porém futuramente se você decidir destinguir qual 'outfit' tal 'Vocação' vai usar, esse método não irá funcionar, mas apenas para as quatro vocações, dá certo sim. Tive que testar, re-testar e esqueci de simplificar as storage
  7. Olá, Fico feliz por te-lo ajudado. - Também montei o script conforme você pediu, deixei que apenas as vocações (9 ,10 ,11 ,12) podem usar as outfits 'especiais' que você editou. - Para inserir o novo script, faça o seguinte: Acesse a pasta "\data\creaturescripts\scripts" abra o arquivo "vocation_outfit.lua" e coloque isso: --[[ By Sylar & Vodkart ]]-- local config={ {outfit={136,128,137,129,138,130,139,131,140,132,141,133,142,134,147,143,148,144,149,145,150,146,155,151,156,152,157,153,158,154,252,251,269,268,270,273,279,278,288,289,324,325,336,335,329,328,366,367},voc={9},storage=40850}, -- VIP sorcerer {outfit={136,128,137,129,138,130,139,131,140,132,141,133,142,134,147,143,148,144,149,145,150,146,155,151,156,152,157,153,158,154,252,251,269,268,270,273,279,278,288,289,324,325,336,335,329,328,366,367},voc={10},storage=40851}, -- VIP druids {outfit={136,128,137,129,138,130,139,131,140,132,141,133,142,134,147,143,148,144,149,145,150,146,155,151,156,152,157,153,158,154,252,251,269,268,270,273,279,278,288,289,324,325,336,335,329,328,366,367},voc={11},storage=40852}, -- VIP paladin {outfit={136,128,137,129,138,130,139,131,140,132,141,133,142,134,147,143,148,144,149,145,150,146,155,151,156,152,157,153,158,154,252,251,269,268,270,273,279,278,288,289,324,325,336,335,329,328,366,367},voc={12},storage=40853} -- VIP knight } function onLogin(cid) for a =1,#config do if isInArray(config[a].voc, getPlayerVocation(cid)) and getPlayerStorageValue(cid, config[a].storage) == -1 then setPlayerStorageValue(cid, config[a].storage, 1) for i = 1, #config[a].outfit do doPlayerAddOutfit(cid, config[a].outfit[i], 3) end break end end return TRUE end vocation_outfit.zip
  8. Olá, tudo bem? - Então man, foi foda *assumo* adaptar esse script, espero que seja o que você está procurando. Eu fiz o seguinte: - Apenas sorcerers podem usar á outfit "Mage" que obtem: 100 de mana e 3 de ML (Magic Level) - Apenas druids podem usar á outfit de mesmo nome, que obtem: 100 de mana e 3 de ML (Magic level) - Apenas knights podem usar á outfit de mesmo nome, que obtem: 3 de Sword, 3 de Axe, e 3 de Club. - Paladinos eu não modifiquei nada, apenas segui a orientação descrita por você. Bom, então vamos ao assunto: PARTE 1 Primeiramente entre na pasta "\data\creaturescripts\scripts" e crie um arquivo chamado "vocation_outfit.lua" Dentro do arquivo coloque isso: --[[ By Sylar & Vodkart ]]-- local config={ {outfit={138,130},voc={1,5},storage=40850}, -- sorcerer {outfit={148,144},voc={2,6},storage=40851}, -- druids {outfit={},voc={3,7},storage=40852}, -- paladinos {outfit={139,131},voc={4,8},storage=40853} -- knight } function onLogin(cid) for a =1,#config do if isInArray(config[a].voc, getPlayerVocation(cid)) and getPlayerStorageValue(cid, config[a].storage) == -1 then setPlayerStorageValue(cid, config[a].storage, 1) for i = 1, #config[a].outfit do doPlayerAddOutfit(cid, config[a].outfit[i], 3) end break end end return TRUE end Entenda o código: Essa parte do código, trata-se da storage do Sorcerer por exemplo. storage=40850}, -- sorcerer Essa outra parte do código, possui o número '3' depois da palavra 'outfit,' isso indica que será usada as três addons, se você não quer usar as três addons, troque este valor por '0'. doPlayerAddOutfit(cid, config[a].outfit[i], 3) Continuando: Logo após inserir todo o código no arquivo "vocation_outfit.lua" insira essa tag abaixo, no arquivo "creaturescripts.xml" que encontra-se na pasta de mesmo nome. <event type="login" name="Out" script="vocation_outfit.lua"/> PARTE 2: Agora entre na pasta "\data\XML", Atenção! faça backup/cópia do arquivo "outfits.xml" antes de realizar o procedimento á seguir. - baixe o arquivo "outfits.xml" que está anexado no final do tutorial e substitua pelo outros. por algum motivo, não consegui colocar o script em code, então decidi anexa-lo. Prontinho, agora execute o servidor e teste, qualquer dúvida post aqui no fórum lembrando que criei, e adaptei todos os scripts, sem intervenção de terceiro, exceto a base simples de storage feita por Vodkart. Espero que te ajude, até mais. outfits.xml
  9. Amigo, você tem duas opções: - ¹ Criar as tables no sqlite, ou... - ² Deletar o arquivo que está lhe causando problema. Se quiser cortar o mau pela raiz, faça o seguinte: Acesse a pasta 'data/globalevents/scripts/' E delete o arquivo shop.lua (Obs: Após realizar o procedimento descrito acima, verifique se existe alguma tag indicando o script 'shop.lua' em data/globalevents/globalevents.xml , Se existir, apague!) ________________________________ ~~Se te ajudei, me ajude com um REP+
  10. Olá amigo tudo bom ? Esse seu arquivo 'lastestnews.php' está totalmente modificado, e de forma incorreta. No inicio do código, você não definiu alguns ítens ou apagou o mesmo. Faz o seguinte apaga todo o código atual do seu arquivo, e coloca isto: <?PHP $time = time(); ///////////////////////////////////////////////////////////////////////////////////////// //The new edition of my script: Best Player, Last joined and something new Server Motd.// /////////////////////////Everything in the new appearance./////////////////////////////// //////////////////////////////////////by Aleh/////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///Queries /// $query = $SQL->query('SELECT `players`.`name`,`players`.`id`,`players`.`level`, `players`.`experience`, `server_motd`.`id`, `server_motd`.`text` FROM `players`,`server_motd` WHERE `players`.`group_id` < '.$config['site']['players_group_id_block'].' AND `players`.`name` != "Account Manager" ORDER BY `players`.`level` DESC, `players`.`experience` DESC, `server_motd`.`id` DESC LIMIT 1;')->fetch(); $query2 = $SQL->query('SELECT `id`, `name` FROM `players` ORDER BY `id` DESC LIMIT 1;')->fetch(); $housesfree = $SQL->query('SELECT COUNT(*) FROM `houses` WHERE `owner`=0;')->fetch(); $housesrented = $SQL->query('SELECT COUNT(*) FROM `houses` WHERE `lastwarning`>1;')->fetch(); $players = $SQL->query('SELECT COUNT(*) FROM `players` WHERE `id`>0;')->fetch(); $accounts = $SQL->query('SELECT COUNT(*) FROM `accounts` WHERE `id`>0;')->fetch(); $banned = $SQL->query('SELECT COUNT(*) FROM `bans` WHERE `id`>0;')->fetch(); $guilds = $SQL->query('SELECT COUNT(*) FROM `guilds` WHERE `id`>0;')->fetch(); ///End Queries /// $main_content .= '<table bgcolor='.$config['site']['darkborder'].' border=0 cellpadding=4 cellspacing=1 width=100%> <tr bgcolor='. $config['site']['vdarkborder'] .'><td align="center" class=white colspan=1><b>Welcome to '.$config['server']['serverName'].'</b></td></tr> <tr><td><table border=0 cellpadding=1 cellspacing=1 width=100%> <tr bgcolor='. $config['site']['lightborder'] .'><td><center>Last joined us: <a href="?subtopic=characters&name='.urlencode($query2['name']).'">'.$query2['name'].'</a>, player number '.$query2['id'].'. Welcome and wish you a nice game!</center></td></tr> <tr bgcolor='. $config['site']['lightborder'] .'><td><center>Currently, the best player on the server is: <a href="index.php?subtopic=characters&name='.urlencode($query['name']).'"> '.$query['name'].'</a> ('.urlencode($query['level']).'). Congratulations!</center></td></tr> <tr bgcolor='. $config['site']['lightborder'] .'><td><center><b>Server motd:</b> '.$query['text'].'</center></td></tr> <table border=0 cellpadding=0 cellspacing=1 width=100%> <tr bgcolor='. $config['site']['lightborder'] .'><td><center><b>Free Houses:</b> '.$housesfree[0].'</center></td> <td><center><b>Rented Houses:</b> '.$housesrented[0].'</center></td></tr> <tr bgcolor='. $config['site']['lightborder'] .'><td><center><b>Accounts</b> in database: '.$accounts[0].'</center></td> <td><center><b>Players</b> in database: '.$players[0].'</center></td></tr> <tr bgcolor='. $config['site']['lightborder'] .'><td><center><b>Banned</b> accounts: '.$banned[0].'</center></td> <td><center><b>Guilds</b> in databese: '.$guilds[0].'</center></td></tr> </table></td></tr></table>'; ///Don't delete this! Please respect my work! I am counting on reputation. $main_content .= '<div align="right"><small><b></b></small></div><br />'; ///Don't delete this! Please respect my work! I am counting on reputation. div>';'; //######################## SHOW TICKERS AND NEWS ####################### $time = time(); $main_content .= '<div class="NewsHeadline"> <div class="NewsHeadlineBackground" style="background-image:url(' . $layout_name . '/images/news/newsheadline_background.gif)"> <table border="0"> <tr> <td style="text-align: center; font-weight: bold;"> <font color="white">Most powerfull guilds</font> </td> </tr> </table> </div> </div> <table border="0" cellspacing="3" cellpadding="4" width="100%"> <tr>'; foreach($SQL->query('SELECT `g`.`id` AS `id`, `g`.`name` AS `name`, `g`.`logo_gfx_name` AS `logo`, COUNT(`g`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` LEFT JOIN `guild_ranks` gr ON `p`.`rank_id` = `gr`.`id` LEFT JOIN `guilds` g ON `gr`.`guild_id` = `g`.`id` WHERE `k`.`unjustified` = 1 AND `k`.`final_hit` = 1 GROUP BY `name` ORDER BY `frags` DESC, `name` ASC LIMIT 0, 6;') as $guild) $main_content .= ' <td style="width: 25%; text-align: center;"> <a href="?subtopic=guilds&action=show&guild=' . $guild['id'] . '"><img src="guilds/' . ((!empty($guild['logo']) && file_exists('guilds/' . $guild['logo'])) ? $guild['logo'] : 'default_logo.gif') . '" width="64" height="64" border="0"/><br />' . $guild['name'] . '</a><br />' . $guild['frags'] . ' kills </td>'; $main_content .= ' </tr> </table>'; if ($logged){ $players_from_account = $SQL->query("SELECT `players`.`name`, `players`.`id` FROM `players` WHERE `players`.`account_id` = ".(int) $account_logged->getId())->fetchAll(); foreach($players_from_account as $player) { $str .= '<option value="'.$player['id'].'"'; if($player['id'] == $char_id) $strt .= ' selected="selected"'; $str .= '>'.$player['name'].'</option>'; } } $time = time(); $news_content .= '<div id="newsticker" class="Box"> <div class="Corner-tl" style="background-image: url('.$layout_name.'/images/content/corner-tl.gif);"></div> <div class="Corner-tr" style="background-image: url('.$layout_name.'/images/content/corner-tr.gif);"></div> <div class="Border_1" style="background-image: url('.$layout_name.'/images/content/border-1.gif);"></div> <div class="BorderTitleText" style="background-image: url('.$layout_name.'/images/content/title-background-green.gif);"></div> <img class="Title" src="headline.php?text=News ticker" alt="Contentbox headline"> <div class="Border_2"> <div class="Border_3"> <div class="BoxContent" style="background-image: url('.$layout_name.'/images/content/scroll.gif);">'; //##################### ADD NEW TICKER ##################### if($action == "newticker") { if($group_id_of_acc_logged >= $config['site']['access_tickers']) { $ticker_text = stripslashes(trim($_POST['new_ticker'])); $ticker_icon = (int) $_POST['icon_id']; if(empty($ticker_text)) { $news_content .= 'You can\'t add empty ticker.'; } else { if(empty($ticker_icon)) { $news_icon = 0; } $SQL->query('INSERT INTO '.$SQL->tableName('z_news_tickers').' (date, author, image_id, text, hide_ticker) VALUES ('.$SQL->quote($time).', '.$account_logged->getId().', '.$ticker_icon.', '.$SQL->quote($ticker_text).', 0)'); $news_content .= '<center><h2><font color="red">Added new ticker:</font></h2></center><hr/><div id="newsticker" class="Box"><div id="TickerEntry-1" class="Row" onclick=\'TickerAction("TickerEntry-1")\'> <div class="Odd"> <div class="NewsTickerIcon" style="background-image: url('.$layout_name.'/images/news/icon_'.$ticker['image_id'].'.gif);"></div> <div id="TickerEntry-1-Button" class="NewsTickerExtend" style="background-image: url('.$layout_name.'/images/general/plus.gif);"></div> <div class="NewsTickerText"> <span class="NewsTickerDate">'.date("j M Y", $time).' -</span> <div id="TickerEntry-1-ShortText" class="NewsTickerShortText">'; $news_content .= '<a href="?subtopic=latestnews&action=deleteticker&id='.$time.'"><img src="'.$layout_name.'/images/news/delete.png" border="0"></a>'; $news_content .= short_text($ticker_text, 60).'</div> <div id="TickerEntry-1-FullText" class="NewsTickerFullText">'; $news_content .= '<a href="?subtopic=latestnews&action=deleteticker&id='.$time.'"><img src="'.$layout_name.'/images/news/delete.png" border="0"></a>'; $news_content .= $ticker_text.'</div> </div> </div> </div></div><hr/>'; } } else { $news_content .= 'You don\'t have admin rights. You can\'t add new ticker.'; } $news_content .= '<form action="?subtopic=latestnews" METHOD=post><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$layout_name.'/images/buttons/_sbutton_back.gif" ></div></div></form>'; } //#################### DELETE (HIDE only!) TICKER ############################ if($action == "deleteticker") { if($group_id_of_acc_logged >= $config['site']['access_tickers']) { header("Location: "); $date = (int) $_REQUEST['id']; $SQL->query('UPDATE '.$SQL->tableName('z_news_tickers').' SET hide_ticker = 1 WHERE '.$SQL->fieldName('date').' = '.$date.';'); $news_content .= '<center>News tickets with <b>date '.date("j F Y, g:i a", $date).'</b> has been deleted.<form action="?subtopic=latestnews" METHOD=post><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$layout_name.'/images/buttons/_sbutton_back.gif" ></div></div></form></center>'; } else { $news_content .= '<center>You don\'t have admin rights. You can\'t delete tickers.<form action="?subtopic=latestnews" METHOD=post><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$layout_name.'/images/buttons/_sbutton_back.gif" ></div></div></form></center>'; } } //show tickers if any in database or not blocked (tickers limit = 0) $tickers = $SQL->query('SELECT * FROM `z_news_tickers` WHERE hide_ticker != 1 ORDER BY date DESC LIMIT 4;'); $number_of_tickers = 0; if(is_object($tickers)) { foreach($tickers as $ticker) { if(is_int($number_of_tickers / 2)) $color = "Odd"; else $color = "Even"; $tickers_to_add .= '<div id="TickerEntry-'.$number_of_tickers.'" class="Row" onclick=\'TickerAction("TickerEntry-'.$number_of_tickers.'")\'> <div class="'.$color.'"> <div class="NewsTickerIcon" style="background-image: url('.$layout_name.'/images/news/icon_'.$ticker['image_id'].'.gif);"></div> <div id="TickerEntry-'.$number_of_tickers.'-Button" class="NewsTickerExtend" style="background-image: url('.$layout_name.'/images/general/plus.gif);"></div> <div class="NewsTickerText"> <span class="NewsTickerDate">'.date("j M Y", $ticker['date']).' -</span> <div id="TickerEntry-'.$number_of_tickers.'-ShortText" class="NewsTickerShortText">'; //if admin show button to delete (hide) ticker if($group_id_of_acc_logged >= $config['site']['access_admin_panel']) { $tickers_to_add .= '<a href="?subtopic=latestnews&action=deleteticker&id='.$ticker['date'].'"><img src="'.$layout_name.'/images/news/delete.png" border="0"></a>'; } $tickers_to_add .= short_text($ticker['text'], 60).'</div> <div id="TickerEntry-'.$number_of_tickers.'-FullText" class="NewsTickerFullText">'; //if admin show button to delete (hide) ticker if($group_id_of_acc_logged >= $config['site']['access_admin_panel']) { $tickers_to_add .= '<a href="?subtopic=latestnews&action=deleteticker&id='.$ticker['date'].'"><img src="'.$layout_name.'/images/news/delete.png" border="0"></a>'; } $tickers_to_add .= $ticker['text'].'</div> </div> </div> </div>'; $number_of_tickers++; } } if(!empty($tickers_to_add)) { //show table with tickers if($group_id_of_acc_logged >= $config['site']['access_admin_panel'] && $action!=newticker) $news_content .= '<script type="text/javascript"> var showednewticker_state = "0"; function showNewTickerForm() { if(showednewticker_state == "0") { document.getElementById("newtickerform").innerHTML = \'<form action="?subtopic=latestnews&action=newticker" method="post" ><table border="0"><tr><td bgcolor="D4C0A1" align="center"><b>Select icon:</b></td><td><table border="0" bgcolor="F1E0C6"><tr><td><img src="images/news/icon_0.gif" width="20"></td><td><img src="images/news/icon_1.gif" width="20"></td><td><img src="images/news/icon_2.gif" width="20"></td><td><img src="images/news/icon_3.gif" width="20"></td><td><img src="images/news/icon_4.gif" width="20"></td></tr><tr><td><input type="radio" name="icon_id" value="0" checked="checked"></td><td><input type="radio" name="icon_id" value="1"></td><td><input type="radio" name="icon_id" value="2"></td><td><input type="radio" name="icon_id" value="3"></td><td><input type="radio" name="icon_id" value="4"></td></tr></table></td></tr><tr><td align="center" bgcolor="D4C0A1"><b>New<br>ticker<br>text:</b></td><td bgcolor="F1E0C6"><textarea name="new_ticker" rows="3" cols="45"></textarea></td></tr><tr><td><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></form><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><img class="ButtonText" id="AddTicker" src="'.$layout_name.'/images/buttons/_sbutton_cancel.gif" onClick="showNewTickerForm()" alt="AddTicker" /></div></div></td></tr></table>\'; document.getElementById("jajo").innerHTML = \'\'; showednewticker_state = "1"; } else { document.getElementById("newtickerform").innerHTML = \'\'; document.getElementById("jajo").innerHTML = \'<div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><img class="ButtonText" id="AddTicker" src="'.$layout_name.'/images/buttons/addticker.gif" onClick="showNewTickerForm()" alt="AddTicker" /></div></div>\'; showednewticker_state = "0"; } } </script><div id="newtickerform"></div><div id="jajo"><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><img class="ButtonText" id="AddTicker" src="'.$layout_name.'/images/buttons/addticker.gif" onClick="showNewTickerForm()" alt="AddTicker" /></div></div></div><hr/>'; //add tickers list $news_content .= $tickers_to_add; //koniec $news_content .= '</div> </div> </div> <div class="Border_1" style="background-image: url('.$layout_name.'/images/content/border-1.gif);"></div> <div class="CornerWrapper-b"><div class="Corner-bl" style="background-image: url('.$layout_name.'/images/content/corner-bl.gif);"></div></div> <div class="CornerWrapper-b"><div class="Corner-br" style="background-image: url('.$layout_name.'/images/content/corner-br.gif);"></div></div> </div>'; } //end of tickers, news part //adding news if($action == "newnews") { if($group_id_of_acc_logged >= $config['site']['access_news']) { $text = ($_REQUEST['text']); $char_id = (int) $_REQUEST['char_id']; $post_topic = stripslashes(trim($_REQUEST['topic'])); $smile = (int) $_REQUEST['smile']; $news_icon = (int) $_REQUEST['icon_id']; if(empty($news_icon)) { $news_icon = 0; } if(empty($post_topic)) { $an_errors[] .= 'You can\'t add news without topic.'; } if(empty($text)) { $an_errors[] .= 'You can\'t add empty news.'; } if(empty($char_id)) { $an_errors[] .= 'Select character.'; } //execute query if(empty($an_errors)) { $SQL->query("INSERT INTO `z_forum` (`id` ,`first_post` ,`last_post` ,`section` ,`replies` ,`views` ,`author_aid` ,`author_guid` ,`post_text` ,`post_topic` ,`post_smile` ,`post_date` ,`last_edit_aid` ,`edit_date`, `post_ip`, `icon_id`) VALUES ('NULL', '0', '".time()."', '1', '0', '0', '".$account_logged->getId()."', '".(int) $char_id."', ".$SQL->quote($text).", ".$SQL->quote($post_topic).", '".(int) $smile."', '".time()."', '0', '0', '".$_SERVER['REMOTE_ADDR']."', '".$news_icon."')"); $thread_id = $SQL->lastInsertId(); $SQL->query("UPDATE `z_forum` SET `first_post`=".(int) $thread_id." WHERE `id` = ".(int) $thread_id);//show added data $main_content .= '<form action="?subtopic=latestnews" METHOD=post><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$layout_name.'/images/buttons/_sbutton_back.gif" ></div></div></form>'; } else { //show errors $main_content .= '<div class="SmallBox" > <div class="MessageContainer" > <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div> <div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="ErrorMessage" > <div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div> <div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div> <div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif);" /></div><b>The Following Errors Have Occurred:</b><br/>'; foreach($an_errors as $an_error) { $main_content .= '<li>'.$an_error; } $main_content .= '</div> <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div> <div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> </div></div><br/>'; //okno edycji newsa z wpisanymi danymi przeslanymi wczesniej $main_content .= '<form action="?subtopic=latestnews&action=newnews" method="post" ><table border="0"><tr><td bgcolor="D4C0A1" align="center"><b>Select icon:</b></td><td><table border="0" bgcolor="F1E0C6"><tr><td><img src="images/news/icon_0.gif" width="20"></td><td><img src="images/news/icon_1.gif" width="20"></td><td><img src="images/news/icon_2.gif" width="20"></td><td><img src="images/news/icon_3.gif" width="20"></td><td><img src="images/news/icon_4.gif" width="20"></td></tr><tr><td><input type="radio" name="icon_id" value="0" checked="checked"></td><td><input type="radio" name="icon_id" value="1"></td><td><input type="radio" name="icon_id" value="2"></td><td><input type="radio" name="icon_id" value="3"></td><td><input type="radio" name="icon_id" value="4"></td></tr></table></td></tr><tr><td align="center" bgcolor="F1E0C6"><b>Topic:</b></td><td><input type="text" name="topic" maxlenght="50" style="width: 300px" value="'.$post_topic.'"></td></tr><tr><td align="center" bgcolor="D4C0A1"><b>News<br>text:</b></td><td bgcolor="F1E0C6"><textarea name="text" rows="6" cols="60">'.$text.'</textarea></td></tr><tr><td width="180"><b>Character:</b></td><td><select name="char_id"><option value="0">(Choose character)</option>'.$str.'</select></td></tr><tr><td><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></form><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><img class="ButtonText" id="CancelAddNews" src="'.$layout_name.'/images/buttons/_sbutton_cancel.gif" onClick="location.href=\'?subtopic=latestnews\';" alt="CancelAddNews" /></div></div></td></tr></table>'; } } else { $main_content .= 'You don\'t have site-admin rights. You can\'t add news.';} } //####################Show script with new news panel############################ if($group_id_of_acc_logged >= $config['site']['access_news'] && $action != 'newnews') { $main_content .= '<script type="text/javascript"> var showednewnews_state = "0"; function showNewNewsForm() { if(showednewnews_state == "0") { document.getElementById("newnewsform").innerHTML = \'<form action="?subtopic=latestnews&action=newnews" method="post" ><table border="0"><tr><td bgcolor="D4C0A1" align="center"><b>Select icon:</b></td><td><table border="0" bgcolor="F1E0C6"><tr><td><img src="images/news/icon_0.gif" width="20"></td><td><img src="images/news/icon_1.gif" width="20"></td><td><img src="images/news/icon_2.gif" width="20"></td><td><img src="images/news/icon_3.gif" width="20"></td><td><img src="images/news/icon_4.gif" width="20"></td></tr><tr><td><input type="radio" name="icon_id" value="0" checked="checked"></td><td><input type="radio" name="icon_id" value="1"></td><td><input type="radio" name="icon_id" value="2"></td><td><input type="radio" name="icon_id" value="3"></td><td><input type="radio" name="icon_id" value="4"></td></tr></table></td></tr><tr><td align="center" bgcolor="F1E0C6"><b>Topic:</b></td><td><input type="text" name="topic" maxlenght="50" style="width: 300px" ></td></tr><tr><td align="center" bgcolor="D4C0A1"><b>News<br>text:</b></td><td bgcolor="F1E0C6"><textarea name="text" rows="6" cols="60"></textarea></td></tr><tr><td width="180"><b>Character:</b></td><td><select name="char_id"><option value="0">(Choose character)</option>'.$str.'</select></td></tr><tr><td><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></form><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><img class="ButtonText" id="CancelAddNews" src="'.$layout_name.'/images/buttons/_sbutton_cancel.gif" onClick="showNewNewsForm()" alt="CancelAddNews" /></div></div></td></tr></table>\'; document.getElementById("chicken").innerHTML = \'\'; showednewnews_state = "1"; } else { document.getElementById("newnewsform").innerHTML = \'\'; document.getElementById("chicken").innerHTML = \'<div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><img class="ButtonText" id="AddNews" src="'.$layout_name.'/images/buttons/addnews.gif" onClick="showNewNewsForm()" alt="AddNews" /></div></div>\'; showednewnews_state = "0"; } } </script><div id="newnewsform"></div><div id="chicken"><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><img class="ButtonText" id="AddNews" src="'.$layout_name.'/images/buttons/addnews.gif" onClick="showNewNewsForm()" alt="AddNews" /></div></div></div><hr/>';$zapytanie = $SQL->query("SELECT `z_forum`.`icon_id`,`z_forum`.`post_topic`, `z_forum`.`author_guid`, `z_forum`.`post_date`, `z_forum`.`post_text`, `z_forum`.`id`, `z_forum`.`replies`, `players`.`name` FROM `z_forum`, `players` WHERE `section` = '1' AND `z_forum`.`id` = `first_post` AND `players`.`id` = `z_forum`.`author_guid` ORDER BY `post_date` DESC LIMIT 3;")->fetchAll(); } ///show news $zapytanie = $SQL->query("SELECT `z_forum`.`icon_id`, `z_forum`.`post_topic`, `z_forum`.`author_guid`, `z_forum`.`post_date`, `z_forum`.`post_text`, `z_forum`.`id`, `z_forum`.`replies`, `players`.`name` FROM `z_forum`, `players` WHERE `section` = '1' AND `z_forum`.`id` = `first_post` AND `players`.`id` = `z_forum`.`author_guid` ORDER BY `post_date` DESC LIMIT 3;")->fetchAll(); foreach ($zapytanie as $row) { $BB = array( '/\[youtube\](.*?)\[\/youtube\]/is' => '<center><object width="500" height="405"><param name="movie" value="http://www.youtube.com/v/$1&hl=pt-br&fs=1&rel=0&color1=0x3a3a3a&color2=0x999999&border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/$1&hl=pt-br&fs=1&rel=0&color1=0x3a3a3a&color2=0x999999&border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"></embed></object></center>', '/\[b\](.*?)\[\/b\]/is' => '<strong>$1</strong>', '/\[center\](.*?)\[\/center\]/is' => '<center>$1</center>', '/\[quote\](.*?)\[\/quote\]/is' => '<table cellpadding="0" style="background-color: #c4c4c4; width: 480px; border-style: dotted; border-color: #007900; border-width: 2px"><tr><td>$1</td></tr></table>', '/\[u\](.*?)\[\/u\]/is' => '<u>$1</u>', '/\[i\](.*?)\[\/i\]/is' => '<i>$1</i>', '/\[letter\](.*?)\[\/letter\]/is' => '<img src=images/letters/$1.gif alt=$1 />', '/\[url](.*?)\[\/url\]/is' => '<a href=$1>$1</a>', '/\[color\=(.*?)\](.*?)\[\/color\]/is' => '<span style="color: $1;">$2</span>', '/\[img\](.*?)\[\/img\]/is' => '<img src=$1 alt=$1 />', '/\[player\](.*?)\[\/player\]/is' => '<a href='.$server['ip'].'?subtopic=characters&name=$1>$1</a>', '/\[code\](.*?)\[\/code\]/is' => '<div dir="ltr" style="margin: 0px;padding: 2px;border: 1px inset;width: 500px;height: 290px;text-align: left;overflow: auto"><code style="white-space:nowrap">$1</code></div>' ); $message = preg_replace(array_keys($BB), array_values($BB), nl2br($row['post_text'])); $main_content .= '<div class=\'NewsHeadline\'> <div class=\'NewsHeadlineBackground\' style=\'background-image:url('.$layout_name.'/images/news/newsheadline_background.gif)\'> <table border=0><tr><td><img src="'.$layout_name.'/images/news/icon_'.$row['icon_id'].'.gif" class=\'NewsHeadlineIcon\' alt=\'\' /> </td><td><font color="'.$layout_ini['news_title_color'].'">'.date('d.m.y H:i:s', $row['post_date']).' - <b>'.$row['post_topic'].'</b></font></td></tr></table> </div> </div> <table style=\'clear:both\' border=0 cellpadding=0 cellspacing=0 width=\'100%\'><tr> <td><img src="'.$layout_name.'/images/global/general/blank.gif" width=10 height=1 border=0 alt=\'\' /></td>'; if($group_id_of_acc_logged >= $config['site']['access_admin_panel']) { $main_content .='<td width="100%">'.$message.'<br><h6><i>Posted by </i><font color="green">'.$row['name'].'</font></h6><p align="right"><a href="?subtopic=forum&action=remove_post&id='.$row['id'].'"><font color="red">[Delete this news]</font></a> <a href="?subtopic=forum&action=edit_post&id='.$row['id'].'"><font color="green">[Edit this news]</font></a> <a href="?subtopic=forum&action=show_thread&id='.$row['id'].'">Comments: '.$row['replies'].'</a></p>'; } else { $main_content .='<td width="100%">'.$message.'<br><h6><i>Posted by </i><font color="green">'.$row['name'].'</font></h6><p align="right"><a href="?subtopic=forum&action=show_thread&id='.$row['id'].'">Comments: '.$row['replies'].'</a></p>'; } $main_content .= '</td> <td><img src="'.$layout_name.'/images/global/general/blank.gif" width=10 height=1 border=0 alt=\'\' /></td> </tr></table>'; } ?>
  11. Olá, Então amigo a maioria dos servidor de otserver, vem com dois arquivos de banco de dados que é o .s3db e o .sql. Os servidores atuais não vem com sites embutido por isso usam o arquivo s3db como padrão, pois com este arquivo a database é armazenada direto no HD do computador, mídia removível, cloud files, entre outros. E o arquivo .sql é opcional para quem deseja criar um website por exemplo, com ele é possível armazenar dados vindo de um site na web, já o .s3db não é possível tal coisa. Até o momento, não é possível importar uma database "sqlite" para 'mysql" por isso que está ocorrendo o erro que você descreveu, pra corrigir o problema, faça o seguinte: - Configure seu arquivo config.lua do mesmo modo que eu ilustrei abaixo: Vá no "phpmyadmin" e delete a database atual, e importe o arquivo .sql (Atenção: Não importe o arquivo .s3db , apenas importe o arquivo .sql ) [ex: database.sql] E não haverá erros, já que seu servidor está limpo de players não haverá problema algum, apenas configure do jeito que eu passei. estou te enviando uma database de otserv global, pronta. é claro que pode haver algum erro de incompatibilidade, mas vale a pena tentar. (Obs: Não é virus, você pode verificar como quiser, no download mesmo, está escrito o final do arquivo .sql - Não tenho tempo de colocar scan no momento) -Dica: após o procedimento, desabilite o account manager. http://sharex.xpg.co...tabase.sql.html Se eu te ajudei, ficaria muito agradecido com um REP+
  12. As sources são pra isso mesmo, elas vem apenas como arquivos (não compilados) basta apenas alterar o que quiser e compilar. Todas as sourcer são as mesmas coisas, não possuem erros, apenas mau configuração do compilador. Passa o erro e esclarece o que está havendo, até mais.
  13. Que isso (rsrs) continue fazendo seus projetos que concerteza ainda poderá ter um mapa seu por ai, bem famoso como o servidor do alissow por exemplo. Eu realmente achei muito bonito esse mapa, e essa sua história é hilária xD. Eu acho que você deveria continuar ele, e postar updates.
  14. Muito bom esse mapa, achei realmente muito bonito e criativo... Legal mesmo.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...