Access Requirements Für Instanzen

Moin,

ich habe vor einige Instanzen beim Serverstart noch zu verschliessen, möchte aber das die Tester und GMs trotzdem in die gesperrten Instanzen kommen.

Ich habe dazu eine Quest gemacht, wo sie ein Questitem abschliessend noch dazu bekommen. Die Q wird ja pro User geloggt und sollte als Vorraussetzung dienen

UPDATE `access_requirement` SET `item`=@ITEM, `quest_done_A`=@QUEST, `quest_done_H`=@QUEST, `quest_failed_text`=`Die Instanz ist noch zu und wir arbeiten daran.' WHERE `mapId` IN ('600','601'); [/sql]

Aber wieso wird ein alleiniges abschliessen der Quest nicht anerkannt. Man kann trotz des Abschlusses der Quest die Instanz nicht betreten. Habe ich was übersehen ? Gibt es weitere Tabellen ? Wie gesagt ich hatte es ursprünglich ohne `item`=@ITEM, geplant, aber das führte auch zu keinem Erfolg. Jemand eine Idee ? Oder gibts dazu schon eine vorgehensweise, wie Instanzen verschlossen werden sollten/müssen ?

Vielen Dank im vorraus!!

Hast du es mal nur mit Item versucht? Erscheint mir für deinen Fall auch einfacher ein Item zu adden, als da mit einer Quest zu hantieren. An und für sich, sollte das aber auch mit der Quest gehen, wobei die nicht nur abgeschlossen, sondern auch abgegeben sein sollte, wenn ich mich recht entsinne.

Nur mit item habe ich es auch versucht. Dann erscheint aber nur die Meldung “ihr müsst mindestens lvl69 haben um die Instanz betreten zu können” (also mit Prüfung auf Item und kein Item in der Tasche) und mir gefiel die Idee eine seperate “Fehlermeldung” zu produzieren, wie das bei den Quests möglich ist(Ist halt schöner um eine Unterscheidung für die User zu haben, ob die Instanz geschlossen ist oder sie einfach das requirement noch nicht besitzen). Die Quest ist abgeschlossen und abgegeben. Die erscheint auch in der Char_db unter abgeschlossenen Quests. Da ich eine hohe ID dafür verwendet habe, um Komplikationen auszuschliessen, habe ich auch schon geschaut ob die Tabelle so hohe Werte verarbeiten kann. Die Zelle ist mit 8 Zeichen definiert und Item und Quest haben 6 Zeichen. Das sollte also passen.

Hast du mal geschaut, ob der Code auch mit 8 Stellen Zahlen zurecht kommt? Ist da nur ein uint8 benutzt, wäre da der Fehler zu finden. Zu testzwecken also einfach mal eine niedere QuestId benutzen.

Edit:

Okay, hab selbst grad mal geschaut. Der Code holt sich den Wert als uint32. Damit sollte das schonmal ausscheiden. Hast du beim Startup mal geschaut, ob die Tabelle ohne Fehler geladen wird? Ansonsten musst du da an irgendeiner Stelle irgendeinen Fehler drin haben, da das Feature an und für sich immer einwandfrei funktioniert hatte. QuestId und Map rein und dich Sache ist gut.

jo…habe mir das startup log mal vom admin freischalten lassen…da sind einige sachen von meinen “workarounds” drinnen gewesen…so langsam dämmerts mir, warum keine abenteuerlichen workarounds /emoticons/default_rolleyes.gif

Ich bereinige erstmal meine Fehler aus den letzten Wochen und dann mache ich das mit der Quest nochmal neu ohne custom Items die eh nur zu recht Fehler schmeissen…meld mich wieder /emoticons/default_smile.png

Kann der Thread offen bleiben oder soll ich dann nochmal einen neuen mit gleichem Topic machen ? Denke bin in 1-2 Tagen so weit

DANKE derweil erstmal!!

Da das erstmal nicht als solved gesehen werden kann, lassen wir es mal noch offen, wobei ich denke, dass die Funktionalität an sich schon okay sein sollte. Also lassen wir mal offen.

soo…nach zahlreichen aufräumarbeiten sind nun nurnoch kleinere fehler im log …weiss noch nicht genau woher die stammen, aber anscheinend gibt es noch creaturen die auren haben sollten aber nicht in der creature stehen…da bin ich mir aber keiner schuld bewusst…aber dies nur am rande…

ich habe das quest script nochmal gemacht und es hängt wie mein erstes script leider…ich poste es mal komplett, auch auf die gefahr hin schläge zu bekommen weil ich einen npc zweckentfremdet habe, was aber an der ursache das die quest an den access requirements nichts ändern sollte.

[CODE]SET @NPC :=70000; – Quest NPC free ID
SET @QUEST :=30000; – new free Quest ID

– new Q NPC
DELETE FROM creature_template WHERE entry =@NPC;
INSERT INTO creature_template (entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction_A, faction_H, npcflag, speed_walk, speed_run, scale, rank, mindmg, maxdmg, dmgschool, attackpower, dmg_multiplier, baseattacktime, rangeattacktime, unit_class, unit_flags, dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, minrangedmg, maxrangedmg, rangedattackpower, type, type_flags, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, Health_mod, Mana_mod, Armor_mod, RacialLeader, questItem1, questItem2, questItem3, questItem4, questItem5, questItem6, movementId, RegenHealth, equipment_id, mechanic_immune_mask, flags_extra, ScriptName, WDBVerified) VALUES
(@NPC, 0, 0, 0, 0, 0, 365, 0, 0, 0, ‘Quest Kobold’, ‘’, ‘’, 0, 3, 3, 0, 1797, 1797, 3, 1, 0.85714, 1, 0, 3, 4, 0, 28, 1, 2000, 0, 1, 33536, 8, 0, 0, 0, 0, 0, 1, 2, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, ‘’, 0, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 100, 1, 53, 0, 0, ‘’, 0);

– Spawn Q NPC
DELETE FROM creature WHERE id =@NPC and map=1;
INSERT INTO creature (guid, id, map, spawnMask, phaseMask, modelid, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, spawndist, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags) VALUES
(1027609, @NPC, 1, 1, 1, 0, 53, 16217.1, 16403, -64.3787, 6.2525, 300, 0, 0, 71, 0, 0, 0, 0, 0);

– Questbeginn and End
DELETE FROM creature_questrelation WHERE id =@NPC and quest= @QUEST;
INSERT INTO creature_questrelation (id, quest) VALUES
(@NPC, @QUEST);

DELETE FROM creature_involvedrelation WHERE id =@NPC and quest= @QUEST;
INSERT INTO creature_involvedrelation (id, quest) VALUES
(@NPC, @QUEST);

– new Quest Insert
DELETE FROM quest_template WHERE entry=@QUEST;
INSERT INTO quest_template (entry, Method, ZoneOrSort, SkillOrClassMask, MinLevel, MaxLevel, QuestLevel, Type, RequiredRaces, RequiredSkillValue, RepObjectiveFaction, RepObjectiveValue, RepObjectiveFaction2, RepObjectiveValue2, RequiredMinRepFaction, RequiredMinRepValue, RequiredMaxRepFaction, RequiredMaxRepValue, SuggestedPlayers, LimitTime, QuestFlags, SpecialFlags, CharTitleId, PlayersSlain, BonusTalents, RewardArenaPoints, PrevQuestId, NextQuestId, ExclusiveGroup, NextQuestInChain, RewXPId, SrcItemId, SrcItemCount, SrcSpell, Title, Details, Objectives, OfferRewardText, RequestItemsText, EndText, CompletedText, ObjectiveText1, ObjectiveText2, ObjectiveText3, ObjectiveText4, ReqItemId1, ReqItemId2, ReqItemId3, ReqItemId4, ReqItemId5, ReqItemId6, ReqItemCount1, ReqItemCount2, ReqItemCount3, ReqItemCount4, ReqItemCount5, ReqItemCount6, ReqSourceId1, ReqSourceId2, ReqSourceId3, ReqSourceId4, ReqSourceCount1, ReqSourceCount2, ReqSourceCount3, ReqSourceCount4, ReqCreatureOrGOId1, ReqCreatureOrGOId2, ReqCreatureOrGOId3, ReqCreatureOrGOId4, ReqCreatureOrGOCount1, ReqCreatureOrGOCount2, ReqCreatureOrGOCount3, ReqCreatureOrGOCount4, ReqSpellCast1, ReqSpellCast2, ReqSpellCast3, ReqSpellCast4, RewChoiceItemId1, RewChoiceItemId2, RewChoiceItemId3, RewChoiceItemId4, RewChoiceItemId5, RewChoiceItemId6, RewChoiceItemCount1, RewChoiceItemCount2, RewChoiceItemCount3, RewChoiceItemCount4, RewChoiceItemCount5, RewChoiceItemCount6, RewItemId1, RewItemId2, RewItemId3, RewItemId4, RewItemCount1, RewItemCount2, RewItemCount3, RewItemCount4, RewRepFaction1, RewRepFaction2, RewRepFaction3, RewRepFaction4, RewRepFaction5, RewRepValueId1, RewRepValueId2, RewRepValueId3, RewRepValueId4, RewRepValueId5, RewRepValue1, RewRepValue2, RewRepValue3, RewRepValue4, RewRepValue5, RewHonorAddition, RewHonorMultiplier, unk0, RewOrReqMoney, RewMoneyMaxLevel, RewSpell, RewSpellCast, RewMailTemplateId, RewMailDelaySecs, PointMapId, PointX, PointY, PointOpt, DetailsEmote1, DetailsEmote2, DetailsEmote3, DetailsEmote4, DetailsEmoteDelay1, DetailsEmoteDelay2, DetailsEmoteDelay3, DetailsEmoteDelay4, IncompleteEmote, CompleteEmote, OfferRewardEmote1, OfferRewardEmote2, OfferRewardEmote3, OfferRewardEmote4, OfferRewardEmoteDelay1, OfferRewardEmoteDelay2, OfferRewardEmoteDelay3, OfferRewardEmoteDelay4, StartScript, CompleteScript, WDBVerified) VALUES
(@QUEST, 2, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ‘Quest für Instanzen’, 'Welcome back to the world of death. ', ‘Gib die Kerze wieder ab’, ‘Gratulation du hast nun Zugang zu den gesperrten Instanzen’, ‘Brauchst die magische Kerze’, ‘Abgegeben’, ‘So ist fein :)’, ‘’, ‘’, ‘’, ‘’, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

– Close Maps from access_requirement
UPDATE access_requirement SET quest_done_A=@QUEST, quest_done_H=@QUEST, quest_failed_text=‘Die Instanz ist noch zu und wir arbeiten daran…’ WHERE mapId IN
(‘600’,‘601’);
[/sql][/CODE]

zum testen zum Q NPC

.go 16237 16396 60 1

Verschlossene Instanz

.tele Drak’Tharon

Die Q wird ordnungsgemäß gezählt…nur weiss ich jetzt leider nicht weiter…

btw

TrinityCore rev. 2011-10-09 14:04:21 +0200 (3b4b6a2d9ab8+)

Was passiert denn, wenn du versuchst die Instanz zu betreten?

Hast du auch daran gedacht GM off zu machen?

Wenn ich versuche die Instanz zu betreten erhalte ich die Fehlermeldung aus dem script oben…sofern funktioniert es /emoticons/default_smile.png aber der char hat die Q ja erledigt und sollte entsprechend in die Instanz kommen.

GM Mode war aus. Mit GM on kann man einfach in die Ini ohne eine Fehlermeldung.

Versuch mal TDM Hero zu betreten. Was passiert da ?

Für Heroisch wird der Abschluss der Q “Nicht totzukriegen” benötigt …hmm…ich schau mal wo da der Unterschied ist…hab heute leider keine Zeit mehr…

edit:

VIELEN DANK!!..das war die Lösung…die Q darf nicht wiederholbar sein. Ich habe die Zeile mit dem Q Template geändert und siehe da…es geht /emoticons/default_smile.png

[CODE]
(@QUEST, 2, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ‘Quest für Instanzen’, 'Welcome back to the world of death. ', ‘’, ‘Gratulation du hast nun Zugang zu den gesperrten Instanzen’, ‘’, ‘Abgegeben’, ‘So ist fein :)’, ‘’, ‘’, ‘’, ‘’, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

[/SQL][/CODE]

kann also als solved gekennzeichnet werden /emoticons/default_smile.png