Scripting (Notas y pequeños tutoriales)

Ir abajo

Scripting (Notas y pequeños tutoriales)

Mensaje por Zuna Stormcloak el Mar Nov 13, 2012 3:38 pm

Este post lo pongo para notas de scripts y ese tipo de cosas, escribire un script y lo que significa, mas que nada para ayudar un poco a todos en las quests y scripts que necesiten hacer.
El nuevo sistema de scripting de Skyrim se basa en un nuevo lenguaje, Papyrus. Yo ire poniendo scripts y los lugares donde se suelen poner. Ire editando el post poniendo nuevos scripts y nuevas notas. Por supuesto este post estara abierto para que si quereis poner algun script que hayais descubierto y nadie haya puesto lo digais y yo edite este mensaje y lo ponga tambien. Creo que nadie ha hecho esto en español, asi que sera una gran fuente cuando tengamos bastantes scripts. Empiezo poniendo algunos que se:


GetOwningQuest().SetObjectiveDisplayed(stage)
Esto se pone en las quest. Un npc o cualquier cosa te dara una quest con un dialogo, pues este script es el que aciva dicha quest. stage es igual al numero de stage, por ejemplo, una quest se divide en stages, ahi tendremos que poner el stage 10 normalmente, que es el que suele activar la quest. GetOwningQuest significa que se activa la mision para el jugador. SetObjectiveDisplayed significa que el objetivo ha aparecido. Ejemplo: GetOwningQuest().SetObjectiveDisplayed(10)
Lo pondriamos normalmente en el dialogo en esta parte de aqui:




____________________________________________________________

GetOwningQuest().SetStage(stage)
Lo mismo que el anterior, solo que el anterior activaba toda la mision desde un stage, este activa solo ese stage. Ejemplo:
GetOwningQuest().SetStage(10)
Se pone en el mismo lugar que el anterior, y seguido de el anterior, tal que quede asi:

GetOwningQuest().SetObjectiveDisplayed(10)
GetOwningQuest().SetStage(10)


____________________________________________________________

SetObjectiveDisplayed(stage)
Esto no se pone en el dialogo, si no cuando ponemos el Papyrus Fragment en un stage. Simplemente hace que se active el stage entre parentesis. Ejemplo: SetObjectiveDisplayed(10)
Se pone aqui:



____________________________________________________________

SetObjectiveCompleted(stage)
Lo mismo que el anterior, pero en vez de activarlo lo completa. Ejemplo: SetObjectiveDisplayed(10)
Se pone de modo que quede asi debajo del anterior (ejemplo):
SetObjectiveCompleted(10)
SetObjectiveDisplayed(20)

NOTA: los stages que he puesto (10 y 20) son solo ejemplos, puede haber cualquier numero. Esto es solo cuestion de entenderlo.

____________________________________________________________

Alias_nombredealias.GetReference().AddItem(Alias_nombredeobjetoalias.GetReference())
Este es algo mas complicado, voy a tratar de explicarlo completamente. Para esto necesitamos dos alias, uno de un NPC y otro de un objeto. Nosotros llevamos un objeto de mision al tio que nos dio la mision para devolverle el objeto y acabar nuestra mision. nombredealias=el nombre de el alias npc que hemos creado. nombredeobjetoalias=el nombre del objeto alias que hemos creado. Entonces la cosa seria: Alias_nombredealias menciona a el alias npc. .GetReference()AddItem(Alias_nombredeobjetoalias.GetReference()) Añadiria a nombredealias el objeto (additem) nombredeobjetoalias. Espero que se entienda bien, ya que es algo complicado. Por eso trato de hacerlo con colores. Esto se pondria en el mismo lugar que los anteriores. Por ejemplo, si queremos finalizar una quest que haga por ejemplo conseguir un amuleto llamado Amuleto de Snow que nos lo ha pedido el NPC llamado Cold el script quedaria asi, junto con los otros anteriores que he puesto poniendolo en el ultimo stage y marcando el complete quest:

Alias_Cold.GetReference().AddItem(Alias_AmuletodeSnow.GetReference())
SetObjectiveCompleted(30)


NOTA: el numero 30 es el stage en el que acabaria la mision de ejemplo, la tuya puede acabar en el ultimo stage que hayas puesto.

____________________________________________________________

Game.GetPlayer().AddItem(objeto, cantidad)
Este es muy simple, tambien se colocaria en el mismo lugar que los otros. Game.GetPlayer().AddItem el juego le da al jugador el objeto que pondriamos entre parentesis. Podemos poner por ejemplo en objeto diamond y cantidad 3 y tras terminar la mision nos daria tres diamantes. Ahora, la cosa es que hay que crear una nueva property en el script de la mision, cosa que explicare en otro tutorial, para hacer que el objeto funcione. Ejemplo:

Game.GetPlayer().AddItem(Gold001, 500)

Da al jugador 500 de Gold001 (oro)

___________________________________________________

Scriptname CWE03BootsScriptName extends ObjectReference

Quest Property CWE03Name Auto

Armor Property boots Auto

Event OnEquipped
(Actor player)
if
player == Game.GetPlayer()
if
CWE03Name.isrunning()
endif

CWE03Name.SetStage(30)
endIf
endEvent

Este le acabo de hacer, aun tengo que probar si funciona, pero yo creo que si.
CWE03BootsScriptName es el nombre que le he puesto al script.
ObjectReference como veis el script esta sobre un objeto, en mi caso sobre unas botas.
CWE03Name Arriba en Quest Property simplemente nombra a la property que le he puesto que se llama CWE03Name y que va relaccionada con el ID de mi quest, CWE03. Abajo antes del endIf dice que la quest se pondra en stage 30 si ocurre lo anterior en el if. Y un poco antes de eso, donde pone IsRunning dice que si la mision esta funcionando ocurrira X cosa.
Event OnEquipped(Actor player) Ahi dice que el actor en el evento sera el jugador.
En fin, que este script dice algo como asi:
Primero nombra dos property, Quest Property y Armor Property por que estan metidas dentro del script.
En el evento de equipar las botas, siempre que sea el actor
player. Si player equipa las botas y si la mision CWE03Name esta funcionando, CWE03Name se pondra en el stage 30. Termina el evento.


__________________________________________________

PD: Si quereis podeis ir poniendo los que sepais scripts en los comentarios como ya os dije. Ahora, si teneis alguna duda, podeis siempre mandarme un mp aqui al foro, por mi twitter (ZunaSW) o por Youtube (JSRFcube). Por hoy ya esta, quizas mañana pueda poner alguno mas, es mas, tengo aqui un monton de hojas con cosas de estas xDDD Si, lo apunto en mi cuadernito de mods ¿algun problema? xDD nah. Tengo un monton y os los ire poniendo. Espero que valoreis esto que hago, ya que lo hago por que me gusta hacerlo y sobretodo compartir mis conocimientos sobre el tema.

_________________
"I fight for the men I've held in my arms, dying on foreign soil. I fight for their wives and children, who's names I heard whispered in their last breaths. I fight for we few who did come home, only to find our country full of strangers wearing familiar faces. I fight for my people impoverished to pay the debts of on Empire too weak to rule them, yet brands them criminals for wanting to rule themselves! I fight so that all the fighting I've already done hasn't been for nothing. I fight... because I must." --- Ulfric Stormcloak



avatar
Zuna Stormcloak
General Capa de la Tormenta
General Capa de la Tormenta

Mensajes : 146
Fecha de inscripción : 20/02/2012
Edad : 21
Localización : Ventalia

Ver perfil de usuario https://www.youtube.com/user/JSRFcube

Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.