
Tudo que xWhiteWolf postou
-
[RESOLVIDO] Não deixar mages atacarem assassin star
vai no vocations.xml e muda distdamage de sorc,druids, master sorc e elder druid pra 0.4, ninguém irá utilizar assassin star mais :D
-
Script Pontuação
estou seguindo o tópico para ver a solução do @Kemmlly, existem inumeras formas de fazer esse código porém tem algumas soluções que podem acabar consumindo muita memória. Qlqer coisa se eu perceber algum problema eu já aviso por aqui;
-
[Creaturescript] Monstro que renasce ou não morre.
eu ja fiz isso no Aegis the Immortal, checa meus trabalhos no meu perfil. É só trocar o addEvent pela função direta de criar o monstro
-
porta checa looktype
no tfs 1.2 a função getOutfit é uma função de creature. Logo vc precisaria ter creature:getOutfit(), no caso utilizamos o player como creature.
-
[Creaturescript] Monstro que renasce ou não morre.
ficou bem confuso isso, pq sem usar addEvent?. Faz um onKill criando o monstro na posição do que morreu;
-
porta checa looktype
troca o .looktype por .lookType
-
porta checa looktype
troca if(getCreatureOutfit(cid, 43) > 1) then por if p:getOutfit().looktype == 43 then
-
(Resolvido)Comando !saga
creaturescript, ao deslogar salva o looktype num storage, ao logar verifica se esse storage é maior que 0, se for seta a outfit como sendo o storage
-
Crash Server onkill tfs 1.x
O problema é que esses rewards chests q tem por aí são tudo umas gambiarras, eu não posso me comprometer em te ajudar e acabar me metendo no meio de uma gambiarra gigantesca que vai deixar nós dois cansados. Se fosse algo oficial ou que eu tivesse feito, com um bug simples eu até podia tentar te dar uma força
-
Crash Server onkill tfs 1.x
não faço idéia, teria que analisar uma por uma as funções do reward chest.. pq vc não desabilita ele?
-
Crash Server onkill tfs 1.x
function onKill(cid, target) target = Monster(target) if target ~= nil and Player(cid) ~= nil then local mt = MonsterType(target:getName()) if mt:useRewardChest() then local loot = BossLoot:new(target) if loot then local corpse = Item(doCreateItem(MonsterType(target:getName()):getCorpseId(), 1, target:getPosition())) doDecayItem() target:setDropLoot(false) loot:updateDamage() loot:setRewards() loot:addRewards() corpse:setAttribute('aid', 21584) end end end return true end
- Novo Sistema de Trainer [0.36~0.4]
- Voodoo
-
All bugs OTSERV - REVELADO ! -
testei todos após fazer as modificações que o pessoal orienta a fazer na source. https://github.com/otland/forgottenserver/pull/1858/files/3fde26a3685711c45f6113f40d1a11a3adaccf87..138f3a0ee7b082717e13f077716d718a89ae758d https://github.com/otland/forgottenserver/issues/1846#issuecomment-231544154
-
All bugs OTSERV - REVELADO ! -
testei todos os bugs ditos no tfs 1.2 q tem na otland e nenhum deles resultou em alguma coisa, quanto à deathlist do 8.6, eu já passei por isso e o problema é q quem fez o schema da database não tinha o mínimo conhecimento de banco de dados e fez uma baita gambiarra danada. A query da deathlist é outra gambiarra maior ainda e isso explica por si só o crash. A solução q eu encontrei foi refazer o script de deathlist usando uma query q eu confiasse. Quem tiver precisando só utilizar... SELECT player_id, date, level, all_kills.name FROM ( SELECT kill_id, name FROM player_killers INNER JOIN players ON player_id = id UNION SELECT * FROM environment_killers ) AS all_kills INNER JOIN player_deaths ON player_deaths.id = all_kills.kill_id WHERE player_id = 1-- pegar por script -- ORDER BY player_id, level DESC; se quiser só as ultimas 10 mortes tira o ; ali do fim e coloca embaixo LIMIT 10; Ps: aqui tem um print sem o limit mostrando que a query é rapida (testei num banco altamente populado) player_id é o id do char q eu quis verificar a deathlist, date é a data em unix time (os.time(), usando um os.date com esse numero vc retorna a data e hora em q ocorreu a morte) o level q ele estava e quem matou; Se não tiver "a ____" no all_kills.name então foi morte pra um player. EDIT 2: Não usem cast system, saibam configurar maxpacket no config.lua (30~50), botem timeBetweenActions de 1 ou 2 segundos (1000 milisegundos no config.lua), constantemente chequem o git do forgotten server olhando os bugs, os commits e os prs, se possível se registre no git para receber notificações de tudo q rola por lá, duvido q seu server será explorado. Oque você não consegue resolver por source vc consegue resolver por script, então fiquem ligados e sempre testem tudo antes de abrir um sv só pra ganhar dinheiro.
-
Banner, logo tipo
-
Banner, logo tipo
eu nao tava nem conseguindo abrir.gif no photoshop UHFIDSUHIGDSUHI god é tu mano
-
Banner, logo tipo
O underwar passou só um filtro em cima do tibia, coisa de amador.. aqui está o verdadeiro poder do photoshop
-
Recomendo Este Anime!!!
falam mt bem de Steins;gate tb, é um anime sobre viagem no tempo, qlqer dia vou dar uma chance. Agora Attack on Titan/Shingeki no Kyojin é um dos melhores que falaram aqui, é muito diferente de todos os animes que você provavelmente já viu, o próprio traço que eles usam é mais realista e a história e a trilha sonora... Aahhh, sensacional.
-
Recomendo Este Anime!!!
pode sim, aqui é o playground. Eu recomendo attack on Titan, kill la kill e avatar the last airbender
-
Como altero a fórmula de dano das armas?
no weapons.cpp vc configura a formula pra melee, distance e pra wands. Só fuçar lá, achar as funções que definem dano e alterar elas pro q vc quiser.. claro q vc nao vai botar player:getLevel(), vc precisa usar as funções próprias da source, e não as de Lua.
-
Como altero a fórmula de dano das armas?
1) se não me enganou postaram no git oficial do tfs um pr para uma função de pegar a stance por Lua, ai voce só colocar if player:getStance() == 1 pra controlar 2) Voce pode fazer ele registrar não pra um id mas pra todos os itens com determinada propriedade, mas isso requer alteração na source. Contudo, se vc realmente vai mudar a fórmula de tudo, é muito mais vantajoso alterar em weapons.cpp as fórmulas direto do que utilizar scripts pra isso. 3) voce pode alterar a formula das wands tanto por script quanto por source. 4) function default é uma atribuição que voce coloca pra definir que a função daquela tag é a padrão (registrar um script), existem outros tipos de function pré definidas na source que você pode escolher sem ter q modificar nada. Um exemplo melhor disso é encontrado nas talkactions, lá alem de default você tem functions como attr e reload que são controladas diretamente pela source e você não vai achar nenhum script vinculados à ela. Outro exemplo é o exiva. Agora pra weapons eu desconheço quais são os outros functions existentes, mas posso verificar pra você na source, se quiser
-
[$$$] Fundo e ícone para cliente
eu nem to em casa por enquanto, mas depois te chamo lá.. Valeu lindu
-
[$$$] Fundo e ícone para cliente
@Beeny seu puto, tava atrás de você mas acho q perdi seu skype eu tava precisando disso tb, mas como não te achei acabei tentando fazer sozinho, até que não ficou tão péssimo
-
Dropar Loot no chão [by Zoom]
a primeira versão não vai funcionar pq vc tem que botar no xml do monstro pra registrar, ja que é onDeath o callback. A segunda até funciona, mas vc perde as informações do drop como a chance, por exemplo. Pra melhorar isso você poderia fazer o seguinte, ao invés de cancelar a chance do monstro dropar algo e fazer tudo por código, verifica se o corpse do monstro é um container e varre esse container pegando os itens de dentro e jogando pra fora do corpo.