Ir para conteúdo

jefersonzc

Membro
  • Registro em

  • Última visita

Tudo que jefersonzc postou

  1. jefersonzc postou uma resposta no tópico em Suporte Tibia OTServer
    Lembro de ter resolvido isso uns anos atrás, mas não me recordo muito bem como foi. Tente o seguinte: Vá em data\movements\movements.xml e procure pelas linhas que tratam das munições (só dar um Ctrl+F e buscar por "arrow"), então acrescente o seguinte código <movevent event="Equip" itemid="2148" slot="ammo" level="1" function="onEquipItem"/> <!-- gold coin --> <movevent event="DeEquip" itemid="2148" slot="ammo" function="onDeEquipItem" /> <movevent event="Equip" itemid="2152" slot="ammo" level="1" function="onEquipItem"/> <!-- platinum coin --> <movevent event="DeEquip" itemid="2152" slot="ammo" function="onDeEquipItem" /> <movevent event="Equip" itemid="2160" slot="ammo" level="1" function="onEquipItem"/> <!-- crystal coin --> <movevent event="DeEquip" itemid="2160" slot="ammo" function="onDeEquipItem" /> Agora vá no seu arquivo items.xml e para cada uma das três moeadas citadas acima acrescente a seguinte linha <attribute key="slotType" value="ammo" /> Agora reinicie o servidor e veja se resolveu.
  2. Essas coordenadas são a posição onde começa e termina a sua sala. O ideal é que vc abra o seu Map Editor e imagine um retângulo grande o suficiente para envolver toda a sua área de treino (já que nem sempre elas são retangulares, como no meu caso). O X1 e o Y1 são as coordenadas do canto superior esquerdo desse retângulo, e o X2 e o Y2 são as coordenadas do canto inferior direito. Já o Z1 e o Z2 são referentes aos andares. Como a minha sala só tem um andar, que fica no floor 8, eu coloco o valor 8 nos dois. Mas vamos supor que a minha área de treino fosse um prédio composto pelo térreo, dois andares pra cima e um no subsolo, nesse caso eu usaria Z1 = 6 e Z2 = 9. Espero que tenha ficado mais claro agora Adendo: Se você quiser configurar mais de um "local de quick", que se encontram em lugares distantes um do outro no mapa, terá que configurar uma segunda room (ex.: local room2) e acrescentar um segundo IF relacionado a essa outra sala. elsif ((pos.x >= room2.x1 and pos.x <= room2.x2) and (pos.y >= room2.y1 and pos.y <= room2.y2) and (pos.z >= room2.z1 and pos.z <= room2.z2)) then doRemoveCreature(player)
  3. Opa! Então meu amigo, vc não precisa configurar ID de tile nenhum. Essa função é executada em tempo real, o que ela faz é ficar checando o player para ver se o IP de conexão dele é igual a 0. Se o IP for 0, significa que o player deu quit ou que a internet dele caiu, daí o script analisa a posição do player dentro do mapa e se essa posição estiver dentro da sala de treinamento significa que é preciso expulsar o player do jogo, forçando o logout. Agora, se ele estiver em qualquer outro canto do mapa, então ele não será expulso. As coordenadas da sala de treinamento são definidas aqui, e vc precisa alterá-las de acordo com a sala de treinamento do seu servidor. local room = { x1 = 1542, x2 = 1608, y1 = 1528, y2 = 1556, z1 = 8, z2 = 8 }
  4. Mano, dá uma olhada no meu post. Eu precisava de uma parada parecida e tive que fazer do zero. Você vai ter modificar algumas coisas a seu gosto, mas basicamente, vc precisa checar se o ip do char é igual a 0. E cuidado com isso pq se o cara der quit durante uma batalha pvp, ele seria kickado tbm, por isso eu julguei importante definir a room onde o char levará o kick. Em qualquer outro lugar do mapa ele não tomaria esse kick.
  5. Galera, não tenho certeza se esse tópico se encaixa em scriping ou em programação, então desculpa se errei. Enfim, estou usando o TFS 1.3 do Mark Samman, nele já vem configurado na source as opções de mana leech, life leech e de critical, basta você relacionar esses atributos dentro dos itens. <attribute key="manapointsleechchance" value="25" /> <attribute key="manapointsleechamount" value="5" /> <attribute key="hitpointsleechchance" value="25" /> <attribute key="hitpointsleechamount" value="5" /> <attribute key="criticalhitchance" value="10" /> <attribute key="criticalhitamount" value="50" /> Pois bem, o mana leech e o life leech aparentam estar funcionando de boas, não precisei configurar nada, só chamar os atributos mesmo. O problema ta no critical, ele aparenta funcionar, mas só aparenta mesmo. Ele exibe a animação de critical no jogo, mas nao faz nenhuma diferença no dano causado nos mob. Já fiz vários testes com porcentagens diferentes, já coloquei 1% e 300%no criticalhitamount, mas não muda nada no dano que a criatura leva. dei uma fuçada nos arquivos do servidor e não achei nenhum lua que se refira às opções de leech e critical, ao que tudo indica, isso seria algo da source (acho eu). Alguém poderia me dar uma luz? Não sei se estou fazendo algo errado ou não, se esqueci alguma coisa....
  6. Depois de muito bater cabeça eu consegui achar uma solução quase perfeita para o problema. Então vou compartilhar aqui a solução, vai que ajuda outros... Bom, primeiramente em items.xml precisamos configurar as skills do item, o tempo, etc. Como a ideia é que o item desapareça depois de algum tempo, vou por um decayTo 0. <item id="25971" article="a" name="Chopper of Corruptedheart"> <attribute key="weight" value="5000" /> <attribute key="defense" value="35" /> <attribute key="attack" value="56" /> <attribute key="skillAxe" value="3" /> <attribute key="weaponType" value="axe" /> <attribute key="decayTo" value="0" /> <!--faz o item sumir depois que seu tempo expira--> <attribute key="duration" value="360000" /> <attribute key="showduration" value="1" /> <attribute key="slotType" value="two-handed" /> </item> Reparem que não configurei o transformEquipTo e o transformDeEquipTo, pois meu item não tem duas sprites (como no caso dos rings e da soft) Agora em movements.xml eu preciso configurar quem pode ou não usar o item. <movevent event="Equip" itemid="25971" slot="hand" level="0" function="onEquipItem"> <vocation name="Knight" /> <vocation name="Elite Knight" showInDescription="0" /> </movevent> <movevent event="DeEquip" itemid="25971" slot="hand" function="onDeEquipItem" />< Por se tratar de uma arma, vou precisar configurar tbm o weapons.xml (se fosse um helmet, um ring ou algo do gênero, eu poderia pular essa etapa). <melee id="25971" unproperly="1"> <vocation name="Knight" /> <vocation name="Elite Knight" showInDescription="0" /> </melee> Blz, até aqui nada de novo, tudo isso a gente já precisa fazer quando vai criar qualquer item novo, certo? Mas é agora que vem o pulo do gato (o gato que no caso sou eu ?, rsrs). Em data/events/scripts/events.xml vamos habilitar o onMoveItem. <event class="Player" method="onMoveItem" enabled="1" /> E em data/events/scripts/player.lua, vamos configurar a função onMoveItens. function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, toCylinder) local itensVIP = {25187,25175,25185,25429,25946,25915,25971} --todos os itens que eu preciso configurar for i = 1, #itensVIP do if item.itemid == itensVIP[i] then item:decay() --toda vez que um item for movido, ele checa se faz parte dos itensVIP e starta o decay. end end return true end Resumidamente o resultado vai ser: 1. O tempo do item não para de decair, independente dele estar no slot, na bp, na casa, no dp, etc. Ok 2. Com o char deslogado, o tempo para de contar. Ok 3. Se o player deixar o item no DP e relogar o char, o tempo do item fica pausa, mas volta cair quando ele der move no item. Ok 4. O meu site possui um sistema de compra de itens que adiciona tal item no char. Quando o player compra o item que configuramos, o tempo dele vem pausado e se tal item cair dentro do seu respectivo slot (exemplo: o char compra uma sword e ele nao tem nenhuma sword na mão, logo, o a sword vai cair direto no slot dela), o tempo permanecerá pausado até que o char mova essa sword para a bp ou relogue. Bom, não era exatamente isso que eu queria, mas acho que posso considerar esse um bug pequeno e que não trará nenhum efeito colateral negativo, posto que cedo ou tarde esse char terá que relogar, no máximo ele irá conseguir umas horas há mais com o item, então, acho que ok.
  7. Se essa for a seção errada, desculpa. Bom, criei uns itens vips que dão atributo para os players, mas esses itens possuem tempo, e somem quando o tempo acaba. (decayTo O). Não usei as funções onEquipe e onDeEquipe por duas razões: 1. Não tenho IDs com sprites repetidos para esses itens e não quero mexer no meu OTB pq já deu ruim outras vezes. 2. A intenção era que o tempo continuasse contando mesmo com o item dentro da mochila, ou seja, não adianta desequipar o item que O Tempo Não Para (já dizia Cazuza, rsrs). Até aí tudo bem. Mas acabei descobrindo um bug... se o player guardar o item no depot e depois deslogar, quando ele relogar e pegar o item do depot outra vez, o tempo buga e fica parado. E só volta a ser contato caso ele relogue com o item no char outra vez. Ou seja, se o cara for malando, ele fica com o item pra sempre, pq basta ficar guardando ele no dp sempre que for deslogar. Preciso resolver isso de alguma forma, aceito sugestões. Alguém poderia me ajudar? PS.: Uso TFS 1.3
  8. Opa, bom saber dessa segunda saída. Poderá ser útil ainda. Obrigado.
  9. Não precisa ser exatamente Pagseguro, queria qualquer sistema de compra de pontos automática. Pode ser paypal ou outro, desde que funcione e seja algo mais simples de implementar
  10. Olá, não sei se estou postando na área correta, então já peço desculpas de antemão Bom, uso o Znote AAC no meu servidor (que roda em um Raspberry). Por diversas razões eu achei o Znote muito melhor e mais simples do que o Gesior e por tanto não tenho planos de migrar. Enfim, a questão é que estou tendo muita dificuldade em encontrar um sistema de pontos automático que funcione no Znote. Todos os que eu pesquisei não funcionaram, pois são sistemas antigos, de alguns anos atrás. O Pagseguro, por exemplo, já mudou sua API, o Paypal também já sofreu alterações, então, tudo que funcionava há alguns anos, parece não funcionar mais. Até o próprio sistema que já vem pré-configurado no Znote não parece funcionar. Eu não manjo dessa parte de integrações, alguém poderia me ajudar com algum sistema de pontos que seja simples e funcional? Desde já agradeço.
  11. Bom, resolvi desenvolver eu mesmo uma solução, me baseando nos scripts que encontrei pelo caminho Segue abaixo. 1. Em data/creaturescripts/scripts/login.lua, acrescente: player:registerEvent("Idle") 2. Em data/creaturescripts/creaturescripts.xml, acrescente: <event type="think" name="Idle" script="idle.lua"/> 3. Na pasta data/creaturescripts/scripts, crie o arquivo idle.lua, com o seguinte código: local room = { x1 = 1542, x2 = 1608, y1 = 1528, y2 = 1556, z1 = 8, z2 = 8 } function onThink(player, interval) local target = player:getTarget() if (player:getIp() > 0) then return true else local pos = player:getPosition() if ((pos.x >= room.x1 and pos.x <= room.x2) and (pos.y >= room.y1 and pos.y <= room.y2) and (pos.z >= room.z1 and pos.z <= room.z2)) then doRemoveCreature(player) end end return true end Depois é só configurar o script com as coordenadas da sua room (onde ficam os trainers). Pronto, qualquer player que der quit ali dentro, esteja ele atacando os trainers ou não, vai levar kick alguns segundos depois. Podem fechar como resolvido
  12. TFS 1.3 - Mark Samman Olá a todos, Estou com esse problema e não consigo resolver: Quando o player dá exit nos trainers ele não leva kick. Já fiz várias pesquisas aqui e em outros fóruns, mas nenhuma das possibilidades apresentadas me serviu. Tentei esse script: Mas não funcionou porque aparentemente o meu TFS não possui a função getCreatureNoMove(cid). Tentei também através do config.lua, mas ele não tem nenhuma dessas funções: idleWarningTime idleKickTime stopAttackingAtExit Tentei adicioná-las mas elas não funcionam. Bom, tenho algumas ideias para resolver o problema, mas não sei por onde começar. 1- A melhor opção seria se eu de fato conseguisse fazer o char parar de atacar quando desse exit. Mas já que não consigo configurar isso pelo confi.lua, como poderia fazer? 2- Posso criar uma rotina que checa se o player está "dançando", mas como verifico se ele mudou de direção? Existe alguma função que verifica o movimento do char no mesmo sqm? 3- Aceito ideias que não sejam complexas demais (rsrs).
  13. Não, não estava. Acho que sem querer substituí esse bendito arquivo pelo antigo. Parece que resolveu, muito obrigado fera
  14. Oi Bruno, posso ter me confundido na versão, creio que seja 1.3 mesmo, eu peguei do Git oficial do forgottenserver. O tfs foi compilado ontem, e não foi feita nenhuma alteração nos arquivos que postei. Mas vou testar esse que vc passou e posto o resultado.
  15. Estou com o seguinte erro: Lua Script Error: [Spell Interface] in callback: data/spells/scripts/monster/betrayed_wraith_skill_reducer.lua:onTargetCreature (Unknown scriptfile) ...spells/scripts/monster/betrayed_wraith_skill_reducer.lua:11: attempt to call method 'addAttributeCondition' (a nil value) Já revirei a internet buscando a solução mas não encontrei. Uso TFS 1.2 (forgottenserver by Marksamman). O código do spell é esse: local combat = Combat() combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_YELLOW_RINGS) combat:setArea(createCombatArea(AREA_SQUAREWAVE5)) local parameters = { {key = CONDITION_PARAM_TICKS, value = 5 * 1000}, {key = CONDITION_PARAM_SKILL_DISTANCEPERCENT, value = 80} } function onTargetCreature(creature, target) target:addAttributeCondition(parameters) end combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(creature, variant) return combat:execute(creature, variant) end E o do monster não tem nada de mais, apenas a chamada da função: <attacks> <attack name="melee" interval="2000" min="0" max="-450" /> <attack name="betrayed wraith skill reducer" chance="10" /> <attack name="speed" interval="2000" chance="20" range="7" target="1" speedchange="-600" duration="3000"> <attribute key="shootEffect" value="suddendeath" /> <attribute key="areaEffect" value="mortarea" /> <attribute key="areaEffect" value="smallclouds" /> </attack> </attacks> Imagino que seja falta de alguma lib, mas não sei qual, alguém poderia ajudar?
  16. Creio que você não entendeu bem. Eu coloquei chance="0" justamente para testar se a raid não iria acontecer, e mesmo assim ela aconteceu. Ou seja, independente do número que eu coloque no chance, a raid SEMPRE acontece. Mas tudo bem, fiz uma gambiarra que deu certo, vou postar aqui para futuras pessoas com o mesmo problema. ------------------------------------------ SOLUÇÃO -------------------------------------------- Bom, aqui vai a gambiarra solução: Já que o servidor em questão dá SS uma vez por dia, vou colocar um tempo e uma margem alta o suficiente no meu arquivo raids.xml (maior que 1 dia), de forma que as raids NUNCA aconteçam através dele. <?xml version="1.0" encoding="UTF-8"?> <raids> <raid name="Orcs" file="normal/Orcs.xml" chance="0" interval2="99999" margin="99999" /> <raid name="Pirates" file="normal/Pirates.xml" chance="0" interval2="99999" margin="99999" /> </raids> Agora em globalevents.xml vou inserir a seguinte linha: <globalevent name="Raids" interval="3600000" script="raids.lua"/> OBS 1.: interval="3600000" equivale à 1h, ou seja, de hora em hora o arquivo vai tentar executar as raids Então criei um raids.lua dentro de /data/globalevents/scripts local RAIDS = { [1] = {name = "Orcs", chance = 1}, -- nome da raid e chance em % [2] = {name = "Pirates", chance = 1}, -- nome da raid e chance em % } function onThink(interval, lastExecution) for i = 1,#RAIDS do local x = math.random(1, 100) if x <= RAIDS[i].chance then executeRaid(RAIDS[i].name) end end return true end OBS 2.: O nome da raid nesse arquivo tem que ser igual ao nome da raid em raids.xml OBS 3.: Não cheguei a testar, mas acho que quando uma raid acontece, outra não pode acontecer imediatamente em seguida. Para manter um melhor equilíbrio, aconselho a deixar as raids em ordem crescente de chances
  17. jefersonzc postou uma resposta no tópico em Suporte Tibia OTServer
    mesmo problema
  18. Então, as chances das minhas raids não estão sendo respeitadas. Já tentei colocar 0, 1, 2, ..., 100, mas qualquer que seja o número que ponho ali, ela sempre acontece, e eu queria que a probabilidade fosse respeitada. Alguém sabe dizer o motivo? Pode ser erro da distro? Tem alguma gambiarra que eu possa usar? Eu uso OTX Meu raids.xml <?xml version="1.0" encoding="UTF-8"?> <raids> <raid name="OrcsThais" file="normal/OrcsThais.xml" chance="0" interval2="60" margin="0" /> <raid name="Pirates" file="normal/Pirates.xml" chance="0" interval2="65" margin="0" /> </raids> Um dos meus arquivos de raid <?xml version="1.0" encoding="UTF-8"?> <raid> <announce delay="1000" type="event" message="Pirates are launching a surprise attack on Liberty Bay! Take care, they seem to be everywhere." /> <announce delay="60000" type="event" message="Pirates have invaded the city." /> <areaspawn delay="60000" fromx = "32211" fromy = "32821" fromz = "7" tox = "32248" toy = "32876" toz = "7"> <monster name="Pirate Corsair" amount="30" /> <monster name="Pirate Buccaneer" amount="30" /> <monster name="Pirate Cutthroat" amount="30" /> <monster name="Pirate Marauder" amount="30" /> <monster name="Smuggler" amount="30" /> <monster name="Deadeye Devious" amount="1" /> <monster name="Ron the Ripper" amount="1" /> <monster name="Brutus Bloodbeard" amount="1" /> <monster name="Lethal Lissy" amount="1" /> </areaspawn> </raid>
  19. Cara, vc pode usar o candybot e cavebot mod no otclient. Não são tão completos quanto o elf mas quebram um galho
  20. Amigo, estava tendo o mesmo problema, vou postar a resolução. Primeiramente vc irá precisar localizar e abrir dois arquivos, o account.php e o character.php. Os caminhos são esses: C:\xampp\htdocs\system\application\controllers\account.php C:\xampp\htdocs\system\application\controllers\character.php Em ambos os arquivo vc precisará inserir um simples trecho de código. Procure pela função _validName($name) e coloque global $config; conforme mostrado abaixo: function _validName($name) { require("config.php"); global $config; //OLHA ELE INSERIDO AQUI $name = explode(" ", $name); foreach($name as $unit) { if(in_array(strtolower($unit), $config['invalidNameTags'])) { $this->form_validation->set_message('_validName', 'Invalid Name'); return false; } else if(strlen($unit) == 1) { $this->form_validation->set_message('_validName', 'Invalid Name'); return false; } else continue; } } Espero ter sido claro e ter ajudado.
  21. Estou com o mesmo problema, já fucei tudo. Ja dei o chmod 777 na porcaria toda, nada funciona
  22. Mesmo problema. Já tentei dar o comando chmod 777, mas não adiantou. Alguém?
  23. jefersonzc postou uma resposta no tópico em Suporte Tibia OTServer
    Opa, estou com o mesmo problema, sendo que não peguei o OT desse link não, ele foi instalado pra mim por outra pessoa. Tenho medo de atualizar os arquivos com os que estão ai e dai ter mais problemas. Alguém sabe como resolver isso manualmente? PS.: E o meu é para linux, não sei se faz diferença -------------------------------------- Consegui resolver Fui em /data/npc/lib/npcsystem/ e subistituí os arquivos customModules.lua, modules.lua e npcsystem.lua pelos que estão no diretório do GitHub citado. https://github.com/malucooo/Otxserver-Testing/tree/10211f636c12bc6f7aedd61b2d4e73093d9d7c04/data/npc/lib/npcsystem

Informação Importante

Confirmação de Termo