Questrolle schicken

03/11/2016 20:55 123snake123#1
Wollte fragen ob es möglich ist, einem Spieler den ich über eine input Funktion ausgewählt habe, eine Questrolle zu schicken.

mfg
03/12/2016 01:38 gerald500#2
Quote:
Originally Posted by 123snake123 View Post
Wollte fragen ob es möglich ist, einem Spieler den ich über eine input Funktion ausgewählt habe, eine Questrolle zu schicken.

mfg

ja du machst find_pc_by_name(input)
danach

local other = pc.select(find_pc_by_name(deineinputvariable))
send_letter("blabla")
pc.select(other)

und schon hat der ausgewählte die rolle
03/12/2016 12:07 123snake123#3
Und ich bräuchte noch den Code schnipsel, in dem eine ganze gruppe geportet wird, nach dem der Gruppenleader geportet wird.
Das ganze ist kein Dungeon.

Mfg
03/12/2016 12:53 gerald500#4
Quote:
Originally Posted by 123snake123 View Post
Und ich bräuchte noch den Code schnipsel, in dem eine ganze gruppe geportet wird, nach dem der Gruppenleader geportet wird.
Das ganze ist kein Dungeon.

Mfg
Code:
	local pids = {party.get_member_pids()}
	for _,v in ipairs(pids) do
		local other = pc.select(v)
		pc.warp(x,y)
		pc.select(other)
	end
03/12/2016 14:00 123snake123#5
Es kommt kein Fehler, es passiert aber auch nichts.
03/12/2016 14:09 gerald500#6
Quote:
Originally Posted by 123snake123 View Post
Es kommt kein Fehler, es passiert aber auch nichts.
was hast du für eine game du solltest mal in den quest functions nachgucken was du alles für party. functions hast.

solltest du mit dem source arbeiten kannst du ja nachgucken welche funktionen du hast in questlua_party.cpp

ansonsten versuchs mal einfach einzutragen in den quest functions ich glaub ab 40k gibts die funktion standartmässig
03/12/2016 14:15 123snake123#7
Arbeite ohne game. Habe die 2089rev aber auf dem Server wo die Quest läuft ist noch ne viel ältere game.
03/12/2016 14:19 gerald500#8
Quote:
Originally Posted by 123snake123 View Post
Arbeite ohne game. Habe die 2089rev aber auf dem Server wo die Quest läuft ist noch ne viel ältere game.
für die game2089 fällt mir jetzt keine einfache lösung ein ich denke du wirst das über client quest kommi lösen müssen.

würde dir aber sowieso empfehlen nicht die game2089 zu verwenden den damit sind deine möglichkeiten für neue features sehr begrentzt

könntest eine funktion machen die was an den client schickt und der client alle namen der spieler in der gruppe abfrägt , anschließend alle gleich wie oben selecten in einer schleife und warpen.
03/12/2016 14:31 123snake123#9
Oha....^^ und wie mache ich das genau?
03/12/2016 15:20 gerald500#10
Quote:
Originally Posted by 123snake123 View Post
Oha....^^ und wie mache ich das genau?

habs mal versucht zu erstellen kann nicht garantieren das es gleich funtzt.

dein client muss auf Client quest kommi eingerichtet sein

du brauchst eine neue quest unzwar diese hier :

Code:
quest partypid begin
	state start begin

		function getinput(par)
			cmdchat("getinputbegin")
			local ret = input(cmdchat(par))
			cmdchat("getinputend")
			return ret
		end
		
		function client_command(command_)
			return partypid.split_(command_,"#")
		end
		
		function split_(string_,delimiter)
			local result = { }
			local from  = 1
			local delim_from, delim_to = string.find( string_, delimiter, from  )
			while delim_from do
				table.insert( result, string.sub( string_, from , delim_from-1 ) )
				from  = delim_to + 1
				delim_from, delim_to = string.find( string_, delimiter, from  )
			end
			table.insert( result, string.sub( string_, from  ) )
			return result
		end
		
		
		
		when login begin
			cmdchat(string.format("PARTYCMD QID/%d",q.getcurrentquestindex()))
		end
		
		when button or info begin
			local cmd = partypid.client_command(partypid.getinput("PARTYCMD QUESTCMD"))
			party = {}
			for _,v in ipairs(cmd) do
				table.insert(party,v)
			end
			PARTY_PIDS[pc.get_name()] = party
		end
		
	end
end
By the Way hier kannst du im prinzip alle mögliche sachen vom client entgegen nehmen

danach machst du noch in der questlib das hier irgendwo

Code:
PARTY_PIDS = {}
so das wars am server nun zum client

in uiparty.py suchst du nach

def AddPartyMember(self, pid, name):

und ersetzt diese funktion mit meiner

Code:
	def AddPartyMember(self, pid, name):

		board = self.__FindPartyMemberInfoBoardByPID(pid)

		if None == board:
			
			import constInfo
			constInfo.PARTY["PARTYPIDS"].append(pid)
			
			board = PartyMemberInfoBoard()
			board.SetParent(self)
			board.SetCharacterPID(pid)

			self.partyMemberInfoBoardList.append(board)
			self.__ArrangePartyMemberInfoBoard()
			self.UpdateRect()

		if not name:
			name = localeInfo.PARTY_MEMBER_OFFLINE

		board.SetCharacterName(name)
		board.Unlink()

		self.Show()
dann in der constinfo addest du irgendwo:
Code:
PARTY = {"PARTYPIDS": [],"QID":0,"questCMD":""}
und in der game suchst du nach:

def __ServerCommand_Build(self):

und addest dort irgendwo:

Code:
"PARTYCMD"              :self._PartyCMD,
irgendwo am ende am besten diese funktion adden:

Code:
	def _PartyCMD(self, command):
		cmd = command.split("/")
		if cmd[0] == "QID":
			constInfo.PARTY["qid"] = int(cmd[1])
		elif cmd[0] == "QUESTCMD":
			net.SendQuestInputStringPacket(str(constInfo.PARTY["questCMD"]))
		elif cmd[0] == "GIVE_PIDS":
			pids = ""
			for i in range(len(constInfo.PARTY["PARTYPIDS"])):
				pids = pids+"#"+str(constInfo.PARTY["PARTYPIDS"][i])
			constInfo.PARTY["questCMD"] = pids
			import event
			event.QuestButtonClick(int(constInfo.PARTY["qid"]))
so nun bist du fertig das ganze kannst du dann so benutzen

Code:
		cmdchat("PARTYCMD GIVE_PIDS")
		local pids = PARTY_PIDS[pc.get_name()]
		for _,v in ipairs(pids) do
			local other = pc.select(tonumber(v))
			pc.warp(x,y)
			pc.select(other)
		end
hab das ganze jetzt richtig schnell geschriben das tutorial sowie den code denke aber es müsste klappen

mfg gerald