Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 10/18/12 em %

  1. Lendreo

    [Pokémon] Mapa Do Lendreo 2.0

    Eaaew Xtibianos!! Finalmente mapa foi atualizado, desculpas pelo atráso, mas meu pc deu problems o/. Oque mudou nessa versão? *Houses Ativas 98% [se alguma n estiver funcionando,avise-me] *Subsolos *Novas Hunts *Alguns Respaws *Bugs retirados *Alguns pontos do mapa, foram totalmente editados *Imagem do mapa Geral: *Download 2.0 *Scan Mapa 2.0 Gostou? Rep+ ou clique na seta para cima de cor verde. *Lembre-se poste erros em geral para que eu possa arrumar nas próximas versões e também farei novas ilhas e o Mapa da região Johto.
    2 pontos
  2. LookMe

    Scripts Iniciais

    @Frenesy, onde é o local que eu coloco esse script ? seria em creaturescripts ?
    2 pontos
  3. Kydrai

    Vip System By Account V1.0

    Vip System by Account 1.0 By Kydrai Este é um vip system por account, ou seja, um sistema de vip válido para todos os characters de uma determinada conta. O script foi testado no TFS 0.3.6 - 8.54. E no site Gesior 0.3.4 beta4. Em caso de erros ou dúvidas é só postar. Funções do Script Função necessária para começar a usar o script: installVip() -> Cria a coluna no banco de dados para usar o sistema de vip (testei somente em sqlite, mas acredito que funcione em mysql) Funções que utilizam o account id: doTeleportPlayersByAccount(acc, topos) -> Teleporta todos os players da account getVipTimeByAccount(acc) -> Pega o tempo de vip setVipTimeByAccount(acc, time) -> Edita o tempo de vip getVipDaysByAccount(acc) -> Pega o tempo de vip em dias isVipAccount(acc) -> Verifica se é vip addVipDaysByAccount(acc, days) -> Adiciona dias de vip doRemoveVipDaysByAccount(acc, days) -> Remove dias de vip getVipDateByAccount(acc) -> Pega a data e hora que irá terminar a vip Funções que utilizam o creature id (cid): doTeleportPlayers(cid, topos) -> Teleporta todos os players da account getVipTime(cid) -> Pega o tempo de vip setVipTime(cid, time) -> Edita o tempo de vip getVipDays(cid) -> Pega o tempo de vip em dias isVip(cid) -> Verifica se é vip addVipDays(cid, days) -> Adiciona dias de vip doRemoveVipDays(cid, days) -> Remove dias de vip getVipDate(cid) -> Pega a data e hora que irá terminar a vip Inserindo as funções Abra a pasta data/lib, crie um arquivo lua e coloque: vipAccount.lua --[[ Name: Vip System by Account Version: 1.0 Author: Kydrai Forum: http://www.xtibia.com/forum/topic/136543-vip-system-by-account-v10/ [Functions] -- Install installVip() -- By Account doTeleportPlayersByAccount(acc, topos) getVipTimeByAccount(acc) setVipTimeByAccount(acc, time) getVipDaysByAccount(acc) isVipAccount(acc) addVipDaysByAccount(acc, days) doRemoveVipDaysByAccount(acc, days) getVipDateByAccount(acc) -- By Player doTeleportPlayers(cid, topos) getVipTime(cid) setVipTime(cid, time) getVipDays(cid) isVip(cid) addVipDays(cid, days) doRemoveVipDays(cid, days) getVipDate(cid) ]]-- -- Install function installVip() if db.executeQuery("ALTER TABLE `accounts` ADD viptime INT(15) NOT NULL DEFAULT 0;") then print("[Vip System] Vip System instalado com sucesso!") return TRUE end print("[Vip System] Não foi possível instalar o Vip System!") return FALSE end -- By Account function doTeleportPlayersByAccount(acc, topos) if db.executeQuery("UPDATE `players` SET `posx` = "..topos.x..", `posy` = "..topos.y..", `posz` = "..topos.z.." WHERE `account_id` = "..acc..";") then return TRUE end return FALSE end function getVipTimeByAccount(acc) local vip = db.getResult("SELECT `viptime` FROM `accounts` WHERE `id` = "..acc..";") if vip:getID() == -1 then print("[Vip System] Account not found!") return FALSE end return vip:getDataInt("viptime") end function setVipTimeByAccount(acc, time) if db.executeQuery("UPDATE `accounts` SET `viptime` = "..time.." WHERE `id` = "..acc..";") then return TRUE end return FALSE end function getVipDaysByAccount(acc) local vipTime = getVipTimeByAccount(acc) local timeNow = os.time() local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60)) return days <= 0 and 0 or days end function isVipAccount(acc) return getVipDaysByAccount(acc) > 0 and TRUE or FALSE end function addVipDaysByAccount(acc, days) if days > 0 then local daysValue = days * 24 * 60 * 60 local vipTime = getVipTimeByAccount(acc) local timeNow = os.time() local time = getVipDaysByAccount(acc) == 0 and (timeNow + daysValue) or (vipTime + daysValue) setVipTimeByAccount(acc, time) return TRUE end return FALSE end function doRemoveVipDaysByAccount(acc, days) if days > 0 then local daysValue = days * 24 * 60 * 60 local vipTime = getVipTimeByAccount(acc) local time = vipTime - daysValue setVipTimeByAccount(acc, (time <= 0 and 1 or time)) return TRUE end return FALSE end function getVipDateByAccount(acc) if isVipAccount(acc) then local vipTime = getVipTimeByAccount(acc) return os.date("%d/%m/%y %X", vipTime) end return FALSE end -- By Player function doTeleportPlayers(cid, topos) doTeleportPlayersByAccount(getPlayerAccountId(cid), topos) end function getVipTime(cid) return getVipTimeByAccount(getPlayerAccountId(cid)) end function setVipTime(cid, time) return setVipTimeByAccount(getPlayerAccountId(cid), time) end function getVipDays(cid) return getVipDaysByAccount(getPlayerAccountId(cid)) end function isVip(cid) return isVipAccount(getPlayerAccountId(cid)) end function addVipDays(cid, days) return addVipDaysByAccount(getPlayerAccountId(cid), days) end function doRemoveVipDays(cid, days) return doRemoveVipDaysByAccount(getPlayerAccountId(cid), days) end function getVipDate(cid) return getVipDateByAccount(getPlayerAccountId(cid)) end Exemplos de uso Talkaction GOD: /installvip /addvip name, days /removevip name, days /checkvip name Player: /buyvip /vipdays talkactions.xml: <talkaction log="yes" access="5" words="/installvip;/addvip;/removevip;/checkvip" event="script" value="vipaccgod.lua"/> <talkaction words="/buyvip;/vipdays" event="script" value="vipaccplayer.lua"/> vipaccgod.lua: function onSay(cid, words, param, channel) local t = param:explode(",") local name, days = t[1], tonumber(t[2]) if words == "/installvip" then if installVip() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Vip System instalado com sucesso!") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não foi possível instalar o Vip System!") end elseif words == "/addvip" then if name then if days then local acc = getAccountIdByName(name) if acc ~= 0 then addVipDaysByAccount(acc, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip ao "..name..", agora ele possui "..getVipDaysByAccount(acc).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar essa quantidade de dia(s) de vip.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar dia(s) de vip a este player.") end elseif words == "/removevip" then if name then if days then local acc = getAccountIdByName(name) if acc ~= 0 then doRemoveVipDaysByAccount(acc, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você retirou "..days.." dia(s) de vip do "..name..", agora ele possui "..getVipDaysByAccount(acc).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode retirar essa quantidade de dia(s) de vip.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode retirar dia(s) de vip a este player.") end elseif words == "/checkvip" then if name then local acc = getAccountIdByName(name) if acc ~= 0 then local duration = getVipDateByAccount(acc) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O "..name.." possui "..getVipDaysByAccount(acc).." dias de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode visualizar os dias de vip a este player.") end end return TRUE end vipaccplayer.lua: function onSay(cid, words, param, channel) if words == "/buyvip" then local price = 1000000 local days = 30 if doPlayerRemoveMoney(cid, price) then addVipDays(cid, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..price.." para adicionar "..days.." dia(s) de vip.") end elseif words == "/vipdays" then local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end Movement (Tile) Coloque actionid 15000 em um tile onde somente os vips poderão passar. movements.xml: <movevent type="StepIn" actionid="15000" event="script" value="viptile.lua"/> viptile.lua: function onStepIn(cid, item, position, fromPosition) if isVip(cid) == FALSE then doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente players vip podem passar.") end return TRUE end Creaturescript (Login) Quando player logar irá verificar se a vip do player acabou, se sim então irá teleportar todos os players da account para o templo, se não irá mostrar o tempo da vip. creaturescripts.xml: <event type="login" name="viplogin" script="viplogin.lua"/> viplogin.lua: function onLogin(cid) local vip = isVip(cid) if getVipTime(cid) > 0 and vip == FALSE then local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) setVipTime(cid, 0) doTeleportPlayers(cid, templePos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") elseif vip == TRUE then local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end Action (Door) Coloque actionid 15001 na door onde somente os vips poderão passar. Use a porta gate of expertise (id: 1227) actions.xml: <action actionid="15001" script="vipdoor.lua"/> vipdoor.lua: function onUse(cid, item, fromPosition, itemEx, toPosition) if isVip(cid) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Somente players vip podem passar.") elseif item.itemid == 1227 then doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, toPosition) end return TRUE end NPC (Vendedor de VIP) vipnpc.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="Vendedor de VIP" script="vipnpc.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|, I sell {vip} days."/> </parameters> </npc> vipnpc.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 buyVip(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if doPlayerRemoveMoney(cid, parameters.price) then addVipDays(cid, parameters.days) npcHandler:say('Thanks, you buy '..parameters.days..' vip days. You have '..getVipDays(cid)..' vip days.', cid) else npcHandler:say('Sorry, you don\'t have enough money.', cid) end npcHandler:resetNpc() return true end local node1 = keywordHandler:addKeyword({'vip'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want buy 30 vip days for 1000000 gp\'s?'}) node1:addChildKeyword({'yes'}, buyVip, {price = 1000000, days = 30}) node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Ok, then.', reset = true}) npcHandler:addModule(FocusModule:new()) Erros e Soluções Configurando o Gesior Com essa configuração irá aparecer o vip status do player no site e será possível vender vip pelo site. Se eu esqueci de alguma coisa é só avisar. accountmanagement.php Depois de: if(!$account_logged->isPremium()) $account_status = '<b><font color="red">Free Account</font></b>'; else $account_status = '<b><font color="green">Premium Account, '.$account_logged->getPremDays().' days left</font></b>'; Adicione: if(!$account_logged->isVip()) $account_vip_status = '<b><font color="red">Not Vip Account</font></b>'; else $account_vip_status = '<b><font color="green">Vip Account, '.$account_logged->getVipDays().' days left</font></b>'; Depois de: <td class="LabelV" >Account Status:</td><td>'.$account_status.'</td></tr><tr style="background-color:'.$config['site']['darkborder'].';" > Adicione: <td class="LabelV" >Account Vip Status:</td><td>'.$account_vip_status.'</td></tr><tr style="background-color:'.$config['site']['darkborder'].';" > pot/OTS_Account.php Substitua: private $data = array('email' => '', 'blocked' => false, 'rlname' => '','location' => '','page_access' => 0,'lastday' => 0,'premdays' => 0, 'created' => 0); Por: private $data = array('email' => '', 'blocked' => false, 'rlname' => '','location' => '','page_access' => 0,'lastday' => 0,'premdays' => 0, 'created' => 0, 'viptime' => 0); Substitua: $this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('password') . ', ' . $this->db->fieldName('email') . ', ' . $this->db->fieldName('blocked') . ', ' . $this->db->fieldName('rlname') . ', ' . $this->db->fieldName('location') . ', ' . $this->db->fieldName('page_access') . ', ' . $this->db->fieldName('premdays') . ', ' . $this->db->fieldName('lastday') . ', ' . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch(); Por: $this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('password') . ', ' . $this->db->fieldName('email') . ', ' . $this->db->fieldName('blocked') . ', ' . $this->db->fieldName('rlname') . ', ' . $this->db->fieldName('location') . ', ' . $this->db->fieldName('page_access') . ', ' . $this->db->fieldName('premdays') . ', ' . $this->db->fieldName('viptime') . ', ' . $this->db->fieldName('lastday') . ', ' . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch(); Substitua: $this->db->query('UPDATE ' . $this->db->tableName('accounts') . ' SET ' . $this->db->fieldName('password') . ' = ' . $this->db->quote($this->data['password']) . ', ' . $this->db->fieldName('email') . ' = ' . $this->db->quote($this->data['email']) . ', ' . $this->db->fieldName('blocked') . ' = ' . (int) $this->data['blocked'] . ', ' . $this->db->fieldName('rlname') . ' = ' . $this->db->quote($this->data['rlname']) . ', ' . $this->db->fieldName('location') . ' = ' . $this->db->quote($this->data['location']) . ', ' . $this->db->fieldName('page_access') . ' = ' . (int) $this->data['page_access'] . ', ' . $this->db->fieldName('premdays') . ' = ' . (int) $this->data['premdays'] . ', ' . $this->db->fieldName('lastday') . ' = ' . (int) $this->data['lastday'] . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); Por: $this->db->query('UPDATE ' . $this->db->tableName('accounts') . ' SET ' . $this->db->fieldName('password') . ' = ' . $this->db->quote($this->data['password']) . ', ' . $this->db->fieldName('email') . ' = ' . $this->db->quote($this->data['email']) . ', ' . $this->db->fieldName('blocked') . ' = ' . (int) $this->data['blocked'] . ', ' . $this->db->fieldName('rlname') . ' = ' . $this->db->quote($this->data['rlname']) . ', ' . $this->db->fieldName('location') . ' = ' . $this->db->quote($this->data['location']) . ', ' . $this->db->fieldName('page_access') . ' = ' . (int) $this->data['page_access'] . ', ' . $this->db->fieldName('premdays') . ' = ' . (int) $this->data['premdays'] . ', ' . $this->db->fieldName('viptime') . ' = ' . (int) $this->data['viptime'] . ', ' . $this->db->fieldName('lastday') . ' = ' . (int) $this->data['lastday'] . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); Depois de: public function getPremDays() { if( !isset($this->data['premdays']) || !isset($this->data['lastday']) ) { throw new E_OTS_NotLoaded(); } return $this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])); } Adicione: public function getVipDays() { if( !isset($this->data['viptime']) || !isset($this->data['lastday']) ) { throw new E_OTS_NotLoaded(); } return ceil(($this->data['viptime'] - time()) / (24*60*60)); } Depois de: public function isPremium() { return ($this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])) > 0); } Adicione: public function isVip() { return ceil(($this->data['viptime'] - time()) / (24*60*60)) > 0; } characters.php Substitua: if($config['site']['show_vip_status']) { $id = $player->getCustomField("id"); if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=10%>Vip Status:</TD>'; $vip = $SQL->query('SELECT * FROM player_storage WHERE player_id = '.$id.' AND `key` = '.$config['site']['show_vip_storage'].';')->fetch(); if($vip == false) { $main_content .= '<TD><span class="red"><B>NOT VIP</B></TD></TR>'; } else { $main_content .= '<TD><span class="green"><B>VIP</B></TD></TR>'; } $comment = $player->getComment(); $newlines = array("\r\n", "\n", "\r"); $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); if($count < 50) $comment = $comment_with_lines; if(!empty($comment)) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD VALIGN=top>Comment:</TD><TD>'.$comment.'</TD></TR>'; } } Por: if($config['site']['show_vip_status']) { $id = $player->getCustomField("id"); if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=10%>Account Vip Status:</TD>'; if(!$account->isVip()) { $main_content .= '<TD><span class="red"><B>NOT VIP</B></TD></TR>'; } else { $main_content .= '<TD><span class="green"><B>VIP</B></TD></TR>'; } $comment = $player->getComment(); $newlines = array("\r\n", "\n", "\r"); $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); if($count < 50) $comment = $comment_with_lines; if(!empty($comment)) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD VALIGN=top>Comment:</TD><TD>'.$comment.'</TD></TR>'; } } shopsystem.php (+Créditos ao GM Bekman) Substitua: if($buy_offer['type'] == 'pacc') { $player_premdays = $buy_player_account->getCustomField('premdays'); $player_lastlogin = $buy_player_account->getCustomField('lastday'); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).', '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');'; $SQL->query($save_transaction); $buy_player_account->setCustomField('premdays', $player_premdays+$buy_offer['days']); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; if($player_premdays == 0) { $buy_player_account->setCustomField('lastday', time()); } $main_content .= '<h2>PACC added!</h2><b>'.$buy_offer['days'].' days</b> of Premium Account added to account of player <b>'.$buy_player->getName().'</b> for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>'; } Por: if($buy_offer['type'] == 'pacc') { $player_viptime = $buy_player_account->getCustomField('viptime'); $player_lastlogin = $buy_player_account->getCustomField('lastday'); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).', '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');'; $SQL->query($save_transaction); if($player_viptime > 0) $buy_player_account->setCustomField('viptime', $player_viptime + ($buy_offer['days'] * 24 * 60 * 60)); else $buy_player_account->setCustomField('viptime', time() + ($buy_offer['days'] * 24 * 60 * 60)); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; if($player_viptime == 0) { $buy_player_account->setCustomField('lastday', time()); } $main_content .= '<h2>VIP Days added!</h2><b>'.$buy_offer['days'].' days</b> of Vip Account added to account of player <b>'.$buy_player->getName().'</b> for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>'; } Links Úteis 01- [Gesior Acc] Vendedo Vip Pelo Pacc Créditos: GM Bekman 02- Double Exp Para Vip Créditos: Vodkart 03- Outfits Só Para Jogadores Vips Créditos: Vodkart
    1 ponto
  4. Noobao02

    [8.60] Baiak Soul

    Baiak Evolution By Soul o que mudou? Muitas Novidades . Alguns erros e bugs consertados . 2 Novos monstros adicionados, mais ainda não tem hunt . Alguns sistemas novos adicionados . Novo templo editado,e outros lugares Editado tambem . Para ver o resto, baxem e confirão as novidades =D DOWNLOAD FOTOS New Temple Uploaded with ImageShack.us New Monsters Uploaded with ImageShack.us SCAN Uploaded with ImageShack.us SENHA DO GOD: god/god Creditos Baiak Bryaan Math Miner0 GOSTOU ?? REP ++ !
    1 ponto
  5. Killua

    Criando Seu Cliente De Tibia

    Como criar um cliente próprio? Eis uma pergunta que eu vejo muito. E também já ví vários tutoriais em relação a isto, mas todos que eu seguia, não funcionava, eu precisava ir juntando informações de pelo menos 3 tópicos para fazer dar certo. Mas agora, eu mesmo vou fazer meu próprio tutorial, e todos vocês farão seus clientes! 1° Passo: bom, eu uso o programa mais util e simples do mundo! O "Cliente Creator" Download: Aqui <--- O Scan vou ter que colocar depois, porque o vírus total não está abrindo aqui. Certo, após ter baixado o Cliente Creator abra o .exe Ele é bem facil de manusear. Primeiro aperte o botão "arquivo" e selecione o Tibia.exe do diretório (C:/Arquivos de programas/Tibia/Tibia.exe) Em "Seu IP" coloque um IP de 19 caracteres (19 letras) e Clique em "Alterar"------ Pronto, seu cliente está criado, para abri-lo vá em C:/Arquivos de Programas/Tibia e abre o Tibia.exe Mas agora que tem seu cliente em mãos, você não acha que fica meio feio com a foto do Tibia normal? Então Vamos mudar! Para isso vamos precisar do Pic Editor Download: Aqui <--- Como já dito o Vírus total não está abrindo aqui, então, temporáriamente sem Scan. Ok, agora, tendo o Pic Editor em mãos copie o PicEditor v2.5 by Isaac.EXE para seu diretório de Tibia (O mesmo que está seu cliente). Abra o PicEditor que está dentro da pasta do seu cliente e clique em "Arquivo" e selecione o Tibia.pic que está nessa mesma pasta. Após ter selecionado o arquivo Tibia.pic clique em "Extract". Vão aparecer 8 arquivos Bitmap, do 0.bmp ao 7.bmp. Você só irá mecher no 0.bmp, pois ele é a imagem de fundo. Para alterar, simplesmente clique com o botão direito editar. Apague a imagem que tem e cole a que você quer. LEMBRE-SE QUE A IMAGEM NÃO PODE SER MAIOR NEM MENOR QUE A DO TIBIA.Salve e clique em "Compilar" Pronto! Mais fácil do que parecia neh? Mas pode haver um pequeno probleminha.... Fiquem calmos, pois esse problema é perfeitamente comum e bem fácil de resolver! Caso suas letras fiquem assim: Você terá que seguir este meu outro tutorial: Letras Embaralhadas? Créditos 100% meus, postem ai, isso é muito importante pra mim (:
    1 ponto
  6. Olá galera primeiramente, eu venho falar que andei pesquisando muito ,e vi varias regras e resolvi fazer uma compilação, uma coisa eu ja digo de cara, nunca ta 100% a regra iptables, sempre fica uma brecha ou outra , um ataque bem planejado nao a dedicado que aguente,sim ate softlayer cai,servidores de tibia global etc,bom enfim nao vo ensinar como derrubar servidores, mais vo mostrar como se prevenir internamente,(externamente) algumas regras e so no roteador com gateway isso é avançado quem tem que oferecer e o seu servidor dedicado. bom enfim vamos as regras iptables. primeiro vo comentar sobre um ataque muito chato de conter, o tal syn flood eu posso falar 1001 maneiras de como esse ataque pode ser feito,e como seu firewall jamais vai se defender dele,porem vo apenas por uma linha abaixo que não é solução mais ameniza o problema,e vo falar a vantagem e desvantagem de usar ela. por um dellay no seu servidor exemplo aceitar 1 conexão por segundo. iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p udp -m limit --limit 1/s -j ACCEPT qual a vantagem de usar essa regra? se protege até de ip spoof e grandes inundação. qual a desvantagem? se alguem realizar o ataque quem ta online no seu servidor(jogo) vai permanecer mais quem for tentar fazer login nao vai conseguir, pode até conseguir mais vai ser mais dificil e o site provavelmente fica fora do ar quando o cara realizar o ataque, porem ao usar essa regra e bom ter o site em hospedagem. não importa se você tem muita memoria ou processador banda entre outros,os recursos nao são infinitos,uma hora vai acabar e seu computador vai travar, quanto mais banda sua rede tiver OTIMO mais dados entra pra travar seu processador/memoria, e quanto mais memoria/processador mais connections seu servidor vai aceitar ou seja é uma questão que nunca ta 100% seguro. regras arp spoof/ip spoof são bem planejada se baseia em clonar ips falsos por tanto nao adianta limitar numero de conexão por ip, pois ela gera milhares de ips falsos e envia a connection a maquina acredite 1 so maquina atacando um servidor dedicado com tecnica arp spoof/ip spoofing bem planejado derruba um softlayer. a então como resolver? e como eu falei nunca ta 100%, mais existe servidores gateway e regras a ser aplicadas abaixo vo por algumas regras iptables compiladas por eu mesmo. regra recomendada por min iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p udp -m limit --limit 1/s -j ACCEPT echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all echo 1 > /proc/sys/net/ipv4/tcp_syncookies iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $i; done iptables -A FORWARD -p tcp --syn --dport 22 -m limit --limit 1/s -j ACCEPT iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 1 -j REJECT end regra bruta iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p udp -m limit --limit 1/s -j ACCEPT echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all echo 1 > /proc/sys/net/ipv4/tcp_syncookies iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 3 -j REJECT end regra forte iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST -m limit --limit 1/s -j ACCEPT echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all echo 1 > /proc/sys/net/ipv4/tcp_syncookies iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT end regra itermediaria echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN iptables -N syn_flood iptables -A INPUT -p tcp --syn -j syn_flood iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN iptables -A syn_flood -j DROP iptables -A INPUT -p tcp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP iptables -A INPUT -p udp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $i; done echo 1 > /proc/sys/net/ipv4/tcp_syncookies iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT end (essa regra abaixo e pra bloquear ip spoofing no momento por tanto nao adianta aplicar ela, por exemplo se tu sabe que o cara ta usando a classe ips que começa com 60 ou 50 se bloqueia essa classe e o ataque para,eu recomendo bloquear as seguintes classes assim seu servidor nao vai ser atacado por outro servidor. pois hackers de verdade geralmente usa servidor pra atacar servidor com scripts e as vezes varios servidor e as classes abaixo e de servidores mais pode bloquear algumas redes privadas tambem. iptables -A ext-int -s 127.0.0.0/8 -j DROP iptables -A ext-int -s 172.16.0.0/16 -j DROP iptables -A ext-int -s 192.168.0.0/24 -j DROP iptables -A INPUT -s 0.0.0.0/7 -j DROP iptables -A INPUT -s 2.0.0.0/8 -j DROP iptables -A INPUT -s 5.0.0.0/8 -j DROP iptables -A INPUT -s 7.0.0.0/8 -j DROP iptables -A INPUT -s 10.0.0.0/8 -j DROP iptables -A INPUT -s 23.0.0.0/8 -j DROP iptables -A INPUT -s 27.0.0.0/8 -j DROP iptables -A INPUT -s 31.0.0.0/8 -j DROP iptables -A INPUT -s 36.0.0.0/7 -j DROP iptables -A INPUT -s 39.0.0.0/8 -j DROP iptables -A INPUT -s 42.0.0.0/8 -j DROP iptables -A INPUT -s 49.0.0.0/8 -j DROP iptables -A INPUT -s 50.0.0.0/8 -j DROP iptables -A INPUT -s 77.0.0.0/8 -j DROP iptables -A INPUT -s 78.0.0.0/7 -j DROP regra bloquear classes ips iptables -A ext-int -s 10.0.0.0/8 -j DROP iptables -A ext-int -s 127.0.0.0/8 -j DROP iptables -A ext-int -s 172.16.0.0/16 -j DROP iptables -A ext-int -s 192.168.0.0/24 -j DROP iptables -A INPUT -s 0.0.0.0/7 -j DROP iptables -A INPUT -s 2.0.0.0/8 -j DROP iptables -A INPUT -s 5.0.0.0/8 -j DROP iptables -A INPUT -s 7.0.0.0/8 -j DROP iptables -A INPUT -s 10.0.0.0/8 -j DROP iptables -A INPUT -s 23.0.0.0/8 -j DROP iptables -A INPUT -s 27.0.0.0/8 -j DROP iptables -A INPUT -s 31.0.0.0/8 -j DROP iptables -A INPUT -s 36.0.0.0/7 -j DROP iptables -A INPUT -s 39.0.0.0/8 -j DROP iptables -A INPUT -s 42.0.0.0/8 -j DROP iptables -A INPUT -s 49.0.0.0/8 -j DROP iptables -A INPUT -s 50.0.0.0/8 -j DROP iptables -A INPUT -s 77.0.0.0/8 -j DROP iptables -A INPUT -s 78.0.0.0/7 -j DROP iptables -A INPUT -s 92.0.0.0/6 -j DROP iptables -A INPUT -s 96.0.0.0/4 -j DROP iptables -A INPUT -s 112.0.0.0/5 -j DROP iptables -A INPUT -s 120.0.0.0/8 -j DROP iptables -A INPUT -s 169.254.0.0/16 -j DROP iptables -A INPUT -s 172.16.0.0/12 -j DROP iptables -A INPUT -s 173.0.0.0/8 -j DROP iptables -A INPUT -s 174.0.0.0/7 -j DROP iptables -A INPUT -s 176.0.0.0/5 -j DROP iptables -A INPUT -s 184.0.0.0/6 -j DROP iptables -A INPUT -s 192.0.2.0/24 -j DROP iptables -A INPUT -s 197.0.0.0/8 -j DROP iptables -A INPUT -s 198.18.0.0/15 -j DROP iptables -A INPUT -s 223.0.0.0/8 -j DROP iptables -A INPUT -s 224.0.0.0/3 -j DROP iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT end regra media iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all echo 1 > /proc/sys/net/ipv4/tcp_syncookies end regra anti-brute force no ssh iptables -A FORWARD -p tcp --syn --dport 22 -m limit --limit 1/s -j ACCEPT iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT end regra disconnect invalid iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags ! SYN,RST,ACK,FIN,URG,PSH SYN,RST,ACK,FIN,URG,PSH -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP end regra simples iptables -N conn-flood iptables -I INPUT 1 -p tcp --syn -j conn-flood iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN iptables -A conn-flood -j DROP iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT iptables -A INPUT -p icmp -j DROP end Proteção contra ip spoofing # iptables -A INPUT -s 10.0.0.0/8 -i Interface da NET -j DROP # iptables -A INPUT -s 172.16.0.0/16 -i Interface da NET -j DROP # iptables -A INPUT -s 192.168.0.0/24 -i Interface da NET -j DROP Bom créditos 70% meu(renansmith/kpdo) pelas pesquisas e 30% ao google claro, muitas pesquisas. Vale ressaltar que um ataque bem planejado DDOS, não a nada que segura, o que vai te proteger e os recursos de hardware,e configuração no roteador(gateways) hubs entre outros adicionais de reredicionamentos,e isso é caro acho raro ter servidor de open tibia que tenha isso,e boa parte por ae ta vulneravel e continua sendo vulneravel.
    1 ponto
  7. meubk

    [Globalevents]Lotery System.

    Sistema de loteria feito por min, podendo ter classificação de qntos vão ganhar. Crie um arquivo chamado lotery.lua local premio = { [1] = {item = 2160, count = 60}, [2] = {item = 2165, count = 1} } local configs = { hours = 3, -- quantas em quantas horas, vai acontecer. winners = 3 -- qntos players podem ganhar. } function onThink(interval, lastExecution) local p = getPlayersOnline() local winners = configs.winners if #p < winners then winners = #p end for i = 1, winners do local p = getPlayersOnline() local c, w = #p, #premio local d, e = math.random(c), math.random(w) local playerwin = p[d] doPlayerAddItem(playerwin, premio[e].item, premio[e].count) doBroadcastMessage("[" .. i .. "ST PLACE] Winner: " .. getCreatureName(playerwin) .. ", Reward: " .. premio[e].count .. " " .. getItemNameById(premio[e].item) .. ", Congratulations!") if i == winners then doBroadcastMessage("(Next Lottery in " .. configs.hours .. " hours.)") end doSendMagicEffect(getThingPos(playerwin), 12) end return true end 19:27 [1ST PLACE] Winner: Dante, Reward: 1 stealth ring, Congratulations! 19:27 (Next Lottery in 3 hours.) Tag: <globalevent name="Lotery" interval="10800" event="script" value="lotery.lua"/> O interval é sempre o tantode horas * 3600, exemplo 3 * 3600 = 10800. Configurando premios : local premio = { [1] = {item = 2160, count = 60}, [2] = {item = 2165, count = 1} } é só ir adicionando como em cima, mais o numero do [] , item é o id, e count é o tanto, vai aumentando exemplo : local premio = { [1] = {item = 2160, count = 60}, [2] = {item = 2165, count = 1}, [3] = {item = 2166, count = 1} }
    1 ponto
  8. looktovask

    Cúpula Do Trovão 2.0

    Se sua ambição é destruir seu inimigos e comer seus restos mortais com sucrilhos no café da manhã, esse é seu lugar Venha duelar na Arena Spriter! Resurgida das cinzas a Cúppula do Trovão está devolta, desafie seus amigos, inimigos, ou qualquer maluco ae para um duelo spriter até a morte para desafiar é só postar se no tópico expecificando o tipo de duelo que você vai querer ex: contra qualquer um, ou em team ou se tiverem ideias podem expecificar ela no tópico. Para votar será necessario ter no minimo 50 posts; Votos serão realizados em um tópico separado; O tema do duelo e o prazo para entrega deles será dado pelos juizes; Os sprites devem ser mandandos via mp para min dentro do prazo do duelo; Não nos resposabilizamos por nenhum dano ou morte dos nossos usuarios, sério mesmo; Pó maluco não posta spammeia o tópico ae mano, nois spriters somos da paz. podecrer!
    1 ponto
  9. [Vídeo] Pulando o Tutorial Inicial Banner Inicial Feito por Sherman I Quem gostou, REP+!
    1 ponto
  10. Olá pessoal, queria saber se no PDA Slicer Sem Level o Pokémon do player evolui automaticamente. No PDA Slicer Com Level todos sabem que só evolui se o Pokémon atingir X level e como nesse não tem level fiquei na dúvida, se ele evoluía só por stones msmo ou evoluia como os selvagens do nada.. se o sem level não tiver como evoluir tem como adaptar para o mesmo, sendo que por exp do pokémon ou outra coisa.. exemplo quando o charmander obter X exp ele evolui-se para charmeleon e depois com X exp para charizard e assim sucessivamente para os d+ Pokémon. Obg a todos pela atenção, boa tarde!
    1 ponto
  11. Olá XTibianos, com grande prazer inauguro o canal "XTibia Videos - RarTnE". Nele você encontra tutoriais de mapping, scripts, sprites, entre outras coisas sobre o assunto. Se inscreva-se já ! Lista de ID's: • 1° Tronco: 4037 • 2°Tronco: 4035 • 3° Tronco: 4036 • Lista de galinhos usados: 4041~4067 • Raízes: 4038; 4039; 4040 • Arbustos: 4118; 4120; 4122; 4123 Combinação dos arbustos: Tutorial:
    1 ponto
  12. vai em data\actions\scripts\boost.lua e adiciona ele lá pq não tem exemplo ["Espeon"] = {enigma},
    1 ponto
  13. Ceta de todas as mensagens tem a img > < Duvida Solucionada, topico feixado/movido!
    1 ponto
  14. Abra o layouts.php Procura a seguinte regiao. </a> <a href='index.php?subtopic=team'> <div id='submenu_team' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_team' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Support List</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> </div> </div> Agora após os </div></div> coloque <div id='forum' class='menuitem'> <span onClick=\"MenuItemAction('events')\"> <div class='MenuButton' style='background-image:url(".$layout_name."/images/menu/button-background.gif);'> <div onMouseOver='MouseOverMenuItem(this);' onMouseOut='MouseOutMenuItem(this);'><div class='Button' style='background-image:url(".$layout_name."/images/menu/button-background-over.gif);'></div> <span id='events_Lights' class='Lights'> <div class='light_lu' style='background-image:url(".$layout_name."/images/menu/green-light.gif);'></div> <div class='light_ld' style='background-image:url(".$layout_name."/images/menu/green-light.gif);'></div> <div class='light_ru' style='background-image:url(".$layout_name."/images/menu/green-light.gif);'></div> </span> <div id='events_Icon' class='Icon' style='background-image:url(".$layout_name."/images/menu/icon-events.gif);'></div> <div id='events_Label' class='Label' style='background-image:url(".$layout_name."/images/menu/label-events.gif);'></div> <div id='events_Extend' class='Extend' style='background-image:url(".$layout_name."/images/general/plus.gif);'></div> </div> </div> </span> <div id='events_Submenu' class='Submenu'> <a href='index.php?subtopic=events'> <div id='submenu_events' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_events' class='ActiveSubmenuItemIcon' style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Events</div> <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> </div> </a> </div> </div> Basicamente é isto.
    1 ponto
  15. va em data / creaturescripts / scripts / firstitems.lua ai voce configura
    1 ponto
  16. Slicer

    Auto Msg Por Storage

    nao testei mas.. vai em globalevents/scripts e cria uma arquivo .lua la e cola isso dentro.. depois em globalevents/globalevents.xml cole essa tag la.. <globalevent name="Msg" interval="1000" event="script" value="nome do arquivo.lua"/> qlqr coisa se n ficar a cada 1seg.. mude o '1000' para '1'...
    1 ponto
  17. LuKk44S

    Super Tutorial Pic Editor

    Bom vamos Começar, Iremos Aprender a mexer completamente na PIC do client do seu servidor, Vamos lah Mudando a Imagem Inicial do Client: Mudando a Interface dentro do client no jogo: Leia:
    1 ponto
  18. Deadpool

    [Intermediário] - Caverna De Swamp

    Introdução Venho através deste tutorial ensinar-lhes como criar uma caverna de swamp de um jeito fácil e bonito. 1. Crie o formato da cave, usando os IDs a seguir: * Use a sua criatividade para sair um formato diferente e legal. -> Resultado: 2. Agora crie as bordas do swamp perto das bordas da cave. Lembre-se: nunca as espalhe. Seguem os IDs: -> Ficando deste jeito: 3. Agora, você usará as plantas especificas de pântano (swamp). As distribua corretamente, nunca uma muito perto da outra, coloque cogumelos também. Seguem os IDs: -> Fazendo o que foi-se dito a cima fica deste jeito: 4. Hora de usar os debris; coloque-os pelos cantos e alguns no meio da cave. Não exagere. Seguem os IDs: -> Usando corretamente o debris irá ficas mais ou menos assim: 5. Oho! Estamos quase terminando!!! Neste passo iremos adicionar os tufos e pedras andáveis; coloque tufos grande perto do swamp e os pequenos mais no meio da cave , já as pedras faça o mesmo esquema. Seguem os IDs: -> Ficando assim: http://i51.tinypic.com/6h8bap.png 6. Agora, adicione o chão (ground) da cave. -> YEP!!! Terminamos e o resultado final é: http://i56.tinypic.com/2lk49qu.png http://img38.imagesh...ivisoriaxb0.png Créditos: LeftDead4
    1 ponto
  19. 96736649

    Desbanir Otserv Da Otservlist.

    Seu servidor foi banido na otservlist? não consegue adicionar ele denovo? muito simples... Se você estiver no seu pc. Reinicie Seu moden e depois é só adicionar de novo. Se você estiver No Seu VPS! 1) Logue a conta duc no seu computador 2) abra um servidor (NO SEU COMPUTADOR) 3) Adicione o servidor na otservlist. e volte com sua conta no vps Turorial Feito por min mesmo kkkkkkkkkk Se Gostou, Fou Ultil? Da REP+duvidas? pergunte aqui, não irei responder mensagem priovada.
    1 ponto
  20. vai em file/preferences/interface Em Doodad Pallet Style e RAW Doodad Pallet Style de large mude para Listbox with Icons. salve e teste.
    1 ponto
  21. rolissobomb

    Ícone Para Aplicativo

    Boa Noite EdMignari,fiz uma imagem não sei se é bem assim que você ta procurando +ou- foi assim a ideia que eu tive espero que goste Acho que fico grandinha mais se você curti só diminuir
    1 ponto
  22. 20cm

    [Actions] Chest System

    http://www.xtibia.com/forum/topic/159008-simplificando-quests/ hehe, mas o meu não tinha a capacidade masok
    1 ponto
  23. é pq n tem a tabela instalada na db executa isso na sua db: ALTER TABLE `accounts` ADD `premium_points` INT( 11 ) NOT NULL DEFAULT '0';
    1 ponto
  24. Procure por: Config.lua /*List of cities, declare by using city ID and name eg. 2=>"Eternia City" etc.*/ $config['cities'] = array(1=>"Pallet Town") para adicionar outras cidades faiz isso: (1=>"Pallet Town", 2=> "Cerulean City", 3=> "Vermilion City",4=>"NOME DA CITY"); e vai indo..
    1 ponto
  25. Troca isso: setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-1) doSendAnimatedText(getThingPos(cid), 'Rep-', 144) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu 1 ponto de reputação por matar "..getCreatureName(target)..".") Por isso: setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar "..getCreatureName(target)..".")
    1 ponto
  26. Um pai e mãe que recebem um salário mínimo, tendo 2 filhos. os dois juntos recebem 1,2k por mês, e o mínimo para se pagar todas as necessidades do mês é 2300. Ou seja, estão sempre em dívida com alguma coisa. Agora como é que eles vão pagar para que os filhos tenham alguma instrução digna de competir com alunos do ensino privado? Ah é, tem escolas e cursos públicos. Mas também tem custos de transporte, alimentação e as vezes até alojamento. Digo isso da forma mais positiva possível, não estou levando em conta aqueles que tem que trabalhar para arcar com os estudos. Agora me diz, o pobre e o rico começam do mesmo ponto a corrida para o sucesso profissional? 1 brasileiro sobe para a classe média-alta por dia, em compensação nascem 7000 e boa parte abaixo da linha da pobreza. Dizer que as oportunidades são iguais e basta esforço pra subir na vida, demonstra uma enorme ignorância no assunto.
    1 ponto
  27. Olá XTibianos... Hoje vim postar uma city 100% minha, compatível com Centurion V3, porém, com alguns pequenos ajustes, a city fica compátivel com o PDA. Vou lembrá-los que é somente uma city com a área de caça incompleta (10%), porém a city está bem detalhada e agradável... Espero que gostem. Imagem do CP: Imagem Geral: Download (4Shared): http://www.4shared.c...gital_City.html Scan: Se alguém puder passar e scan e postar eu fico muito agradecimo. Logo, logo trago atualizações! Aguardo comentários... Até mais XTibianos ! ! !
    1 ponto
  28. Stigal

    [Pokemon] Servidor Stigal 3.0 [Pda 1.5]

    Obrigado, espero que tenhao gostado. Agora saiu o 1.7 do slicer, com meu mapa e arrumadinho e perfeito... vejão oque achao '-'
    1 ponto
  29. 1579091

    Script Templo

    Em data/movements/scripts, crie um arquivo escrito tptown.lua e coloque isso dentro: Depois em Movements.xml coloque isso: Não se esqueça de modificar o ID do teleport!!
    1 ponto
  30. Scizorgame

    Pokemon Ex 2.0

    Servidor Contém: Order 100%(Dig,Ride,Fly,Cut,RockSmash,Flash,Blink) Teleport 100% Surf 100% 9 Pokemons Shinys (Charizard,Rattata,Magikarp,Paras,Oddish,Zubat,EliteLee,EliteChan,Gyarados) Control Mind 90% (se você controlar um pokemon shiny ele vira normal) !cd [34/160] NPC que compra pokemon 100% Mapa uns 80-90% Svke 7 Quest (Pokeballs<Venom<Cerulean<Pewter<RockTunnel<Gengar<Charizard) Gym System BETA(So tem o Brock nao ganha nada depois de derrotar ele e depois que se ganha dele ele não fala mais com você , você pode editar mais e usar eles em evento quem ganhar receber um premio do GM...) 10 Cidades m1-m12(90%) Loot,Catch,Corpses(99%) Evolução(100%) Rare Candy Box1-4 Max 6 pokemons o resto vai DP Ja esta editado no items.otb , items.xml , portrait e corpse de 35 shinys em outros lugares vai se so preciso ageitar xml do monstro , moves , o lv necessario , a chance de catch o life e quanto ganha de life por level(cons) Download Server: http://www.4shared.com/file/q7RjOddX/Pokemon_EX_20.html Download Cliente: http://www.4shared.com/file/laL0J39V/Pokemon_EX_Cliente_020611.html
    1 ponto
  31. Quilante

    Tibia Harry Potter - Projeto Xtibia

    A que pena, está até interessado onde isso ia dar.. =/ Eu apoio o projeto ok galera, mesmo sabendo que 99% dos projetos aqui não saem do papel. A unica coisa que eu peço é que botem os creditos para quem merece. o THP Quilante foi o primeiro server a ficar on line para valer sobre o harry potter, TODAS as sprites modificadas são do QUILANTE, exceto a sprite do "CENTAURO" que essa eu baixei no google mesmo pq estava sem tempo para mexer nela, mas assim que possivel vamos altera-la. Outra coisa, se for montar um server, por favor CRIE ideias novas, é de ideias novas que se conquista o povo !! Não copiem.. as ideias.. INOVE !!! Sobre minhas sprites estarem rodando por ai, nao tenho muito problema com isso, afinal a cip nao liga para as dela, isso já é um sinal que SPRITES nao dizem se um server é bom ou nao.. mas a JOGABILIDADE. Eu posto pouco aqui no xtibia, pq pouca gente aqui elogia um trabalho que deu certo. Mas ainda temos alguns que apoiam.. O THP Quilante está no começo, nao ta nem 10% pronto ainda, vai mudar muito, então quem tentar COPIAR sempre vai estar correndo contra o tempo, mas a parte boa é que vai divulgar o server para mim =) Nao desista.. se eu tivesse desistido nao teria montando nem o TibiaGTA. Abraço.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...