[SERVICE] Die Questerstellung

09/20/2015 19:22 slipknot009#3151
Guten Tag

Könnten sie mir eine quest erstellen für den NPC Vnum 20095 wo man seine rüstung auf diesen Npc draufziehen kann und dieser NPC den fragt : Möchtest du diese Rüstung Tauschen gegen Diese Neue ? sodas wenn man es möchte seine Rüstung eintauschen kann gegen eine andere am NPC

Vnums die man Drauf ziehen kann 20009 > tauschen zu 42279
20259 > tauschen zu 44279
20759 > tauschen zu 46279
20509 > tauschen zu 48279


Das währe mega Lieb wenn sie mir diese Quest erstellen könnten
09/21/2015 08:52 .Various#3152
Quote:
Originally Posted by ☭ P▼SHKO View Post
Nope kann die pets mit anderen Siegeln wegschicken. zB Feuerphönix mit Eisphönix-Siegel und die Bonis vom Feuerphönix bleiben dann auch.
Dann liegt das aber nicht an der Quest, da dort wie gesagt die Abfragen vorhanden sind.

Quote:
Originally Posted by slipknot009 View Post
Guten Tag

Könnten sie mir eine quest erstellen für den NPC Vnum 20095 wo man seine rüstung auf diesen Npc draufziehen kann und dieser NPC den fragt : Möchtest du diese Rüstung Tauschen gegen Diese Neue ? sodas wenn man es möchte seine Rüstung eintauschen kann gegen eine andere am NPC

Vnums die man Drauf ziehen kann 20009 > tauschen zu 42279
20259 > tauschen zu 44279
20759 > tauschen zu 46279
20509 > tauschen zu 48279


Das währe mega Lieb wenn sie mir diese Quest erstellen könnten
Code:
-- 20009 > tauschen zu 42279
-- 20259 > tauschen zu 44279
-- 20759 > tauschen zu 46279
-- 20509 > tauschen zu 48279

quest change_armor begin
	state start begin
		when 20095.take begin
			say_size(350,400)
			say_title("Rüstungen tauschen:")
			local id = item.get_vnum()
			if id != 20009 and id != 20259 and id != 20759 and id != 20509 then
				say("Du kannst dieses Item nicht eintauschen")
				return
			end
			local armors = {
							old = {20009,20259,20759,20509},
							new = {42279,44279,46279,48279}
						   }
			local itempos
			for col = 0, table.getn(armors.old) do
				if armors.old[col] == id then
					itempos = col
					break
				else
					itempos = -1
				end
			end
			if itempos == -1 then
				say("Du kannst dieses Item nicht eintauschen")
				return
			end
			say("Du willst also folgende Rüstungen tauschen?")
			say_item_vnum(id)
			say_item_vnum(armors.new[itempos])
			say("[ENTER][ENTER][ENTER][ENTER]")
			if select("Ja", "Nein") == 2 then return end
			item.remove()
			pc.give_item2(armors.new[itempos])
		end
	end
end
Wichtig hierbei ist die Reihenfolge der Items. Also die Positionen in der Tabelle - Kleines Beispiel:
Du willst noch Item 19 gegen 29 tauschen lassen:
Code:
old = {20009,20259,20759,20509,19},
new = {42279,44279,46279,48279,29}
Die Indizes müssen dabei bei den Items gleich sein.
Falsch wäre:
Code:
old = {20009,20259,20759,20509,19},
new = {42279,44279,19,46279,48279}
MfG, .Various
09/21/2015 11:16 rollback#3153
Quote:
Originally Posted by .Various View Post
Wichtig hierbei ist die Reihenfolge der Items. Also die Positionen in der Tabelle - Kleines Beispiel:
Du willst noch Item 19 gegen 29 tauschen lassen:
Code:
old = {20009,20259,20759,20509,19},
new = {42279,44279,46279,48279,29}
Die Indizes müssen dabei bei den Items gleich sein.
Falsch wäre:
Code:
old = {20009,20259,20759,20509,19},
new = {42279,44279,19,46279,48279}
MfG, .Various
Ich würde mir die Sache mit den zwei Tables sparen, dann brauchst du auch keine Schleife mehr die den Index raussucht etc ...

Habe noch eine kleine Sicherheitsüberprüfung reingemacht:
Code:
-- 20009 > tauschen zu 42279
-- 20259 > tauschen zu 44279
-- 20759 > tauschen zu 46279
-- 20509 > tauschen zu 48279

