Josemaaaaa Posted 12 hours ago Group: Members Topic Count: 1 Topics Per Day: 1.00 Content Count: 1 Reputation: 0 Joined: 05/21/25 Last Seen: 12 hours ago Share Posted 12 hours ago Como puedo crear un npc que le de la oportunidad de un lider de party invitar jugadores desde el npc. ejemplo: +30lvl minimo y tambien el job tipo un champ o un hp para heals, arqueros etc... (soporte) 1 npc cartel anunciador de partys, reclutador. Quote Link to comment Share on other sites More sharing options...
0 Racaae Posted 1 hour ago Group: Members Topic Count: 0 Topics Per Day: 0 Content Count: 243 Reputation: 107 Joined: 06/02/12 Last Seen: 1 minute ago Share Posted 1 hour ago You can use getunits, isloggedin, and party_addmember to display nearby players and allow the party leader to invite them directly from the NPC. You can use an NPC like this example poster to allow party leaders to post announcements filtered by level, class, or role, and other players can join if they meet the requirements. SPA: Spoiler Puedes usar getunits, isloggedin, y party_addmember para mostrar jugadores cercanos y permitir que el líder de party los invite directamente desde el NPC. Puedes usar un NPC como este cartel ejemplo para que líderes de party publiquen anuncios filtrando por nivel, clase o rol, y otros jogadores se unan si cumplen os requisitos. prontera,149,164,5 script Cartel de Reclutamiento 4_BOARD3,{ setarray .@jobs,Job_Knight,Job_Priest,Job_Wizard,Job_Blacksmith,Job_Hunter,Job_Assassin,Job_Crusader,Job_Monk,Job_Sage,Job_Rogue,Job_Alchemist,Job_Bard,Job_Dancer,Job_Gunslinger,Job_Ninja,Job_Star_Gladiator,Job_Soul_Linker; if (checkre(0)) setarray .@jobs[getarraysize(.@jobs)],Job_Summoner; mes "Ves un cartel viejo. Alguien lo ha reutilizado para otro propósito..."; mes "Parece usarse para ^EE8800reclutar miembros para grupos^000000 de aventura."; setarray .@roles$,"Dano","Curador","Tank","Soporte"; switch(select("Publicar un anuncio", "Leer los anuncios", "Alejarme")) { case 1: clear; if (!getcharid(1)) { mes "Estoy solo. No tengo party."; close; } if (getcharid(0) != getpartyleader(getcharid(1), 2)) { mes "No soy el líder de mi party. No puedo publicar nada aquí."; close; } .@party_id = getcharid(1); for (.@i = 0; .@i < getarraysize($@party_ids); .@i++) { if ($@party_ids[.@i] == .@party_id) { mes "Já hay un anuncio de mi party aquí. Nada que hacer."; close; } } mes "Penso un poco..."; mes "¿Qué nivel mínimo debería requerir?"; input .@min_level,0,MAX_LEVEL; clear; if (.@min_level > 1) mes "Nivel mínimo : " + .@min_level; else mes "Sin nivel mínimo"; switch(select("Seleccionar roles", "Seleccionar clases", "Cancelar")) { case 1: deletearray .@selected_roles[0], getarraysize(.@roles$); .@accept_all = false; while (1) { .@menu$ = ""; if (.@accept_all) .@menu$ += "^ff0000Desmarcar todos^000000:"; else .@menu$ += "[ ] Cualquier rol^000000:"; for (.@i = 0; .@i < getarraysize(.@roles$); .@i++) { .@menu$ += (.@selected_roles[.@i] ? "^0000FF[+] " : "^808080[ ] ") + .@roles$[.@i] + "^000000:"; } .@menu$ += "Confirmar selección"; .@opt = select(.@menu$); if (.@opt == 1) { .@accept_all = !.@accept_all; if (.@accept_all) { for (.@i = 0; .@i < getarraysize(.@roles$); .@i++) .@selected_roles[.@i] = true; } else { deletearray .@selected_roles[0], getarraysize(.@roles$); } } else if (.@opt == getarraysize(.@roles$) + 2) { .@valid = false; for (.@i = 0; .@i < getarraysize(.@roles$); .@i++) { if (.@selected_roles[.@i]) { .@valid = true; break; } } if (!.@valid) { mes "Necesito seleccionar al menos un rol."; continue; } break; } else { .@index = .@opt - 2; .@selected_roles[.@index] = !.@selected_roles[.@index]; if (.@accept_all && !.@selected_roles[.@index]) .@accept_all = false; } } if (.@accept_all) { .party_filter_type$[.@party_id] = "role"; $@party_filter_values$[.@party_id] = "cualquier"; } else { .@str$ = ""; for (.@i = 0; .@i < getarraysize(.@roles$); .@i++) { if (.@selected_roles[.@i]) { .@str$ += (.@str$ == "" ? "" : ",") + .@roles$[.@i]; } } .party_filter_type$[.@party_id] = "role"; $@party_filter_values$[.@party_id] = .@str$; } mes "Roles confirmados. Anuncio publicado."; .@index = getarraysize($@party_ids); $@party_ids[.@index] = .@party_id; $@party_min_level[.@party_id] = .@min_level; $@party_leader$[.@party_id] = strcharinfo(0); if ($@party_filter_values$[.@target_pid] != "cualquier") .@announce$[.@count++] = replacestr(.@str$, ",", " / "); break; case 2: deletearray .@selected_classes[0], getarraysize(.@jobs); .@accept_all = false; while (1) { .@menu$ = ""; if (.@accept_all) .@menu$ += "^ff0000Desmarcar todas^000000:"; else .@menu$ += "[ ] Cualquier clase^000000:"; for (.@i = 0; .@i < getarraysize(.@jobs); .@i++) { .@menu$ += (.@selected_classes[.@i] ? "^0000FF[+] " : "^808080[ ] ") + jobname(.@jobs[.@i]) + "^000000:"; } .@menu$ += "Confirmar selección"; .@opt2 = select(.@menu$); if (.@opt2 == 1) { .@accept_all = !.@accept_all; if (.@accept_all) { for (.@i = 0; .@i < getarraysize(.@jobs); .@i++) .@selected_classes[.@i] = true; } else { deletearray .@selected_classes[0], getarraysize(.@jobs); } } else if (.@opt2 == getarraysize(.@jobs) + 2) { .@valid2 = false; for (.@i = 0; .@i < getarraysize(.@jobs); .@i++) { if (.@selected_classes[.@i]) { .@valid2 = true; break; } } if (!.@valid2) { mes "Necesito seleccionar al menos una clase."; continue; } break; } else { .@index2 = .@opt2 - 2; .@selected_classes[.@index2] = !.@selected_classes[.@index2]; if (.@accept_all && !.@selected_classes[.@index2]) .@accept_all = false; } } if (.@accept_all) { .party_filter_type$[.@party_id] = "class"; $@party_filter_values$[.@party_id] = "cualquier"; } else { .@str$ = ""; for (.@i = 0; .@i < getarraysize(.@jobs); .@i++) { if (.@selected_classes[.@i]) { .@str$ += (.@str$ == "" ? "" : ",") + .@jobs[.@i]; } } .party_filter_type$[.@party_id] = "class"; $@party_filter_values$[.@party_id] = .@str$; explode(.@class_array$, .@str$, ","); if (getarraysize(.@class_array$) < 4) { for (.@i = 0; .@i < getarraysize(.@class_array$); .@i++) .@class_array$[.@i] = jobname(atoi(.@class_array$[.@i])); .@announce$[.@count++] = implode(.@class_array$, " / "); } else .@announce$[.@count++] = "de ciertas clases"; } mes "Clases confirmadas. Anuncio publicado."; mes "Ahora, a esperar que alguien se una."; .@index = getarraysize($@party_ids); $@party_ids[.@index] = .@party_id; $@party_min_level[.@party_id] = .@min_level; $@party_leader$[.@party_id] = strcharinfo(0); break; case 3: close; } if ($@party_min_level[.@party_id] > 1) .@announce$[.@count++] = "nivel " + $@party_min_level[.@party_id] + "+"; if (.@announce$[0] != "") announce strcharinfo(0) + " está buscando miembros " + implode(.@announce$, " ") + " para su grupo.",0; else announce strcharinfo(0) + " está buscando miembros para su grupo.",0; close; case 2: if (getarraysize($@party_ids) == 0) { mes "El cartel está vacío. Nadie está reclutando ahora."; close; } for (.@i = 0; .@i < getarraysize($@party_ids); .@i++) { .@pid = $@party_ids[.@i]; .@menu$ += "Party de " + $@party_leader$[.@pid] + " (Lv " + $@party_min_level[.@pid] + "+):"; } .@chosen = select(.@menu$) - 1; .@target_pid = $@party_ids[.@chosen]; clear; mes " - Líder: " + $@party_leader$[.@target_pid]; if ($@party_min_level[.@target_pid] > 1) mes " - Nivel requerido: " + $@party_min_level[.@target_pid]; if (.party_filter_type$[.@target_pid] == "role") { mes " - Roles: " + replacestr($@party_filter_values$[.@target_pid], ",", " / "); } else if (.party_filter_type$[.@target_pid] == "class") { if ($@party_filter_values$[.@target_pid] == "cualquier") { mes " - Clasess: Cualquier clase"; } else { explode(.@class_array$, $@party_filter_values$[.@target_pid], ","); .@class_str$ = ""; for (.@i = 0; .@i < getarraysize(.@class_array$); .@i++) { .@class_str$ += (.@class_str$ == "" ? "" : ", ") + jobname(atoi(.@class_array$[.@i])); } mes "Clases: " + .@class_str$; } } else { mes " - Sin restricciones de clase."; } if (BaseLevel < $@party_min_level[.@target_pid]) { mes "Pero... no tengo el nivel suficiente."; close; } if (.party_filter_type$[.@target_pid] == "class") { if ($@party_filter_values$[.@target_pid] != "cualquier") { .@my_class$ = "," + Class + ","; .@allowed$ = "," + $@party_filter_values$[.@target_pid] + ","; if (!compare(.@allowed$, .@my_class$)) { mes "Mi clase no está permitida. Qué lástima."; close; } } } else if (.party_filter_type$[.@target_pid] == "role") { if ($@party_filter_values$[.@target_pid] == "Curador") { if (!(BaseJob == Job_Acolyte || BaseJob == Job_Priest)) { mes "Mi clase no corresponde al rol que esta party necesita."; close; } } } if (getcharid(1)) { mes "Ya pertenezco a una party. No puedo unirme a otra."; close; } mes "Doy un paso al frente, decidido a unirme..."; .@result = party_addmember(.@target_pid, getcharid(0)); if (.@result == 1) mes "Ahora formo parte de esa party."; else if (.@result == -4) mes "El grupo está lleno"; else mes "Algo falló."; close; case 3: close; } OnInit: deletearray $@party_ids[0]; end; } Quote Link to comment Share on other sites More sharing options...
0 Racaae Posted 1 hour ago Group: Members Topic Count: 0 Topics Per Day: 0 Content Count: 243 Reputation: 107 Joined: 06/02/12 Last Seen: 1 minute ago Share Posted 1 hour ago (edited) . Edited 18 minutes ago by Racaae duplicate Quote Link to comment Share on other sites More sharing options...
Question
Josemaaaaa
Como puedo crear un npc que le de la oportunidad de un lider de party invitar jugadores desde el npc.
ejemplo: +30lvl minimo y tambien el job tipo un champ o un hp para heals, arqueros etc... (soporte)
1 npc cartel anunciador de partys, reclutador.
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.