Jump to content

papyrus question


DreusFar

Recommended Posts

For the first question I'm sorry to say that I don't know as I haven't come to dialogue boxes yet.

I'm stuck at the quest dialogues... :(

And the dialogue bug...

 

For the second one.

Seeing I haven't worked with these things I'm just taking a wild guess.

You need to play around with "Conditions"

If this isn't the messages you're using, which ones are you using?

 

And you might also have to extend your script even further to cope with those conditional items.

 

Please see screenshot for reference.

Edited by Plastrader
Link to comment
Share on other sites

The first problem is solved by splitting your message in two. Delete the five last entries of the first message, then add an option named "Next". Create a new message with the five options you removed and an option named "Previous". After that, open your script and make it look something like this:

 

 

 

Scriptname PoteriRaziali extends ObjectReference  

SPELL Property pPowerBretonAbsorbSpell  Auto  
SPELL Property pRaceOrcBerserk  Auto  
SPELL Property pPowerArgonianHistskin  Auto  
SPELL Property pPowerDarkElfFlameCloak  Auto  
SPELL Property pPowerHighElfMagickaRegen  Auto  
SPELL Property pPowerImperialPacify  Auto  
SPELL Property pPowerKhajiitNightEye  Auto  
SPELL Property pPowerNordBattleCry  Auto  
SPELL Property pPowerRedguardStaminaRegen  Auto  
SPELL Property pPowerWoodElfCommandAnimal  Auto  

Message Property ChoiceMessage01 auto
Message Property ChoiceMessage02 auto
Message Property Rimozione  Auto  


int count = 0

Event OnEquipped(Actor reader)

if (count < 4)

	Choice01()

       elseif (count >= 4)
	int unchoice = Rimozione.show()

               if (unchoice == 0)
                       ; do nothing

               elseif (unchoice == 1)
                       ; Assorbi incantesimo
                       Game.GetPlayer().RemoveSpell(pPowerBretonAbsorbSpell)
                       count = count - 1

               elseif (unchoice == 2)
                       ; Berserk
                       Game.GetPlayer().RemoveSpell(pRaceOrcBerserk)
                       count = count - 1

               elseif (unchoice == 3)
                       ; Pelle di Hist
                       Game.GetPlayer().RemoveSpell(pPowerArgonianHistskin)
                       count = count - 1

               elseif (unchoice == 4)
                       ; Manto infuocato
                       Game.GetPlayer().RemoveSpell(pPowerDarkElfFlameCloak)
                       count = count - 1

               elseif (unchoice == 5)
                       ; Nobile di nascita
                       Game.GetPlayer().RemoveSpell(pPowerHighElfMagickaRegen)
                       count = count - 1

               elseif (unchoice == 6)
                       ; Voce dell'imperatore
                       Game.GetPlayer().RemoveSpell(pPowerImperialPacify)
                       count = count - 1

               elseif (unchoice == 7)
                       ; Occhio notturno
                       Game.GetPlayer().RemoveSpell(pPowerKhajiitNightEye)
                       count = count - 1

               elseif (unchoice == 8)
                       ; Grido di battaglia
                       Game.GetPlayer().RemoveSpell(pPowerNordBattleCry)
                       count = count - 1

               elseif (unchoice == 9)
                       ; Scatto di adrenalina
                       Game.GetPlayer().RemoveSpell(pPowerRedguardStaminaRegen)
                       count = count - 1

               elseif (unchoice == 10)
                       ; Comanda animale
                       Game.GetPlayer().RemoveSpell(pPowerWoodElfCommandAnimal)
                       count = count - 1

               endif

       endif
EndEvent

Function Choice01()
int choice = ChoiceMessage01.show()

if (choice == 0)
		; do nothing

elseif (choice == 1)
		; Assorbi incantesimo
		Game.GetPlayer().AddSpell(pPowerBretonAbsorbSpell)
		count = count + 1

elseif (choice == 2)
		; Berserk
		Game.GetPlayer().AddSpell(pRaceOrcBerserk)
		count = count + 1

elseif (choice == 3)
		; Pelle di Hist
		Game.GetPlayer().AddSpell(pPowerArgonianHistskin)
		count = count + 1

elseif (choice == 4)
		; Manto infuocato
		Game.GetPlayer().AddSpell(pPowerDarkElfFlameCloak)
		count = count + 1

elseif (choice == 5)
		; Nobile di nascita
		Game.GetPlayer().AddSpell(pPowerHighElfMagickaRegen)
		count = count + 1

elseif (choice == 6)
	Choice02()
endIf
endFunction


Function Choice02()
int choice = ChoiceMessage02.show()

if(choice == 0)