quest change_armor begin
	state start begin
		when 20095.take begin
			local vnum = item.get_vnum()
			local cell = item.get_cell()
			
			local exchangeVnum = ({
				[20009] = 42279,
				[20259] = 44279,
				[20759] = 46279,
				[20509] = 48279
			})[vnum]
			
			say_size(350,400)
			say_title("Rüstungen tauschen:")
			
			if not exchangeVnum then
				say("Du kannst dieses Item nicht eintauschen")
				return
			end
			
			say("Du willst also folgende Rüstungen tauschen?")
			say_item_vnum(vnum)
			say_item_vnum(exchangeVnum)
			say("[ENTER][ENTER][ENTER][ENTER]")
			if select("Ja", "Nein") == 2 then return end
			
			--Itemcheck
			if item.get_cell() ~= cell or item.get_vnum() ~= vnum then
				syschat("Item verändert, Abbruch")
				return
			end
			
			item.remove()
			pc.give_item2(exchangeVnum)
		end
	end
end
09/21/2015 21:34 ​Ninja#3154
Quote:
Originally Posted by Seחsi View Post
Ich würde mir die Sache mit den zwei Tables sparen, dann brauchst du auch keine Schleife mehr die den Index raussucht etc ...

Habe noch eine kleine Sicherheitsüberprüfung reingemacht:
Code:
-- 20009 > tauschen zu 42279
-- 20259 > tauschen zu 44279
-- 20759 > tauschen zu 46279
-- 20509 > tauschen zu 48279

quest change_armor begin
	state start begin
		when 20095.take begin
			local vnum = item.get_vnum()
			local cell = item.get_cell()
			
			local exchangeVnum = ({
				[20009] = 42279,
				[20259] = 44279,
				[20759] = 46279,
				[20509] = 48279
			})[vnum]
			
			say_size(350,400)
			say_title("Rüstungen tauschen:")
			
			if not exchangeVnum then
				say("Du kannst dieses Item nicht eintauschen")
				return
			end
			
			say("Du willst also folgende Rüstungen tauschen?")
			say_item_vnum(vnum)
			say_item_vnum(exchangeVnum)
			say("[ENTER][ENTER][ENTER][ENTER]")
			if select("Ja", "Nein") == 2 then return end
			
			--Itemcheck
			if item.get_cell() ~= cell or item.get_vnum() ~= vnum then
				syschat("Item verändert, Abbruch")
				return
			end
			
			item.remove()
			pc.give_item2(exchangeVnum)
		end
	end
end
These checks are quite useless.
You better check if the item still has the same owner or check if the player did a trade in the last 10 seconds with the function pc.can_warp
09/21/2015 22:21 rollback#3155
Quote:
Originally Posted by ​Ninja View Post
These checks are quite useless.
You better check if the item still has the same owner or check if the player did a trade in the last 10 seconds with the function pc.can_warp
You can't get the exact item id (the one shown in the item table in sql) via quest, so you can't check if the item has still the same owner.

When the player rightclicks an item the item will be selected for alle item.-Methods. If the item vnum or inventory cell changed from beginning to end the item das been changed and item.remove() would remove the wrong item, as long as the vnum and socket is the same you can be pretty sure that the item wasn't changed.
09/22/2015 15:22 ​Ninja#3156
Quote:
Originally Posted by Seחsi View Post
You can't get the exact item id (the one shown in the item table in sql) via quest, so you can't check if the item has still the same owner.

When the player rightclicks an item the item will be selected for alle item.-Methods. If the item vnum or inventory cell changed from beginning to end the item das been changed and item.remove() would remove the wrong item, as long as the vnum and socket is the same you can be pretty sure that the item wasn't changed.
What are you talking about?

Take a look on the remove function and you'll see that it doesn't use the cell to remove it.
It uses the item instance for removing it.

[Only registered and activated users can see links. Click Here To Register...]

Everything will be the same if you trade or remove an item.
Just the owner id and the cell of the inventory will change.
Sockets, vnum etc will be the same.
And sure you can get the owner id in a quest.
But it takes some time to update the database so it probably wouldn't work correctly.
But if you're working with the source you can return a boolean, a number or something else to make the quest recognize that the removing wasn't successfully.
09/22/2015 15:25 rollback#3157
Quote:
Originally Posted by ​Ninja View Post
What are you talking about?

Take a look on the remove function and you'll see that it doesn't use the cell to remove it.
It uses the item instance for removing it.

[Only registered and activated users can see links. Click Here To Register...]

