Hali.
Minap nézegetem az Achievement-ekhez vonatkozó Dolgokat/leírásokat, de sajnos semmi használhatót nem találtam. :-[
Találtam egy Topic-ot, de... semmi. ( http://infobarkacs.hu/index.php?topic=3135.0 (http://infobarkacs.hu/index.php?topic=3135.0) )
Ha jól tudom DB-ben két tábla kapcsolódik az Achievement-ekhez.
1. achievement_revard
2. achievement_criteria_data
Sajnos nem tudtam megérteni, hogy miként és hogyan kapok meg egy adott Achievementet. :-[
( Zárójelben megjegyeznék 1-2 Linket:
http://trinitycore.info/index.php/Achievement_Criteria.dbc_tc2 (http://trinitycore.info/index.php/Achievement_Criteria.dbc_tc2)
http://trinitycore.info/index.php/Achievement_criteria_data_tc2 (http://trinitycore.info/index.php/Achievement_criteria_data_tc2)
http://trinitycore.info/index.php/Achievement_reward_tc2 (http://trinitycore.info/index.php/Achievement_reward_tc2)
Achievement_Criteria ( dbc ) http://pastebin.com/qmvC8afM (http://pastebin.com/qmvC8afM))
Az achievement_revard tábla úgy ahogy világos, de azt valószínű még a mai nap folyamán átnézem.
De az achievement_criteri_data-át teljesen nem értem.
Most jönne a Scriptes oldala.
Úgy tudom, hogy ez megoldható lenne Script megírásával is, de lehet hogy tévedek.
Miként, hogyan írják bele egy adott Scripte ezeket? ( Bossok, hasonlóakra gondolok )
Ezt is nézegettem, de ez még homályosabb.
Mondanék egy Példát: http://ptr.wowhead.com/achievement=1277 (http://ptr.wowhead.com/achievement=1277)
Ez amint látható is, egy Quest végeztével kapnánk meg.
De nem jövök rá hogy hogyan.
Ha valaki tudja a nyitját, és lenne egy kis ideje vagy bármi ötlete, legyen szíves írja le.
Üdv.: Senki
Egy timerrel rendelkező scriptelt quest után kapnád meg(3 perc alatt kell megvédeni).
Ha egy achievementet szeretnél valamelyik karakternek adni, akkor az a
`characters`.`character_achievements` vagy valami hasonló táblában van.
Igen, ezt a részt én is megtaláltam, de ez így nekem olyan 'nem az igazi'
Hogyan tudnám azt kivitelezni, hogy Például leadom ezt a küldit ( http://ptr.wowhead.com/quest=2161 (http://ptr.wowhead.com/quest=2161) )
És megkapjam ezt az Achievementet ( http://ptr.wowhead.com/achievement=4597 (http://ptr.wowhead.com/achievement=4597) )
Most ez nagyon hülyén néz ki, de az elkészítés lényege lenne a fontos.
Ha jól értelmezem ezt: http://trinitycore.info/index.php/Achievement_criteria_data_tc2 (http://trinitycore.info/index.php/Achievement_criteria_data_tc2)
akor az `achievement_criteria_data` táblában belövöd az achi ID-jét (dbcből: link (http://trinitycore.info/index.php/Achievement_Criteria.dbc_tc2))
aztán beállítod az értkéket, és ha a beálított értéknek megfelelő "event" bekövetkezik adott player megkapja az achi-t, adott esetben célszerű egy aurát beállítani (id: 5), value kettőben pedig megadni az aura spelljéne ID-jét, a quest végén meg ráadni a playerre ezt az aurát.
Ha tévednék sorry most néztem át félálomba leírásokat :-[
Nagyából értem, de még sok minden nem világos. :(
Vannak Achievementek, amik nekem bonyolultnak tűnnek.
Mint Például: http://www.wowhead.com/achievement=603 (http://www.wowhead.com/achievement=603)
http://www.wowhead.com/achievement=1006 (http://www.wowhead.com/achievement=1006)
Nem tudok rájönni, hogy ezekre miként írhatnék javítást, mert akárhogy csináltam eddig, nem volt jó.
Ennek némely része azért még nem világos.
value1
* TYPE_T_CREATURE
o The target here must be a valid entry from creature_template
* TYPE_T_PLAYER_CLASS_RACE
o The value here is a valid class (paste class list). value2 must also be set
* TYPE_T_PLAYER_LESS_HEALTH
o The percentage of health that the target must reach.
* TYPE_T_PLAYER_DEAD
o The faction of the target player (must match player attempting achievement).
* TYPE_S_AURA
o The spell ID of the aura that must be on the player. value2 must also be set.
* TYPE_S_AREA
o Area ID from AreaTable.dbc
* TYPE_T_AURA
o The spell ID of the aura that must be on the target. value2 must also be set.
* TYPE_VALUE
o Minimum value needed to attain achievement. This value is used in conjunction with another type.
* TYPE_T_LEVEL
o The minimum level that the target can be.
* TYPE_T_GENDER
o Gender: 0=Male, 1=Female
* TYPE_DISABLED
o Used to disable an achievement if all requirements are not defined. Would usually be used if not all are known.
* TYPE_MAP_DIFFICULTY
o Map difficulty: Normal = 0, Heroic = 1
* TYPE_MAP_PLAYER_COUNT
o The number of other players that must be in the zone. (not sure if it is minimum or maximum).
* TYPE_T_TEAM
o The target must be on this team: Alliance = 469, Horde = 67
* TYPE_S_DRUNK
o How drunk the player must be: DRUNKEN_SOBER = 0, DRUNKEN_TIPSY = 1, DRUNKEN_DRUNK = 2, DRUNKEN_SMASHED = 3
* TYPE_HOLIDAY
o Holiday ID from Holiday.dbc and game_event. Must be an active holiday.
* TYPE_BG_LOSS_TEAM_SCORE
o Player's team win bg and opposition team have team score in range. // Min. score
value2
* TYPE_T_PLAYER_CLASS_RACE
o The value here is a valid race (paste race list)
* TYPE_S_AURA
o Effect Index of the aura
* TYPE_T_AURA
o Effect Index of the aura
* TYPE_BG_LOSS_TEAM_SCORE
o Max. score
Az előzőleg említett 2 Achievementet ti hogyan javítanátok? ???
Ezeket inkább scripttel, mint db-ben.
Utána nézek hogy Scriptel hogy lehet, hátha találok valamit. :)
Kész, feladom.
Nem értem meg sem a Scripeset/sem a DB-set.
Lehet csak túl bonyolultan állok hozzá, vagy nem tudom.
Na mind1... :-\
Nem a kettő együtt a nyerő? :)
scriptben megadod mire, db-ben pedig hogy mit. Próbálj kinézni 1-2 boss scriptet ami achi-t ad.
Mostanában van egy érdekes hiba TC-nél, hogy bemegyek mondjuk ToTc-ba, 10 fős Norm-on, és megkapom a végén a 10 és a 25 fős ToTc-ra is az Achievementet.
Ez miért van vajon?
Hát ez nekem sajnos nem sikerült, valamiért nem értem ezt az egészet.. :(
Pedig jó lenne ha megérteném, mert én PvE-s vagyok, és az Achievement a mindenem! :D
ICC-ben is ez van ha már itt tartunk. Ráadásul Heroic 25 embereset és HC 10-est is
Kb. úgy mint amikor funon megveszel egy fegyót és megkapod a 10 meg 25 achievementet ahoz az instához,amelyikben droppolják a fegyót
Idézetet írta: NevemSenki Dátum 2010 július 01, 01:24:45 DÉLUTÁN
Mostanában van egy érdekes hiba TC-nél, hogy bemegyek mondjuk ToTc-ba, 10 fős Norm-on, és megkapom a végén a 10 és a 25 fős ToTc-ra is az Achievementet.
Ez miért van vajon?
Mert a boss/insta scriptben nincs lekezelve az achi. Pár commitot látni olykor ha egy instát pofozgatnak, hogy "25 mode achievement fixed" pl. Na az ilyen commitokat kell előkotorni és megnézni mit csináltak benne.
@Athmor és MrBab: ez nem a bug jelentő topic :D
Csak érdekességként írtuk ki :D Jobb kint mint bent
Nézegetem ezt a dolgot naponta, de nem jutok egyről a kettőre!
Kicsit már mérgesít
;D
Van ez a fránya PL:
Item: http://www.wowhead.com/item=43599 (http://www.wowhead.com/item=43599)
Hozzá tartozó 2 Spell,
1, http://www.wowhead.com/spell=58983 (http://www.wowhead.com/spell=58983) ( maga a maci )
2, http://www.wowhead.com/spell=483 (http://www.wowhead.com/spell=483) ( 3s cast a tanulást emulálva )
Ha ez az Item megvan, akkor kapok rá egy Achievementet http://www.wowhead.com/achievement=415 (http://www.wowhead.com/achievement=415) ( amikor az Invertory-mba kerül )
achievement_criteri_data táblában nincs benne.
Maga az Item:
(`entry`, `class`, `subclass`, `unk0`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `Duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `WDBVerified`) values('43599','15','5','-1','Big Blizzard Bear','59466','3','134250496','0','1','0','0','0','-1','32767','20','20','762','75','0','0','0','0','0','0','1','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','483','0','0','0','-1','330','3000','58983','6','0','0','-1','0','3000','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','Teaches you how to summon this mount.','0','0','0','0','0','4','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','-1','0','0','0','0','','0','0','0','0','1');
criteria_id: 6974
Na most jön ami még nem volt!
Hogy kaphatom meg az Achievementet ha semmi nyoma ennek a Fosnak?Valaki segítene kicsit? :-\
Vagy kijelentjük hogy jelen tudásunk szerint megoldhatatlan?
Talán segít:
http://code.google.com/p/trinitycore/source/detail?r=c0f66ca23c5a9dad38d5feebf1d773d7150d3fe2
Hát találtam Scriptben ( elég régi ) egy két dolgot: http://pastebin.com/dM5SSrTp (http://pastebin.com/dM5SSrTp)
Érdeklődnék hogy jól gondlom-e
Beregisztrálja az elején az Achikat:
Idéz#define ACHIEVEMENT_SHATTERED 2925
#define ACHIEVEMENT_SHATTERED_H 2926
#define ACHIEVEMENT_STOKIN_THE_FURNACE 2930
#define ACHIEVEMENT_STOKIN_THE_FURNACE_H 2929
Ezt nem értem hogy miért van itt, de valami oka biztosan van:
Idéz
uint32 uiSlagPotInTimer;
uint32 uiSlagPotChargeTimer;
Unit* SlagPotTarget;
Creature *IgnisConstruct;
bool AchievementShattered;
bool AchievementStokinTheFurnace;
bool InSlagPot;
Aztán a Timerek Reste-jében is benne van:
Idéz
AchievementShattered = false;
AchievementStokinTheFurnace = true;
Ha jól gondolom, ez úgy működne hogy ha meghal ( void KillConstructor ), és egy bizonyos időn belül hal meg, akkor kapom az Achievementet ( uiShatteredAchievmentTimer=5000; )
Idézvoid KillConstructor()
{
if (!AchievementShattered){
if (uiShatteredAchievmentTimer>0)
AchievementShattered=true;
else
uiShatteredAchievmentTimer=5000;
}
me->RemoveAuraFromStack(SPELL_STRENGTH_OF_THE_CREATOR);
}
Na ezt aztán végképp nem értem:
Idéz
if (uiStokinTheFurnaceAchievementTimer <= diff)
{
AchievementStokinTheFurnace=false;
uiStokinTheFurnaceAchievementTimer = 0;
} else uiStokinTheFurnaceAchievementTimer -= diff;
if (uiShatteredAchievmentTimer <= diff)
{
uiShatteredAchievmentTimer = 0;
} else uiShatteredAchievmentTimer -= diff;
Ez pedig ha jól gondolom akkor az lenne, hogy ha a Player HC-n van bent akkor azokat az Achievementeket kapja meg, amik a HC Instára szólnak:
Idézvoid JustDied(Unit * /*victim*/)
{
DoScriptText(SAY_DEATH, me);
_JustDied();
//On donne les hf
if (m_pInstance && AchievementShattered)
m_pInstance->DoCompleteAchievement(HEROIC(ACHIEVEMENT_SHATTERED, ACHIEVEMENT_SHATTERED_H));
if (m_pInstance && AchievementStokinTheFurnace)
m_pInstance->DoCompleteAchievement(HEROIC(ACHIEVEMENT_STOKIN_THE_FURNACE, ACHIEVEMENT_STOKIN_THE_FURNACE_H));
if (m_pInstance)
m_pInstance->SetData(TYPE_IGNIS, DONE);
}
Ha van bármi hozzáfűzni valótok, legyetek szívesek írjátok le, biztosan segítene valamit, mert ez az Achievementes dolog nagyon kemény dió. TC nagyon nagyon szegényes Achievement téren.
Üdv.: Senki
--------------------------------------------------------------------------------------------
Na kezdek rájönni, vagy egy Achievementekhez kacsolódó Script, és a különböző dolgok abban vannak definiálva ( creture_kill, honorable_kill, item_invertory ) hasonlóak.
És ezeket kel használni egy Scriptben, mint Például a feljebb leírtban. ( Ignis Scriptje )
Ahogy néztem, elég sok minden ki van hagyva az alapoknál, vagy ki lett szedve az idők folyamán, Pl.: a City Deffender, az is régen ment, 3.1.3-ban még jó volt, most pedig már nem.
Még nézegetem, de nem egyszerű a dolog.
Kell a Script, kell még mellé a achievement_criteria tábla a DB-ből, plusz azoknak az értékei jól legyenek beírva ( típus, criteria_ID ).
Egy szó mint 100, nagyon nem egyszerű.
Eddigi pályafutásom alapján, ez a legnehezebb amivel találkoztam, ez nem csak olyan Falusi Boss_Script. :D :D :D
Ha sikerül többet megtudnom, vagy teljesen megértenem, akkor nyitok neki egy új Topic-ot ahol részletesen elmagyarázom. De lehet hogy ez csak nekem ekkora nagy dolog. :D
Üdv.: Senki
Azért RePost-olok, hogy másoknak megjelenjen az Olvasatlanok között.
Hátha tud valaki valamit hozzáfűzni. :)
AchievementMgr.h (http://pastebin.com/BHffqeM5)
AchievementMgr.cpp (http://pastebin.com/XYUZYgZi)
Akkor legjobb belátásom szerint, amikhez tartozik Script ( Mint BG, BossKill... ) azokba be lehet építeni az Achievementet.
De akkor Például ezekkel mi van? ???
Pilgrim's Peril (http://www.wowhead.com/achievement=3581)
Legjobb tudásom szerint ehhez nem tartozik Script, mivel csak le kell ülni a bizonyos ruhában az asztalokhoz.
( While wearing either a Pilgrim's Dress, Robe, or Attire, take a seat at each enemy capital's Bountiful Table )
Van minden asztalhoz egy Spell ( Például: Stormwind (http://www.wowhead.com/spell=65403) ) ha ez a Spell rám kerül, akkor számolná a Stormwind-es részét az Achievementnek.
Kipróbáltam, és hát megkapom a teljes Achievementet, ha a 4 közül bármelyik Spell kerül rám.
Hogyan lehetne azt megoldani, hogy ne az egész Achievementet kapjam meg, hanem a Példa alapján csak a Stormwind-eset?
Üdv.: Senki