Jump to content

Question

Bom dia/tarde/noite , preciso de ajuda com algumas coisas .

1° Gostaria de saber se é possivel , e se for , como fazer , para adicionar uma arma com sprite custom e transformar esse item em um visual de arma.

2° Como  adicionar uma sprite de mob customizado , procurei sobre e só achei para outros emuladores , tentei repetir o processo no hercules e nao consegui .

3° Quais arquivos preciso mudar para adicionar / remover mobs da Torre sem fim .

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 1

É possível sim, você teria que criar um script para : (npc/instances/EndlessTower.txt) e verificar se o player é vip ou não pegando os valores da database com essa função(http://herc.ws/wiki/Query_sql).

O foco vai ser mais ou menos nessas linhas aqui ,pois elas estão setando o delay(604800 = 1 semana), estude bem para ver o que cada função faz.

Quote
e_tower,81,105,0 script Tower Protection Stone 2_MONEMUS,{
   
  .@party_id = getcharid(CHAR_ID_PARTY);
  .@p_name$ = getpartyname(.@party_id);
  .@md_name$ = _("Endless Tower");
   
  .@etower_timer = questprogress(60200, PLAYTIME); // 1 week
  .@etower_timer2 = questprogress(60201, PLAYTIME); // 4 hours
   
  if (!instance_check_party(.@party_id, 2)) {
  mes("Make or join a party with more than 1 member and try again.");
  close();
  }
  if (!.@etower_timer) {
  if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id, 2)) {
  mes("Confirmed the party has been made. Would you like to reserve entrance to the Endless Tower?");
  next();
  .@str$ = sprintf(_$("Generate Dungeon %s"), .@md_name$);
  switch (select(.@str$, "Enter the Dungeon", "Return to Alberta", "Cancel")) {
  case 1:
  .@instance = instance_create(.@md_name$, .@party_id);
  if (.@instance < 0) {
  mesf("Party Name: %s", .@p_name$);
  mesf("Party Leader: %s", strcharinfo(PC_NAME));
  mesf("^0000ff%s ^000000- Reservation Failed!", .@md_name$);
  close();
  }
  mesf("^0000ff%s^000000 - Try to reserve", .@md_name$);
  mes("After making a reservation, you have to talk to NPC behind and select the menu 'Enter the Dungeon' to enter the dungeon.");
  for (.@i = 1; .@i <= 6; ++.@i) {
  if (instance_attachmap(.@i + "@tower", .@instance) == "") {
  mesf("^0000ff%s ^000000- Reservation Failed!", .@md_name$);
  instance_destroy(.@instance);
  close();
  }
  }
  instance_set_timeout(14400, 300, .@instance);
  instance_init(.@instance);
  close();
  case 2:
  callsub(L_Enter, 0, 1, .@md_name$, .@p_name$);
  case 3:
  mes("I will move you to Alberta.");
  close2();
  warp("alberta", 223, 36);
  end;
  case 4:
  close();
  }
  }
  mes("If you have the dungeon generated already, you can enter it.");
  next();
  switch (select("Enter the Dungeon", "Return to Alberta", "Cancel")) {
  case 1:
  callsub(L_Enter, 1, 1, .@md_name$, .@p_name$);
  case 2:
  mes("I will move you to Alberta.");
  close2();
  warp("alberta", 223, 36);
  end;
  case 3:
  end;
  }
  } else if (.@etower_timer == 1 && .@etower_timer2 == 2) {
   
  .@dun_lim_time = etower_timer + 604800; // 1 week
  .@dun_lim_time2 = etower_timer + 14400; // 4 hours
  .@dun_cur_time = gettimetick(2);
  .@dun_ent_t = .@dun_lim_time - .@dun_cur_time;
  .@dun_h = .@dun_ent_t / 3600;
  .@dun_m = (.@dun_ent_t - (.@dun_h * 3600)) / 60;
  .@dun_s = .@dun_ent_t - ((.@dun_h * 3600) + (.@dun_m * 60));
   
  mesf("Due to the tower's aftereffects, you cannot enter the dungeon right now, %d hours %d minutes %d seconds left to enter the next dungeon.", .@dun_h, .@dun_m, .@dun_s);
  next();
  mes("It is dangerous here. Let me move you to Alberta.");
  close2();
  warp("alberta", 223, 36);
  end;
  } else if (.@etower_timer == 1) {
  mes("If you have the dungeon generated already, you can enter it.");
  next();
  switch (select("Enter the Dungeon", "Return to Alberta", "Cancel")) {
  case 1:
  callsub(L_Enter, 0, 0, .@md_name$, .@p_name$);
  case 2:
  mes("I will move you to Alberta.");
  close2();
  warp("alberta", 223, 36);
  end;
  case 3:
  break;
  }
  close();
  } else {
  etower_timer = 0;
  erasequest(60200);
  erasequest(60201);
  mes("^0000ffThe records and after effects related to the Endless Tower have been removed. You can generate and enter the Endless Tower again.^000000");
  close();
  }
   
  L_Enter:
  if (has_instance("1@tower") == "") {
  mesf("The memorial dungeon %s does not exist.", getarg(2));
  mes("The party leader did not generate the dungeon yet.");
  close();
  } else {
  mapannounce("e_tower", sprintf(_$("%s of the party, %s, is entering the dungeon, Endless Tower."), strcharinfo(PC_NAME), getarg(3)), bc_map, C_SPRINGGREEN, FW_NORMAL, 12);
  if (getarg(1)) {
  etower_timer = gettimetick(2);
  setquest(60200);
  setquest(60201);
  }
  warp("1@tower", 52, 354);
  if (getarg(0) == 0)
  close();
  else
  end;
  }
  }
   
  e_tower,30,30,2 script Huge Vortex CLEAR_NPC,2,2,{
  end;
  OnTouch:
  mapannounce("e_tower", sprintf(_$("[ %s ], seems to be engulfed by a huge vortex"), strcharinfo(PC_NAME)), bc_map, C_SPRINGGREEN, FW_NORMAL, 12);
  warp("alberta", 223, 36);
  end;
  }
   
  // Original name: "#102Administrator Mode104"
  e_tower,1,1,2 script #102Administrator Mode CLEAR_NPC,{
  callfunc("F_GM_NPC");
  mes("Please enter the password.");
  .@i = callfunc("F_GM_NPC", "dmc2008", 1);
  next();
  if (.@i == 1) {
  switch (select("Generate Purification Stone", "Remove Purification Stone", "Cancel")) {
  case 1:
  mes("Create the Purification Stone that stays for 30 minutes.");
  donpcevent("Purification Stone#et1::OnEnable");
  break;
  case 2:
  mes("Destroy the Purification Stone immediately");
  donpcevent("Purification Stone#et1::OnDisable");
  break;
  case 3:
  mes("You have canceled it.");
  break;
  }
  close();
  } else {
  mes("Enter the password exactly.");
  close();
  }
  }
   
  e_tower,69,117,4 script Purification Stone#et1 2_MONEMUS,{
  etower_timer = 0;
  mes("^0000ffThe records and aftereffects related to the Endless Tower have been removed. You can generate and enter the Endless Tower again.^000000");
  close();
   
  OnInit:
  disablenpc("Purification Stone#et1");
  end;
   
  OnEnable:
  initnpctimer();
  end;
   
  OnDisable:
  stopnpctimer();
  disablenpc("Purification Stone#et1");
  end;
   
  OnTimer1000:
  enablenpc("Purification Stone#et1");
  end;
   
  OnTimer1740000:
  mapannounce("e_tower", _("The Purification Stone will be destroyed in one minute."), bc_map, C_SPRINGGREEN);
  end;
   
  OnTimer1800000:
  disablenpc("Purification Stone#et1");
  end;
  }
   
  e_tower,151,185,4 script Purification Stone#et2 CLEAR_NPC,{
  callfunc("F_GM_NPC");
  etower_timer = 0;
  mes("^0000ffThe records and aftereffects related to the Endless Tower have been removed. You can generate and enter the Endless Tower again.^000000");
  close2();
  warp("e_tower", 75, 108);
  end;
  }

