- Wc3-WoW Forum -
¡Conéctate! En caso de no estar registrado hazlo puesto que eliminarás la publicidad, podrás ver los links de descarga, etc..
Conectarse

Recuperar mi contraseña

WC3WOW UPLOADER
WC3WOW Uploader
HOSTS
- Imágenes | Archivos -





FacebooK
WC3WOW Facebook
[MK]Blaze Blog
Por favor, si te gusta el material de la web y quieres copiarlo a otra, se tan amable de pedir permiso al creador del material primero. Por favor, no robe material. Muchas gracias.

Clan [MK]
Clan MK

[Tutorial] Dañar a Unidad cuando entre a una Región

Ver el tema anterior Ver el tema siguiente Ir abajo

Tick [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Dannniel el 23/12/10, 06:22 pm

este tutorial lo hago para enseñales a hacer lo que dice el titulo:

hacer que al entrar una unidad a una region reciba daño lentamente con un efecto para que se vea mejor y que al salir de esa region deje de recibir daño (y tambien se quite el efecto)

para esto necesitamos:

World editor de Warcraft III The Frozen Throne (lo hice con el patch 1.24e)
Una pc que cumpla con los requisitos para poder usar Warcraft
Un monitor
bocinas o audifonos para escuchar musica mientras trabajamos Twisted Evil

Aqui esta el mapa de ejemplo para tener una mejor idea de lo que vamos a hacer [Tienes que estar registrado y conectado para ver este vínculo]

Ahora... podemos empezar con lo que se nos antoje, es preferible empezar con el terreno pero como es un mapa de ejemplo dejen el terreno como esta...
para hacer este mapa yo prefiero empezar con los detonadores... despues si necesito algunas variables o regiones las creo pero como ya lo hice pues... empezemos con las variables:

LAS VARIABLES

para el mapa que les di de ejemplo solo utilize 2 variables, si quieren las pueden copiar para ahorrar tiempo pero si quieren aprender lean lo siguiente:

Van a crear una varible tipo Boolean con el nombre que se les ocurra, yo la llame: unidad_debuff, los demas datos dejenlos como estan... esta variable es para las condiciones de los detonadores

la segunda variable sera tipo Special Effect (talves efecto especial en español... tengo el wc3 en ingles) el nombre es el que quieran... yo la puse como SpecialFX, no le muevan ningun otro dato...esta variable es para poder quitar el effecto que tendra la unidad que entre en la region

con esto tendremos terminadas las variables santa

REGIONES

yo solo utilize una region en mi mapa asi que... hagan una region en su mapa con el tamaño que quieran... siempre y cuando haya espacio para poner la unidad; despues le pueden poner otro terreno en donde esta la region para poder identificarla facilmente a la hora de jugar

UNIDADES

puse una asi que... pongan una unidad pero afuera de la region... de preferencia que tenga la suficiente vida para aguantar un buen rato mientras pierde su vida xD

LOS DETONADORES

En el mapa que les di de ejemplo solo utilize 4 detonadores... si hacen un mapa nuevo, es decir, empezar el tuto con un mapa nuevo desde el principio RECUERDEN QUITAR LOS DETONADORES QUE VIENEN POR DEFAULT

empiezen creando los 4 detonadores... yo los llame "unidad entra", "unidad sale" "damage" y "Efecto especial" (es importante que los tengan... aunque esten vacios pero que esten xD)

"Unidad entra"

"unidad entra" va a ser el detonador que accione el daño, para que funcione le ponemos de evento
Código:
Unit - A unit enters Region 000 <gen>
despues le podemos poner alguna condicion para especificar que tipo de unidad lo podra accionar o si tiene que ser la unidad de un jugador en especifico... en el ejemplo no tiene condiciones... si me dan ganas de enseñarles algunas condiciones editare el tema y las pondre... si ven este mensaje es porque aun no lo e hecho

continuamos: despues en accion vamos a darle un valor a la variable que hicimos (o que copiaste) ejemplo:
Código:
set unidad_debuff=false
esto hara que la variable "unidad_debuff" sea igual a false xD
despues pondresmos otra accion para hacer correr el detonador que hara el daño a la unidad... ejemplo:
Código:
Trigger - Run Damage <gen> (checking conditions)

(si todavia no le hacen nada al detonador no se preocupen... pero ya tiene que estar almenos con nombre) este detonador como lo dice, hace correr el detonador del daño (le puse damage porque no se puede escribir la "ñ" en el world editor... o almenos no en el mio) lo de "checking conditions" es para que cheque las condiciones del detonador (no... no las va a leer ¬¬!) lo que va a hacer al checar las condiciones es que el detonador va a funcionar siempre y cuando se cumplan las condiciones... sino no... despues continuaremos con el detonador "Damage"

"Damage"

este sera el detonador que le hara el daño a la unidad...

comencemos poniendo la condicion... ¿que porque no necesita evento? pues porque el detonador pasado lo hace correr... siempre y cuando se cumplan las condiciones

ahora si, la condicion: la condicion que le pondremos sera:
Código:
unidad_debuff=false
como el detonador pasado le aplico el valor de "false" a la variable "unidad_debuff" debe de funcionar de afuerzas el detonador xD despues les explicare para que la condicion afro

ahora hacemos la accion
Código:
Unit - Set life of (Entering unit) to ((Life of (Entering unit)) - 1.00)
esta accion dice que la unidad "enterind unit" (la unidad que entro en la region) va a tener la vida que tenia pero menos 1... traducido al español diria algo asi
Código:
unidad - establecer vida de (unidad en region) a ((vida de (unidad en region)) - 1.00)
espero hayan entendido

despues puse
Código:
Wait 0.01 seconds
esto para que espere 0.01s antes de seguir con lo que estaba haciendo... no importa donde lo pongan pero debe de ir antes de
Código:
Trigger - Run (This trigger) (checking conditions)
este detonador todavia no lo hagan... haganlo despues

continuamos con la accion que creara el efecto:
Código:
Special Effect - Create a special effect attached to the overhead of (Entering unit) using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
este le dara un efecto a la unidad que esta en la region... despues a este efecto lo vamos a poner en una variable asi
Código:
Set SpecialFX = (Last created special effect)
(para eso era la variable que hiciste/copiaste)

ahora si va
Código:
Trigger - Run (This trigger) (checking conditions)
esto va a hacer que corra denuevo el detonador... siempre y cuando se cumplan las condiciones... lo del wait 0.01s es para que se repita cada 0.01s el detonador, de lo contrario no estoy seguro de lo que pase pero talves te salte error y se te crashea la compu por que el detonador se haria una i otra vez tan rapido que tu compu no lo aguantaria... o simplemente o funciona xD

despues va
Código:
Trigger - Run Efecto especial <gen> (checking conditions)
que va a accionar el detonador "efecto especial" este detonador lo que hace es quitarle el efecto pero como mientras el detonador "damage" siga corriendo el efecto volvera a aparecer... ahora sigue el detonador "efecto especial"

"efecto especial"

hagan lo siguente:
Código:
Custom script:  local effect tempEffect
Código:
Custom script:  set tempEffect = udg_SpecialFX
despues para esperar 0.1s
Código:
Wait 0.01 game-time seconds
y despues
Código:
Custom script:  set udg_SpecialFX = tempEffect
y al final
Código:
Special Effect - Destroy SpecialFX
de este detonador (efecto especial) no es puedo hablar mucho porque lo copie de un mapa de blizzard... solo les dire que tiene que ir aparte de los otros detonadores porque sino no funciona, intente poner los datos en el detonador "damage" pero al intentar probrarlo me salia un error...

ahora el ultimo detonador "unidad sale"

este detonador es para que cuando la unidad salga de la region
Código:
Unit - A unit leaves Region 000 <gen>
cambie el valor de "unidad_debuff" a true
Código:
Set Unidad_debuff = True
y al estar en true el detonador "damage" no podra funcionar... pues su condicion es que este en false, si entra la unidad denuevo a la region hara accionar al detonador "unidad entra" y este hace que la variable se ponga denuevo en false y corre denuevo al detonador "damage" y se repite denuevo el proceso...

ESPERO LES HAYA GUSTADO MI TUTORIAL PUES ME COSTO MUCHO ESCRIBIRLO XDD

Perdon por laz faltaz de hortografia

SALUDOS zyppy

Dannniel
Rango: Campeón
Rango: Campeón

Masculino

Título : <*Programmer*>
Cantidad de envíos : 257
Edad : 20
Localización : En donde menos te imaginas...
Fecha de inscripción : 09/01/2009

Volver arriba Ir abajo

Tick Re: [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Metrallador_killer_:( el 26/12/10, 03:02 am

muy bueno gracias +rep Infernal

_________________________________________________
Siempre debe haber un portador de la justicia verdadera, la justicia de la luz divina. Todo aquel que opte por desafiar a la luz sera quemado por el filo de su iluminación y devuelto a su estado original.

Metrallador_killer_:(
Moderador
Moderador

Masculino

Título : <Justice Dealer>
Cantidad de envíos : 381
Edad : 20
Localización : Donde mas te lo esperes...
Fecha de inscripción : 06/07/2010

Volver arriba Ir abajo

Tick Re: [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Asdf_guy el 26/12/10, 02:51 pm

Disculpa pero veo leaks en esos detonadores :< me pregunto si los puedes arreglar.

Asdf_guy
Rango: Peón
Rango: Peón

Masculino

Cantidad de envíos : 28
Edad : 21
Localización : San Bernado -Chile
Fecha de inscripción : 03/12/2010

Volver arriba Ir abajo

Tick Re: [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Dannniel el 26/12/10, 06:31 pm

me intereso lo del lengaje JASS... aqui esta mi mapa en lenguaje JASS =)
Spoiler:
//===========================================================================
//
// Ejemplo de region que hace daño
//
// Warcraft III map script
// Generated by the Warcraft III World Editor
// Date: Thu Dec 23 13:39:31 2010
// Map Author: Dannniel
//
//===========================================================================

//***************************************************************************
//*
//* Global Variables
//*
//***************************************************************************

globals
// User-defined
boolean udg_Unidad_debuff = false
effect udg_SpecialFX = null

// Generated
rect gg_rct_Region_000 = null
trigger gg_trg_Damage = null
trigger gg_trg_Unidad_sale = null
trigger gg_trg_Unidad_entra = null
trigger gg_trg_Efecto_especial = null
endglobals

function InitGlobals takes nothing returns nothing
set udg_Unidad_debuff = false
endfunction

//***************************************************************************
//*
//* Unit Creation
//*
//***************************************************************************

//===========================================================================
function CreateUnitsForPlayer0 takes nothing returns nothing
local player p = Player(0)
local unit u
local integer unitID
local trigger t
local real life

set u = CreateUnit( p, 'Hpal', -275.5, -239.8, 314.032 )
endfunction

//===========================================================================
function CreatePlayerBuildings takes nothing returns nothing
endfunction

//===========================================================================
function CreatePlayerUnits takes nothing returns nothing
call CreateUnitsForPlayer0( )
endfunction

//===========================================================================
function CreateAllUnits takes nothing returns nothing
call CreatePlayerBuildings( )
call CreatePlayerUnits( )
endfunction

//***************************************************************************
//*
//* Regions
//*
//***************************************************************************

function CreateRegions takes nothing returns nothing
local weathereffect we

set gg_rct_Region_000 = Rect( -192.0, -64.0, 320.0, 448.0 )
endfunction

//***************************************************************************
//*
//* Triggers
//*
//***************************************************************************

//===========================================================================
// Trigger: Damage
//===========================================================================
function Trig_Damage_Conditions takes nothing returns boolean
if ( not ( udg_Unidad_debuff == false ) ) then
return false
endif
return true
endfunction

function Trig_Damage_Actions takes nothing returns nothing
call SetUnitLifeBJ( GetEnteringUnit(), ( GetUnitStateSwap(UNIT_STATE_LIFE, GetEnteringUnit()) - 1.00 ) )
call TriggerSleepAction( 0.01 )
call AddSpecialEffectTargetUnitBJ( "overhead", GetEnteringUnit(), "Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl" )
set udg_SpecialFX = GetLastCreatedEffectBJ()
call ConditionalTriggerExecute( GetTriggeringTrigger() )
call ConditionalTriggerExecute( gg_trg_Efecto_especial )
endfunction

//===========================================================================
function InitTrig_Damage takes nothing returns nothing
set gg_trg_Damage = CreateTrigger( )
call TriggerAddCondition( gg_trg_Damage, Condition( function Trig_Damage_Conditions ) )
call TriggerAddAction( gg_trg_Damage, function Trig_Damage_Actions )
endfunction

//===========================================================================
// Trigger: Unidad sale
//===========================================================================
function Trig_Unidad_sale_Actions takes nothing returns nothing
set udg_Unidad_debuff = true
endfunction

//===========================================================================
function InitTrig_Unidad_sale takes nothing returns nothing
set gg_trg_Unidad_sale = CreateTrigger( )
call TriggerRegisterLeaveRectSimple( gg_trg_Unidad_sale, gg_rct_Region_000 )
call TriggerAddAction( gg_trg_Unidad_sale, function Trig_Unidad_sale_Actions )
endfunction

//===========================================================================
// Trigger: Unidad entra
//===========================================================================
function Trig_Unidad_entra_Actions takes nothing returns nothing
set udg_Unidad_debuff = false
call ConditionalTriggerExecute( gg_trg_Damage )
endfunction

//===========================================================================
function InitTrig_Unidad_entra takes nothing returns nothing
set gg_trg_Unidad_entra = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_Unidad_entra, gg_rct_Region_000 )
call TriggerAddAction( gg_trg_Unidad_entra, function Trig_Unidad_entra_Actions )
endfunction

//===========================================================================
// Trigger: Efecto especial
//===========================================================================
function Trig_Efecto_especial_Actions takes nothing returns nothing
local effect tempEffect
set tempEffect = udg_SpecialFX
call PolledWait( 0.01 )
set udg_SpecialFX = tempEffect
call DestroyEffectBJ( udg_SpecialFX )
endfunction

//===========================================================================
function InitTrig_Efecto_especial takes nothing returns nothing
set gg_trg_Efecto_especial = CreateTrigger( )
call TriggerAddAction( gg_trg_Efecto_especial, function Trig_Efecto_especial_Actions )
endfunction

//===========================================================================
function InitCustomTriggers takes nothing returns nothing
call InitTrig_Damage( )
call InitTrig_Unidad_sale( )
call InitTrig_Unidad_entra( )
call InitTrig_Efecto_especial( )
endfunction

//***************************************************************************
//*
//* Players
//*
//***************************************************************************

function InitCustomPlayerSlots takes nothing returns nothing

// Player 0
call SetPlayerStartLocation( Player(0), 0 )
call SetPlayerColor( Player(0), ConvertPlayerColor(0) )
call SetPlayerRacePreference( Player(0), RACE_PREF_HUMAN )
call SetPlayerRaceSelectable( Player(0), true )
call SetPlayerController( Player(0), MAP_CONTROL_USER )

endfunction

function InitCustomTeams takes nothing returns nothing
// Force: TRIGSTR_002
call SetPlayerTeam( Player(0), 0 )

endfunction

//***************************************************************************
//*
//* Main Initialization
//*
//***************************************************************************

//===========================================================================
function main takes nothing returns nothing
call SetCameraBounds( -3328.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), -3584.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM), 3328.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), 3072.0 - GetCameraMargin(CAMERA_MARGIN_TOP), -3328.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), 3072.0 - GetCameraMargin(CAMERA_MARGIN_TOP), 3328.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), -3584.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM) )
call SetDayNightModels( "Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\DNCLordaeronTerrain.mdl", "Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdl" )
call NewSoundEnvironment( "Default" )
call SetAmbientDaySound( "LordaeronSummerDay" )
call SetAmbientNightSound( "LordaeronSummerNight" )
call SetMapMusic( "Music", true, 0 )
call CreateRegions( )
call CreateAllUnits( )
call InitBlizzard( )
call InitGlobals( )
call InitCustomTriggers( )

