blender3d.cz
http://www.blender3d.cz/forum/

Action v belender game engine, python
http://www.blender3d.cz/forum/viewtopic.php?f=7&t=920
Stránka 11

Autor:  Ash [ úte dub 12, 2005 12:32 pm ]
Předmět příspěvku: 

Základný problém je v tom, že controler so skriptom ipo.py máš v objekte data, ale premenné (properties) máš v objekte lipa. Takže musíš vyrobiť rovnaký controler pre objekt lipa, prepojiť ho rovnako ako pôvodný kontroler, ten zmazať a malo by to fungovať.

Ale ten skript je hrôza (okrem tej úvodnej funkcie ;) ). Celé by si to mala nasekať do nejakej dátovej štruktúry a z nej vyberať dáta podľa vstupných premenných. No nakoniec, napísanie a údržba toho skriptu ti je dostatočným trestom...

Autor:  Ash [ úte dub 12, 2005 2:39 pm ]
Předmět příspěvku: 

To, že je to v jednom skripte, je v poriadku, nedeje sa tam toho tak veľa, iba sa tam stále opakuje tá istá konštrukcia.
Dalo by sa to prerobiť takto:
Kód:
params = [['wind_nodata.gif',[[[0,1000],[0,0,0,0,0,0,0,0,0,0]]]],
['nodir.gif',[[[0,1000],[0,0,0,0,0,0,0,0,0,0]]]],['vrb.gif',[[[0,5],[0,0,0,1,0,0,0,0,0,0]],[[6,12],[0,0,0,0,1,0,0,0,0,0]],[[12,1000],[0,0,0,0,0,1,0,0,0,0]]]]]
for gif in params:
  if string.count(data,gif[0]) > 0:
    for wind in gif[1]:
      if vitr >= wind[0][0] and vitr <= wind[0][1]:
        own.b_j = wind[1][0]
        own.s_j = wind[1][1]
        own.v_j = wind[1][2]
        own.b_s = wind[1][3]
        own.s_s = wind[1][4]
        own.v_s = wind[1][5]
        own.s_z = wind[1][6]
        own.v_z = wind[1][7]
        own.s_v = wind[1][8]
        own.v_v = wind[1][9]

Samozrejme treba do params dopísať všetky možnosti (ja som tam zadal len sekciu #bez dat a #promenlivo), ale malo by to nahradiť tých 700 riadkov pôvodného skriptu (neskúšal som spustiť).

Ak nefungujú animácie napriek tomu, že premenné sú nastavené, tak bude zrada inde.

Autor:  Ash [ čtv dub 14, 2005 9:06 am ]
Předmět příspěvku: 

Nie som si istý, či som to pochopil správne. Vysvetlivky k štruktúre premennej params:
params = ['icons/0cloud',[[0,1000],[0,0,1]]]
'icons/0cloud' - reťazec, ktorý je dodaný zo vstupných dát
[0,1000] - minimálna a maximálna hodnota vetra
[0,0,1] - hodnoty, ktoré je potrebné nastaviť do premenných

Ak sa namýlim, v tomto prípade hodnoty vetra nepotrebuješ, takže by to mohlo vyzerať takto:
Kód:
params = ['icons/0cloud',[0,0,1]]
for icons in params:
  if string.count(data,icons[0]) > 0:
    own.opar = icons[1][0]
    own.dest = icons[1][1]
    own.snih = icons[1][2]


Ale v princípe by malo fungovať aj tvoje riešenie. napíš, aký v tom máš problém.

Autor:  Ash [ čtv dub 14, 2005 1:41 pm ]
Předmět příspěvku: 

Tak, na riadku 137 to chce uzavrieť do ešte jedných hranatých zátvoriek:
Kód:
params = [['icons/0cloud',[0,0,1]]]

Keď params rozšíriš o ďalšie záznamy, tak tie pridané zátvorky budú vonkajšie zátvorky celého zoznamu.

A potom si na riadku 689 zapoznámkuj text "teplota".

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/