Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 04/09/11 em todas áreas

  1. Mophus

    Druid Outfits Quest On Rook

    Druid Outfits Quest on Rook O mesmo addon ganhado em Mainland. Recompensa: Addon de pata para o Druid Outfits - Localização: Tom Level requerido: 0 Premium requerida: Sim Esteja preparado para enfrentar: Wolfs e Bears Equipamento necessário: 50 Bear Paws 50 Wolf Paws Método: Todos os itens acima podem ser pegos antes de começar a quest. Para ganhar tempo, é melhor pegar todos os itens antes de ir falar com o NPC. Vá para a loja de Tom e o pergunte sobre "addon". Ela vai te falar pra dar para ele 50 Bear Paws e 50 Wolf Paws e ele vai colocá-los em você. Dê a ele os itens, e ele lhe dará o addon. Diálogos com o NPC: Créditos: Mophus l TibiaWikiBr
    2 pontos
  2. • Snowz Thyranic 3.1 - Especial Edition (8.60) • Servidor feito por luisfe23 e Doidin. Fala galera estou aqui para apresentar o novo Snowz Thyranic, eu e o luisfe23 estamos trabalhando a muito tempo neste servidor e muitas novidades surgirão, este servidor é baseado no mapa Thyrania e contém um RPG super emocionante. Então, tá esperando o que? Confira logo! • 8 Cidades: ├ Rookgaard ├ Thyran ├ Murnia ├ Saaha ├ Icya ├ Venga ├ Mandrin └ Talas • Conta do GOD: ├ Account: god └ Senha: god Ok, vamos logo para as atualizações! • Snowz Thyranic Versão 1: • Snowz Thyranic Versão 1.1: • Snowz Thyranic Versão 2: • Snowz Thyranic Versão 2.1: • Snowz Thyranic Versão 3.0: • Snowz Thyranic Versão 3.1 (Especial Edition): ├ Modificações no Distro, ele está completamente estável! ├ Modificações no mapa, bugs foram removidos! ├ Modificações em vários NPC's, eles estão bem mais realistas! ├ Todos os NPC's de Addons foram removidos e substituidos por apenas 1 que fica nas redondezas de Thyran. ├ A Demon Oak Quest está funcionando perfeitamente. ├ A Dijin Quest agora está funcionando perfeitamente. ├ A Black Knight Quest está funcionando perfeitamente. ├ Todos os bugs que davam para fazer dinheiro foram removidos. ├ Adicionado NPC "Padre" em Thyran, ele realiza casamentos. ├ Agora as bless custam apenas 50k. ├ Arrumado as Quests no Quest Log. └ Entre várias outras mudanças! • Algumas Imagens: :forward: Download do Snowz Thyranic 3.1 (8.60) :forward: Scan do Snowz Thyranic 3.1 (8.60) • Créditos: Achou Bugs? Reporte !
    1 ponto
  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. Vodkart

    Ant-Exit

    Creditos: Maestrial(60%),MatheusMkalo(20%) & Vodkart(20%) pelas correção de Bugs. Explicaçao: Quando o player pisa no tile do treiner é mandando uma mensagem dizendo que se ele nao se movimentar em alguns minutos ele será mandado para o templo e será kikado automaticamente. MoveEvent/Scripts autokick.lua events1,events2= {},{}local config = {tempo = 15,storage = 20000 }function onStepIn(cid, item, frompos, topos)if isPlayer(cid) and getPlayerStorageValue(cid, config.storage) <= 0 thendoPlayerSendTextMessage(cid, 22, "[Trainer]: Movimente-se a cada " .. config.tempo .. " minutos, caso contrário, seu char será levado ao templo.")setPlayerStorageValue(cid, config.storage, 1)events1[getPlayerGUID(cid)] = addEvent(setPlayerStorageValue, config.tempo*60*1000-1000, cid, config.storage, -1)events2[getPlayerGUID(cid)] = addEvent(doTeleportThing, config.tempo*60*1000-500, cid, getTownTemplePosition(getPlayerTown(cid)))endreturn trueendfunction onStepOut(cid, item, frompos, topos)if isPlayer(cid) and getPlayerStorageValue(cid, config.storage) >= 1 thensetPlayerStorageValue(cid, config.storage, -1)doPlayerSendTextMessage(cid, 23, "System kick off!")stopEvent(events1[getPlayerGUID(cid)])stopEvent(events2[getPlayerGUID(cid)])endreturn trueend movements.xml <movevent type="StepIn" actionid="25000" event="script" value="autokick.lua"/><movevent type="StepOut" actionid="25000" event="script" value="autokick.lua"/> Agora abra o MAP EDITOR e coloque no TILE dos trainers o action id 25000 Seu sistema anti Exit está pronto.[/i]
    1 ponto
  5. Syn IP Changer [7.6 - 8.7x] Imagem By Luan Henrique: Versões Suportadas: 7.6 até 8.7x! Créditos: Syntax Talaturen de IP Changer Talaturen IP's Changer é uma aplicação para substituir o host na tibiaclient. Ele é criado por Talaturen (meu amigo) com a ajuda do Kibe (eu) com a edição de memória. É escrito em C + + usando a biblioteca GUI Qt 4.7. É open source e licenciado sob a licença GNU GPL (General Public License) v2. Deve ser executado em sistemas Windows e * nix. Ele trabalha com o protocolo de 7,6, 7,8, 7,92, 8,0, 8,1, 8,11, 8,2, 8,21, 8,22, 8,3, 8,31, 8,4, 8,41, 8,42, 8,5, 8,52, 8,54, 8,55, 8,57, 8,61, 8,62 e 8,7. Informações sobre folhas de estilo: Qt 4.7: Qt Style Sheets Versão Atual: 3.7 ChangeLog (3.7): * 8,7 suporte ao cliente. Download: Attached Files * File Type: < Link removido - Acusação de vírus aparentemente inofensivo > Se não funcionar : http://otland.net/at...-ip-changer.exe Se gostou porfavor REP ++ Se você não posta é porque você é um mal agradecido Vlw xtibia , se for area errada Mova ! EDIT@ Scan : Here !
    1 ponto
  6. MaxLinux

    [Creaturescript] Frags System

    Bom galera esté o primeiro Script que posto. Percebi que na Internet é muito complicado de achar algum Script Frag Counter funcional e mais impossível ainda com comando !rank. Trago a você meus Scripts: Frag Counter ganhando Determinada Experiencia! Look Frags, dê look e veja quantos ele matou! Agora o Sistema de !rank frags, veja quem é o maior assassino de seu Servidor! E agora para o fim do Tópico, comando !kills Bom, espero que tenham gostado. Para aqueles que gostaram muito, por favor não deixar de dar seu REP+ que ficarei muito agradecido. Todos os Scripts, alguns foram apenas editados e alguns foram criados por mim. Created By Sciter. Created By Max Linux. OBS SOU OS DOIS, É QUE USO OS DOIS NICKS.
    1 ponto
  7. johann07

    Teleports Falantes Modo Facil

    Não sei se ja tem aqui no server esse sistema do RookWar mas vo colocar!! va em data\globalevents\scripts e crie um arquivo.lua e renomeie para teleports.lua dentro coloque: va em globalevents.xml e adicione
    1 ponto
  8. Subwat

    Fight System 0.0.2

    •••Bom Pessoal Já postei a versão anterior a alguns meses desse script que eu criei.. o vodkart deu uma modificada no script (melhorou o script),e depois trabalhei um pouco no script que ele melhorou e aqui está o resultado "Fight System 0.0.2". •••Vá em talkactions/Scripts/ crie Um arquivo Chamado FIGHTSYSTEM.LUA cole isso dentro: --Fight System by Subwat 0.0.2-- function onSay(cid, words, param) config = { level1= 10, -- level necessario do player 1 pra usar o fight system. level2= 10, -- level necessario do player 2 pra usar o fight system. pid=getPlayerGUID(cid), -- não mecha premium = "yes", -- se precisa ser premium account ("yes" or "no") redskull="yes", -- players com red skull podem usar o fight system? ("yes" or "no"). prot="no", -- players precisam estar em protection zone pra usar o fight system? ("yes" or "no"). bat="no", --players precisam estar sem fight pra huntar? ("yes" or "no"). Posplayer1 = {x=288, y=433, z=6}, -- para onde o jogador que deu fight sera levado Posplayer2 = {x=295, y=433, z=6}, -- para onde o jogador que aceitou fight sera levado RemoveItem = "yes", -- se ira remover o item ("yes" or "no") item = 2160, -- id do item storage = 9696 } if words == '!fight' or param == "/fight" then local player = getPlayerByName(param) local pid = getPlayerByNameWildcard(param) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerPopupFYI(cid, "Este Jogador Não está Online Ou Não existe.") return TRUE end if(config.redskull == "no") and (getCreatureSkullType(cid) == 4) then doPlayerPopupFYI(cid,"apenas player sem red skull podem Usar Fight System.") elseif (getPlayerLevel(cid) < config.level1) then doPlayerPopupFYI(cid,"você precisa ter level " .. config.level1 .. " pra usar o fight system.") elseif (getPlayerLevel(player) < config.level2 ) then doPlayerPopupFYI(cid,"o jogador não tem level " .. config.level2 .. " para vc dar fight system.") elseif(config.prot == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerPopupFYI(cid,"você precisa estar em protection zone pra usar o fight system.") elseif(config.bat == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerPopupFYI(cid,"você precisa estar sem battler pra usar o fight system.") elseif(config.redskull == "no") and (getCreatureSkullType(player) == 4) then doPlayerPopupFYI(cid,"o outro player precisa estar sem red skull usar o fight system.") elseif(config.prot == "yes") and (getTilePzInfo(getCreaturePosition(player)) == FALSE) then doPlayerPopupFYI(cid,"o outro player precisa estar em protection zone pra usar o fight system.") elseif(config.bat == "yes") and (getCreatureCondition(player, CONDITION_INFIGHT) == TRUE) then doPlayerPopupFYI(cid,"o outro player precisa estar sem battler pra usar o fight system.") elseif(config.premium == "yes") and (not isPremium(cid)) then doPlayerPopupFYI(cid, "apenas players com premium account podem dar fight.") elseif(config.RemoveItem == "yes") and (doPlayerRemoveItem(cid, config.item, 1) == FALSE) then doPlayerPopupFYI(cid, "Desculpe,voce não tem 1 " .. getItemNameById(config.item) .. " para dar fight.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) elseif isPlayer(player) then doPlayerPopupFYI(cid,"Voce acaba de Desafiar o Player chamado " .. getPlayerName(player) .." espere ele aceitar.") doPlayerPopupFYI(player,getCreatureName(cid) .. ' Acaba De Dar Fight em Você,o pvp entre os dois não resultará em skulls deseja aceitar? diga !aceitar se não diga !recusar.') setPlayerStorageValue(player, config.storage, 1) doTeleportThing(cid,config.Posplayer1) doCreatureSetSkullType(cid, 2) end return TRUE end if words == '!aceitar' or param == "!accept" then if getPlayerStorageValue(cid,config.storage) >= 1 then doPlayerPopupFYI(cid, "o jogador aceito,começara o DESAFIO!.") setPlayerStorageValue(cid, config.storage, -1) doCreatureSetSkullType(cid, 2) doTeleportThing(cid,config.Posplayer2) doTeleportThing(cid,config.Posplayer1) else doPlayerPopupFYI(cid, "Desculpe,voce não foi envitado para a Luta.") end return TRUE end if words == '!recusar' or param == "!recuse" then if getPlayerStorageValue(cid,config.storage) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "você recusou o a Luta.") setPlayerStorageValue(cid, config.storage, -1) end return TRUE end return TRUE end •••Cole está tag em talkactions.xml: <talkaction words="!fight;!aceitar;!recusar;/recuse;/fight" event="script" value="FIGHTSYSTEM.lua"/> •••COMO FUNCIONA? digite !fight Nome do jogador há desafiar. e o jogador desafiado receberá a proposta de luta e deverá digitar !aceitar para aceitar a luta ou !recusar para cancelar a luta. •••OBS: você deverá configurar as posições aonde os players seram teleportados para a luta ache está tag no inicio do script e modifique Posplayer1 = {x=288, y=433, z=6}, -- para onde o jogador que deu fight sera levado Posplayer2 = {x=295, y=433, z=6}, -- para onde o jogador que aceitou fight sera levado . créditos: Subwat Vodkart TESTEM E COMENTEM VLW ATT
    1 ponto
  9. Secular

    [Tibia News] Flash Update

    Para Você Que Faz Tempo Que Não Vê As Noticias Do Tibia.com De Uma Olhada No Update Esperado Que Promete Mais Personalização Para Seu Tibia, Olhe: Noticias Direta Do Tibia.com: :construction: :construction: Acha Que Ira Ser Bom? Vote! Os meses se passaram desde o último cliente Flash teaser foi publicado. Entretanto, todo o projeto se desenvolveu muito bem. O que temos chamado de "Lil 'altivo" ultimamente agora tem suas características polido e estava vestida com uma roupa novinho em folha também. Este pequeno minúsculo tem realmente crescido, você não acha? Vamos fazer uma breve recapitulação. Você se lembra que a característica mais impressionante do cliente Flash Tibia será? Personalização, certo! Temos trabalhado duro para dar-lhe um layout bem flexível. Você quer ter uma barra lateral à direita, dois na lateral esquerda ou não, afinal? Cabe a você. Você quer se livrar do minimap superior direita e colocá-lo na parte inferior esquerda da tela? Claro, porque não? Vá em frente! Usando o cliente Flash você também será capaz de decidir-se se, onde e em que cor você deseja obter a maioria das mensagens exibidas no jogo. Você pode atribuir teclas de atalho em qualquer lugar no seu teclado, andar com WASD, definir conjuntos hotkey diferente e muito mais. Sinta-se livre para o cliente personalizar as suas necessidades pessoais. Isso é o que faz com que o cliente Tibia Flash tão poderoso. Quando você clicar na imagem abaixo você notará que você não tem de aproveitar todo o potencial do cliente Flash, se você não quiser. Como você pode ver na imagem à esquerda, você pode simplesmente ir jogar Tibia do jeito que é usado para furando as opções padrão do cliente. Seu cliente de Tibia será apenas olhar e sentir melhor depois. E sempre que você sentir que o momento é propício para uma experiência de jogo de fantasia, apenas expandir seus laterais e barras de ação e rock! Então, depois de ter visto isto, qual é a sua posição sobre o próximo cliente Flash Tibia? Vote O Que Acha!
    1 ponto
  10. vinny160600

    Rme(Remere's Map Editor)

    alguen ajuda ae bug no remere's Map editor =/ veja o video http://www.youtube.com/watch?v=XJgEDf6mcE0 ajuda REP+ pra quen ajuda obrigado deis de já!!! bug é foda
    1 ponto
  11. meubk

    (Pedido) Comando !go

    Bom tá ai se for pra mudar a outflit tbem vc mi avisa. function getMembersGuildOnline(GuildName) -- function by xxotservxx tb = {} for _, on in pairs(getPlayersOnline()) do if getPlayerGuildName(on) == GuildName then table.insert(tb, on) end end return tb end function getGuildLeaderName(GuildName) -- function by vodkart local leader = db.getResult("SELECT `players`.`name` FROM `players` WHERE `players`.`id` = (SELECT `guilds`.`ownerid` FROM `guilds` WHERE `guilds`.`name` = ".. db.escapeString(GuildName) .. ")") if(leader:getID() ~= -1) then return leader:getDataString("name") end return nil end function onSay(cid) g = getMembersGuildOnline(getPlayerGuildName(cid)) if #g ~= 0 then if getGuildLeaderName(getPlayerGuildName(cid)) == getCreatureName(cid) then o = getCreatureOutfit(cid) for _,mem in pairs(g) do c = getCreatureOutfit(mem) doCreatureChangeOutfit(mem, { lookType = c.lookType, lookHead = o.lookHead, lookBody = o.lookBody, lookLegs = o.lookLegs, lookFeet = o.lookFeet, lookAddons = c.lookAddons }) doSendMagicEffect(getThingPos(mem), 24) end else doPlayerSendCancel(cid, "You not is Guild Leader.") end else doPlayerSendCancel(cid, "You dont have any guild.") end return true end tag: talkaction words="!go" event="script" value="NOME_DO_ARQUIVO.lua"/> qualquer erro mi avisa pq ñ testei.
    1 ponto
  12. Demonbholder

    Raio Na Transforms [Wodbo]

    Certo, reportarei para mover. Até mais. OBS: Este script deve ser colocado em data/creaturescripts/scripts.
    1 ponto
  13. Cara Este Tutorial Vai Te Ensinar a Fazer Isso: Criando Baú De Quest Ajudei? REP+
    1 ponto
  14. felzan

    Erro Ao Compilar

    Consegui arrumar, acho que era algun arquivo; mas não sei como exatamente. Apenas usei outro DEV C++ e botei outros arquivo dentro, quase 300mb +- REP + pra mim? kkkkkkkkkkk Pode fechar.
    1 ponto
  15. Fernandinand

    Peça Me

    Pronto, terminei seus Avatares e sua FanBar. Aqui está. Observação: Ninguém NUNCA deve usar minhas Signs e Avatares que eu lhes apresentar, sem antes ter minha autorização. Somente o FezZinN tem essa permissão para usar este Avatar, nada mais ele tem permissão. Sign Avatar One Avatar Two Avatar Three Avatar Four Observação: Ninguém NUNCA deve usar minhas Signs e Avatares que eu lhes apresentar, sem antes ter minha autorização. Somente o FezZinN tem essa permissão para usar este Avatar, nada mais ele tem permissão. Pronto rapaz, ai está sua FanBar e sua Avatar, use como quiser. Observação: Você pode deixar qualquer um usar o FanBar, para dizer que ele é seu fã, etc. Mas somente o FanBar, o Avatar além de não puderem usar, tem seu nome.
    1 ponto
  16. Não deu? Tem certeza? Acho que de repente tu não ta sabendo configurar, vou explica usando a quote. Azul: Coloque entre o colchete o id da vocação. Vermelho: Ai é o efeito desejado. Obs: Pode adicionar e remover vocações ali desde que siga a mesma estrutura. Eu testei e funcionou aqui.
    1 ponto
  17. o Cara ali disse que aconteceu com ele e ate disse oque era para vc fazer. Se isso nao funcionou o melhor conselho que posso lhe dar é um: Baixe outro OT Lamento, Abraços o Cara ali disse que aconteceu com ele e ate disse oque era para vc fazer. Se isso nao funcionou o melhor conselho que posso lhe dar é um: Baixe outro OT Lamento, Abraços
    1 ponto
  18. dustot

    Exp Amulet 90%

    Vodkart veja isto: Quando uso o amuleto : 13:46 Your extra experience rate is now: 3. It will last for 5 hours. Quando logo e entro na msm hr : 13:46 Your extra experience rate is now: 3. It will last for 4 hours. Ou seja, ele ta comendo 1 hr de exp já direto quando vc loga. Dá pra fazer algo? Ah e tu arrumou pra contar os minutos tmb? Obrigado
    1 ponto
  19. Vodkart

    Getguildleadername(Guildname)

    é uma função que pega o nome do leader da guild,dá para fazer algo interessante como adicionar itens ao lider da guild depois de completar um "war",etc adicionando: 050-function function getGuildLeaderName(GuildName) -- function by vodkart local leader = db.getResult("SELECT `players`.`name` FROM `players` WHERE `players`.`id` = (SELECT `guilds`.`ownerid` FROM `guilds` WHERE `guilds`.`name` = ".. db.escapeString(GuildName) .. ")") if(leader:getID() ~= -1) then return leader:getDataString("name") end return nil end exemplo de uso em talkactions: exemplo em actions: FLW
    1 ponto
  20. Redspark

    [Duvida] Como Coloco Potions Infinita

    Tem um método: vai em actions/liquids/ e abra o arquivo "potions" em bloco de notas. (se não tiver esse arquivo desista) Procure em uma das linhas por essa parte: [8704] = {empty = 7636 copie o ID que está no início no que está depois de Empty = ficará assim: [8704] = {empty = 8704 depois faça isso com todas as outras linhas! se funfa da mais + rep
    1 ponto
  21. satan666

    Script De Remover Pedra

    a tag xml pode ser o que for tanto aid quanto uid desde que seja valida pra sua versão e que adicione na alavanca pelo mapper editor o uid ou aid usado.
    1 ponto
  22. priextix666

    Criando Baú De Quest

    ausheuahueh sacanagem kkk '
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...