endfunction

//***************************************************************************
//*
//* Map Configuration
//*
//***************************************************************************

function config takes nothing returns nothing
call SetMapName( "TRIGSTR_003" )
call SetMapDescription( "TRIGSTR_005" )
call SetPlayers( 1 )
call SetTeams( 1 )
call SetGamePlacement( MAP_PLACEMENT_USE_MAP_SETTINGS )

call DefineStartLocation( 0, -320.0, 128.0 )

// Player setup
call InitCustomPlayerSlots( )
call SetPlayerSlotAvailable( Player(0), MAP_CONTROL_USER )
call InitGenericPlayerSlots( )
endfunction

claro... lo hice con un programa pues apenas ando aprendiendo xD

Dannniel
Rango: Campeón
Rango: Campeón

Masculino

Título : <*Programmer*>
Cantidad de envíos : 257
Edad : 20
Localización : En donde menos te imaginas...
Fecha de inscripción : 09/01/2009

Volver arriba Ir abajo

Tick Re: [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Asdf_guy el 26/12/10, 07:03 pm

Utilizar programas alternos es bueno la verdad te aplaudo. Que bueno que te interesara. Saludines ^^

Asdf_guy
Rango: Peón
Rango: Peón

Masculino

Cantidad de envíos : 28
Edad : 21
Localización : San Bernado -Chile
Fecha de inscripción : 03/12/2010

Volver arriba Ir abajo

Tick Re: [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Dockijoe el 08/02/13, 04:01 pm

Algo complicado pero nada que no pueda hacer +rep

_________________________________________________

Dockijoe
Moderador
Moderador

Masculino

Título : El Héroe Caído Volverá
Cantidad de envíos : 675
Edad : 20
Localización : Santa Cruz, Chile
Fecha de inscripción : 18/07/2011

http://www.wowwc3forum.crearforo.net

Volver arriba Ir abajo

Tick Re: [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Cefiro el 26/02/13, 02:28 pm

Buen tutorial

_________________________________________________
[Tienes que estar registrado y conectado para ver este vínculo]
albus & fawkes:
_________________________________________________

Cefiro
Moderador Avanzado
Moderador Avanzado

Masculino

Título : Wc3WoW Champion
Cantidad de envíos : 814
Edad : 19
Localización : Wc3WoW Forum
Fecha de inscripción : 15/03/2011

Volver arriba Ir abajo

Tick Re: [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Nekkrov el 27/02/13, 05:42 pm

buen tutorial Infernal es una lastima que el ejemplo este en megaupload Sad

Nekkrov
Rango: Élite
Rango: Élite

Masculino

Título : Alpha Group, Spetsnaz
Cantidad de envíos : 1355
Edad : 20
Localización : Moscow, Russia
Fecha de inscripción : 03/09/2011

http://Zkearlev.bl.ee

Volver arriba Ir abajo

Tick Re: [Tutorial] Dañar a Unidad cuando entre a una Región

Mensaje por Contenido patrocinado Hoy a las 02:04 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.