Ir para conteúdo

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Tudo que xWhiteWolf postou

  1. tá cara mas eu preciso de alguma coisa que ative, o script em si é facil de fazer mas o dificil é você me falar como que vc quer. Não dá pra eu colocar pra ativar ao subir em cima porque daí após 5 minutos o cara ganha e tal e se outro subir em cima depois vai ativar novamente.... A MENOS QUE SEU SCRIPT DE CASTLE TENHA UM GLOBAL STORAGE ou coisa parecida. Oque o macalo falou de fazer por avalanca dá pra fazer de boa mas acho q fica meio zoado no server.
  2. o outro jeito é migrar de server, pra uma versão 8.54 ou maior
  3. se é nas sources, a forma de adicionar seria pegar uma source nova da sua versão, fazer as modificações e compilar ela dnv. (O executável que abre o server não passa das sources compiladas) então é muito mais fácil pegar algo já pronto q funcione e trocar.
  4. como ativaria isso... os 5 minutos começam a partir do momento que o primeiro player entrar no castelo ou seria algum evento que vc digita algo e começa?
  5. pra copiar o nome teria que fazer modifição na source.. porém como eu nunca nem vi uma source na vida eu não vou saber te responder como é que faz
  6. a função é pelo distro.. no talkactions tem que estar assim: <talkaction log="yes" words="/addskill" access="5" event="function" value="addSkill"/> e a forma de utilizar no server é pegando um char com acesso 5 ou maior e usando: /addskill NOME DO PLAYER, tipo de skill, quantidade um exemplo pra aumentar 10 leveis no character xWhiteWolf: /addskill xWhiteWolf, experience, 10 se não estiver funcionando mesmo assim daí vc terá que trocar de distro :~
  7. city = {x= 160, y= 54, z= 7} function onSay(cid, words, param, channel) if getTilePzInfo(getPlayerPosition(cid)) then if(param == 'city') then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) doTeleportThing(cid,city) doSendMagicEffect(getPlayerPosition(cid), 66) else local str = "Locais: \n /tp \city" doShowTextDialog(cid, 10016, str) end else doPlayerSendCancel(cid, "Voce so pode usar em area Protect Zone.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end end
  8. willian12345, posta o script aqui e ajuda o cara... é assim q funciona o suporte, você ajuda um dia e te ajudam no outro. Pra que ficar nessa de ficar trocando script como se fosse figurinha? Até parece que você já não pegou um monte de script de graça aqui que outros fizeram.. ja tá mais que na hora de retribuir o favor!
  9. pra que mandar o script por skype.. não é mais fácil postar ele aqui e liberar logo essas drogas de script pros outros poderem utilizar????
  10. vc precisa pegar as sources do 8.4 e as sources do 8.54.. daí vc procura os arquivos correspondentes aos creaturescripts na 8.54 e substitui pelos respectivos arquivos na 8.4. Daí vc precisará compilar as sources, sugiro usar o dev-Cpp (Dev-C++). Feito isso é só abrir o server pelo executável que vc criou ao compilar as sources. Detalhe um: nunca tentei fazer isso mas é assim q se faz (até onde eu sei) Detalhe dois: seu server vai dar bugs que tendem ao infinito se vc fizer isso sem saber oque tá fazendo então sugiro q vc ignore esse post caso não seja programador.
  11. lembrando que as alterações no vocations.xml requerem o reinicio do server pra entrarem em vigor.. Fecha o server e abre denovo que reload não vai funcionar
  12. algumas runas tem que ser por script mesmo.. se mesmo dps disso tudo uma ou outra não estiverem infinitas é só postar o script delas aqui
  13. é bem dificil e não é garantido que isso não vá bugar seu server todo... o ideal seria você migrar de servidor. Nota: se vc for realmente migrar, migre pra 8.6 porque quase ninguém joga 8.54
  14. vodkart, agora vc me deixou confuso... pelo que eu vi num script a table deathlist retorna todos que mataram o monstro/player e eles seguem uma ordem sim, acho que o primeiro é o lasthit, o segundo é mostDamage e os outros elementos são os fatores agravantes da morte e podem tanto ser creatureid's como itens (fields e outros itens que tiram dano). Se não me engano eu vi isso num script que ja vem na maioria dos servers que seta o nome dos player que mataram no corpo mas nesse script ele tinha trocado os parametros então não sei dizer.. to sem ter como testar aqui, se alguém pudesse testar isso pra mim seria uma boa e eu já atualizaria o tópico.
  15. Fala galera do TK, hoje eu vim trazer pra vocês uma coisa que se perdeu em todos esses anos de OT e que é uma das coisas mais importantes prum scripter intermediário/avançado. São as explicações dos respectivos callbacks de creaturescripts. Espero que ajude bastante gente Créditos: 90% Zonnebloem (um gringo ai que postou isso das sources) e 10% pra mim por completar oque ele não tinha escrito e arrumado umas coisas que ele escreveu errado. ____________________________ CREATURE EVENTS TIPOS: _________________ TFS 0.2 type="login" function onLogin(cid) type="logout" function onLogout(cid) type="advance" function onAdvance(cid, skill, oldLevel, newLevel) type="think" function onThink(cid, interval) type="kill" function onKill(cid, target) type="death" function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) type="preparedeath" function onPrepareDeath(cid, killer) TFS 0.3/0.4 type="login" function onLogin(cid) type="logout" function onLogout(cid) type="advance" function onAdvance(cid, skill, oldLevel, newLevel) type="think" function onThink(cid, interval) type="kill" function onKill(cid, target, lastHit) type="death" function onDeath(cid, corpse, deathList) type="preparedeath" function onPrepareDeath(cid, deathList) type="statschange" function onStatsChange(cid, attacker, type, combat, value) type="combat" function onCombat(cid, target) type="target" function onTarget(cid, target) type="look" function onLook(cid, thing, position, lookDistance) type="textedit" function onTextEdit(cid, item, newText) type="outfit" function onOutfit(cid, old, current) type="push" function onPush(cid, target) type="follow" function onFollow(cid, target) type="attack" function onAttack(cid, target) type="areacombat" function onAreaCombat(cid, tileItem, tilePosition, isAggressive) type="cast" function onCast(cid, target) type="direction" function onDirection(cid, old, current) type="reportbug" function onReportBug(cid, comment) type="sendmail" function onSendMail(cid, receiver, item, openBox) type="receivemail" function onReceiveMail(cid, sender, item, openBox) type="traderequest" function onTradeRequest(cid, target, item) type="tradeaccept" function onTradeAccept(cid, target, item, targetItem) type="joinchannel" function onJoinChannel(cid, channel, users) type="leavechannel" function onLeaveChannel(cid, channel, users) TFS 1.0 type="login" function onLogin(cid) type="logout" function onLogout(cid) type="think" function onThink(cid, interval) type="preparedeath" function onPrepareDeath(cid, killer) type="death" function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) type="kill" function onKill(cid, target) type="advance" function onAdvance(cid, skill, oldLevel, newLevel) type="modalwindow" function onModalWindow(cid, modalWindowId, buttonId, choiceId) type="textedit" function onTextEdit(cid, item, text) type="changehealth" function onChangeHealth(cid, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType) type="changemana" function onChangeMana(cid, attacker, manaChange) type="extendedopcode" function onExtendedOpcode(cid, opcode, buffer) ____________________________ INFORMAÇÃO SOBRE OS TIPOS: _________________ antes de tudo tenha em mente que os tipos só serão executados no player ou monstro em que eles forem registrados; Registrar no login.lua vai fazer com que ele seja executado em todos os players assim q eles logarem. Se deve ser executado somente por alguns monstros, registre no monstro em questão no xml dele. login Quando é executada: - Quando um player loga Parametros: - cid = creatureid do player que logou quando está return false: - nada registra creature event: - não ~~~~ logout Quando é executada: - quando um player desloga pelo logout do próprio cliente. Não acontece se o player morrer, for disconectado ou xlogs Parametros: - cid = creatureid do player que deslogou quando está return false: - Player não vai conseguir deslogar registra creature event: - não ~~~~ advance Quando é executado: - Toda vez que um player avançar de level, magic level ou qualquer outra skill Parametros: - cid = creature id do player que avançou - skill = tipo da skill que o player avançou vide tabela abaixo (note que vc pode utilizar tanto o nome SKILL_FIST quanto o numero 0) SKILL_FIST = 0 SKILL_CLUB = 1 SKILL_SWORD = 2 SKILL_AXE = 3 SKILL_DISTANCE = 4 SKILL_SHIELD = 5 SKILL_FISHING = 6 SKILL__MAGLEVEL = 7 SKILL__LEVEL = 8 - oldlevel = level antes do player avançar - newlevel = o novo level após avançar quando está return false: - ele não vai avançar o nível Registra creature event: - sim (isso significa que vc pode colocar pra ele registrar um outro creatureevent dentro desse script após alcançar X level) ~~~~ think Quando é executada: - Pelo tempo Parametros: - cid = creatureid do monstro ou player - interval = intervalo entre cada checagem OU em que intervalo deve ser executada, 500 é 0.5 segundo. quando está return false: - nada Registra creature event: - sim ~~~~ kill Quando é executada: - Ao matar um player/monstro Parametros: - cid = creatureid do player ou do monstro que mata - target = creatureid do player ou monstro que é morto quando está return false: - O target não morrerá, ele ficará com 0 de vida e a barra sumirá para os inimigos.Ele precisará se curar para que sua barra de vida volte registra creature event: -sim ~~~~ death Quando é executada: - Quando um player ou monstro morrem Parametros: - cid = creatureid do player monstro que morre - corpse = corpo do monstro ou player que morre exemplo de adicionando 3 crystal coins no corpo que morreu. doAddContainerItem(corpse.uid, 2160, 3) - deathlist = uma table com o nome de todos que mataram, sendo na ordem o deathlist[1] oque deu o ultimo hit e o deathlist[2] sendo oque deu mais dano. quando está return false: - O corpo não será criado Registra creature event: - Sim ~~~~ preparedeath Quando é executada: - Quando um monstro ou player está prestes a morrer (pode ser usada em scripts que devem ser executados no segundo antes do player morrer) Parameters: - cid = creatureid do player ou monstro que está prestes a morrer - deathlist = uma tabela com o nome dos atacantes quando está return false: - o player ou monstro não irá morrer (mesma história do kill) Registra creature event: - Sim ~~~~ statschange quando é executada: -Quando um player ou monstro ou ganha ou perde vida/mana de um combat ou uma função (combats não são só os das spells, mas também weapons/fist/melee... vale lembrar também que monstros não possuem mana) Parametros: - cid = creatureid do player ou monstro q ganha/perde vida/mana - attacker = creatureid do player ou monstro que causou a mudança na health/mana - type = tipo da mudança, sendo ela:Ganho de vida, perca de vida, ganho de mana e perca de mana vide tabela abaixo: STATSCHANGE_HEALTHGAIN = 0 STATSCHANGE_HEALTHLOSS = 1 STATSCHANGE_MANAGAIN = 2 STATSCHANGE_MANALOSS = 3 - combat = o tipo de combat que causou a alteração, sendo esses tipos: COMBAT_NONE = 0 COMBAT_PHYSICALDAMAGE = 1 COMBAT_ENERGYDAMAGE = 2 COMBAT_EARTHDAMAGE = 4 COMBAT_POISONDAMAGE = 4 COMBAT_FIREDAMAGE = 8 COMBAT_UNDEFINEDDAMAGE = 16 COMBAT_LIFEDRAIN = 32 COMBAT_MANADRAIN = 64 COMBAT_HEALING = 128 COMBAT_DROWNDAMAGE = 256 COMBAT_ICEDAMAGE = 512 COMBAT_HOLYDAMAGE = 1024 COMBAT_DEATHDAMAGE = 2048 - value = valor da mudança quando está return false: - O player ou o monstro não ganharão/perderão vida/mana no combat. Pode ser usado pra fazer ele ficar imortal por um certo período ou não ser capaz de tomar dano de certos players/creaturas Registra creature event: - Sim ~~~~ combat Quando é executado: - Quando um player ou monstro starta um combat (qualquer tipo de ataque) Parametros: - cid = creatureid do player ou monstro que usa o combat - target = creatureid do player ou monstro que sofre o combat quando está return false: - O player ou monstro não será capaz de levar ataques, isso também inclui que ele não poderá dar target em alguém/algo . Isso pode ser usado para criar monstros que não possam levar ataques ou fazer players ficarem imunes a dano por um certo tempo. Registra creature event: - Sim _______________________________________________________________________________________________ Agora começa a graça da coisa: ~~~~ target Quando é executado: - Quando um player ou monstro dá target em um player/mostro (follow/attack) Parametros: - cid = creatureid do player ou monstro que dá o target - target = creatureid do player ou monstro que é targeted quando está return false: - O player/monstro não poderá dar target.. alguns testes com monstros revelaram que o monstro ainda consegue te atacar então acho que essa função só serve para player Registra creature event: - Sim ~~~~ look Quando é executado: - Quando um player dá look em algo Parametros: - cid = creatureid do player que dá o look - thing = objeto/player/monstro que o player dá look - position = não tenho certeza se é a posição do objeto que é dado look ou se é a minha posição. - lookDistance = distancia entre esse objeto e eu. quando está return false: - Não aparece a mensagem de look na tela Registra creature event: - Sim ~~~~ textedit Quando é executado: - Quando um player edita um texto em algum item writeable (livros por exemplos) Parametros: - cid = creatureid do player - item = item que está sendo modificiado - newText = texto novo que foi escrito quando está return false: - O player não conseguirá editar o texto, quando ele tentar dar ok o item continuará com o mesmo texto.. Pode ser usado numa quest com muito RPG pra checar se a senha que o player escreveu no livro é a correta. Registra creature event: - sim ~~~~ outfit Quando é executado: - Quando um player ou monstro muda de outfit Parametros: - cid = creatureid do player ou monstro que muda de outfit - old = outfit antiga - current = outfit atual (após ter trocado) quando está return false: - a troca de outfit será cancelada e o player/monstro voltará para a antiga outfit Registra creature event: - sim ~~~~ push Quando é executado: - Quando um player tenta empurrar um monstro ou um player Parametros: - cid = creatureid do player que empurrar - target = creatureid do player ou monstro que é empurrado quando está return false: - O player não conseguirá empurrar (arrastar o oponente com o mouse). É bastante util em eventos para que eles não possam ficar se empurrando Registra creature event: - sim ~~~~ follow Quando é executado: - Quando um player dá follow em algum monstro ou player ou até num NPC Parametros: - cid = creatureid do player que dá o follow - target = creatureid da criatura (monstro/npc/player) que é seguida quando está return false: - O follow não irá ocorrer Registra creature event: - Sim ~~~~ attack Quando é executado: - Quando um player ou monstro ataca (melee, spells não contam) Parametros: - cid = creatureid do player ou monstro que ataca - target = creatureid do player ou monstrp que sofre o ataque quando está return false: - O player/monstro não irá atacar, é bastante útil em sistemas que vc queira deixar uma certa criatura imune a ataques mas que ela ainda possa morrer pra spells Registra creature event: - Sim ~~~~ areacombat Quando é executado: - Quando um player ou monstro starta um combat em área (usa uma spell ou dano em área) Parametros: - cid = creatureid do player ou monstro que usa o combat - tileItem = player que está dentro da area - tilePosition = posição do player que está dentro da area - isAggressive = se esse combat em área é agressivo ou não, lembre-se que magias como exura gran mas res fazem combat em área mas esse combat não é agressivo porque ela cura em área quando está return false: - o combat é cancelado Registra creature event: - Sim ~~~~ cast Quando é executado: - Quando um player ou monstro solta uma magia Parametros: - cid = creatureid do player ou monstro que usa a magia - target = creatureid do player ou monstro que sofre o dano da magia quando está return false: - a magia não é lançada Registra creature event: - sim ~~~~ direction Quando é executado: - Quando uma criatura (NPC/Player/Monster) muda de direção Parametros: - cid = creatureid do player ou monstro que mudará de direção - old = direção antiga - current = direção atual, após ter mudado, vide tabela abaixo: NORTH = 0EAST = 1 SOUTH = 2 WEST = 3 SOUTHWEST = 4 SOUTHEAST = 5 NORTHWEST = 6 NORTHEAST = 7 atente-se no fato de que não é possível virar pras direções 4,5,6 e 7 mas você utilizá-las num script que cheque a direção entre dois players, daí sim seria possível (como é no caso do exiva) quando está return false: - A criatura não será capaz de mudar de direção Registra creature event: - Sim ~~~~ reportbug Quando é executado: - Quando um player reporta um bug Parametros: - cid = creatureid do player que reportou o bug - comment = comentário que ele adicionou ao reportar quando está return false: - O report será cancelado e não será enviado. Pode ser usado num script avançado de reports onde se o player não tiver escrito nenhum comentário ou tiver escrito determinadas palavras o envio será cancelado (pra evitar spams) Registra creature event: - Sim ~~~~ sendmail Quando é executado: - Quando um player manda uma carta/parcel para outro Parametros: - cid = creatureid do player que mandou a correspondencia - receiver = creatureid do player que irá receber essa correspondencia - item = item que foi enviado (id dele) - openBox = conteúdo (no caso de parcel) quando está return false: - Correspondência não será enviada. É util pra registrar um log de todas as trocas entre players e pegar hackers. Registra creature event: - Sim ~~~~ receivemail Quando é executado: - Quando um player recebe uma carta/parcel de outro Parametros: - cid = creatureid do player que recebou a correspondência - sender = creatureid do player que enviou a correspondência - item = item recebido - openBox = conteúdo da correspondencia (no caso de ser uma parcel) quando está return false: - Ele não receberá a correspondência. Registra creature event: - Sim ~~~~ traderequest Quando é executado: - Quando um player dá trade Parametros: - cid = creatureid do player que deu o trade - target = creatureid do player que ele tentou iniciar uma troca - item = item que foi iniciada a troca (se for uma backpack cheia de coisas dentro esse item será uma table com todos os itens) quando está return false: - A troca não será executada. É útil para scripts de itens vip onde o player não possa trocar determinados itens Registra creature event: - Sim ~~~~ tradeaccept Quando é executado: - Quando um player aceita a troca com outro) Parametros: - cid = creatureid do player que aceitou a troca (você) - target = creatureid do player que aceitou a troca (cara com quem você trocou) - item = items que você deu em troca, no caso de uma backpack cheia de itens esse parametro será uma table com todos os itens - targetItem = items que você recebeu em troca, no caso de uma backpack cheia de itens esse parametro será uma table com todos os itens quando está return false: - a troca não será concluída. Registra creature event: - Sim ~~~~ joinchannel Quando é executado: - Quando um player entra num channel (aqueles canais tipo trade/ help chat/ info/ guild/ etc...) Parametros: - cid = creatureid do player que entrou no chat - channel = canal que o player entrou.. vide lista abaixo: CHANNEL_GUILD = 0 CHANNEL_PARTY = 1 CHANNEL_RVR = 3 CHANNEL_HELP = 9 CHANNEL_DEFAULT = 0xFFFE CHANNEL_PRIVATE = 0xFFFF - users = outros usuários do canal. quando está return false: - O player não conseguirá entrar no channel Registra creature event: - Sim OBS: a mesma coisa vale pra função leavechannel, só que o return false o player não conseguirá sair do channel. Espero que isso ajude bastante gente, eu não expliquei os types da versão 1.0 porque é basicamente a mesma coisa e pelos parametros dá pra você ter uma ideia doque é oque. :]
  16. é com grande pesar que eu te informo que não é possível usar esse sistema em 8.4. Só server 8.54 pra cima porque a função function onStatsChange(cid, attacker, type, combat, value) não existe antes de 8.54. Se você manjar de source, dá pra importar a função pro seu server 8.4 mas isso ia dar um puta trabalho.
  17. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    ja pensou em fazer assim? if getItemName(uid) ~= getItemNameById(itemid) then vai pegar o nome do item atual, se ele for diferente do nome que deveria ser no items.xml então ele executa a ação
  18. tenta a solução q ele postou nos comentários:
  19. ​Acho q ele só tava fazendo o trabalho dele de moderador.. até porque ele é mapper e não ia conseguir te ajudar de qualquer jeito. Você adicionou o sistema de REP e esqueceu de fazer a query na database... tá faltando a tabela "rep" no players mysql_real_query(): SELECT `rep` FROM `players` WHERE `id` = 38; - MYSQL ERROR: Unknown column 'rep' in 'field list' (1054) Tenha mais paciência que sua dúvida será resolvida, e, acima de tudo, tenha respeito e gratidão com o pessoal aqui do fórum.
  20. adorei a ideia mas não sei ao certo como fazer.. vou tentar aqui e te dou um feedback dos meus avanços. Ao que o jeito seria criar uma condition que desse o atributo a mais em questão e fazer um creaturescripts q se tivesse com o set adicionaria a condition.. como se fosse uma magia mesmo
  21. vai em data/lib/constant.lua e vê os tipos de cor que existem pra mensagem
  22. mas os premios da bolsinha do monstro e da bolsinha do chest são os mesmos?
  23. que versão é o seu server? tenta trocar o getThingPos(cid) por getCreaturePosition(cid).. também checa se não é o doCreatureSay(cid, "I WILL UNLEASH THE FURY OF HELL!", 20) porque no meu server é 20 o TALKTYPE_MONSTER, mas dependendo da versão q o seu for isso varia. O meu é um TFS 0.36 tibia 8.54 e funcionou perfeito
  24. poder pode mas dependendo de como vc fizer pode dar conflito.. o ideal qnd vc usa isso é especificar o tipo de item que deverá ser usado. if item.aid == 1846 and item.itemid == 1946 then xx XX X xX X end outro script: if item.aid == 1846 and item.itemid == 1945 then x X X X X X end Sobre a outra pergunta de usar action e unique no mesmo item, é a mesma coisa. Só que se for no mesmo script vc especifica if item.aid == 1846 then x xX X X X elseif item.uid == 1846 then XX X X X end
  25. só usar math.random chance = math.random (1,90) if chance == 1 then doPlayerAddItem(cid, itemde1% de chance, 1) elseif chance <= 3 then doPlayerAddItem(cid, itemde3% de chance, 1) elseif chance <= 10 then doPlayerAddItem(cid, itemde10% de chance, 1) elseif chance <= 20 then doPlayerAddItem(cid, itemde20% de chance, 1) elseif chance <= 30 then doPlayerAddItem(cid, itemde30% de chance, 1) . . . elseif chance <= 90 then doPlayerAddItem(cid, itemde90% de chance, 1) end não tá exatamente com as porcentagens que vc falou mas a proporção tá certa e desse modo sempre vai ter 100% de chance de receber 1 dos itens.

Informação Importante

Confirmação de Termo