Ir para conteúdo

dalvorsn

Conde
  • Total de itens

    750
  • Registro em

  • Última visita

  • Dias Ganhos

    8

Tudo que dalvorsn postou

  1. desde ja obrigado pela atenção são varias! Asim que possivel explique e nao esqueça por favor #Aguardando... Então, antes de mais nada você tem que definir o que vai diferenciar um player de outro, para que sua outfit seja diferente, pode ser vocação, local onde nasce, e etc ... Dai faremos uma tabela com essas configurações, usaremos no onLogin um if com a seguinte condição: getPlayerLastLoginSaved(cid) <= 0 Dentro do bloco desse if, setaremos a nova outfit, de acordo com o que usamos para diferenciar.
  2. Sqlite então, pois bem, abra a sua database e edite o player account manager, isso se for apenas um outfit, se forem mais, terá que ser pelo login.lua, se for lo caso explico mais tarde, estou na estrada Cya
  3. Blz man mas e como faz pra o player ja nasce com a outfit ond edita isso? Qual seu tipo de database?
  4. Vá em data/creaturescripts/scripts/login.lua Troque isso: local accountManager = getPlayerAccountManager(cid) if(accountManager == MANAGER_NONE) then local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage if(lastLogin > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "." else str = str .. " Please choose your outfit." doPlayerSendOutfitWindow(cid) end Por isso: local accountManager = getPlayerAccountManager(cid) if(accountManager == MANAGER_NONE) then local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage if(lastLogin > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "." end
  5. A função test não tem retorno, e printar apenas o nome dela, vai mostrar 'function: 0x00algo', e se printar print(test()) vai printar o print da função teste, e nil que é o retorno dela. A questão é que o modo que você falou, pode confundir as pessoas, pareceu que o nome da função é a mensagem a ser printada, e não é assim. Quando receber o opcode ele vai executar a função determinada, no caso do baxnie ali a função test, se fosse outra função qualquer, executaria também da mesma forma e não precisa ter uma mensagem, nem printar nada, pode ser apenas uma função para setar algo, definir alguma coisa.
  6. Ele perguntou no cliente, a primeira parte que voce postou, é a callback do server, ela é chamada quando o server recebe algum opcode. E na segunda explicação, tem uma incoerência quanto ao uso da função de registrar os opcodes Os opcodes são registrados através da função ProtocolGame.registerExtendedOpcode(opcode, callback) Onde o primeiro parametro é o valor do opcode(numero referente, como no exemplo do baxnie era 100), e o segunda parametro que é a callback, que nada mais é que o nome da função que será chamada quando receber o opcode 100.
  7. function onUse(cid, item, frompos, item2, topos) local monstro = getItemAttribute(item.uid, "corpse") local health = getItemAttribute(item.uid, "health") local name = getItemAttribute(item.uid, "monstro") local vocationUse = {4, 8} -- poem a vocação e a promotion if #getCreatureSummons(cid) > 3 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ja esta usando uma reencarnação ou um pet") return true end if getPlayerMana(cid) < health/100*70 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem chakra suficiente") return true end if getPlayerStorageValue(cid, 24436) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode invocar mais de reanimação junto.") return true end if isInArray(vocationUse, getPlayerVocation(cid)) then doPlayerSendTextMessage(cid,22,"Você não tem a vocação apropriada") return TRUE end t = doCreateMonster(monstro, getThingPos(cid)) doConvinceCreature(cid, t) setCreatureMaxHealth(t, health) doCreatureAddHealth(t, health) doPlayerAddMana(t, -getItemAttribute(item.uid, "health")/90) setPlayerStorageValue(cid, 24436, name) return true end
  8. function onCastSpell(cid, var) -- by DrakyLucas local leveis = { -- [(lvlMin,lvlMax)] = {runas = {ID1,ID2,ID3,....,IDn}}, [{1, 20}] = {runas = {2287,2315,2316}}, [{21,40}] = {runas = {2287,2315,2316}}, [{41,99999}] = {runas = {2287,2315,2316}}, } for runa, TABLE in pairs(leveis) do if getPlayerMagLevel(cid) >= runa[1] and getPlayerMagLevel(cid) <= runa[2] then doPlayerAddItem(cid,TABLE.runas[math.random(1,#TABLE.runas)],math.random(1,100)) break end end return true end
  9. mas esta compilado com a função direitinho, alem de compilar a função eu tenho que colocala na lib? script server - side Client - side oque poderia ser =\ Parece besteira, mas pode ser que voce tenha compilado e não tenha trocado o executavel pelo gerado na compilação no server, ai e como se não tivesse mudado nada.
  10. e porque esse diff foi feito com base numa source bem recente da svn privada do tfs pra usar em tfs 036 vai ter que ler todas as modificaçoes, entender e adaptar, isso e bem complicado se voce for leigo em c++
  11. Exemplo bem básico: Client: #modules/game_print/print.otmod de0vrxyU[/pastebin] #modules/game_print/print.otui S8SDFciL[/pastebin] #modules/game_print/print.lua DRv7GHbY[/pastebin] Server: #data/creaturescripts/extendedopcode.lua GfG1mZF9[/pastebin] Obs.: É necessário que tenhas o codigo compilado nas sources, se não tiver não vai funcionar a callback. Modulo anexado game_print.rar Edit: Voce teria algum exemplo de como utilizar so servidor para o cliente tipo usar um onuse em x objeto e o cliente apresentar alguma caracteristica dele tipo som com as informações que temos ta dificil pra alguns mais leigos e fuçados tentar execultar algo a unica coisa que consegui utilizar ate agora foi o isPlayerUsingOtclient(cid) ainda n intendi como usar o opcode É só usar essa função no script do server doSendPlayerExtendedOpcode(cid, opcode, buffer) E no otclient voce usa essa função aqui: ProtocolGame.registerExtendedOpcode(opcode, callback) lembrando que callback deve ser uma função qualquer criada por voce, que tenha como parametros isso: protocol, opcode, buffer Ex.: function minhafuncao(protocol, opcode, buffer) print(opcode, buffer) ehd ProtocolGame.registerExtendedOpcode(opcode, minhafuncao)
  12. O primeiro script está bom, mas o segundo ... Eu realmente não entendo o porque de deletar as contas, e se foi hackeado, não vai adiantar muita coisa deletar os que tiverem group_id >= 5. Eu acho que o mais aconselhável seria banir por ip, e nada mais. Pois assim não haveria perda de dados e não haveria também abuso de poderes.
  13. Eu não alterei em nada a magia, eu apenas troquei o nome 'changeposbydir' por 'getPositionByDirection'
  14. O que a função 'changeposbydir' deveria fazer? #edit Acho que sei como é essa função, se for a que estou pensando, o nome dela no tfs é getPositionByDirection(fromPosition, direction, size) Teste ai: eryUTCpi[/pastebin]
  15. #baxnie Não tinha pensado nisso, muito bom. É, acho que assim é bem melhor mesmo.
  16. Essa lib que to fazendo. Bem a estrutura base dela ja ta 90% pronta e já é funcional. Antes de mais nada vou apresentar a ideia que gerou ela, e quero sugestões que acrescentem a essa linha da ideia. Como quem meche com lua sabe, ela nao tem orientação a objeto, e a maioria dos metodos que usam por ai não simula herança, eu quero mudar isso, acho interessante ter herança, e fiz um lib pra isso: Vm3BqgFT[/pastebin] Me digam, o que poderia ser adicionado a lib? O que poderia ser melhorado? Quais outros conceitos mais de orientação a objeto seriam interessantes de adicionar. Agradeço aos que colaborarem. Lembrando que o script será postado ao seu termino.
  17. Não tenha tanta certeza, a codificação ali ta foda
  18. Autor: Dalvo Descrição: Função que retorna todos os numeros primos de 2 até range, se range está ausente range vale 2. O codigo é feito em lua puro, não há incompatibilidade. Quanto a utilidade, isso vai da criatividade. getPrimes([range]) aaeS3AyL [/pastebin] Duvidas, bugs ou erros reportem.
  19. levei 1 semana pra descobrir isso na marra ¬¬ achu q o CODE do xtibia eh uma bota ms ;x sera q com 'quote' a indenizaçao fica correta? '--' anchors.left: Label1.left vlw pela dica! uma duvida, sabes como mover uma janela? ja tentei todas as 'funçoes' q eu achei e nd ate agora... -ex: setPosition(pos)- e otimo tutorial, na espera dos proximos ^^ local mw = g_ui.createWidget('MiniWindow') mw:move(0, 0) E quanto a aparecer no canto é só setar o parent -- root mw:setParent(modules.game_interface.getRootPanel()) -- right mw:setParent(modules.game_interface.getRightPanel()) --left mw:setParent(modules.game_interface.getLeftPanel()) --etc
  20. O zelda não é tão diferente do tibia, só precisaria mais é de alguns outfits, e uma coisa ou outra de mapa. Quanto a sistemas e mapa, ai sim daria um bom trabalho, e necessitaria do conhecimento do jogo em si, para seguir a historia do game. Eu também nunca vi um desses pra download, mas seria sem duvida um bom projeto, aos que gostam de rpg, zelda é um otimo jogo.
  21. testei com numa area 30x30 no meu notebook que é ruim, deu 188ms +/- eu fui ler a função getSpectators no distro, e notei que ela usa o mesmo principio da minha, acabou que a minha ficou mais lenta por lua ser mais lenta a iteração não é tão grande porque voce tem como acessar quantos things tem em cada tile, tornando desnecessário o loop em 255 stacks Acho que nem compensa fazer isso, é melhor mesmo usar o getSpectators Mas uma possivel função que poderia ser feita desse modo ai é um "get_all_things_in_area" de qualquer maneira vou deixar a função do jeito que está, pode ajudar alguém como exemplo de uso de alguma função e etc.
  22. Autor: Dalvo Servidor Testado: TFS 0.4 Observações: • Nome auto-explicativo; • Fiz essa função por achar o getSpectators muito pesado, pois salva muitos uids e também apos ler uma duvida. • preguiça de formatar o topico direito, outra hora quem sabe. getCreaturesInRetangleArea(pos_init, pos_final) zWqJYcXT [/pastebin]
  23. Qual parte do código faz a atualização do sql? E alias, pra que fazer isso tudo? não seria mais fácil um doPlayerSave(cid) ? function doPlayerSetSkillLevel(cid, skill_id, level) if not isPlayer(cid) then return false end local skill_tries = getPlayerRequiredSkillTries(cid, skill, level) doPlayerAddSkillTry(cid, skill_id, skill_tries) doPlayerSave(cid) return true end
  24. Eu particularmente não gostei do que a tua função faz, achei um pouco non-sense se me permite dizer, mas usando apenas a ideia, eu faria assim: function doPushCreature(cid, target, times, limitPush) if not (isCreature(cid) and isCreature(target)) then return false end local toPos = getCreatureLookPosition(target) if isWalkable(toPos) then doTeleportThing(target, toPos) doSendMagicEffect(toPos, 34) if limitPush > times then addEvent(doPushCreature, times * 50, cid, target, times + 1, limitPush) end end return true end
  25. nossa vei, nao usa tabela assim pra velocidade nao, faz um formula que é bem melhor, isso ai vai ficar muito limitado
  • Quem Está Navegando   0 membros estão online

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