E também irá ter que trabalhar com /db/quest_db.conf. Porque é aqui que seta a quest e sua duração. Vê que são os mesmos valores do arquivo acima(604800 tempo de delay).

Quote

 

{
    Id: 60200
    Name: "Endless Tower Effect"
    TimeLimit: 604800
},
{
    Id: 60201
    Name: "Endless Tower Time Limit"
    TimeLimit: 14400
},
 

Esse é o caminho que estou ti dando, estou com pouco tempo n posso ti ajudar muito com o code, espero que entenda ;D

Share this post


Link to post
Share on other sites
  • 0

Bom dia,

1°) Talvez, conhece os itens shadow?! Com eles, você pode testar essa função "visual de arma", segue o Link: http://herc.ws/wiki/Custom_Items, Vá nesse tópico 

Loc: Equipment location of armor and arrow-type items. 

2°)http://herc.ws/wiki/Custom_Mobs.

3°)Este é o arquivo da torre sem fim https://github.com/HerculesWS/Hercules/blob/stable/npc/instances/EndlessTower.txt.

Share this post


Link to post
Share on other sites
  • 0

O tempo da torre é de 6 dias e 20 horas né , qual a chance de ser possível colocar para jogadores vip um delay menor ? 

Apenas vips com delay de 3 dias

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...

Important Information

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