Jump to content
  • Content count

    71
  • Joined

  • Last visited

  • Days Won

    5

PACI last won the day on April 27

PACI had the most liked content!

Community Reputation

54 Neutral

2 Followers

About PACI

  • Rank
    Member

Recent Profile Visitors

176 profile views
  1. 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.
  2. LPDUNGEON pDungeon = pAttacker->GetDungeon(); if (pDungeon->GetFlag("whatever") == X){ // do something }
  3. 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.
  4. Falta atualizares a variável haveItem quando removido 1 item do jogador, caso contrário o seu valor será constante (atribuido no inicio).
  5. 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).
  6. PACI

    System MultiLanguage

    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.
  7. PACI

    Sugestões para o Fórum

    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.
  8. PACI

    Dúvida - Quest

    Coloca o seguinte na zona dos table.insert() e vê o que te dá. say("debug - pc cant enter: "..pc.get_name())
  9. PACI

    Dúvida - Quest

    ^this E deixa para aí a quest.
  10. remove as habilidades do skill_proto.
  11. PACI

    Dungeon quest

    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
  12. PACI

    RunMain Error

    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.
  13. PACI

    quest

    Aqui, count é uma tabela ou nil, nunca uma string ou número.
  14. PACI

    Pedido Torre Sakita

    -- Colocar no chat-trigger if not party.is_party() then say("sem grupo") return elseif not party.is_leader() then say("não és o líder") return end local canEnter = true local pids = {party.get_member_pids()} if table.getn(pids) < 4 then say("necessários 4 membros") return end for _, pid in ipairs(pids) do q.begin_other_pc_block(pid) if pc.get_level() < 40 then canEnter = false end q.end_other_pc_block() end if not canEnter then say("existem jogadores com nivel < 40") return end Entretanto, a função d.new_jump_party() cria uma nova dungeon instance do mapa escolhido (pelo index) e transporta todos os membros do grupo do jogador para as posições selecionadas. Dito isto, todas as funções dungeon colocadas depois desta, não irão funcionar. Isto porque nesse momento não existe nenhuma dungeon. Colocá-las num login-trigger (when login ... begin), faz com que corram perfeitamente.
×

Important Information

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