Mounts/Pets permanent machen?

08/23/2015 21:12 JiiT4ck#1
Guten Abend liebe EPVP-Community! :)

Würdet ihr mir sagen, wie ich Reittiere/Pets permanent mache?
Ich möchte nicht das die Reittiere/Pets nach einer Gewissen Zeit ablaufen.

Vielleicht wisst ihr ja eine Lösung dafür :)
08/23/2015 22:07 Sogma#2
Mounts:

In der DB wie folgt einstellen
Type: 18
SubType: 0
Antiflag: 33042
WearFlag: 0

Dann mit dieser Quest rufen:
Code:
 
quest reittier begin
	state start begin 
		when SIEGEL_VNUM.use with pc.is_mount() begin		 
				pc.mount(0)
                end
                when SIEGEL_VNUM.use begin 
			affect.remove_collect()           
			pc.mount(MOUNT_VNUM)
			pc.mount_bonus(apply.EXP_DOUBLE_BONUS,20)
			pc.mount_bonus(apply.ATT_GRADE_BONUS,50)
                end
         end
end

Bei den Pets habe ich keine Ahnung.
08/23/2015 22:46 JiiT4ck#3
Danke dir!
Ich werde es gleich einmal ausprobieren :)

Kann man in der Quest gleich mehrere SIEGEL_VNUM eintragen?

Könnte man die Siegel dann auch noch Account gebunden machen? :)
08/23/2015 23:24 [iControL]#4
Quote:
Originally Posted by JiiT4ck View Post
Danke dir!
Ich werde es gleich einmal ausprobieren :)

Kann man in der Quest gleich mehrere SIEGEL_VNUM eintragen?

Könnte man die Siegel dann auch noch Account gebunden machen? :)
Was verstehst du unter Account gebunden, damit man sie nicht weiter Handeln kann ?
08/23/2015 23:42 JiiT4ck#5
Quote:
Was verstehst du unter Account gebunden, damit man sie nicht weiter Handeln kann ?
Ja genau :)
Am besten sollte man sie auch nicht fallen lassen können!
08/23/2015 23:50 Sogma#6
Quote:
Originally Posted by JiiT4ck View Post
Ja genau :)
Am besten sollte man sie auch nicht fallen lassen können!
Dann musst du in der Datenbank bei Antiflag die richtige Nummer eintragen.

Für mehrere Mounts musst du den State halt kopieren und die anderen Vnums einfügen

Beispiel für das Absitzen vom Mount:
Code:
when SIEGEL_VNUM1.use or SIEGEL_VNUM2.use or SIEGEL_VNUM3.use [...] with pc.is_mount() begin
Mehrere Mounts definieren:
Code:
		when 71114.use begin 
			affect.remove_collect()           
			pc.mount(20110,28800)
			pc.mount_bonus(apply.EXP_DOUBLE_BONUS,20,28800)
			pc.mount_bonus(apply.ATT_GRADE_BONUS,50,28800) 
		end     
		when 71115.use begin 
			affect.remove_collect()           
			pc.mount(20110,28800)
			pc.mount_bonus(apply.EXP_DOUBLE_BONUS,20,28800)
			pc.mount_bonus(apply.ATT_GRADE_BONUS,50,28800) 
		end   
		when 71116.use begin 
			affect.remove_collect()           
			pc.mount(20111)
			pc.mount_bonus(apply.EXP_DOUBLE_BONUS,20)
			pc.mount_bonus(apply.ATT_GRADE_BONUS,50) 
		end
08/24/2015 09:40 JiiT4ck#7
Danke, hat alles geklappt!

#close
08/24/2015 10:01 rollback#8
Musst nicht für jedes Mount einen neuen Trigger machen:

Code:
quest mounts begin
	state start begin
		when 71114.use or 71115.use or 71116.use begin
			local mountData = ({
				[71114] = {
					vnum = 20110,
					duration = 28800,
					bonus = {
						{apply.EXP_DOUBLE_BONUS, 20},
						{apply.ATT_GRADE_BONUS, 50}
					}
				},
				[71115] = {
					vnum = 20110,
					duration = 28800,
					bonus = {
						{apply.EXP_DOUBLE_BONUS, 20},
						{apply.ATT_GRADE_BONUS, 50}
					}
				},
				[71116] = {
					vnum = 20111,
					bonus = {
						{apply.EXP_DOUBLE_BONUS, 20},
						{apply.ATT_GRADE_BONUS, 50}
					}
				}
			})[item.get_vnum()]
			
			if not mountData then
				syschat("Ein Fehler ist aufgetreten, bitte einem Teamler melden.")
				return
			end
			
			pc.mount(mountData.vnum, mountData.duration or nil)
			
			if type(mountData.bonus) == "table" then
				for _,v in ipairs(mountData.bonus) do
					pc.mount_bonus(v[1], v[2], mountData.duration or nil)
				end
			end
		end
	end
end
08/24/2015 12:49 JiiT4ck#9
Danke dir Sensi :)