Hola.
El script que pides es algo muy básico que (en mi humilde opinión) realmente deberías conocer antes siquiera de plantearte abrir un servidor. No obstante, soy consciente de que todos hemos empezado servidores sin ningún tipo de conocimiento específico, por lo que en vez de convertir este mensaje en una regañina, te voy a ofrecer la ayuda.
Existe desde hace tiempo una serie de guías básicas de scripting que pueden ayudarte como
estos vídeos de M45T3R o las
guías de scripting básico de Rokimoki (muy viejas y en la que se han perdido los caracteres especiales del español pero aún 99% válidas), aunque también deberías considerar el uso de la guía "oficial" (en inglés), incluida en cada descarga completa del emulador y situada en
doc/script_commands.txt. De hecho, la petición de NPC que has hecho se cubre totalmente con el capítulo 1 de la guía de Rokimoki.
El siguiente NPC se trata de un NPC genérico que resuelve tu problema de forma básica. Recuerda sustituir los parámetros entre los signos <> por lo que tú quieras o necesites y las indicaciones de tabulaciones (marcadas con <%TAB%>

por un espacio de
tabulación (es
obligatorio para su funcionamiento).
<mapa>,<x>,<y>,<dir><%TAB%>script<%TAB%><nombreNPC><%TAB%><sprite>,{ if (#objetodado == 0) { // El valor de una variable que no ha sido previamente asignado es 0 mes "Hola, bienvenido."; mes "Te he dado un objeto como regalo de bienvenida."; getitem <ID_ITEM>,<CANTIDAD>; #objetodado = 1; // #objetodado tiene prefijo #, que es variable de cuenta, al ser 1 el NPC ya usará el else en vez de esta rama y no dará un objeto. close; // Cierre del diálogo } // Fin if else { // Si la cuenta ya tiene el objeto del NPC, #objetodado será distinto de 0 mes "Hola."; mes "Ya te dí un objeto, no te puedo dar más objetos."; close; }}
Consejos:
- Puedes obtener el mapa y las coordenadas x,y del NPC cuando quieras usando /where desde el cliente.
- Una dirección de 4 o 5 suele orientar el NPC para que mire hacia abajo, mira la documentación para saber el resto de direcciones si quieres que el NPC mire hacia otro lado.
- ¡Evita que el nombre del NPC supere los 23 caracteres!
- Generalmente te conviene usar la ID de sprite de un NPC para que haya compatibilidad con versiones anteriores de los emuladores, aunque en las últimas versiones de Hercules también puedes usar las constantes de sus nombres. Puedes usar gran parte de los sprites de NPC que aparecen catalogados en la página de @Ai4rei aquí:
http://nn.nachtwolke.com/dev/npclist/
[*]¡Que no se te olvide sustituir la item ID y la cantidad que quieres entregar! Si quieres entregar más de un objeto diferente, añade más comandos getitem con su ID y cantidad.
[*]La variable utilizada en este NPC debe ser única. Es decir, ningún otro NPC debe estar utilizándola. Comprúebalo. En ocasiones te interesa que una misma variable sea manejada por más de un NPC, pero no es así en este caso.
Espero haberte ayudado al menos un poco. Para próximas peticiones tuyas de NPC si son muy básicas no te daré el código completo sino que trataré de ayudarte a que seas tu mismo quien lo construya y así aprendas.
Un saludo.