elseif(choice == 1
	Game.GetPlayer().AddSpell(pPowerImperialPacify)
	count = count + 1

elseif (choice == 2)
		; Occhio notturno
		Game.GetPlayer().AddSpell(pPowerKhajiitNightEye)
		count = count + 1

elseif (choice == 3)
		; Grido di battaglia
		Game.GetPlayer().AddSpell(pPowerNordBattleCry)
		count = count + 1

elseif (choice == 4)
		; Scatto di adrenalina
		Game.GetPlayer().AddSpell(pPowerRedguardStaminaRegen)
		count = count + 1

elseif (choice == 5)
		; Comanda animale
		Game.GetPlayer().AddSpell(pPowerWoodElfCommandAnimal)
		count = count + 1
elseif (choice == 6)
	Choice01()

endif
endFunction

 

 

 

Split up the Unchoice in the same manner.

Edited by Sjogga
Link to comment
Share on other sites

yes that was the right way. I used an if (game.getplayer().hasspell(SPELL)) after every removal so if the player doesn't have the spell papyrus doesn't do "count=count - 1".

 

Scriptname ScriptPoteriRaziali extends ObjectReference  

SPELL Property pPowerBretonAbsorbSpell  Auto  
SPELL Property pRaceOrcBerserk  Auto  
SPELL Property pPowerArgonianHistskin  Auto  
SPELL Property pPowerDarkElfFlameCloak  Auto  
SPELL Property pPowerHighElfMagickaRegen  Auto  
SPELL Property pPowerImperialPacify  Auto  
SPELL Property pPowerKhajiitNightEye  Auto  
SPELL Property pPowerNordBattleCry  Auto  
SPELL Property pPowerRedguardStaminaRegen  Auto  
SPELL Property pPowerWoodElfCommandAnimal  Auto  

Message Property ChoiceMessage01  Auto  
Message Property ChoiceMessage02  Auto  
Message Property UnchoiceMessage01  Auto  
Message Property UnchoiceMessage02  Auto  
int count = 0


Function Choice01()
int choice=ChoiceMessage01.show()

if (choice==0)
	;do nothing

elseif (choice==1)
	Game.GetPlayer().AddSpell(pPowerBretonAbsorbSpell)
	count = count+1

elseif (choice==2)
	Game.GetPlayer().AddSpell(pRaceOrcBerserk)
	count = count+1

elseif (choice==3)
	Game.GetPlayer().AddSpell(pPowerArgonianHistskin)
	count=count+1

elseif (choice==4)
	Game.GetPlayer().AddSpell(pPowerDarkElfFlameCloak)
	count=count+1

elseif (choice==5)
	Game.GetPlayer().AddSpell(pPowerHighElfMagickaRegen)
	count=count+1

elseif (choice==6)
	Choice02()
endif
endFunction

Function Choice02()
int choice=ChoiceMessage02.show()

if (choice==0)
	Choice01()

elseif (choice ==1)
	Game.GetPlayer().AddSpell(pPowerImperialPacify)
	count=count+1

elseif (choice ==2)
	Game.GetPlayer().AddSpell(pPowerKhajiitNightEye)
	count=count+1

elseif(choice==3)
	Game.GetPlayer().AddSpell(pPowerNordBattleCry)
	count=count+1

elseif(choice==4)
	Game.GetPlayer().AddSpell(pPowerRedguardStaminaRegen)
	count=count+1

elseif(choice==5)
	Game.GetPlayer().AddSpell(pPowerWoodElfCommandAnimal)
	count=count+1

endif
endFunction

Function Unchoice01()
int unchoice=UnchoiceMessage01.show()

if (unchoice==0)
	;do nothing

elseif (unchoice==1)
	if (Game.GetPlayer().HasSpell(pPowerBretonAbsorbSpell))
		Game.GetPlayer().RemoveSpell(pPowerBretonAbsorbSpell)
		count = count - 1
	endif

elseif (unchoice==2)
	if (Game.GetPlayer().HasSpell(pRaceOrcBerserk))
		Game.GetPlayer().RemoveSpell(pRaceOrcBerserk)
		count = count - 1
	endif

elseif (unchoice==3)
	if (Game.GetPlayer().HasSpell(pPowerArgonianHistskin))
		Game.GetPlayer().RemoveSpell(pPowerArgonianHistskin)
		count= count - 1
	endif

elseif (unchoice==4)
	if (Game.GetPlayer().HasSpell(pPowerDarkElfFlameCloak))
		Game.GetPlayer().RemoveSpell(pPowerDarkElfFlameCloak)
		count=count - 1
	endif

elseif (unchoice==5)
	if (Game.GetPlayer().HasSpell(pPowerHighElfMagickaRegen))
		Game.GetPlayer().RemoveSpell(pPowerHighElfMagickaRegen)
		count=count - 1
	endif

elseif (unchoice==6)
	Unchoice02()
endif
endFunction

Function Unchoice02()
int unchoice=UnchoiceMessage02.show()

if (unchoice==0)
	Unchoice01()

elseif (unchoice==1)
	if (Game.GetPlayer().HasSpell(pPowerImperialPacify))
		Game.GetPlayer().RemoveSpell(pPowerImperialPacify)
		count = count - 1
	endif

elseif (unchoice==2)
	if (Game.GetPlayer().HasSpell(pPowerKhajiitNightEye))
		Game.GetPlayer().RemoveSpell(pPowerKhajiitNightEye)
		count = count - 1
	endif

elseif (unchoice==3)
	if (Game.GetPlayer().HasSpell(pPowerNordBattleCry))
		Game.GetPlayer().RemoveSpell(pPowerNordBattleCry)
		count=count - 1
	endif

elseif (unchoice==4)
	if (Game.GetPlayer().HasSpell(pPowerRedguardStaminaRegen))
		Game.GetPlayer().RemoveSpell(pPowerRedguardStaminaRegen)
		count=count - 1
	endif

elseif (unchoice==5)
	if (Game.GetPlayer().HasSpell(pPowerWoodElfCommandAnimal))
		Game.GetPlayer().RemoveSpell(pPowerWoodElfCommandAnimal)
		count=count - 1
	endif

endif
endFunction

Event OnEquipped(Actor reader)        
if (count < 4)                
	Choice01() 

elseif (count >= 4)              
	Unchoice01()

endif
EndEvent

 

 

I managed to do even the rest splitting the messages.

So I've finished thank you to all of you for helping me

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...