Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
That's great, who knows, this could even be the RTS version of a DotA.
What do you think about making motorized infantry? i.e. infantry sitting on tanks?
That would require to display the infantry sitting on the tank 1), to make infantry able to fire 2) and be able to load/unload infantry 3).
3) Can use hashtable to store the number of soldiers loaded into each tank
2) Can use dummy units and rotated special effects with "Head" bone. To rotate a special effect you could create it as a dummy unit and lock it's body part to a point with height. The dummy's model could be a flash. Then sitting infantry's guns should be pointed forward.
1) you can use attachment points sprite first, sprite second, sprite third, sprite fourth to attach sitting infantry models to (by giving dummy abilities to units) them (those points are used for fire on buildings, btw).
So what do you think?
What do you think about making motorized infantry? i.e. infantry sitting on tanks?
That would require to display the infantry sitting on the tank 1), to make infantry able to fire 2) and be able to load/unload infantry 3).
3) Can use hashtable to store the number of soldiers loaded into each tank
2) Can use dummy units and rotated special effects with "Head" bone. To rotate a special effect you could create it as a dummy unit and lock it's body part to a point with height. The dummy's model could be a flash. Then sitting infantry's guns should be pointed forward.
1) you can use attachment points sprite first, sprite second, sprite third, sprite fourth to attach sitting infantry models to (by giving dummy abilities to units) them (those points are used for fire on buildings, btw).
So what do you think?
EDIT: @Vuormalainen, you do not have to use the real Cargo Hold, Load and Unload abilities, so as not to override the interface. And I think I said in part 3) that you should use a hashtable to store loaded infantry, which would give you an idea that you can fake Cargo Hold with dummy load/unload abilities. In a hashtable you could also maybe store a Unit Group, which contains all units in it that in fact are hidden using Unit - Hide. Anyway, just random thoughts.
I can make an example map to show how this can work whilte retaining the normal interface.
EDIT2: Made the map and attached it, just to show things like these are possible and easy.
Init
Events

Map initialization
Conditions
Actions

-------- counter is an Integer initially equal to 0 --------

-------- effect1, effect1f, effect2, effect2f, effect3, effect3f, effect4, effect4f, effect5 are Special Effect Arrays --------

-------- temp_point is a Point --------

-------- unitgroups is a Unit Group Array --------

Unit - Set the custom value of Siege Engine 0000 <gen> to counter

Set counter = (counter + 1)

Special Effect - Create a special effect attached to the foot mount rear alternate of Footman 0007 <gen> using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
Load
Events

Unit - A unit Starts the effect of an ability
Conditions

(Ability being cast) Equal to LOAD
Actions

Unit Group - Add (Target unit of ability being cast) to unitgroups([Custom value of (Casting unit))]

Unit - Hide (Target unit of ability being cast)

If (All Conditions are True) then do (Then Actions) else do (Else Actions)


If - Conditions



(Number of units in unitgroups[(Custom value of (Casting unit))]) Equal to 1


Then - Actions



Unit - Add UNLOAD to (Casting unit)



Special Effect - Create a special effect attached to the overhead of (Casting unit) using war3mapImported\BarEmpty.mdx



Set effect1[(Custom value of (Casting unit))] = (Last created special effect)



Special Effect - Create a special effect attached to the overhead of (Casting unit) using war3mapImported\Bar1.mdx



Set effect2[(Custom value of (Casting unit))] = (Last created special effect)



Special Effect - Create a special effect attached to the foot left of (Casting unit) using units\human\Footman\Footman.mdx



Set effect1f[(Custom value of (Casting unit))] = (Last created special effect)


Else - Actions

If (All Conditions are True) then do (Then Actions) else do (Else Actions)


If - Conditions



(Number of units in unitgroups[(Custom value of (Casting unit))]) Equal to 2


Then - Actions



Special Effect - Create a special effect attached to the overhead of (Casting unit) using war3mapImported\Bar2.mdx



Set effect3[(Custom value of (Casting unit))] = (Last created special effect)



Special Effect - Create a special effect attached to the foot right of (Casting unit) using units\human\Footman\Footman.mdx



