
Deathstroke
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Deathstroke deu reputação a Heyron em Trees, bushes and grass tufts - (Extensão RME)Estou disponibilizando uma extensão que serve como ajuda na hora de você decorar continentes, mas obviamente não substitui o acabamento minucioso feito na raça.
Essa extensão se resume em uma seleta das arvores, arbustos e flores mais populares da versão 8.6 pra baixo, onde o objetivo é criar pequenos grupos espalhados pelo mapa.
Você só precisa escolher o tamanho do Brush Size conforme o seu gosto e ir testando até obter um resultado "satisfatório".
Antes da aplicação:
Depois da aplicação:
Mappers mais renomados como o @Cat repudia esse tipo de coisa, na visão dele isso é coisa de preguiçosos amadores.
Mas eu gostei do resultado, fica bem no estilo basicão do global.
INSTALAÇÃO:
Em data/versão/tilesets.xml adicione:
<brush name="trees, bushes and grass tufts"/>
Em data/versão/doodads.xml depois de qualquer </brush>, adicione:
<brush name="trees, bushes and grass tufts" type="doodad" server_lookid="2707" draggable="true" on_blocking="false" thickness="100/100"> -- Trees -- <item id="7024" chance="2"/> <item id="2700" chance="2"/> <item id="2701" chance="2"/> <item id="2703" chance="2"/> <item id="2704" chance="2"/> <item id="2705" chance="2"/> <item id="2706" chance="2"/> <item id="2707" chance="2"/> <item id="2708" chance="2"/> <item id="2712" chance="2"/> <item id="8313" chance="2"/> -- Bushes -- <item id="2767" chance="4"/> <item id="2768" chance="4"/> -- Flowers -- <item id="4156" chance="1"/> <item id="4157" chance="1"/> <item id="4158" chance="1"/> <item id="2740" chance="1"/> <item id="2741" chance="1"/> <item id="2743" chance="1"/> -- Stones -- <item id="3612" chance="1"/> <item id="3621" chance="1"/> <item id="3622" chance="1"/> <item id="3623" chance="1"/> -- Grass Tufts -- <item id="6218" chance="30"/> </brush>
Feito.
Altere as chances de cada item ao seu gosto.
Recomendo usar o Brush Size 3 ou 5, em forma circular.
-
Deathstroke deu reputação a L3K0T em Deixando as Sprites mais Rápida no OTclientBom galera hoje vou ensinar a vocês como acelerar as Sprites do seu jogo pra ficar como do Tíbia Global, assista o vídeo abaixo que você vai entender.
Primeiramente vá na source do seu OTClient 0.6.6 "otclient-0.6.6\src\client"ou superior e abre o game.cpp depois de aberto procure.
if(version >= 1050) mude para
if(version <= 1050) Salve e Agora vá em const.h e procure.
INVISIBLE_TICKS_PER_FRAME = 500, ITEM_TICKS_PER_FRAME = 500, mude para
INVISIBLE_TICKS_PER_FRAME = 100, ITEM_TICKS_PER_FRAME = 100,
Feito isso salve e da Rebuild no compilador do otcliente que voce usa "recompilação limpa"
Depois de compilar vá no seu Object Builder e compile seu cliente pra "Improved Animations"
pronto, agora só usar
ATENÇÃO
USE SOMENTE EM CASO DE ERROS DO OTCLIENT, CASO NÃO LER SEU CLIENTE;
ache
function load() local version = g_game.getClientVersion() em baixo coloca
g_game.enableFeature(GameSpritesU32)
-
Deathstroke deu reputação a Bruno Carvalho em [TalkAction] Player Check SystemVersão: 3.2
Versão de tibia: 9.4+ (Funciona em anteriores)
Descrição: Existem muitos scripts que ajudam o administrador do servidor a cuidar dele, um deles é saber coisas sobre quem está jogando e se está sendo honesta. Eu peguei alguns scripts e estou juntando em um para diminuir o tamanho e ter uma fácil verificação.
TAG:
<talkaction log="yes" words="!p;/p" access="5" event="script" value="playercheck.lua"/> Script:
Talkactions/scripts/playercheck.lua
local config = { check = {"check", "viwer", "verificar", "ver"}, delete = {"del", "delete", "deletar"}, search = {"search", "procurar"} } function getItemsInContainer(cont, sep) local text = "" local tsep = "" local count = "" for i=1, sep do tsep = tsep.."-" end tsep = tsep..">" for i=0, getContainerSize(cont.uid)-1 do local item = getContainerItem(cont.uid, i) if isContainer(item.uid) == FALSE then if item.type > 0 then count = "("..item.type.."x)" end text = text.."\n"..tsep..getItemNameById(item.itemid).." "..count.." ("..item.itemid..")" else if getContainerSize(item.uid) > 0 then text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" text = text..getItemsInContainer(item, sep+2).." ("..item.itemid..")" else text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" end end end return text end function onSay(cid, words, param, channel) local slotName = {"Cabeça", "Amuleto", "Backpack", "Armor", "Mao Direita", "Mao Esquerda", "Legs", "Pés", "Ring", "Ammo Slot"} local t = string.explode(param, ",") if(table.isStrIn(param, config.check)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[2]) if isPlayer(player) == TRUE then local text = getPlayerName(player).."'s Equipment: " for i=1, 10 do text = text.."\n\n" local item = getPlayerSlotItem(player, i) if item.itemid > 0 then if isContainer(item.uid) == TRUE then text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..") "..getItemsInContainer(item, 1) else text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..")" end else text = text..slotName[i]..": Empty" end end doShowTextDialog(cid, 6579, text) else doPlayerSendCancel(cid, "This player is not online.") end end elseif(table.isStrIn(param, config.delete)) then if getPlayerGroupId(cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) if isPlayer(player) == TRUE then count = t[4] if(not t[4]) then count = 1 end if getPlayerItemCount(player, t[2]) > 0 then if doPlayerRemoveItem(player, t[2], count) then doPlayerSendCancel(cid, "Item Deletado.") else doPlayerSendCancel(cid, "Este player não esta quantidade.") end else doPlayerSendCancel(cid, "Este player não tem o item.") end end end elseif(table.isStrIn(param, config.search)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) local result = db.getResult("SELECT name, online FROM players WHERE id IN (SELECT player_id FROM player_items WHERE itemtype = ".. t[2] ..");") local msg = "Resultados da busca pelo item ".. t[2] .." em seu banco de dados:\n\n" if result:getID() ~= -1 then while true do local name = result:getDataString("name") local online = result:getDataInt("online") msg = msg .. name .." [".. (online == 1 and "Online" or "Offline") .."]\n" if not result:next() then break end end else msg = msg .. "O item não foi encontrado em nenhum jogador." end doShowTextDialog(cid, t[2], msg) end end return true end Explicação:
Quando o god digita:
/p check, (PNAME) - Ele verifica os items que o player tem.
/p del, (ID), (PNAME), (COUNT) - Ele deleta o item de determinado player (Se não colocar o count ele irá remover somente 1).
/p search, (ID) - Ele verifica quantos players tem tal item e se está online.
Créditos:
Oneshot
CaioODemais
Comedinha (Bruno Carvalho)
-
Deathstroke deu reputação a Makhai Drakon em [TUTORIAL] Como adicionar pokemons com {Icon System}.Resolvi fazer este tutorial porque os que que encontrei estavam muito confusos e não entendi certas coisas.
Programas utilizados:
ObjectBuilder: http://www.4shared.com/rar/XsT3Kkgsba/ObjectBuilder034.html
ItemEditor: http://www.4shared.com/file/232461654/31f90261/otitemeditor037.html
[TUTORIAL] Como adicionar pokemons com {Icon System}.
1- Abra o seu ObjectBuilder.
2- Aperte Ctrl+O ou Clique em "File"/"Open".
3- Clique em Browse.
4- E abra a pasta onde fica seu tibia.spr e o tibia.dat.
5- Caso for estendido marque a caixa.
6- Após isto procure as outfit, corpse, ícone e portrait do pokemon desejado.
obs: aconselho escrever os números em um bloco de notas
7- Após isto abra o ItemEditor .
8- Aperte Ctr+P ou Clique em "File"/"Preferences".
9- Clique em Browse.
10- E abra a pasta onde fica seu tibia.spr e o tibia.dat.
11- Caso for estendido marque a caixa e confirme.
12- Aperte Ctr+N ou Clique em "File"/"Open...".
13- E abra a pasta onde fica seu item.otb.
14- Crie 5 itens.
15- Em Cliete ID coloque os IDs do portrait, corpse, 1 ícone on e 2 ícones off que você pegou no ObjectBuilder.
16- Deixe os atributos exatamente assim.
Portrait
Corpse
Icone On
Icone Use
Icone Off
obs: a partir daqui usara estes IDs
obs: aconselho escrever os números em um bloco de notas
17- Por fim de save.
.
18- Agora vá em Data/Items e abra items.xml.
Em algum local adicione isto!
<item id="AAAAA" article="a" name="Icone."> <attribute value="1" key="ispokeball"/> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="BBBBB" article="a" name="Icone using"> <attribute value="1" key="ispokeball"/> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="CCCCC" article="a" name="Icone dead"> <attribute value="1" key="ispokeball"/> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="DDDDD" article="a" name="EEEEE"> <attribute key="containerSize" value="10" /> <attribute key="decayTo" value="0" /> <attribute key="duration" value="300" /> </item> <item id="FFFFF" article="a" name="portrait"> <attribute key="weight" value="0" /> <attribute key="slotType" value="legs" /> </item> Em "AAAAA" coloque o ID do ícone on
Em "BBBBB" coloque o ID do ícone use
Em "CCCCC" coloque o ID do ícone off
Em "DDDDD" coloque o ID do corpse
Em "EEEEE" coloque fainted "nome do poke"
Em "FFFFF" coloque o ID do portrait
Salve e feche
19- Agora vá em Data/Monster/Pokes
Copie alguma .xml e modifique o seu nome para o do pokemon desejado depois abra-a
<?xml version="1.0" encoding="UTF-8"?> <monster name="AAAAA" nameDescription="a BBBBB" race="CCCCC" experience="1500" speed="207" manacost="0"> <health now="270" max="270"/> <look type="DDDDD" head="90" body="100" legs="95" feet="113" corpse="EEEEE"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="97"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" chance="100" range="1" min="-50" max="-100"/> <attack name="Aqua Tail" interval="2805" chance="29" range="1"/> <attack name="Headbutt" interval="2705" chance="29" range="1"/> <attack name="Dragon Breath" interval="3040" chance="28" range="6"/> <attack name="Hyper Beam" interval="2899" chance="29" range="5"/> <attack name="Thunder Wave" interval="2993" chance="28" range="6"/> <attack name="Twister" interval="2852" chance="29" range="3"/> <attack name="Wing Attack" interval="3040" chance="28" range="6"/> <attack name="Thunder Punch" interval="2752" chance="29" range="1"/> <attack name="Fire Punch" interval="2952" chance="29" range="1"/> <attack name="Dragon Claw" interval="2900" chance="29" range="1"/> </attacks> <defenses armor="0" defense="0"> </defenses> <voices interval="5000" chance="10"> <voice sentence="FFFFF!"/> </voices> <loot> <item id="11449" chance="150" count="1" countmax="1"/> <item id="12159" chance="3000" count="1" countmax="1"/> <item id="13794" chance="10000" countmax="80"/> --snowball <item id="12275" chance="3000" count="1" countmax="1"/> <item id="12244" chance="70" count="1" countmax="1"/> <item id="12338" chance="10" count="1"/> --bag box --bag box </loot> <script> <event name="Spawn"/> </script> </monster> Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque o ID da outfit do pokemon
Em "CCCCC" coloque o a raça do pokemon
Em "DDDDD" coloque o ID da outfit do pokemon obs: no meu caso e 2241
Em "EEEEE" coloque o ID corpse obs: no meu caso e 20758
Em "FFFFF" coloque a fala do pokemon
Lista de raças:
fighting, normal, water, ground, rock, dark, psychic, flying, electric, poison, fire, ice, grass, dragon, bug, steel, ghost Attacks Lembrando esses são os ataques que os pokemons selvagens soltara! E possível ver os attacks em data/spells/scripts/ps name = "Nome do attack" interval = "Intervalo para usar o attack" chance = Chance do attack ser acertado" obs: sempre deixe o melee 100 range = "Distancia mínima necessária para usar o attack"
Loot
item id = "ID do item que será dropado"
chance = "Chance do item ser dropado"
count = "Mínimo de itens a ser dropado"
countmax = "Máximo de itens a ser dropado"
salve e feche
20- Agora vá em Data/Monster e abra monster.xml
Adicione esta tag
1 - caso esteja em uma pasta
<monster name="AAAAA" file="pokes/BBBBB/CCCCC.xml"/> 2 - caso apenas esteja na pasta pokes
<monster name="AAAAA" file="pokes/CCCCC.xml"/> Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque o nome da pasta onde ele esta
Em "CCCCC" coloque o nome da .xml que você criou
salve e feche
21- Agora vá em Data/Lib e abra configuration.lua
1ª
desça um pouco e se ver algo deste género
Vá ate o ultimo e cole este código.
["AAAAA"] = {move1 = {name = "Aqua Tail", level = 10, cd = 12, dist = 1, target = 1, f = 50, t = "water"}, move2 = {name = "Thunder Wave", level = 12, cd = 16, dist = 1, target = 0, f = 70, t = "electric"}, move3 = {name = "Thunder Punch", level = 16, cd = 16, dist = 1, target = 1, f = 65, t = "electric"}, move4 = {name = "Fire Punch", level = 15, cd = 20, dist = 1, target = 1, f = 75, t = "electric"}, move5 = {name = "Dragon Claw", level = 22, cd = 16, dist = 1, target = 1, f = 60, t = "dragon"}, move6 = {name = "Dragon Breath", level = 40, cd = 20, dist = 1, target = 0, f = 80, t = "dragon"}, move7 = {name = "Twister", level = 46, cd = 24, dist = 1, target = 0, f = 80, t = "dragon"}, move8 = {name = "Wing Attack", level = 70, cd = 28, dist = 1, target = 0, f = 75, t = "flying"}, move9 = {name = "Hyper Beam", level = 70, cd = 24, dist = 1, target = 0, f = 190, t = "normal"}, move10 = {name = "Draco Meteor", level = 110, cd = 60, dist = 1, target = 0, f = 150, t = "dragon"}, }, Em "AAAAA" coloque o nome do pokemon
Moves
name = "Nome do attack"
level = "Level mínimo para usar o attack"
cd = "tempo para o attack recarregar"
dist = "distancia mínima para usar o attack"
target = "1 significa que precisa se alvo / 0 que não e necessário"
f = "força do attack"
t = "tipo do attack"
Lista de tipos
fighting, normal, water, ground, rock, dark, psychic, flying, electric, poison, fire, ice, grass, dragon, bug, steel, ghost
2ª
Desça mais um pouco encontrara o fly
caso seu pokemon tenha pegue o id da outfit do fly e subtraia 351 EX: 2242-351=1891
Vá ate o ultimo e cole este código.
["AAAAA"] = {BBBBB, CCCCC}, Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque o ID do fly subtraído por 351 EX: 2242-351=1891
Em "CCCCC" coloque a velocidade que dará
obs: Surf e ride mesma coisa
3ª
Desça mais um pouco encontrara o pokeballs
Vá ate o ultimo e cole este código.
["AAAAA"] = {effect = 188, on = BBBBB, use = CCCCC, off = DDDDD, all = {BBBBB, CCCCC, DDDDD}}, Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque o ID do icon on
Em "CCCCC" coloque o ID do icon use
Em "DDDDD" coloque o ID do icon off
4ª
Desça mais um pouco encontrara o icons
Vá ate o ultimo e cole este código.
["AAAAA"] = { on = BBBBB, off = CCCCC, use = DDDDD }, Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque o ID do icon on
Em "CCCCC" coloque o ID do icon off
Em "DDDDD" coloque o ID do icon use
5ª
Desça mais um pouco encontrara o effectiveness mais não mecha nele
Desça mais um pouco encontrara o pokes
Vá ate o ultimo e cole este código.
["AAAAA"] = {offense = 4.5, defense = 10, specialattack = 12.2, vitality = 11.8, agility = 350, exp = 800, level = 80, wildLvl = 150, type = "ice", type2 = "ghost"}, Em "AAAAA" coloque o nome do pokemon
offense = "offense que ganha por level"
defense = "defense por level"
specialattack = "special attack que ganha por level"
vitality = "vida que o poke ganha pra cada vitality que tem"
agility = "velocidade base dos pokes"
exp = "experiência que dá a cada level que tem (somada a exp base, no xml do poke)"
level = "level min pra usar o poke / offense base"
wildlevel = "level que o pokemon selvagem será"
type = "tipo do pokemon"
type2 = "segundo tipo do pokemon" obs caso não tenha coloque no type"
Lista de tipos
fighting, normal, water, ground, rock, dark, psychic, flying, electric, poison, fire, ice, grass, dragon, bug, steel, ghost
6ª
Desça mais um pouco encontrara o fotos
Vá ate o ultimo e cole este código.
["AAAAA"] = BBBBB, Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque o ID do portrait
7ª
Desça mais um pouco encontrara o pokecatches
Vá ate o ultimo e cole este código.
["AAAAA"] = {chance = BBBBB, corpse = CCCCC}, Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque a chance de capturar o pokemon obs quanto maior o numero mais difícil fica
Em "CCCCC" coloque o ID corpse
8ª
Desça mais um pouco encontrara o newpokedex
Vá ate o ultimo e cole este código.
["AAAAA"] = {gender = 500, level = 80, storage = 100, stoCatch = BBBBB}, Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque 1 e um numero depois do pokemon anterior Ex o anterior é 666456 então coloque 666457
gender = "género género do pokemon 500 = 50% de ser m ou f, 75 = 75% de ser f 25 = 25% de ser f, -1 = sem sexo " obs se o server não tiver gender system não faz diferença
level = "level min pra usar o poke " obs apenas afetará o pokedex
storage = "Não mexa!"
stoCatch = "coloque um numero depois do pokemon anterior Ex o anterior é 666456 então coloque 666457"
9ª
Desça mais um pouco encontrara o oldpokedex
Vá ate o ultimo e cole este código.
{"AAAAA", BBBBB, CCCCC}, Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque o level min pra usar o poke
Em "CCCCC" coloque o coloque um numero depois do pokemon anterior Ex o anterior é 1290 então coloque 1291
10ª
Desça mais um pouco encontrara o poevo
Caso o pokemon que será adicionado tenha uma anti evolução
Vá ate o ultimo e cole este código.
["AAAAA"] = {level = 150, evolution = "BBBBB", count = 1, stoneid = CCCCC, stoneid2 = DDDDD}, Em "AAAAA" coloque o nome da anti evolução pokemon
Em "BBBBB" coloque o nome da evolução do pokemon
Em "CCCCC" coloque o ID da stone que ira evoluir o pokemon
Em "DDDDD" coloque o ID do segundo tipo stone que ira evoluir o pokemon obs opcional deixe 0 se não tiver stone
Para saber o ID das stones desça um pouco o configuration.lua que terá uma lista
level = "level mínimo para evoluir o pokemon"
evolution = "nome do pokemon evoluído"
count = "quantidade de stones necessárias"
stoneid = "ID da stone que ira evoluir o pokemon"
stoneid2 = "ID do segundo tipo stone que ira evoluir o pokemon" obs opcional
11ª
Desça mais um pouco encontrara o spcevo
Caso o pokemon que será adicionado tenha uma evolução especial Ex gloom ele pode evoluir para vileplume ou bellossom
Vá ate o ultimo e cole este código.
["AAAAA"] = {[1] = {level = 65, evolution = "BBBBB", count = 1, stoneid = CCCCC, stoneid2 = DDDDD}, [2] = {level = 65, evolution = "EEEEE", count = 1, stoneid = FFFFF, stoneid2 = GGGGG}}, Em "AAAAA" coloque o nome da anti evolução pokemon
Em "BBBBB" coloque o nome da 1ª evolução do pokemon
Em "CCCCC" coloque o ID da stone que ira evoluir o 1º pokemon
Em "DDDDD" coloque o ID do segundo tipo stone que ira evoluir o 1º pokemon obs opcional deixe 0 se não tiver stone
Em "EEEEE" coloque o nome da 2ª evolução do pokemon
Em "FFFFF" coloque o ID da stone que ira evoluir o 2º pokemon
Em "GGGGG" coloque o ID do segundo tipo stone que ira evoluir o 2º pokemon obs opcional deixe 0 se não tiver stone
Para saber o ID das stones desça um pouco o configuration.lua que terá uma lista
level = "level mínimo para evoluir o pokemon"
evolution = "nome do pokemon evoluído"
count = "quantidade de stones necessárias"
stoneid = "ID da stone que ira evoluir o pokemon"
stoneid2 = "ID do segundo tipo stone que ira evoluir o pokemon" obs opcional
12ª
Desça mais um pouco encontrara o gobackmsgs mais não mecha nele
Desça mais um pouco encontrara o specialevo
Caso o pokemon que será adicionado tenha uma evolução especial Ex gloom ele pode evoluir para vileplume ou bellossom
specialevo = {"Poliwhirl", "Gloom", "Tyrogue", "Eevee", "AAAAA"} Em "AAAAA" coloque o nome da anti evolução pokemon
13ª
Desça mais um pouco encontrara o specialabilities
Caso queira colocar alguma habilidade no pokemon coloque
Em "AAAAA" coloque o nome da anti evolução pokemon
Coloque nas habilidades desejadas
14ª
Desça mais um pouco encontrara o auraSyst mais não mecha nele
Desça mais um pouco encontrara o hitmonchans mais não mecha nele
Desça mais um pouco encontrara o headbutt mais não mecha nele
Desça mais um pouco encontrara o lookClans mais não mecha nele
Desça mais um pouco encontrara o youAre mais não mecha nele
Desça mais um pouco encontrara o passivesChances
Caso queira colocar alguma especial no pokemon coloque
Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque a chance de sair a passiva
15ª
Desça mais um pouco encontrara o pokesPrice
Vá ate o ultimo e cole este código.
["AAAAA"] = BBBBB, Em "AAAAA" coloque o nome do pokemon
Em "BBBBB" coloque o preço que o pokemon será vendido no npc
salve e feche
22- Agora vá em Data/Movements/ e abra o movements.xml
1º
Logo no começo voçe vera o Icone System
Em <movevent type="Equip" itemid=
Va ate o final da lista coloque o id o ícone on-id do ícone off; Ex 20740-20742;
Ficara assim
2º
Em <movevent type="DeEquip
Va ate o final da lista coloque o id o ícone on-id do ícone off; Ex 20740-20742;
Ficara assim
23- Agora vá em Data/Actions/ e abra o actions.xml
Procure por Icone System
Em <action itemid=
Va ate o final da lista coloque o id o ícone on-id do ícone off; Ex 20740-20742;
Ficara assim
24- Caso tenha adicionado evolução vá em Data/Actions/Scripts e abra o evolution.lua
Em local types =
Vá ate o final da lista da stone que evolui o pokemon coloque o nome da anti evolução Ex , "Spearow" obs caso for 2 stones diferentes adicione nas 2
Ficara assim
25- Seja feliz
Obrigado pela atenção qualquer duvida comente
Caso ajudei REP+
Creditos: 100% Ckfox
-
Deathstroke deu reputação a Kimoszin em [MOD] Criminal System v2.0Olá pessoal, não tinha nada para fazer aqui e resolvi aprimorar o meu sistema básico de Policia e Ladrão.
Agora ele está na versão v2.0 e está mais bonito *-*
Change Log
- v2.0 * Feito com simulação de OOP * Adicionado a classe Civil * Fácil configuração * Varias funções feitas * O policial ganha todo o dinheiro que o ladrão roubou * É possivel identificar quantos players você roubou e o quanto de dinheiro * ... Link para a versão v1.0 http://tibiaking.com...riminal-system/ Configurando
Basicamente você só tem que mudar isso: minSteal = 300, -- Minimo que o bandido pode roubar maxSteal = 1400, -- Maximo que o bandido pode roubar prisonPos = {x=1013, y=1034, z=7}, -- Posição dentro da prisão jailTime = 1, -- Tempo em minutos que vai ficar preso
Depois no script abaixo, você escolhe os dois itens, um vai ser para roubar, outro para prender o item precisar ter o "Use With"
Você precisa adicionar a actionid 1256 pelo Map Editor na porta da prisão
\mods\Criminal System.xml
-
Deathstroke deu reputação a Wakon em [TFS 0.4/0.3.6] Aviso de bless ao sair da zona de proteção.Fiz esse script a bastante tempo a pedido de um membro e resolvi postar para vocês .
Versão testada: 8.60
TFS: 0.4 / 0.3.6
Função: Ao sair de uma zona de proteção, caso o player esteja sem bless, ele manda uma mensagem na tela avisando que está sem bless.
Em "Data/creaturescripts/scripts", copie e cole um arquivo.LUA e renomeie para checkBless.lua, apague tudo e cole:
function onThink(cid, lastExecution, thinkInterval) if(getTilePzInfo(getCreaturePosition(cid))) == false and getPlayerStorageValue(cid, 23333) <= 0 then for b = 1,5 do if getPlayerBlessing(cid, b) == false then setPlayerStorageValue(cid, 23333, 1) return doPlayerSendTextMessage(cid, 22, "Você não tem todas as bless, tome cuidado.") end end elseif (getTilePzInfo(getCreaturePosition(cid))) == true and getPlayerStorageValue(cid, 23333) == 1 then setPlayerStorageValue(cid, 23333, -1) end return true end Em "Data/creaturescripts", abra o creaturescripts.xml e adicione:
<event type="think" name="checkBless" event="script" value="checkBless.lua"/> Novamente em "Data/creaturescripts/scripts", abra o arquivo login.lua e adicione:
registerCreatureEvent(cid, "checkBless") Espero que gostem , caso dê algum erro, me avise!
Créditos: Wakon - Script ScythePanthom -- Pela idéia. -
Deathstroke deu reputação a Danyel Varejao em [System] Auto Loot Perfect~~~~~ * Auto Loot System 100% * ~~~~~ TFS 0.4 / TFS 0.3.7
Fala galerinha do Tibiaking, então, várias pessoas estão tendo problema com o sistema de autoloot, aqui vai um sistema que eu editei para melhorar o uso do mesmo. Sem muita enrolação vamos ao que interessa.
1° - Acesse a pasta data/lib e crie um arquivo chamado Auto_Loot.lua, coloque isso dentro do arquivo:
2° - Abra a pasta data/actions/scripts e crie um arquivo chamado Auto_Loot_Boost.lua, dentro dele adicione:
3° - Abra a pasta data/creaturescripts/scripts e crie um arquivo chamado Auto_Loot.lua, dentro dele adicione:
4° - Abra a pasta data/talkactions/scripts e crie um arquivo chamado Auto_Loot.lua, dentro dele adicione:
5° - Em data/actions/actions.xml adicione a seguinte tag:
<!-- Auto Loot --> <action itemid="7443" event="script" value="Auto_Loot_Boost.lua"/> Altere o numero 7443 caso queira mudar o id do item do seu auto loot boost.
6° - Em data/creaturescripts/creaturescripts.xml adicione a seguinte tag:
<!-- Auto Loot --> <event type="login" name="Auto_Loot_Login" event="script" value="Auto_Loot.lua"/> <event type="kill" name="Auto_Loot_Kill" event="script" value="Auto_Loot.lua"/> 7° - Em data/talkactions/talkactions.xml adicione a seguinte tag:
<!-- Auto Loot --> <talkaction access="0-4" words="/autoloot;!autoloot" event="script" value="Auto_Loot.lua"/>
Créditos
50% Killua(Vitor Bertolucci)
50% Danyel Varejão
-
Deathstroke deu reputação a Vodkart em [8.6][MODS] AutoLoot By Account! [+Item]A query nao foi executada, não está achando a coluna na DB
-
Deathstroke deu reputação a ricardo3 em [8.60] Dungeon Castlenão está completo
-
Deathstroke deu reputação a DdJs em Fortress (Castle) 24h | 8.60Event Map - Fortress 24h.
Download: Here
Scan: Here
Imagens:
-
Deathstroke deu reputação a Skyforever em [Resolvido] [Pedido] Piso com tempoTapora erro meu euheuheehehhu
local events ={} local tempo = 30 -- tempo em segundos local pos = {x = 1, y = 1, z = 1} function onStepIn(cid, item, pos) doPlayerSendTextMessage(cid, 27, "Contagem iniciada, daqui " .. tempo .. " segundos você será teleportado") events[getPlayerGUID(cid)] = addEvent(doTeleportThing, pos, tempo * 1000, cid) return true end function onStepOut(cid, item, pos) doPlayerSendTextMessage(cid, 28, "Contagem zerada.") stopEvent(events[getPlayerGUID(cid)]) events[getPlayerGUID(cid)] = nil return true end
-
Deathstroke deu reputação a .HuRRiKaNe em NPC que troca nomeTenta:
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 if msgcontains(msg, "trocar nome") then if getPlayerItemCount(cid, 1010) < 30 then npcHandler:say("Você não tem a quantidade necessária para trocar seu nome!}", cid) return TRUE end doPlayerRemoveItem(cid, 1010, 30) npcHandler:releaseFocus(cid) doAddPlayerBanishment(getPlayerGUID(cid), PLAYERBAN_LOCK) doRemoveCreature(cid) return TRUE end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) <?xml version="1.0" encoding="UTF-8"?> <npc name="Trocar Nome" script="data/npc/scripts/name.lua" walkinterval="0" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="240"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|, eu posso {trocar nome} por 30 pontos!" /> </parameters> </npc> -
Deathstroke deu reputação a Bruno Carvalho em [MoveMent] Mensagem quando o player passa pelo pisoVersão: 1.1
Versão suportada: 9.4+ (funciona em anteriores)
Descrição: Você já jogou aqueles jogos rpg onde você chega na área e aparece a mensagem falando onde você está? Sempre quis ter isso em seu servidor? Agora pode se tornar realidade.
TAG:
<movevent type="StepIn" actionid="50001-50075" event="script" value="mensagens.lua"/>
[/code] [i][b]Script:[/b][/i] [code]
function onStepIn(cid, item, position, fromPosition)
local mensagem = {
action = item.actionid,
[50001] = "Hospedaria do Unicornio Saltitante.",
[50002] = "Dorion."
}
if(not isPlayer(cid)) then
return true
end
if(item.actionid == mensagem.action) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, mensagem[item.actionid])
return true
end
end
Config: Vá em moveevents/scripts/mensagens.lua O script já está pré configurado, você somente deve configurar o action id e a mensagem. Em "Ex: 50001" é o action id do tile, você deve colocar os actions na sequencia numerica seguinte. (eles podem ir até 50075) Você deve colocar uma "," no final da tag de cima para não ter erro. [Ex]:
[50001] = "Hospedaria do Unicornio Saltitante.",
[50002] = "Dorion."
[/code] [i]Para:[/i] [code]
[50001] = "Hospedaria do Unicornio Saltitante.",
[50002] = "Dorion.",
[50002] = "NovoAID."
Atenção:
Os mesmos actions ids configurados devem ser colocados no mapa, e por serem action id você pode adicionar mais de uma vez. Como numa área total ou até na subida de uma montanha com várias escadas.
Créditos:
Alissow (Idéia)
Comedinha
-
Deathstroke deu reputação a Poke Hand em Servidor COM ou SEM Site?Se estiver falando de site para criar a conta,Não é necessário,mas é bom ter pelo menos um blog para por links de downloads,atualizaçoes,donate etc.... de preferencia que seja um bem editado.PRA MIM é até melhor sem site,pois fica mais prático e agilizado na hora de fazer conta,sim da pra ficar com um servidor online e ter sucesso sem site,isso é totalmente dispensavel,vou dar um exemplo de um servidor que nâo gosto muito,mas é o caso,o poke force,está online a 2 anos,nunca teve site e tem uma média boa de players online.Se for pra colocar site que seja algo descente,com segurança e rapido,e você também vai ter que ter bolso para bancar o site,pois vai oculpar mais espaço nma sua host e talz.
-
Deathstroke deu reputação a Cat em [ACTION] Rock ShovelEsse é um script RPG que eu fiz a um bom tempo com base em outro script do global, cuja sua função é remover uma pedra que está em seu caminho, você usa o item na pedra para quebrá-la e ganha uma small stone, e após um certo tempo a pedra volta ao normal, é bem parecido bom a machete, abre caminho para passar, mas nesse caso a pedra pode estar em uma passagem na montanha por exemplo.
DATA/Actions/scripts -> rockshovel.lua
function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == 1285 then doTransformItem(itemEx.uid, 3610) doDecayItem(itemEx.uid) doPlayerAddItem(cid, 1294, 1) return TRUE end return destroyItem(cid, itemEx, toPosition) end DATA/Actions/Actions.xml
<action itemid="5710" script="tools/rock.lua"/> 1285 -> ID da pedra grande.
3610 -> ID da pedra menor que ela vai se transformar quando "quebrar".
5710 -> ID da shovel que será usada para quebrar a pedra.
••
••
••
É bem simples mas útil em quests, espero que tenham gostado.
-
Deathstroke deu reputação a Cerberus em Quest Skeleton[by Cerberus]Tópico que tirei as fotos: Clique aqui
Vim colaborar com o Tk, estava meio sumido... está sempre usando o Tk para tirar minha duvida e achei a resposta para ela em 1 topico que antigo e incompleto pois não terminou Script...
Resolvi fazer o script e da suport para quem quiser a Quest.
Segue abaixo as fotos , são do topico antigo que peguei use ela como base e fiz o script...
Vamos começar com a Tag
<action itemid="6524" event="script" value="Quest_skeleton.lua"/> Crie o arquivo Quest_skeleton.lua na pasta Actions e ponha a Tag no action.XML , e action na caveira 20021
Skeleton na lava parte 2 , lembrando de por o actionId = 20020 na lava LavaId = 598 que vai por o skeleton.
TAg
<action itemid="2843" event="script" value="skeleton_lava.lua"/>
-
Deathstroke deu reputação a MatheusMkalo em Talkaction de Rank Inovadora!Bem, a talkaction é a mesma coisa que o !rank que conhecemos, porem voce pode adicionar outros ranks e ela atualiza exatamente na hora que alguem upa.
Exemplos de novos ranks:
Rank para ver quem morreu mais.
Rank para level de players vip.
Rank para ver quem matou mais monstros no ot.
E varios outros...
Bem se alguem quizer implementar um novo rank, peça no topico e mande PM para mim (Nao adianta so pedir no topico porque eu nao irei lembrar de entrar nele).
O script está em mod, bem mais facil de instalar.
Va na pasta mods do seu ot e adicione o arquivo: RankSystem em formato XML e adicione isso:
<?xml version="1.0" encoding="UTF-8"?> <mod name="RankSystem" enabled="yes" author="MatheusMkalo" forum="Tibiaking.com"> <config name="RankLib"><![CDATA[ ranks = { ["fist"] = 74666, ["club"] = 74667, ["sword"] = 74668, ["axe"] = 74669, ["distance"] = 74670, ["shielding"] = 74671, ["fishing"] = 74672, ["magic"] = 74673, ["level"] = 74674, ["monsters"] = 74675, ["guilds"] = 74676 } function havePlayerInRank(rank, playername) -- Checa se o player ja esta no rank. local rankstr = getGlobalStorageValue(ranks[rank]) local players = string.explode(rankstr, "; ") for i,x in pairs(players) do local a, b = string.find(x, "%[") if b ~= nil then if x:sub(1, b-1):lower() == playername:lower() then return TRUE end end end end function getPlayerLevelInRank(rank, playername) -- Pega o level de algum player no rank (Importante para novos tipos de rank.) local rankstr = getGlobalStorageValue(ranks[rank]) local players = string.explode(rankstr, "; ") for i,x in pairs(players) do local a, b = string.find(x, "%[") local t = string.match(x, "%[(.+)]") if b ~= nil and x:sub(1, b-1):lower() == playername:lower() then return t end end return 0 end function addRankPlayer(rank, playername, rankvalue) -- Adiciona um player ao rank ou muda o valor dele no rank. if not havePlayerInRank(rank, playername) then setGlobalStorageValue(ranks[rank], getGlobalStorageValue(ranks[rank]) .. (playername .. "[" .. rankvalue .. "]; ")) else local a,b = string.find(getGlobalStorageValue(ranks[rank]), playername) local c,d = string.find(getGlobalStorageValue(ranks[rank]), playername .. "%[%d+]") setGlobalStorageValue(ranks[rank], getGlobalStorageValue(ranks[rank]):sub(1, b+1) .. rankvalue .. "]; " .. getGlobalStorageValue(ranks[rank]):sub(d+2)) end end function tablelen(tab) -- By MatheusMkalo local result = 0 for i,x in pairs(tab) do result = result+1 end return result end function getRank(rank, maxplayers) -- Pega a lista de players com maior level do rank local rankstr = getGlobalStorageValue(ranks[rank]) local playerstatus = string.explode(rankstr, "; ") local tab = {} local rankTab = {} local rankStr = "Highscore for " .. rank .. "\n\n" .. (isInArray({"monsters", "guilds"}, rank) and "Number of Kills" or "Rank Level") .. " - " .. (rank == "guilds" and "Guild Name" or "Player Name") .. "\n" table.remove(playerstatus, #playerstatus) for i,x in pairs(playerstatus) do local a, b = string.find(x, "%[") local t = string.match(x, "%[(.+)]") tab[x:sub(1, b-1)] = tonumber(t) end local lastname = "" local lastvalue = 0 for i = 1, maxplayers do if tablelen(tab) <= 0 then break end for s,x in pairs(tab) do if x > lastvalue then lastvalue = x lastname = s end end table.insert(rankTab, lastvalue .. " - " .. lastname) tab[lastname] = nil lastname = "" lastvalue = 0 end for i,x in ipairs(rankTab) do rankStr = rankStr .. (i .. ". ") .. x .. "\n" end return rankStr end ]]></config> <talkaction words="!rank;/rank" event="script"><![CDATA[ domodlib('RankLib') if ranks[param:lower()] then setGlobalStorageValue(ranks[param:lower()], getGlobalStorageValue(ranks[param:lower()]) == -1 and "" or getGlobalStorageValue(ranks[param:lower()])) doShowTextDialog(cid, 6500, getRank(param:lower(), 10)) else return doPlayerSendCancel(cid, "Esse rank nao existe ou voce nao digitou corretamente.") end return TRUE ]]></talkaction> <creaturescript type="advance" name="RankSystem" event="script"><![CDATA[ domodlib('RankLib') if skill == 0 then setGlobalStorageValue(74666, getGlobalStorageValue(74666) == -1 and "" or getGlobalStorageValue(74666)) addRankPlayer("fist", getCreatureName(cid), newLevel) elseif skill == 1 then setGlobalStorageValue(74667, getGlobalStorageValue(74667) == -1 and "" or getGlobalStorageValue(74667)) addRankPlayer("club", getCreatureName(cid), newLevel) elseif skill == 2 then setGlobalStorageValue(74668, getGlobalStorageValue(74668) == -1 and "" or getGlobalStorageValue(74668)) addRankPlayer("sword", getCreatureName(cid), newLevel) elseif skill == 3 then setGlobalStorageValue(74669, getGlobalStorageValue(74669) == -1 and "" or getGlobalStorageValue(74669)) addRankPlayer("axe", getCreatureName(cid), newLevel) elseif skill == 4 then setGlobalStorageValue(74670, getGlobalStorageValue(74670) == -1 and "" or getGlobalStorageValue(74670)) addRankPlayer("distance", getCreatureName(cid), newLevel) elseif skill == 5 then setGlobalStorageValue(74671, getGlobalStorageValue(74671) == -1 and "" or getGlobalStorageValue(74671)) addRankPlayer("shielding", getCreatureName(cid), newLevel) elseif skill == 6 then setGlobalStorageValue(74672, getGlobalStorageValue(74672) == -1 and "" or getGlobalStorageValue(74672)) addRankPlayer("fishing", getCreatureName(cid), newLevel) elseif skill == 7 then setGlobalStorageValue(74673, getGlobalStorageValue(74673) == -1 and "" or getGlobalStorageValue(74673)) addRankPlayer("magic", getCreatureName(cid), newLevel) elseif skill == 8 then setGlobalStorageValue(74674, getGlobalStorageValue(74674) == -1 and "" or getGlobalStorageValue(74674)) addRankPlayer("level", getCreatureName(cid), newLevel) end return TRUE ]]></creaturescript> <creaturescript type="kill" name="KillRank" event="script"><![CDATA[ domodlib('RankLib') setGlobalStorageValue(74675, getGlobalStorageValue(74675) == -1 and "" or getGlobalStorageValue(74675)) if isMonster(target) then addRankPlayer("monsters", getCreatureName(cid), getPlayerLevelInRank("monsters", getCreatureName(cid))+1) end if isPlayer(target) then if getPlayerGuildId(cid) > 0 then if lastHit then if getPlayerGuildId(target) <= 0 or getPlayerGuildId(target) ~= getPlayerGuildId(cid) then addRankPlayer("guilds", getPlayerGuildName(cid), getPlayerLevelInRank("guilds", getPlayerGuildName(cid))+1) end end end end return TRUE ]]></creaturescript> <creaturescript type="login" name="RankEvents" event="script"><![CDATA[ registerCreatureEvent(cid, "KillRank") registerCreatureEvent(cid, "RankSystem") return TRUE ]]></creaturescript> </mod> Alem dos ranks normais, eu inclui um rank para os maiores matadores de monstros, para voces poderem ter uma ideia de como incluir novos ranks. PARA QUE O SCRIPT FUNCIONE RETIRE ESSA LINHA DO TALKACTIONS.XML: <talkaction words="!rank;/rank" event="script" value="ranks.lua"/> OBS: Para usar o rank novo use /rank ou !rank e o nome dos skills que se encontram nessa table: ranks = { ["fist"] = 74666, ["club"] = 74667, ["sword"] = 74668, ["axe"] = 74669, ["distance"] = 74670, ["shielding"] = 74671, ["fishing"] = 74672, ["magic"] = 74673, ["level"] = 74674, ["monsters"] = 74675 } No caso do novo rank seria /rank monsters. Para mudar o numero de players mostrados no rank mude essa linha no mod: doShowTextDialog(cid, 2160, getRank(param:lower(), 10))
10 eh o numero de players que vai mostrar.
Adicionado /rank guilds, que mostra as guilds que mais mataram no ot.
Agora com layout e frases exatamente iguais ao /rank padrao.
È Isso ai comentem!
-
Deathstroke deu reputação a Raell5 em [Link Quebrado][8.60] Nova Death Map RPG FULL - Frozen hell [Illumination] $ + War system + CTFRe-UP Download Link !
-
Deathstroke deu reputação a Pedro. em (Resolvido)Tabela MYSQL faltando!exclui a tabela antiga, manualmente ou por sql.
DROP TABLE `death_list`; e adiciona essa aqui
CREATE TABLE `death_list` ( `id` int(11) NOT NULL AUTO_INCREMENT, `player_id` int(11) NOT NULL, `date` bigint(20) unsigned NOT NULL, `level` int(11) NOT NULL, `killer_name` varchar(255) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`player_id`) REFERENCES `players`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB;
-
Deathstroke deu reputação a ADM Mayk on BaiakME em Job Systemfiz tudo certinho mais da esses erro enorme quando clico na alavanca é entro no quadrado poderia me ajudar
eh se possível me dizer onde troco os items que fica em cima da mesinha
-
Deathstroke deu reputação a MaXwEllDeN em [CTF] Capture The Flag 2.0(Automático)#Introdução
Este é um sistema de rouba bandeira, no qual tem dois times que se enfrentam e tentam se infiltrar na fortaleza do inimigo, roubar a bandeira dele e retornar para sua base com ela.
#Instalação
Faça o download do sistema (anexado ao tópico) e cole na pasta do seu servidor.
Atualizado 28/03/2014 Após ter instalado os arquivos nas suas respectivas pastas e instalado as tags
nos arquivos xml, abra a pasta do seu servidor, e em seguida abra a pasta spells/scripts/support, e abra o arquivo invisible.lua com algum editor de texto, depois de
function onCastSpell(cid, var) cole isso:
if (getPlayerStorageValue(cid, 16700) ~= -1) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end ficando assim:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) setCombatCondition(combat, condition) function onCastSpell(cid, var) if (getPlayerStorageValue(cid, 16700) ~= -1) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end return doCombat(cid, combat, var) end #Configuração
Como na maioria dos meus códigos: as configurações ficam na lib, então:
waitpos = {x = 93, y = 117, z = 6}, -- Posição da sala de espera tppos = {x = 92, y = 117, z = 7}, -- Onde o TP vai aparecer days = {2, 5, 7}, -- Dias que o evento vai abrir xp_percent = 0.5, -- Porcentagem de xp que o player vai receber quando ganhar timeclose = 1, -- Tempo para iniciar o CTF winp = 10, waitpos = {x = 93, y = 117, z = 6}, -- Posição da sala de espera
Posição onde os players que entrarem no teleport vão ficar esperando, até o evento iniciar
tppos = {x = 92, y = 117, z = 7}, -- Onde o TP vai aparecer Posição de onde o teleport vai aparecer
days = {2, 5, 7}, -- Dias que o evento vai abrir
Dias que o evento vai iniciar.
xp_percent = 0.5, -- Porcentagem de exp que o player vai ganhar
Quando o evento acaba, os players da equipe que venceu ganham uma quantidade de experiência baseada na experiência que eles já têm, exemplo:
Meu player tem 1200000000 de exp, quando o evento acabar, ele vai ganhar 0.5% da exp que ele tem, no caso desse exemplo 6000000 de exp.
timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
Tempo para o teleport sumir e os players que estão na sala de espera serem teletransportados para o evento.
winp = 10, -- Quantos pontos uma equipe precisa marcar para vencer
Quantos pontos uma equipe precisa marcar para vencer o evento.
Para configurar o horário que o evento vai abrir, é só você modificar na tag do globalevents.xml:
<globalevent name="CTFCheck" time="19:33:00" event="script" value="CTFMax.lua"/>
Você não precisa criar as bandeiras pelo map editor. O script irá adicioná-las automaticamente.
É isso, essa versão é uma remake, vários bugs reportados pela galera na v.1 foram corrigidos, o script ficou mais simples
Capture The Flag.rar
-
Deathstroke deu reputação a Absolute em SNOWBAL EVENT TIBIAOlá amigos, membros, visitantes, papagaios, enfim...
Depois de muito me pedirem o evento SNOWBAL WAR EVENT, trago ele 100% pra vocês.
Como funciona?
Os jogadores irão se divertir em uma emocionante partida de guerra de bolas de neve. O objetivo principal do evento é derrubar o número máximo de jogadores durante uma partida - atirando bolas de neve contra seus inimigos. O jogador que mais pontos fizer até o termino do evento será o vencedor (recompensa pode ser configurada).
Sem delongas, vamos ao que interessa...
Em data/actions abra o seu actions.xml e insira a seguinte linha:
<action actionid="7900" event="script" value="snowballaction.lua" />
Em data/actions/scripts crie um arquivo com o nome de snowballaction.lua e insira o seguinte conteúdo:
function onUse(cid, item, frompos, item2, topos) if item.actionid == 7900 then if(SBW_AMMOINFI) then doPlayerSendTextMessage(cid, 27, "as bolas de neve sao infinitas, nao ha necessidade que voce compre-as.") else if (getPlayerStorageValue(cid, SBW_SCORE) > 0) and (getPlayerStorageValue(cid, SBW_AMMO) < 30) then doPlayerSetStorageValue(cid, SBW_SCORE, getPlayerStorageValue(cid, SBW_SCORE)-1) doPlayerSetStorageValue(cid, SBW_AMMO, getPlayerStorageValue(cid, SBW_AMMO)+SBW_AMMOBUY) doPlayerSendTextMessage(cid, 27, "Voce trocou " .. SBW_AMMOBUY .. "x bolas de neve por 1 ponto de placar.") doSendMagicEffect(getCreaturePosition(cid),4) else doPlayerSendTextMessage(cid, 27, "Voce nao possui pontos de jogo o suficiente ou ja esta carregando muitas bolas de neve.") end end end end
Em data/talkactions abra o seu talkactions.xml e insira a seguinte linha:
<talkaction words="!snowball" event="script" value="snowballtalk.lua"/>
Em data/talkactions/scripts crie um arquivo com o nome de snowballtalk.lua e insira o seguinte conteúdo:
function onSay(cid, words, param, channel) local k = string.explode(param, ",") if(k[1] ~= nil) then if(string.upper(k[1]) == 'INFO') then local score = {} local output = "Voce tem " .. getPlayerStorageValue(cid, SBW_SCORE) .. " pontos.\nVoce tem "..getPlayerStorageValue(cid, SBW_AMMO).."x municoes.\n------------------\nO maior matador:\n" for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, SBW_INEVENT) then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)}) end end local lx = table.getn(score) if(lx > 3) then lx = 3 end table.sort(score, function(a, b) return a[2] > b[2] end) for k = 1,lx do output = output .. k..". "..score[k][1] .." [".. score[k][2] .."].\n" end doPlayerPopupFYI(cid, output) end if (string.upper(k[1]) == 'ATIRAR') then if(getPlayerStorageValue(cid, SBW_INEVENT) == 1) and not getTileInfo(getThingPos(cid)).protection then if getPlayerStorageValue(cid, SBW_EXAUSTHED) <= 1 then if(getPlayerStorageValue(cid, SBW_AMMO) > 0) then if SBW_STATUS == 'on' then if(SBW_AMMOINFI == false) then doPlayerSetStorageValue(cid, SBW_AMMO, getPlayerStorageValue(cid, SBW_AMMO)-1) end doPlayerSetStorageValue(cid, SBW_EXAUSTHED, 2) lineAnimation(getPlayerLookDirection(cid),getCreaturePosition(cid),12,cid,1,0,1,0,0,0,1,0) addEvent(doPlayerSetStorageValue, SBW_SHOOTEXAUSTHED, cid, SBW_EXAUSTHED, 1) if (getPlayerStorageValue(cid, SBW_AMMO) ~= 1) then doPlayerSendTextMessage(cid, 27, "Restam "..getPlayerStorageValue(cid, SBW_AMMO).."x bolas de neve.") else doPlayerSendTextMessage(cid, 27, "Usando sua ultima bola de neve, recarregue.") end end else doPlayerSendCancel(cid, "Voce esta sem bolas de neve, recarregue no centro do campo ou mate um inimigo.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end else doPlayerPopupFYI(cid, "Acalme-se voce deve esperar para atirar novamente.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end else doPlayerPopupFYI(cid, "Voce precisa estar dentro evento ou fora da pz.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end end end return true end function lineAnimation(lookDir,playerPos,effect,cid,fvar,fpos,ffound,fposV,fcheck,fvcid,floopCounter,fvpid, name) local var = fvar local pos = fpos local found = ffound local posV = fposV local check = fcheck local vcid = fvcid local loopCounter = floopCounter local vpid = fvpid local storage = SBW_EXAUSTHED if var < 2 then vcid = cid end pos = playerPos if not isInWallArray(convert(lookDir,pos)) then--isInWallArray({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z}) then --isInArray(t.onShoot.misc.walls_id, getThingfromPos({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z, stackpos=0}).itemid) then doSendDistanceShoot(pos, convert(lookDir,pos),effect) pos = convert(lookDir,pos) var=var+1 posV = convertV(lookDir,playerPos) for _, pid in ipairs(getPlayersOnline()) do if (getCreaturePosition(pid).x == pos.x and getCreaturePosition(pid).y == pos.y and getCreaturePosition(pid).z == pos.z) then --if loopCounter > 2 then vpid = pid --end if (vpid ~= vcid) then if var > 2 then if (getCreaturePosition(pid).x == posV.x and getCreaturePosition(pid).y == posV.y and getCreaturePosition(pid).z == posV.z) then killPlayer(pid,pos,getCreatureName(vcid)) if (lookDir == 0) or (lookDir == 2) then var = 6 else var = 8 end end end killPlayer(pid,pos,vcid) if (lookDir == 0) or (lookDir == 2) then var = 6 else var = 8 end end end loopCounter = loopCounter +1 end if (lookDir == 0) or (lookDir == 2) then if var ~= 6 then addEvent(lineAnimation, SBW_BALLSPEED, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid) else var = 1 end else if var ~= 8 then addEvent(lineAnimation, SBW_BALLSPEED, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid) else var = 1 end end else doSendMagicEffect(convert(lookDir,pos),2) var = 1 end end local ret = {} function convert(lookDir,pos) local positions = { [0] = {x = pos.x, y = pos.y-1, z = pos.z}, [1] = {x = pos.x+1, y = pos.y, z = pos.z}, [2] = {x = pos.x, y = pos.y+1, z = pos.z}, [3] = {x = pos.x-1, y = pos.y, z = pos.z} } ret = positions[lookDir] return ret end local ret = {} function convertV(lookDir,pos) local positions = { [0] = {x = pos.x, y = pos.y+1, z = pos.z}, [1] = {x = pos.x-1, y = pos.y, z = pos.z}, [2] = {x = pos.x, y = pos.y-1, z = pos.z}, [3] = {x = pos.x+1, y = pos.y, z = pos.z} } ret = positions[lookDir] return ret end function isInWallArray(pos) for k = 0, table.getn(SBW_WALLSID) do if getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k] then --this doesn't even make sense but tried other ways and it gave errors, so meh 2lazy2search return true end end return false end function killPlayer(cid, pos, killer) local t_l = SBW_AREA[1] local b_r = SBW_AREA[2] local posti = {} local isPossibleToTeleportPlayer = false while (isPossibleToTeleportPlayer == FALSE) do posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7) if isInWallArray(posti) == FALSE then isPossibleToTeleportPlayer = TRUE end end doTeleportThing(cid, posti) doSendMagicEffect(pos,2) doSendMagicEffect(posti,6) doSendAnimatedText(pos, ""..getCreatureName(killer).." ", 55) doPlayerSendTextMessage(cid, 27, "Voce morreu para "..getCreatureName(killer)..".") doPlayerSetStorageValue(killer, SBW_SCORE, getPlayerStorageValue(killer, SBW_SCORE)+SBW_POINTSKILL) doPlayerSendTextMessage(killer, 27, "You've killed "..getCreatureName(cid)..".") if SBW_LOSTSCORE then doPlayerSetStorageValue(cid, SBW_SCORE, getPlayerStorageValue(cid, SBW_SCORE)-1) end if SBW_RESETAMMO then doPlayerSetStorageValue(cid, SBW_AMMO, SBW_MINAMMO) end end
Em data/globalevents abra o seu globalevents.xml e insira a seguinte linha:
<globalevent name="StartSBW" time="19:00" event="script" value="events/snowballglobalevent.lua"/>
Em data/globalevents/scripts crie um arquivo com o nome de snowballglobalevent.lua e insira o seguinte conteúdo:
function onTime() function isInWallArray(pos) for k = 0, table.getn(SBW_WALLSID) do if (getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k]) then return true end end return false end function endsnowball() local score = {} if not SBW_USEWAIT then doRemoveItem(getTileItemById(SBW_TP, 1387).uid) end for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, SBW_INEVENT) > 0 then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)}) doPlayerSetStorageValue(pid, SBW_INEVENT, 0) doPlayerSetStorageValue(pid, SBW_SCORE, 0) doPlayerSetStorageValue(pid, SBW_AMMO, 0) doTeleportThing(pid, SBW_TPEND) end end table.sort(score, function(a, b) return a[2] > b[2] end) --local random_item = SBW_REWARDS[math.random(1, #SBW_REWARDS)] local hora = os.date("%X") local data = os.date("%x") if table.getn(score) > 0 then if SBW_ADDREWARD then for _, pid in ipairs(getPlayersOnline()) do if getCreatureName(pid) == score[1][1] then for op,ad in pairs(SBW_REWARDS) do doPlayerAddItem(pid, ad[1], ad[2]) end break end end end db.query("INSERT INTO `snowballwar` VALUES ('', ".. db.escapeString(score[1][1]) .. ",".. score[1][2] ..", ".. db.escapeString(data) ..", ".. db.escapeString(hora) ..");") db.query("UPDATE `players` SET `sbw_points`=`sbw_points`+".. score[1][2] .." WHERE `name` = " .. db.escapeString(score[1][1]) .. ";") doBroadcastMessage("[SNOWBALL EVENT] encerrou-se, parabens ao jogador "..score[1][1].." que venceu o SnowBall Event com "..score[1][2].." pontos.") end return true end local t_l = SBW_AREA[1] local b_r = SBW_AREA[2] function moveToEvent() for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid), SBW_WAITROOM[1], SBW_WAITROOM[2]) then local posti = {} local isPossibleToTeleportPlayer = false while (isPossibleToTeleportPlayer == FALSE) do posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7) if (isInWallArray(posti) == FALSE) then isPossibleToTeleportPlayer = TRUE end end doTeleportThing(pid, posti) doPlayerSetStorageValue(pid, SBW_INEVENT, 1) doPlayerSetStorageValue(pid, SBW_AMMO, SBW_MINAMMO) doPlayerSetStorageValue(pid, SBW_SCORE, 0) doPlayerSendTextMessage(pid, 27, "[SNOWBALL WAR] Seja bem vindo, aqui estao os comandos que voce vai usar durante o evento\n!snowball atirar --Atirar uma bola de neve.\n!snowball info --Isso mostra seus pontos de jogos e a quantia de bolas de neve que voce tem. Tambem mostra o ranking de pontos do evento.\n Recarregue suas bolas de neve clicando em frente ao gerador no centro do campo.\nAltamente recomendado adicionar estes comandos a sua hotkeys.") end end doRemoveItem(getTileItemById(SBW_TP, 1387).uid) addEvent(endsnowball, SBW_DURATION*1000*60) doBroadcastMessage(SBW_MSGSTART) end local time = os.date("*t") local timeopen1 = math.ceil(SBW_TIMEWAIT / 4) local timeopen2 = math.ceil(SBW_TIMEWAIT / 2) if (SBW_STARTAUTO) and (isInArray(SBW_DAYS,time.wday)) then doBroadcastMessage(SBW_MSGWARNING) if SBW_USEWAIT then addEvent(doBroadcastMessage, timeopen1*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen2 .." minuto(s) para iniciar o evento!") if (timeopen2 ~= timeopen1) then addEvent(doBroadcastMessage, timeopen2*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen1 .." minuto(s) para iniciar o evento!") end addEvent(moveToEvent, SBW_TIMEWAIT*1000*60) doCreateTeleport(1387, SBW_TPGO, SBW_TP) else if SBW_TFS == "0.3" then doItemSetAttribute(doCreateItem(1387, SBW_TP), "aid", 2880) else doSetItemActionId(doCreateItem(1387, SBW_TP), 2880) end if(SBW_DURATION > 0) then addEvent(endsnowball, SBW_DURATION*1000*60) end end end return true end
Em data/movements abra o seu movements.xml e insira a seguinte linha:
<movevent type="StepIn" actionid ="2880" event="script" value="snowballmovement.lua"/>
Em data/movements/scripts crie um arquivo com o nome de snowballglobalmovement.lua e insira o seguinte conteúdo:
function onStepIn(cid, item, pos) doTeleportThing(cid, SBW_TPGO) doBroadcastMessage("[SNOWBALL WAR] O " ..getCreatureName(cid).. " player esta participando do evento snowball.", MESSAGE_STATUS_CONSOLE_ORANGE) doPlayerSetStorageValue(cid, SBW_INEVENT, 1) doPlayerSetStorageValue(cid, SBW_AMMO, SBW_MINAMMO) doPlayerSetStorageValue(cid, SBW_SCORE, 0) end
Já estamos quase terminando!
Agora em data/lib crie um arquivo com o nome de SBW.lua com o seguinte conteúdo:
-- This script is part of Snow Ball War Event Tibiaking Absolute -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- // -- POSIÇÕES IMPORTANTES SBW_AREA = {{x = 1214, y = 1205, z = 7}, {x = 1251, y = 1242, z = 7}}-- AREA DO EVENTO | Canto superior esquerdo / inferior direito SBW_WAITROOM = {{x = 1229, y = 1220, z = 6}, {x = 1235, y = 1226, z = 6}} -- AREA DE ESPERA | Canto superior esquerdo / inferior direito SBW_TP = {x = 165, y = 45, z = 7} -- local onde teleport sera criado (entrada de jogadores) SBW_TPGO = {x = 1232, y = 1223, z = 6} -- local onde teleport vai levar (saida de jogadores) SBW_TPEND = {x = 155, y = 54, z = 7} -- local onde serao teleport ao final do evento SBW_GERADOR = {x = 1232, y = 1223, z = 7} -- local onde gerador vai ficar -- CONFIGURAÇÕES DO EVENTO SBW_DAYS = {1,2,3,4,5,6,7} -- dias de semana que vai abrir SBW_DURATION = 10 -- duração do evento em minutos SBW_POINTSKILL = 1 -- pontos de jogo por morte SBW_AMMOBUY = 20 -- quantia de munições compradas por cada ponto SBW_MINAMMO = 50 -- munição inicial dos jogadores SBW_TIMEWAIT = 3 -- tempo na sala de espera em minutos SBW_AMMOINFI = false SBW_LOSTSCORE = true SBW_RANDOMIZE = true SBW_RESETAMMO = true SBW_STARTAUTO = true SBW_USEWAIT = true --PREMIO DO EVENTO SBW_ADDREWARD = true SBW_REWARDS = { {6527,500}, {2345,1} } -- // Não mexa daqui para baixo SBW_TFS = "0.4" -- STORAGES SBW_EXAUSTHED = 2455 SBW_INEVENT = 2460 SBW_SCORE = 2465 SBW_AMMO = 2400 SBW_WALLSID = {5324,7003,7021,6712,7023,7002,6713,6714,6869,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6707,6708,6709,6710,6711,2698,2697,7020,6719,6720,6721,6722,6723,6724,6725,6726,6727,6761,6762,6768,6769,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4664,4665,4666,7008,7009,7010,7011,8239,7004,7005,7006,7007,6627,6628,6629,6630,6631,6632,6633,6634,6635,6636,6637,6638,7022} SBW_BALLSPEED = 150 SBW_SHOOTEXAUSTHED = 1000 SBW_SHOOTDIR = 0 SBW_STATUS = 'on' -- MENSAGENS SBW_MSGWARNING = "[SNOWBALL WAR] Abriu o teleport de ingresso para o evento, para participar se dirija ate o templo do servidor." SBW_MSGSTART = "[SNOWBALL WAR] O teleport foi removido e o evento foi iniciado, boa sorte a todos participantes." A frente das configuração solicitadas explica onde devem ser modificados.
E por fim, vá até o seu banco de dados (phpmyadmin) e insira a seguinte query:
CREATE TABLE IF NOT EXISTS `snowballwar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `score` int(11) NOT NULL, `data` varchar(255) NOT NULL, `hora` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Ainda no phpmyadmin execute:
ALTER TABLE `players` ADD `sbw_points` int(11);
Importe o arquivo SNOWBALL.otbm em seu mapa!
Imagem do mapa:
Download do mapa: https://www.sendspace.com/file/mae37z
Scan do mapa: https://www.virustotal.com/pt/file/94a507c71ef4cc241e415f2a8290441f7fa77809d804e24be18e9581a85c4740/analysis/1479161634/
É importante lembrar que peguei o script de um autor e realizei as modificações o tornando público para a comunidade exclusiva do TIBIAKING.
Espero que façam um ótimo proveito.
See you later.
-
Deathstroke deu reputação a Aztech em Ideias para sua quest, por Az'techIDEIAS PARA SUA QUEST
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Então, eu acabo ficando com varias ideias na cabeça para quests mas como não sei script acabo deixando elas em vão
quem sabe algum script poderia fazê-las assim deixaria o tópico mais completo. São ideias simples que vão deixar suas quests mais dinâmicas/divertidas/díficeis,
eu opto por quest em ots de war; até porque quests em ot globais na maioria das vezes tenho que fazê-las sosinho, seu time fica mais focado e sem aquele medo de perder os itens, não é
a quantidade de potion que te deixa vivo (são infinitos) enfim, eu prefiro ots de war.
Mas este tópico é para quests em geral então vamos lá
Os três caminhos
Uma parte da quest onde o time teria que ativar uma alavanca no meio do mapa sendo que lá existe um respawn automático de criaturas, com essa alavanca aceionada um teleport iria aparecer
por X tempo em algum dos três caminhos possíveis do mapa. (O mapa abaixo é somente uma base, faça como quiser)
Comentários: eu gostei dessa parte para uma quest, é dinâmico mas se configurar o tempo errado tornasse impossível.
▪ Entrada:
▪ Centro:
▪ Caminhos:
Explicando:
▪ Porta - uma porta onde o player só pode passar por ela a cada Y tempo.
▪ Pisos de monstros A - nascem em seu lugar depois de G segundos assim que morrem.
Piso de swamp - representa algum monstro que só nasce se não estiver em sua quantidade máxima (20).
Piso stone floor (laranja) - representa algum monstro mais forte, nasce se não estiver em sua quantidade máxima (4).
▪ Pisos de shallow water - qualquer piso que o player não consiga andar.
▪ Pisos de monstros B - nascem em seu lugar assim que a alavanca é puxada, apenas se não existirem.
Piso de roof - representa algum monstro que nasce somente quando a alavanca é puxada, não nasce se ja existir e se não estiver em sua quantidade máxima (13).
Piso de lava - representa algum monstro mais forte, só nasce se a alavanca for puxada, se não existir e se não estiver em sua quantidade máxima (2).
▪ Searing fire (fogo roxo) - representa o lugar onde o teleport aparece por D segundos quando ativado pela alavanca.
▪ Alavanca - ao ser puxada cria monstros B em todos os caminhos, cria um random teleport em sua determinada posição e fica virada para a direita até que o tempo do teleport acabe.
O sangue do paladino
Uma parte da quest onde um paladino com Y level teria que ficar por um determinado tempo em um piso que tire XXX à VVV de dano
sosinho ele não teria chance, mas sim com a ajuda de mages e druids usando exura sio. Pórem durante este tempo, diversos monstros irão nascer em volta do mapa,
tornando assim o trabalho dos mages e druis um tanto díficil.
Comentários: uma parte que conta principalmente com a estrégia do time, mas o que eu achei legal é que da pra fazer uma historia com isso: Paladinos são guerreiros dívinos, usam poderes
de luz e seu sangue é como se fosse vinho para os demônios.
▪ Centro:
Explicando:
▪ Porta - não faz nada, fica trancada.
▪ NPC - teleporta o paladin level X para dentro da jaula (em amarelo).
▪ Piso de water - cria monstros a cada Y segundos.
▪ Piso de snow - cria monstros mais fortes a cada W segundos.
▪ Piso da jaula - o paladino teleportado ficará por H segundos dentro, tomando danos. Caso o paldino morra o tempo é zerado, caso viva um teleport é criado por J segundos.
O backstab
Backstab ou ataque pelas costas consiste em quebrar a estrutura de um time em uma quest, como você sabe os time de uma quest possuem knights na frente e mages, druids e paladins atraz.
A estratégia é simples, apenas coloque uma alavanca para ativar alguma ponte e depois de alguns segundos monstros nascerem atraz do time, matando facilmente mages, druid e paladins.
Comentários: concerteza esse meio consegue derrubar qualquer time desprevenido ainda mais se você colocar monstros na frente.
Explicando:
▪ Piso de ice - monstros que nascem quando a alavanca é ativada.
▪ Piso de sand - possível localização do time.
▪ Setas azuis - movimento dos monstros.
▪ Setas roxas - movimento da frente do time.
▪ Alavanca - ativadora da ponte e spawn dos monstros.
▪ Piso de grass - parte a ser adicionada quando a alavanca é ativada.
Em breve faço mais alguns.
Cya.
-
Deathstroke deu reputação a Xiruneu em [Error occured!] Ajuda com Gesior 1.0Como resolver esses erros?
STEP 2
Check database connection
If you don't see any errors press link to STEP 3 - Add tables and columns to DB. If you see some errors it mean server has wrong configuration. Check FAQ or ask author of acc. maker.
Error occured!
Error ID:
More info: CANNOT CONNECT TO DATABASE: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
File: C:\xampp\htdocs\classes/database_mysql.php Line: 22
File: C:\xampp\htdocs/install.php Line: 229
STEP 3
Add tables and columns to DB
Installer try to add new tables and columns to database.
Error occured!
Error ID:
More info: CANNOT CONNECT TO DATABASE: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
File: C:\xampp\htdocs\classes/database_mysql.php Line: 22
File: C:\xampp\htdocs\classes/database.php Line: 199
File: C:\xampp\htdocs/install.php Line: 329
STEP 4
Add samples to DB:
Error occured!
Error ID:
More info: CANNOT CONNECT TO DATABASE: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
File: C:\xampp\htdocs\classes/database_mysql.php Line: 22
File: C:\xampp\htdocs\classes/database.php Line: 220
File: C:\xampp\htdocs\classes/account.php Line: 27
File: C:\xampp\htdocs\classes/account.php Line: 21
File: C:\xampp\htdocs/install.php Line: 353
-
Deathstroke deu reputação a Komic em [Error occured!] Ajuda com Gesior 1.0no config do gesior e do otserv está configurado a senha e login do phpmyadmin?