Everything will be the same if you trade or remove an item.
Just the owner id and the cell of the inventory will change.
Sockets, vnum etc will be the same.
And sure you can get the owner id in a quest.
But it takes some time to update the database so it probably wouldn't work correctly.
But if you're working with the source you can return a boolean, a number or something else to make the quest recognize that the removing wasn't successfully.
didnt know that, okay. but still the checks aren't useless because the player could use another item while the questwindow is opened and with this the current selected item would change and item.remove() would remove the wrong item from his inventory.
09/22/2015 15:29 ​Ninja#3158
Quote:
Originally Posted by Seחsi View Post
didnt know that, okay. but still the checks aren't useless because the player could use another item while the questwindow is opened and with this the current selected item would change and item.remove() would remove the wrong item from his inventory.
The old item would still be selected in the quest dialog.
If he uses a new item he would probably get a new dialog.
09/24/2015 21:08 シスイ#3159
Bräuchte eine Hochzeitankündigung!
So dass wenn 2 heiraten, dass es Angekündigt wird.
09/24/2015 21:39 I´m Raylee#3160
Ich würde bitte eine Goldbarren Quest benötigen, sprich ich klicke auf die Items
8003, 8004, 8005, 8006, 8007 und erhalte jeweils denn Betrag der Items! :)

Beispiel:

Vnum: 80003
Yang: 5000000Yang

Vnum: 80004
Yang: 10000000

Vnum: 80005
Yang: 20000000

Vnum: 80006
Yang: 40000000

Vnum: 80007
Yang: 80000000

Ich würde mich freuen wenn jemand so nett wäre und mir die Quest erstellen würde! :)
Danke! :)
09/24/2015 21:40 HazeSyndrom#3161
Guten Abend EPvP.
Ich wollte fragen, ob mir jemand eine Quest machen könnte, in der die Ip beim Ox event gecheckt wird. Also das man pro IP-Adresse nur 1x in den Ox rein kann. Wäre echt nett wenn jemand eine hat, eine erstellen könnte oder in folgend quest die funktion einbauen könnte. MfG HazeSyndrom
PHP Code:
quest oxevent_manager begin
    state start begin
        when 20011.chat
."OX Event" begin

            
if game.get_event_flag("oxevent_status") == 0 then
                say
("[COLOR r;0.1|g;1|b;0.1]OX - Event:")
                
say("")
                
say("[COLOR r;1|g;0.1|b;0.1]Das OX-Event ist nicht gestartet")
                