Set effect2f[(Custom value of (Casting unit))] = (Last created special effect)


Else - Actions

If (All Conditions are True) then do (Then Actions) else do (Else Actions)


If - Conditions



(Number of units in unitgroups[(Custom value of (Casting unit))]) Equal to 3


Then - Actions



Special Effect - Create a special effect attached to the overhead of (Casting unit) using war3mapImported\Bar3.mdx



Set effect4[(Custom value of (Casting unit))] = (Last created special effect)



Special Effect - Create a special effect attached to the hand left of (Casting unit) using units\human\Footman\Footman.mdx



Set effect3f[(Custom value of (Casting unit))] = (Last created special effect)


Else - Actions

If (All Conditions are True) then do (Then Actions) else do (Else Actions)


If - Conditions



(Number of units in unitgroups[(Custom value of (Casting unit))]) Equal to 4


Then - Actions



Special Effect - Create a special effect attached to the overhead of (Casting unit) using war3mapImported\Bar4.mdx



Set effect5[(Custom value of (Casting unit))] = (Last created special effect)



Special Effect - Create a special effect attached to the foot right of (Casting unit) using units\human\Footman\Footman.mdx



Set effect4f[(Custom value of (Casting unit))] = (Last created special effect)



Unit - Remove LOAD from (Casting unit)


Else - Actions
Unload
Events

Unit - A unit Finishes casting an ability
Conditions

(Ability being cast) Equal to UNLOAD
Actions

Set temp_point = (Position of (Casting unit))

Unit Group - Pick every unit in unitgroups[(Custom value of (Casting unit))] and do (Actions)


Loop - Actions



Unit - Unhide (Picked unit)



Unit - Move (Picked unit) instantly to temp_point

Custom script: call RemoveLocation(udg_temp_point)

Unit Group - Remove all units from unitgroups[(Custom value of (Casting unit))]

Special Effect - Destroy effect1[(Custom value of (Casting unit))]

Special Effect - Destroy effect1f[(Custom value of (Casting unit))]

Special Effect - Destroy effect2[(Custom value of (Casting unit))]

Special Effect - Destroy effect2f[(Custom value of (Casting unit))]

Special Effect - Destroy effect3[(Custom value of (Casting unit))]

Special Effect - Destroy effect3f[(Custom value of (Casting unit))]

Special Effect - Destroy effect4[(Custom value of (Casting unit))]

Special Effect - Destroy effect4f[(Custom value of (Casting unit))]

Special Effect - Destroy effect5[(Custom value of (Casting unit))]

Unit - Add LOAD to (Casting unit)

Unit - Remove UNLOAD from (Casting unit)
Right-Click
Events

Unit - A unit Is issued an order targeting an object
Conditions

(Owner of (Ordered unit)) Equal to (Owner of (Target unit of issued order))

(Issued order) Equal to (Order(smart))

(Leve of LOAD for (Ordered unit)) Not equal to 0
Actions

Custom script: call IssueTargetOrderBJ( GetOrderedUnit(), "channel", GetOrderTargetUnit() )
scope TransportUnits initializer OnInit
private function OnLoad takes nothing returns boolean
//german
if GetUnitTypeId(GetTransportUnit()) == 'h01K' then
call SetUnitAbilityLevel(GetTransportUnit(), 'A01R', Transport_CountPassengers(GetTransportUnit())+1)
endif
//soviet
if GetUnitTypeId(GetTransportUnit()) == 'h00I' then
call SetUnitAbilityLevel(GetTransportUnit(), 'A01S', Transport_CountPassengers(GetTransportUnit())+1)
endif
//allied
if GetUnitTypeId(GetTransportUnit()) == 'h00G' then
call SetUnitAbilityLevel(GetTransportUnit(), 'A01T', Transport_CountPassengers(GetTransportUnit())+1)
endif
return false
endfunction
private function OnUnload takes nothing returns boolean
//german
if GetUnitTypeId(GetUnloadingTransport()) == 'h01K' then
call SetUnitAbilityLevel(GetUnloadingTransport(), 'A01R', Transport_CountPassengers(GetUnloadingTransport())+1)
endif
//soviet
if GetUnitTypeId(GetUnloadingTransport()) == 'h00I' then
call SetUnitAbilityLevel(GetUnloadingTransport(), 'A01S', Transport_CountPassengers(GetUnloadingTransport())+1)
endif
//allied
if GetUnitTypeId(GetUnloadingTransport()) == 'h00G' then
call SetUnitAbilityLevel(GetUnloadingTransport(), 'A01T', Transport_CountPassengers(GetUnloadingTransport())+1)
endif
return false
endfunction
private function OnInit takes nothing returns nothing
local trigger t=CreateTrigger()
call Transport_RegisterLoadEvent(t)
call TriggerAddCondition(t,Filter(function OnLoad))
set t=CreateTrigger()
call Transport_RegisterUnloadEvent(t)
call TriggerAddCondition(t,Filter(function OnUnload))
endfunction
endscope
Custom script: call IssueTargetOrderBJ( GetOrderedUnit(), "channel", GetOrderTargetUnit() )
Events

