Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
cJass
Тип:
Наработка
Версия Warcraft:
1.26a
Как же это работает, да всё просто.В теории вам всего следует взять предметы в первые 5 слотов инвентаря, а в последний слот положить предмет который хотим скрафтить и нажать Сохранить Крафт.
Важно:
1.Ингредиентов не может быть больше 3 разных типов,то есть меч,булава,кольцо,но не как меч,булава,кольцо,щит.
2.Вы можете спокойно положить от 1 до 5 одинаковых предметов,то есть меч,меч,меч,меч
3.в последнем слоте, он же 6 должен быть предмет который будет скрафчен,но можно без него тогда при нужной комбинации предметы удаляться
Продолжим.После того как нажали Сохранить Крафт, можно ещё по собирать предметы и также продолжать процедуру,а после того как сделали все крафты которые хотели берём и нажимаем на Экспортировать крафты,все это дело сохраниться там где хотите(по умолчанию "Warcraft\save\Tsave.txt").-текстовый файл
Так и Что же мы увидим, если всё в дефолтном состоянии то
вот
function PreloadFiles takes nothing returns nothing

	call Preload( "")   ItemRecept(u,'wtlg',4,'ckng',1,'0',0,'rde3')
Нога Вирта 4 шт.
Королевская корона (+5) 1 шт.
  //("" )
	call Preload( "")   ItemRecept(u,'wtlg',4,'ckng',1,'0',0,'ckng')
Нога Вирта 4 шт.
Королевская корона (+5) 1 шт.
  //("" )
	call PreloadEnd( 35304.0 )

endfunction
так что же это всё значит,сейчас обьясню
"call Preload( "")" -это удаляем(советую с помощью блокнота n++)
"ItemRecept(u,'wtlg',4,'ckng',1,'',0,'rde3')"-это важная штука для дальнейших махинаций
"Нога Вирта 4 шт."-это ингридиенты , на случай если захотим прописать рецепт в предмете
Итак как заставить всё это работать,да очень просто, копируем "ItemRecept(u,'wtlg',4,'ckng',1,'0',0,'ckng')" находим триггер Recept функцию. Craft
Пример:
private void Craft(unit u){
// Сюда все крафты!!!

ItemRecept(u,'wtlg',4,'ckng',1,'0',0,'rde3')
ItemRecept(u,'wtlg',4,'ckng',1,'0',0,'rde3')

}
Пришло время подводить итоги.
Вот сам код.
Много букаф
library Save {


define{
private SaveAss="save\\Tsave.txt"//путь сохранения
private Recept=true//если true то сохраняться рецепт в текстовом виде
private Drop = true//если true то спредметы после крафта выпадают


}





private int count=0
private string s[]
private int idtype[]



private bool GetItemId(int id){
int i = 0

while(i<5){
   if(idtype[i]==id||id==0){
   
   return false
   
   }
i++
}


return true

}

private void DropItem(unit u){
int i = 0

while(i<6){
SetItemPosition(UnitItemInSlot(u,i),GetUnitX(u),GetUnitY(u))

i++
}



}



private void SetCraft(unit u){
int i =0,j=0
int id[]
int idcount[]
int temp[]


while(i<6){

id[i]=GetItemTypeId(UnitItemInSlot(u,i))

i++
}



i=0
while(i<5){
j=i
    while(j<5){
    
      if(id[i]==id[j]&&i!=j&&id[j]!=0){

            idcount[i]++    
      
      } 
    j++
   }
i++
}

i=0
j=0


while(i<5){

if(id[i]!=0){idcount[i]++}

     if(GetItemId(id[i])){

        idtype[j]=id[i]
        temp[j]=idcount[i]
j++
     }


i++
}
i=0





s[count]="ItemRecept(u,"+DEC2ASCII(idtype[0])+","+I2S(temp[0])+","+DEC2ASCII(idtype[1])+","+I2S(temp[1])+","+DEC2ASCII(idtype[2])+","+I2S(temp[2])+","+DEC2ASCII(id[5])+")"

if(Recept){
        if(idtype[0]!=0){
            s[count]+="\n"+GetItemName(GetItemOfTypeFromUnitBJ(u,idtype[0]))+" "+I2S(temp[0])+" шт."
        }
                if(idtype[1]!=0){
            s[count]+="\n"+GetItemName(GetItemOfTypeFromUnitBJ(u,idtype[1]))+" "+I2S(temp[1])+" шт."
        }
                if(idtype[2]!=0){
            s[count]+="\n"+GetItemName(GetItemOfTypeFromUnitBJ(u,idtype[2]))+" "+I2S(temp[2])+" шт."
        }
        
        s[count]+="\n"
}



if(j==0){
s[count]=""
DisplayTextToPlayer(Player(0),0,0,"Крафт не сохранен ")
}else{
DisplayTextToPlayer(Player(0),0,0,"Крафт сохранен "+GetItemName(UnitItemInSlot(u,5)))
}

while(i<5){idtype[i]=0;i++}
count++
DropItem(u)
}


private void SaveIDItem(){
int i = 0
while(i<count){
Preload("\")   " + s[i] + "  //(\"")
i++
}
PreloadGenEnd(SaveAss)
DisplayTextToPlayer(Player(0),0,0,"Крафт экспортирован в "+SaveAss)
}




public void Save(unit u){

SetCraft(u)
}

public void Export(unit u){
SaveIDItem()


}


}
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
24
7 лет назад
0
Описание системы безграмотное. Следует поправить.
0
2
7 лет назад
0
Много очень страшных букав.. через переменные нельзя?
0
28
7 лет назад
0
.:GreiN:., что ты хочешь через переменные?
причём тут вообще переменные когда речь про запись в файл?
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.