Ogłoszenie

Forum dwutematyczne:

- opowiastki i grafika o tematyce "magicznej".
- gry ekonomiczno-strategiczne (głównie The Settlers VI) i inne nie wojenne.

Aby móc pisać i czytać całe Forum, trzeba się zalogować. Graczy z RoM proszę o rejestrację nickiem z gry!


#46 2009-10-14 00:45:23

 amdep

Administrator

Skąd: Warszawa
Zarejestrowany: 2008-10-18
Posty: 1045
Znak Zodiaku: Byk
WWW

Re: Edytor map (S6) - język skryptu

Nie zadziałało... jestem śpiąca, dziś już nie dojdę, dlaczego. Jutro wieczorem obejrzę...


Mayanna
Druid/ Zwiadowca/ Strażnik
-------------------------
Życie jest magią...

Offline

 

#47 2009-10-28 23:37:34

sisi

Przyjaciel-Friend

Zarejestrowany: 2009-02-05
Posty: 647

Re: Edytor map (S6) - język skryptu

hmmm...
u mnie tez nie zadzialalo.
wrocilam na http://www.siedler-games.de/forum/s6-sc … stens.html
i doczytalam:
mowa byla o edycji we Wschodnich Krolestwach. funkcje podobno sa przetestowane i dzialaja w kazdej strefie klimatycznej.
i to jest mozliwe, najprawdopodobniej edytor z podstawki nie rozpoznaje tych funkcji, szkoda...

Offline

 

#48 2009-10-29 02:33:53

 amdep

Administrator

Skąd: Warszawa
Zarejestrowany: 2008-10-18
Posty: 1045
Znak Zodiaku: Byk
WWW

Re: Edytor map (S6) - język skryptu

Oczywiście, w WK są wszystkie strefy. I jest kilka fajnych tekstur i przedmiotów - no kup je wreszcie! 


Mayanna
Druid/ Zwiadowca/ Strażnik
-------------------------
Życie jest magią...

Offline

 

#49 2009-11-02 21:43:45

sisi

Przyjaciel-Friend

Zarejestrowany: 2009-02-05
Posty: 647

Re: Edytor map (S6) - język skryptu

zaczelam sie zastanawiac nad sciezkami i punktami wyznaczajacymi droge. nie jest to wcale takie oczywiste, ale odnalazlam nieco informacji na ten temat. zaczne chyba od tutorialu, zeby byl przeglad calosci:

Tutorial -> S6_SEED_ScriptTutorials
10.[b]Waypoints = punktydrogi
(punkty wyznaczajace droge...  dla niektorych settlersow jak jednostki NPC)

z reguly funkcja ta jest umieszczana w FMA (Mission_FirstMapAction), ale co sie z tym wiaze? nasz Settler rozpoczyna droge zaraz po uruchomieniu gry. przypuszczam, ze mozna ja uruchomic rowniez w questach poprzez Reward_MapScriptFunction... ale nie sprawdzalam. mozemy uzyc nazwane budynki jako punkty drogi, ale mogą zdarzyć się problemy w połączeniu z innymi ustawieniami

local Entity = Logic.GetEntityIDByName(NPCName)
local ControlPointsList = { WPName1, WPName2 }
Path:new( Entity, ControlPointsList, Loop, Back, OnArrival, OnReturn, nil, LoopCallback, nil, Distance )

