Ir para conteúdo

arthur199

Campones
  • Total de itens

    16
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    arthur199 deu reputação a drakylucas em Arena Sobrevivencia Event System   
    Bom, esse sistema é requisitado por muitos donos de servidores..
    sempre quando pedem as pessoas fazem e enviam por PM, por ser meio dificil...
     
    Essa é minha versão desse sistema
    Créditos 90% Draky Lucas (eu)
    10% Vodkart (uma função que utilizei e me explicou como funcionaria o sistema, q os players nao sabem explica direito kk)
     
    O que ele é?
    o GM do servidor digita /arena X, onde o X é o numero de jogadores necessarios para o evento começar..
    supondo que o GM digitou /arena 5:
    o evento criaria um teleport na posição configurada;
    esperaria 5 players entrarem nesse teleport (não contando os GM's.. também configuravel);
    assim que o 5º player entrasse, o evento esperaria um delay (configuravel) e sumonaria os bixos de cada level do evento (monstros e leveis configuraveis), e assim que criasse os monstros, contaria o mesmo delay varias veses para ir avançando de nivel (e criando mais monstros), os que sobreviverem ao ultimo nivel (configuravel) ganham premios (configuraveis). Não se morre no evento e não se adquire loot dos monstros, mas ganha exp dos monstros também!
    [SIM, É CONFUSO DE ENTENDER.. COLOQUE NO SERVIDOR E VEJA VOCÊ MESMO]
     
    TESTADO COM The Lost Server 8.6
    (Caso dê erro de storage, é pq não sei se no TFS/Baiak tem as funçoes setStorage com esse nome, mas me avise que eu arrumo a versão TFS/BAIAK)
     

    Instalando o sistema:


    Mapa:
     

     
    Script:
    na pasta onde fica o executavel do server, há uma pasta chamada Mods, entre nela e crie um arquivo chamado arena.xml e nele coloque isso:
    [PS: Editado 01:39 - 14/07/2012 por correção de um erro ortográfico do forum que comeu um parenteses do script]

    <?xml version="1.0" encoding="UTF-8"?> <mod name="Arena" version="1.0" author="DrakyLucas" contact="XTibia" enabled="yes"> <config name="arena_config"><![CDATA[ config = { delay = 60, -- tempo de um level para o outro posicaoPlayer = {x = 37,y = 96,z = 7}, -- posição q o player vai cair dps de entra no TP posicaoArena = {{x = 35,y = 94,z = 7},{x = 42,y = 99,z = 7}}, premio = { {2160,70}, {2152,50}, }, -- ID, Quantidade... só aceita de 1 a 100 por vez, e você pode adicionar quantos itens quiser. storage = 15444, -- não mecha.. posicaoTp = {x = 37, y = 91, z = 7}, -- posicao que o teleporte vai aparecer acesso = 3, -- acesso minimo para ser ignorado pelo evento, e o mesmo acesso para poder inicializa-lo } -- você pode adicionar quantos leveis desejar -- [NumeroDoLevel] = {{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade}}, leveis = { [1] = {{"Dragon",5}}, [2] = {{"Dragon",5},{"Dragon Lord",2}}, [3] = {{"Dragon Lord",5}}, [4] = {{"Demodras",2},{"Demon",1}}, [5] = {{"Demon",5},{"Orshabaal",1},{"Ferumbras",1}}, } function abrirTeleport(n) doItemSetAttribute(doCreateItem(1387, config.posicaoTp), "aid", 2941) -- cria o tp e deixa aid 2941 doBroadcastMessage("O Evento arena vai começar! teleport foi aberto e faltam ".. n .. " pessoas para o evento iniciar!") doSetStorage(config.storage, n) end function fecharTPeAguardarEvento() doRemoveItem(getTileItemById(config.posicaoTp, 1387).uid,100) doBroadcastMessage("O evento ja concluio " .. #getPlayersInArena() .. " players e começará em " .. config.delay .. " segundos!") addEvent(evento,config.delay*1000,1) end function HaveCreatureArena(area, remove, clean) -- função do Vodkart for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end if clean ~= false then doCleanTile(pos, false) end end end end function resetEvento() doSetStorage(config.storage, -1) end function criarMonstros(lv) local monstro = leveis[lv] local area = {config.posicaoArena[1],config.posicaoArena[2]} for i = 1,#monstro do for k=1,monstro[i][2]do pos = {x=math.random(area[1].x,area[2].x), y=math.random(area[1].y,area[2].y), z=area[1].z} monstrinho = doCreateMonster(monstro[i][1], pos) registerCreatureEvent(monstrinho, "removerCorpse") end end end function evento(i) if #getPlayersInArena() == 0 then doBroadcastMessage("Ninguem sobreviveu a arena =/") doBroadcastMessage("EVENTO TERMINADO!") HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) -- remove monstros, itens da arena resetEvento() return true end if i == (#leveis +1) then HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) doBroadcastMessage("Evento finalizado, " .. #getPlayersInArena() .. " sobreviveram ao evento!") for _, pid in ipairs(getPlayersInArena()) do doPlayerSendTextMessage(pid,22,"Parabens, você sobreviveu ao evento!") addItens(pid) doTeleportThing(pid,getTownTemplePosition(getPlayerTown(pid))) end resetEvento() return true end for _, pid in ipairs(getPlayersInArena()) do doPlayerSendTextMessage(pid,22,"GoGo Nivel " .. i .. " !!!") end criarMonstros(i) addEvent(evento,config.delay*1000,i+1) end function addItens(pid) for i=1,#config.premio do doPlayerAddItem(pid,config.premio[i][1],config.premio[i][2]) end doPlayerSendTextMessage(pid,22,"Parabens, voce recebeu seus premios!") end function getPlayersInArena() local t = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerAccess(pid) < config.acesso then if isInRange(getCreaturePosition(pid), config.posicaoArena[1], config.posicaoArena[2]) then table.insert(t, pid) end end end return t end ]]></config> <talkaction words="/arena" event="buffer"><![CDATA[ domodlib('arena_config') if getPlayerAccess(cid) < config.acesso then return doPlayerSendCancel(cid,"Voce nao tem acesso para esse comando") end if tonumber(param) ~= nil then -- se o parametro é numerico if tonumber(param) > 0 then doSetStorage(config.storage, param) abrirTeleport(param) end else doPlayerSendTextMessage(cid,19,"Digite /arena e um numero.. \n exemplo: \n/arena 5") end ]]></talkaction> <movevent type="StepIn" actionid="2941" event="script"><![CDATA[ domodlib('arena_config') if getPlayerAccess(cid) > config.acesso then doTeleportThing(cid, config.posicaoPlayer) return false end -- GM nao conta doSetStorage(config.storage,getStorage(config.storage) - 1) doTeleportThing(cid, config.posicaoPlayer) registerCreatureEvent(cid, "naoAtacarPlayer") registerCreatureEvent(cid, "morrerNaArena") if getStorage(config.storage) <= 0 then fecharTPeAguardarEvento() end return true ]]></movevent> <event type="login" name="VerSeTaNaArenaEExpulsa" event="script"><![CDATA[ domodlib('arena_config') if isInRange(getCreaturePosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true ]]></event> <event type="combat" name="naoAtacarPlayer" event="script"><![CDATA[ domodlib('arena_config') if isPlayer(cid) and isPlayer(target) then if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) and isInRange(getPlayerPosition(target), config.posicaoArena[1], config.posicaoArena[2]) then doPlayerSendCancel(cid, "Nao ataque seus amigos.") return false end end return true ]]></event> <event type="death" name="removerCorpse" event="script"><![CDATA[ domodlib('arena_config') doCreatureSay(cid,"Ninguem terá meu loot! Buaahahahha",1) pos = getCreaturePosition(cid) addEvent(doCleanTile,1,pos, false) return true ]]></event> <event type="statschange" name="morrerNaArena" event="script"><![CDATA[ domodlib('arena_config') if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then if type == STATSCHANGE_HEALTHLOSS then if isPlayer(cid) then if value >= getCreatureHealth(cid) then doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(pid,22,"Você morreu na arena =/.. veja pelo lado positivo, você nao perdeu nada!") doCreatureAddHealth(cid,getCreatureMaxHealth(cid) - getCreatureHealth(cid)) return false end end end end return true ]]></event> </mod>
     
     
     
     
    pronto, sistema adicionado.. agora vamos configurar:
    Tempo entre cada level
    Posição que está em branco na foto
    Posições que estão em azul na foto
    Premios (copie e cole como está, mude valores, adicione mais itens.. não há um limite de premios)
    Posição que o TP aparecerá para os players entrarem no event
    Acesso minimo para dar /arena X
    Monstros de cada Level (Obs: você pode adicionar quantos leveis desejar para o evento)
     
     
     
    Possiveis Erros:
     
    caso dê erro citado por algumas pessoas no forum (logo abaixo)
     
    é porque vocês utilizam uma distro diferente da minha e incompativel com UTF-8 então mudem

    <?xml version="1.0" encoding="UTF-8"?>
    por

    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    e tudo deverá funcionar.
    Correção do erro feita pelo usuario KUNGLOW
    obrigado pela atenção
     
     
     

    Obrigado
    .. EXCLUSIVO XTIBIA

  2. Upvote
    arthur199 deu reputação a LuckinhaSan em Xamp so acessa phpmyadmin do localhost   
    Vai Em apache/conf/extra e Abra o Arquivo httpd-xampp.conf
     
    Procure Por Isso -
     
     
     
    Substiua Por Isso -
     
     
  3. Upvote
    arthur199 deu reputação a roriscrave em Xamp so acessa phpmyadmin do localhost   
    ta dando esse erro agora, não consigo acessar nem do localhost nem de outro local:
     
    Acesso Proibido!
     
    Você não tem premissão para acessar o objeto requisitado. Ele pode estar protegido contra leitura ou não ser legível pelo servidor.
    Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster.
     
    Estava assim:

    <LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))"> Order deny,allow Deny from all Allow from ::1 127.0.0.0/8 \ fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \ fe80::/10 169.254.0.0/16 ErrorDocument 403 /error/HTTP_XAMPP_FORBIDDEN.html.var </LocationMatch>
     
    Mudei pro seu e fico assim:

    <LocationMatch "^/(?i:(?:xampp|licenses|webalizer|server-status|server-info))"> Order deny,allow Deny from 212.124.114.48 Allow from all ErrorDocument 403 /error/HTTP_XAMPP_FORBIDDEN.html.var </LocationMatch>
  4. Upvote
    arthur199 deu reputação a Natanael Beckman em ShopGuild Points 100% add em player offline.   
    Obrigatoriamente leia tudo!

    Opa galera mais uma vez eu trazendo o melhor para todos.
    Hoje vou postar o sistema de Guild de Points que eu utilizo em meu OTserver, acredito que dificilmente será encontrado por ae um tão completo e sem bugs igual o que será postado logo abaixo, é um sistema completo que é utilizado pelo líder da guild executando um comando que, se tiver de acordo com as regras que seram feitas por você, todos os membros da guild iram receber os pontos uma unica vez, lembrando que quando os pontos são adicionados a um player ele não receberá entrando em outra guild e não receberá criando outro personagem na conta, resumindo ele só receberá uma unica vez na conta e com um player só. E um dos detalhes que me causava dor de cabeça era que quando um líder executava o comando, quem estava online recebia os pontos, mais quem estava offline não recebia, isso acontecia normalmente porque tem guilds que contém 50, 70, 100 players, portanto nem sempre todos estavam online. O comando só pode ser executado uma vez por dia cada guild, para não gerar processamentos desnecessários e assim um mal funcionamento do servidor.

    Cada administrador pode configurar seu sistema da forma que quiser, por ser um sistema muito simples, você pode bota que todos os players estejam no minimo level x, que a guild só possa executar o comando quando estiver quantidade x de players online, isso é bom porque traz um certa dificuldade para fraudes de pontos, e o sistema só vira bagunça dependendo do que você vai oferecer no seu shop guild, eu particularmente só utilizei esse comando porque muitas guilds grandes pediam pontos, eles me cobravam uma quantidade x de pontos e eu cobrava uma quantidade x de player então pra automatizar o processo e não ter dor de cabeça foi feito todo esse sistema. Se você analisar bem vai ver que tudo isso só gera mais crescimento ao seu servidor.
    Bom, vamos ao sistema:

    Em talkactions.xml, adicione a tag abaixo:
    <talkaction words="!guildpoints" event="script" value="guildpoints.lua"/> Na pasta talkactions/scripts faça um .lua com o nome guildpoints e dentro dele adicione os coder abaixo: GuildPointsConfigs = { ExecuteIntervalHours = 24, NeedPlayersOnline = 10, NeedDiferentIps = 6, MinLevel = 80, AddPointsForAcc = 9 } function getGuildPlayersValidAccIDS(GuildID, MinLevel) local RanksIDS = {} local AccsID = {} local ValidAccsID = {} Query1 = db.getResult("SELECT `id` FROM `guild_ranks` WHERE guild_id = '".. GuildID .."'") if(Query1:getID() == -1) then return ValidAccsID end for i = 1, Query1:getRows() do table.insert(RanksIDS, Query1:getDataInt("id")) Query1:next() end Query2 = db.getResult("SELECT `account_id` FROM `players` WHERE `rank_id` IN (".. table.concat(RanksIDS, ', ') ..") AND `level` >= ".. MinLevel .."") if(Query2:getID() == -1) then return ValidAccsID end for i = 1, Query2:getRows() do local AccID = Query2:getDataInt("account_id") if #AccsID > 0 then for k = 1, #AccsID do if AccID == AccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(AccsID, AccID) end else table.insert(AccsID, AccID) end Query2:next() end Query3 = db.getResult("SELECT `id` FROM `accounts` WHERE `guild_points_stats` = 0 AND `id` IN (".. table.concat(AccsID, ', ') ..")") if(Query3:getID() == -1) then return ValidAccsID end for i = 1, Query3:getRows() do local AccID = Query3:getDataInt("id") if #ValidAccsID > 0 then for k = 1, #ValidAccsID do if AccID == ValidAccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(ValidAccsID, AccID) end else table.insert(ValidAccsID, AccID) end Query3:next() end return ValidAccsID end function onSay(cid, words, param, channel) if(getPlayerGuildLevel(cid) == 3) then local GuildID = getPlayerGuildId(cid) Query = db.getResult("SELECT `last_execute_points` FROM `guilds` WHERE id = '".. GuildID .."'") if(Query:getID() == -1) then return true end if Query:getDataInt("last_execute_points") < os.time() then local GuildMembers = {} local GuildMembersOnline = {} local PlayersOnline = getPlayersOnline() for i, pid in ipairs(PlayersOnline) do if getPlayerGuildId(pid) == GuildID then if getPlayerLevel(pid) >= GuildPointsConfigs.MinLevel then table.insert(GuildMembersOnline, pid) end end end if #GuildMembersOnline >= GuildPointsConfigs.NeedPlayersOnline then local IPS = {} for i, pid in ipairs(GuildMembersOnline) do local PlayerIP = getPlayerIp(pid) if #IPS > 0 then for k = 1, #IPS do if PlayerIP == IPS[k] then AddIPList = false break end AddIPList = true end if AddIPList then table.insert(IPS, PlayerIP) end else table.insert(IPS, PlayerIP) end end if #IPS >= GuildPointsConfigs.NeedDiferentIps then local ValidAccounts = getGuildPlayersValidAccIDS(GuildID, GuildPointsConfigs.MinLevel) db.executeQuery("UPDATE `guilds` SET `last_execute_points` = ".. os.time() +(GuildPointsConfigs.ExecuteIntervalHours * 3600) .." WHERE `guilds`.`id` = ".. GuildID ..";") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "".. #ValidAccounts .." Players received points") if #ValidAccounts > 0 then db.executeQuery("UPDATE `accounts` SET `guild_points` = `guild_points` + " ..GuildPointsConfigs.AddPointsForAcc .. ", `guild_points_stats` = ".. os.time() .." WHERE `id` IN (" .. table.concat(ValidAccounts, ',') ..");") for i, pid in ipairs(GuildMembersOnline) do local PlayerMSGAccID = getPlayerAccountId(pid) for k = 1, #ValidAccounts do if PlayerMSGAccID == ValidAccounts[k] then doPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "You received "..GuildPointsConfigs.AddPointsForAcc .." guild points.") break end end end end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only ".. #IPS .." players are valid, you need ".. GuildPointsConfigs.NeedDiferentIps .." players with different ips.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Has only ".. #GuildMembersOnline .." players online you need ".. GuildPointsConfigs.NeedPlayersOnline .." players online at least from level ".. GuildPointsConfigs.MinLevel ..".") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The command can only be run once every "..GuildPointsConfigs.ExecuteIntervalHours .." hours.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.") end return true end No coder acima bem no inicio tem as linhas seguintes para configurar:

    ExecuteIntervalHours = 24, ( Intervalo para execução do comando, ae está de 24 em 24hrs)
    NeedPlayersOnline = 10, (Quantos players é preciso está online para poder executar o comando.)
    NeedDiferentIps = 6, (Quantos IPS diferentes são necessários para executar o comando no exemplo ae tem 6.)
    MinLevel = 80, (Aqui adicione o level minimo, é necessário que todos os player da guild tenha o level pedido para o lider executar o comando.)
    AddPointsForAcc = 9, (Aqui é a quantidade de pontos para adicionar em cada player da guild.)

    Certo, a parte do servidor é esta, ta feita, vamos adicionar a database o coder a seguir:
    ALTER TABLE `accounts` ADD `guild_points` INTEGER(11) NOT NULL DEFAULT 0; ALTER TABLE `accounts` ADD `guild_points_stats` INT NOT NULL DEFAULT '0'; ALTER TABLE `guilds` ADD `last_execute_points` INT NOT NULL DEFAULT '0'; CREATE TABLE `z_shopguild_offer` ( `id` int(11) NOT NULL auto_increment, `points` int(11) NOT NULL default '0', `itemid1` int(11) NOT NULL default '0', `count1` int(11) NOT NULL default '0', `itemid2` int(11) NOT NULL default '0', `count2` int(11) NOT NULL default '0', `offer_type` varchar(255) default NULL, `offer_description` text NOT NULL, `offer_name` varchar(255) NOT NULL, `pid` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_item` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `offer_id` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_pacc` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `pacc_days` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) Olha estamos quase finalizando tudo, só precisamos terminar a parte de web.
    O meu GuildShop eu copiei meu shopsystem.php e fiz umas modificações, simples você pode fazer o mesmo é menos trabalhoso.
    Copie o shopsystem.php renomeie para shopguild.php, após abra-o e modifique como manda a seguir:

    shop_system para shopguild_system
    premium_points para guild_points
    premium points para guild points
    z_shop_offer para z_shopguild_offer
    shopsystem para shopguild
    z_shop_history_pacc para z_shopguild_history_pacc
    z_shop_history_item para z_shopguild_history_item
     
    Ou utilize este já pronto:
    shopguild.php
     
    O shopguildadmin.php esté no link abaixo, basta fazer o mesmo procedimento:
    shopguildadmin.php
     
    Em index.php add:
    case "shopguild"; $topic = "Shop Guild"; $subtopic = "shopguild"; include("shopguild.php"); break; case "shopguildadmin"; $topic = "ShopGuild Admin"; $subtopic = "shopguildadmin"; include("shopguildadmin.php"); break; Vá em config.php adicione:
    $config['site']['shopguild_system'] = 1; $config['site']['access_adminguild_panel'] = 9; Vá em layouts.php adicione abaixo de buypoints:
    <a href='?subtopic=shopguild'> <div id='submenu_shopguild' 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_shopguild' class='ActiveSubmenuItemIcon'style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Shop Guild</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Em layouts.php add depois do shopadmin:
    if($group_id_of_acc_logged >= $config['site']['access_adminguild_panel']) echo "<a href='?subtopic=shopadmin'> <div id='submenu_shopguildadmin' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)'onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_shopguildadmin' class='ActiveSubmenuItemIcon'style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>! ShopGuild Admin !</font></div> <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> </div> </a>"; Finalmente terminamos!
    Bom todo esse processo é feito só para facilitar tudo pra você e o player e pra diferenciar o Shop System do Shop Guild, porque um sustenta as despesas do server e o outro atrai player, porque pra ter player é preciso ter player.

    Galera acredito que não esteja faltando nada, espero que gostem e tudo que eu poder fazer para nossas melhoras estarei postando, me desculpem meu erros de português mais o que importa aqui é o script está correto, abraços!


    Créditos:
    Natanael Beckman
    LukeSkywalker (Raphael Luiz) .lua 100%
    Não proíbo ninguém de copia o tópico só peço que onde você adicione inclua os créditos mencionados.
  5. Upvote
    arthur199 deu reputação a LuckinhaSan em Perfect Zombie System Event   
    Mapa para Zombie Event - Download Via SpeedyShare
     
    OBS - Antes de falarem que já existe no fórum, teste os outros scripts.
     
    Então começando por informações basícas :
    Para abrir o evento : /zombiestart numero de players. Exemplo: /zombiestart 2
    Para Iniciar o evento sem o numero máximo de players: /zombiestart force.
    Apos aberto sempre que um player enta no portal do evento e avisado por broadcast.
    Entrou na arena e o numero de players restantes para o evento ser iniciado.
    Apos o evento ser iniciado um zombie e sumonado a cada 20 segundos, o player que for infectado e teleportado para o templo vence o ultimo player restante na arena.
    Ao terminar o evento e anuciado por broadcast o nome do player vencedor tempo que durou na arena e por quantos zombies ele sobreviveu, entrega de premio automatica, premio configuravel.
    Garantia de funcionabilidade perfeita em TFS 0.4 se configurado corretamente, não testado em outras versões de distros.
     
    Vamos ao evento!
     
    Como implementar em seu site -
     
    Vá ate "C:/xampp/htdcos/" crie um arquivo chamado Zombieevent.php dentro coloque isso -
     
     
     
    Depois vá na pasta do xampp/htdocs, abra o index.php e em baixo disso -

    case "buypoints": $topic = "Buy Points"; $subtopic = "buypoints"; include("buypoints.php"); break;
     
    Adicione 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 disso -

    <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>
     
     
    Vamos Ao Script!
     
    Vá em data/creaturescripts/scripts e crie uma pasta com o nome de zombie.
    Cria um arquivo .lua com o nome de onattack e adicione isso -
     
     
     
    Ainda na pasta zombie, crie um arquivo .lua com o nome de ondeath e adicione isso -
     
     
     
    Agora crie um arquivo .lua com nome de onthink e adicione isso -
     
     
     
    Agora vá em data/globalevents/scripts e também crie uma pasta com o nome de zombie.
    Crie um arquivo .lua com o nome de onstratup e adicione isso -
     
     
     
    Crie um arquivo .lua com o nome de onthink e adicione isso -
     
     
     
    Agora va na pasta data/lib e crie um arquivo .lua chamado zombie_event, adicione isso -
     
     
     
    Agora va em data/movements/scripts crie uma pasta chamada zombie.
    Crie um arquivo .lua com o nome de oneenter e adicione isso -
     
     
     
    Vá em data/talkactions/scripts e crie uma pasta com o nome de zombie.
    Crie um arquivo .lua com o nome de onsay e adicione isso -
     
     
     
    Vá na pasta data/monster e crie um arquivo .xml com o nome de zombie_event, e adicione isso -
     
     
     
    Agora as tags -
     
    Vá em data/creaturescripts, abra creaturescripts.xml e adicione as tag's -

    <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/>
     
    Vá em data/globalevents, abra globalevents.xml e adicione as tag's -

    <globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/>
     
    Vá em data/movements, abra movements.xml e adicione a tag -

    <movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/>
     
    Vá em data/talkactions, abra talkactions.xml e adicione a tag -

    <talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/>
     
    Vá em data/monster, abra monster.xml e adicione a tag -

    <monster name="Zombie Event" file="zombie_event.xml"/>
     
     
    Tutorial de como configurar zombie event!
    data/creturescripts/scripts/zombie/onattack.lua

    function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end
     
     
    Partes configuraveis no script no caso são os avisos do evento que não recomendo mudar na verdade os premios que no caso são esses:
    doPlayerAddItem(winner, 2157, 5, true) --/ 2157= ID do item no caso golden nugguets mais você pode por o que quiser, 5= Quatidade do item a ser dado. True= no caso creio que seja para deixar essa premiação ativa ou não true = verdadeira no caso ativa para deixar a premiação inativa apenas mude o true por false ou remova a tag... Para adicionar mais premios e só adicionar mais tags como tá ai no script o outro premio no caso ali e uma boh.
     
     
    Explicando - data/lib/zombie_event.lua
     

    -- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 20 –- Não precisa mexer. ZE_ACCESS_TO_IGNORE_ARENA = 4 –- Não precisa mexer. -- POSITIONS ZE_blockEnterItemPosition = {x=32341, y=32213, z=7} -- onde nasce o teleport? ZE_enterPosition = {x=32154, y=32578, z=7} -- onde os players nascem dentro da arena zombie? ZE_kickPosition = {x=32368, y=32241, z=7} -- quando morre vai para onde? ZE_spawnFromPosition = {x=32140,y=32566,z=7} -- para sumonar zombie (de)/ aqui vc pega no rme na area do seu evento o primeiro tile da arena </\ e copia a position. ZE_spawnToPosition = {x=32168,y=32590,z=7} -- para sumonar zombie (ate) e aqui a mesma coisa mais o tile de\/> só lembrando e o ultimo tile da arena do lado de fora não o ultimo tile do mapa. http://imageshack.us/scaled/landing/854/semttulophp.png
     
    É isso ai, espero que tenham gostado!
    Créditos - Fausto32/Isbigo/AnneMotta
  6. Upvote
    arthur199 deu reputação a MarcelloMendes em [Advanced Reset System 2.0]   
    Ss talvez eu diminua ele!
     
    vlw mano xD
     
    abraço
  7. Upvote
    arthur199 deu reputação a pessoa93 em Adicionando Itens Para Todos Os Players.   
    Esse script dar itens para todos os players online.





     
    Em /data/talkactions/talkactions.xml adicione:
     
    Em /data/talkactions/scripts/additem.lua adicione:
     
    Créditos:
    Feito por Dubler.
    Traduzido por mim para o Xtibia.
  8. Upvote
    arthur199 deu reputação a MarcelloMendes em [Advanced Reset System 2.0]   
    -= Advanced Reset System 2.0 =-


    By: MarcelloMkez

     
    Fala galerinha, to aqui dinovo , mas agora e com a versão 2.0 do meu 'Advanced Reset System'.
    E como prometido, trazendo algumas novidades:
     
    _________________________________________________________________________________________________________________________________
     
    - Resets agora armazenados diretamente na 'DataBase', acabando com o sistema de Storages, e com o problema dos resets atrasados no look;
     
    - Opções para Abilitar e Desabilitar Condições como por exemplo: 'look = true' , [true,false] configurando como achar melhor;
     
    - E agora '[sTAGES]', para 'premmy' (Premium Account) e 'free' (Free Account);
     
    - Instala o System e cria a Tabela de Resets com o comando "/installreset";
     
    OBS: Sistema testado em 'Mysql' não tenho certeza si funciona em 'sql';
    e Testando em: 8.50 (TFS 0.3.6) e 8.6 (TFS 0.4.0)
    __________________________________________________________________________________________________________________________________
     



     
    Vá em data/Talkactions, e crie um arquivo .lua e nomeie para
     
    advancedResetSystem.lua e Adicione Isso:
     

    --[[ <(Advanced Reset System 2.0)> Autor: MarcelloMkez. Contato: (marcello_dirt@hotmail.com) Versão: 2.0 Testado em: 8.50 e 8.60 TFS: 0.3.6 and 0.4.0 Fórum: http://www.xtibia.com/forum/topic/142463-advanced-reset-system-20/ -=[Características]=- ~( Versão 2.0 )~ - Resets agora Armazenados na DataBase; (Sem Valor de Storage) - Instala o System e cria a Tabela de Resets com o comando "/installreset"; - Resets no Look do jogador ex: 22:10 You see Marcello [Reset 2] (Level 8). He is an elder druid.; - [sTAGES] para "Premium Account" e "Free Account"; ]] --=[Functions]=-- -- installReset()' [instala o Sistema.] -- tableResetInstall()' [Verifica Se o Sistema ja foi instaladao.] -- nowReseting()' [Verifica, retorna o erro ou reseta.] -- getPlayerReset(cid)' [Pega numero de resets do player.] -- checLevelStageReset(cid)' [Verifica o Level para Resetar.] -- newReset(cid)' [Verifica todas as Condições de Reset.] -- addValue(value)' [Adiciona numero de resets.] --=[Comandos de Jogadores]=-- -- "/installreset" -- Só será usado uma vez, para instalar o sistema. -- "!resetar" -- Para Resetar. function onSay(cid, words, param) if words =="!resetar" then --[ Condições de Reset ] -- local coNdConf = { needPz = true, -- Precisa estar em Pz pra resetar? [true, false] needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false] withe = false, -- Players com Pk Withe podem resetar? [true, false] red = false, -- Players com Pk Red pode resetar? [true, false] battle = false, -- Players precisão estar sem battle pra resetar? [true, false] teleport = true, -- Teleportar Player para o templo após resetar? [true, false] look = false, -- Aparecer Resets no Look do Player? [true, false] pid = getPlayerGUID(cid), -- Não Mexer. --[ Configurações do Reset ] -- resetConf = { Level = 350, -- Level Necessário para Resetar. [Valor] backLvl = 8, -- Level que voltará após o Reset. [Valor] time = 5, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor] }, } --[[>> STAGES <<]]-- x=true;X=true -- Não Mexer. local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}] -- [RESETS] | [PREMMY] | [FREE] stage1= {resets= 4, premmy= 330, free= 350}, stage2= {resets= 9, premmy= 340, free= 355}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}]) stage3= {resets= 14, premmy= 355, free= 360}, -- resets = Número de resets para o Stage; stage4= {resets= 19, premmy= 360, free= 365}, -- premmy = Level necessário para Premium Accounts; stage5= {resets= 24, premmy= 370, free= 380}, -- free = Level necessário para Free Accounts; stage6= {resets= 29, premmy= 380, free= 390}, -- Coloque em Ordem... stage7= {resets= 35, premmy= 400, free= 410}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES] stage8= {resets= 40, premmy= 410, free= 440}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x} stage9= {resets= 45, premmy= 450, free= 450}, stage10={resets= 50, premmy= 465, free= 465}, } --[[>> FIM STAGES <<]]-- --=[Pega Valor de Resets]=-- function getPlayerReset(cid) local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";") rss = qr:getDataInt("reset", coNdConf.pid) if rss < 0 then rss = 0 end return rss end local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid) local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";" local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";" local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";" local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";" --=[Reseta]=-- function addValue(value) if coNdConf.look == false then doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query) else doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query) return LUA_NO_ERROR end end function nowReseting() if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return true end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) addEvent(addValue, coNdConf.resetConf.time*1000, value) return true end end --[sTAGES Nao mexer em nada.]-- function checkLevelStageReset(cid) local stages = { {resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free}, {resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free}, {resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free}, {resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free}, {resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free}, {resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free}, {resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free}, {resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free}, {resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free}, {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, } local resets = getPlayerReset(cid) for i, tab in ipairs(stages) do if resets <= tab.resets then coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free break end end if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return TRUE end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) return true end end function newReset(cid) if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end if(coNdConf.needPa == true) and not isPremium(cid) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end local xy = {true,false} table.insert(stage.Abilitar, false) table.insert(stage.Desabilitar, false) if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then checkLevelStageReset(cid) elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then nowReseting() else doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!") end return true end function tableResetInstall() print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ") addEvent(newReset, 1000, cid) return false end if tableResetInstall() then end end --=[install System]=-- function installReset() if db.executeQuery("ALTER TABLE `players` ADD reset INT(11) NOT NULL DEFAULT 0;") then print("[MarcelloMkez] -= Advanced Reset System 2.0 por DataBase =- Instalado com sucesso!") return TRUE end print('[Advanced Reset System/MarcelloMkez] Não foi possível instalar o Sistema.') return FALSE end local tt = { "Preparando Instalação...", "Instalando: TableReset Db...", "Instalando: getPlayerReset()...", "Instalando: addValue()...", "Instalando: checkLevelStageReset()...", "Instalando: newReset() and nowReseting()...", "Finalizando Instalação...", "...", success = { "Iniciando...", "function: TableReset Db... [success]", "function: getPlayerReset()... [success]", "function: addValue(value)... [success]", "function: checkLevelStageReset()... [success]", "function: newReset() and nowReseting()... [success]", "Fim da Instalação. ", "by: ~~ MarcelloMkez ~~ \nContato: marcello_dirt@hotmail.com", inst = {"MarcelloMkez","Advanced Reset System 2.0 por DataBase" }, }, } if words == "/installreset" and getPlayerAccess(cid) >= 3 then function install() if installReset() then print(""..tt.success[7].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,""..tt.success[8].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] -="..tt.success.inst[2].."=- Instalado com sucesso!") else print("["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") end return 1 end function concl(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[7].."") print(""..tt[8].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[7].."") doPlayerSendTextMessage(cid, typetx,""..tt[8].."") addEvent(install, 1000,cid) end function finall(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[6].."") print(""..tt[7].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[6].."") doPlayerSendTextMessage(cid, typetx,""..tt[7].."") addEvent(concl, 3000,cid) end function installDd(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[5].."") print(""..tt[6].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[5].."") doPlayerSendTextMessage(cid, typetx,""..tt[6].."") addEvent(finall, 1000,cid) end function installCc(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[4].."") print(""..tt[5].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[4].."") doPlayerSendTextMessage(cid, typetx,""..tt[5].."") addEvent(installDd, 1000,cid) end function installBb(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[3].."") print(""..tt[4].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[3].."") doPlayerSendTextMessage(cid, typetx,""..tt[4].."") addEvent(installCc, 1000,cid) end function installAa(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[2].."") print(""..tt[3].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[2].."") doPlayerSendTextMessage(cid, typetx,""..tt[3].."") addEvent(installBb, 1000,cid) end function toInstall() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[1].."") print(""..tt[2].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[2].."") addEvent(installAa, 1000,cid) end function preparation() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[1].."") addEvent(toInstall, 3000,cid) end if preparation() then end end return 1 end --=[by: MarcelloMkez]=--
     
    E em Talkactions.xml adicione isso:

    <talkaction words="!resetar;/installreset" event="script" value="advancedResetSystem.lua"/>


     

     


     
    Instalando o Sistema

     
    - Após adicionar o script em TalkActions e em Talkactions.xml
     
    Use o comando "/installreset" em jogo,
     
    OBS: o System so pode ser Instalado pelo GOD!
     
    A a instalação será mostrada no default, e no Distro!
     
    Apos isso, Sistema Instalado!
     



     
    'Explicando stages:
     
    Stage 1:
     
    stage1= {resets= 4, premmy= 330, free= 350},
     
    resets: ---- Quantidade de Resets para o stage.
    premmy: ---- Level que Premmium Accounts podera Resetar. (no caso ate 4 resets)
    free: ------ Level que Free Accounts podera Resetar. (no caso ate 4 resets)
     
    --- Bom como vcs pode ver, vai ate o 'Stage 10':
     
    stage10={resets= 50, premmy= 465, free= 465},
     
    --- Intao irei explicar, caso queiram adicionar mais stages...
     
    Use 'Ctrl + G' com o script aberto, e digite 71, e aperte enter,
     
    logo ira direcionar para linha 71 que no caso é esta:
     
    stage10={resets= 50, premmy= 465, free= 465},
     
     
    - Abaixo dela adicione uma exatamente igual, so modificando o numero do stage ficando assim:
     
    stage10={resets= 50, premmy= 465, free= 465},
    stage11={resets= 55, premmy= 465, free= 465},
     
    Agora na linha 134 vai ta esta:
     
    {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free},
     
    Voce faz a mesma coisa adicionando embaixo da linha 134 porem mudando os numeros, ficando assim:
     
    {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free},
    {resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free},
     
     
    Pronto,
     
    Ja esta adicionado o 'Stage 11' xD,
     
    Assim voce pode adicionar quantos stages quiser, basta configurar corretamente...
     
    Mais duvidas postem aqui.
     
     



     
    Aqui termino o post!
     
    espero que gostem,
     
    grato:
     
    ~~MarcelloMkez~~
  9. Upvote
    arthur199 deu reputação a thefog em [Gesior Acc] Server Offline E 0 Players Online   
    Olá, muitos usuários do Gesior acc maker ja perceberam que no canto superior direito aparece Server Offline, alguns conseguiram arrumar, mais apartir de então começou a aparecer 0 Players Online ...
    vamos lá com meu 1º Tutorial !
     
    1º Para arrumar esse bug do ''Server Offline'', basta ir no arquivo em \xampp\htdocs\layouts\tibiacom\layout.php
    nele, encontre

    if($config['status']['serverStatus_online'] == 1)
    2º substituia por

    if($config['status']['serverStatus_online'] >= 0)
    Pronto! Problema do Server Offline Resolvido! mais pera aí ! de que adianta se agora ta aparecendo 0 players online?
     
    3º Agora, adicione ainda no layout.php, antes da tag <head> o seguinte script:

    <?PHP $update_interval = 10; if(count($config['site']['worlds']) > 1) { $worlds .= '<i>Select world:</i> '; foreach($config['site']['worlds'] as $id => $world_n) { $worlds .= ' <a href="?subtopic=whoisonline&world='.$id.'">'.$world_n.'</a> , '; if($id == (int) $_GET['world']) { $world_id = $id; $world_name = $world_n; } } $main_content .= substr($worlds, 0, strlen($worlds)-3); } if(!isset($world_id)) { $world_id = 0; $world_name = $config['server']['serverName']; } $order = $_REQUEST['order']; if($order == 'level') $orderby = 'level'; elseif($order == 'vocation') $orderby = 'vocation'; if(empty($orderby)) $orderby = 'name'; $tmp_file_name = 'cache/whoisonline-'.$orderby.'-'.$world_id.'.tmp'; if(file_exists($tmp_file_name) && filemtime($tmp_file_name) > (time() - $update_interval)) { $tmp_file_content = explode(",", file_get_contents($tmp_file_name)); $number_of_players_online = $tmp_file_content[0]; $players_rows = $tmp_file_content[1]; } else { $players_online_data = $SQL->query('SELECT * FROM players WHERE world_id = '.(int) $world_id.' AND online > 0 ORDER BY '.$orderby); $number_of_players_online = 0; foreach($players_online_data as $player) { $number_of_players_online++; $acc = $SQL->query('SELECT * FROM '.$SQL->tableName('accounts').' WHERE '.$SQL->fieldName('id').' = '.$player['account_id'].'')->fetch(); if(is_int($number_of_players_online / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; $rs = ""; if ($player['skulltime'] > 0 && $player['skull'] == 3) $rs = "<img style='border: 0;' src='./images/whiteskull.gif'/>"; elseif ($player['skulltime'] = $player['skull'] == 4) $rs = "<img style='border: 0;' src='./images/redskull.gif'/>"; elseif ($player['skulltime'] = $player['skull'] == 5) $rs = "<img style='border: 0;' src='./images/blackskull.gif'/>"; $players_rows .= '<TR BGCOLOR='.$bgcolor.'><TD WIDTH=10%><image src="images/flags/'.$acc['flag'].'.png"/></TD><TD WIDTH=70%><A HREF="?subtopic=characters&name='.urlencode($player['name']).'">'.$player['name'].$rs.'</A></TD><TD WIDTH=10%>'.$player['level'].'</TD><TD WIDTH=20%>'.$vocation_name[$world_id][$player['promotion']][$player['vocation']].'</TD></TR>'; } } ?>
    4º E onde estiver (em baixo do if que você alterou no passo 1)

    echo $config['status']['serverStatus_players'].'<br />Players Online';
    Substitua por

    echo ''.$number_of_players_online.'<br />Players Online';
    5º REP+ !

     
    Pronto ! Foi usado o Gesior 0.3.8
    Para quem ta desconfiando que eu copiei, o script que é para colocar antes da tag <head> foi tirado do whoisonline.php !
    mais tem gente que nunca nem imaginou em fazer isso!
    TUTORIAL 100% FEITO POR MIM, SE FOR POSTAR EM OUTRO FORUM, COLOQUE CRÉDITOS !
  10. Upvote
    arthur199 deu reputação a piet159 em Gesior - deleta pasta sozinho   
    Estou com problemas no meu gesior, por favor me ajudem,sou novo aqui e nao sei se estou no local correto mais por favor nao deletem meu topioco.
     
    Eu ponho meu servidor online, e uso o gesior acc maker de site, e uso o xampp pra rodar o site.
     
    Porem, vira e mexe, invadem meu servidor, e deletam a pasta HTDOCS.
    redirecionam para outro servidor, ou seja "FERRANDO" completamente com o meu server.
     
     
    alguem pelo amor de Deus me ajuda ??? Como que eu faço pra isso parar? nao aguento mais me ajudem por favor emploro
  11. Upvote
    arthur199 deu reputação a baloi123 em Bridge Of Fear   
    Utilizei dos items novos para fazer algo com um poco de rpg, se alguem quizer utilizar, modificar ou etc.. podem ficar a vontade, note que dentro da cazinha não esta feito nada... deixo uma ideia aqui se alguem quiser aproveitar... Mapa anexado, não vejo nescecidade de scan.
     
     
    ScreenShot
     

    bridgeoffear.rar
  12. Upvote
    arthur199 deu reputação a Tryller em [ Recomendado! ] [9.44] Crystal Server - 2.3Pl1 (Infinity Crystal)   
    Crystal Server




     

    Olá

    Venho lhes o Crystal Server.

     

    Aviso

    O Mapa é YurOTs 8.1 editado por mim Thryller (Shynzo). Mapa ainda está incompleto na parte de quests, mas este mapa fez muito sucesso na epoca 8.1 então resolvi atualiza-lo.

    Conta do GOD é 222222/password

     

    Estamos a procura de mappers e pessoas para trabalha na atualização da pasta data, monsters, items.xml, movements entre outras coisas. Lembrando que estas atualizações terão de ser o mais parecidas possiveis com o Tibia Global.





     


    [ File changes:
    M = Modificado
    D = Deletado
    A = Adicionado
    [ 2.3 - PL 1
    [ A...

    ]

    [ M...
    Crystal Server.exe
    config.lua
    data/weapons/weapons.xml
    ]

    [ D...

    ]
    ]

    ]

    [ Charges
    [ 2.3 - PL 1
    [ ENGLISH
    Added blackSkullDecreaseHealth at config.lua (Thriller)
    Fixed possible crash with Modern AAC and OTServ List (Thriller)
    Fixed weapons bugs http://vapus.net/forum/project.php?issueid=52
    ]

    [ PORTUGUES
    Adicionado blackSkullDecreaseHealth no config.lua (Thriller)
    Corrigido crash com Modern AAc e OTServ List (Thriller)
    Corrigido bug das weapons http://vapus.net/forum/project.php?issueid=52
    ]
    ]
    ]


     

     

    Downloads

    Download Server 2.3pl1

    Download Dll Files

     

    IP Changer

    Download do IP Changer

     

    Source - Baixe apenas se você souber para que serve

    Download source

     

    ------------------------------------------------

    Outras versões

    2.3

     

    Algumas SS



     



     



     



     

     

     





  13. Upvote
    arthur199 recebeu reputação de fgdl1991 em [Encerrado] Global 9.10 Tfs 0.4   
    nao sei se este eh o lugar certo
    no entanto se estiver errado movam pra outra area por favor.
     
    pessoal, meu server
    ta online
     
    mais do nada
    o executavel para de responder, e o ot trava dai ja era
     
    por favor me ajudem
     
    eu uso windows 7 64bits ultimate
     
    pc: phenon x4 8mb de cash 4 nucleos
    8gb ram ddr3
    hd 1,5 tera
    placa mae asus
    video, num lembro a marca n, mais eh 1,5 gb
     
    por favor me ajudem...
     
     
    ahh
     
    uso tfs 0.4 e o mapa eh global
     
     
    vlws
     
    rep + + + + + + + pra quem me ajuda *-*
  14. Upvote
    arthur199 deu reputação a Diogo em Criando Quests Bacanas   
    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.
  15. Upvote
    arthur199 deu reputação a eduardosm14 em [Encerrado] 9.10 War System   
    para corrigir esse erro vc deve utilizar um tfs 4 no tutorial que vc viu esse war system comtem esse tfs mas ele contem virus, pelomenos meu antivirus detecta!...
     
     
     
    SE AJUDEI REP++
  • Quem Está Navegando   0 membros estão online

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