Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 12/11/16 em %
-
Clan PXG
Josegvb e um outro reagiu a Faelzdanil por um tópico no fórum
Saudações povo... Bom galera eu vejo que muitos OTserver ai estão tudo querendo "clonar" a PokexGames, fazer tudo igual a ela. No meu ponto de vista acho isso ridículo chato de mais, acho que o melhor OTserver é aquele que inova e faz o seu próprio. Mas em fim hoje vou disponibilizar a vocês a área de Clan igual da PXG. Eu não irei utilizar essa área, apenas copiei por que não tinha nada pra fazer então resolvi postar pra alegria de alguns ! Bom eu copiei apenas a área de Psycraft. Como os clans são padrão basta você copiar ela e colocar em outro canto, depois disso só trocar as walls e pisos ! Algumas Screens ! A esquerda do mapa, eu estava começando a fazer a área de Orebound, mas não finalizada ! Caso tenham suas duvidas de como é a área basta entrar na PokexGames e visualizar o tipo de Walls e Grounds, depois disso só passar por cima Sobrando tempo eu voltarei postando umas ilhas e outras coisas, qualquer coisa só fazer pedidos via Chat ou PM... Download: 4SharedScan: VirusTotal Não poste esse conteúdo em outro Fórum, exclusividade do Xtibia !2 pontos -
The Forgotten Server 1.2
Evasion reagiu a Administrador por um tópico no fórum
The Forgotten Server 1.2 - Suporte para protocolo 8.60 Sources: https://github.com/ninjalulz/forgottenserver/archive/8.6.zip Repositório: https://github.com/ninjalulz/forgottenserver/tree/8.61 ponto -
Spr e dat da pxg 07/05/2016
LilDanonee reagiu a MUNlZ por um tópico no fórum
AQUI PESSOAL O LINK DA SPR E DAT ATUAIS DA PXG Versão 854 V1 - http://www.mediafire.com/download/ukmjw4j85l8rc3d/pxg_maio_2016.zip Versão 854 V3 - http://www.mediafire.com/download/ykz4oqsc9sxydk8/pxg maio 2016.zip Lembrem-se de usar o object builder mais atual e marcarem como estendido e transparência. =D1 ponto -
5 Dicas para se tornar um spriter!
Arisen Trapzer reagiu a Administrador por um tópico no fórum
1 FAÇA POR GOSTAR Essa dica parece o clichê, “fazer o que gosta”, mas tem fundamento. Boa parte dos spriters de antigamente faziam suas sprites como hobbie, elas não tinham como destino (na maioria), projetos open tibia. O foco era melhorar a qualidade das sprites e compartilhá-las com a comunidade. Hoje em dia, a maioria está ligeiramente focada em projetos e freelances para atender os mesmos. Não é porque gostam de spriting, mas porque precisam fazer. Esses spriters quando novatos (existe algum que deixou de ser novato?) nem sempre levam a sério, acabam fazendo as coisas sem compromisso. Apenas fazem spriting junto com milhares de outras tarefas como mapping, scripting para atender a necessidade do próprio projeto (que na maioria dos casos é mais um poketibia), de todos que vieram me pedir ajuda, nunca vi nenhum que acabou evoluindo... “Lesh oque vose achou da mimha sprint?” Então essa é a mensagem, se comprometa principalmente com melhorar suas sprites, e não com projetos. Tenha como foco o spriting, projetos surgem e na maioria das vezes não são finalizados, mas você continuará sendo spriter. 2 NÃO SEJA TEIMOSO Lesh: “Essa criatura está fora da perspectiva, você pode arrumar isso traçando uma linha diagonal. A pintura tá “meio” rabiscada você pode tentar agrupar em clusters pra melhorar o global shading.” Shinevis: “Não tá fora da perspectiva é que é meu estilo fazer assim!!! $%#$%#$%$@!@” (nome totalmente fictício, qualquer semelhança é mera coincidência) Se tem algo mais chato quando alguém experiente vai te passar uma crítica construtiva é quando a pessoa começa a se justificar. Se alguém passa muito tempo sem receber uma crítica e muitos elogios de fórum (o que é comum quando não se tem algum artista experiente no fórum), em poucos meses esse artista começa a se sentir “o spriter profissional”. Isso é péssimo porque nesse perfil o spriter passa a não aceitar mais críticas para manter sua imagem, a desculpa mais frequente para as críticas “esse é o meu estilo”. Também não aceita que existem spriters mais experientes/melhores do que ele, e faz de tudo pra ocultar isso em prol da sua imagem. 3 NÃO SE LIMITE Muitos artistas que iniciam, geralmente começam fazendo sprites de Pokémon e não saem disso. Sprites de Pokémon são mais simples e não requerem tanta habilidade, também não possuem textura na maioria dos casos. Esses artistas acabam limitados e muitas vezes desistem porque o verdadeiro foco eram seus projetos de Pokémon. É importante fazer o que você gosta, mas gostar de Pokémon e ter um projeto é totalmente diferente de gostar de spritear. 4 CONHEÇA A(S) FERRAMENTA(S) E O BÁSICO Quantos iniciantes me perguntam como fazer uma sprite, mas mal sabem selecionar uma cor com o conta-gotas do Paint? A dica simples é, estude o programa que você vai utilizar, veja se ele é adequado para você, aprenda a utilizar suas ferramentas. Outras dicas interessantes: - Não pinte com as cores iniciais do paint. - Não pinte com o balde do paint. - Não pinte com o spray do paint. - Busque pelos termos básicos como: AA, contraste, saturação, volume, cluster, global shading. - Não estude com tutoriais de “Como fazer sprites para habbo, minecraft, flappy bird”. - Não salve suas sprites em JPG, e sim PNG. “Lesh fis um sprint ta bom?” 5 CONVIVÊNCIA Característica chave de um spriter, saber pegar as melhores características de um bom sprite pra si. Aprender com o erro dos outros, aprender com os acertos dos outros. Boa parte do que se vê hoje em boas sprites são padrões já repetidos por várias pessoas. Busque entender o que você acha bom numa sprite, veja o que está repetido nas sprites que você considera boa (se quiser evoluir mais rápido, escolha as melhores, tenha um bom filtro). Se você anda com bons spriters a tendência é que se torne um, isso vale pra qualquer coisa, se você quer ser bom em uma área, esteja próximo dos que são bons naquilo, provavelmente terá acesso e mais contato com o universo do spriting. • • • Texto escrito por @Leshrot. Este artigo é uma opinião pessoal, com objetivo de ajudar iniciantes. Agradecimento especial aos sprites que autorizaram o uso de suas sprites no tópico, se tiver algo errado com os créditos me avisem! Mikas Blueshardxdxd @jeerenato @Leshrot1 ponto -
1 ponto
-
Eu gostaria de fazer dois pedidos agora: O primeiro, para confirmar uma dúvida minha, é que você teste ataques de outros elementos e verifique o que é imprimido (não precisa atacar com o melee, apenas com as spells). Se possível, especifique também qual elemento imprimiu qual valor. O segundo, troque esta parte: if(combat == 128 or combat == 1) and getPlayerStorageValue(attacker, 21102) == -1 then -- ataque basico doSendMagicEffect(getThingPos(cid), 3) value = getEffectvineCombat(cid, attacker, value) if value == 0 then return false else value = value * getOffense(attacker) -- buff ataque system local name = doCorrectString(getCreatureName(attacker)) if pokes[name] and pokes[name].level <= 5 and value ~= 0 then value = -math.random(pokes[name].offense, pokes[name].offense+5) end endelse -- magia value = getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- checagem de efetividades de magia if value == 0 then return false else value = value * (1 + getSpecialAttack(attacker) / 100) endend por: if(combat == 128 or combat == 1) and getPlayerStorageValue(attacker, 21102) == -1 then -- ataque basico print("auto attacking...") if value == 0 then print("value = 0") return false else print("value do auto ataque antes da fórmula = "..value) value = value * getOffense(attacker) -- buff ataque system print("value do auto ataque depois da fórmula = "..value) local name = doCorrectString(getCreatureName(attacker)) if pokes[name] and pokes[name].level <= 5 and value ~= 0 then value = -math.random(pokes[name].offense, pokes[name].offense+5) end endelse -- magia value = getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- checagem de efetividades de magia if value == 0 then return false else value = value * (1 + getSpecialAttack(attacker) / 100) endend Depois, use a combinação Earthquake + melee e informe o que for imprimido.1 ponto
-
(resolvido) alguém pode criar uma spell a partir dessa action por favor?
wevertonvrb reagiu a zipter98 por uma questão
Eu acabei de testar o código, e está funcionando como devido (se há alguma discrepância na variação de HP, não passa de 10). A vida da nova forma é proporcional a da anterior. Porém, se o que você quer dizer é que as formas estão com vida total e o Castform normal está perdendo HP, significa que há algum erro no seu código. Se for o caso, peço que poste-o aqui.1 ponto -
aqui eu consegui corrigir como vc disse pela source e parou,vlw e.e1 ponto
-
isso é pro poke ir pro depot ? vivo n morto ?1 ponto
-
(resolvido) Teleport Automatico Error
Deadpool reagiu a mateusmoretti por uma questão
PROBLEMA RESOLVIDOOOOOOOOOOOOOOOOOO, OBRIGADO DEAD POR ME AJUDAR E ACONSILHIAR NOS SCRIPTS CARA! to aprende cada coisa contigo que ta legal! Converti para ANSI problema resolvidoooooooooooooooooooo obrigado1 ponto -
(resolvido) Teleport Automatico Error
mateusmoretti reagiu a Deadpool por uma questão
com o notepad converter para ANSI que resolve kk1 ponto -
[11/12/2016 16:17:15] [Error - CreatureEvent::configureEvent] No valid type for creature event.walk[11/12/2016 16:17:15] [Warning - BaseEvents::loadFromXml] Cannot configure an event Creaturescript.xml e comenta esta linha: <event type="walk" name="WalkTv" event="script" value="tvsys.lua"/> --------------------------- [11/12/2016 16:17:11] [Warning - Items::loadFromXml] Unknown key value ispokeball em item.xml, procure por: " ispokeball" e remova todas as linhas que possuem o atributo ispokeball.1 ponto
-
Remova os seguintes comentários e veja se o erro permanece. -- só copiar uma linha e add mais dias. se quiser só um dia deixe só a primeia linha-- Posição aonde sera criado o teleport-- Posição pra onde o teleport ira levar o player1 ponto
-
esse flood ai é pq n tem a função doCreatureSetNik, mas o viktor postoi, so colocar que para1 ponto
-
heala sim, faz dano em uma grande area e heala o dano feito em aoe, em qualquer pda heala tb1 ponto
-
O PDA do nextbr tem esses bugs todos arrumados, porque nao baixam e tals?1 ponto
-
(resolvido) Ajuda script npc vocation
walissonwashing reagiu a DuuhCarvalho por uma questão
local outfit = 20 -- nmr do newtypelocal item1 = 12620local quant1 = 600local vocation547 = 547local pos = {x=655, y=399, z=7}local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction santaNPC(cid, message, keywords, parameters, node)if(not npcHandler:isFocused(cid)) thenreturn falseendif(parameters.present == true) thenif(doPlayerRemoveItem(cid,item1,quant1) == true) thendoPlayerSetVocation(cid, 547)doSetCreatureOutfit(cid, {lookType = outfit}, -1)doTeleportThing(cid, pos)npcHandler:say('Voce agora é broly ultragod.',cid)elsenpcHandler:say('Voce nao tem 600 ultimate coins .',cid)endnpcHandler:resetNpc()return trueendendnpcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Voce quer ser {broly ultragod}?.")local noNode = KeywordNode:new({'no'}, santaNPC, {present = false})local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true})local node = keywordHandler:addKeyword({'broly ultragod'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer realmente ser broly ultragod?, você não ira se arrepender. {yes}'})node:addChildKeywordNode(yesNode)node:addChildKeywordNode(noNode)npcHandler:addModule(FocusModule:new())1 ponto -
(resolvido) [PEDIDO] EQUIP ITEM
Deadpool reagiu a DuuhCarvalho por uma questão
local outfit = 100function onEquip(cid, item) doSetCreatureOutfit(cid, {lookType = outfit}, -1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Equipado") doSendMagicEffect(getCreaturePosition(cid), 22)return trueendfunction onDeEquip(cid, item) doRemoveCondition(cid, CONDITION_OUTFIT)return trueend <movevent type="Equip" itemid="ID do Item" slot="SLOT do Item, armor, legs, shield" script="arquivo.lua"/> <movevent type="DeEquip" itemid="ID do Item" slot="SLOT do Item, armor, legs, shield" script="arquivo.lua"/>1 ponto -
Você testou o que eu disse no meu último comentário da página anterior?1 ponto
-
Troque: if n > math.ceil(#pokemon / 15) then doPlayerSendCancel(cid, "There are only lists from 1 to "..math.ceil(#pokemon / 15)..".") return trueend por: if not n then doPlayerSendCancel(cid, "Type a number first.") return trueelseif n > math.ceil(#pokemon / 15) then doPlayerSendCancel(cid, "There are only lists from 1 to "..math.ceil(#pokemon / 15)..".") return trueend PS: Recomendo que use a ferramenta code (logo acima) para postar códigos, pois parece que o XTibia está cortando alguns caracteres dos comentários.1 ponto
-
Não imaginei que meses sem programar de fato desfariam meu conhecimento em bases poketibianas. Havia esquecido completamente a estrutura das funções de evolução e ajustes de status no PDA. Enfim, editei meu comentário que continha o código com ambas as correções.1 ponto
-
Ah, esqueci que alguém poderia deixar de digitar o número da lista. Corrigido. Fiz uma edição para que o popup permaneça, removendo-se o parâmetro lista: !orb n mostrará a lista conforme seu número. !orb pokémon para comprar o pokémon, como antes. Se preferir que apenas !orb mostre a lista, enquanto !orb pokémon compre-o:1 ponto
-
Como este pedido é bastante semelhante com o anterior que você fez, usei o antigo código como base. Se o modelo de comando não lhe agradar (!comprar lista n e !comprar nome_do_pokémon), avise que editarei o código.1 ponto
-
Errado. Se é em lua não precisa das sources. O fly do pda é todo feito em lua, então, se ele colocar, ele só vai ter que adicionar as races, e ir no game.cpp e apagar está linha: damage = std::min(target->getHealth(), damage); E também arrumar o bug do catch; (quando capitura o poke, o 7 nao vai pro cp); se arrumar o do 7 indo pro CP, quando enviar ela vai bugada, é preciso usar revive; se seu pokémom morrer em batalha a pokebola fica travada, é preciso da um clique com o botao direito do mouse para voltar ao normal e entao voce pode usar revive ou falar coma joy. Esses que eu citei, foram todos que encontrei e arrumei, quando eu tinha o sekai antigmente, e era PDA claro. (Não estou criticando, estou demonstrando a realidade, desculpe) Se qualquer um fizer isto, em uma source e jogar em qualquer PDA, irá funcionar. Se ele for sem level claro. E ainda fica bugado. Então, PDA com SOURCE, não rola. A menos que tenha conhecimento em c++ para trabalhar. E ainda sim, aconselho fazer um do 0, ou pegar qualquer base que tenha seu codigo fonte proprio. ^^ Mas fora isso, é legal vê que se esforçam em tentar trazer conteudo para nossa comunidade.1 ponto
-
[REMOVIDO]
Deadpool reagiu a Prometheus X por um tópico no fórum
@Deadpool Estou Atualizando a base e retirando os bugs da versão postada para postar uma 2.0 oque devo fazer? Claro que seus créditos pela ajuda nas funções da quela vez lembra? que era pra versão 2.0 que pretendo postar hoje ou amanha @Deadpool VERSÃO 2 LIBERADA http://www.4shared.com/rar/qaLemG-mce/Base_V2__Source.html1 ponto -
[9.80-9.86] TFS v0.2.15 Mystic Spirit
Espiho reagiu a Administrador por um tópico no fórum
The Forgotten Server v0.2.15 Mystic Spirit Lista completa de mudanças pode ser encontrada em doc/CHANGELOG. Protocolos 9.80-9.86, offline training, novo VIP list code, novas mounts e outfits, Twist of Fate, stamina system, unfair fight reduction, global inbox, um monte de optimizaçõese mais. Este é probavelmente o maior changelog de um release 0.2. Microsoft Visual C++ 2012 Redistributable Package é requerido para rodar o servidor(x86 for 32-bit, ou x64 for 64-bit): download aqui. Download The Forgotten Server 0.2.15: theforgottenserver-v0.2.15-win32console.7z theforgottenserver-v0.2.15-win32gui.7z theforgottenserver-v0.2.15-win64console.7z theforgottenserver-v0.2.15-win64gui.7z theforgottenserver-v0.2.15-win32console.7z theforgottenserver-v0.2.15-win32gui.7z theforgottenserver-v0.2.15-win64console.7z theforgottenserver-v0.2.15-win64gui.7z1 ponto -
events.xml <event class="Creature" method="onTargetCombat" enabled="1" /> creature.lua event em baixo de : function Creature:onTargetCombat(target) adicionar : if not self then return true end if self:isPlayer() and target:isMonster() then target:registerEvent("extra_loot_d") end creaturescripts.xml <event type="death" name="extra_loot_d" script="extra_loot.lua"/> extra_loot.lua creaturescript local extra_loot = { {hasName = "dragon", items = { {id = 2152, count = 2, chance = 40000}, -- 40% {id = 2160, countMax = 4, chance = 10000} }}, {items = { {id = 2365, chance = 10000}, {id = 2392, chance = 1000} }}, } function Container:addExtraLoot(c, t) if t.hasName then local cn = c:getName():lower() local cm = t.hasName:lower() if not cn:match(cm) then return true end end for i = 1, #t.items do local count = 1 if t.items[i].count then if t.items[i].countMax then count = math.random(t.items[i].count, t.items[i].countMax) else count = t.items[i].count end else if t.items[i].countMax then count = math.random(1, t.items[i].countMax) end end if math.random(0, 100000) <= t.items[i].chance then self:addItem(t.items[i].id, count) end end end function onDeath(creature, corpse, killer, mostDamage, unjustified, mostDamage_unjustified) if not creature:isMonster() then return true end if corpse and corpse:isContainer() then for i = 1, #extra_loot do corpse:addExtraLoot(creature, extra_loot[i]) end end return true end Créditos : zbizu1 ponto
-
Perfect nick system 100%
dragonittao reagiu a Strogman por um tópico no fórum
exclusividade xtibia porfavor não postar em outro forum system exclusivo para o xtibia Bom vi muito gente a traz desse sistema e, então resolvi fazer esse nick para ajudar a galera que quer sair do Lixo do pda e começar um projeto bom com os open source. para quem não sabe, nick system é um system muito popular na família dos poketibias, é um system que muda o nome/adiciona um apelido no personagem, muda o nome de exibição no client o nome que fica em cima do personagem no jogo. fulano: Gristony como essa função funciona? Gristony: exatamente igual a do pda! Em ProtocolGame.cpp em baixo de: void ProtocolGameAddShopItem(NetworkMessage_ptr msg, const ShopInfo item){ const ItemType& it = Itemitems[item.itemId]; msg->AddU16(it.clientId); if(it.isSplash() || it.isFluidContainer()) msg->AddByte(fluidMap[item.subType % 8]); else if(it.stackable || it.charges) msg->AddByte(item.subType); else msg->AddByte(0x01); msg->AddString(item.itemName); msg->AddU32(uint32_t(it.weight * 100)); msg->AddU32(item.buyPrice); msg->AddU32(item.sellPrice);} adicione: void ProtocolGamereloadCreature(const Creature* creature){ if(!canSee(creature)) return; // we are cheating the client in here! uint32_t stackpos = creature->getTile()->getClientIndexOfThing(player, creature); if(stackpos >= 10) return; NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); stdlist<uint32_t>iterator it = stdfind(knownCreatureList.begin(), knownCreatureList.end(), creature->getID()); if(it != knownCreatureList.end()) { RemoveTileItem(msg, creature->getPosition(), stackpos); msg->AddByte(0x6A); msg->AddPosition(creature->getPosition()); msg->AddByte(stackpos); AddCreature(msg, creature, false, creature->getID()); } else AddTileCreature(msg, creature->getPosition(), stackpos, creature); }}void ProtocolGamesendCreatureNick(const Creature* creature){ reloadCreature(creature);} Em ProtocolGame.h em baixo de: void sendQuestInfo(Quest* quest); adicione: void reloadCreature(const Creature* creature);void sendCreatureNick(const Creature* creature); Em Player.h em baixo de: void sendCreatureShield(const Creature* creature) {if(client) client->sendCreatureShield(creature);} adicione: void sendCreatureNick(const Creature* creature) {if(client) client->sendCreatureNick(creature);} Em Creature.cpp em baixo de: partyShield = SHIELD_NONE; adicione: Nick = ""; Em Creature.h em baixo de: virtual const Monster* getMonster() const {return NULL;} adicione: stdstring Nick; Luascript.cpp em baixo de: //doPlayerSendCancel(cid, text) lua_register(m_luaState, "doPlayerSendCancel", LuaScriptInterfaceluaDoPlayerSendCancel); adicione: //doCreatureSetNick(cid, nick) lua_register(m_luaState, "doCreatureSetNick", LuaScriptInterfaceluaDoCreatureSetNick); em baixo de: int32_t LuaScriptInterfaceluaDoPlayerSendCancel(lua_State* L){ //doPlayerSendCancel(cid, text) stdstring text = popString(L); ScriptEnviroment* env = getEnv(); if(const Player* player = env->getPlayerByUID(popNumber(L))) { player->sendCancel(text); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1;} adicione: int32_t LuaScriptInterfaceluaDoCreatureSetNick(lua_State* L){ //doCreatureSetNick(cid, nick) ScriptEnviroment* env = getEnv(); stdstring nick = popString(L); Creature* creature = env->getCreatureByUID(popNumber(L)); if(creature) { SpectatorVec list; g_game.getSpectators(list, creature->getPosition()); Player* player = NULL; creature->Nick = nick; for(SpectatorVecconst_iterator it = list.begin(); it != list.end(); ++it) { if(player = (*it)->getPlayer()) { player->sendCreatureNick(creature); break; } } }else{ lua_pushnil(L); } return 1;} Em Luascript.h em baixo de: static int32_t luaDoRemoveItem(lua_State* L); adicione: static int32_t luaDoCreatureSetNick(lua_State* L); Em Protocolgame.cpp procure por: void ProtocolGameAddCreature(NetworkMessage_ptr msg, const Creature* creature, bool known, uint32_t remove){ if(!known) { em baixo de: msg->AddU32(creature->getID()); adicione: stdstring nick = creature->getName(); if (creature->Nick != "") nick = creature->Nick; substitua: msg->AddString(creature->getHideName() ? "" : creature->getName()); por: msg->AddString(creature->getHideName() ? "" : nick); Obs: compilar em rebuild all ou sem os arquivos .obj exemplo de uso: doCreatureSetNick(getCreatureSummons(cid)[1], "Gristony") Creditos Gristony façam bom uso do code pequenos grilos1 ponto