Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 07/16/12 em todas áreas
-
Arena Sobrevivencia Event System
turox e 2 outros reagiu a drakylucas por um tópico no fórum
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 XTIBIA3 pontos -
[Oficial] Real Global Map hello Galerinha do Xtibia, Venho aqui desponibilizar o mapa do Doidin (8.57 Só que editado com minhas ideias e na versão 8.60 OBS: Para rodar esse servidor No seu pc voce tem que ter 2GB+ de memória ram e em bom estado. ( nao recomendo abrir o otserv com o mapa editor aberto junto). Real Global Map: - Versão do Tibia:8.60 - Mapa global 95% full. - Quase todos os NPC's do Tibia Global. - Servidor com o mínimo de bugs possíveis. - Scripts arrumados. - Entre outros... Cidades: Quest's: Oque tem de melhor que o servidor do Doidin? Quase nada pois ele copio minhas coisas x) Algumas Print Screen: para quem nao conseguiu abrir o spolier e gostaria de ver as SS link abaixo: print screen.txt Créditos: - Doohz Rush - Doidin - Alissow - DoidinMapper - RenanSdc - TFS Team - Styller Team - Alissow Team - Feragon - Viana! - Azevedo ATUALIZADO DIA 28/10/2010 Scan: Arquivo Muito grande para fazer scan. Remeres Mapa Editor 2.0 ( nao use outra versão ou vai bugar o mapa: Download Aqui! Doohz Rush Server : Download Aqui! OBS: FOI ARRUMADO TODOS OS LOOT'S DOS MONSTROS, E FOI ADICIONADO A NOVA AREA DE ZÃO (OS Draken elite etc, todos configurados perfeitamente ) Atualização 2.2; Arrumado os Teleport's dos Drakens; Editado os seal's da POI (+ parecido com global); adicionado 1 npc de runa em northern de ZAO; arrumada as Houses, e bugs de Cormaya; Retirado BUG de money; Arrumado detalhes do mapa. MSN: Doohz_rush@hotmail.com Gostou? REP+ Ali do lado :arrow:1 ponto
-
Esse sistema serve para que você possa usar duas weapons ao mesmo tempo uma em cada slot correspondente as mãos do personagem. Com ele você pode utilizar duas sword's, dois axe's, dois club's ou etc... Esse sistema simplismente soma o attack do item que estiver no slot esquerdo com o attack do item que estiver no slot esquerdo. Aew vai os code para inserir nas sources! Vá em player.ccp e procure por: ret = RET_CANONLYUSEONEWEAPON; Você ira encontrar dois "ret = RET_CANONLYUSEONEWEAPON;", substitua por: ret = RET_NOERROR; Após, localize weapons.h e procure por: const Weapon* getWeapon(const Item* item) const; Embaixo você coloca: static int32_t getAttackLeft; static int32_t getAttackRigth; static int32_t getLeftExtraAttack; static int32_t getRigthExtraAttack; Depois, localize weapons.ccp e procure por: int32_t WeaponMelee::getWeaponDamage(const Player* player, const Creature* target, const Item* item, bool maxDamage /*= false*/) const { int32_t attackSkill = player->getWeaponSkill(item); int32_t attackValue = std::max((int32_t)0, (int32_t(item->getAttack() + item->getExtraAttack()) - elementDamage)); float attackFactor = player->getAttackFactor(); Substitua por: int32_t WeaponMelee::getWeaponDamage(const Player* player, const Creature* target, const Item* item, bool maxDamage /*= false*/) const { int32_t getAttackLeft; int32_t getAttackRigth; int32_t getLeftExtraAttack; int32_t getRigthExtraAttack; getAttackLeft = 0; getAttackRigth = 0; getLeftExtraAttack = 0; getRigthExtraAttack = 0; if (getAttackLeft == 0) { if (player->getInventoryItem(SLOT_LEFT) != NULL) { getAttackLeft = player->getInventoryItem(SLOT_LEFT)->getAttack(); getLeftExtraAttack = player->getInventoryItem(SLOT_LEFT)->getExtraAttack(); } else if (player->getInventoryItem(SLOT_LEFT) == NULL) { getAttackLeft = 0; getLeftExtraAttack = 0; } } if (getAttackRigth == 0) { if (player->getInventoryItem(SLOT_RIGHT) != NULL) { getAttackRigth = player->getInventoryItem(SLOT_RIGHT)->getAttack(); getRigthExtraAttack = player->getInventoryItem(SLOT_RIGHT)->getExtraAttack(); } else if (player->getInventoryItem(SLOT_RIGHT) == NULL) { getAttackRigth = 0; getRigthExtraAttack = 0; } } int32_t attackValue = std::max((int32_t)0, (int32_t)((getAttackLeft + getLeftExtraAttack + getAttackRigth + getRigthExtraAttack) - elementDamage)); int32_t attackSkill = player->getWeaponSkill(item); float attackFactor = player->getAttackFactor(); Compile e pronto!1 ponto
-
Procurei em varios lugares do XTibia mas os unicos "vip system" que achei foi pelo comando "!addvip" e tals. Entao resolvi posta esse sistema que achei. Achei ele na otland entao os créditos nao sao meus, aki o link da onde tirei o tutorial. Clique aqui Vamos lá. Novas funções em lua: setPlayerVipDays(cid, days) getPlayerVipDays(cid) isPlayerVip(cid) doPlayerAddVipDays(cid, days) doPlayerRemoveVip(cid) Script: Vá na pasta do seu ot, abra data/lib/function e bote isso no final do script: vip_storage = 95883 function setPlayerVipDays(cid, days) return setPlayerStorageValue(cid, vip_storage, (os.time() + 86400 * days)) and days end function getPlayerVipDays(cid) local left, d = (getPlayerStorageValue(cid, vip_storage) - os.time()), 0 while left >= 86400 do left = left - 86400 d = d+1 end return d end function isPlayerVip(cid) return getPlayerStorageValue(cid, vip_storage) >= os.time() and TRUE or FALSE end function doPlayerAddVipDays(cid, days) return setPlayerStorageValue(cid, vip_storage, (os.time() + (86400 * getPlayerVipDays(cid)) + (86400 * days))) and days end function doPlayerRemoveVip(cid) return setPlayerStorageValue(cid, vip_storage, 0) and TRUE end Feito isso vá na pasta data/actions/actions.xml e coloque isso no final do action.xml <action actionid="5786" script="vipdoor.lua"/> <action itemid="5785" script="vip.lua"/> O item que estamos usando e esta medalha:(itemid:5785) Agora va em data/actions/scripts copie qualquer script, apague o que tem dentro e cole isto: function onUse(cid, item, fromPosition, itemEx, toPosition) if isPlayerVip(cid) == TRUE then if getCreaturePosition(cid).y < toPosition.y then doTeleportThing(cid, {x=toPosition.x,y=toPosition.y+1,z=toPosition.z}, TRUE) else doTeleportThing(cid, {x=toPosition.x,y=toPosition.y-1,z=toPosition.z}, TRUE) end doCreatureSay(cid, "Welcome VIP Player!", TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(cid), 10) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sorry, but only VIP Players can pass here! Buy VIP on the WEB.") end return TRUE end Salve como vipdoor.lua, este é o script da porta vip, caso o player nao seja vip ira aparecer aquela msg disendo para compra a vip na web. Para a porta funcionar você tenque ir no seu editor de mapas clicar com o botão direito na porta clicar em propriedades e colocar actionid:5786 Agora na mesma pasta data/actions/scripts copie outro arquivo apague tudo e cole isso: local days = 30 local levelToBeVIP = 1 function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) >= levelToBeVIP then if isPlayerVip(cid) == FALSE then doCreatureSay(cid, "CONGRATULATIONS! You are now a VIP for "..days.." days! You can now enter the VIP-area and use unique features!. ", TALKTYPE_ORANGE_1) end doSendAnimatedText(getPlayerPosition(cid), "Welcome!", TEXTCOLOR_RED) doPlayerAddVipDays(cid, days) doRemoveItem(item.uid, 1) doSendAnimatedText(getCreaturePosition(cid), "+"..days.." days", 30) else doPlayerSendCancel(cid, "You need level "..levelToBeVIP.." to be a VIP player.") end return TRUE end Salve como vip.lua Onde tem o número 30 é o numero de dias que irá adicionar Onde tem o numero 1 é o lvl que presisa pra usar a medalha. É isso ae sua VIP Medal tá pronta, é so clicar nela que você ganhara 30 dias de VIP Observação: quando a vip acabar o player não é teleportado para o templo.O player vai ficar sim na area vip mas para resolver este problema, coloque portas vips em todos os lugares, para o player nao vip nao conseguir entrar nas areas vips. Qualquer bug só avisa.1 ponto
-
Rpg, Para Iniciantes..
AbsolutVodka reagiu a vital900 por um tópico no fórum
RPG Pouco lembrado por muitos, mas nunca esquecido por outros... Eu pus pra galera ler, porque sinceramente, o RPG esta faltando e muito no tibia.. Bom galera, eu decidi juntar vários tópicos sobre RPG em um só.. Resumindo tudo, e melhorando a capacidade de compreendimento de cada.. TODOS OS TóPICOS sem exceção sofreram alterações por mim.. Listados por mim terão, um titulo e abaixo do titulo os creditos do X-tibiano o qual eu usei como base.. Antes de mais nada, vou pó-lo a par do assunto.. Bom oque significa rpg?? (RPG= Role Playing Game) (Créditos: Diogo) No sentido literal, essas duas palavras querem dizer "representar (play) um papel (role)". No sentido figurado, querem dizer... Representar um personagem, ou algo do tipo. Após saber disto, você deve estar se questionando, mas quando eu estou jogando tibia, eu nao represento nada.. eu OWNO.. Bom entao vamos la, tentarei explica-lo.. Quando você esta jogando, e dropa um item raro.. E outro player o rouba de você.. Momentaneamente você se sentira irritado.. Se você for parar para pensar, nao faz sentido.. Sentir-se irritado, porque um bunequinho inexistente na RL (um char <rl= real="" life="" vida="">) roubou o seu item, que também é inexistente na RL.. Após ler isto você deve estar pensando: Ah... Mas eu gastei tempo para conseguir aquele loot e vem um idiota e rouba! Pois bem, ae que ta.. Não foi você que gastou tempo para conseguir aquele loot. Você simplesmente sentou em frente o computador para horas de entretenimento por causa da sua falta do que fazer. Se não estivesse jogando o jogo, provavelmente estaria fazendo alguma outra coisa tão improdutiva quanto. Então não faz diferença ganhar ou não aquele loot. Foi seu personagem que se esforçou. Seu personagem que matou monstros. Seu personagem que gastou a energia dele. Após ler isto você deve estar pensando: MAS EU CONTROLO O PERSONAGEM! Exato! Porque isso é um RPG! Um Role Playing Game! Um jogo de representação de papéis! O personagem não existe! é só isso, um per-so-na-gem que é representado graças a você! Espero, ter conseguido explicar o significado de RPG.. Então continuemos.. Pra que serve este tal de RPG?? Como ja fora dito, no RPG você esta representando um papel.. Logo, para você representar um papel, deve haver um lugar (ambiente), com historia que explique sua origem, entre outros.. Pois bem, ao criar rpg, você deve fazer um mundo (ambiente/historias/quests/etc) que atraia e faça o jogador realmente se sentir na pele do personagem, pois representar uma pessoa que so vai em hunt's e depois em war, e monotono.. Se você acha que criar um mundo virtual qualquer com cidades, áreas de caça e quests sem criatividade, é RPG, entao você esta redondamente enganado.. um Role Play expressivo de verdade, que faça o personagem realmente se envolver, vai muito além disto. Agora que você ja sabe oque significa RPG, e ja sabe pra que ele serve, entao vou tentar explicar como criar seu rpg.. (Créditos: Diogo) Quando você cria um jogo (ou seu OTServ), a segunda coisa que deve fazer (logo depois de denifir os objetivos deste), é criar a história. Pois o jogo seravoltado a ela.. Mas como eu devo faze-lo Exemplo: Se você vê uma pedrinha na rua, com certeza ela tem uma história. Pera ae.. ate uma pedra pode ter uma historia? Uai, porque nao.. analisemos.. Nós podemos criar uma historia que pode girar em torno das seguintes Perguntas: A) Como ela foi feita? B) Como ela saiu do seu local original? C) Por que caminhos ela passou para chegar ali? D) Ela era daquele tamanho ou foi dividida? Bom ae esta apenas uma dica.. de como se fazer uma historia com uma pedra.. (uAHuHA QUE MERDA).. Da mesma forma que uma pedra tem sua história, seu mundo virtual precisa de uma. Na verdade não precisa, mas é útil. Então vamos tentar criar uma QUEST RPGista.. Pra que eu iria querer criar uma quest, RPGista se eu posso simplesmente colocar um baú numa sala e pronto.. Mais uma vez eu o relembro, para representar um papel, o conteudo da peça tem de interessar seus participantes.. Então vamos continuar.. A quest parece muito mais “real” se tem alguma história, algum motivo para existir. E fica melhor ainda, se essa história faz parte, ou interage, com a história do mundo criado. Por exemplo: Se no seu jogo a cidade Amber tem uma história antiga de inimizade com a cidade Aqua, mesmo que a maioria tenha esquecido atualmente, pode existir um NPC em Amber que guarda rancor e te pede para sabotar o suplimento de água da cidade Aqua. Nessa quest, você precisa ir até a nascente do rio que fornece água à cidade, e jogar um pó de veneno. Obviamente, no caminho para essa nascente, alguns outros desafios aguardará o personagem.. Quando a história do jogo está sendo criada, é necessário deixar a imaginação fluir, analisando isto eu nao terminarei esta quest, nao irei colocar que desafios enfrentar, nem nada do gênero.. deixarei sua imaginaçao fluir.. Você pode até mesmo usar a pedrinha, do chao da rua (citada anteriormente) e encaixa-la na quest, como se desse uma dica para descobrir o caminho para a nascente, pois antes de chegar a cidade em que ela se encontra ela ficava nas aguas da nascente.. Acho que eu consegui explicar como você deve criar suas histórias RPGistas (fazendo boas perguntas, usando bastante a imaginação e encaixando uma história a outra) DICA: Tudo do jogo pode – e, em um cenário ideal, deve – ser baseado na história. Agora que você já sabe oque significa RPG, e já sabe pra que ele serve e também sabe como fazé-lo, agora so falta saber como escreve-lo.. (Créditos: Trolie) Fazer um roleplay, é quando você muda a forma como se escreve, larga os velhos critérios de narração e ao mesmo tempo adota uma forma de aventura. Em nosso caso o Roleplay é sobre Tibia, então é presciso estar atento a uma série de fatores que nos ajudam na hora de escrever nossa própria aventura, sem que nada seja chato demais de se ler. Eu não vou ensiná-lo como escrever (até porque eu nao sou professor de PORTUGUêS, e também nao sou muito bom em redigir).. Eu apenas vou mostra-lo a diferença de uma linguagem RPGista por uma sem RPG.. Dialogo Simples (sem RPG) A - Vamos caçar Demon ? B - Qual Ml você esta agora ? A - 54 B - Vai caçar com o que ? A - SD B - Beleza eu bloco A - Ok Vamos ! Dialogo Elaborado (Com RPG) A - Algumas feras demoniacas vermelas, tem atrapalhado a nossa paz por aqui, acho que devemos nos unir e derrota-las. B - Mas você tem estudado para poder evoluir seu entendimento em magia ? A - Acredito que estou preparado o suficiente B - Pretende mata-los como ? A - Com magia negra B - Que nosso destino deseje boa sorte, com meu humilde escudo eu tentarei segura-los para que você possa atacar A - Que assim seja ... DICAS, para amenizar os erros: Na hora de escrever o seu roleplay, é presciso sempre tomar cuidado com algumas coisas que deixam o seu texto "pobre", são elas o Estrangeirismo, uso de girias desnecessarias, ou até mesmo a tradução mal feita de algumas coisas como os equipamentos. Estrangeirismo: Procure nunca ficar incluindo palavras em inglês no seu texto, isso faz com que o rendimento dele sempre caia, e fique meio monótono, evite palavras escritas no dia a dia tibiano como hunt, blocar, pekar, etc. Girias: é sempre bom evitar algumas como lol, gratz, pk!, rox, sux, rofl, omg, por que alem delas estarem deixando o seu texto muito parecido com apenas mais uma gravação de channel, elas tambem utilizam e muito do estrangeirismo. Tradução Procure nunca fazê-la, sempre que for necessario, como nos equipamentos, evite nomes, apenas descreva tal equipamento que a pessoa que esta lendo ira entender suas intenções. EXEMPLO, de como descrever um item sem citar o nome: ITEM- Demon Shield "Era um escudo vermelho, que carregava com uma cara assustadora, dizem lendas que é o escudo do próprio Demônio." Bom, e isto.. Espero ter conseguido explicar e ensinar, por meio de poucas e claras palavras, o famoso RPG. --> obs: se tiver no local errado favor mover.. nao sei ao certo onde posta-lo.. havia posto em materias... mas me disseram estar errado...1 ponto -
1 ponto
-
Raios Nas Vocations Sem Bugs [8.00]
surfm4rc05 reagiu a gustavo3754 por um tópico no fórum
Óla gente, bom to aqui de novo e eu dei uma olhada no xtibia e não tem um tópico explicando sobre raios nas vocations (na verdade tem mais com um script incompleto) Bom, abaixo vai ter um pequeno tutorial e o script. Espero que ajude REP XD Script: Tutorial: Vermelho: O nome da outfit que o personagem vai se transformar Azul: O id da outfit que o personagem vai se transformar Verde: A função que colocara raio na vocation assim que ela se transformar Roxo: A vocation que firaca com raios Laranja: O id do efeito que a vocation ficara assim que transformar Tag Da fuction: addEvent(trans,ext,cid) Onde está de verde é o fuction como estava la em cima. function trans(cid) if getPlayerVocation(cid) == 304 then if getPlayerMana(cid) >= 0 then doSendMagicEffect(getPlayerPosition(cid), 14) addEvent(trans,ext,cid) end end end Onde está 14 é o id do efeito, o id que fica no dateditor. No meu 14 é o id do raio azul. De roxo que é o número da vocation 304 é a vocation que ficara com raios. if getPlayerVocation(cid) == 303 then if getPlayerLevel(cid) >= 50 then doPlayerSetVocation(cid,304) doSetCreatureOutfit(cid, outfit, -1) addEvent(trans,ext,cid) doSendMagicEffect(getPlayerPosition(cid), 233) else doPlayerSendCancel(cid, "You need 50 level to first transform") doSendMagicEffect(getPlayerPosition(cid), 2) end Ali do roxo 304 a vocation acima 303 transformara no 304 quando executar a spell e ja começara a sair os raios. Quando for criar novas vocations basta apenas copiar a fuction ja feita e editar para a vocation que você vai criar.1 ponto -
Npc Citizen Global
Demonbholder reagiu a Leoxtibia por um tópico no fórum
Bem, via muita gente procurando por esse NPC na seção de Pedidos, então resolvi criá-lo. O Npc está igual ao global, salvo algumas falas. Assim que o player entregar os 100 minotaur leathers, deverá esperar 2 horas (configurável) para retornar ao npc. Diálogo (igual ao global): 1. Conhecendo a quest do addon. Jogador: Hi Lubo: Welcome to my adventurer shop, <name>! What do you need? Jogador: Addon Lubo: Sorry, the backpack I wear is not for sale. It's handmade from rare minotaur leather. Jogador: Minotaur Leather Lubo: Well, if you really like this backpack, I could make one for you, but minotaur leather is hard to come by these days. Are you willing to put some work into this? Jogador: Yes Lubo: Alright then, if you bring me 100 pieces of fine minotaur leather I will see what I can do for you. You probably have to kill really many minotaurs though... so good luck! 2. Entregando os minotaur leathers Jogador: Hi Lubo: Welcome to my adventurer shop, <name>! What do you need? Jogador: Backpack Lubo: Ah, right, almost forgot about the backpack! Have you brought me 100 pieces of minotaur leather as requested? Jogador: yes Lubo: Great! Alright, I need a while to finish this backpack for you. Come ask me later, okay? [2 Horas Depois] 3. Pegando o addon da backpack Jogador: Hi Lubo: Welcome to my adventurer shop, <name>! What do you need? Jogador: Addon Lubo: Just in time! Your backpack is finished. Here you go, I hope you like it. Jogador: Bye Lubo: Good bye. ___ Agora vamos ao script: Em data/npcs/scripts crie um arquivo.lua chamado citizen.lua e cole isto dentro: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local time = 2 -- tempo em horas if msgcontains(msg, 'addon') then if getPlayerStorageValue(cid, 3422) <= 0 then if getPlayerStorageValue(cid, 3491) <= 0 then selfSay('Sorry, the backpack I wear is not for sale. It is handmade from rare {minotaur leather}.', cid) talkState[talkUser] = 0 else if getPlayerStorageValue(cid, 2411) - os.time() <= 0 then if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid, 136, 1) setPlayerStorageValue(cid, 3422, 1) selfSay('Just in time! Your backpack is finished. Here you go, I hope you like it.', cid) else doPlayerAddOutfit(cid, 128, 1) setPlayerStorageValue(cid, 3422, 1) selfSay('Just in time! Your backpack is finished. Here you go, I hope you like it.', cid) end else selfSay('This job requires patient and hability. Wait a little time.', cid) end end else selfSay('You have already taken your backpack.', cid) end elseif msgcontains(msg, 'minotaur leather') then selfSay('Well, if you really like this backpack, I could make one for you, but minotaur leather is hard to come by these days. Are you willing to put some work into this?', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 and msgcontains(msg, 'yes') then selfSay('Alright then, if you bring me 100 pieces of fine minotaur leather I will see what I can do for you. You probably have to kill really many minotaurs though... so good luck!', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 and msgcontains(msg, 'backpack') then selfSay('Ah, right, almost forgot about the backpack! Have you brought me 100 pieces of minotaur leather as requested?', cid) talkState[talkUser] = 3 elseif talkState[talkUser] == 3 and msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid, 5878, 100) then setPlayerStorageValue(cid, 3491, 1) setPlayerStorageValue(cid, 2411, os.time()+time*60*60) selfSay('Great! Alright, I need a while to finish this backpack for you. Come ask me later, okay?', cid) talkState[talkUser] = 4 end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em data/npcs crie um arquivo.xml chamado Lubo.xml e cole isto dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Lubo" script="data/npc/scripts/citizen.lua" walkinterval="5000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="38" body="39" legs="96" feet="118" addons="3"/> <parameters> <parameter key="message_greet" value="Welcome to my adventurer shop, |PLAYERNAME|! What do you need?"/> <parameter key="message_farewell" value="Good bye."/> <parameter key="module_keywords" value="1" /> </parameters> </npc> Vlw, espero ter ajudado alguém, abraços.1 ponto -
Para configurar o script e facil local out = { [6] = {looktype = 300, speed = 2000}, --Primeiro(6) e a vocação segundo e looktype(300) que vai ganhar e segundo a speed(2000)---- [8] = {looktype = 300, speed = 2000}, [9] = {looktype = 300, speed = 2000} ----Sempre na ultima configuração da linha não coloque virgula pode bugar---- } para pz e so fazer isso: Va em creaturescripts/scripts e crie um arquivo Lua chamado pz e coloque isto: Agora va em creaturescripts/creaturescripts.xml e coloque esta tag: <event type="think" name="pz" event="script" value="pz.lua"/> Registre o evento colocando isto em creaturescripts/scripts/ abra login.lua e coloque antes do ultimo Return: registerCreatureEvent(cid, "pz")1 ponto
-
Quero apresentar a vocês, o Keeperian, o mais novo servidor com RPG e várias aventuras! Primeiramente, mostraremos alguns motivos de jogar no Keeperian: Servidor 24/7, sem lag, dedicado limestone Mapa Custom (não é nosso), com bastante áreas pra serem exploradas Easy para newbies (ajudando a novos jogadores a ficar no server) Novos sistemas e eventos, com intuito de não viverem apenas em hunt Dentre vários outros... Viram que a lista, apesar de pequena, é vantajosa? Agora iremos mostrar o que temos no Keeperian que chame a sua atenção: Ajuda para iniciantes, pt.1 Sabemos que no início de todo player, uma dificuldade é obter dinheiro para melhorar seu equipamento, não é verdade? Por causa disso, melhoramos os loots iniciais, para que vocês tenham uma ajuda. Observaram que o loot dos rotworms está diferente? Pegue os itens e venda no Rashi (NPC que compra loot), isso lhe ajuda a fazer um dinheirinho... Ajuda para iniciantes, pt.2 Sabe aquela dificuldade de começar, morrer e perder tudo e não ter dinheiro pra outro AOL? Isso às vezes desmotiva, não é verdade? Sabendo disso, o Keeperian lhe ajuda também! Como? Se você tiver entre o level 1 até o 50 (que também é o protect level), ao morrer, você não perde loot, mas a partir do level 51, se você morrer, perde o seu loot, por isso, preste bastante atenção. Task System Ok, sabemos que vários servidores por ai possuem o task system... Mas o que tem de diferente nisso? Colocamos ele no Quest Log! Nem todos servidores que abrem por ai, colocam as tasks no quest log, isso faz com que você não saiba direito quantos matou ou tem que ficar contando (o que se torna chato). Quest Log Mais uma coisa que dedicamos a vocês, um Quest Log com 90% das quests do servidor!! Quest Legalzinha essa xD Sistema de Profissão Isso mesmo, possuimos esse sistema, onde vc pode escolher várias profissões, com intuito de criar itens, potions, equipamentos e outras coisas... NPC de Professions Clique Aqui e confira nosso guia sobre Professions. Addon Bônus Ter aquele addon bonito apenas não basta no Keeperian, mas sim, pode ser usado como estratégia! Para saber qual o bônus de cada addon, segue o guia: Clique Aqui Guia de Respawn Por causa do Mapa, fizemos um guia de respawn, mostrando algumas hunts, monsters e partes de quests, pois queremos lhe ajudar e queremos que gostem do Keeperian. Quer ver o guia? Clique Aqui. AutoMap Quer ter ao menos 90% do mapa já explorado? Clique Aqui e saiba como. Auto-Hunted System Somente no Keeperian, tentamos fazer o com que o TOP seja realmente uma luta. Como assim? Com o Auto-Hunted System, Se algum player matar o TOP, ele ganha uma recompensa baseada no level do TOP. Explicando Melhor: O seguinte texto aparece de tempos em tempos como broadcast: 10:21 Extra Extra! The most Wanted of the World is "Exorcista", and if you kill he, The king gain for you 150.5 k ! Caso você mate o TOP (nome sendo mostrado), você ganha essa recompensa. Partner System Quer chamar seus amigos? Com o partner system, você ganha caso chame e eles joguem!! Vejam a imagem com uma explicação: Explicação in-game caso você dê o comando /partner ou !partner Para maiores detalhes, e mais explicações, clique aqui. Points Online Já viu muitos servidores que dá points por tempo online? São poucos não é?... O Keeperian possui Isso! Queremos que vocês realmente joguem, por isso, adicionamos esse sistema, onde a cada 1 hora online, você ganha 2 Ppoints, onde você pode gastar no site, comprando até PREMIUM ACCOUNT! Clique aqui e confira o Shop. Texto que aparece mostrando quanto você recebeu e quanto você tem: Congratulations, you received 2 p points. Now you have 813 p points in your account. Your timer was reseted. Sistema de Vídeo Você tava naquela hunt ou fez aquela quest com seu team e quer que os outros vejam? O Keeperian pode ajudar você nisso! No nosso site, possuimos o sistema de vídeo, onde você adiciona um vídeo segundo a sua categoria! Clique aqui e confira a nossa página. Enfim pessoal, isso é apenas um pedacinho do que o Keeperian tem pra vocês... querem mais? Imagens de Nosso Mapa Iremos por apenas o Link das Imagens de Nosso Mapa, para não pesar tanto no tópico: Imagem 1 Imagem 2 Imagem 3 Imagem 4 Imagem 5 Imagem 6 Informações do Servidor Experience: 200x (stages) Skills: 40x MagLevel: 15x Loot: 3x Spawn: 2x IP: www.keeperian.com Porta: 7171 Protocolo: 8.60 Site: www.keeperian.com Server Info: Clique Aqui.1 ponto
-
@Eragon100 To botando fé que meu bisneto vai jogar esse pokemon1 ponto
-
Npc Teleporter
wesley_world reagiu a Leoxtibia por uma questão
Ok, aí está: local maxlevel = 80 -- abaixo desse level os players poderão ir local npc = {x=1, y=1, z=1} --- local que o npc estará function onSay(cid, words, param) if getPlayerLevel(cid) < 80 then if getCreatureCondition(cid, CONDITION_INFIGHT) == FALSE then doTeleportThing(cid, npc) doSendMagicEffect(npc, 10) else doPlayerSendTextMessage(cid, 22, "Você não pode estar em battle para se teleportar.") end else doPlayerSendTextMessage(cid, 22, "Apenas players com level abaixo de ".. maxlevel .." tem acesso ao npc.") end return true end1 ponto -
Como Colocar Os Itens Para Todas As Vocações.
TheSlayer reagiu a pbottrinks por uma questão
@lfelipebsilva, claro que funciona no seu pc. Não sei se você notou, mas TODOS TEM UMA SAIDA. Eu ainda te expliquei no tópico passado. Por isso o seu funciona sem erro. Tu explico pro lek, como colocar as vocations, cuja nem precisa cita-las, sem colocar voc, já funciona pra all. Mas enfin, a idéia de adcionar novos items ao MOVEMENT, você passou ela errada ao usuário. O item para ser adcionado ao MOVEMENTS, deve seer feito da seguinte forma: Perceba que há 2 linhas, certp? uma Movement = ON EQUIPE, (digamos que equipado), e on De Equipe(digamos que quando se remove o equip). Ou seja, se ele abrir um movement pra um item, e nao fecha-lo, irá dar bug. The Slayer, pode fazer assim. Garanto a você que nao terá erros. Abraços. Dúvida sanada. Reportado para Moverem.1 ponto -
Cara sinto muito mais se não tiver bastantes novidades no server a turma entra, joga e no outro dia já paro.1 ponto
-
Item Que Add Vip :: Kydrai ::
Erimyth reagiu a Demonbholder por uma questão
ta meio vago esse seu pedido. vê se é isso: function onUse(cid, item) addVipDaysByAccount(getPlayerAccountId(cid), 30) doPlayerSendTextMessage(cid, 22, "Você ganhou 30 dias vip.") doRemoveItem(item.uid) return true end1 ponto -
[Encerrado] [Pokemon] Dúvidas? - Pda
Taiger reagiu a shadow2012 por um tópico no fórum
potion podendo usar em battle potion.lua sobre block de respaw deve ta no config.lua deve ser essa parte: allowBlockSpawn = false (mude para true) e a 3 pergunta acho que nao se quiser que fique dificil o catch vc msm vai te que altera.1 ponto -
[Encerrado] [Pokemon] Dúvidas? - Pda
BrunooMaciell reagiu a cacaiu por um tópico no fórum
@Kurobisu por que vc nun bota o sistema de poke inicial por teleport?.. eu tenho ele ta no centurion v3 na partre de movimentes. =D ele ta total sem bugs, e é muito bom.1 ponto -
[Pedido] Alavanca Que Abre Portas
DaNDaNrOxX reagiu a Oneshot por uma questão
Fiz de cabeça, veja se funciona. local DOOR_LEVER = { [1945] = 1211 [1946] = 1212 } local DOOR_POSITION = {x = 0, y = 0, z = 7} function onUse(cid, item, fromPosition, itemEx, toPosition) if not DOOR_LEVER[item.itemid] then return false end local door = getTileItemById(DOOR_POSITION, DOOR_LEVER[item.itemid]) if door.uid > 0 then doTransformItem(door.uid, DOOR_LEVER[item.itemid]) end doTransformItem(item.uid, (item.itemid == 1945 and 1946 or 1945)) return true end <action uniqueid="28286" event="script" value="NOME_DO_SCRIPT.lua"/> Coloque uniqueid 28286 na alavanca. E MAIS ATENÇÃO DE PRÓXIMA VEZ, DÚVIDAS E PEDIDOS DESSE TIPO SÃO FEITOS AQUI: Pedidos e Dúvidas1 ponto -
[Encerrado] [Pokemon] Dúvidas? - Pda
FlamesAdmin reagiu a LLossavaro por um tópico no fórum
#REMOVIDO1 ponto -
0 pontos