say(""
                
say("")
            elseif 
game.get_event_flag("oxevent_status") == and pc.level >= 50 then
                say
("[COLOR r;0.1|g;1|b;0.1]OX - Event:")
                
say("")
                
say("[COLOR r;1|g;0.1|b;0.1]Willst du beim OX-Event mitmachen?")
                
say("[COLOR r;1|g;0.1|b;0.1]Möchtest du Dabei sein?")
                
say("")

                
local s select("Ja""Zuschauen""Close")

                if 
== 1 then
                    say
("Tele dich..")
                    
say("")

                    
wait()

                    
pc.warp(89650024600)
                elseif 
== 2 then
                    say
("[COLOR r;0.1|g;1|b;0.1]OX - Event:")
                    
say("")
                    
say("[COLOR r;1|g;0.1|b;0.1]Du willst nur zuschauen?")
                    
say("[COLOR r;1|g;0.1|b;0.1]Ich werde dich Teleportieren.")
                    
say("")

                    
wait()

                    
pc.warp(89630028900)
                
end
            
elseif game.get_event_flag("oxevent_status") == 2 then
                say
("[COLOR r;0.1|g;1|b;0.1]OX - Event:")
                
say("")
                
say("[COLOR r;1|g;0.1|b;0.1]Kannst nichtmehr teilnehmen")
                
say("[COLOR r;1|g;0.1|b;0.1]Nurnoch zugucken")
                
say("")

                
local s select("Zuschauen""Nope...")
                if 
== 1 then
                    say
("[COLOR r;0.1|g;1|b;0.1]OX - Event:")
                    
say("")
                    
say("[COLOR r;1|g;0.1|b;0.1]Ich werde dich Teleportieren.")
                    
say("")

                    
wait()

                    
pc.warp(89630028900)
                
end
            end
        end

        when 20358.chat
."OX Event" with pc.is_gm() begin

            local stat 
oxevent.get_status()

            if 
stat == 0 then
                say
("OX-Event")
                
say("")

                
local s select("OX starten""Nope")

                if 
== 1 then
                    local v 
oxevent.open()

                    if 
== 0 then
                        say
("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                        
say("")
                        
say("[COLOR r;1|g;0.1|b;0.1]OX-Event schon aktiv?")
                        
say("")
                    elseif 
== 1 then
                        say
("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                        
say("")
                        
say("[COLOR r;1|g;0.1|b;0.1]OX-Event gestartet")
                        
say("")
                
notice_all("((`°*~-._ Lizura2 _.-~*°´))")
                
notice_all("Das OX-Event hat soeben begonnen")
                
notice_all("Um daran teilzunehmen geht zu Alten Sack und sprecht mit ihm")
                
notice_all("Viel Spaß wünscht euch das Lizura2 Team")
                
notice_all("((`°*~-._ Lizura2 _.-~*°´))")
                    else
                        
say("Fehler...")
                        
say("")
                    
end
                end
            
elseif stat == 1 then
                    say
("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                    
say("")
                    
say("[COLOR r;1|g;0.1|b;0.1]Es sind[/COLOR] "..oxevent.get_attender().." [COLOR r;1|g;0.1|b;0.1]Spieler im OX-Event[/COLOR]")
                    
say("Schließen?")
                    
say("")

                    
local s select("Zugang schliessen""Nein")

                    if 
== 1 then
                        oxevent
.close()

                        
say("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                        
say("")
                        
say("Zugang zu.")
                        
                        
say("")
                    
end
            
elseif stat == 2 then
                    say
("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                    
say("")
                    
say("OX-Event")
                    
say("")

                    
local s select("Fragen""Beenden""Beenden""Nope")

                    if 
== 1 then
                        local v 
oxevent.quiz(130)

                        if 
== 0 then
                            say
("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                            
say("")
                            
say("[COLOR r;1|g;0.1|b;0.1]OX-Event läuft nicht mal!")
                            
say("")
                        elseif 
== 1 then
                            say
("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                            
say("")
                            
say("[COLOR r;1|g;0.1|b;0.1]Frage kommt..")
                            
say("")
                        else
                            
say("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                            
say("")
                            
say("[COLOR r;1|g;0.1|b;0.1]Es wird schon eine Frage gestellt.")
                            
say("")
                        
end
                    
elseif == 2 then
                        oxevent
.end_event()
                
notice_all("((`°*~-._ Lizura2 _.-~*°´))")
                
notice_all("Das OX-Event wurde beendet")
                
notice_all("Wir hoffen, dass es Spaß gemacht hat")
                
notice_all("((`°*~-._ Lizura2 _.-~*°´))")

                        
say("Event Beendet~")
                        
say("")
                    elseif 
== 3 then
                        oxevent
.end_event()
                
notice_all("((`°*~-._ Lizura2 _.-~*°´))")
                
notice_all("Das OX-Event wurde beendet")
                
notice_all("Wir hoffen, dass es Spaß gemacht hat")
                
notice_all("((`°*~-._ Lizura2 _.-~*°´))")


                        
say("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                        
say("")
                        
say("[COLOR r;1|g;0.1|b;0.1]Du hast das Event Beendet")
                        
say("")
                    
end
            
elseif stat == 3 then
                    say
("Bitte warten.")
                    
say("")
                else
                    
say("[COLOR r;1|g;0.1|b;0.1]Ein Fehler ist aufgetreten")
                
end
            end

        when 20358.chat
."OX Beenden" with pc.is_gm() begin
                            say
("[COLOR r;0.1|g;1|b;0.1]Lizura2 Blume:")
                            
say("")
                        
say("[COLOR r;1|g;0.1|b;0.1]OX-Event wirklich beenden?")
                        
say("")

            
local s select("Ja""Nein")

            if 
== 1 then
                oxevent
.end_event_force()

                
say("OX Beendet")
            
end
        end

        when 20358.chat
."Belohnung verteilen" with pc.is_gm() begin
            say
("Item?")
            
say("")

            
local item_vnum input()

            
say("Anzahl des Items?")
            
say("")

            
local item_count input()

            
oxevent.give_item(item_vnumitem_count)
            
say("Belohnung ausgeteilt!")
            
local itemname item_name(item_vnum)
            
local name pc.get_name()
            
notice_all("((`°*~-._ Lizura2 _.-~*°´))")
            
notice_all(" "..name.." hat eine OX-Belohnung ausgegeben:")
            
notice_all("Es wurde/n "..item_count.." "..itemname.." ausgegeben.")
            
notice_all(oxevent.get_attender().." Spieler haben/hat eine Belohnung erhalten.")
            
notice_all("((`°*~-._ Lizura2 _.-~*°´))")
             
say("")
            
say("Du hast "..oxevent.get_attender().." Spielern die Belohung gegeben!")
            
say("")
        
end
    end
end 
Quote:
Originally Posted by I´m Raylee View Post
Ich würde bitte eine Goldbarren Quest benötigen, sprich ich klicke auf die Items
8003, 8004, 8005, 8006, 8007 und erhalte jeweils denn Betrag der Items! :)

Beispiel:

Vnum: 80003
Yang: 5000000Yang

Vnum: 80004
Yang: 10000000

Vnum: 80005
Yang: 20000000

Vnum: 80006
Yang: 40000000

Vnum: 80007
Yang: 80000000

Ich würde mich freuen wenn jemand so nett wäre und mir die Quest erstellen würde! :)
Danke! :)
PHP Code:
quest barren5kk begin
    state start begin
        when 80008.
use with pc.get_level() >= 1 begin 
            item
.remove(80008,1)
            
pc.changemoney(5000000)
        
end
    end
end 
das einfach mit deinen vnums verändern und pc.changemoney(dieYangAnzahl) ändern

sry das die nicht so sauber ist kaum zeit
09/24/2015 23:46 .Various#3162
Quote:
Originally Posted by I´m Raylee View Post
Ich würde bitte eine Goldbarren Quest benötigen, sprich ich klicke auf die Items
8003, 8004, 8005, 8006, 8007 und erhalte jeweils denn Betrag der Items! :)

Beispiel:

Vnum: 80003
Yang: 5000000Yang

Vnum: 80004
Yang: 10000000

Vnum: 80005
Yang: 20000000

Vnum: 80006
Yang: 40000000

Vnum: 80007
Yang: 80000000

Ich würde mich freuen wenn jemand so nett wäre und mir die Quest erstellen würde! :)
Danke! :)

Nimm die, die über mir kann zu Fehlern führen da keine Abfragen drin sind wieviel Yang der Player schon besitzt.
Code:
quest bullion begin
	state start begin
		when 80003.use or 80004.use or 80005.use or 80006.use or 80007.use begin
			local bullion = ({
				[80003] = 5000000,
				[80004] = 10000000,
				[80005] = 20000000,
				[80006] = 40000000,
				[80007] = 80000000
			})[item.vnum]
			if bullion == null then return end
			if (pc.get_money() + bullion) < 2000000000 then 
				pc.change_money(bullion)
			else
				chat("Du hast zuviel Yang im Inventar.")
			end
		end
	end
end
09/25/2015 00:56 I´m Raylee#3163
Danke Leute! :)

Würdet ihr es evtl. per Source machen oder lieber doch per Quest?
09/25/2015 17:17 Nick#3164
Quote:
Originally Posted by .Various View Post
Nimm die, die über mir kann zu Fehlern führen da keine Abfragen drin sind wieviel Yang der Player schon besitzt.
Code:
quest bullion begin
	state start begin
		when 80003.use or 80004.use or 80005.use or 80006.use or 80007.use begin
			local bullion = ({
				[80003] = 5000000,
				[80004] = 10000000,
				[80005] = 20000000,
				[80006] = 40000000,
				[80007] = 80000000
			})[item.vnum]
			if bullion == null then return end
			if (pc.get_money() + bullion) < 2000000000 then 
				pc.change_money(bullion)
			else
				chat("Du hast zuviel Yang im Inventar.")
			end
		end
	end
end
Ideal wäre es, wenn das jeweilige Item nach Benutzung verschwinden würde. :p

Quote:
Originally Posted by I´m Raylee View Post
Danke Leute! :)

Würdet ihr es evtl. per Source machen oder lieber doch per Quest?
Die Möglichkeit, das Ganze per Quest zu regeln, bietet sich doch an, den Source halte ich hierbei für die verkomplizierte Methode.
09/25/2015 19:13 I´m Raylee#3165
Quote:
Ideal wäre es, wenn das jeweilige Item nach Benutzung verschwinden würde.
Könnte das bitte noch jemand bei der Quest addieren?

Es besteht ein Problem bei der Verwendung der Goldbarren! :(
Ich erhalte diese Meldung wenn ich auf denn Goldbarren klicke:
[Only registered and activated users can see links. Click Here To Register...]

In Navicat wurde das ganze so eingestellt:
Type 18, Subtype 0, Antiflag 356, Flag 1028

Wisst ihr vielleicht woran es liegen könnte? :/