[Pedido/Ajuda Script] Costume Weapon / Custom mob

CLps

New member
Messages
30
Points
0
Github
clps
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 .

 
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

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

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

{
    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

 
Back
Top