Jump to content

PACI

Verified Member
  • Content count

    70
  • Joined

  • Last visited

  • Days Won

    5

PACI last won the day on April 27 2018

PACI had the most liked content!

Community Reputation

63 Neutral

2 Followers

About PACI

  • Rank
    Member

Recent Profile Visitors

431 profile views
  1. PACI

    Skill P

    when 1.use or 2.use or 3.use or 4.use or 5.use -- IDs de todos os restantes livros -- Segue o esquema begin -- Classe da personagem local class = pc.get_job() + 1 -- Grupo de habilidade local skill_group = pc.get_skill_group() -- A personagem não tem qualquer grupo de habilidade if skill_group < 1 then return end -- Tabela que determina quais livros podem ser lidos -- por uma determinada classe e grupo. Preencher com -- o vnum dos itens local available_skill_books = { -- Guerreiro { -- Corpo {1, 2, 3, 4, 5, 6}, -- Mental {16, 17, 18, 19, 20, 21}, }, -- Ninja { -- Adagas {1, 2, 3, 4, 5, 6}, -- Arco {16, 17, 18, 19, 20, 21}, }, -- Sura { -- Armas {1, 2, 3, 4, 5, 6}, -- Magias {16, 17, 18, 19, 20, 21}, }, -- Shaman { -- Dragão {1, 2, 3, 4, 5, 6}, -- Cura {16, 17, 18, 19, 20, 21}, }, } -- Obter os livros que esta personagem pode ler local my_skill_books = available_skill_books[class][skill_group] -- Comprovar que o livro usado pode ser lido -- por esta personagem for _, vnum in ipairs(my_skill_books) do if vnum ~= item.get_vnum() then syschat("Este livro não pode ser lido por ti.") return end end -- Obter o vnum da habilidade. Deve ser introduzida no value0 (item_proto.txt) local skill_vnum = item.get_value(0) -- Magia! syschat("Habilidade treinada com sucesso.") pc.set_skill_level(skill_vnum, 40) end É um método escrito bem rapido e que podes utilizar como base. Acho que é facil de compreender o que está escrito. Os valores utilizados são exemplificativos.
  2. Boas. Apesar de já quase ter passado 1 semana desde este tópico, queria salientar que na condição anteriormente postada é necessário verificar se pDungeon é um LPDUNGEON ou NULL pointer antes de chamar a função GetFlag(). Mesmo sendo algo que se subentenda, vale a pena relembrar.
  3. LPDUNGEON pDungeon = pAttacker->GetDungeon(); if (pDungeon->GetFlag("whatever") == X){ // do something }
  4. O loop irá correr todas as funções dentro dessa condição e só serão executadas de novo quando a execução anterior terminar. Pelo que: não, não irão haver janelas sobrepostas.
  5. Falta atualizares a variável haveItem quando removido 1 item do jogador, caso contrário o seu valor será constante (atribuido no inicio).
  6. PACI

    Admin Whisper

    Falta uma aspa para fechar o game.get_event_flag(). É interessante. Eu utilizaria um ficheiro externo, possibilitando, assim, o update e envio em tempo real das mensagens (evitando os reloads e restarts - aka casos urgentes).
  7. Default: Inglês. Selecionar no login (guardar no locale.cfg) - lembrar de dar reload aos modulos locale quando selecionado um novo idioma - e no handshake enviar o idioma escolhido para o servidor atualizar os dados do user (assim como o novo idioma). Podes adicionar também o item_names.txt do servidor no client, e fazer com que este o carregue no momento em que os outros locale/*.txt são carregados (deste modo podes continuar a utilizar a função item.GetItemName() sem grandes alterações no python). In-game podes optar por meter opção no Game Options, enviar um packet a pedir a mudança. Pela parte do servidor, ler vários locale_strings diferentes; e a parte quest, tbh não causa problemas nenhuns. Este foi o planeamento e métodos que utilizei para desenvolver este sistema.
  8. Acho isto má ideia. Vamos ser sinceros. Hoje em dia o que qualquer pessoa quer é encontrar o conteúdo que necessita, descarregar, e usar. Se, eventualmente, fosse obrigatório comentar para desbloquear o conteúdo do tópico, isto apenas iria gerar spam e lixo. Para isso, mais vale não comentar imo. Pessoalmente, prefiro os meus tópicos com comentários inteligentes e produtivos dos quais qualquer um possa tirar novas conclusões e aprender dos mesmos, abrindo mais questões, mais respostas, e assim sucessivamente: construindo um debate interessante.
  9. Coloca o seguinte na zona dos table.insert() e vê o que te dá. say("debug - pc cant enter: "..pc.get_name())
  10. Escrevi isto num instante. Se quiseres aprender a construir dungeons, esta é, a meu ver, uma base simples e facil de entender. quest my_simple_dungeon begin state start begin function setting() return { ["MAP_INDEX"] = 0, ["ENTRY_POS"] = {0, 0}, ["FLOORS"] = { {0, 0}, -- 1 {0, 0}, -- 2 -- etc }, ["TASKS"] = { {101, 20}, {102, 30}, -- etc }, -- etc } end function in_dungeon() local dunMapIdx = my_simple_dungeon.setting().MAP_INDEX return pc.get_map_index() >= dunMapIdx * 10000 and pc.get_map_index() < (dunMapIdx + 1) * 10000 end function join() local setting = my_simple_dungeon.setting() if party.is_party() then d.new_jump_party(setting.MAP_INDEX, setting.ENTRY_POS[1], setting.ENTRY_POS[2]) else d.join(setting.MAP_INDEX) end end when MY_DUNGEON_GUARDIAN.chat."Dungeon" begin say("Entrar?") if select("Y", "N") == 2 then return end my_simple_dungeon.join() end when login with my_simple_dungeon.in_dungeon() begin local setting = my_simple_dungeon.setting() if d.getf("level") == 0 then -- d.regen_file(".../regen_1.txt") -- d.spawn_mob(0, 0, 0) -- vnum, x, y d.notice("Mata "..setting.TASKS[1][2].." "..mob_name(setting.TASKS[1][1])) d.setf("level", 1) end end when kill with not npc.is_pc() and my_simple_dungeon.in_dungeon() begin local level = d.getf("level") local tasks = my_simple_dungeon.setting().TASKS if npc.get_race() ~= tasks[level][1] then return end local killCount = d.getf("kill_count") + 1 if killCount < tasks[level][2] then d.setf("kill_count", killCount) return end d.notice("Nivel "..level.." completo. 5 segundos para subir.") d.setf("kill_count", 0) server_timer("my_simple_dungeon_jump_timer", 5, d.get_map_index()) end when my_simple_dungeon_jump_timer.server_timer with d.select(get_server_timer_arg()) begin local setting = my_simple_dungeon.setting() local nextLevel = d.getf("level") + 1 local task = setting.TASKS[nextLevel] d.setf("level", nextLevel) d.notice("Mata "..task[2].." "..mob_name(task[1])) -- d.regen_file(".../regen_"..nextLevel..".txt") -- d.spawn_mob(0, 0, 0) -- vnum, x, y d.jump_all(setting.FLOORS[nextLevel][1], setting.FLOORS[nextLevel][2]) end end end
  11. verifica se o root do client desses jogadores está corrompido (falha no download, erro de extração?), oupede para removerem esse ficheiro e executarem o patcher. por outro lado, se usares cython não tem nada que andar à procura do system.py.
  12. PACI

    quest

    Aqui, count é uma tabela ou nil, nunca uma string ou número.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.

Our website is made possible by displaying online advertisements to our visitors.
Please consider supporting us by disabling your ad blocker.
You will be able to see content when you disable your adblocker and enable javascript.