Ir para conteúdo

Antharaz

Cavaleiro
  • Total de itens

    153
  • Registro em

  • Última visita

  • Dias Ganhos

    9

Tudo que Antharaz postou

  1. ATENÇÃO: NÃO SE TRATA DE UM TUTORIAL, MAS DE UMA FUNCTION. COMO NÃO TEM UM LUGAR PARA FUNCTIONS, TIVE QUE POSTAR AQUI. Nome: emarea(cid,frompos,topos) Autor: Antharaz Versão Testada: TFS 0.3.6 e TCS (todas versões) Informações adicionais: Bem, não sei se já existe um function com este mesmo objetivo, mas eu pelo menos nunca vi. Ela verifica se determinado player está em certa área. Como se usar: Declare 2 variáveis, uma com as coordenadas do 1º sqm superior esquerdo da área e outro com as coordenadas do último sqm da parte inferior direita da área. A da parte superior esquerda corresponde a frompos e a outra a topos. Não precisa colocar a coordenada z de cada sqm, isto é OPCIONAL, mas se colocar, coloque a do andar mais baixó no frompos e a do último andar que deseja verificar na topos. Caso o player esteja na área, irá retornar TRUE, caso não esteje, irá retornar false. Exemplos: Abaixo haverá um exemplo no qual eu usei a function em uma talkction: 1º - usando com a coordenada Z local frompos = {x=517,y=460,z=3} local topos = {x=524,y=464,z=1} function onSay(cid, words, param, channel) if emarea(cid,frompos,topos) then doBroadcastMessage("Está na área.") else doBroadcastMessage("Não está na área.") end return TRUE end Resultado com god na pos [X: 520] [Y: 462] [Z: 2] Resultado com god na pos [X: 520] [Y: 463] [Z: 4] 2º - retirando a coordenada z das variáveis: local frompos = {x=517,y=460} local topos = {x=524,y=464} function onSay(cid, words, param, channel) if emarea(cid,frompos,topos) then doBroadcastMessage("Está na área.") else doBroadcastMessage("Não está na área.") end return TRUE end Resultado com god na pos [X: 520] [Y: 462] [Z: 2] Resultado com god na pos [X: 520] [Y: 463] [Z: 4] Como deu para ver pelas SSs, a diferença entre colocar o Z e não colocar, é que ele também verificará o andar. Abaixo segue o code da function: function emarea(cid,frompos,topos) if frompos.x <= getThingPos(cid).x and topos.x >= getThingPos(cid).x and frompos.y <= getThingPos(cid).y and topos.y >= getThingPos(cid).y then if frompos.z and topos.z then if frompos.z >= getThingPos(cid).z and topos.z <= getThingPos(cid).z then return TRUE end else return TRUE end end return FALSE end
  2. @gabrielf10 aí que está... quem procura tutos são aqueles que querem aprender coisas novas e não aqueles quie querem só fazer mais um ot comum. Sem contar que hj em dia, qlqr ot que desejam fazer sucesso deve ter um diferencial. @all Obrigado pela aprovação
  3. Vá em data/creaturescripts e abra o creaturescripts.xml e bota a linha abaixo antes de </creaturescripts>: <event type="kill" name="killbyantharaz" script="killbyantharaz.lua"/> Agora vá em data/creaturescripts/scripts e cria um arquivo chamado killbyantharaz.lua com o code abaixo: local nome = "NOMEDOMONSTRO" local posficara = {x=522,y=461,z=2} local posfinal = {x=525,y=461,z=2} function onKill(cid, target) if getCreatureName(target) == nome then if doCreateTeleport(1387,posfinal,posficara) then addEvent(lolis, 30000) end end end function lolis() doRemoveItem(getThingFromPos({x=posficara.x,y=posficara.y,z=posficara.z,stackpos=1}).uid,1) end end Em nome você põe o nome do monstro, em posficara você põe as coordenadas que o teleport será criado e em posfinal você põe as coordenadas em que o teleport levará o player. Agora você, na mesma pasta, abre o arquivo chamado login.lua e coloca a linha abaixo 1 linha antes do último return TRUE: registerCreatureEvent(cid, "killbyantharaz")
  4. local look = {lookType = 335, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} function onStepIn(cid, item, pos) doCreatureChangeOutfit(cid, look) end Você configura o outfit na variável local look.
  5. Sem intenção de reviver o tópico, mas também de acrescentar conteúdo ao mesmo, se a premmy acabar enquanto ela está on, ele não será teleportado, ou seja, poderia aproveitar um bom tempo de premmy sem pagar se souber dessa falha. Acho que se usasse um global event pegando a table de players online a cada intervalo de tempo e teleportando se ele n fosse premmy e tivesse em área pa seria melhor =x
  6. Acho que o comando de mudar para protect zone uma área n existe...
  7. Faz assim: -------------------------------------------------------------------------------------------- ------------------------------------ Script by Antharaz ------------------------------------ -------------------------------------------------------------------------------------------- local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|. I'm searching someone that wants trade itens for a special {key}.") function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'key') or msgcontains(msg, 'trade') then selfSay("I have a rare key. I trade it for 1kk and a golden falcon. Do you {want}?",cid) talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'want') or msgcontains(msg, 'trade')) and talkState[talkUser] == 1 then if retirar(cid) then doPlayerAddItem(cid,2090,1) selfSay("Thank you so much!",cid) else selfSay("Sorry, but you don't havy the itens that i need.",cid) end talkState[talkUser] = 0 elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then selfSay("Okay man.",cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function retirar(cid) if doPlayerRemoveItem(cid,9003,1) then if doPlayerRemoveMoney(cid,1000000) then return TRUE else doPlayerAddItem(cid,9003,1) end end return FALSE end
  8. Tenta usar esse: local itemretirado = 10556 function onSay(cid, words, param, channel) local alpha={} confere(cid) if doPlayerRemoveItem(cid,itemretirado,1) then if words == "!fist" and alpha[1] ~= 0 then doPlayerAddSkill(cid,0,1) elseif words == "!club" and alpha[2] ~= 1 then doPlayerAddSkill(cid,1,1) elseif words == "!sword" and alpha[3] ~= 2 then doPlayerAddSkill(cid,2,1) elseif words == "!axe" and alpha[4] ~= 3 then doPlayerAddSkill(cid,2,1) elseif words == "!distance" and alpha[5] ~= 4 then doPlayerAddSkill(cid,4,1) elseif words == "!shield" and alpha[6] ~= 5 then doPlayerAddSkill(cid,5,1) else doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,'Você já atingiu o número máxido de skills para se poder comprar mais.') end doSendMagicEffect(getThingPos(cid),12) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,'Skill comprado com sucesso.') else doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,'Você não tem o necessário para comprar esta skill.') end end function confere(cid) for x=0,5 do if getPlayerSkillLevel(cid,x) > 349 then alpha[x+1] = x end end end Nota: Funciona em 8.54 mas não sei se funciona em 8.5 ou 8.52. Nota2: Não testei
  9. Mais dúvidas: Como saberei se ele leu/recebeu ou não minha menssagem com o script? == EDIT == Mensagem enviada PS:.. foi bem simplesinha msm rsrs
  10. A qeust que estou fazendo envolve mais de um script. Pode ser assim mesmo? e no caso de usar npcs, devo mandar só o .lua ou o .xml tbm?
  11. @topic xD Acho que so dá apra mudar qnd o monster usa um outfit de human...
  12. Como eu te disse, 128 555 555. Com a var local fora da functions ela n irá receber 128 novamente. PS:.. vc usou o = ao invés do == no if =x Eu falei para experimentar por troqueout(1) antes de troqueout(0) para você reparar esta diferença Entendeu o que eu quis dizer agora?
  13. @Marcryzius O 1º não justifica o fato de que meu script não está com erro PS:.. olhe seu code: local out = 128 function troqueout(sex) if sex = 0 then out = 555 end return out end local a,b = troqueout(0),troqueout(1) print(a,b) como vc declarou o out antes da function ele não vai voltar a receber 128 qnd usar a função novamente... experimente colocar o local out = 128 dentro da function ou colocar troqueout(1) antes de troqueout(0), ficando assim: function troqueout(sex) local out = 128 if sex = 0 then out = 555 end return out end local a,b = troqueout(0),troqueout(1) print(a,b) ou local out = 128 function troqueout(sex) if sex = 0 then out = 555 end return out end local a,b = troqueout(1),troqueout(0) print(a,b) O 2º eu já disse que concordo 100% com você, mas só agora vi direito o que você disse. Realmente eu estava enganado nesta Passa msn para discutirmos por lá, é melhor =x
  14. @Marcryzius Teste o script e verá que está certo, não há erro algum... o outfit visual está com um outfit e o visual2 está com outro. no final há o doSetCreatureOutfit(cid, visual, -1), ouys eja, vai mudar para o valor que está em visual... if getPlayerSex(cid) == 0 then --Verifica o sexo, se for 0 visual = visual2 --A variável local visual recebe os valores da variável local visual2 end --fim do if ou seja, se o sex for 0, o valor da varuiável visual vai mudar e o outfit que o rka receber vai mudar... é apenas uma questão de lógica, mas se mesmo assim não entendeu, rode em um sv seu e verá o que estou falando... player mulher igual a sexo '0'(zero) if verifica apenas o sexo '0'(zero) modificando o valor da variável para o outfit de mulher. se for um homen ele não modificará a variável continuando assim com o outfit de mulher. o outfit visual é de male e o visual2 de female... logo o correto da sua frase seria: player mulher igual a sexo '0'(zero) if verifica apenas o sexo '0'(zero) modificando o valor da variável para o outfit de mulher. se for um homen ele não modificará a variável ficando assim com o outfit de HOMEM. local visual = {lookType = 335, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local visual2 = {lookType = 336, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} Veja que o looktype dos 2 é diferente... Agora aproveitando para falar de outro tópico que só vi sua resposta ontem: http://www.xtibia.com/forum/topic/128453-reprovado/ Nota: você falou: legal que você não sabe a diferença entre AID e UID. Acho que você não viu o script do cara direito e eu considerei o que você disse uma ofença -.-' Usar o aid no xml e verificar o uid no script como você falou é sim uma forma inteligente de reduzir o número de scripts. Mas observe que lá ele já atribui tal uid no xml e ainda faz a verificação do uid no .lua, o que eu chamo de tolice, afinal o script só vai rodar se o item já tiver aquele uid. Se ele tivesse atribuído uma aid ao script e verificado o uid ou vice versa concerteza não teria postado aquilo. PS:.. não tratei isto por MP porque você não está recebendo menssagens.
  15. Tenho em meu pc algumas listas copm informações para se colocar em algumas funções que não se acha tão facilmente... - = Slots = - Aposto que muitos já se perguntaram o que por em slot na função getPlayerSlotItem(cid, slot). Abaixo há a resposta: CONST_SLOT_HEAD (1) = helmet CONST_SLOT_NECKLACE (2) = necklace slot CONST_SLOT_BACKPACK (3) = backpack CONST_SLOT_ARMOR (4) = armor CONST_SLOT_LEFT (5) = left hand CONST_SLOT_RIGHT (6) = right hand CONST_SLOT_LEGS (7) = legs CONST_SLOT_FEET (8) = boots CONST_SLOT_RING (9) = ring slot CONST_SLOT_AMMO (10) = ammo slot Exemplo de uso: if getPlayerSlotItem(cid, 10).itemid == 2229 then doPlayerSendTextMessage(cid, 22, "Você tem uma caveirano lugar das munições.") end Que seria o mesmo que: if getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid == 2229 then doPlayerSendTextMessage(cid, 22, "Você tem uma caveirano lugar das munições.") end Nota: a função getPlayerSlotItem(cid, slot) retorna uma table de três valores: itemid, uid e actionid. - = Keys = - Outra coisa importante são as keys de itens, usadas nas funções doItemSetAttribute(uid, key, value), doItemEraseAttribute(uid, key) e getItemAttribute(uid, key). Abaixo há uma lista com as keys: description weight defense attack attackspeed weaponType extradef absorbPercentDeath absorbPercentHoly absorbPercentIce absorbPercentEnergy absorbPercentEarth absorbPercentFire absorbPercentPhysical skillShield magiclevelpoints defense weaponType armor slotType weight speed Um exemplo muito usado em scripts de refinamento: doItemSetAttribute(item2.uid,"extradefense",8) Nota: as keys devem sempre ser usadas como uma string, ou seja, entre aspas. Nota2: Aquelas keys listadas não são as únicas, mas são as menos conhecidas. há também aid que representa a action id entre outras(que também precisam ser usadas como string). - = Skills = - Por último mas não menos importante há os skills, onde são usados em funções como doPlayerAddSkillTry(cid, skillid, n[, useMultiplier]), doPlayerAddSkill(cid, skillid, amount) entre outras. Abaixo segue a lista: SKILL_FIST (0) = Fist Fighting SKILL_CLUB (1) = Club Fighting SKILL_SWORD (2) = Sword Fighting SKILL_AXE (3) = Axe Fighting SKILL_DISTANCE (4) = Distance Fighting SKILL_SHIELD (5) = Shielding SKILL_FISHING (6) = Fishing Exemplo: doPlayerAddSkill(cid, 1, 8) Que seria o mesmo que: doPlayerAddSkill(cid, SKILL_CLUB, 8) Eu poderia ter criado três tópicos falando de cada um dos três, mas não sou como estes membros que só pensam em posts -.-' Espero que tenha ajudado
  16. Bem, vou ensinar como fazer com que um player receba o outfit que você quer colocar nele sem que ele consiga mudar pelo "set outfit". Primeiro coloque uma variável com o outfit desejado. No caso usei o do war: local visual = {lookType = 335, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} Logo depois use a variável na function doSetCreatureOutfit(cid, outfit, time), mas ao invés de determinar um tempo maior que 0 para ficar com o outfit, coloque -1, ficando assim: doSetCreatureOutfit(cid, visual, -1) Juquinha: lol, tá seu vagabundo, agora o player não consegue mudar nem fud***** o outfit, ja tentei com doCreatureChangeOutfit, doPlayerRemoveOutfit e outras funções. É bom você falar como que volta ao normal senão... Antharaz: Calma fiote. basta usar a função doRemoveCondition dessa maneira: doRemoveCondition(cid, CONDITION_OUTFIT) Perceba que o looktype varia de acordo com o sexo, então para um char female não ficar com outfit de char male e vice versa, vamos fazer o seguinte, declarar 2 variáveis, 1 com cada looktype: local visual = {lookType = 335, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local visual2 = {lookType = 336, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} Agora, colocamos em nosso script a função de verificação de sexo: if getPlayerSex(cid) == 0 then --Verifica o sexo, se for 0 visual = visual2 --A variável local visual receber os valores da variável local visual2 end --fim do if doSetCreatureOutfit(cid, visual, -1) --Muda o outfit do player para o valor contido em visual que, no caso, dependerá do sexo No caso, eu fiz visual receber visual2 se o sexo for 0 para encurtar o script. Dica: o inglês ajuda muito qualquer scripter... IMPORTANTE: Declare as variáveis dentro da functon que você usar, caso contrário acontecerá o que o Marcryzius disse abaixo.
  17. Creio que aqui não é o local certo para pedidos. =x Por favor, algum moderador feche o tópico.
  18. Antharaz

    Bans

    O problema foi ao conectar com a DB. Abra o config.lua da pasta do seu ot e veja se a parte da db está ok.
  19. com ss fica mais fácil para ver qual efeito o scripter quer...
  20. Como todos sabem, saber qual é o número do efeito que você deseja é difícil... ainda mais com tant lista de efeitos desatualizadas por aew. :fist: Então resolvi fazer uma lista atualizada de 68 efeitos (8.54) que está abaixo: Para usar os efeitos basta colocar o comando doSendMagicEffect(posição,efeito). Aonde posição é as coordenadas aonde o efeito será aplicado e o efeito é o próprio efeito. Vamos supor que eu queira usar o efeito de fumacinha no player como se tivesse dado algo errado quando usasse um item em outro. Eu colocaria assim: function onUse(cid, item, frompos, item2, topos) doSendMagicEffect(cid,2) return FALSE end Caso não funcione o código acima por algum motivo, troque o cid do doSendMagicEffect por frompos.
  21. @nilton123 lá na linha que você adicionou em globalevents.xml tem uma parte assim: interval="900" Esse 900 é o tempo em SEGUNDOS. Caso queira 3 horas, troque o 900 por 10800 @Cosaki Vamos supor q seu char ta afk no dp e você coloque o tempo de verificação 10 min... Depois de ficar 10 min afk ele manda a 1ª msg com o número. Depois de mais 10 min ele dá o último aviso e logo depois, com mais 10 min, se o player n tiver feito a verificação que ele leva ban... Provavelmente você vai ser kickado pelo server antes de fica 30 min afk.
  22. O comando certo para o TCS 3.6 é doAddAccountBanishment e não doAddBanishment. O problema é que não consigo adicionar um comentário =x...mas já improvisei uma solução... obrigado mesmo asssim...
  23. {E}stá bom para um dos primeiros scripts... {T}ipow, acho que há um comando para pegar o nome da cidade direto só pelo id... aí vc poderia usá-lo no lugar de outra cidade ou desta cidade. {V}ocê já sabe né... qlqr dúvida é só chamar msn ^^
  24. @vilden sim... script 100% meu... =x Como funciona: A cada intervvalo de tempo o sv fará uma checagem e mandará uma msg para todos players... caso o player ainda não tenha recebido o número de checagem ou que já tenha confirmado o último: Anti-bot system by Antharaz. Seu número de confirmação anti-bot é: NUMERO ALEATÓRIO. Por favor digite !anthaab XXXXX onde XXXXX é seu número de confirmação. Caso o player ainda não tenha confirmado o último número: Último aviso. Confirme seu número gerado pelo sistema anti-bot pelo comando !anthaab ou você será banido. Caso ele não tenha confirmado o número mesmo depois do último aviso ele será banido. Se o player falar !anthaab NÚMERO ERRADO: o sv mandará uma msg para ele informando o número certo. Se o player falar !anthaab NÚMERO CERTO: o sv mandará uma msg para ele informando que foi confirmado com sucesso.
  25. {T}ive um idéia babaca enquanto estava atoa em casa... .-. porque não fazer um anti-bot system? lol Gtz champz!!! ¬¬ {A}lguns detalhes do sistema: 1º - Para não atrapalhar wars ele não faaz a verificação o player está PZ Locked. 2º - Se você der logout sem fazer a verificação, ao entrar novamente ele lhe informará o último código não confirmado por você. 3º - Os gods/gms/account managers não recebem nenhuma msg por motivos óbvios. {E}m globalevents.xml localizado na pasta data\globalevents coloque a linha abaixo antes de </globalevents>: <globalevent name="anthaab" interval="900" event="script" value="anthaab.lua"/> {A}pós fazer isto, vamos criar o script correspondente ao evento. Crie um arquivo chamado anthaab.lua em data\globalevents\scripts com o code abaixo: function onThink(interval, lastExecution) for x=1,#getOnlinePlayers() do if getPlayerAccess(getCreatureByName(getOnlinePlayers()[x])) < 4 and (not isPlayerPzLocked(getCreatureByName(getOnlinePlayers()[x]))) and getOnlinePlayers()[x] ~= "Account Manager" then if getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564) == -1 then local numero = math.random(0,99999) doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Anti-bot system by Antharaz. Seu número de confirmação anti-bot é: '..numero..'. Por favor digite !anthaab XXXXX onde XXXXX é seu número de confirmação.') setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564,numero) elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == -1 then setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,1) doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Último aviso. Confirme seu número gerado pelo sistema anti-bot pelo comando !anthaab ou você será banido.') elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == 1 then doAddAccountBanishment(getAccountIdByName(getOnlinePlayers()[x])) setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,-1) doRemoveCreature(getCreatureByName(getOnlinePlayers()[x])) end end end return TRUE end {A}gora vá em talkactions.xml na pasta data/talkactions e adicione a linha abaixo antes de </talkactions>: <talkaction words="!anthaab" event="script" value="anthaab.lua"/> {A}gora em data/talkactions/scripts crie um arquivo chamado anthaab.lua com o code abaixo: function onSay(cid, words, param, channel) if getPlayerAccess(cid) > 3 then return false elseif getPlayerStorageValue(cid,9564) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Você ainda não recebeu um novo número de confirmação anti-bot.') elseif tonumber(param) == getPlayerStorageValue(cid,9564) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Confirmado com sucesso. Bom jogo.') doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Antha anti-bot system by Antharaz') setPlayerStorageValue(cid,9564,-1) setPlayerStorageValue(cid,9565,-1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING,'Número de confirmação errado. O seu número de confirmação é '..getPlayerStorageValue(cid,9564)..'.') end return true end {A}gora vá em data\creaturescripts\scripts, abara o arquivo login.lua e coloque o código abaixo antes do return true: if getPlayerStorageValue(cid,9564) > -1 then doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,'Você não confirmou seu último número do sistema anti-bot. Ele é: '..getPlayerStorageValue(cid,9564)..'.') end {V}ídeo: http://www.screencast.com/t/MmM5NjFiY PS:.. o vídeo demora um pouco para começar mesmo...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...