0001 | $Sectorlist = array alloc: size=0 0002 | append {Омикрон Лиры} ...
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 38



 



0001 | $Sectorlist = array alloc: size=0 0002 | append {Омикрон Лиры} ...

Terran Conflict (X3TC) / Форум / Скрипты и моды для X3 Terran Conflict / Учимся простейшим скриптам

Учимся простейшим скриптам
(http://x3tc.net/x3_forum/?tid=672)
Автор: Malstrime
(29.10.2011 18:39:51)

 VladikF писал(а):
 Код:
  1. 0001 | [color=yellow]$Sectorlist[/color] = array alloc: size=0
  2. 0002 | append {[color=green]Омикрон Лиры[/color]} to array [color=yellow]$Sectorlist[/color]
  3. 0003 | append {[color=green]Мальстрим[/color]} to array [color=yellow]$Sectorlist[/color]
  4. 0004 | append {[color=green]Королевский тупик[/color]} to array [color=yellow]$Sectorlist[/color]
  5. 0005 | [color=yellow]$listsize[/color] = size of array [color=yellow]$Sectorlist[/color]
  6. 0006 | [color=yellow]$ship[/color] = Элита
  7. 0007 | while [color=yellow]$count[/color] > [color=yellow]$listsize[/color]
  8. 0008 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
  9. 0009 | | [color=yellow]$sector[/color] = [color=yellow]$Sectorlist[$Count][/color]
  10. 0010 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=[color=yellow]$sector[/color] x=$x y=0 z=0
  11. 0011 | | inc [color=yellow]$count[/color]
  12. 0012 | end
  13. 0013 | return [color=blue]null[/color]
 
 

   Во-первых, чтобы увеличивать $count на единичку, надо задать ей начальное значение 0 ("$count = 0"). Во вторых, как здесь написано "$count > $sectorlist", то есть таким образом возможны два варианта, если учитывать, что значение $count неизвестно. Первое - если $count меньше либо равно $listsize (в данном случае $count меньше либо равно тройке), то тогда цикл не совершит НИ ОДНОГО  витка, и НИ ОДИН корабль не будет создан; второе - $count больше $listsize (то бишь $count больше тройки) - корабли также не будет создан, постольку поскольку сектора, в которые предположительно будут добавляться корабли, находятся в массиве $Sectorlist по индексам 0-2, а так как $count больше двойки и с каждым новым витком будет увеличиваться на единицу, отсюда следует, что "Элита" будет создаваться "нигде" (так как $sector будет равна null), то бишь ничего не произойдет (и корабли опять не создадутся), а цикл станет бесконечным и мгновенно подвесит игру. Epic fail.

Минус за дезу.

upd:
 Код:
  1. 0001 | [color=yellow]$list[/color] = 10
  2. 0002 | [color=yellow]$ship[/color] = Нова Рейдер
  3. 0003 | [color=green]while[/color] [color=yellow]$count[/color] > [color=yellow]$list[/color]
  4. 0004 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
  5. 0005 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=Аргон Прайм x=[color=yellow]$x[/color] y=0 z=0
  6. 0006 | | inc [color=yellow]$count[/color]
  7. 0007 | [color=red]end[/color]
  8. 0008 | return [color=blue]null[/color]
 

   Аналогично.

дерево темы → Учимся простейшим скриптам Учимся простейшим скриптам »
Список игр