Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/07/12 em %
-
[Oficial] Refugia (8.60) 26/08/2012 0.0.8
felipecaldas199 reagiu a Subwat por um tópico no fórum
Bom pessoal,venho trazer-lhes hoje um trabalho,de meses de mim e de daniel devotti,fizemos um servidor Igual o refugia. e agora venho compartilhar com vocês. SENHA DO GOD account:god senha:GOD Spells Knights :ezzori,ezzori gran. Magos :exevo gran frigo,exevo gran mas mort,exevo gran mas ghost,aurora. Paladinos :exevo gran mas mort,aurora. Sistemas Pet system com mais de 50 pets,Incluindo Pets Donates que você pode vender em seu site! Sistemas de arena duels Para teams ou duplas no segundo andar no templo! Sistema de VIP Coins e (VIP) no nome Igual do Refugia Original! TASK SYSTEM! Sistema De Reborn Monster! adicionado 16/09/11 Ao matar um monstro ele tem 50% de chance de renascer igual no refugia! Items Mais de 100 items editados únicos do servidor! items free bons,quests com items editados e etc. Quests Anihilator demon helmet Aqua quest vermilion quest Pits of inferno Lord vampire quest refugia legs multi Quest dentre várias outras. Screen Shots Trainer's Templo Free Teleports Vip Teleports Free Teleportes para cidades Segundo andar do templo Montanha City Vip City Free NPC's DOWNLOAD: http://adf.ly/IGQ9S http://adf.ly/IGQDJ (SCAN DESATUALIZADO) Créditos Subwat (Gean Riot) Refugia.com.br daniel freire devotti curtiu REP+ Este tópico recebeu destaque em nosso portal!1 ponto -
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: Vodkart1 ponto
-
Crystal Server Olá Venho lhes o Crystal Server. Primeiramente gostaria de agradecer alguns amigos me me convidaram para ser ativo neste forum. E gostaria também que o pessoal valoriza-se meu trabalho asism que eleé valoriado nos outros forum. Aviso O Mapa é YurOTs 8.0 de gelo, editado por GOD Bom, e atualizado para 8.6 por Toty. Creditos ao mapa para Yurez (criador do mapa) e GOD Bon por edita-lo. Conta do GOD é 222222/password M = Modificado D = Deletado A = Adicionado [ File changes: [ 0.2 A = data/actions/scripts/other/blessings.lua A = data/talkactions/scripts/war.lua A = data/talkactions/scripts/balance.lua A = data/creaturescripts/scripts/thankyou.lua A = data/lib/013-math.lua A = data/lib/101-shortcut.lua A = data/npc/lib/_npcsystem.lua A = data/npc/oracle.xml M = OTServ.exe M = config.lua M = data/actions/scripts/liquids/potions.lua M = data/actions/scripts/other/teleport.lua M = data/actionsscripts/tools/skinning.lua M = data/lib/000-constant.lua M = data/lib/002-wait.lua M = data/lib/011-string.lua M = data/lib/012-table.lua M = data/lib/100-compat.lua M = data/lib/050-function.lua M = data/creaturescripts/scripts/login.lua M = data/creaturescripts/scripts/idle.lua M = data/talkactions/talkactions.xml M = data/creaturescripts/creaturescripts.xml M = data/creaturescripts/scripts/login.lua M = data/globalevents/scripts/init.lua M = data/globalevents/scripts/save.lua M = data/actions/actions.xml M = data/npc/Soya.xml M = data/npc/lib/npc.lua M = data/npc/lib/npcsystem/keywordhandler.lua M = data/npc/lib/npcsystem/modules.lua M = data/npc/lib/npcsystem/npchandler.lua M = data/npc/lib/npcsystem/queue.lua M = data/npc/scripts/bless.lua M = data/npc/scripts/oracle.lua M = data/npc/scripts/runes.lua M = data/items/items.xml M = data/movements/scripts/tiles.lua M = data/movements/movements.xml M = data/weapowns/weapons.xml M = data/monster/Misc/silver rabbit.xml D = data/actions/scripts/other/ceremonialankh.lua ] ] [ Charges [ 0.2 Adicionado support para 9.42 (Tryller, Elf) Adicionado npc oracle (TFS) Adicionado clientid para vocations.xml (Toty, TFS) Adicionado action blessing (Tryller, TFS) Atualizado actions.xml (Tryller, TFS) Atualizado init.lua (Toty, TFS) Atualizado items.xml (Toty, TFS) Atualizado tiles.lua e movements.xml (Toty, TFS) Deletada action of ceremonialank (Tryller, TFS) Deletadas outras configs do account manager no config.lua (minPasswordLength, minAccountNameLength, maxAccountNameLength, newCharacterMinNameLength, newCharacterMaxNameLength Corrigido obsidian knife (Tryller) Corrigido problemas com npcs trade (Tryller, TFS) Corrigido idle script (Toty, TFS) Corrigido npc de bless (Toty) Corrigido !frags talkaction (TFS) Corrigido server save (Toty, TFS) Corrigido armas de distância (malkavianz, darkinho) Corrigido guild bug (Big Vamp) Corrigido npcs Eryn & Soya (Tryller, malkavianz) Corrigido Silver Rabbit (malkavianz) ] ] Downloads Download Server DLL Download dll files Source Download source Doações? Se quiser fazer uma doação visite!1 ponto
-
Olá amigos Xtibianos. Se seu servidor foi apagado da lista, aqui você encontrará um ou mais motivos para a remoção do tópico. Tópico mal feito, bagunçado ou de PÉSSIMA apresentação. Download ou scan inválidos por mais de 1 mês. Downloads com vírus. Scans falsos. Servidores repetidos sem mudanças GRANDE ou NOTÁVEL Dois ou mais servidores iguais. Double-post. Não contendo downloads . etc Sujeito a alerta. -- Alguma duvida do que foi dito no post, favor postar aqui: http://www.xtibia.co...29-atendimento/ Leia também: http://www.xtibia.co...lo-de-postagem/ Equipe Xtibia agradece.1 ponto
-
Tutorial E Dowload Fasendo Casa No Rme (Extremeots)
ewertonsilva157 reagiu a extremeots por um tópico no fórum
Nome Das Musicas: musica 01:89ers - go go go go ti-mo remix musica 02:Baby Alice - Pina Colada (D-Base Summer 2011 Remix) Espero Que Gostem! Dowload Do mapa http://www.4shared.c...uQk8A/Casa.html Scan: http://www.virustotal.com/file-scan/compact.html?id=903393cc736ce98fb39f29688feaaf96343f7d61a42b3e9cdd7dcb13fba7aaeb-13259798091 ponto -
[Tutorial] Aprendendo A Modificar Seu Website (Gesior)
Bluetooth reagiu a athermillard por um tópico no fórum
Bem durante o tópico estarei ensinado vocês a modificar o seu site a gosto. Para que fique de acordo como você gostaria. Subtítulos: Criando e modificando tabelas Escrevendo com acentos Adicionando imagens Criando botões Pegando informações da sua database Vamos começar: Criando e Modificando tabelas Para você criar uma tabela é bem simples você deve sempre começar com o comando "<table>" e finalizar com "</table>". Toda tabela é dividida em três partes: <table> (toda a tabela) <tr> (uma divisão horizontal em sua tabela) <td> (uma divisão vertical em sua divisão horizontal) Regras de divisões: Você não pode colocar uma "<td>" antes de uma "<tr>" Todo comando iniciado deve ser finalizado exemplo: "<tr><td>ESCREVA AKI</td></tr>" Você pode colocar se quiser uma tabela dentro de uma tabela mais lembrando que ela deve começar e terminar dentro do comando "<td>" exemplo: Comandos internos básicos: width="100" ou width="100%" -- Largura aumente o número e sua tabela ficará mais larga height="100" ou height="100%" -- Altura aumente o número e e sua tabela ficará mais alta border="1" -- Borda aumente o número e a borda ficará maior bordercolor="#000000" -- Cor da borda bgcolor="#FFFFFF" -- Cor de fundo da tabela align="right" -- Alinhamento Exemplo de utilização: Fazendo tabelas como essas: (imagem retirada do tibia.com) Utilize assim substituindo apenas as áreas que estão em vermelho: Faça modificações a vontade em sua tabela mais tome cuidado para não buga-la. Obs: Sempre em qualquer conteúdo escrito, de imagens e entre outros você deve utilizar isso: ----------------------------------------------------------------------------------------------------------------------------------------------------------- Escrevendo com acentos Bem para escrever com acentos é bem simples basta você escrever um código para cada letra acentuada exemplo: á = á é = é Á = Á É = É Colocando em prática: Título = Título Atenção = Atenção Tabelas de Acentos Obs: Sempre em qualquer conteúdo escrito, de imagens e entre outros você deve utilizar isso: ----------------------------------------------------------------------------------------------------------------------------------------------------------- Adicionando imagens Para adicionar uma imagem você deve sempre utilizar este código: Onde se encontra em verde é onde fica a localização da imagem apartir da pasta "htdocs" do seu site. Tamanho: width="100" ou width="100%" -- Largura aumente o número e sua imagem ficará mais larga height="100" ou height="100%" -- Altura aumente o número e e sua imagem ficará mais alta align="right" -- Alinhamento Colocando sua imagem para redirecionar à um link: Onde se encontra em azul é o seu link. Obs: Sempre em qualquer conteúdo escrito, de imagens e entre outros você deve utilizar isso: ----------------------------------------------------------------------------------------------------------------------------------------------------------- Criando botões Agora vamos aprender a criar um botão desse estilo: Copie estes códigos e modifique de acordo com a legenda: 1ª opção: 2ª opção: (como tabela) Legenda: Verde: imagem que aparece no centro do botão Azul: local da imagem Vermelho: Local em que ao clicar no botão você será redirecionado Rosa: Alinhamento Obs: Sempre em qualquer conteúdo escrito, de imagens e entre outros você deve utilizar isso: ----------------------------------------------------------------------------------------------------------------------------------------------------------- Pegando informações de sua database Vou ensinar agora como você vai pegar uma informação de sua database. Exemplo: (pegando o nº de guilds da sua database) $guildsbyather = $SQL->query('SELECT COUNT(*) FROM `guilds` WHERE `id`>0;')->fetch(); Legenda: Verde: tabela que você deseja em sua database e que irá seu calculada o numero de colunas Vermelho: Comando que você usará para escrever a quantidade depois lembre-se de usar sempre o "$" antes de escrever nessa parte e para adicionar o seu número colocar sempre assim " '.$OQUEVOCEDIGITOUNOINICIO.' " Bem a partir do momento que você colocou esse código quando você inserir isso '.$guildsbyather.' irá aparecer o numero de guilds que existem em seu server Obs: Sempre em qualquer conteúdo escrito, de imagens e entre outros você deve utilizar isso: Até a próxima comentem ^^ Ajudei você? REP+1 ponto -
Proteção Contra Hackers
yasha reagiu a WiluxNatsua por um tópico no fórum
Ofereço proteção contra qualquer tipo de ataque hacker, seja Ddos,mysql injection, ou invasão dentro da db, etc. Também aumento a segurança do seu dedicado, para se tornar impenetrável, serviço garantido. Em caso de dúvidas entre em contato no Email/Msn: Retirado.1 ponto -
Loopings
Waterson reagiu a Demonbholder por um tópico no fórum
Faaaaala galerinha do éks! Tudo bem? Bom, eu sei que existem vários tutoriais no éks de loopings em lua, porém, nenhum esclarecedor ou completo. Enfim, a proposta deste tutorial é explicar todos os loopings de lua, sendo eles: for e seus subtipos, repeat e while. Espero que vocês gostem e espero críticas construtivas abaixo. Introdução Bom, os loopings são extremamente úteis em lua, e são usados em quase todos scripts mais avançados. Eles servem para executar uma cadeia quantas vezes desejados. Um looping, definido como repetição em português, pode ser infinito, ou finito. Looping Infinito: No caso, uma repitação que nunca acaba, executará a cadeia infinitamente, a menos que seja quebrada. Looping Finito: Executa uma cadeia até que algo aconteça, tal como chegar ao limite dado, ou cumpra ou descumpra uma condição. Também pode ser quebrado antes de seu fim. Podemos usa-los para checar todos valores de uma tabela, para checar todos os caracteres de uma string, entre outras funções. Looping For Sem dúvida o looping mais utilizado de todos e talvez o mais importante a ser aprendido. O for tem dois subtipos: For número: Este looping executa uma cadeia tantas vezes. Podemos ditar a ordem em que o bloco será repetido, vamos aos exemplos e as explicações. O for número, assim como o for genérico e o while requer o end para delimitar a extensão da cadeia que vai ser repetida. A sintaxe do for é a seguinte: for variável = 1ºn, 2ºn, 3ºn do bloco end Variável: O for número exige a variável para guardar o número de repetições e a ordem dela. Número 1: O primeiro número deve ser, obrigatoriamente, menor que o segundo. Será o primeiro número que a variável assumirá. Número 2: Deve ser maior que o primeiro número, será o último número que a variável assumirá. No caso, a variável assumirá primeiro o valor do primeiro número e irá executar o bloco tantas vezes até chegar ao segundo número. Exemplo: for i = 5, 20 do bloco end No caso, a variável é i e ela começara tendo o valor 5 e por último terá o valor 20. Ele executará o bloco 15 vezes, pois 20-5=15. Exemplo2: for i = 5, 20, 5 do bloco end Agora temos o primeiro exemplo do terceiro número, que será a ordem que o looping se repetirá. A variável vai começar 5, depois pula para 10, pois 5+5=10, depois pula para 15, pois 10+5=15 e por último pula para 20, pois 15+5=20. No caso, repetirá 4 vezes, pois a variável assumirá 4 números: 5, 10, 15 e 20. Vou mostrar um exemplo: for i = 0, 10, 2 do print(i) end Vai executar assim: >> 0 >> 2 >> 4 >> 6 >> 8 >> 10 Para fazermos um for numérico infinito, usamos o seguinte exemplo: for i = 1, math.huge do bloco end math.huge é infinito e por isso o looping se torna infinito, pois nunca chegara ao seu final. For genérico: Este for server para executar funções iteradores, sendo as mais usadas a pairs e ipairs, as quais serão explicadas a seguir. Pairs: A função pairs chama os valores da tabela em duas variáveis, a primeira é o index e a segunda é o valor. Se o index não existir, o padrão é um número que aumenta a cada vez que não houver index. A vantagem dessa função é que pode-se usar os index fora de ordem numérica, ao contrário do ipairs. Ipairs: A função ipairs chama os valores da tabela, também, em duas variáveis, assim como a função pairs. A diferença é que, assim que ele acha um valor de index fora da ordem numérica, ele para de chamar os valores da tabela. A vantagem dessa função é que retorna os valores em ordem. As funções pairs e ipairs apenas podem ser usadas em tabelas. Vamos aos exemplos: t = { [1] = 20, [2] = 40, [3] = 50, ["teste"] = 60, [5] = 80, [7] = 90, [4] = 100 } for index, valor in pairs(t) do print(index .. " : " .. valor) end for index, valor in ipairs(t) do print(index .. " : " .. valor) end O seguinte bloco produzirá isso graças a função pairs: >> 2 : 40 >> 7 : 90 >> 3 : 50 >> 1 : 20 >> 4 : 100 >> teste : 60 >> 5 : 80 Pode-se perceber que a função pairs não é em ordem e aceita qualquer valor como index. Graças a função ipairs, ela produzirá isso: >> 1 : 20 >> 2 : 40 >> 3 : 50 >> 4 : 100 >> 5 : 80 Pode-se perceber que o ipairs não aceita valor de string como index e os números precisam seguir uma ordem numérica correta. Enfim, creio que o pairs e o ipairs tenham sidos explicados, e assim encerramos o for. While O While, assim como o for requer um end para delimitar a extensão do bloco a ser repetido. Este looping repete o bloco enquanto a condição dada for verdadeira. Se você precisar usar uma variável, é necessário apresenta-la antes do looping. Vamos aos exemplos: i = 0 while i ~= 100 do print(i) i = i + 1 end Nesse caso ele irá repetir 100 vezes, ou seja, o último valor que i irá assumir será 99 e o primeiro é 0. Claro que não é necessário declarar e usar variáveis, assim como no seguinte exemplo: while getPlayerMana(cid) < 100 do doPlayerAddMana(cid, 20) end Nesse caso, adicionará 20 de mana até que a mana do jogador seja, no mínimo, 100. Para gerar um while infinito, usamos qualquer valor que seja diferente de FALSE e diferente de nil, assim: while true do print("OK") end while 1 do print("OK") end Esses são dois exemplos de loopings infinitos. Repeat Ao contrário dos outros loopings, o repeat não exige um end, mas sim um until. Until é outra palavra reservada da linguagem lua. O repeat em português seria: repita bloco until condição Ele repete o bloco até que a condição seja verdadeira, ao contrário do while que repete o bloco enquanto a condição for verdadeira. Vamos a outros exemplos: i = 1 repeat i = i + 1 print("OK") until i == 100 No caso ele printa OK 100 vezes, ou seja, até que a condição i == 100 retornar TRUE (verdadeira). Para fazermos um repeat infinito, usamos: repeat bloco until nil Como nil nunca vai ser TRUE, o looping é infinito. break A palavra break é outra das palavras reservadas de lua, e serve para parar uma repetição. O break literalmente quebra o laço de repetição, vamos a um exemplo: i = 0 while true do print("OK") i = i + 1 if i == 100 then break end end Normalmente, usando while true criamos o looping infinito, mas como temos a checagem do valor de i com o if e usamos o break para quebrar o laço, o looping irá parar de se repetir quando i for igual 100. O break pode ser usado em qualquer looping. Fonte Manual de Referência de Lua 5.1 É isso então galera, espero que gostem e comentem, abraços.1 ponto -
Primeira Sprite By Louiiss
luizribeiro reagiu a Mixtura por um tópico no fórum
Opa amigao, blz? Nao vo mentir nao, ela esta ruim sim, mas, por ser a primeira voce esta no caminho certo. Apenas leia alguns tutoriais, vou te encaminhar a alguns, que eu li quando eu começei a spritear... Criando sua primeira Guarda e Cabo -- Look to Vask Tutorial avançado de Sprites -- Galiant Esses 2 sao os que mais me ensinaram, mas procure outros. Aqui mesmo no Xtibia, tem otimos tutoriais. Bom aprendizado1 ponto -
eu baixei, nao é virus sao os comandos novos e o mapa que foi feito muita coisa no remeres, dai teve que mecher com dll mesmo eu baixei aqui1 ponto
-
Fast Food Delivery
risada21 reagiu a LaisDosOts por um tópico no fórum
CARAMBOLA, FIZ QUESTÃO DE EDITAR UM POUCO ESSE POST, PQP EU TINHA PROBLEMAS AYEHUDSAIOF flw -- Saudações XTibia o/ Estav aeu, procurando tutoriais de scripting no Google, e acabei achando um script muito legal (na minha opinião). Como eu disse, Achei um script muito legal, não é meu '-' Quote do Post Original (#####) com devidos créditos (Como o XTibia proibe escrever sobre outros fóruns, não foi possivel ser mostrado os créditos inteiros) Não sei se vai ser muito útil, talvez os players vão preferir matar rat pra pegar cheese, ou ir lá no npc pra comprar '-' Bom, mas é script. Inovação xD Vamos ao Script Vá na pasta Data/Talkactions/Scripts , copie um arquivo.lua e renomeie para fastfooddelivery. Coloque isso dentro: Reparem na função MakeDelivery ^^ --[[ Autor : PeJuGe (2009) Outros créditos: 4% Skyen Hasus e VConde2 -> Organização e concerto de um erro 1% MotoBoy -> Idéia do Fast Food EXCLUSIVIDADE: ###### NÃO REMOVA OS CRÉDITOS ]]-- --Configurações local comidas = { --> Coloque respectivamente "Nome" e Preço ["Meat"] = 50, ["Ham"] = 90, ["Fish"] = 150, ["Dragon Ham"] = 200 } local tempo = 5 --> Tempo da entrega em segundos local container = "Present" --> Pacote em que será entrege o item local msg = MESSAGE_STATUS_CONSOLE_BLUE --> Tipo da mensagem local sat = 350 --> Cor da mensagem animada -- Fim das Configurações function onSay(cid, words, param) _, _, param1, param2= param:find("([%s%w]+) ([%s%w%d]+)") local param2 = tonumber(param2) if (param == '') then return doPlayerSendTextMessage(cid, msg, "Atendente: Bem vindo ao Fast Food Delivery. \nPara ver nosso cardápio utilize: !food cardapio\nPara fazer o seu pedido utilize: !food Alimento Quantidade (Ex.: !food Meat 5).\nPara cancelar seu pedido utilize: !food cancel") elseif (param == 'cardapio') then doPlayerSendTextMessage(cid, msg, "Atendente: Aqui no Fast Food Delivery vendemos:") for k,v in pairs(comidas) do doPlayerSendTextMessage(cid, msg, k.." por "..v.." gold(s) cada.") end return TRUE elseif (param == 'cancel') then if getPlayerStorageValue(cid, 2002) == 1 then setPlayerStorageValue(cid, 2002, 0) doPlayerSendTextMessage(cid, msg, "Atendente: Sua entrega foi cancelada. Ligue novamente quando desejar.") doSendAnimatedText(getCreaturePosition(cid), "Cancelado", 350) else doPlayerSendTextMessage(cid, msg, "Atendente: Desculpe, não há nenhum pedido registrado em seu nome.") end return TRUE end if comidas[param1] ~= nil then if getPlayerStorageValue(cid, 2002) == 0 then if param2 ~= nil or param2 == number then if param2 > 100 or param2 == 0 then return doPlayerSendTextMessage(cid, msg, "Atendente: Desculpe, nosso entregador carrega no máximo 100 unidades e no mínimo 1 unidade.") else if getPlayerMoney(cid) > comidas[param1] * param2 then doPlayerSendTextMessage(cid, msg, "Atendente: Obrigado por utilizar o Fast Food Delivery. Seu pedido foi registrado e sua entrega chegará dentro de "..tempo.." segundo(s).\nPedido: "..param2.." "..param1.." por "..comidas[param1].." gold(s) cada.\nTotal: "..comidas[param1] * param2.." gold(s).") doSendAnimatedText(getCreaturePosition(cid), "Pedido", sat) setPlayerStorageValue(cid, 2002, 1) stopEvent(onSay) addEvent(MakeDelivery, 6000, cid, getItemIdByName(param1), comidas[param1],getItemIdByName(container), param2) else doPlayerSendTextMessage(cid, msg, "Atendente: Desculpe, você não tem dinheiro suficiente.") end end else return doPlayerSendTextMessage(cid, msg, "Atendente: Por favor, informe um número (menor que 100 e maior que 0) com a quantidade desejada.") end else return doPlayerSendTextMessage(cid, msg, "Atendente: Por favor, aguarde a entrega do seu produto para fazer um novo pedido.\nPara cancelar seu pedido utilize: !food cancel") end else return doPlayerSendTextMessage(cid, msg, "Atendente: Desculpe, não vendemos este item ou a quantidade determininada é invalida.\nPara mais informações utilize: !food") end return TRUE end function MakeDelivery(uid, item, price, container, quantity) if getPlayerStorageValue(uid, 2002) == 1 then if doPlayerRemoveMoney(uid, price * quantity) == true then doAddContainerItem(doPlayerAddItem(uid, container, 1), item, quantity) doSendAnimatedText(getCreaturePosition(uid), "Entrega!", sat) doSendMagicEffect(getCreaturePosition(uid), 2) setPlayerStorageValue(uid, 2002, 0) else doPlayerSendTextMessage(uid, msg, "Entregador: Desculpe, a entrega pode ser feita somente mediante o pagamento, ligue novamente quando tiver dinheiro.") setPlayerStorageValue(uid, 2002, 0) end end return TRUE end Vá a talkactions/talkactions.xml e copie este trecho para o arquivo: <talkaction log="yes" words="!food" event="script" value="fastfooddelivery.lua"/> Quote do Post Original - Opção Opcional (Nossa) Vamos agora mexer no Script dele. Primeiro - Vamos mudar as comidas que serão vendidas. Ache isso no Script Como lá mesmo está dizendo, coloque respectivamente "Nome" e "Preço". Segundo - O tempo da entrega. Se você não quiser o tempo que está no script, você pode mudá-lo =D Pra não ficar aquela coisa chata de ficar esparando muito(vo matar o entregador de pizza, sabe?), é bom mudar sim '-' Ache essa parte o script A coisa é xiq u.u Entrega em pacote ^^ Bom, aqui você pode mudar o tempo da entrega, em segundos (no script, ta lá 5) e o pacote em que será entregue, um container de preferencia (que guarda coisas dentro - bag, backpack...) Ex: Se quiser 1h, coloque local tempo = 60 (60 segundos = 1h) Terceiro (Quote do post original) Em breve eu posto as ScreenShots, o pessoal do ot gostou. Lembrando pro pessoal que o script não é meu, mas eu tentarei tirar dúvidas ^^ Ty XTibia o/1 ponto -
Efeitos De Spells Com Imagens
joseanpereira reagiu a lipezinhoh por um tópico no fórum
Bom pessoal segue o meu primeiro tópico. O objetivo desse tópico não é ensinar fazer spell, mais sim mostrar os efeitos que pode ser adicionado em cada spell, mais para que tivesse mais facilidade de visualização resolvi colocar uma magia como exemplo. 1° criando uma spell (eu usei essa como exemplo, mais você pode colocar o efeito em qualquer outra spell) Entre na pasta data/spell/scripts e crie um arquivo com o nome de efeitos.lua e cole o seguinte código: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 26) -- coloque aqui no lugar do "26" o numero do seu efeito -- setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -70.3, -30, -75.7, 0) arr = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, } local area = createCombatArea(arr) setCombatArea(combat, area) function onGetFormulaValues(cid, level, skill, attack, factor) local skillTotal, levelTotal = skill + attack * 3, level / 5 return -(skillTotal * 1.2 + levelTotal), -(skillTotal * 4 + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Depois vai em data/spell e procure pelo arquivo spell.xml e adicione a seguinte tag: <instant name="efeito" words="teste efeito" lvl="100" mana="400" prem="1" needweapon="0" exhaustion="1200" needlearn="0" script="efeitos.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> <vocation name="Druid"/> <vocation name="Elder Druid"/> <vocation name="paladin"/> <vocation name="royal paladin"/> </instant> Após feito isso, pronto! sua magia está criada, agora basta trocar onde se encontra o "26" e colocar o numero do efeito que deseja. exemplo: - onde está assim: - voce pode deixar assim: Agora basta logar o seu GOD e digitar /reload spells e testar o seu efeito de acordo com a lista a seguir: Efeito: 1 Efeito: 2 Efeito: 3 Efeito: 4 Efeito: 5 Efeito: 65 Segue a baixo algumas imagens postado pelo Antharaz (créditos 100% a ele) nesse post: http://www.xtibia.co...e-como-usa-los/ lista: efeito 1 = círculos efeito 3 = ataque cruzado efeito 4 = ataque x com fumaça efeito 5 = explosão efeito 6 = explosão com bola de fogo efeito 7 = explosão de pequenos circulos efeito 8 = explosao de veneno efeito 9 = ataque fisico (tipo exori) efeitos basicos: efeito 10 = vis efeito 11 = choque efeito 12 = estrela azul efeito 13 = estrela vermelha efeito 14 = estrela verde efeito 15 = flam efeito 17 = mort efeito 41 = frigo Efeito 18 = ataque em x verde Efeitos especiais: efeito 23 = musica azul efeito 24 = musica branca efeito 25 = bolhas efeito 33 = Monstro marinho (rox) efeito 34 = fumaça efeito 35 = coração efeito 52 = gelo efeito 53 = com agua efeito 55 = espelho com monstro efeito 61 = assasin efeito 62 = sangue efeito 65 = fantasma efeito 66 = morcego efeito 300 = chuva de pedras bom Antes de postar eu procurei sobre tópicos que representava os mesmo assunto, acabei encontrando alguns até mesmo interessante, mais como eu já tinha tirado as imagens antes resolvi postar. nesse caso irei direcionar os créditos as pessoas que eu encontrei com o mesmo assunto, caso falte alguém por favor me avise que eu irei colocar os créditos. Espero que goste desde já agredeço!1 ponto -
Arquivos .xml não necessitam de ordem correta, basta estar entre <tag> e finalizar com </tag> que a leitura do mesmo não será afetada.1 ponto
-
Por Favor Me Ajudem , Erro No Gesior! Vale +Rep
DragonHunterAtTheCave reagiu a fredpadua por um tópico no fórum
porque n usa xampp ? não daria esse erro .-.1 ponto -
Semi-Dedicado- Tirem Minhas Dúvidas Pf
MaginusDarklord reagiu a pessoa93 por uma questão
Você pode fazer essas perguntas diretamente com o o fornecedor do semi-dedicado. Sim, é igual a teamviewer. Para passar seu servidor pro semi-dedicado você tem que dar upload em algum site e baixar dentro do semi dedicado.. Sim, vem ip,login e senha para o email. Usa-se Assistencia remota para entrar no dedicado, todo computador xp+ tem isso.1 ponto -
[Pedido] Magia
RubemAlvesCitou reagiu a japavrb15 por um tópico no fórum
o vai na pasta wisp.xml e troca o la de dentro por agora vamos na magia é so usar o script do xotservx em spells.xml e no script da magia em data/spells/scripts add isso fiz na pressa e nao testei ve se dar certo se nao der posta aki flw ^^ ---@Edit--- obrigado eu tinha eskecido Creditos - xotservx 80% Creditos - Eu 20% __________ Em Vermelho é o tempo em segundos 1000=1segundos 60000 = 60segundos1 ponto -
[Gesior Acc] Pagseguro Entregando Pontos Automaticamente
TendoTensei reagiu a walefxavier por um tópico no fórum
AQUI1 ponto