Przyjaciel-Friend
pomyslalam sobie, ze warto poznac edytor, i co sie z tym wiaze narzedzia, ktore mamy do swojej dyspozycji. jest to szczegolnie wazne na poczatku, kiedy nie jest sie obeznanym ze skryptem, i stad taki maly pomysl...
zaczne od aktorow na naszej scenie i oczywiscie od tego co lubie, od moich wodzirejow .
jednostki - rozrywka
Entities.U_Entertainer_NA_FireEater
Entities.U_Entertainer_NA_StiltWalker
Entities.U_Entertainer_NE_StrongestMan_Barrel
Entities.U_Entertainer_NE_StrongestMan_Stone
Entities.U_FireEater
- U_Entertainer_NA_FireEater
- U_Entertainer_NA_StiltWalker
- U_Entertainer_NE_StrongestMan_Barrel
- U_Entertainer_NE_StrongestMan_Stone
-> U_FireEater = U_Entertainer_NA_StiltWalker
dla dobr: AddOffer(_Merchant,_NumberOfOffers, _GoodType)
dla wodzirejow: AddEntertainerOffer (_Merchant, _Type)
function Mission_InitMerchants()
local traderId = Logic.GetStoreHouse(3) -- = Magazyn gracza z ID3
AddOffer (traderId, 5,Goods.G_Wood)
AddOffer (traderId, 5,Goods.G_Iron)
AddOffer (traderId, 5,Goods.G_Cow)
AddEntertainerOffer (traderId, Entities.U_FireEater)
end
Ostatnio edytowany przez sisi (2010-09-14 01:26:02)
Offline
Ooooo, a tych nazw gdzie się dokopałaś? Szkoda, że w zwykłym magazynie nie można wprowadzić funkcji na zmienne dobra, jak w przypadku statku...
W "Dwóch zamkach" obejrzałaś plik lua? Tam jest taka długa funkcja, znalazłam jej opis normalnie, w Tutorialu, a na którejś niemieckiej mapie konkretny zapis. I jak widziałaś to działa, w każdej wizycie statku można ustawić inne towary.
No tak, tylko że statek właśnie przypływa na krótko co jakiś czas, a magazyn stoi cały czas na miejscu....
Oczywiście mogliby się wysilić i wprowadzić też funkcję działającą według miesięcy - ale po co, przecież bachory chcą wojować!
Na tamtym forum wczoraj zauważyłam post "Jak mogę zaatakować miasto?" - chodziło mu nie o wroga, tylko jakieś inne AI...
Funkcję wstawiam dla pamięci:
function Mission_InitMerchants()
ActivateTravelingSalesman(8,{{ 6,{{Goods.G_Grain, 2},{Goods.G_Salt,2},{Goods.G_Stone,9},{Entities.U_FireEater,1}}},{8,{{Goods.G_Iron, 5},{Goods.G_Salt,2},{Goods.G_Stone,9},{Entities.U_FireEater,1}}},{11,{{Goods.G_Dye, 2},{Goods.G_Salt,2},{Goods.G_Stone,9},{Entities.U_FireEater,1}}}})
PlayerID = 8; miesiące = 6, 8, 11. Bardzo ważne jest otwarcie i zamknięcie każdej "tabeli" (tak to nazywają i one gdzieś tam są, tabela dóbr, tabela miesięcy, itp) czyli to: { }
Offline
Przyjaciel-Friend
jak to skad? http://www.bialyjednorozec.pun.pl/viewt … d=359#p359
bedac w edytorze przyjrzalam sie dokladniej Goal_Create. sa tam jeszcze inne nazwy wodzirejow:
jednostki GC - rozrywka
U_Entertainer_NA_PerformingFireEater
U_Entertainer_NA_PerformingStiltWalker
U_Entertainer_NE_PerformingStrongestMan_Barrel
U_Entertainer_NE_PerformingStrongestMan_Stone
niestety, nie wiem jaka pelnia role, bo postac chyba ta sama.
i nie moge wprowadzic tych jednostek do handlu.
widze wtedy charakterystyczny guzik, ktory mowi, ze to w skrypcie nie dziala
Ostatnio edytowany przez sisi (2009-03-10 23:53:29)
Offline
Acha, też masz ten "guzik"... ale czy nie sądzisz, że to dziwne? Jakby program całkiem nie wiedział, o co chodzi, to by nie pokazał tego guzika, tylko tak jak mnie w przypadku statku, od razu jakiś komunikat "Debug....." coś tam.
A tu pokazuje "guzik" i dopiero jak na niego najechałam myszą, to cały rząd komunikatów o błędzie, a jak kliknęłam mimo to, to wywaliła się gra.
Offline
Przyjaciel-Friend
jednostki - najemnicy
Entities.U_MilitaryBandit_Melee_ME
Entities.U_MilitaryBandit_Melee_SE
Entities.U_MilitaryBandit_Melee_NA
Entities.U_MilitaryBandit_Melee_NE
Entities.U_MilitaryBandit_Ranged_ME
Entities.U_MilitaryBandit_Ranged_SE
Entities.U_MilitaryBandit_Ranged_NA
Entities.U_MilitaryBandit_Ranged_NE
NE - ME - SE - NA to strefy klimatyczne, ale to juz chyba wszyscy wiedza ( polnocna Europa, srodkowa, poludniowa i polnocna Afryka / north Europe - middle - south - north Africa). ale klimat wplywa na rozny wyglad naszych najemnikow, na inny rodzaj uzbrojenia. w handlu mamy wiec dla nich rozne symbole/'guziki'.
- U_MilitaryBandit_Melee_ME
- U_MilitaryBandit_Melee_SE
- U_MilitaryBandit_Melee_NA
- U_MilitaryBandit_Melee_NE
- U_MilitaryBandit_Ranged_ME
- U_MilitaryBandit_Ranged_SE
- U_MilitaryBandit_Ranged_NA
- U_MilitaryBandit_Ranged_NE
function AddMercenaryOffer( _Mercenary, _Amount, _Type)
function Mission_InitMerchants()
local traderId = Logic.GetStoreHouse(3) -- Must be the Player ID of the offering Village/City/Cloister
AddMercenaryOffer(traderId , 5, Entities.U_MilitaryBandit_Melee_ME)
AddMercenaryOffer(traderId , 5, Entities.U_MilitaryBandit_Ranged_ME)
end
Ostatnio edytowany przez sisi (2010-09-14 01:17:21)
Offline
Przyjaciel-Friend
ja na guzik juz nie klikalam . bylam uprzedzona. no i natychmiast ta informacja: DEBUG
Offline
Przyjaciel-Friend
...
jednostki - osadnicy/naczelnicy wiosek (head - Unit NPC)
U_NPC_SpouseFat
U_NPC_Villager01_NE
U_NPC_Villager01_ME
U_NPC_Villager01_SE
U_NPC_Villager01_NA
- U_NPC_SpouseFat
- U_NPC_Villager01_NE
- U_NPC_Villager01_ME
- U_NPC_Villager01_SE
- U_NPC_Villager01_NA
-------------------------------------------------------------------------------------
nie mozemy nimi handlowac...
-------------------------------------------------------------------------------------
Ostatnio edytowany przez sisi (2009-03-11 23:59:13)
Offline
Przyjaciel-Friend
(ang.) Units
jednostki - osadnicy/naczelnicy klasztoru (head - Unit NPC)
U_NPC_Amma_NE
U_NPC_Monk_NE
U_NPC_Monk_ME
U_NPC_Monk_SE
U_NPC_Monk_NA
- U_NPC_Amma_NE
- U_NPC_Monk_NE
- U_NPC_Monk_ME
- U_NPC_Monk_SE
- U_NPC_Monk_NA
--------------------------------------------------------------------------------------------------
nie mozemy nimi handlowac...
--------------------------------------------------------------------------------------------------
Offline
Dziwna funkcja, nazwana po niemiecku, użyta w mapie "me_shanti" - znalazłam ją teraz na stronie bibliotek:
Ich bin eine kleine Überschrift
Es gibt wichtige Punkte:
* Punkt.
* Mach mal nen Punkt.
* Punktum. Schluß aus.
MachSchatzVersteck (Interaktives Gebäude mit verschiedenen Rohstoffen füllen)
function MachSchatzVersteck(_entity, _menge, _type)
_type = _type or Goods.G_Gold
_menge = _menge or 100
if type(_entity) == "string" then
_entity = Logic.GetEntityIDByName(_entity)
end
Logic.InteractiveObjectClearCosts(_entity)
Logic.InteractiveObjectSetInteractionDistance(_entity, 1000)
Logic.InteractiveObjectSetTimeToOpen(_entity, 0)
Logic.InteractiveObjectClearRewards(_entity)
Logic.InteractiveObjectAddRewards(_entity, _type, _menge)
Logic.InteractiveObjectSetAvailability(_entity,true)
Logic.InteractiveObjectSetRewardResourceCartType(_entity, Entities.U_ThiefCart) -- Hier der Wagen für Ressourcen.
Logic.InteractiveObjectSetRewardGoldCartType(_entity, Entities.U_GoldCart) -- Hier der Wagen für Gold
table.insert(HiddenTreasures, _entity)
end
machen - robić,
Schatz - skarb
Versteck - skrytka
menge - mnogość
W mapie "me_shanti" wygląda to tak ("turm" to obiekty interaktywne):
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
MachSchatzVersteck( "turm1", 1, Goods.G_Gold)
MachSchatzVersteck( "turm2", 1, Goods.G_Gold)
MachSchatzVersteck( "turm3", 1, Goods.G_Gold)
end
function MachSchatzVersteck(_entity, _menge, _type)
_type = _type or Goods.G_Gold
_menge = _menge or 100
if type(_entity) == "string" then
_entity = Logic.GetEntityIDByName(_entity)
end
Logic.InteractiveObjectClearCosts(_entity)
Logic.InteractiveObjectSetInteractionDistance(_entity, 1000)
Logic.InteractiveObjectSetTimeToOpen(_entity, 0)
Logic.InteractiveObjectClearRewards(_entity)
Logic.InteractiveObjectAddRewards(_entity, _type, _menge)
Logic.InteractiveObjectSetAvailability(_entity,true)
Logic.InteractiveObjectSetRewardResourceCartType(_entity, Entities.U_ThiefCart) -- Hier der Wagen für Resorcen.
Logic.InteractiveObjectSetRewardGoldCartType(_entity, Entities.U_GoldCart)--hier der Wagen für Gold
table.insert(HiddenTreasures, _entity)
end
Hmmmmm..... jest nawet "demo" chyba użycia tej funkcji...
http://wiki.siedler-aek.de/maps/machschatzversteck-demo
Ściągnęłam - jest mapka i plik lua, bardzo elegancko!
Zaraz zobaczę, o co to chodzi...
Offline
Ta funkcja (powyżej) pozwala z obiektów interaktywnych wysyłać nie tylko złoto, ale i inne dobra, trafiające do magazynu.
Obejrzałam w działaniu, co nie znaczy, że będę umiała użyć w skrypcie.
Natomiast tutaj: http://wiki.siedler-aek.de/maps?s=machschatzversteck
są inne dema do pobrania....
Offline
Przyjaciel-Friend
u mnie funkcja MachSchatzVersteck nie dziala. nie wiem jak to sie robi...
Offline
Ja jej jeszcze nie próbowałam, narazie zajęłam się czym innym - zwykłą aktywacją obiektów poprzez Quest, która mi w nowej mapie nie działa, a w poprzedniej działała! Wrrrrrrrrrrr.....
Offline
Przyjaciel-Friend
do postaci jeszcze wrocimy...
tu bedzie miejsce na Interactive Objects, czyli na to wszystko na co nie mam dzisiaj czasu. post bedzie systematycznie uzupelniany
(ang.) Entities - ...
Ineractive Objects - interaktywne objekty uzywane do skryptow
I_X_PortalTomb01_ME -> na mapie wystepuje pod nazwa "Dolmen" (ang.)
I_X_PortalTomb02_ME -> na mapie wystepuje pod nazwa "Dolmen" (ang.)
Ostatnio edytowany przez sisi (2009-03-30 01:43:52)
Offline
Przyjaciel-Friend
.... jeszcze o fukcji MachSchatzVersteck (HiddenTreasures)
zajrzalam do skryptu Midgard.lua (mapa Twojej roboty?)
jest tam wlasnie uzyta funkcja MachSchatzVersteck ale zapisana nieco inaczej niz w przykladowym demo
CreateQuests()
end
MachSchatzVersteck("tombo", 30, Goods.G_Stone)
-- 30 Einheiten Stein
end
-- _entity - der Scriptname der interaktiven Objekts
-- _amount - Menge der Güter die der Spieler erhalten soll
-- _type - Typ des zu liefernden Guts
-- =====================================================================
-- _time - Zeit bis zur Auslösung
-- _distance - Entfernung, wie dicht muss der Ritter an das Objekt heran
function MachSchatzVersteck(_entity, _amount, _type)
local _entity = Logic.GetEntityIDByName(_entity)
local _time = 5 --Defaultwerte, bei Bedarf zu ändern
local _distance = 1000 --Defaultwerte, bei Bedarf zu ändern
if Logic.IsEntityDestroyed(_entity) or not Logic.IsInteractiveObject(_entity) then
Logic.DEBUG_AddNote("Fehler in MachSchatzVersteck - falsche oder nicht existierende Entität")
assert(false)
end
Logic.InteractiveObjectSetPlayerState(_entity, 1, 0)
Logic.InteractiveObjectSetAvailability(_entity, true)
Logic.InteractiveObjectSetInteractionDistance(_entity, _distance)
Logic.InteractiveObjectSetTimeToOpen(_entity, _time)
Logic.InteractiveObjectClearCosts(_entity)
Logic.InteractiveObjectClearRewards(_entity)
Logic.InteractiveObjectAddRewards(_entity, _type, _amount)
Logic.InteractiveObjectSetRewardResourceCartType(_entity, Entities.U_ResourceMerchant) -- Hier der Wagen für Ressourcen.
Logic.InteractiveObjectSetRewardGoldCartType(_entity, Entities.U_GoldCart) -- Hier der Wagen für Gold
table.insert(HiddenTreasures, _entity)
end
poprawnie powinno wygladac to tak:
CreateQuests()
end
MachSchatzVersteck("Ruine_1")
-- 100 Gold Münzen, Standardzeit und -distanz
MachSchatzVersteck("Ruine_2", 200 )
-- 200 Gold Münzen, Standardzeit und -distanz)
MachSchatzVersteck("Ruine_3", 50, Goods.G_Cheese )
-- 50 Holz, Standardzeit und -Distanz
MachSchatzVersteck("Ruine_4", 35, Goods.G_Wool, 10 )
-- 35 Korn, 10 Sekunden bis zur Aktivierung, Standarddistanz
MachSchatzVersteck("Ruine_5", 50, Goods.G_Carcass, 10, 2000 )
-- 50 Wild, 10 Sekunden bis zur Aktivierung, Auslösedistanz 2000 Siedlerzentimeter
end
function MachSchatzVersteck(_entity, _amount, _type, _time, _distance )
_type = _type or Goods.G_Gold --Default Werte
_amount = _amount or 100 --Default Werte
_distance = _distance or 1000 --Default Werte
_time = _time or 5 --Default Werte
if not type(_entity) == "number" then
_entity = GetEntityId(_entity)
end
if Logic.IsEntityDestroyed(_entity) or not Logic.IsInteractiveObject(_entity) then
Logic.DEBUG_AddNote("Fehler in MachSchatzVersteck, falsche Entität")
assert(false)
end
Logic.InteractiveObjectClearCosts(_entity)
Logic.InteractiveObjectSetInteractionDistance(_entity, _distance)
Logic.InteractiveObjectSetTimeToOpen(_entity, _time)
Logic.InteractiveObjectClearRewards(_entity)
Logic.InteractiveObjectAddRewards(_entity, _type, _amount)
Logic.InteractiveObjectSetAvailability(_entity,true)
Logic.InteractiveObjectSetPlayerState(_entity, 1, 0)
Logic.InteractiveObjectSetRewardResourceCartType(_entity, Entities.U_ThiefCart) -- Hier der Wagen für Ressourcen.
Logic.InteractiveObjectSetRewardGoldCartType(_entity, Entities.U_GoldCart) -- Hier der Wagen für Gold
table.insert(HiddenTreasures, _entity)
end
co ciekawe uzycie w pierwszej formie tej funkcji z dodatkiem 'local' - > local _entity zezwala jedynie na jednorazowe skorzystanie z zasobu. natomiast uzywajac wg wskazowek mnogosc jest nieskonczona i limitowana jedynie miejscem w spichlerzu.
ale co mnie osobiscie zaintrygowalo, to mapa MachSchatzVersteck-Demo.s6map.
jest taki ciekawy moment gdy aktywuje sie serowy skarb, mozna pobrac jednorazowo tylko jeden woz, ale dlaczego? przypadek? czy za sprawa spichlerza? w skrypcie nic na to nie wskazuje...
Ostatnio edytowany przez sisi (2009-08-23 10:14:18)
Offline