Time - Every 0.30 seconds of game time
Conditions
Actions

Unit Group - Pick every unit in (Playable map area) matching ((Unit-type of (Matching unit)) Equal to Goblin Zeppelin) and do (Actions)


Loop - Actions



Set temp_unit = (Picked unit)



Unit Group - Pick every unit in loadedunits[(Custom value of temp_unit)] and do (Actions)




Loop - Actions





If (All Conditions are True) then do (Then Actions) else do (Else Actions)






If - Conditions







((Picked unit) is loaded into temp_unit) Equal to False






Then - Actions







Game - Display to (All players) the text: a unit has been unloaded







Unit Group - Remove (Picked unit) from loadedunits[(Custom value of temp_unit)]






Else - Actions







Do nothing
Okay, but I don't really know any JASS (I didn't understand 95% of that JASS code). I never knew function IssueTargetOrderBJ, I got it from a converted trigger and simply modified it.
Fingolfin, I'm not sure you need to import a custom event handler to register when units are unloaded. Take a look:
Events
Time - Every 0.30 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in (Playable map area) matching ((Unit-type of (Matching unit)) Equal to Goblin Zeppelin) and do (Actions)
Loop - Actions
Set temp_unit = (Picked unit)
Unit Group - Pick every unit in loadedunits[(Custom value of temp_unit)] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is loaded into temp_unit) Equal to False
Then - Actions
Game - Display to (All players) the text: a unit has been unloaded
Unit Group - Remove (Picked unit) from loadedunits[(Custom value of temp_unit)]
Else - Actions
Do nothing
I appreciate that you are trying to help us, but as told before - we know how to code, don't worry.
Just to be sure. You're not planning to add paratroopers in wif, right?
you guys gonna use any AA battery?
coz it reminds me the Nocturn mission maded by airborn company before d-day mission.
So how is it going to work? Like the default warcraft-ish way or something customized?
However, is your enemy smart, he will probably have though of that, just like everything else you can do in WiF. I'm not sure i see enough uses for paratroopers.
Sure, if they'd be able to capture a city so that you can start building from it, but i recall vuorma didn't like that option.
Nice, I'm guessing it's near completion by now right, after you guys have made so many updates in just one day?
I was actually thinking that I shouldn't post it since Fingolfin already posted his plane just before Fingolfin, you gonna make any sherman tank upgrade?
like
Calliope =http://www.hobbyonline.com.br/loja2/images/03074.jpg
Crab =http://www.free-images.org.uk/military/sherman-crab-tank.jpg
Flametrower (i forgot the name) =http://www.usarmymodels.com/AFV%20PHOTOS/M4%20SHERMAN/M4%20Sherman%20Front%20Left.jpg
because it is really weak, taking advantage only in use as many upgrades and mass production. (you know that)
cuz i believe a T-34 shot, can kill 3 shermans at same time xD
Off topic
in WW1 tsar tank was really used??
cuz it was SO DAM BIG!

Edit: Vuor & Fin you should gather all ur pics of WiF and put em somwhere so we can see the amazing models and terrain
