BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
¡ Bienvenido Invitado!

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte | .
 

 Problema con un sistema de recipe

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
sombra252
Soldado
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 87
Reputación Reputación : 0
Monedas de oro : 246
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Problema con un sistema de recipe Lun Feb 02, 2015 4:29 pm

Una imagen dice todo me tira el error al activarlo :S no se por que

Error:
 

Código:

 //TESH.scrollpos=0
 //TESH.alwaysfold=0
//This system takes multiple items and combines them to make 1 item
//It is advised that you do not touch ANYTHING below as it could cause SERIOUS instability with your map.
//You can remove this green text though.
//But you may use a few functions within the system to your pleasing >:D
library ItemRecipe initializer init
   globals
       public integer array    ItemTypes
       public integer          ItemTypesAmount
   endglobals
   
   function GetItemAmount takes unit u, integer i returns integer
       // function GetItemAmount takes unit, item type returns integer amount
       // this function is used to get the amount of an item that a unit has
       // example:
       // Say a unit has 3 potions in it's inventory. One potion with 1 stack, and the other two potions with 2 stacks.
       // so:
       //Potion 1:1
       //Potion 2:2
       //Potion 3:2
       // 1+2+2=5
       // it takes all that and adds it up to make 5. The unit has 5 potions.
       //(Note: Items with 0 stacks count as 1)
       local integer R = 0
       local integer I = 0
       local integer ic
       local item    t
       loop
           exitwhen I > 5
           set I = I + 1
           set t = UnitItemInSlot( u, I - 1 )
           if GetItemTypeId( t ) == i then
               set ic = GetItemCharges( t )
               if ic == 0 then
                   set R = R + 1
               else
                   set R = R + ic
               endif
           endif
       endloop
       set t = null
       return R
   endfunction
   
   function RemoveItemAmount takes unit u, integer i, integer a returns nothing
       // function RemoveItemAmount takes unit, item type, amount removed returns nothing
       // this will remove any amount of an item from a unit's inventory.
       // if a unit has 5 potions and you remove 2, you will have 3 remaining.
       local integer I = 0
       local integer R = a
       local integer ic
       local item    t
       loop
           exitwhen I > 5 or R < 1
           set I = I + 1
           set t = UnitItemInSlot( u, I - 1 )
           if GetItemTypeId( t ) == i then
               set ic = GetItemCharges( t )
               if ic == 0 then
                   set R = R - 1
                   call RemoveItem( t )
               elseif ic < R then
                   set R = R - ic
                   call RemoveItem( t )
               else
                   call SetItemCharges( t, ic - R )
                   if ic - R == 0 then
                       call RemoveItem( t )
                   endif
                   set R = 0
               endif
           endif
       endloop
       set t = null
   endfunction
   
   function GetItemTypes takes unit u returns nothing
       //This function will get all the item types a unit has in it's inventory and will return the amount (ItemTypesAmount)
       //It also saves the item type in a array that you can loop through (ItemTypes[])
       //If a unit has two of the same item the function will ignore the other item
       local integer I = 0
       local integer i
       local item    t
       local integer it
       set ItemTypesAmount = 0
       loop
           exitwhen I > 5
           set I = I + 1
           set t = UnitItemInSlot( u, I - 1 )
           set it = GetItemTypeId( t )
           set ItemTypes[I] = 0
           set i = I
           loop
               exitwhen i < 1
               set i = i - 1
               if it == ItemTypes[i] then
                   set i = -1
               endif
           endloop
           if i != -1 then
               set ItemTypesAmount = ItemTypesAmount + 1
               set ItemTypes[ItemTypesAmount] = it
           endif
       endloop
       set t = null
   endfunction
   
   private function Pickup takes nothing returns nothing
       local unit    u = GetTriggerUnit( )
       local integer i = 0
       local integer ii
       local integer iii
       local integer in
       local integer ti
       call GetItemTypes( u )
       loop
           set i = i + 1
           exitwhen udg_Recipe_ItemAmount_1[i] == 0
           set in = 1
           if udg_Recipe_ItemAmount_2[i] > 0 then
               set in = 2
               if udg_Recipe_ItemAmount_3[i] > 0 then
                   set in = 3
                   if udg_Recipe_ItemAmount_4[i] > 0 then
                       set in = 4
                       if udg_Recipe_ItemAmount_5[i] > 0 then
                           set in = 5
                           if udg_Recipe_ItemAmount_6[i] > 0 then
                               set in = 6
                           endif
                       endif
                   endif
               endif
           endif
           set iii = 0
           set ii = 0
           if ItemTypesAmount >= in then
               loop
                   set ii = ii + 1
                   exitwhen ii > ItemTypesAmount
                   set ti = GetItemAmount( u, ItemTypes[ii] )
                   if udg_Recipe_ItemType_1[i] == ItemTypes[ii] and ti >= udg_Recipe_ItemAmount_1[i] then
                       set iii = iii + 1
                   elseif udg_Recipe_ItemType_2[i] == ItemTypes[ii] and ti >= udg_Recipe_ItemAmount_2[i] then
                       set iii = iii + 1
                   elseif udg_Recipe_ItemType_3[i] == ItemTypes[ii] and ti >= udg_Recipe_ItemAmount_3[i] then
                       set iii = iii + 1
                   elseif udg_Recipe_ItemType_4[i] == ItemTypes[ii] and ti >= udg_Recipe_ItemAmount_4[i] then
                       set iii = iii + 1
                   elseif udg_Recipe_ItemType_5[i] == ItemTypes[ii] and ti >= udg_Recipe_ItemAmount_5[i] then
                       set iii = iii + 1
                   elseif udg_Recipe_ItemType_6[i] == ItemTypes[ii] and ti >= udg_Recipe_ItemAmount_6[i] then
                       set iii = iii + 1
                   endif
               endloop
           endif
           if iii >= in then
               call RemoveItemAmount( u, udg_Recipe_ItemType_1[i], udg_Recipe_ItemAmount_1[i] )
               call RemoveItemAmount( u, udg_Recipe_ItemType_2[i], udg_Recipe_ItemAmount_2[i] )
               call RemoveItemAmount( u, udg_Recipe_ItemType_3[i], udg_Recipe_ItemAmount_3[i] )
               call RemoveItemAmount( u, udg_Recipe_ItemType_4[i], udg_Recipe_ItemAmount_4[i] )
               call RemoveItemAmount( u, udg_Recipe_ItemType_5[i], udg_Recipe_ItemAmount_5[i] )
               call RemoveItemAmount( u, udg_Recipe_ItemType_6[i], udg_Recipe_ItemAmount_6[i] )
               call UnitAddItem( u, CreateItem( udg_Recipe_ItemMade[i], 0, 0 ) )
               call DestroyEffect( AddSpecialEffectTarget( udg_Recipe_Effect, u, "origin" ) )
           endif
       endloop
       set u = null
   endfunction
   
   private function init takes nothing returns nothing
       local trigger t = CreateTrigger( )
       call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_PICKUP_ITEM )
       // Don't even be like "OH YOU HAVE A BJ!!!! 1/5"
       // This is a friendly bj that only gets fired once :p
       call TriggerAddAction( t, function Pickup )
       set t = null
   endfunction