gdzie:
NPCName - script name (skryptowa nazwa jednostki NPC)
WPName - Name of set waypoints (nazwa wytyczonych punktow, ktorym przypisujemy numerek 1, 2, 3... itd
Loop - pętla, jesli wstawimy tu 'true' (prawda) NPC zawroci do pierwszego punktu jak tylko dojdzie do ostatniego punktu wyznaczajacego droge. wtedy ponownie przejdzie przez kolejne punkty.
Back - powrót, jesli okreslony jako 'true', NPC z powrotem przejdzie przez wszystkie punkty wyznaczajace sciezke
OnArrival - unikalna funkcja, która jest aktywowana jeden raz gdy NPC osiągnie swój cel
(ostatni punkt trasy)
OnReturn - unikalna funkcja (wraz z 'back' = true), która jest aktywowana jeden raz gdy NPC powroci do pierwszego punku wyznaczajacego sciezke
nil = 0 / intrygujace 'zero' lub 'nic', ktore nie wiadomo czego dotyczy
LoopCallback - unikalna funkcja, która jest aktywowana co sekunde tak długo, jak NPC podaza wyznaczona sciezka
nil = 0 / ponownie intrygujace 0, ktore nie wiadomo czego dotyczy
Distance - dystans

przyklad dla jednostki NPC nazwanej “NPC1“, ktora wedruje jeden raz z punktu “NPC1_WP0” do punktu “NPC1_WP1“:

do zapisania w FMA
local Entity = Logic.GetEntityIDByName("NPC1")
local ControlPointsList = { "NPC1_WP0", "NPC1_WP1" }
Path:new( Entity, ControlPointsList )

przyklad dla jednostki NPC nazwanej “NPC2“, ktora wedruje z punktu “NPC2_WP0“ przez punkt “NPC2_WP1“ do punktu “NPC2_WP2“, zawraca wokol niego i powraca do punktu startowego. NPC musi zblizyc sie do kazdego punktu na odleglosc nie mniejsza niz 99 jednostek (tu: settlerowskich centymetrow)

do zapisania w FMA
local Entity = Logic.GetEntityIDByName("NPC2")
local ControlPointsList = { "NPC1_WP0", "NPC1_WP1", "NPC1_WP2" }
Path:new( Entity, ControlPointsList, nil, true, nil, nil, nil, nil, nil,99)

c.d.n.

Ostatnio edytowany przez sisi (2009-11-02 23:03:42)

Offline

 

#50 2009-11-03 18:17:48

 amdep

Administrator

Skąd: Warszawa
Zarejestrowany: 2008-10-18
Posty: 1045
Znak Zodiaku: Byk
WWW

Re: Edytor map (S6) - język skryptu

Tak, ja też to sobie przetłumaczyłam parę dni temu (nie zamieszczałam, bo wiesz jakie to tłumaczenie) i zrobiłam test.

Uruchamia się poprzez Reward_MapScriptFunktion, jak najbardziej.

Prawidłowości wykryłam takie:

Jeśli użyjemy kasztelana posiadającego miasto w grze, to on natychmiast ucieka do siebie, ale jeśli w ruchu "złapie go" funkcja, na przykład Hakim do czegoś podjedzie, to zawraca i odbywa zadaną drogę, po czym znowu ucieka.

Jeśli użyjemy kasztelana posiadającego ID, ale bez własnego terytorium, to grzecznie przejdzie drogę (na przykład w tę i z powrotem "BACK = true", no i zostanie już w tym miejscu, gdzie skończył.

Możemy też użyć "chłopa" z ID któregoś z terytoriów - ten nie będzie szedł do siebie, wiadomo, tylko zostanie na ostatnim punkcie drogi.

Jeśli użyjemy rycerza, przypisanego do jakiegoś terytorium, nie działa. On nie jest NPC... 

Użycie kasztelana ma większy sens niż chłopa, bo jest on bardziej "widoczny" w grze....


Mayanna
Druid/ Zwiadowca/ Strażnik
-------------------------
Życie jest magią...

Offline

 

#51 2009-11-03 21:39:32

sisi

Przyjaciel-Friend

Zarejestrowany: 2009-02-05
Posty: 647

Re: Edytor map (S6) - język skryptu

ciekawe co piszesz, bo ja mialam troche klopotu z uruchomieniem poprzez Reward_MapScriptFunktion. ale tez nie robie wszystkiego poprawnie. na malych testowkach nie chce mi sie wstawiac zamku, rynku, spichlerza czy kosciola dla ID1, a wtedy ta funkcja nie dziala...
gdzie wpisalas funkcje dla waypoints? w FirstMapAction?

ale napotykajac na te wszystkie problemy zaczelam grzebac w sieci i znalazlam tego typu funkcje, ale dla statkow i w innej nieco formie. autorem jest oczywiscie LordFWD
http://www.siedler-games.de/forum/s6-sc … andel.html
na podstawie tego skryptu zrobilam mala 5cio minutowke... i to dziala, moze nieco byle jak
> 'Edytor Map'

Ostatnio edytowany przez sisi (2009-11-04 22:18:10)

Offline

 

#52 2009-11-04 14:25:59

 amdep

Administrator

Skąd: Warszawa
Zarejestrowany: 2008-10-18
Posty: 1045
Znak Zodiaku: Byk
WWW

Re: Edytor map (S6) - język skryptu

Tak, w tym miejscu wpisałam, poniżej skrypt.

A dla mnie ciekawe jest to Twoje, jeśli było dla statków, to super!!!!! Szukałam tego.  W tym demo Lorda, gdzie statek płynie przez całą mapę, funkcja dotyczy również ruchu kamery i jakichś innych rzeczy, nie mogę jej rozgryźć.



Ooo, Lord zamieścił jakiś rar, ale link już nie działa, bo to z 2007 roku...

A zanim się przegryzę przez te niemieckie wskazówki i całą wymianę zdań, to mi się odechce uruchamiać statku. Psiakrew, żeby tacy zapaleńcy byli na angielskojęzycznym forum!  Translator zdecydowanie lepuej razdi sobie z angielskim!



----------------------------------------------------------------------------------------------------------------------
function Mission_FirstMapAction()

    -- init players in singleplayer games only
    if Framework.IsNetworkGame() ~= true then

        Startup_Player()
        Startup_StartGoods()
        Startup_Diplomacy()
       
    end       

    -- create quests
    do
        local MapName = Framework.GetCurrentMapName()
        local ScriptName = "Maps\\ExternalMap\\"..MapName.."\\QuestSystemBehavior.lua"
        Script.Load(ScriptName)

        CreateQuests()
    end
function MS()
       local Entity = Logic.GetEntityIDByName("MS")
       local ControlPointsList = { "W1", "W2", "W3", "W4" }
       Path:new( Entity, ControlPointsList, nil, true, nil, nil, nil, nil, nil,99)

       end

function CS()
       local Entity = Logic.GetEntityIDByName("CS")
       local ControlPointsList = { "W1", "W2", "W3", "W4" }
       Path:new( Entity, ControlPointsList, nil, true, nil, nil, nil, nil, nil,99)

       end
end


Mayanna
Druid/ Zwiadowca/ Strażnik
-------------------------
Życie jest magią...

Offline

 

#53 2009-11-04 16:25:09

sisi

Przyjaciel-Friend

Zarejestrowany: 2009-02-05
Posty: 647

Re: Edytor map (S6) - język skryptu

... i to wywolujesz poprzez Reward_MapFunction?
wg mnie to powinno dzialac od razu po wystartowaniu mapy... nie rozumiem... hmmm

Offline

 

#54 2009-11-04 20:14:26

 amdep

Administrator

Skąd: Warszawa
Zarejestrowany: 2008-10-18
Posty: 1045
Znak Zodiaku: Byk
WWW

Re: Edytor map (S6) - język skryptu

sisi napisał:

... i to wywolujesz poprzez Reward_MapFunction?
wg mnie to powinno dzialac od razu po wystartowaniu mapy... nie rozumiem... hmmm

Wydaje mi się, że funkcja służy właśnie do tego, żeby to NIE działało po uruchomieniu mapy, identycznie jak z AI BUilding Order.

Obejrzałam skrypt Twojej ślicznej mapki, ale ta funkcja jest dla mnie za trudna, nie rozumiem...      


Mayanna
Druid/ Zwiadowca/ Strażnik
-------------------------
Życie jest magią...

Offline

 

#55 2009-11-04 22:15:22

sisi

Przyjaciel-Friend

Zarejestrowany: 2009-02-05
Posty: 647

Re: Edytor map (S6) - język skryptu

... ja tez wszystkiego nie rozumiem, ale wyjasnie to co wiem.

function Droga()
if IsNear("kapturek", "Hakim", 1500) then
    Path:new(Logic.GetEntityIDByName("kapturek"), GetEntitiesNamedWith("Kp"), true, nil, nil, nil, true, nil, nil,99)

return true -- ?
    end
end

function GetEntitiesNamedWith(_name)
    local list = {};
    local i = 1;
    local bFound = true;
    while bFound do
        local entity = Logic.GetEntityIDByName(_name .. i);
        if entity ~= 0 then
            table.insert(list, entity);
        else
            bFound = false;
        end
        i = i + 1;
    end
    return list;
end

if (ang) = jesli
IsNear = jest blisko (near=blisko) > IsNear funkcja rozpoznawalna przez program
then = wtedy, to ....
if IsNear("kapturek", "Hakim", 1500) then
tego wiersza wcale nie jestem pewna (nie wiem czy jest konieczny), ale mialam problem z wywolaniem funkcji wiec zrobilam to 'na sile' i tak juz zostalo

Logic.GetEntityIDByName("kapturek")
> to odpowiada temu: local Entity = Logic.GetEntityIDByName("MS")
> i zastepuje to w: Path:new( Entity, )

GetEntitiesNamedWith("Kp") (... zerznelam zywcem, bo tego tez do konca nie rozumiem)
> odpowiada temu: local ControlPointsList = { "W1", "W2", "W3", "W4" }
> zastepuje w Path:new ( Entity, ControlPointsList, )

zeby komputer wiedzial co "GetEntitiesNamedWith" ma robic opisano funkcje funkcja ponizej.
ma ona dodatkowy smaczek, bo zlicza wszystkie skryptowe Entity w ktorych wystepuja litery
"Kp" = { "Kp1", "Kp2", "Kp3", "Kp4", ... }

jednym slowem twoja funkcje:

function MS()
       local Entity = Logic.GetEntityIDByName("MS")
       local ControlPointsList = { "W1", "W2", "W3", "W4" }
       Path:new( Entity, ControlPointsList, nil, true, nil, nil, nil, nil, nil,99)
end

moglabym zapisac tak:

function MS()
    Path:new(Logic.GetEntityIDByName("MS"), GetEntitiesNamedWith("W"), nil, true, nil, nil, nil, nil, nil,99)
end

function GetEntitiesNamedWith(_name)
    local list = {};
    local i = 1;
    local bFound = true;
    while bFound do
        local entity = Logic.GetEntityIDByName(_name .. i);
        if entity ~= 0 then
            table.insert(list, entity);
        else
            bFound = false;
        end
        i = i + 1;
    end
    return list;
end

kazdy warunek, czyli if czy while musi byc zamkniety poprzez uzycie end i kazda funkcja tez musi byc zamknieta  end, dlatego czasami jest 2x end

pomylilam sie z linkami. ten jest do tego, zeby statek zamorskiego kupca plywal od portu do portu, ale chyba juz bez handlu...
http://www.siedler-games.de/forum/s6-sc … ndler.html
poprzedni link poprawilam.

Ostatnio edytowany przez sisi (2009-11-05 14:30:49)

Offline

 

#56 2009-11-05 12:54:36

 amdep

Administrator

Skąd: Warszawa
Zarejestrowany: 2008-10-18
Posty: 1045
Znak Zodiaku: Byk
WWW

Re: Edytor map (S6) - język skryptu

Acha, to znaczy ten link jest do "Kupca morskiego", a ten poprzedni to "TradeShip bewegen ohne Handel" czyli bez handlu.
No tak, widzę o co chodzi, ale znowu opis funkcji Lorda jest po niemiecku.

Wracając do funkcji "drogowej" czy nie mogłaś użyć jej w wersji "podręcznikowej"? To znaczy, czy coś się zyskuje - poza zabawnym, posuwistym krokiem - używając tej bardziej skomplikowanej funkcji?

Bo jeśli chodzi o "zliczanie", to nie jest specjalnie ważne - znacznie gorzej jest nazwać wszystkie entity, niż potem te nazwy wpisać / wkopiować w funkcji...


Mayanna
Druid/ Zwiadowca/ Strażnik
-------------------------
Życie jest magią...

Offline

 

#57 2009-11-05 14:26:55

sisi

Przyjaciel-Friend

Zarejestrowany: 2009-02-05
Posty: 647

Re: Edytor map (S6) - język skryptu

w zwiazku z moimi problemami na mapie nie moglam wywolac funkcji, wiec zaczelam szukac innych rozwiazan.
a nie wpisalam do FMA, bo bylam przekonana ze funkcja wystartuje mi od razu po otworzeniu mapy.
ale masz racje, 'przedobrzam'. za duzo kombinuje zamiast odwolac sie do najprostszych schematow.

spotkalam sie z limitem wayponits = 9
funkcja Lorda, czy tez OldMcDonalda, rozwiazuje ten problem. daje jeszcze jedna korzysc, raz wpisana do lua pozwala w edytorze dostawiac, uzupelniac, poprawiac bez ponownych zmian w skrypcie.

a statki smigaja, ze hej. przez laki, pola i morza . w petli, w powrotach i innych. wczoraj wieczorem przetestowalam...

Ostatnio edytowany przez sisi (2009-11-05 14:32:07)

Offline

 

#58 2009-11-05 15:31:05

 amdep

Administrator

Skąd: Warszawa
Zarejestrowany: 2008-10-18
Posty: 1045
Znak Zodiaku: Byk
WWW

Re: Edytor map (S6) - język skryptu

No tak, to jest realna korzyść - można dostawiać i ujmować punkty, według potrzeby, a funkcja i tak je zliczy.

Ale ja jej nie kumam! Nie lubię używać, jak nie rozumiem...


Ściągnęłam plik lua przygotowany przez Lorda, ten "TradeShip bewegen ohne Handel", "przetłumaczyłam" sobie - niemiecki tłumaczy fatalnie! - i nadal nic nie rozumiem.

I obawiam się tego:
--Die Aufrufe entsprechend in Global-Funktionen rein

tak w skrócie to opisane, a z tymi "globalnymi" czytałyśmy gdzieś ostrzeżenie...

Pokaż ten śmigający statek!  Że przez łąki też, to wiadomo, całkiem zwyczajny kupiec morski też pojedzie po łące jak będzie po drodze... 

Hmmm....  fajne to jest, nawet bardzo, ale w scenariuszu rzadko się przyda, ponieważ nie wiadomo, jak to połączyć z czymś innym.. może coś "zniknąć" przy statku, albo się pojawić, ale co z tego? Reward_MoveSettler albo ta funkcja punktów drogi uruchamia tylko NPC, nie można ze statku na przykład wyładować Wikingów, albo wozu z towarami, albo rycerza, który potem by normalnie działał...


A wogóle, a propos scenariuszy - znowu jestem zła jak licho, bo co wymyślę jakąś logiczną historyjkę, to się okazuje, że nie da się jej zrobić, bo brakuje różnych funkcji!
Ostatnio wkurzył mnie brak możliwości wysłania wozu z towarem do budynku innego niż magazyn. Bardzo mnie to wkurzyło i znowu odłożyłam mapę.

Ponadto, brakuje mi jakichś fajnych "gadżetów" czyli tych różności, które są dziale Doodads. No i budynków jest za mało. I nie różnią się w zależności od strefy.

Apetyt rośnie w miarę jedzenia, a oni nic nowego nie dają!   Wrrrrrrrrrrr....

I jest godzina 15,30 a za oknem tak szaro, że właściwie ciemno!  Wrrrrrrrrrr.....

Hi, hi, hi, naszedł mnie nastrój okropnie buntowniczy!   




Mayanna
Druid/ Zwiadowca/ Strażnik
-------------------------
Życie jest magią...

Offline

 

#59 2009-11-05 18:20:59

 amdep

Administrator

Skąd: Warszawa
Zarejestrowany: 2008-10-18
Posty: 1045
Znak Zodiaku: Byk
WWW

Re: Edytor map (S6) - język skryptu


Ciąg dalszy.

Teraz już jestem w nastroju depresyjnym.

Zrobiłam test tej funkcji Lorda - i nic.  Nie rozumiem opisu albo samej funkcji, a już mi się wydawało, że wiem, co jest co. 

Bardzo podejrzane jest to, że Edytor zażądał jeszcze jednego "end" do zamknięcia funkcji "z linii 17" czyli Mission_FirstMapAction. Moim zdaniem ta ma być dwa "end", ale się nie dało.

Mój statek to D_X_TradeShip, nazwany "MS"
punkty to S_ShipPath, nazwane W1, W2, w3,... W6.  Wszystko ma ID = 0, zgodnie z jego opisem, tak jak go zrozumiałam...

"HA" to nazwa dla figurki Hakima, wstawiłam figurkę obok XD_StartPosition. Oczywiście Hakim podchodzi do statku.



----------------------------------------------------------------------------------------------------------------------
function Mission_FirstMapAction()

    -- init players in singleplayer games only
    if Framework.IsNetworkGame() ~= true then

        Startup_Player()
        Startup_StartGoods()
        Startup_Diplomacy()
       
    end       

    -- create quests
    do
        local MapName = Framework.GetCurrentMapName()
        local ScriptName = "Maps\\ExternalMap\\"..MapName.."\\QuestSystemBehavior.lua"
        Script.Load(ScriptName)

        CreateQuests()
    end

if IsNear("MS", "HA", 2000) then

Path:new(Logic.GetEntityIDByName("MS"), GetEntitiesNamedWith("W"), nil, nil, nil, nil, true)

function GetEntitiesNamedWith(_name)
    local list = {};
    local i = 1;
    local bFound = true;
    while bFound do
        local entity = Logic.GetEntityIDByName(_name .. i);
        if entity ~= 0 then
            table.insert(list, entity);
        else
            bFound = false;
        end
        i = i + 1;
    end
    return list;
end
end
end


Mayanna
Druid/ Zwiadowca/ Strażnik
-------------------------
Życie jest magią...

Offline

 

#60 2009-11-05 18:41:02

sisi

Przyjaciel-Friend

Zarejestrowany: 2009-02-05
Posty: 647

Re: Edytor map (S6) - język skryptu

fajnie, ze wchodzisz w gre.
(jestem jeszcze w pracy, ale cos nie moge sie skupic)

Global-Funktionen to sa te wszystkie funkcje, ktore zapisujesz w w skrypcie lua (ten akurat tez jest globalny). pisze tu o zwyklych funkcjach handlowych, czy tez to co zapisujesz w FMA - to jest wlasnie globalny skrypt lua. Lord pisze, ze podane przez niego funkcje sa do zapisania w globalnym skrypcie lua jako funkcje globalne ...

nie można ze statku na przykład wyładować Wikingów, albo wozu z towarami, albo rycerza, który potem by normalnie działał...

mozna, w lua wszystko mozna . gorzej jest z uruchomieniem tych funkcji poprzez questy...

fragment twojego skryptu, tam gdzie sa braki (czemu zapisujesz to wszystko w FMA?)

-- tutaj brakuje nazwy funkcji > function AnnaMaria()
if IsNear("MS", "HA", 2000) then  -- to jest warunek 'jesli cos to';
Path:new(Logic.GetEntityIDByName("MS"), GetEntitiesNamedWith("W"), nil, nil, nil, nil, true) -- warunek musi byc zakonczony 'end'. funkcja tez musi byc zakonczona przez 'end'

... wiesz, tak patrze na to wszystko i mysle, ze skoro zapisujesz to wszystko w FMA, to chyba nie potrzebujesz nazwy funkcji, ale warunek musisz zamknac koniecznie. i jeszcze jedna wazna rzecz, ktorej nie bardzo wychwytuje. oni po kazdym warunku, a przed zamknieciem funkcji, lub nawet przed zamknieciem warunku (jesli nie ma innych parametrow) wrzucaja 'return true'... zwroc na to uwage.

Bardzo podejrzane jest to, że Edytor zażądał jeszcze jednego "end" do zamknięcia funkcji "z linii 17" czyli Mission_FirstMapAction.

wszystko sie zgadza

....
  end    -- zamkniecie dla warunku 'if'
i = i + 1;
end
   -- zamkniecie dla warunku 'while'  > while bFound do (podczas gdy cos tam, zrob...) 
    return list;
end   -- zamkniecie dla function GetEntitiesNamedWith(_name)
end   -- zamkniecie dla warunku 'if' > if IsNear ( i to moze byc źle, za pozno...)
end   -- zamkniecie dla function Mission_FirstMapAction()

Ostatnio edytowany przez sisi (2009-11-05 22:12:32)

Offline

 
Forum prywatne Anny Marii

Minecraft PC

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
https://nerko.pl/ panele ogrodzeniowe Kostrzyn nad Odrą f stomatologia łódź ustkamchatsk