Добавлен ledoed,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
cJass
Тип:
Наработка
Версия Warcraft:
1.26a
Как же это работает, да всё просто.В теории вам всего следует взять предметы в первые 5 слотов инвентаря, а в последний слот положить предмет который хотим скрафтить и нажать Сохранить Крафт.
Важно:
1.Ингредиентов не может быть больше 3 разных типов,то есть меч,булава,кольцо,но не как меч,булава,кольцо,щит.
2.Вы можете спокойно положить от 1 до 5 одинаковых предметов,то есть меч,меч,меч,меч
3.в последнем слоте, он же 6 должен быть предмет который будет скрафчен,но можно без него тогда при нужной комбинации предметы удаляться
Важно:
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 шт."-это ингридиенты , на случай если захотим прописать рецепт в предмете
"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()
}
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
причём тут вообще переменные когда речь про запись в файл?