No skoro uwazacie, ze to rzeczywiscie bez sensu... w kazdym razie to wyjdzie w praniu, czyli podczas testowania, a do tego jeszcze dluuuuga droga. Najpierw trzeba zajac sie tym moim nieszczesnym problem o ktorym juz wspominalem i ktory zahamował moja prace od pół roku. Jesli nie znajdziemy jakiegos sposobu na ten problem, to dodatek nie powstanie... no chyba, ze uznacie opcje b) za sluszna, ale jak na razie spotkalem sie z kilkoma negatywnymi opiniami co do tego sposobu.
Powinienem chyba wczesniej o tym dac znac no ale myslalem, ze jednak ktos sie zglosi do pomocy kto sie zna na .lua lepiej niz ja. Ten problem to dodanie rasy do Warcrafta tak, zeby ona dzialala tak samo jak dwie stare. Jednostki, upgrade'y, spelle a nawet surowce moge bez problemu wstawic, ale Dwarf jako oddzielna rase nie. Nie opisze tego tak na sucho, wiec skopiuje fragment skryptu:
DefineRaceNames(
"race", {
"race", 0,
"name", "human",
"display", "Human",
"visible"},
"race", {
"race", 1,
"name", "orc",
"display", "Orc",
"visible"},
"race", {
"race", 2,
"name", "neutral",
"display", "Neutral"})
DefineUnitTypeWcNames(
"unit-footman", "unit-grunt", "unit-peasant", "unit-peon", "unit-ballista",
"unit-catapult", "unit-knight", "unit-ogre", "unit-archer", "unit-axethrower",
"unit-mage", "unit-death-knight", "unit-paladin", "unit-ogre-mage",
"unit-dwarves", "unit-goblin-sappers", "unit-peasant",
"unit-peon", "unit-ranger", "unit-berserker", "unit-female-hero",
"unit-evil-knight", "unit-flying-angle", "unit-fad-man",
"unit-white-mage", "unit-beast-cry", "unit-human-oil-tanker",
"unit-orc-oil-tanker", "unit-human-transport", "unit-orc-transport",
"unit-human-destroyer", "unit-orc-destroyer", "unit-battleship",
"unit-ogre-juggernaught", "unit-nothing-22", "unit-fire-breeze",
"unit-nothing-24", "unit-nothing-25", "unit-human-submarine",
"unit-orc-submarine", "unit-balloon", "unit-zeppelin",
"unit-gryphon-rider", "unit-dragon", "unit-knight-rider", "unit-eye-of-vision",
"unit-arthor-literios", "unit-quick-blade", "unit-knight-rider", "unit-double-head",
"unit-wise-man", "unit-ice-bringer", "unit-man-of-light", "unit-sharp-axe",
"unit-skeleton", "unit-skeleton", "unit-daemon", "unit-critter",
"unit-farm", "unit-pig-farm", "unit-human-barracks", "unit-orc-barracks",
"unit-church", "unit-altar-of-storms", "unit-human-watch-tower",
"unit-orc-watch-tower", "unit-stables", "unit-ogre-mound",
"unit-inventor", "unit-alchemist", "unit-gryphon-aviary",
"unit-dragon-roost", "unit-human-shipyard", "unit-orc-shipyard",
"unit-town-hall", "unit-great-hall", "unit-elven-lumber-mill",
"unit-troll-lumber-mill", "unit-human-foundry", "unit-orc-foundry",
"unit-mage-tower", "unit-temple-of-the-damned", "unit-human-blacksmith",
"unit-orc-blacksmith", "unit-human-refinery", "unit-orc-refinery",
"unit-human-oil-platform", "unit-orc-oil-platform", "unit-keep",
"unit-stronghold", "unit-castle", "unit-fortress", "unit-gold-mine",
"unit-oil-patch", "unit-human-start-location", "unit-orc-start-location",
"unit-human-guard-tower", "unit-orc-guard-tower", "unit-human-cannon-tower",
"unit-orc-cannon-tower", "unit-circle-of-power", "unit-dark-portal",
"unit-runestone", "unit-human-wall", "unit-orc-wall", "unit-dead-body",
"unit-destroyed-1x1-place", "unit-destroyed-2x2-place",
"unit-destroyed-3x3-place", "unit-destroyed-4x4-place",
"unit-peasant", "unit-peon", "unit-peasant", "unit-peon", "unit-human-oil-tanker", "unit-orc-oil-tanker")
To dziala najprawdopodobniej tak... jesli "race" wynosi 0 to wybierany jest "unit-footman", w przeciwnym wypadku (lub gdy zostanie wybrany "race" 1) "unit-grunt". Ta regulka zgadzala by sie idealnie gdyby nie jednostki neutralne wplatane miedzy jednostki orkow i ludzi. Caly ten skrypt jest uzywany przy ladowaniu mapki. Wtedy komp "przerabia" gruntow na footmanow jesli gracz wybral rase "0", czyli "human".
Uwierzcie, ze zmienialem to na czterdziesci sposobow ale za kazdym razem nie wychodzilo dobrze. W "DefineRaceNames" wstawialem:
"race", {
"race", 3,
"name", "dwarf",
"display", "Dwarf",
"visible"},
<to raczej oczywiste xd>
nastepnie wstawialem krasnoludzki odpowiednik jednostki np.: "unit-footman", "unit-grunt", "unit-warrior". Uruchomilem gre... wybieram mapke, rase "Dwarf" i przy ladowaniu plikow gra sie wylacza. Wybierajac inna rase, mapka sie uruchamia lecz jednostki sa zupelnie pomieszane, w wyniku czego zamiast kopalni mamy Uthera, a smok ktory wisial nad wiezyczka stal sie gruntem siedzacym na farmie

. Mimo tego, ze wpisalem baranowi nowa "race" to ten wybiera nadal jakby byly tylko dwie. Mozliwe, ze caly problem nie jest tylko w tym akurat pliku, no ale niestety nie doszukalem sie tego w innych. Bardzo mozliwe, ze to dziala na zasadzie "PRAWDA" i "FALSZ". Wiec nasz "human" odpowiada za "PRAWDE" a w przeciwnym wypadku wybierany jest "FALSZ" czyli "orc" i to, ze dodalem nowa "race" tego nie zmienia. Obawiam sie rowniez, ze to moze byc zapisane w samym pliku .exe ale mam nadzieje, ze tak nie jest.
a teraz moja opcja b)...
mozemy umiescic trzy rasy (ludzi, krasnoludow i elfow) w jednej o nazwie "Alliance". Na poczatku mapki gracz wybieralby jedna z tych trzech ras i wtedy jego podstawowe jednostki zamienialyby sie w swoje odpowiedniki (dzialaloby to na zasadzie darmowego i blyskawicznego upgrade'u). Byloby to jednak spore utrudnienie dla gracza ktory wybral orkow (nie wiedzialby on jaka rasa gra przeciwnik). Poza tym moglibyscie zapomniec o grze Melee z kompami, bo nie da sie zaprogramowac tak kompa, zeby sam sobie wybieral ktora z tych trzech ras ma grac, wiec komp by nic nie robil i stal robolem w miejscu. W kampaniach owe rozwiazanie nie stanowiloby problemu bo gracz nie mialby mozliwosci zmiany rasy, a komp mialby rase z gory ustalona.
To chyba tyle co moge o tym powiedziec. Czekam na Wasze pomysly.