Циклы и массивы в Injection=)

Ask for help

Moderators: Murderator+, Murderator

Post Reply
skazo4nik
Posts: 2
Joined: 2006-07-14 11:15:15

Циклы и массивы в Injection=)

Post by skazo4nik »

Вопрос таков - к примеру, есть такая штука

Code: Select all

UO.WaitMenu ('Blacksmithing', 'Weapons', 'Weapons','Swords & Blades','Swords & Blades', 'cutlass (8 iron ingot)')
Можно ли каким-то образом забить массив и потом его перебрать, - или же прям туда запихнуть?
Что-то типа как в перле
uo.waitmenu("'".join("','",@x)."'");

?=)
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Code: Select all

sub inscription() 
Var blanc='0x0E34'   # тип бланка 
Var food='0x097B' # тип еды 
Var sunduk=0x4027308F # ИД где лежат реги и бланки 
Var a, k, z, f 
Var b='Cure' # Имя вашего скрола 
Var msg='You put' 
Var msg1='You fail' 
Var MaxWeight= 600 
Var scroll='0x1F37' # Тип нарисованного скрола 
a = 2 # !!!Круг в котором находится ваш спел!!! 


 DIM reg[9] 

        reg[0]=0x0F88 
        reg[1]=0x0F85 
        reg[2]=0x0F84 
        reg[3]=0x0F8C 
        reg[4]=0x0F8D 
        reg[5]=0x0F7B 
        reg[6]=0x0F7A 
        reg[7]=0x0F86 
        reg[8]=0x0E34 
UO.UseObject(sunduk) 
wait(1000) 
if a==1 then 
    k = 'First' 
    uo.Print(' First Circles ') 
  end if 
  if a==2 then 
    k = 'Second' 
    uo.Print(' Second Circles ') 
  end if 
  if a==3 then 
    k = 'Third' 
    uo.Print(' Third Circles ') 
  end if 
  if a==4 then 
    k = 'Fourth' 
    uo.Print(' Fourth Circles ') 
  end if 
  if a==5 then 
    k = 'Fifth 
    uo.Print(' Fives Circles ') 
  end if 
  if a==6 then 
    k = 'Sixth' 
    uo.Print(' Sixth Circles ') 
  end if 
  if a==7 then 
    k = 'Seventh' 
    uo.Print(' Seventh Circles ') 
  end if 
  if a==8 then 
    k = 'Eighth' 
    uo.Print(' Eighth Circles ') 
  end if 
while not uo.Dead() 
  
    for f=0 to 8 
      if uo.Count(reg[f]) < 1 then 
        uo.FindType(reg[f],'-1',sunduk) 
          if UO.FindCount() > 0 then 
            uo.moveitem('finditem','100') 
            wait(1000) 
          else 
            UO.Print('There are no regs!!!') 
            uo.exec("terminate inscription") 
          end if 
      end if 
    next 
    uo.WaitMenu('Spell',k,a,b) 
    uo.UseType(blanc) 
    z = 0 
    uo.DeleteJournal() 
    repeat 
      wait(500) 
      z = z + 1 
    until uo.InJournal(msg) or uo.InJournal(msg1) or (z > 50) 
    if uo.InJournal('hungry') or uo.InJournal('starving') then 
      uo.FindType(food,'-1',sunduk) 
      uo.moveitem('finditem','20') 
      repeat 
        uo.UseType(food) 
        wait(750) 
      until uo.InJournal('simply') 
    end if 
wend 
end sub
Здесь сделано меню через переменные,-ты сделай через массив
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Дык в чём проблема? - Джойна конечно нет, но есть руки, не так ли? -)

Code: Select all

sub main()
	var count = 3
	DIM promts[ val( str( count ) ) ]
	DIM choice[ val( str( count ) ) ]
	promts[0] = "Blacksmithing"
	choice[0] = "Weapons"
	promts[1] = "Weapons"
	choice[1] = "Swords & Blades"
	promts[2] = "Swords & Blades"
	choice[2] = "cutlass (8 iron ingot)"
	WaitMenu( promts, choice, count )
endsub

sub WaitMenu( promts, choice, len )
	var i, menu = "waitmenu"
	for i = 0 to len -1
		menu = menu + " '" + promts[ i ] + "' '" + choice[ i ] + "'"
	next
	uo.exec( menu )
endsub
Теоретически должно работать, если кавычки не закосячит -)

PS: Вроде не сложная конструкция, странно почему раньше подобного не видел.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

а, собственно, вопрос про массивы и несовсем...

Post by Millerbeer »

Если я хочу, чтобы функция вернула мне несколько параметров, могу я в этой функции запихнуть эти параметры в массив и воткнуть в скрипте команду

Code: Select all

returm massiv
, а в вызывающей функции проинициализировать массив и присвоить ему значение вызываемой функции? И если я не могу так сделать, то как мне вернуть членораздельно из функции несколько параметров, что б вызывающая функция знала где чего? Вот...
Post Reply