Histórico de Curtidas
-
Aberos deu reputação a Tungsx em [PROJETO-TK] Pokémon Dash Revolution - Open SourceBoa noite a todos, poucos devem lembrar de mim, não por esse nick mas sim como Kevick. Algumas semanas atrás decidi pegar uma base antiga e voltar a mexer visando trazer um conteúdo para a comunidade, meu passado aqui foi meio obscuro com algumas tretas desnecessárias e falta de profissionalismo com a comunidade. a Base utilizada é a Dash Revolution do @Aberos e do @Valakinhas. Com o tempo aprendi mais sobre desenvolvimento e achei que era uma boa hora para botar a mão na massa, hoje eu não estarei liberando o download, peço que movam para a área correta mas assim que concluído o download será adicionado para vocês.
O que foi feito até o momento?
Como a base não tinha um código fonte liberado, peguei um TFS 0.3.6 limpo e comecei a fazer alguns sistemas no mesmo para que funcionasse 100%. Futuramente atualizarei os sistemas basicos como GO/BACK, SURF e FLY para que os mesmos se comuniquem no núcleo da engine. Sem enrolação vamos aos sistemas
Catch System igual ao PDA - 100% Order system - 100% Pokebar - 90% (irei refazer o design da mesma no futuro antes de postar) Movebar - 100% (mantive a antiga movebar e adicionei uma mais atual, deixando a disposição ao gosto de vocês) Evoluções e boost por stone - 100% Spawn de Shiny aleatoriamente com porcentagem - 100% Nick System - 100% nas source com callback em lua - 100% Ditto System - 100% Sistema de CAP contando ball igual ao PDA EX: 1 pokémon na bag = 1 de cap, 5 pokémons na bag = 5 de cap na contagem - 100% Pokedex - 100% (pretendo adicionar a da masterx antes de postar) Sistema de ginásio do pda usando as funções doSetAttackGym, doSetGym, doSetMonsterGym em C++ - 100% Move system refeito para mais facilidade ao adicionar o mesmo - 100% Icon System - 90%, falta alguns pokémons
Segue logo abaixo as imagens, assim que possível tiro mais prints e atualizo o tópico:
pokebar e movebar
Codigo do npc de Duel
Slot pokémon igual à pxg com contagem de ball / vida do pokémon sendo adicionada ainda
remake nas sprites padrões
Catch System com distance shoot
Toda colaboração será bem-vinda, quem sabe não sai algo bacana ai.
https://github.com/Kevick/PokemonDashRevolution
-
Aberos recebeu reputação de Daniel Gaming em BrPokeOT OTClienteae galera queria mostrar aki um pouco do meu trabalho junto a um amigo
Obrigado pela atencao de todos!!
('usei opcode nos mods')
-
Aberos recebeu reputação de josiels em Erondino v17.1 By {ABEROS} BPO Open SourcePokemon bar nao e nas source , e so em lua.
-
Aberos recebeu reputação de RicardoGamer404 em [PEDIDO]Script Mega Evoluçãofiz um sistema assim pra um amigo
-
Aberos recebeu reputação de deivaoo em [MOD] Novo BroadCastnao tenho certeza mas para adpatar no broadcast nao prescisaria usar code e so ir no lua do game_console e alterar
isso
if mode == MessageModes.GamemasterBroadcast then modules.game_textmessage.displayBroadcastMessage(name .. ': ' .. message) return end por if mode == MessageModes.GamemasterBroadcast then modules.mod_broadcast.showText(name .. ': ' .. message) return end -
Aberos deu reputação a vyctor17 em Criaturas PassivasCriaturas Passivas. (tfs 0.3.6pl1)
hoje eu fiquei meio bolado mexendo em meu servidor com um cat me seguindo e pensei, mano que droga o sistema de hostilidade do tibia é uma porcaria.., então resolvi dar uma olhada em como ele funcionava nas source, e acabei vendo que modificando pouca coisa já se tem um sistema de hostilidade melhor não perfeito mas melhor . talvez daqui uns dias eu consiga fazer ele ser 100%, nesse método a criatura só ataca depois de perder vida e o ideal seria ela atacar ao tomar target mas isso tbm é facil de fazer dentro de alguns dias eu atualizo o tópico com isso.
Sem mais explicações vamos as ediçoes:
em monster.cpp: procure por,
bool Monster::selectTarget(Creature* creature) agora nesta função procure por:
if(it == targetList.end()) { //Target not found in our target list. #ifdef __DEBUG__ std::cout << "Target not found in targetList." << std::endl; #endif return false; } e logo a baixo adicione:
if(!isHostile() && getHealth() == getMaxHealth() && !isSummon()){ return false; } e na função a baixo deixa assim:
if((isHostile() || isSummon() || !isHostile() && getHealth() != getMaxHealth()) && setAttackedCreature(creature) && !isSummon()) Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::checkCreatureAttack, &g_game, getID()))); Agora ainda no monster.cpp procure por:
bool Monster::canUseAttack(const Position& pos, const Creature* target) const e remova isso:
if(!isHostile()) return true; agora é só recompilar e esta pronto .
Gostou?, então se puder me ajude!
não autorizo o re-post em qualquer outro fórum sem minha autorização.
vyctor17 - Waki-V LTDA ©
-
Aberos deu reputação a vyctor17 em Monstros Focando SummonsMonstros Focando Summons (tfs 0.3.6pl1)
Eai galera, to ativo essa semana rs, agora to trazendo pra vcs uma modificação que faz as criaturas sempre atacarem os summons antes dos players, tipo a do servidores de pokemon mas acho que pra fazer isso eles mudam o group do player pra um group que monstro não ataca, agora vou mostrar como fazer isso certo rs.
Lembrando que essa modificação da maneira que esta neste tópico só funciona com http://www.tibiaking.com/forum/topic/53480-criaturas-passivas/
já instalado nas source . da pra fazer funcionar sem isso sim e é ate bem simples só tirar algumas checagens mas dai isso fica com vcs :0.
Obs: Diferente do método em que se muda o group do player, se uma criatura usa um poder em área, e o player estiver perto tmb toma o dano. se vc não gostou desta informação digo que tem como "retirar o dano" com um statchange checando se o player tem um summon ativo.
Em Monster.cpp:
Procure por:
void Monster::doAttacking(uint32_t interval) E em baixo de:
if(!attackedCreature || (isSummon() && attackedCreature == this)) return; Adicione:
const std::list<Creature*>& summons = attackedCreature->getSummons(); CreatureList::const_iterator itt = summons.begin(); for(uint32_t i = 1; itt != summons.end(); ++itt, ++i) { if (i >= 1 && *itt){ searchTarget(); } } Ainda em Monster.cpp procure por:
bool Monster::selectTarget(Creature* creature) e em baixo de:
if(!isHostile() && getHealth() == getMaxHealth() && !isSummon()){ return false; } Adicione:
const std::list<Creature*>& summons = creature->getSummons(); CreatureList::const_iterator itt = summons.begin(); for(uint32_t i = 1; itt != summons.end(); ++itt, ++i) { if (i >= 1 && *itt){ if((isHostile() || isSummon() || !isHostile() && getHealth() != getMaxHealth()) && setAttackedCreature(*itt) && !isSummon()) Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::checkCreatureAttack, &g_game, getID()))); return setFollowCreature(*itt, true); } } Gostou?, então se puder me ajude!
não autorizo o re-post em qualquer outro fórum sem minha autorização.
vyctor17 - Waki-V LTDA ©
-
Aberos deu reputação a Orochi Elf em [C++] doCreatureCastSpell(creature, spellName)[C++] doCreatureCastSpell (0.3.6pl1)
Escrito e testado: 0.3.6PL1 [8.54 - 8.60]
Salve galera do TibiaKing, eu fui procurar na internet sobre essa função e vi que já tentaram cria-la, porém não conseguiram, ou se conseguiram nunca postaram. Então eu resolvi faze-la para vocês, e eu percebi que ninguém nunca tinha feito, por causa de uma dúvida, e um certo grau de dificuldade. Certamente, eu tive uma dificuldade no começo, porém ao desenvolver da função eu percebi que não era nada de mais.
Então eu trago aqui pra vocês esta função, cuja a ideia é fazer com que a criatura (jogador ou monstro) a utilize uma magia pelo nome dela, importante lembrar que o nome da magia, não é as palavras mágicas, exemplo: "utani hur" é a palavra mágica e "haste" é o nome da magia. Enfim, sem mais delongas e vamos aos códigos
Vá ao arquivo "LuaScript.cpp" e procure por:
//doPlayerAddExperience(cid, amount) lua_register(m_luaState, "doPlayerAddExperience", LuaScriptInterface::luaDoPlayerAddExperience);
E abaixo adicione:
//doCreatureCastSpell // by OrochiElf. lua_register(m_luaState, "doCreatureCastSpell", LuaScriptInterface::luaDoCreatureCastSpell);
Agora procure por:
E abaixo adicione:
int32_t LuaScriptInterface::luaDoCreatureCastSpell(lua_State* L) // by OrochiElf. { //doCreatureCastSpell(cid, spellname) std::string spellName = popString(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) { InstantSpell* spell = g_spells->getInstantSpellByName(spellName); if(!spell) { lua_pushboolean(L, false); return 1; } Creature* target = creature->getAttackedCreature(); if(target) spell->castSpell(creature, target); else spell->castSpell(creature, creature); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; }
Agora vá ao arquivo "LuaScript.h" e procure por:
static int32_t luaDoPlayerAddItem(lua_State* L);
E abaixo adicione:
static int32_t luaDoCreatureCastSpell(lua_State* L); // by OrochiElf
Exemplo, eu tenho um pet, e quero que ele utilize a magia de "utani hur" - "haste".
Talkaction Code:
function onSay(cid, words, param, channel) local summon = getCreatureSummons(cid)[1] if isCreature(summon) then doCreatureCastSpell(summon, "haste") end return true end
Esta função é muito requisitada para fazer servidores de pokémon, evitando gambiarras. Que foi o motivo para qual eu desenvolvi ela
Créditos.
Tony Araújo (OrochiElf) 100%
-
Aberos deu reputação a Gabrieltxu em Executavel Pda parando de funcionaré pda cara nao fica assustado tive o mesmo erro com o meu skyfall a 2 anos atras com isso, pda nao serve para um servidor grande e sério ....
-
Aberos deu reputação a Garou em Streaming de ProgramaçãoBoa tarde,
Depois de ler um artigo do Tecmundo, este aqui, fiquei pensando, é interessante criar um streaming para programação de scripts, como também modificações nas sources relacionado ao Open Tibia?
Gostaria da opinião de todos.
Att.
Garou
-
Aberos recebeu reputação de chavoz em (Resolvido)New Pokemon Bar OTCLIENTsubstitui por isso
local barPoke = nil local icons = {} -- Public functions function init() barPoke = g_ui.displayUI('barpoke', modules.game_interface.getRootPanel()) barPoke:setVisible(false) barPoke:move(250,50) connect(g_game, 'onTextMessage', getParams) connect(g_game, 'onTextMessage', onPokes) connect(g_game, { onGameEnd = hide } ) connect(g_game, { onGameStart = show } ) createIcons() end function terminate() disconnect(g_game, { onGameEnd = hide }) disconnect(g_game, 'onTextMessage', getParams) disconnect(g_game, 'onTextMessage', onPokes) destroyIcons() barPoke:destroy() end function getParams(mode, text) if not g_game.isOnline() then return end if mode == MessageModes.Failure then if string.sub(text, 1, 9) == "BarClosed" then hide() elseif string.sub(text, 1, 7) == "Pokebar" then atualizarBar(text) end end end function atualizarBar(text) if not g_game.isOnline() then return end local talk = "/pokamon" show() cleanAllPokes() local t = string.explode(text, "/") for i=2, #t do x= i-1 local poke = t[i] local zafrada = i-1 local progress = icons['Icon'..x].progress changeIconPoke(x, poke) progress.onClick = function() g_game.talk(talk.." "..poke..""..zafrada.."") end end end function changeIconPoke(i, poke) if not g_game.isOnline() then return end local icon = icons['Icon'..i].icon local image = "pokes/"..poke..".png" icon:setImageSource(image) end function createIcons() local d = 36 local image = "pokes/portait.png" for i = 1, 6 do local icon = g_ui.createWidget('IconPoke', barPoke) local icon1 = g_ui.createWidget('HealthBar', icon) local progress = g_ui.createWidget('Poke', barPoke) icon:setId('Icon'..i) progress:setId('Progress'..i) icons['Icon'..i] = {icon = icon, progress = progress, dist = (i == 1 and -5 or i == 2 and 35 or d + ((i-2)*38)), event = nil} icon:setMarginLeft(icons['Icon'..i].dist) icon:setImageSource(image) icon:setMarginTop(-5) icon1:setMarginTop(30) icon1:setMarginLeft(-3) icon1:setMarginRight(-6) icon1:setId('HealthBar'..i) progress:fill(icon:getId()) end end function cleanAllPokes() local image = "pokes/portait.png" for i = 1, 6 do local icon = icons['Icon'..i].icon icon.onClick = function() end icon:setImageSource(image) local progress = icons['Icon'..i].progress progress.onClick = function() g_game.talk("") end end end function onPokes(mode, text) if not g_game.isOnline() then return end if mode == MessageModes.Failure then if string.find(text, 'Pokehp/') then local t = text:explode('/') table.remove(t, 1) for i = 1, #t do barPoke:recursiveGetChildById('HealthBar'..i):setValue(t[i], 0, 100) end end end end function hide() barPoke:setVisible(false) end function show() barPoke:setVisible(true) end -- End public functions -
Aberos recebeu reputação de chavoz em (Resolvido)New Pokemon Bar OTCLIENTmanda seu otui pra eu poder fazer a funcao que interpreta o a sendcancel
-
Aberos deu reputação a SuggestName em [TFS 1.0] - Auto Loot SystemFiz esse sistema a algum tempo e resolvi compartilhar.
Geral
o Sistema automaticamente irá recolher o loot dos monstros e adicionar ao player que deu mais dano, caso o loot esteja em sua loot list.
Código
Creaturescript/scripts, crie um novo arquivo chamado autoloot.lua e adicione o código.
function onDeath(player, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) addEvent(getCorpseLootList, 100, killer, player:getPosition()) return true end
Crie um novo script chamado autoloot.lua dentro da pasta data, e adicione o código. Loot = {} LOOTSTORAGE = 45713 function Loot:create() return setmetatable({}, {__index = self}) end function Loot:add(id) return table.insert(self, id) end function Loot:remove(id) local newtb = {} for k, v in pairs(self) do if (v + 0) ~= (id + 0) then table.insert(newtb, v) end end self = setmetatable(newtb, {__index = self}) return self end function Loot:getString() local str = "" for k, v in pairs(self) do str = str.. v.. ";" end return str end function Loot:getTable() local tb = {} for k, v in pairs(self) do table.insert(tb, v) end return tb end function Loot:saveToPlayer(player) return doPlayerAddStorageValue(player, LOOTSTORAGE, self:getString()) end function getPlayerLootList(player) local lootList = getPlayerStorageValue(player, LOOTSTORAGE) lootList = lootList:split(";") local tableList = {} for k, v in pairs(lootList) do table.insert(tableList, v) end return setmetatable(tableList, {__index = Loot}) end function getCorpseLootList(player, pos) local loot = {} local text = "" local corpse = Tile(pos):getTopVisibleThing() local plits = getPlayerLootList(player):getTable() for i = 0, corpse:getSize() do table.insert(loot, getContainerItem(corpse.uid, i)) end for k, v in pairs(plits) do for x, y in pairs(loot) do if (v + 1) == (y.itemid + 1) then doPlayerAddItem(player, y.itemid, Item(y.uid):getCount()) doRemoveItem(y.uid, Item(y.uid):getCount()) end end end return loot end Crie um novo arquivo dentro de talkactions/script chamado autoloot.lua, e adicione o código.
function onSay(cid, words, param) local var = param:split(",") local loots = Loot:create() loots = getPlayerLootList(cid) if words == "/autoloot" then if var[1] == "add" then if getItemIdByName(var[2]) then for k, v in pairs(loots) do if (getItemIdByName(var[2]) + 0 ) == (v + 0) then return cid:sendCancelMessage("Alread added in the loot list.") end end loots:add(getItemIdByName(var[2])) loots:saveToPlayer(cid) return cid:sendCancelMessage("Item ".. var[2].. ", added to loot list.") else return cid:sendCancelMessage("This item dont exist.") end elseif var[1] == "remove" then if getItemIdByName(var[2]) then for k, v in pairs(loots) do if (getItemIdByName(var[2]) + 0 ) == (v + 0) then loots = loots:remove(getItemIdByName(var[2])) loots:saveToPlayer(cid) return cid:sendCancelMessage("Item ".. var[2].. ", removed from loot list.") end end return cid:sendCancelMessage("Item are not in loot list.") else return cid:sendCancelMessage("Item name dont exist.") end elseif var[1] == "list" then local text = "-- My Loot List --\n\n" for k, v in pairs(loots) do text = text.. k..": "..getItemName(v).."\n" end cid:popupFYI(text) end end return true end Dentro dos monstros aonde o script irá funcionar, adicione o código. <script> <event name="AutoLoot"/> </script> As TAG XML são essas. Creaturescript.xml <event script="autoLoot.lua" name="AutoLoot" type="death"/> Talkactions.xml <talkaction words="/autoloot" separator=" " script="autoloot.lua" /> OBS: No meu servidor eu fiz um novo sistema de storages, As funções são "doPlayerAddStorageValue e getPlayerStorageValue", você só precisa mudar o nome da função pois o corpo dela é o mesmo, então mude isso. Caso tenha esquecido de algo ou algum problema com o código me avise. -
Aberos deu reputação a Orochi Elf em Server pokemonNunca irá encontrar um servidor 100% sem bugs
A não ser, que você trabalhe em cima de um .
-
Aberos deu reputação a Orochi Elf em Pokemon Online (new era)Salve galera do TibiaKing, a um tempinho atrás eu criei um tópico aqui no fórum, falando que eu sentia saudades do primeiro servidor de Pokemon (sVkE) que particularmente, foi a melhor versão.
Hoje em dia, todos os servidores tendem a "imitar", o atual maior servidor de pokemon (PokexGames), então eu resolvi fazer os scripts do antigo SVKE em um servidor que eu tou fazendo de zoeira, para passar o tempo.
Fiz esse vídeo mostrando apenas 4 sistemas, o vídeo está um "lixo" UHEAUHEAUHUEAHEA, mas eu tava sem tempo de fazer, e o sistema de "GoBack e Caught", não estão prontos, eu fiz eles só pra ter uma base, porque eu estou fazendo todos os sistemas do 0.
https://www.youtube.com/watch?v=NXSP0dFyHbs
-
Aberos recebeu reputação de Gabrieltxu em [Pokemon Kpdo] Pokemon kpdo exaioros By Catero snix so sabe fazer uma coisa desde o Ekz
-
Aberos recebeu reputação de Gabrieltxu em [Show-OFF] Ultimo projeto para download?O sistema de setCreatureName funciona se vc sumonar a creatura fora da interface do game , o certo e vc alterar a funcao doSummonMonster para summonar fora da interface , ai vc usa o setCreatureName para alterar o nome ai vc usa o doTeleportThing para puxar a creatura perto do player !
-
Aberos deu reputação a Gabrieltxu em [Show-OFF] Ultimo projeto para download?Eai galera beleza? então já vem um tempo que venho falando que vou fazer um ultimo projeto para download para a galera e tals , esses dias pensei bem se iria fazer mesmo e começei a fazer essa minha ultima contribuição , criei esse tópico para um Show Off do meu ultimo trabalho , nome dele vai ser Pokémon Opal .
--//Pokémon Opal / Inicio do projeto 15/12/2014/ \\--
Caracteristicas do Servidor até Agora :
Modificações que não vai ter nesse server que contem no PDA (Por enquanto , essa lista vai mudar ao decorrer do projeto ):
- Gender System
- Shinys Aleatorios
Prints do avanço:
Créditos (Pode mudar de acordo com o avanço do projeto):
-Eu
-Aberos (por me ajudar)
-ZerefSoares (por me ajudar)
-Slicer e brun123 (pelos sistemas do pda)
-Erondino (pelo distro + sources)
- OrochiElf (Por ajudar nas sources)
é isso Galera vou indo fazendo com o tempo , não me cobre , tenho vida social tambem , não é todo o dia que vou mecher no servidor , mas é isso nada de novo , mas apenas outro distro totalmente diferente + sources , creio que vai ajudar muitas pessoas que curte o pda, Lembrando que ele não vai ser livre de bugs , pesso ajuda tambem para a galera que queira ajudar no projeto me enviar uma PM com contato do facebook para eu adicionar para conversarmos melhor.
Se gostou do projeto da um rep+ ai e vlw flw !
Bjao do Tiu GabrielTxu! :*
-
Aberos recebeu reputação de Liongm em (Resolvido)Source para PDAusa esse aki
http://www.tibiaking.com/forum/topic/44734-pokemon-dash-v9-o-melhor-open/
-
Aberos deu reputação a GabrielSapient em Launcher AutoUpdate C#Galera sempre procurei um Launcher AutoUpdate para meu servidor, depois de muita pesquisa e pouco conhecimento consegui fazer um em C#, está ai:
1. Download:
• Download | • Scan
2. Oque ele faz:
• Verifica a existência da versão local na pasta do cliente; • Se a versão do arquivo não existir, ele assume que a versão é "1.0" e cria um arquivo de versão; • Verifica arquivo .xml no servidor de atualização; • Baixar atualizações para todas as versões maiores do que a versão atual do cliente (atualiza tudo em apenas formato de arquivo .zip); • Extrai os arquivos .zip; • Exclui os arquivos .zip após a extração; • Arquiva a versão atualizada na pasta do cliente; • E, finalmente, desbloqueia o botão "Start Game". 3. Como editar: • Abra o arquivo .sln na pasta "VS Project" com o Visual Studio: Procure por: string Server = "http://127.0.0.1/Updates/"; • Altere o http://127.0.0.1/Updates/ para qualquer URL que você estará hospedando suas atualizações.
• Agora vamos procurar por: Process.Start("OTClient PkR DX9.exe", "\\Pokémon Rusty"); • Modifique o OTClient PkR DX9.exe pelo nome do .exe do seu Client.
• \\Pokémon Rusty e a pasta que está seu .exe e vai ficar seu Launcher. (troque sem tirar os "\\")
• No Visual Studio, selecione o controle WebBrowser(Neste caso, o nome "patchNotes") e alterar a url do "http://127.0.0.1/"para o caminho do arquivo index.html, na pasta do host: OBS: Isto á opcional, é apenas um template em .html. Você pode remove-lo e editar da maneira deseja. • Agora apenas jogue o .exe, .dll e o arquivo version da pasta "Launcher\VS Project\Launcher v2\bin\Debug ou Release" para a pasta de seu Client: Pronto! Agora e com o Site. • No host do site, apos colarmos a pasta Updates, editamos o arquivo Updates.xml, para cada atualização adicionamos um <update> fechamos com </update> como no exemplo do arquivo. Colocamos o arquivo atualização em .zip nessa mesma pasta, editando a versão e o nome no arquivo: • No arquivo version.txt colocamos a versão da nova atualização: • Uma dica para o .zip de atualização é colocar em pastas o caminho no client desejado a fazer update. Exemplo: data/things/854 nesta pasta colocaremos os arquivos que será substituído, no exemplo foi Tibia.spr e .dat. Depois compactamos e deixamos na pasta Updates, sem esquecer de colocar o nome no arquivo Updates.xml. 4. Dica • Pronto! Agora e só criar um instalador com o launcher, com atalho na área de trabalho (o launcher é o .exe que você colocou no client). Você pode modificar o launcher do jeito que quiser, o arquivo index.html e etc. Quando abrir o arquivo ele irá atualizar, liberar o botão "Start Game", e quando você clicar vai fechar o Launcher e abrir o Client. 5. Créditos Eu - Pelo launcher e pelo tutorial. -
Aberos recebeu reputação de Its Lee em (Resolvido)[Pedido] Otserve de Pokémonessa base nunca foi disponibilizada , essa base e de um polones
-
Aberos recebeu reputação de Wend em (Resolvido)[OTClient] Bug HealthBarnao seria mais facil vc colocar aki
setSkillPercent('health', percent)
Substitui :
onHealthChange(player, player:getHealth(), player:getMaxHealth())
por
onHealthChange(player, player:getHealth(), player:getMaxHealth(), player:getHealthPercent())
-
Aberos recebeu reputação de slyton em Recrutamento Spritera base e mais do gristony do que minha ! e eu eo gristony estamo ajudando o slyton
-
Aberos recebeu reputação de Wend em Compilando OTCLient no Windowsesse erro ai e do MinGw , vc teve ter instaldo errado ow o path na variavel de ambiente deve ta errado
-
Aberos deu reputação a Orochi Elf em Pokémon new age (Pna) Open sourcehttp://www.tibiaking.com/forum/topic/44181-mod-catch-window/
Enfim .. jajá vou disponibilizar esta Catch Window.
Se quizer, voce poderia atualizar a sua.. ou não ...voce quem sabe