Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 11/03/11 em todas áreas
-
[Tutorial] Criando Sua Propria Arma No Paint.
pedroszmatos e 4 outros reagiu a Stigal por um tópico no fórum
Eai Xtibianos! Venho Mostrar Como "CRIAR" Suas Proprias Sprites No PAINT! Índice O que você vai precisar O que eu vou precisar Configurando o paint Criando suas próprias armas O que você vai precisar: O que eu vou precisar: Configurando o paint: Criando suas próprias armas: Espero Que Gostem!!! Não Esquesao De Comentar ;D!5 pontos -
Usar Account Manager + Site Gesior
Nerival reagiu a williampasqualini por um tópico no fórum
Conteúdo exclusivo para o xtibia.com! Usar Account Manager + Site Gesior <p>Após instalar seu site Gesior e ele estar funcionando 100% , sem nenhum bug e o server estar online, suponho que você enfrente o seguinte problema: -[b] A preguiça dos players em acessarem seu site para criar um char.[/b] Principalmente os players que descobrem seu server através do otserverlist.org! Então vou explicar como utilizar o site e o account manager do server ao mesmo tempo! 1º - Vá até a pasta do seu server e abra o arquivo config.lua com o bloco de notas. Na linha do accountManager deixe como está abaixo: (caso esteja como ="no" ou ="false") accountManager = "true" Salve as alterações e fexe seu config.lua 2º - Agora que seu account manager esta ativado...vamos configura - lo para ser utilizado em conjunto com o site. Ao instalar o site gesior, você obteve sua conta de administrador. Se observar a conta de administrador é justamente a account 1, portanto você terá que altera - la. Abra o XAMPP Control Panell e acesse seu phpMyAdmin, clicando no botão Admin do lado do Mysql. Se preferir pode acessar através do endereço: http://localhost/phpmyadmin/ caso você utilize a porta :8090 utilize o seguinte... http://localhost:8090/ Digite o usuario: root e a senha que escolheu na hora de instalar o Xampp, clique no botão executar. Agora clique na database do seu servidor para ter acesso a ela. Clique em accounts Você vera uma tabela com id,name,password,etc... clique no lápis [Editar] do lado do X [Remover] em vermelho, para editar a conta que desejar, no caso é a account name = 1 de id = 1 (normalmente a primeira linha da tabela Accounts). Edite esta tabela da seguinte maneira: Clique em Executar após terminar de fazer as alterações. Agora clique na Tabela Players de sua database. Edite o Account Manager (Normalmente o Player com id=1) - Só clicar no lápis [Editar] no campo do lado esquerdo do Account Manager. Edite ele da seguinte maneira: Group_id = 1 Account_id = 1 Lookyype = pode por oque quiser, por exemplo o de um monstro ou god. "este numero é oque mudara a aparência de seu account manager". exemplos: Yeti = 110 GOD = 302 town_id; posx ; posy e posz são as coordenadas x,y,z que tem no config.lua na pasta do seu servidor. As do meu config.lua são: newPlayerSpawnPosX = 160 newPlayerSpawnPosY = 54 newPlayerSpawnPosZ = 7 newPlayerTownId = 1 então meu account manager do site fica assim: town_id = 1 posx= 160 posy= 54 posz = 7 obs: O account manager esta configurado para aparecer no templo, porém você pode escolher qualquer coordenada do mapa para ele aparecer. agora que você já configurou seu account manager, clique em executar. Para salvar as alterações. Você vera outros chars com os seguintes nomes: Rook Sample, Sorcerer Sample, Druid Sample, Paladin Sample, e Knight Sample. Edite cada um deles modificando a seguinte linha: deleted = 1 motivo? para que estes chars não apareçam na lista de chars quando os novos players entrarem na account 1/1 (account manager) para criar suas contas. Agora entre no seu site e crie uma conta para você administar seu site. Vá no phpmyadmin denovo, na database do seu servidor e entre em accounts. Clique no botão Procurar na parte superior e em Name, digite o nome de usuario escolhido ao criar a conta. Depois clique no botão Executar. Se você digitou o nome certo ira aparecer sua conta...é clicar em Editar [No lápis] e altere o seguinte campo: page_access = 0 para page_access = 5 E clique no botão Executar, para salvar as alterações. OBS: Se quiser pode fecha a pagina de seu phpmyadmin. Pronto, sua conta de administrador está prontinha! Seu account manager está pronto para ser usado, e também é possivel criar chars e contas pelo site. Porém não acabou ainda! 3º - Bloquiar o acesso do Account Manager pelo site, para evitar que alterem a senha ou excluam - lo. Abra a pasta: \xampp\htdocs E substitua o código de seu accountmanagement.php por este aqui que irei postar: http://www.4shared.com/file/l7-bobb8/accountmanagement.html Pronto, Ninguém ira conseguir entrar na conta 1/1 que no caso é a do account manager. Tornando impossivel deleta - lo ou usar esta conta para postar besteiras no fórum. Tutorial 100% criado por mim. Código do account management encontrado não me lembro aonde. Obrigado. Atualizado dia 13 de julho de 20121 ponto -
[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
-
Para Todos Que Adoram o Global ai vai ele..; Real Global Map 8.70 Real Global Map: Versão do Tibia:8.70 Mapa global 95% full. Quase todos os NPC's do Tibia Global. Servidor com o mínimo de bugs possíveis. Scripts arrumados. Itens 8.70 Mount sistem Cidades: Yalahar Carlin Ab'Dendriel Kazordon Thais Venore Darashia Ankramun Edron Port Hope Liberty Bay Svargrond Cormaya Zao 100% (acesso por farmine) Farmine (acesso por cormaya) Quest's: Arena Quest Demon Oak Demon Helmet Inquisition anihilator Quest Pits of Inferno (POI) 95% global. HOTA Quest Banshee Quest Behemoth Quest Blue Legs BK Bright Sword Naginata Vamp Shield Fire Axe Mermaid Comb Orc Fortress Necro Quest Dark Shield Noble Armor Desert Quest Stealth Ring Zao arena /Features 8.6>>/8.7 Mount Igual o Tibia Global<> Mais Informaçoes vao serem postadas!... Fotos: Download: OT Donw Dll e exe Scan: Ot Scan Dll e exe Creditos: Nycholaszinzhu TFS *Darker(Trazer ao xtibia) Gostou ++++ Para min....! Obs:O OT Possui alguns bugs!..; 2 Hospeda-lo em um bom PC 3GB MEMORIA RAM+ E O PC TEM QUE TA RAPIDO OTIMO SE NAO Podera dar Lag..!1 ponto
-
[8.60]Solds War [V1.0]Change Map
Vladislave666 reagiu a soldoran por um tópico no fórum
Solds War [8.60] Change Map [V1.0] Exclusivo xtibia.com Features 1.0 + Level inicial 130 + Vocações balanceadas + Novas Talkactions + Distro limpo e sem erros + Não há debugs ao logar + Npcs espalhados pelas cidades + Novo Sistema de Look Frags + Skills iniciais de acordo com o level + Sistema de Change Map [mapa sera mudado a cada 20 minutos] + 6 Cidades Cidades + Venore + Edron + Thais + Desert + Carlin + Fibula Imagem Solds War [V1.0] Download [8.60] Solds War [V1.0] Scan [8.60] Solds War [V1.0] Créditos A min pela criação de todo o ot Alissow pelo distro Vodkart pelo script Change map e a todos que são donos de seus respectivos Scripts1 ponto -
Descrição O script foi feito para facilitar e ajudar na organização de vídeos no seu website! Detalhes O script foi feito e testado em uma máquina com os seguintes sistemas: Apache 2.2.14 PHP 5.3.1 MySQL 5.1.41 Gesior AAC Instalação A instalação e configuração do banco de dados é feita automáticamente pelo script, sem necessidade de entrar no MySQL manualmente! Tutoriais Instalação Créditos Todos os créditos do script pertencem ao usuário Alexx Pirado lol. Download http://www.speedyshare.com/files/30856011/videos.zip http://www.mediafire.com/?5h1d2hwo2leda7g1 ponto
-
[8.60] Desert War 0.6
Zurpho reagiu a darkanderson por um tópico no fórum
Desert War 0.6 Informações: 4shared: http://www.4shared.c...ert_War_06.html Scan: http://www.virustota...7c50-1310653476 Creditos á fora: Equipe Real Global Map Equipe Illusion War Obs: Se faltar creditos, fale para eu colocar. Se for postar o otserv em outro site/forum coloque os devidos creditos de todos. Mapa de darashia Mapa feito para OPEN WAR Todos os players começam level 130 [Equipe IllusionWar] Equips de acordo com sua vocação [Equipe IllusionWar] Quest 250k - Soft boots [Equipe IllusionWar] Npc: Refinamento, Ring Seller, Recarregar Soft, Lector e Destruction Itens Duas caves para diferenciar (para chegar na cave, tem que ir andando) Sistema de slot [Mock] Frag Look [Theax] Addons por level [Pinpao] (a cada 5 em 5 leveis pega um addon novo) Anti-Mc [shawak] [Cykotitan] Buff System [Potreco] (quando player nasce no templo ja ganha um determidado buffs) Lottery System [Walef Xavier] (a cada 61 min player sorteado ganha 100k) Templo - Sistema de Buff Npcs Quest 250k e Soft Boots Treiners Cave de Walorck Cave de Dragon Lord Sistema de Refinamento Itens um pouco editados Obs: wand está com ataque muito alto, para edita é Desert War 0.6\data\weapons\scripts vai em wand.lua e edita os numeros em min/max. Download: Megaupload: http://www.megaupload.com/?d=HNUQWGKM1 ponto -
Olá a todos, venho aqui lhes trazer o script de Zombie Event. Não tenho certeza se estou postando na areá correta, mais caso eu não esteja por favor movam o tópico. Mãos a obra. Zombie Events. Testado em: TFS 0.4 Se quiser testar em outro distro responsabilidade de vocês. Algumas informações sobre ele primeiramente, Quando o evento está começando você terá certos minutos em você para incorporar o teleport antes que desapareça. Quando o teleport desaparece mesmo acontece com zombie spawn após 20 segundos. Zombie iram aparece 1 de cada vez, a cada 20 segundos. Os players que morrerem no evento, serão teleportados para o templo. O vencedor do evento, recebe algumas recompensas e um cale-se dourado com seu nome. Lembrando a areá de evento tem que ser non-pvp para que os possam disputar la. Vamos la. Globalevents/scripts/zombie event.lua local config = {playerCount = 2001, -- Global storage for counting the players left/entered in the eventzombieCount = 2002, -- Global storage for counting the zombies in the eventteleportActionId = 2000, -- Action id of the teleport needed for the movement scriptteleportPosition = {x = 1135, y = 1077, z = 3, stackpos = 1}, -- Where the teleport will be createdteleportToPosition = {x = 1190, y = 1076, z = 7}, -- Where the teleport will take youteleportId = 1387, -- Id of the teleporttimeToStartEvent = 5, -- Minutes, after these minutes the teleport will be removed and the event will be declared startedtimeBetweenSpawns = 20, -- Seconds between each spawn of zombiezombieName = "event zombie", -- Name of the zombie that should be summonedplayersNeededToStartEvent = 5, -- Players needed before the zombies can spawn.-- Should be the same as in the creaturescript!-- The zombies will spawn randomly inside this areafromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playgroundtoPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground}function onTimer()local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)doItemSetAttribute(tp, "aid", config.teleportActionId)doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)setGlobalStorageValue(config.playerCount, 0)setGlobalStorageValue(config.zombieCount, 0)addEvent(startEvent, config.timeToStartEvent * 1000 * 60)print(getGlobalStorageValue(2001))endfunction startEvent()local get = getThingfromPos(config.teleportPosition)if get.itemid == config.teleportId thendoRemoveItem(get.uid, 1)endlocal fromp, top = config.fromPosition, config.toPositionif getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent thenaddEvent(spawnZombie, config.timeBetweenSpawns * 1000)doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)for x = fromp.x, top.x dofor y = fromp.y, top.y dofor z = fromp.z, top.z doareapos = {x = x, y = y, z = z, stackpos = 253}getPlayers = getThingfromPos(areapos)if isPlayer(getPlayers.uid) thendoPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")endendendendelsedoBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)for x = fromp.x, top.x dofor y = fromp.y, top.y dofor z = fromp.z, top.z doareapos = {x = x, y = y, z = z, stackpos = 253}getPlayers = getThingfromPos(areapos)if isPlayer(getPlayers.uid) thendoTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)endendendendendendfunction spawnZombie()if getGlobalStorageValue(config.playerCount) >= 2 thenpos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}doSummonCreature(config.zombieName, pos)doSendMagicEffect(pos, CONST_ME_MORTAREA)setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)addEvent(spawnZombie, config.timeBetweenSpawns * 1000)endend Movements/scripts/zombie event.lua local config = {playerCount = 2001, -- Global storage for counting the players in the eventmaxPlayers = 15, -- Max players who can participate}function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)if getGlobalStorageValue(config.playerCount) < config.maxPlayers thensetGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1)if getGlobalStorageValue(config.playerCount) == config.maxPlayers thendoBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.")elsedoBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)endelseaddEvent(tpBack, 1000, cid, fromPosition)doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.")return falseendprint(getStorage(config.playerCount) .. " Players in the zombie event.")return trueendfunction tpBack(cid, fromPosition)doTeleportThing(cid, fromPosition, true)doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)end Creaturescripts/scripts/zombie event.lua local config = {playerCount = 2001, -- Global storage for counting the players left/entered in the eventgoblet = 5805, -- id of the gold goblet you'll get when finishing the event.rewards = {2195, 2152, 2160}, -- You will get this + a gold goblet with your name on.-- {moneyId, count, using? 1 for using moneyReward, 0 for not using.}moneyReward = {2160, 10, 1},-- Should be same as in the globalevent!-- The zombies will spawn randomly inside this areafromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playgroundtoPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground}function onStatsChange(cid, attacker, type, combat, value)if isPlayer(cid) and isMonster(attacker) thenif isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) thenif getGlobalStorageValue(config.playerCount) >= 2 thendoBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)elseif getGlobalStorageValue(config.playerCount) == 1 thenif isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) thendoBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING)local goblet = doPlayerAddItem(cid, config.goblet, 1)doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.")local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)for _,items in ipairs(config.rewards) dodoPlayerAddItem(cid, items, 1)endif config.moneyReward[3] == 1 thendoPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])endendfor x = config.fromPosition.x, config.toPosition.x dofor y = config.fromPosition.y, config.toPosition.y dofor z = config.fromPosition.z, config.toPosition.z doareapos = {x = x, y = y, z = z, stackpos = 253}getMonsters = getThingfromPos(areapos)if isMonster(getMonsters.uid) thendoRemoveCreature(getMonsters.uid)endendendendendreturn falseendendreturn trueend Creaturescripts/scripts/login.lua poste a seguinte função. registerCreatureEvent(cid, "zombieevent") Globalevents.xml insira: <globalevent name="zombieevent" time="15:00" event="script" value="zombie event.lua"/> Movements.xml insira: <movevent type="StepIn" actionid="2000" event="script" value="zombie event.lua"/> Creaturescripts.xml insira: <event type="statschange" name="zombieevent" event="script" value="zombie event.lua"/> Esta parte e de grande importância. Na pasta Monster crie um arquivo chamado Event zombie.xml e insira isto dentro: <?xml version="1.0" encoding="UTF-8"?><monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="100" manacost="0"><health now="500" max="500"/><look type="311" corpse="9875"/><targetchange interval="5000" chance="50"/><strategy attack="100" defense="0"/><flags><flag summonable="0"/><flag attackable="0"/><flag hostile="1"/><flag illusionable="0"/><flag convinceable="0"/><flag pushable="0"/><flag canpushitems="1"/><flag canpushcreatures="1"/><flag targetdistance="1"/><flag staticattack="90"/><flag runonhealth="0"/></flags><attacks><attack name="melee" interval="2000" min="-350" max="-350"/></attacks><defenses armor="15" defense="10"/><immunities><immunity paralyze="1"/></immunities><voices interval="5000" chance="10"><voice sentence="You wont last long!"/><voice sentence="Mmmmh.. braains!"/></voices><loot><item id="2148" countmax="1" chance="100000"/><!-- gold coin --></loot></monster> Depois em monstros.xml adicione a seguinte linha: <monster name="Event zombie" file="event zombie.xml"/> Por pedidos vai ai uma pagina para seu website. Vá ate "C:/xampp/htdcos/" crie um arquivo chamado Zombieevent.php dentro coloque isso. <?PHP$main_content .= '<h4 style="" id="pt"><br><center><h2><b> Zombie Event</b></h2></center><br><br><center><object height="350" width="425"><imgsrc="http://i52.tinypic.com/wjdth1.jpg" height="700"width="525"></object></center><br><br><br> </h4><b></b><center><b>O que é o Zombie Event?</b><br><br>É um evento que acontece todos os dias as 12:00, 18:30 e 21:30 hr noservidor.<br><br><br><b>Como funciona?<br></b><br>Quando estiver na hora irá abrir um teleport no mesmo lugar onde aparece oteleport da WoE, basta você entrar e aguardar o tempo para inicio do Evento,o objetivo do jogo é correr dos zombies, a cada 20 segundos irá nascer um novo emalguma área randomica, você deve correr pois se eles te tocarem vocêautomaticamente é retirado do evento e volta para o seu temple.O ultimo jogador que sobrar vivo vence o evento.<br><br><br><b>Quais são os prêmios?<br></b><br>O ganhador irá ganhar<b> 100k</b>, uma <b>Boots of Haste</b> e um <b>Globet com onome dele</b>.<br><br></center>';?> Depois abra o index.php em "C:/xampp/htdcos/". Depois de: case "buypoints":$topic = "Buy Points";$subtopic = "buypoints";include("buypoints.php");break; Cole isso: case "zombieevent":$topic = "Zombie event";$subtopic = "zombieevent";include("zombieevent.php");break; Agora vá em "C:/xampp/htdcos/layout/tibiacom/" abra o arquivo layout.php. Depois de: <a href='?subtopic=highscores'><div id='submenu_highscores' 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_highscores' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div><div class='SubmenuitemLabel'>Highscores</div><div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div></div></a> Cole isso: <a href='?subtopic=zombieevent'><div id='submenu_zombieevent' 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_highscores' class='ActiveSubmenuItemIcon'style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div><div class='SubmenuitemLabel'>Zombie Event</div><div class='RightChain' style='background-image:url(<?PHP echo $layout_name;?>/images/general/chain.gif);'></div></div></a> Agora clique aqui e confira seu zombie events. Aqui vocês podem baixar o mapa para se usar com este evento: Download: Click aqui Scan: Clique aqui Prontinho espero que gostem. Créditos: Gostou? REP+ Arrumado Monster. Site Adicionado.1 ponto
-
Informações Pessoal venho-les Trazer Um servidor de War diferente..Inovador,e MUITO mais MUITO FODA!,quem conhece Heroserv Sabe o grande PVP que esse server tem,wands hit 6000~10000 arrow atk 500 swords club axes atks 500,compra de skill LIFE mana......tudo isso Num só servidor! então,foi baseado No Heroserv.com e No LoucoServ.com Que trago Hoje HEROSERV WAR! UDPATE INFOS pots infinitos mana rune no cyric compra de vida mana e skills preço menor Spells Utani vip Hur exevo gran trap exevo mas dead exevo gran mas frigo exevo song pally pally hur exevo bolt hur exori element exori mas gran Cidades Sphere Sistemas compra de skill !melee,!distance. compra de vida !buyvida. compra de !buymana. saber quanto de vida tens !myhp saber quanto de mana tens !mymp comprar promotion !promotion saber os spells !spells ao matar um player ganha 10k! nasce com SUPER SET! itens SPECIAIS NO NPC! training monks GRANDE AREA! Screen Shots download HEROSERV WAR 0.0.3 créditos Gean Riot (por tudo) alissow OTS (distro) gostou clica REP+ xD1 ponto
-
Supreme Baiak V7.3 [8.6] Editadão (apropriado a exp alta) Supreme Baiak editadao, novos itens, monstros,comandos e mapa editado. Novos Itens (vips) Milenio Helmet Milenio Armor Milenio Legs Milenio Boots Milenio Shield Milenio Axe Novos Monstros Icyd Tripyd The Halloween Hare SuperNova e muito mais Novas Spells Nova Arena, VIP 4 Adicionada ao Mapa E muito Mais Créditos Linnux Jhosef Scan: [download]http://www.4shared.c...eBaiakv73.html?[/download] Scan http://www.virustotal.com/file-scan/report.html?id=12eed45461cdf0cfa4da5eb975cd91d3f7796fe44de526cc9786ead8cc44129d-1321126620 Senha do GOD 33345000/33345000 Gostou ??? Dá um :button_ok: ai ^^1 ponto
-
Tutorial-como Os Nukers Fazem
ADMMario reagiu a GOD_EDUZIN por um tópico no fórum
:hi: Invasão via site de accounts Método simples o Método N00b Bom para uma account ser criada automaticamente as pastas do server precisam estar dentro do site de accounts, se o host não colocar o htacces oque acontece é basta o hacker escrever http://algumot.servegame.com:8090/otserv e ele vai poder ter ascesso total a todo seu ot. *Solução instalar o htacces (mais informações visite o tutorial Criação de accounts em php) Método Hacker Chinfrim O negocio é o seguinte 99,9% das pessoas pensam que com o htacces estão seguras uma grande erro deles, 99,9% das pessoas que fazem sites de accounts pegam o easyphp (codinoob) aqui do forum no tutorial de criação de accounts via site em php eu acho que é esse o nome do tutorial, a versão que eles estão disponibilizando pra download é antigona ta maluco negocio mais fudido existem mais de 5 exploits hard core para essa versão, um monte de hackerzion chinfrim com nicks como 0d3struid0rbr (com um nick desses agente ja ve que é noob) se acham o CARA por que pegam um exploit que NÃO foi ele que fez e um scanner de vulnerabilidades que tb NÃO foi ele que fez e por causa disso como ja disse se acham o CARA. *O easyphp foi feito para testes, ele possui muitas falhas, se vc quiser um otserv realmente seguro use um webserver de verdade... PHP INJECTION Método Defacer para hackear Site de accounts... Esse é um verdadeiro método que os hackers de verdade usam... Strings, apelido dado a vulnerabilidade mas conhecida como: Remote File Inclusion, ou Inclusao remota de arquivos ou ainda sim, PHP Injection, bug descoberto entre 2002 e 2003, porem ainda hoje muitos a desconhecem. Os bugs sao encontrados em sua maioria, em scripts de php, existem milhares disponiveis pela internet, todos os dias novos bugs de strings sao encontrados e expostos em sites de seguranca, e consecultivamente nao demora muito para aparecer milhares de sites alterados, e por coencidencia, 99% destes usavam scripts php bugados. Considerado o melhor bug para criar shells, por sua facilidade. Mas onde esta espeficicamente o bug, ele eh encontrado em funcoes de php, que unido com um script mal escrito, possibilita a inclusao remota de arquivos, as mais usadas sao: Main(, Include(, Include_Once(, e outras, e geralmente a funcao que tem o bug eh quase assim: main($dir. "arkivo") 'a sintase esta certa, porem eh somente um exemplo. Vamos dizer que o arkivo que tem esta funcao se chama index.php, basta agora o usuario em seu navegador digitar: index.php?dir=cmd Invasão via Trojan Apesar de existir muita gente por ai falando que trojan é coisa de Lammer, de otário, etc, eles ainda são muito usados, muita gente pensa que trojan é virus eles estão errados, um trojan basicamente é um programa feito de 2 coisas um cliente e um servidor é muito simples vc passa o servidor para sua vitima e vc usa o cliente para se conectar com ela. Mais como eu posso ser contaminado por um server de um trojan? Simples, vc deve aprender que seu fabuloso anti virus ñ é de ferro, seu anti virus é um pateta, vc não tem idéia de como é facil fazer um trojan indetectavel, para evita los não aceite programas de desconhecidos e de garotas gostosas que do nada te adicionam no msn e ja vem querendo passar alguma coisa, lembrese de que é muito facil juntar um ot ou qualquer coisa . EXE com um trojan, ou seja quando a pessoa clicar nessa coisa ele se instalara... Taticas mais comuns e conhecidas de DoS simplificadas: 2 Usar bugs do server (bugs do server para fazer ele crashiar e eventualmente cair) Essa é a tecnica mais comum, por exemplo em um certo ot se vc fala com o npc do barco e loga o serv cai e em outro vc da cash pro npc e ele tb cai esse tipo de erro é muito facil de ser corrigido por que normalmente alguem concerteza ja deve ter postado uma correção aqui no forum. De cada 10 servidores que são supostamente "nukados" 9 são derrubados desta maneira. QUEM FAZ ISSO É LAMMER (N00b Troxa) Isso não é Nukar é mera palhaçada 3 Atacar Apache (engine php que sustenta quase todos os sites de accs) Muitas vezes o Apache (easy php) esta aberto no mesmo computador que o host do server basta apenas o Nuker causar uma falha nele e fazelo bugar e eventualmente dar algum tipo de erro, mais você se pergunta oque tem haver o Apache com o serv, eu ti digo, tudo eles estão no mesmo pc basta o Nuker causar um erro, por exemplo que cause um reboot automaticamente o serv cai. *Idéia: Tente outras engines como o samba que são mais seguras 4 Floodear o Server (ICMP BOMB) Bom essa é minha preferida para ensinar uma lição a GMs power abusers sem educação e sem noção.(mais é muito muito raro eu ficar nervoso a ponto de derrubar um ot, é possivel contar nos dedos, hmm bem não é não), invasã owns esses hosters merdas não sabem configurar o apache nada que um exploit de 5 anos atras fassa... Bom essa é a tradicional simples e bonita forma de ataque DoS, a internet funciona com o sistema cliente e servidor, os clientes são como eu e vc, mandam packs de informação para os servidores e o servidores mandão resposta o pulo do gato é mandar uma tonelada de packs ICMP para o servidor eu digo milhares em vez de dezenas, se você . Como posso me proteger desse tipo de ataque? Quanto mais banda vc tiver mais banda do nuker e memoria ele vai precisar, isso explica pq isso é muito raro em servidores de verdade por que eles possuem uma banda incalculavel são necessarias centenas de pessoas fazendo isso. Dicas 1 Tenha um anti virus decente como o Norton e um firewall, e atualize seu windows com frequencia pois muitos virus ultilizam falhas recentemente descobertas para te ferrar. 2 Jamais entre em coisas que tenhão a palavra IRC eu poderia escrever um guia 1001 maneiras de como se hakiar alguem pelo IRC mais isso estaria errado pois existem mais de 1001 maneiras, da pra fazer de tudo pelo IRC. 3 Se vc for um hoster sério mesmo, troque seu Windows pelo Linux, o seu ot (quando inventarem ot pra linux) vai ficar muito mais seguro por 2 principais motivos, o Linux é mais seguro do que o Windows em muitos aspectos e tb por que a maioria dos Nukers que perder seu tempo atacando ots não sabe nada de Linux, eu garanto! 4 Um Hacker nunca vai dizer coisas como "Eu vou ti Hakiar em" pode ser até um cracker chinfrim, mais nunca um Hacker. Muito Obrigado Comentem Ai Gente Flws Desculpe Nao Consegui Por Ele Em Outra Sesação Desculpe Depois Por Favor Movam Ele Para Sessçao Certa Obg. :icon1:1 ponto -
Vejo muitas pessoas que criam quests toscas do tipo "puxe a alavanca, mate o monstro e pegue o prêmio". Sim, é uma quest melhor que "caia no buraco, mate tudo e pegue o prêmio", mas conceitualmente não tem diferença nenhuma. Vejo também dezenas de pessoas clamarem pelo "RPG no OTServ", mas nem elas mesmas sabem o que diabos é esse RPG. Então que tal eu dar essas dicas aqui? Vou me basear em quests de Diablo II e jogos como Rohan Online / WoW, então são coisas óbvias, mas que passam despercebidas na criação de muitas quests de OTServ. Sem mais delongas... Usando aquela coisa legal chamada criatividade... Criatividade é o ato de criar. O ato de criar é colocar uma idéia inovadora em prática. Inovar é fazer o que não é habitual/comum. Ok, e pra que serve essas definições idiotas? Simples: se ser criativo é fazer algo que não é comum, vamos jogar quests de "mate e ganhe" no lixo e inovar! Em um RPG, o personagem vive em um contexto, não em um jogo. Ele tem um mundo próprio, com construções com as quais ele interage, personagem com os quais interage... Enfim, um ambiente próprio daquele mundo. Se é um mundo com monstros que são inimigos dos humanos, então obviamente seu personagem terá que matar monstros. Mas monstros são obrigatoriamente burros? Acho que não. Se eles são espertos o suficiente para se organizarem em uma raid, por que não seriam para roubar um item da família real que dá poder a eles e esconder esse item em uma fortaleza? Se hunters são espertos o suficiente para usar arco-e-flecha, por que não podem preparar traps se escondendo atrás de muros onde apenas ataques distantes os atingiriam? (Demons da anihilator seguiam essa lógica) E ainda usar de táticas de caça para levar um monstro forte o suficiente para ficar próximo do invasor, de forma que ele esteja tão preocupado para se defender que não possa sequer pensar em atacar os próprios hunters? Ou além disso, se eles possuem ouro em seu corpo, como o obteram? Talvez controlando um depósito de ouro que há tempos era dos humanos? Indo ainda mais além, por que eles não podem ter uma cidade própria, subterrânea e oculta? Por que não podem ser organizados o bastante para seguirem um caminho de destruição e dominação? Por que? Por que? Por que? Não se limitem ao que já viram. Por mais idiota que possa parecer, use o incomum. Transformando criatividade em algo útil Depois de ter suas idéias, é hora de trabalhá-las. Você tem o diamante bruto, mas precisa poli-lo para ficar algo chamativo e cobiçado. Uma coisa estúpida a se fazer é colocar quests sem motivo. Uma alavanca no meio do nada, um monstro qualquer saindo dela e um prêmio nada a ver. Para cada quest, deve haver uma história que a ambiente. Para cada quest, faça com que tenha um NPC que leve a ela ou dê pistas. Para cada quest, deve haver um local que condiza. Para cada quest, deve haver um prêmio que condiza. Pessoas podem até tropeçar em quests, mas ainda assim a quest tem que possuir todas as características acima. Talvez a do NPC possa ser suprimida, mas quando possível deve ser utilizada. Tá, já sabemos como ambientar uma quest, já tô pronto? Nananinanão. Criando correntes de quests Chega. Acho que entenderam o espírito, certo? Uma coisa leva a outra, e só é possível fazer uma quest se tiver feito a antecessora. E como os prêmios compensam... Vejam como começa com coisas fáceis, de forma que o jogador possa ir fazendo novas quests enquanto vai se fortalecendo no jogo. Claro, é apenas um exemplo, mas depois de uma cidade dos monstros poderiam descobrir que era apenas uma vila, que tinha todo um mundo subterrâneo usado pelos monstros, que eles estavam planejando um ataque em massa, etc etc etc. Resumindo: Uma coisa leva a outra... Mas com lógica e imaginação. Conclusão Crie uma verdadeira história, não simples quests sem conexão. Faça com que o jogador do seu servidor tenha um objetivo final, não apenas matar monstros para ficar forte. Inove em suas quests! --- E é isso galera. Espero que tenham gostado. Críticas e sugestões são bem vindas.1 ponto
-
Felnor City
ramonmoreti reagiu a caverna por um tópico no fórum
Fala povo e pova. Estou com uns mapas antigos aqui, então resolvi liberar. :x Como estou com preguiça de tirar umas screens do mapa, tirei apenas do continente. Download: http://www.4shared.com/file/An80CS-5/felnor_city.html PS: versão 8.54 Espero que gostem.1 ponto -
Sim, desbloquei a porta 80 para o xammp e 7171 e 7172 para o jogo em seu modem/roteador e firewall.1 ponto
-
Lol' Deixa eu ver se entendi, você esta hosteando o site em sua casa? Mais desligou o PC, quando o liga novamente ele não funciona o site? Tente ligar o programa que você usa para coloca-lo online...1 ponto
-
[Spell] Life Fusion
mdgabrielzim reagiu a alldakie por um tópico no fórum
Olá Xtibianos, Hoje vim trazer uma magia... Como deve ficar após a configuração... Em (.../data/spells/scripts) você cria um arquivo chamado de "Life Fusion.lua", e adiciona o seguinte código: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 54) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -0.6, 0) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 54) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -0.6, 0) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 54) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -0.6, 0) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 50) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -0.6, 0) setCombatParam(combat4, COMBAT_PARAM_CREATEITEM, 1499) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 50) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -0.6, 0) setCombatParam(combat5, COMBAT_PARAM_CREATEITEM, 1499) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat6, COMBAT_PARAM_EFFECT, 50) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -0.6, 0) setCombatParam(combat6, COMBAT_PARAM_CREATEITEM, 1499) local condition = createConditionObject(CONDITION_POISON) setConditionParam(condition, CONDITION_PARAM_DELAYED, TRUE) setConditionParam(condition, CONDITION_PARAM_MINVALUE, 200) setConditionParam(condition, CONDITION_PARAM_MAXVALUE, 350) setConditionParam(condition, CONDITION_PARAM_STARTVALUE, 10) setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000) setConditionParam(condition, CONDITION_PARAM_FORCEUPDATE, TRUE) setCombatCondition(combat1, condition) setCombatCondition(combat2, condition) setCombatCondition(combat3, condition) arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr3 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr4 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr5 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr6 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) local area5 = createCombatArea(arr5) local area6 = createCombatArea(arr6) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) setCombatArea(combat5, area5) setCombatArea(combat6, area6) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, parameters.combat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, parameters.combat4, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, parameters.combat5, parameters.var) end local function onCastSpell6(parameters) doCombat(parameters.cid, parameters.combat6, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5, combat6 = combat6 } addEvent(onCastSpell1, 300, parameters) addEvent(onCastSpell2, 600, parameters) addEvent(onCastSpell3, 900, parameters) addEvent(onCastSpell4, 600, parameters) addEvent(onCastSpell5, 900, parameters) addEvent(onCastSpell6, 1200, parameters) end Depois adicione em (.../data/spells/spells.xml) o seguinte codigo: <instant name="Life Fusion" words="exori gran tera" lvl="55" mana="250" prem="0" range="5" needtarget="1" blockwalls="0" exhaustion="2000" needlearn="0" script="life fusion.lua"> Creditos: orzeleagle Gostou, +REP1 ponto -
[Pedido] Comando !b Para Guild
Samukasz reagiu a NightmareRullesz por um tópico no fórum
Aqui está, no meu servir está funcionando normalmente, vê se aí pega também. function onSay(cid, words, param) local playerGuild = getPlayerGuildId(cid) if playerGuild > 0 then local playerGuildLevel = getPlayerGuildLevel(cid) if playerGuildLevel >= GUILDLEVEL_VICE then local players = getOnlinePlayers() local message = "*Guild* " .. getCreatureName(cid) .. " [" .. getPlayerLevel(cid) .. "]:\n" .. param; for i,playerName in ipairs(players) do local player = getPlayerByName(playerName); if getPlayerGuildId(player) == playerGuild then doPlayerSendTextMessage(player, MESSAGE_STATUS_WARNING, message); end end doPlayerSendCancel(cid, "Mensagem para os membros da guild."); else doPlayerSendCancel(cid, "Você precisa ser vice-líder para falar no guildcast."); end else doPlayerSendCancel(cid, "Desculpe, mas você precisar ter uma guild."); end return FALSE end Não sei de quem é, já veio no server quando o baixei.1 ponto -
[Action] Teleporte Conforme O Level
loleo77 reagiu a SkyDangerous por um tópico no fórum
+1 Script crie uma arquivo lua chamado random.lua local sky = { pos = {{x = 1009,y = 1025,z=7},{x = 1009,y = 1026,z=7},{x = 1009,y = 1027,z=7},{x = 1009,y = 1028,z=7}}, level = {100,200,300,400}, fight = true, premium = true, remover = true } function onUse(cid, item, frompos, item2, topos) level = getPlayerLevel(cid) if (sky.fight == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid,22,"Você Precisa estar sem battle para usar o item.") return FALSE elseif not isPremium(cid) and configs.premium then doPlayerSendCancel(cid, "Você precisa de premium account para usar o item.") return FALSE end if (level <= sky.level[1] ) and (sky.remover) then doRemoveItem(item.uid, 1) doTeleportThing(cid,sky.pos[1]) doSendMagicEffect(getPlayerPosition(cid), 10) doPlayerSendTextMessage(cid,22,"Voce foi teleportado para um lugar secreto.") elseif (level >= sky.level[1]) and (level < sky.level[2]) and (sky.remover) then doRemoveItem(item.uid, 1) doTeleportThing(cid,sky.pos[2]) doSendMagicEffect(getPlayerPosition(cid), 10) doPlayerSendTextMessage(cid,22,"Voce foi teleportado para um lugar secreto.") elseif (level >= sky.level[2]) and (level < sky.level[3]) and (sky.remover) then doRemoveItem(item.uid, 1) doTeleportThing(cid,sky.pos[3]) doSendMagicEffect(getPlayerPosition(cid), 10) doPlayerSendTextMessage(cid,22,"Voce foi teleportado para um lugar secreto.") elseif (level >= sky.level[4]) and (sky.remover) then doRemoveItem(item.uid, 1) doTeleportThing(cid,sky.pos[4]) doSendMagicEffect(getPlayerPosition(cid), 10) doPlayerSendTextMessage(cid,22,"Voce foi teleportado para um lugar secreto.") else doPlayerSendTextMessage(cid, 25, "Desculpa nao e possiver teleportar") end end na action.xml cola essa tag <action itemid= "2177" event="script" value="random.lua"/> Explicando o Script: Aqui são as posições que sera teleportado pos = {{x = 1009,y = 1025,z=7},{x = 1009,y = 1026,z=7},{x = 1009,y = 1027,z=7},{x = 1009,y = 1028,z=7}}, Aqui são os levels que podem teleportar level = {100,200,300,400}, Se ele pode estar em battle (True = Ativo | False = Desativado) fight = true, Se ele pode estar premium (True = Ativo | False = Desativado) premium = true, Se ele irá remover o item ao usar (True = Ativo | False = Desativado) remover = true Explore o script , modifique do seu jeito. Depois eu concerto o remover, esqueci dele Agradecimentos: apocarai demonbholder1 ponto -
[Ajuda] Preciso De Ajuda No Meu Fishing Poketibia
superbruno100 reagiu a jedian1 por um tópico no fórum
local condition = createConditionObject(CONDITION_INFIGHT) setConditionParam(condition, CONDITION_PARAM_TICKS, 60000) function onUse(cid, item, fromPos, itemEx, toPos) if getTilePzInfo(getCreaturePosition(cid)) == true then return doPlayerSendCancel(cid, 'You cannot fish in protection zone') end doAddCondition(cid, condition) d0 = { [0] = {pokemon = 'Magikarp'}, } d20 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, } d40 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, } d60 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, } d80 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, [7] = {pokemon = 'Starmie'}, [8] = {pokemon = 'Kingler'}, [9] = {pokemon = 'Seadra'}, } d100 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, [7] = {pokemon = 'Starmie'}, [8] = {pokemon = 'Kingler'}, [9] = {pokemon = 'Seadra'}, [10] = {pokemon = 'Starmie'}, [11] = {pokemon = 'Kingler'}, [12] = {pokemon = 'Seadra'}, } local config = { waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}, } local skill = getPlayerSkillLevel(cid, 6) local playerpos = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z} function Effect() doSendMagicEffect(toPos, 214) end function Say() if skill >= 0 and skill < 20 then local random = math.random(0, 0) doSendMagicEffect(getThingPos(cid), 173) doSendMagicEffect(toPos, 53) doSummonCreature(d0[random].pokemon, playerpos) setPlayerStorageValue(cid, 171833, -1) doPlayerAddSkillTry(cid, 6, 1) elseif skill >= 20 and skill < 40 then local random = math.random(0, 4) doSendMagicEffect(getThingPos(cid), 173) doSendMagicEffect(toPos, 53) doSummonCreature(d20[random].pokemon, playerpos) setPlayerStorageValue(cid, 171833, -1) doPlayerAddSkillTry(cid, 6, 1) elseif skill >= 40 and skill < 60 then local random = math.random(0, 5) doSendMagicEffect(getThingPos(cid), 173) doSendMagicEffect(toPos, 53) doSummonCreature(d40[random].pokemon, playerpos) setPlayerStorageValue(cid, 171833, -1) doPlayerAddSkillTry(cid, 6, 1) elseif skill >= 60 and skill < 80 then local random = math.random(0, 6) doSendMagicEffect(getThingPos(cid), 173) doSendMagicEffect(toPos, 53) doSummonCreature(d60[random].pokemon, playerpos) setPlayerStorageValue(cid, 171833, -1) doPlayerAddSkillTry(cid, 6, 1) elseif skill >= 80 and skill < 100 then local random = math.random(0, 9) doSendMagicEffect(getThingPos(cid), 173) doSendMagicEffect(toPos, 53) doSummonCreature(d80[random].pokemon, playerpos) setPlayerStorageValue(cid, 171833, -1) doPlayerAddSkillTry(cid, 6, 1) elseif skill >= 100 then local random = math.random(0, 12) doSendMagicEffect(getThingPos(cid), 173) doSendMagicEffect(toPos, 53) doSummonCreature(d100[random].pokemon, playerpos) setPlayerStorageValue(cid, 171833, -1) doPlayerAddSkillTry(cid, 6, 1) end end if(isInArray(config.waters, itemEx.itemid)) and getPlayerStorageValue(cid, 171833) >= 1 then doPlayerSendTextMessage(cid, 27, "You can't fish yet.") return false end if(isInArray(config.waters, itemEx.itemid)) and getPlayerStorageValue(cid, 171833) <= 0 then setPlayerStorageValue(cid, 171833, 1) doSendMagicEffect(toPos, CONST_ME_LOSEENERGY) doSendMagicEffect(toPos, 214) for i = 1,3 do addEvent(Effect,750*i,cid) end addEvent(Say,3000) return true end return true end testa ae1 ponto -
tem um comando sim se não me engano é: /newtype nome do player , id da outfit ou /newtype id da outfit , nome do player um desses jeito vai funcionar!1 ponto
-
Ofrog revivel tópico!!! mas eu acho que achei que teste: http://sha1.unidadlocal.com/904d92ca847a54019ac49b950dc97edad3e6863a1 ponto
-
[Ajuda] Armadura Para Paladins!
carlimpirate reagiu a GodBeen por um tópico no fórum
Entao.. Mexi la nos Movements ta do mesmo jeito! :s No Itens.xml Ta assim: </item> <item id="8882" article="an" name="master pala armor"> <attribute key="weight" value="12000" /> <attribute key="armor" value="15" /> <attribute key="absorbPercentholy" value="10" /> <attribute key="absorbPercentfire" value="5" /> <attribute key="absorbPercenthearth" value="5" /> <attribute key="absorbPercentice" value="5" /> <attribute key="skillAxe" value="2" /> <attribute key="slotType" value="body" /> <attribute key="skillDist" value="8" /> </item> Obrigado Mais uma vez! É.. Era o que eu vi mesmo ^^ não tem nada de errado com o item '-' o problema deve ta nas vocations ^^ o id delas deve ser outro ^^ me mande o seu vocations.xml por pm pra mim dar uma olhada.1 ponto -
Refinada
BizaoOtServer reagiu a Sanf por um tópico no fórum
Junto né, tu que fez mesmo?, pra começar esse é o script do mock, editado por min.. créditos não são nada seus, aliás uns 0,5% por traduzir as frases1 ponto -
Guuh Torres Vs 4.0
Deadpool reagiu a GuuhTorres por um tópico no fórum
Guuh Torres Vs 4.0 *Pessoal,me desculpem pela demora da atualização,pois tinha muitos bugs nesta base,e em pedidos de vários xtibianos,arrumei o "Pokemon Squadium" do brun123...Este server era um bom server,mais tinha muitos bugs,irei listar os que eu arrumei,ou acrescentei: -Catch -Goback -Portrait -Pokedex -Order -Talkactions -!lg para mudar a linguagem (English-Português) -Status sistema -Novos pokemons (Johto-Shinys) -Coloquei mais moves (Johto) -Npc Name (Que coloca um apelido ao pokemon) no ultimo andar do CP -Novo Mapa do Betinhowz666 -Novas quests -Novas Spawns (Eu não sei fazer muito bem,mais dá para usar) -PVP ZONE -Efeito ao upar level -Client na pasta (IP : 127.0.0.1) -Senha do GOD : guuh/torres DOWNLOAD do server: -Guuh Torres vs 4.0 Créditos : -GuuhTorres 25% -Brun123 40% (Caso você ler este tópico,peço que adicione ght-2-@hotmail.com) -Betinhowz666 15% -Xtibia 5% -Victorkta 5% -Ciffer 5% -Italo 5% QUE VENHAM OS REPS :button_ok: ------------------------------------------------------------- PRÓXIMA ATUALIZAÇÃO!!! Na próxima atualização irei fazer sem os BUGS,que vocês falarem...1 ponto