//TESH.scrollpos=0
//TESH.alwaysfold=0
function RecipeByAbility takes integer r1, integer r2, integer r3, integer r4, integer r5, integer r6, integer a1, integer a2, integer a3, integer a4, integer a5, integer a6, integer re, unit u, integer ab returns nothing
//*****************
//* Variables *
//*****************
local integer slot = 0
local integer array ressnumber
local integer array resstype
local integer index = 0
local boolean boo = true
//****************
//* Function *
//****************
if GetSpellAbilityId() == ab then
//*****************
//* Set Variables *
//*****************
set ressnumber [1] = a1
set ressnumber [2] = a2
set ressnumber [3] = a3
set ressnumber [4] = a4
set ressnumber [5] = a5
set ressnumber [6] = a6
set resstype [1] = r1
set resstype [2] = r2
set resstype [3] = r3
set resstype [4] = r4
set resstype [5] = r5
set resstype [6] = r6
set slot = 0
loop
exitwhen slot > 5
set index = 0
loop
exitwhen index > 5
if ressnumber[index] != 0 then
if GetItemTypeId(UnitItemInSlot(u, slot)) == resstype[index] then
set ressnumber[index] = ( ressnumber[index] - 1 )
else
endif
else
endif
set index = index + 1
endloop
set slot = slot + 1
endloop
set slot = 0
loop
exitwhen slot > 5
if ressnumber[slot] != 0 then
set boo = false
else
endif
set slot = slot + 1
endloop
set ressnumber[1] = 2
set ressnumber[2] = 1
set ressnumber[3] = 0
set ressnumber[4] = 0
set ressnumber[5] = 0
set ressnumber[6] = 0
if boo == true then
set slot = 0
loop
exitwhen slot > 5
set index = 0
loop
exitwhen index > 5
if ressnumber[index] != 0 then
if GetItemTypeId(UnitItemInSlot(u, slot)) == resstype[index] then
set ressnumber[index] = ( ressnumber[index] - 1 )
call RemoveItem( UnitItemInSlot(u, slot) )
else
endif
else
endif
set index = index + 1
endloop
set slot = slot + 1
endloop
call UnitAddItemById(u,re)
else
endif
else
endif
endfunction
//================================================================================================
function RecipeByItem takes integer r1, integer r2, integer r3, integer r4, integer r5, integer r6, integer a1, integer a2, integer a3, integer a4, integer a5, integer a6, integer re, unit u, integer it returns nothing
//*****************
//* Variables *
//*****************
local integer slot = 0
local integer array ressnumber
local integer array resstype
local integer index = 0
local boolean boo = true
//****************
//* Function *
//****************
if GetItemTypeId(GetManipulatedItem()) == it then
//*****************
//* Set Variables *
//*****************
set ressnumber [1] = a1
set ressnumber [2] = a2
set ressnumber [3] = a3
set ressnumber [4] = a4
set ressnumber [5] = a5
set ressnumber [6] = a6
set resstype [1] = r1
set resstype [2] = r2
set resstype [3] = r3
set resstype [4] = r4
set resstype [5] = r5
set resstype [6] = r6
set slot = 0
loop
exitwhen slot > 5
set index = 0
loop
exitwhen index > 5
if ressnumber[index] != 0 then
if GetItemTypeId(UnitItemInSlot(u, slot)) == resstype[index] then
set ressnumber[index] = ( ressnumber[index] - 1 )
else
endif
else
endif
set index = index + 1
endloop
set slot = slot + 1
endloop
set slot = 0
loop
exitwhen slot > 5
if ressnumber[slot] != 0 then
set boo = false
else
endif
set slot = slot + 1
endloop
set ressnumber[1] = 2
set ressnumber[2] = 1
set ressnumber[3] = 0
set ressnumber[4] = 0
set ressnumber[5] = 0
set ressnumber[6] = 0
if boo == true then
set slot = 0
loop
exitwhen slot > 5
set index = 0
loop
exitwhen index > 5
if ressnumber[index] != 0 then
if GetItemTypeId(UnitItemInSlot(u, slot)) == resstype[index] then
set ressnumber[index] = ( ressnumber[index] - 1 )
call RemoveItem( UnitItemInSlot(u, slot) )
else
endif
else
endif
set index = index + 1
endloop
set slot = slot + 1
endloop
call UnitAddItemById(u, re)
else
endif
else
endif
endfunction
//================================================================================================
Name | Type | is_array | initial_value |
Boo_TmpBoo | boolean | No | |
Int_ArrayIndex | integer | No | |
Int_InventorySlot | integer | No | |
Int_RessNumber | integer | Yes | |
ItT_RessType | itemcode | Yes | |
ItT_Result | itemcode | No | |
Unit_TmpUnit | unit | No |
******************************
* How to import? --> Ability *
******************************
Just copy the text from the Trigger "JASS version ability" and paste it into your mapheader
then copy the trigger "JASS Recipes" and add your recipes (for "How to add Recipes"
look page down) that is all you need to do :D
***************************
* How to import? --> Item *
***************************
Just copy the text from the Trigger "JASS version item" and paste it into your mapheader
then copy the trigger "JASS Recipes" and add your recipes (for "How to add Recipes"
look page down) that is all you need to do :D
***********************
* How to add Recipes? *
***********************
**************************************************************************
* *
* === ABILITY === *
* *
* To use with ability write: *
* *
* call RecipeByAbility(r1,r2,r3,r4,r5,r6,a1,a2,a3,a4,a5,a6,re,u,ab) *
* *
* r1-6 = needed ressource rawcode *
* a1-6 = needed ressource amount *
* re = resultitem rawcode *
* unit = unit *
* ab = triggerability rawcode *
* *
**************************************************************************
**************************************************************************
* *
* === ITEM === *
* *
* To use with item write: *
* *
* call RecipeByItem(r1,r2,r3,r4,r5,r6,a1,a2,a3,a4,a5,a6,re,u,it) *
* *
* r1-6 = needed ressource rawcode *
* a1-6 = needed ressource amount *
* re = resultitem rawcode *
* unit = unit *
* it = triggeritem rawcode *
* *
**************************************************************************
At the object editor you can find the rawcodes if you press [Ctrl] + [D]
if there are not 6 ressources needed just write "0" for the unused slots
//TESH.scrollpos=0
//TESH.alwaysfold=0
function RecipeByAbility takes integer r1, integer r2, integer r3, integer r4, integer r5, integer r6, integer a1, integer a2, integer a3, integer a4, integer a5, integer a6, integer re, unit u, integer ab returns nothing
//*****************
//* Variables *
//*****************
local integer slot = 0
local integer array ressnumber
local integer array resstype
local integer index = 0
local boolean boo = true
//****************
//* Function *
//****************
if GetSpellAbilityId() == ab then
//*****************
//* Set Variables *
//*****************
set ressnumber [1] = a1
set ressnumber [2] = a2
set ressnumber [3] = a3
set ressnumber [4] = a4
set ressnumber [5] = a5
set ressnumber [6] = a6
set resstype [1] = r1
set resstype [2] = r2
set resstype [3] = r3
set resstype [4] = r4
set resstype [5] = r5
set resstype [6] = r6
set slot = 0
loop
exitwhen slot > 5
set index = 0
loop
exitwhen index > 5
if ressnumber[index] != 0 then
if GetItemTypeId(UnitItemInSlot(u, slot)) == resstype[index] then
set ressnumber[index] = ( ressnumber[index] - 1 )
else
endif
else
endif
set index = index + 1
endloop
set slot = slot + 1
endloop
set slot = 0
loop
exitwhen slot > 5
if ressnumber[slot] != 0 then
set boo = false
else
endif
set slot = slot + 1
endloop
set ressnumber[1] = 2
set ressnumber[2] = 1
set ressnumber[3] = 0
set ressnumber[4] = 0
set ressnumber[5] = 0
set ressnumber[6] = 0
if boo == true then
set slot = 0
loop
exitwhen slot > 5
set index = 0
loop
exitwhen index > 5
if ressnumber[index] != 0 then
if GetItemTypeId(UnitItemInSlot(u, slot)) == resstype[index] then
set ressnumber[index] = ( ressnumber[index] - 1 )
call RemoveItem( UnitItemInSlot(u, slot) )
else
endif
else
endif
set index = index + 1
endloop
set slot = slot + 1
endloop
call UnitAddItemById(u,re)
else
endif
else
endif
endfunction
//================================================================================================
//TESH.scrollpos=0
//TESH.alwaysfold=0
function RecipeByItem takes integer r1, integer r2, integer r3, integer r4, integer r5, integer r6, integer a1, integer a2, integer a3, integer a4, integer a5, integer a6, integer re, unit u, integer it returns nothing
//*****************
//* Variables *
//*****************
local integer slot = 0
local integer array ressnumber
local integer array resstype
local integer index = 0
local boolean boo = true
//****************
//* Function *
//****************
if GetItemTypeId(GetManipulatedItem()) == it then
//*****************
//* Set Variables *
//*****************
set ressnumber [1] = a1
set ressnumber [2] = a2
set ressnumber [3] = a3
set ressnumber [4] = a4
set ressnumber [5] = a5
set ressnumber [6] = a6
set resstype [1] = r1
set resstype [2] = r2
set resstype [3] = r3
set resstype [4] = r4
set resstype [5] = r5
set resstype [6] = r6
set slot = 0
loop
exitwhen slot > 5
set index = 0
loop
exitwhen index > 5
if ressnumber[index] != 0 then
if GetItemTypeId(UnitItemInSlot(u, slot)) == resstype[index] then
set ressnumber[index] = ( ressnumber[index] - 1 )
else
endif
else
endif
set index = index + 1
endloop
set slot = slot + 1
endloop
set slot = 0
loop
exitwhen slot > 5
if ressnumber[slot] != 0 then
set boo = false
else
endif
set slot = slot + 1
endloop
set ressnumber[1] = 2
set ressnumber[2] = 1
set ressnumber[3] = 0
set ressnumber[4] = 0
set ressnumber[5] = 0
set ressnumber[6] = 0
if boo == true then
set slot = 0
loop
exitwhen slot > 5
set index = 0
loop
exitwhen index > 5
if ressnumber[index] != 0 then
if GetItemTypeId(UnitItemInSlot(u, slot)) == resstype[index] then
set ressnumber[index] = ( ressnumber[index] - 1 )
call RemoveItem( UnitItemInSlot(u, slot) )
else
endif
else
endif
set index = index + 1
endloop
set slot = slot + 1
endloop
call UnitAddItemById(u, re)
else
endif
else
endif
endfunction
//================================================================================================