endlibrary

[gui]Initialize Recipes
   Acontecimientos
       Map initialization
   Condiciones
   Acciones
       -------- setup --------
       Set Recipe_Effect = Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
       -------- ----- --------
       -------- ----- --------
       -------- SET SENOR DE LOS COCHINOS --------
       Set Recipe_ItemType_1[1] = Lomo del Cochino
       Set Recipe_ItemAmount_1[1] = 1
       Set Recipe_ItemType_2[1] = Patas Del Hombre Cochino
       Set Recipe_ItemAmount_2[1] = 1
       Set Recipe_ItemType_3[1] = Cabeza Del Hombre Cochino
       Set Recipe_ItemAmount_3[1] = 1
       Set Recipe_ItemMade[1] = Set Señor de los Cochinos
       -------- ----- --------
       -------- PARA LAS VARIABLES --------
       Set Recipe_ItemAmount_1[0] = 0
       Set Recipe_ItemAmount_2[0] = 0
       Set Recipe_ItemAmount_3[0] = 0
       Set Recipe_ItemAmount_4[0] = 0
       Set Recipe_ItemAmount_5[0] = 0
       Set Recipe_ItemAmount_6[0] = 0
       Set Recipe_ItemType_1[0] = (Item-type of Sin objeto)
       Set Recipe_ItemType_2[0] = (Item-type of Sin objeto)
       Set Recipe_ItemType_3[0] = (Item-type of Sin objeto)
       Set Recipe_ItemType_4[0] = (Item-type of Sin objeto)
       Set Recipe_ItemType_5[0] = (Item-type of Sin objeto)
       Set Recipe_ItemType_6[0] = (Item-type of Sin objeto)
[/gui]
Volver arriba Ir abajo
Marcos_M

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 2714
Reputación Reputación : 414
Monedas de oro : 8316
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Problema con un sistema de recipe Lun Feb 02, 2015 9:17 pm

Error común en novatos distraídos.
Tienes que tener el "NewGen" lo puedes encontrar en la sección de herramientas del foro
Volver arriba Ir abajo
En línea
 

Problema con un sistema de recipe

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» TENgo PROBLEMA CON HEADSET MW2
» problema hoja barbara
» Problema Urgente con el hamachi!
» IMPOSTANTISIMO PROBLEMA HEADSET PS3
» (Solucionado) Problema con los retrovisores

Permisos de este foro:No puedes responder a temas en este foro.
Warcraft III - WorldEditor :: Zona de Aprendizaje(Dudas) :: Jass (Detonadores)-