Jump to content
CTI player IF

TZK CTI MOD/MPMissions

Recommended Posts

(Latest version: 4.0.3.01)

 

Hello everyone. This is a mod and missions about CTI, naming TZK, which is developed basing on crCTI (ver 1.0) of XR missions, the irparaZ-@RES2C3C8. I optimized the design of CTI basing on personal comprehension about CTI, added many practical functions (e.g. "join" system, which allow players passing their members to other groups, and "Artillery Module", etc) and fixed discovered bugs. Since TZK_2.00, inspired by the "SE", a modified mission version basing on TZK_1.10, the author added some units and upgrade items. And since TZK_2.12 the 2.01 Arma:Resistance is applied, which allows the author to design some MP-stable visual effects, edit strings, precisely check units ammunition, design radio channel as an enhancement of the action list, etc.

 

There're some designs not widely accept by players. For example, many EU ppls complained that in TZK AA are too strong and the game is "world of tank", but CHN ppls are mostly opposite, they think plane too strong. And many other ppls who don't often play mod-required CTI but prefer vanilla game. Idecoupled mostly scripts and EventHandlers from the mod and move them into MPMissions in version 2.12, and this can reduce the difficulty transplanting TZK design into vanilla game. Since TZK_4.0.0 I designed the modified TZK mission for mod mfcti and totalYugoWar, which remain mostly TZK mission design but link to units of mfcti/Yugo mod. Those missions are for 1.99 ACWA and don't require 2.01 ArmA:R. And they require an extra TZK critical addon: TZK_Objects.pbo, because TZK still remain many application of UserActions, which must be edited in the addon. UserActions (UA, for short) has radius and condition parameters although it doesn't pass the "caller", thus mostly it works better than addAction. Mostly EventHandlers can be found in "Common\InitVehicle.sqs", and in those "EH" or "Effect" subfolders. I recommend editors to place EH in mission scripts but not in AddOns except for there're many removeEventHandler in the mission script. In OFP the index managing of EH is bad, and in this case we should better place many EH in the definition of the object class but not add them in-game.

TZK applied 2.01 Arma Resistance by [4RTech], many settings require new engine and don't fit 1.99 ACWA. 2.01 Arma Resistance by [4RTech] is very useful for CTI. Details will be posted below when the author have free time. If someone wish to modify TZK for 1.99 ACWA, those missions for mfcti/Yugo are recommend since, as mentioned above, they're for 1.99 ACWA and thus modified to remove 2.01 commands.

 

(Actually, if [4RTech] make addAction so functional as listed in BIKI, I'll be glad to decouple UserActions and recover the addAction. The addAction and addEventHandler is applied well in XR mission, which thus owning good independence and requiring a light MOD. But addAction is really insufficient.)

 

Download:

Spoiler

Stable TZK_2.10&2.12 (Outdated.😞

TZK_2.10 MOD (Backup link)

TZK_2.12 Patch

TZK_2.12 MPMissions(Require @TZK_2.10 and @TZK_2.12 MOD, beside with  2.01 Arma Resistance)

Spoiler

TZK_4.0.0 & 4.0.3

TZK_4.0.0 MOD    TZK_4.0.3 MOD (Use with 4.0.0, namely in format (...;)@TZK_4.0.0;@TZK_4.0.3

Some islands not included in old island package.

4.0.3 Series TZK MPMissions

4.0.0 Series TZK MPMissions

 

If players wish to experence TZK only, without downloading a big MOD, they can download just a 5MB critical Addon "TZK_Objects" and play those "Vanilla" missions (packed in above "MPMIssions" as well).

TZK_Objects

USSR TZK server in Russia: 90.154.74.43:2305

Project TZK on github.

 

A document of 2.12 new features.

4.0.0 introductions (in this topic).

Edited by CTI player IF
Update for new release.
  • Like 1

Share this post


Link to post
Share on other sites

On this floor I'll post something about the "no-response" problem and Server FPS, both of which is basic but important.

No-response Server.

There was strange phenomenon since TZK_2.10, i.e. the dedicated server process "no-response". TZK_2.10, 3.00 and 3.01 are failure since they can't get rid of this phenomenon. Having been bothered by it and all analysing failed, the author experimented many times with "controlling-variable method". Finally the author found the inconspicuous source. Aiming to make AI able to carring enough sniper rifle magazines with a satchel, the author defined a "portable satchel" in this way:

 	class PipeBomb_Pistol_xj200: PipeBomb {
		magazineType = 32; // The critical modified parameter. 
     // Original PipeBomb use 2x 256 as magazineType occupying 2 slot of primary weapon, while (1x)32 use 1 pistol slot.
      
		picture = "\dtaExt\equip\m\m_timebomb.paa";
	};

And the surprising result is all MPMissions with some AI carrying such satchel caused the "no-response" server problem.

This phenomenon is strange. It won't appear when AI carrying "portable mine" defined in same way:

	class Mine_Pistol_xj200: Mine {
		magazineType = 32;
		picture = "\dtaExt\equip\m\m_mine.paa";
	};

The reason probably due to something hard-coded in "simulation". Mines has defaultMagazine parameter, allow editor assign proper magazine when activate "take/deactivate mine" action, while timebomb/pipebomb hasn't. Another parameter "enableAttack" seems don't relate to this.

This problem isn't related to 2.01 ArmA:Resistance because it existed since TZK_2.10, which was played on 1.96 game.

 

When exploring the reason causing "no-response" server, the author "summarized" other reasons. Not sure whether they're right nowadays and requiring proof.

Spoiler

Groups ID

Spoiler

In 2.01 Arma Resistance the createGroup command is available. Missions applied this command cause no-response server.

The problem probably because of different group ID in MP game. The effect of "setGroupID" seems to be local, according to BIKI. In TZK scripts groups placed in mission.sqm will be initialized frist, then playable groups' ID will be set by "setGroupID" in init.sqs. Probably "createGroup" command should strictly be executed behind Init.sqs, that is, better after game has started.

The command "createGroup" don't have such "Init" parameter as createUnit. However the order groupID be used by groups should follow a fixed rule defined in OFP. It's possible in this way to get new groups' ID without applying "publicVariable" but by calling strings pre-defined in the way groupID being used.

Objects' id in mission.sqm

Spoiler

It seems unacceptable to set multi groups/vehicles sharing same ID in mission.sqm. This setting probably caused no-response server as well.

Discontinuous ID is acceptable, i.e., some number can be jumped without being used by any groups/vehicles. Actually those playable roles being closed in MP game are deleted, and surely will cause ID discontinuous.

Unknown Problem of 2.10 mission and 2.12 missions now (i.e., the "portable satchel" mentioned above, which isn't spotted when writing these)

Spoiler

Settings above aren't included in 2.10 missions. Thus there must exists other problem sources. Remain unspotted.

As mentioned above, 2.12 missions now have same problem. This phenomenon used to disappear in 2.12H~N, which are relying on @TZK_2.10 only, without having upgraded to @TZK_2.12. Thus probably the problem is of the mod, however problem of 2.10 mission isn't found as well.

 

Server FPS:

It would be good if server FPS always more than 30. However in TZK (not verified in other CTI yet. The author know the "#monitor" command only few days before the date he posts this floor), the server FPS will reduce with the increase of players. In TZK mission, on a cheap CHN cloud server, a game with only 1 player, full 8 groups AI tanks, full enemy AI 18 group tanks and full resistance patrol groups still has about 36-38 FPS. However, when about 10 players, server FPS will reduce to about 15-20, and 12-15 with 12 players, 6-8 with 17 players (once).

Several attempts are made, trying to find out what the problem is, and to optimize it. List below, and keep on updating.

Spoiler

EventHandler

Spoiler

Aiming to reduce server burden and make scripts easier to be upgraded (by updating MPMissions but not MOD), most EventHandlers are decoupled with MOD.

This project started in 2.12R (3 version behind v00).

Init: This EventHandler can be used to broadcast something, and thus remained in MOD. They're well designed, set to execute scripts mostly deployed in missions. This EH probably don't related to server FPS.

Fired: This EventHandler in TZK_2.12 applying 2.01 Arma Resistance is used for limiting the weapon range of vehicles of player group, and for global (in MP) tracer effect. This EH is only added on players clients but not server. However since Fired EH is global, it might related to server FPS. But the global effect require this EH thus it won't be modified.

IncomingMissile: Although this EventHandler is "global", it won't be triggered by a rocket/missile if IncomingMissile EH isn't added on the client of the rocket. Thus this EH must be added to dedicated server, or IncomingMissile EH attaching on players' vehicles won't be activated by rocket/missile shot from server units (i.e., mostly AI).

Other EH added in MPMission designed in XR: They're totally remained.

Towns' Spawn/Hibernate

Spoiler

In previous designs, the server will check all units' position to decide whether a town should hibernate or not. Is it possible that reading remote units (of players' clients) cause server FPS reducing?

The author modify the design. Server now will only check server local units (of AI groups). Players will check their members, and send message (by publicVariable) if his member are closed enough to some towns.

This project started in 2.12T (1 version behind v00).

The "find" command and SQF

Spoiler

According to @krzychuzokecia, and introduction of Scheduler, the author think it necessary to reduce the use of SQF. Besides, in 1.96 there is no "find" command and must use a SQF to search for array element, but since 1.99 "find" is available.

This project started on the beginning of 2.12. Recently in 2.12 v03 SQF of AddRearmData and EditRearmData are removed, and the use of GetRearmData.sqf and GetUnitTypeFromObject.sqf is reduced on server. Besides, the script of resistance patrol group uses mostly SQS syntax as well.

Up till 2.12 v03 attempts above are all failed to solve the problem. They seems even have no little improvements. Server FPS is always about 40 (highest level of our TZK server) on the beginning, and keep on reducing up till it reaches a stable value, which is related to the number of players.

Next plan is to analysis the "GetClosestStructure.sqf“, which is widely used by AI units to ask them attack enemy base. To be honest the author has little hope now.

The cycling scripts

Spoiler

An important discovering, or I'm ignorant, is that SQS scripts keep on looping may lag the game.

Having been looking for reasons causing "no-response" server for months, with taking the server FPS as an important indicator, I finally realized the possibility that problems might be caused by cycling scripts. I tested in CTI, first close all west/east groups but remain resistance patrol tank groups and town groups, then did nothing but only observed the server FPS. FPS is 59 in the beginning 20 minutes, then reduce to about 35. Second I adjust scripts of res patrol groups, making them not to loop but pass status to a new script and terminate this being executed one. Surprisingly the server FPS kept at 59 for long.

The reason to this phenomenon might be that some local variables aren't totally released until the script ends.
Cycling scripts are widely used in crCTI design, at least since XR version, and XR missions sometimes (if not often) crashed server. This is not the only reason reducing server FPS, since in other games that many scripts were adjusted in this way and west/east groups were opened the server FPS can't hold 59. It probably isn't the only reason causing no-response server either, since the design existed in XR mission but no-response server problem didn't. However, at least by this method players' dragging map by mouse and spectator's moving camera are smoother.

 

 

 

Alex_Mercer_1479(BI forum ID: @prototype1479) is interested in this. So I'll record some test result here (on my i5-8400 intel CPU. A dedicated server and a game client is hosted).

  1. No Town/Patrol groups. AICO will only ask groups' leader to take 1st town. No time limit.
    1. Server FPS is 40-45.
  2. Turn off units' scripts (while leaders' temporary take 1st town scripts remain working) in last case.
    1. Server FPS is 50-60. In most times FPS no less than 55. There're 18x2 groups with full of tanks.
    2. So server FPS seems very weak related to units/vehicles number.
  3. Turn on units' scripts, but the script contains only the simplest loop without anything else.
Edited by CTI player IF
Update info about Server FPS test
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Factory Type:

Spoiler

crCTI use unitDefs matrix to define available units in mission. Each unit is stored as an array, recording its "display name in buy list", "available side", "price", "factory type", "class name in CONFIG", etc. The udFactoryType is a constant of the index of the "factory type" element.

In previous designs, the factory type is related to supplying scripts (to judge whether the unit is an aircraft, and thus control air's behaviour when supplying), attach (only allow trucks and helicopters to attach units built from Light Factory. No limits to Ambulance APC) and displaying in buy list. If wish to design an object supported by different factories, they must be defined many times for different factory type.

New designs in TZK use binary system to store the factory type, i.e., 2^(type of light factory) + 2^(type of heavy factory). Scripts will decode them when necessary (LOG command is powerful here, but it might lost accuracy and need rounding). In new design, a unit allowed to be created by multi factories need to be defined only once.

This project started in 2.12S (2 version behind v00).

Attach:

Spoiler

As mentioned above, previous design of attach requiring units' factory type.

2.01 Arma Resistance support a new command "getMass", and new design using mass to check whether an object is attach-able for some tug.

This project started in 2.12S (2 version behind v00).

Share this post


Link to post
Share on other sites

Shooting Target Command:

Spoiler

The history of artillery support in OFP probably as long as the history of OFP itself. However, for playfulness and balance, the author opposite shell created via scripts and insist that shell must be shot by vehicles directly.

This project started in 2.12 v03.

It's not hard to "camCreate" invisible HeliH (the "HeliHEmpty" in CONFIG") to guide AI's shooting. But if wish to design it better, those obstructing because of OFP's imperfect must be faced or got avoid.

  1. "fire" command for soldier. This command is invalid for soldier since they'll always aiming up immediately, before they fire their weapon. The author thus gived up the command supporting to mortar soldiers.
  2. Inaccurate trajectory computation on distant target. This design using simple first-"doTarget"-then-"fire", but for distant target (or low initSpeed weapon) the trajectory given by game engine is inaccurate and the shell thus will certainly missed when distance far.

Problems above can be totally solved by one who can calculate accurate trajectory in OFP. However this is beyond the author's ability limit.

 

(Updated in 2.12 v08) More exploration made by the author and new discoveries raised.

  1. The "HeliHEmpty" is not a good target for this design. AI can't see it (probably because of its simulation and model) and thus can neither aim precisely nor response to the change of its position. The "HeliH" created by "camCreate" command with only local effect should be better.
  2. The "fire" command have problems as mentioned on the next floor. In order to make the command being executed when the muzzle is loaded, the delay must be assigned correctly, and it's necessary to process the situation reloading magazine. The reloadTime and magazineReloadTime should be gain by 2.01 commands, and be applied to make sure the frame "fire" works the muzzle is loaded.
  • Besides, if a vehicle is rearmed in CTI, which remove all magazines and add magazines again when rearm completed, will cost long to reload the magazine, if no one sitting in the gunner seat on the frame its magazines being added (probably the reloadtime in this case is equivalent to a "skill = 0" gunner). This will cause problem as well, especially for mortar structure, in which AI units always killed himself when metting this situation.
  • And TZK thus remove the current magazine when AI starts to execute this order, and soon recover this magazine, to mandatory make the vehicle "reload" the magazine and thus cost only common magazineReloadTime. The 2.01 command applied in this step is introduced on the next two floor.

 

(Updated on June 15, 2020, for TZK_4.0.0 coming soon)

The whole design contains M109/PLZ05 howitzer vehicle, M270/TOS-1, M119/D30-A howitzer structure, M252 Mortar structure, and "Art tank" (a CTI concept vehicle).

The object act as "target" should better won't be destroyed. A dead structure will disappear in 2-Target list and thus cause inaccurate aiming (and if adjust dead target's position, units won't response to this position change). In 1.96/1.99 editor can ask the target "setDamage 0" frequently, and in 2.01 one can apply "allowDammage" command (it's okay to apply this command on camCreate-ed vehicle).

It'll be better to make a special object with self-defined model. Design a model with nothing in resolution LOD, something in Geometry LOD but below many meters than LandContact LOD, and a zarmeny vertex in memory LOD. Define it as a structure (like HeliH), camCreate it in game and set it never die.

The ammoArray 2.01 command can be applied to protect the fire command partly. See next floor.

Marker Displaying:

Spoiler

In previous designs the main part of marker displaying script using SQS syntax. The period is 0.5 second however the time executing codes cost another 0.5 seconds.

In TZK the main part reading units' position and setting markers' position is processed by SQF. Enemy vehicles' marker (mostly are aircrafts detected by air-radar) requiring calculate radars first and checking distance then, thus they're using SQS with a 1 second delay. TZK added structures' marker displaying as well. Since strutures are unable to move, they don't have to be refreshed in high frequency. The period is 30 seconds for them, and only check whether they're null or not.

This project started in 2.12 v00.

 

Edited by CTI player IF
Update.
  • Confused 1

Share this post


Link to post
Share on other sites

I will temporarily write some notes about script commands and other notes about OFP (including some 2.01 related commands) here, since BIKI refuse new edit.

fire

Spoiler

The syntax of fire is unit fire muzzle or unit fire [muzzle, mode, magazine]. The fire command is valid if its 2nd parameter (about muzzle) is match the 1st parameter (about unit) in the frame it's executed, i.e., require the unit does have the correct muzzle (with magazine and mode).

However, "actual fire" require more, i.e., the existence of gunner and the loaded magazine. This make the "fire" command sometimes deviate the "actual fire". Furthermore, if the valid "fire" command is executed at the moment unable to "actual fire", the AI will aim down (depends on the "minElev" of that weapon), and when the frame able to "actual fire" comes, AI will shoot immediately, which is possible hurt itself.

This command is Irrevocable. No matther what the editor do in script (e.g. remove magazines from the vehicle or ask the gunner eject), the "actual fire" will occur on the frame all conditions met. A remedy can be a temporary Fired-EH which can catch and remove the bullet, with the EH itself. However the index of EH in OFP isn't well designed, and if other same kind EH is temporary add/removed, this remedy might cause other severer problem. Fatally we can't know whether a muzzle is loading a magazine or not by script commands in OFP.

 

The author designed a "shoot target" design in TZK, which relying on fire command. Aiming to get avoid from those situation which will cause dangerous when applying fire, the author combined some 2.01 commands to prevent them from appearing. See next floor in this topic.

(Updated on June 15, 2020) Using "ammo" to exclude "ammunition == 0" case can help partly. Although it can't help checking whether a weapon is loading, but if a weapon hasn't loaded any magazines yet, this case can protect the execution of fire command. Sometimes, this is necessary. For example, in MP game, when a vehicle with REMOTE gunner "addMagazine", the remote gunner won't automatically reload that magazine. It require manually call "reload" action, and can be protected by ammo command.

 

Side

Spoiler

Although the return value of side is (displayed by format) "GUER, CIV", etc, we have to use "resistance", "civilian“ to tell right side to OFP.

createGroup

Spoiler

The side command of a group created by createGroup but without any units (and, maybe a group that all groups are removed but group didn't be destroyed. NOT verified yet) will return "unknown". However we can still get its side with the help of 2.01 command substr. The first 4 letters of group's name indicated its side.

Since this command has global effect, we should better only ask server to execute it.

setGroupID

Spoiler

This command has only local effect. CTI use this command to set 18×2 playable groups' ID with "no group color". Since createGroup command lacks "init" parameter, this command should be applied with enough research.

The order of group's ID probably are fixed. It's possible to judge new created groups' ID in this way. However unfortunately we can't use "call" + string to get "group" data. The way broadcast its ID can via the "init" parameter of createUnit command.

 

animate

Spoiler

Sometimes editors use script command animationPhase to obtain the phase for controlling. However this command won't return changed value if player's view (including switched-by-camera view) is in the LOD NOT including the selection of animation.

Some new phenomenons discovered at

By the way, if a vehicle is out of sight (roughly disappear at 2/3 viewDistance), animationPhase will always return unchanged value, no matter how many the value of model's resolution LOD. The animationPhase will obtain correct current value on the moment the vehicle get into the sight, but scripts controlled by animationPhase command will invalid before the moment.

Some mods of planes design the "After Burner" function for planes and mostly using animationPhase for controlling. The animation is good in independence and local management (better than magazine and other methods), but this limit reduce its functionality.

saveStatus

Spoiler

If the soldier equipping none of weapons/magazines, its status won't be saved into objects.sav. However the command saveStatus will still return true.

It thus sometimes necessary to apply the deleteStatus command and treat cases separately.

 

to be continued...

Edited by CTI player IF
Updating.

Share this post


Link to post
Share on other sites

On this floor I'll introduce how 2.01 ArmA:Resistance improve the TZK design.

mission.sqm

Spoiler

Editors must place many groups, markers and sensors in mission.sqm in OFP/ACWA. With the help of createGroup, createMarker and createTrigger, they can be dynamic created by scripts in-game and don't have to be pre-defined in mission.sqm any longer.

Take CTI for example. Except for those playable groups, editor must define town groups, patrol groups, some functional groups (e.g. temporary group, join group), markers for displaying (in TZK we need near 2000 markers), and sensors for units near the town flag, for game end and for teleporting of the bridge. With the help of createMarker and createTrigger, those standard functional markers and town/end sensors can be removed from mission.sqm, and only those unique markers (e.g. for town's name) and sensors (for teleporter bridge) require being remained here. Groups, as mentioned above, aren't created dynamic yet. But with the help of allowDammage, editor don't have to find lands to place leaders when transplanting missions. All leaders are set allowDammage false, and hence can be placed in sea.

This surely will make transplanting very simple. One can directly merge existed mission with an island, and only adjust the flagCarriers' name and position, necessary marker and teleporter sensor.

Besides, since 1.99 ACWA we have "isServer" command, and don't need a game-logic to judge whether a game is server or not. Thus TZK remove that logic and place a resistance group instead. This group is for some initialization, and for "center" of resistance side. The center is necessary for createGroup command on every side.

Text of Leader Markers

Spoiler

The new command setMarkerText allow editor to set the text of markers. And thus in TZK we can display players' name on their marker.

Creating Markers

Spoiler

The covering of markers depending on the order in which they're created. Besides, new created marker has the type "empty", which will display nothing including its text. Thus one must assign a type to it, even though you only wish it display text without marker (in this case you should assign the size of the marker [0,0]).

The number of town groups units marker can relying on the number of towns.

TZK also create those "Respawn_west" markers. They're for respawn mode.

Town, GameEnd Triggers and Radio Channel

Spoiler

Town triggers can be created exactly at the position of every flagCarriers.

Since the CTI using a public variable to broadcast "GameOver", GameEnd triggers can be created when client received this variable.

Radio channel is defined by triggers whose "Activation" is between "ALPHA" and "JULIET". Before 2.01 editor can only pre-define at most 10 channels. Since 2.01 support editor edit the triggers in-game, TZK make the radio channel design to partly take place of redundant action list. There's a script "UpdatePlayerVehicle.sqs" activated when player's vehicle changed, and the refresh of radio channel is set here. The radio list is different for different vehicle.

 

Precisely reload the current magazine

Spoiler

The 2.01 ammoArray command will return an array. The array is consist of current magazine name and its ammunition. Since the removeMagazine will remove the current loading magazine, editor can thus know which magazine should be removed.

The 2.01 addMagazinePrecise command allow editor to add a magazine with defined ammunition. This command make editors able to return exactly the removed magazine to the unit.

 

Actually, the returned array of ammoArray will list all modes of current magazine, although the displayed string is still the magazine name but nor modes' name.

Example 1:

<east grenadier> ammoarray "ak74muzzle" will return ["ak74", 30, "ak74", 30, "ak74", 30], corresponding to 3 modes of AK74.

Precisely gain no empty magazines of a unit

Spoiler

Exhausted (but not removed) magazines will remain in the returned array of magazines command. And for those weapons whose "autoReload" = 0 (like soldiers' rifle), remove the empty magazine and add a new one won't make the magazine being loaded, and thus the ammo command will still return "0". This causes indistinguishable situations.

Although exhausted magazines will remain in the 2.01 command magazinesArray command as well, the magazinesArray returns ammunition of each magazines, and thus make editor able to judge whether a magazine is empty.

Precisely know whether a unit exhausted all available magazines of some weapons

Spoiler

An unit has weapons. A weapon equipping muzzles. And a muzzle can reload magazines. That's the idea.

However one'd better develop his comprehension about the relationship among "weapon, muzzle, magazine and mode" first.

The 2.01 command GetWeaponParamArray can be used to gain its muzzles. BUT, if "this" is one of the muzzle, it is actually defined by the weapon class and uses parameters of the weapon class. In other words, that muzzle should be treated as a muzzle whose class is equal to the weapon's.

If a muzzle is defined in the subClass of the weapon, editor should use the 2.01 command GetWeaponSubParamArray to gain magazines of the muzzle. Otherwise editor should still apply GetWeaponParamArray to the muzzle's class (usually this class is just the weapon's) to gain its magazines info. Again if we meet "this" we should know its class is actually the class it belongs to, i.e., can be the subClass of the muzzle or the class of the muzzle (again, usually this class is just the weapon's).

Finally editor gains all available magazines to a weapon. What remain to do is just check whether a unit has not empty magazines available to the weapon. To this end, it require only checking the magazinesArray.

 

Know how many soldiers can a vehicle load

Spoiler

Using GetVehicleParam one can get the value of transportSoldier of a vehicle.

Get the mass of a unit

Spoiler

Using getMsss. The return value is the mass (kg) of its model.

 

Design multiple launching position for a vehicle

Spoiler

 

Obtain texture's path directly from "hiddenSelections[]" array

Spoiler

When designing selections in model for setObjectTexture command, editor can assign the selections' name including texture's path (like "tex_abrams_kolo2.pac"). By using GetVehicleParamArray one can obtain path info via return array directly.

 

to be continued...

Edited by CTI player IF
Update.

Share this post


Link to post
Share on other sites

Latest version 4.0.0 Beta released.

Planning to break for few months, and write notes about editing and documents about TZK gradually...

Download:

Spoiler

TZK_4.0.0 & 4.0.3

TZK_4.0.0 MOD

TZK_4.0.3 MOD

 

Spoiler

Patch Logs

[+] 2020.07.02

The author use captical letters by mistake when using "hex editor" to replace the textures' path of ODOL format. Path of textures in ODOL format should be lower-case. If replaced with captical letters, the ODOL model can still work for OFP, but big size textures switched by "setObjectTexture" will become indistinct no matter whether they've been pre-defined in the model.

Some islands not included in old island package.

4.0.3 Series TZK MPMissions

4.0.0 Series TZK MPMissions

New features:

Spoiler

[+] Artillery Module.

One of the main work of this version. Theory supported by projectiles' motion equation, target object's model/config exploration and view-gunner LOD editing.

  • Target Assigning:
    • Commander and players are able to assign target on map, in the same way assign co/wp way points.
    • TZK design a special model and CfgVehicle subclass as target object.
      • It's important to assign such a target "invincible". Broken objects will behave different from alive ones (e.g. disappear in 2-target list). In 2.01 TZK applied "allowDammage false" on it.
  • Available Vehicles:
    • M119/D30A howitzer structure (cheap, less powered and can't move).
    • M252 Mortar structure (common price, powerful but short range, can't move).
    • M109/PLZ05 howitzer vehicle (common price, powerful and can move).
    • M270/TOS-1 Rocket Launcher System (expensive, very powerful, long rearm time as 5 minutes).
  • Commanding:
    • Switch Magazine Speed.
      • In OFP the "initSpeed" is magazine's parameter. Player can ask AI switch different speed magazines to have different range/curved trajectory.
      • Initial Speed and Range List:

        Spoiler

        * 80m/s,  500 meters.
        * 120m/s, 1000 meters.
        * 180m/s, 1500 meters.
        * 300m/s, 2500 meters.
        * 400m/s, 3000 meters.
        * 500m/s, 3500 meters.
        * 600m/s, 4000 meters.
        ...
        * 1500m/s, 5900 meters.

    • Shooting Target.

      • Player should manually assign the destination of vehicle first. Player's command won't cause AI "move" but "shoot" directly.

      • AI groups are controlled by "Temporary Order" system. They'll move to assigned "CO" waypoint first, then start to attack.

    • Range Limit.

      • In CTI vehicles' range are limited. So do Artillery Vehicles.

      • But Howitzer Structures and M1A1/T80 have "Art" unit, they don't have range limit.

      • However, although the "Target" object is designed for AI to discovery it easily within view distance, they can't lock that target out of view distance. If wish to ask them shooting far away targets, it's necessary to ask another member belongs to same group to help spot the target (e.g. ask a sniper to get close to the target, or use aircrafts whose radar range is double of tanks to help scanning the target).

    • Commanding Tanks.

      • Light/Heavy tanks are supported by this command as well. But they don't support magazine switching and thus can only shooting directly.

  • Player manually controlling:

    • When player is in the vehicle, he can use radio system to switch the magazines and have auxiliary graduations for aiming.

 

[+] Extended Player Order Dialog.

Player now is allowed to use "SHIFT+ALT" on map single click to call another order dialog. Old method, "SHIFT", is still valid but will display only 1 page of orders as in XR mission, i.e., end at "disband" order. New orders like "Join" or "shoot target" applied in the video above should be called by "SHIFT+ALT".

[+] Multiple Texture Supporting.
Applying "setObjectTexture" command on pre-designed models can make a model supporting different styles. With the help of 2.01 powerful commands, controlling it will be very convenient.
TZK chooses 4 styles, namely common/desert/green(wood)/winter. Vehicles will be textured in D or W style in corresponding islands. As for common islands, it’ll be 30% to present green style.
There are still some models don’t support some styles, due to lacking of textures and time. It’ll be good if someone provide textures or even completed models to the author.
However this design can’t compatible with “dammageHalf[]” of vehicles and “wounds[]” of soldiers. "dammage...[]" are mostly used for glass, which probably won't be included in re-texturing, but "wounds" almost always cover cloths of soldier. An additional method might be combining "damage" EventHandler to trigger the "setObjectTexture" command.

[+] irTarget = 0 vehicles.

Set MH6/Mi2 and  UH60/Mi17 using BIS model units as “irScanGround false, irTarget false” unit, to make air transport useful. Aircraft and AA are too powerful in TZK, thus transport helicopter with “irTarget true” is quite useless when facing AA missiles.
Set the PCjetski, zodiac and QUAD “isTarget false” as well, make sneak attack from player towards base easier.

[+] "VectorUp".

In OFP no way to assign object's z-coordinate of direction. The "setDir" command has only horizontal effect. 2.01 support "Vector..." commands and thus can be applied.

Structures and being attached vehicles will have changed "UP" now.

[+] Some new models.

 

Bug fixing, CONFIG/Model/MOD Optimization will be given later in documents, maybe...It'll probably cost long to write them.

Authorship

Spoiler

TZK is a mod for CTI ONLY. Many General mods will design their own initialize method in external missions applied their units (via Init EventHandlers or some external files), but TZK omit this step and ask the MISSION to build up the environment.

 

TZK extracts many AddOns and place their files in TZK AddOns. The reasons due to:

1. Some functions’ realizing requiring re-modelling.

2. Aiming to reduce the volume of whole mod, only necessary files should be remained. If remove files from those AddOns and re-pack them, they might conflict with original ones.

3. TZK and some AddOns are still keep on updating. Place introduced files in TZK AddOns whose name including version will make managing better.

Some AddOns allowed the author to use their materials provided that the authorship is mentioned. But some AddOns/Mods require original files remain in the mod, and the author failed to contact with them (too long after those PBO released and almost all email address given by their documents are invalid now). All authorship of AddOns modified and introduced into TZK will be listed below.

 

Anyone is free to use TZK design, namely CTI mission designs advanced than crcti1.0_ @RES2C3C8 -irparaZ, methods of model modifying of some units applied in TZK, and all notes posted on BI forum (CfgWeapons, mortar, accuracy, multiple launching, motion equations of projectile, etc). The right of models/textures/soldier animations/sounds introduced into TZK mod belongs to their original author, and they’re not recommended to be transplanted, since they’re modified for TZK only, which, is for CTI only. If you spotted something interesting from TZK mod and wish to use them, search in their original AddOns should be better.

 

Baracken/cti_objects_02/dvd_v2

Structures applied by crCTI_1.0 for long. Critical structures are moved into TZK. The model of Aircraft Factory (hanger02 of baracken) uses “keep heignt” value of vertices’ surface property, which is different from other structures. Since vector commands supported by ArmA:Resistnace 2.01 version, the “surface” property can partly be placed by “VectorUp” command, and has been abandoned by “hanger02” introduced in TZK. Models of dvd_v2 still uniformly keep the “keep height” surface property.

The baracken is still remained in AddOns, due to many islands use its models.

Bas_lbs

MH6J unit.

BWMOD

Introduces Leo2A6 tank and Tiger Helicopter models with corresponding textures (some are from BWMOD_misc), sounds, soldier animations.

C8X_russ

Introduces AK74M/GP25, RPK74.

CBT mod

Take its textures for BIS M113/M2A2 (desert/green style)..

@CNCBR mod

Take desert style textures from desert_t80.pbo, gdi pbos, Take black textures from sov_htnk.

CoC_Arty/DKMM MOD

Introduces M109a6, TOS-1, Tunguska (2S6, Sa-19) from DKMM. M46 is once introduced but abandoned.

Take M252 model/textures, textures of M270 and some sounds from CoC_Arty.

Learnt many things from CoC_Arty.

CR09/Tank_1.2N

Lightly designed AddOns of BIS vehicles for crCTI in the old days. Very basic but important one. The way it design hit/incoming EventHandlers and some sounds are learnd and updated.

CSLA mod

Made by MAA (maa@mailbox.sk)

Take its textures for BIS BMP1/BMP2 (green style).

Introduces UH60 model/textures.

D30 of fru_arty.pbo

ECP_Effects

Textures of its NVGs are introduced. The 2.01 support custom multiple NVG in AddOns but not BIN\CONFIG.

EUDEF_MP5SD6

EU Defence mod MP5.

@ETON85 mod

The first big mods collected many things for the author to contact with: APC of CBT/CSLA, CfgMaterials effects, SLX MG/ffur missile/CSLA burning effects and aircraft of CSLA UH60, RHS mi24, owp mi17 and vit ah1.

Nothing introduced directly, but learnt many things.

fk_hmmwv

Introduces model wood_hmmwv_m2wS and wood_hmmwv_tow2, with corresponding textures and animations rtm files, as armed HMMWV.

GDTcti

Tomahawk missile model.

Hitman (person’s username)

Motivation and inspiration of shell’s motivation equation researching.

Source for the author learning View-Gunner LOD reticle/graduation design.

Motivation for completed artillery design in TZK_4.0.0 version.

HWK_C130

ICP_rfwp

Introduces SVDS, vss/val, PKM. Add 1P29 from C8X to PKM.

ICP_t72s/ICP_t90

Introduces its t90 unit.

INQ_M1

Textures for M1A2 (common, desert and winter style).

JahSG551

JAM_Magazines

Once be introduced but abandoned.

KEGak107

Made by Kegetys.

KEGnoecain_snow

Made by Kegetys.

The AddOn is a mod for winter style and an island of winter kolgujev. The author takes its textures for mostly BIS models’ winter texturing and extracted its island part for an island-only PBO, “Cain_Winter”.

KSVK

Made by VIT.

KYL_KASAP

Kenoxite (person’s username)

CfgMaterials Effect setting and some CfgTextureToMaterial collecting.

LSR_uswp

Introduces M4/M203, M24, M60e4, M240, M82, M249.

M119

M29064mm

Introduces M270’s model/textures from both oldest M29064mm.pbo and a new version of M29064mm.pbo packed in @RCWC mod.

MCAR Project

Introduces its desert style HMMWV textures.

It seems MCAR project is applied for many car AddOns to shoot guided missiles. The critical is to assign proxy cargo for model and assign them belongs to otocVez/otocHlaven to obtain the turret’s direction/elevation. In 2.01 the Vector commands and createShell will make such projects much more easier, however it’s still no way to obtain the turret’s direction. But TZK still don’t plan to apply MCAR method for target searching and turret direction obtaining.

Mi2NO

MFM_CFG_T90MS

This vehicle is introduced as heavy main tank. It’s re-modeled by TZK for multiple-texture supporting and has some other lightly adjust.

_____________________________________________________________________

 

Copyright:

_____________________________________________________________________

 

 Call of Duty: Ghosts (Infinity Ward) :      The original model and textures.

=SappeR=            : Optimization models / Different versions of the textures / Config.

DKM-Rastavovich (AKM74's APC pack)   : The scripts of the active protection "Arena".

Children of War      : The script of choice of ammo before it is fired.

Lex-OFP               :  Other scripts / Help with scripts.

_____________________________________________________________________

MNF_BRDM

Same as fk_hmmwv, introduces BRDM as armed BRDM.

MNF_ZSU

Introduces vehicles/textures for multiple style of shilka.

MPIV_AH64

AH64 unit.

mVSS

Made by mailman.

Owp_mi8

Introduce the mi8 models/textures and modifies it as Mi17.

Pack_Mortar

PCjetski

@PLA_3.2 mod

Introduces PLZ05 howitzer and ZTZ99G heavy tank.

@RCWC mod

Take its green textures of su25.

And obtain many addons there: Vit_AH1-W, MPIV_AH64, rktcoaler, MNF_BRDM, MNF_ZSU, M29064mm, owp_mi8, RHS_mi24, fru_arty, m119.

RFSVUa

Rktcoaler

AN72 unit.

RHS_Mi24

Mi24 unit.

SIG_M1/SIG_MN

Part of textures are introduced for BIS M1A1’s desert/green style.

SUCHrus/SUCHusmc

Introduces rocket launcher but not applied in mission.

Vit_AH1-W

AH1W unit.

VNGroza

@ww425bis

Definitions in BIN\CONFIG (of CfgMovesMC) and files of DTA\ANIM are introduced into TZK AddOns, aiming to remain original OFP’s CfgMovesMC and dta\anim.pbo, and prepare for further version.

Installation

Spoiler
  •  ArmA Resistance 2.01 is necessary for TZK.
  • TZK use custom BIN\CONFIG, thus TZK mod must be the FINAL mod with BIN\CONFIG in your mod list. You can use mods without BIN\CONFIG after TZK (like some language patch contain stringtable.csv only).
    • The order, -mod=<Island and other MODs>;<TZK>;<language mod>, is recommended.
  • TZK_Effects PBO defines CfgMaterials effect. It’s optional to put it in AddOns folder. One can design/apply his own CfgMaterials AddOn as well.
  • The author use @Re_Sky mod and ReShade when designing/playing TZK. One can apply his own visual mod as well, but these mods probably will modify BIN and DTA folder, thus make sure you know how they work. Use them at your own risk.

Contact

Spoiler
  • ICQ: @IFtheTZK
  • E-mail: IFtheTZK@hotmail.com

 

Edited by CTI player IF
Update for new patch

Share this post


Link to post
Share on other sites

Modified (1.99 ACWA) Missions Basing on TZK Design and Linking to Other Mods

I once designed missions basing on TZK mission design but using units assigned by crCTI0.93_kaoS@MF mission, which uses mfcti.pbo and modified rmfcti.pbo. Such a project isn't hard but trivial. Main part works are to edit the matrix of units, structures and equipments. Besides, since many players still play 1.99 ACWA but TZK relying on 2.01 ArmA:Resistance, I have to adjust mission design to make these missions able to work in 1.99.

 

A side product of this is some analogue method of 2.01 commands. New script commands of 2.01 are so convenient and useful that I never thought about designing their 1.99 analogue. However in making this version I have to face difficulties downgrading designs applied 2.01 commands. Part of them can find analogues, which might be useful to other 1.99 editors.

For example, 2.01 command GetVehicle(Sub)Param(Array) is for obtain parameters of specific vehicle class defined in CONFIG. In 1.99 we can use camCreate to make a temporary vehicle, and camCreate some logic objects then move it into the vehicle, to know whether it hasDriver/Gunner/Commander and how many soldiers it can transport. But this method can't be applied on weapons. It's possible to restore some weapons' data in script in this case.

 

Also, I tried to link TZK design with @totalYugoWar mod. By now there's only 1 mission for trial.

MFCTI AddOns

TZK_Objects.pbo <- Critical TZK AddOn.

Page of totalYugoWar mod on OFP info 2.0

4.0.3 Series TZK MPMissions

Share this post


Link to post
Share on other sites

Could you fix a problem in some TZK servers i was meaning about kicked for using cheats (bad user connection) even the user is clean (the problems comes when many players from 5 or more) im not talking about the ping im talking about the probelm in joining while in waiting

 

 

 

Share this post


Link to post
Share on other sites
13 hours ago, brusher16 said:

Could you fix a problem in some TZK servers i was meaning about kicked for using cheats (bad user connection) even the user is clean (the problems comes when many players from 5 or more) im not talking about the ping im talking about the probelm in joining while in waiting

 

 

 

I don't know. One of our player have this problem too, with his 2.01 none-official. However not any other player meet this problem. I think this may due to server setting or 2.01 features. Maybe you can ask 2.01 programmers.

Share this post


Link to post
Share on other sites

Thanks for the mod! We played in coop mode and quite enjoyed it (4.0.5 integrated, since 4.0.5SE and general 4.0.5 as downloaded complain about missing addons).

Got very impressed with tremendous tank battles between two colliding armies. Very nice idea to make AI commander send support vehicles around the map, so there's chance to retreat and heal/repair/rearm.

 

Found out few strange moments, could you please explain it to us?

  • In Vanilla TZK mission, there is no radar for tanks.
  • In all missions, we haven't seen AI commanders and AI teams to build aircraft (in KaoS mission they build some AA vehicles though). There are 4 helipads in the base template, but nobody flies around except for players, and AA role is fulfilled only by infantry. So when players get enough money for aircraft with upgraded rockets, it leads to endgame rather fast. On the contrary, in classic MFCTI game in DTB mode helicopters start assaulting the base rather soon.
  • Commander seems to ignore most of the upgrades even if the side has plenty money. Players have to spend money on costly upgrades themselves. Basically, commander upgrades leader weapons, town groups and town groups armor.
  • There are huge tank battles, but AI teams seem to choose mostly only one tank — M1A1/T80. There is huge variety of vehicles in the factory, but AI almost doesn't use them at all.
  • Aiming range for enemy vehicles is far beyond the view distance, even if voted to 1600. It is quite often on harder Resistance levels to see a volley of tank shells being constantly fired at the base somewhere from the distant hills in the fog, and there's little players can do about it.

 

Also, there are some questions that we couldn't find answers for in the docs.

  • What's the point for outposts? On Nogova map there are 2 outposts, each marked on the map as Outpost # -$500. Is it some kind of spawn spot for the Resistance?
  • Is the helipad added only for visual convenience, or it has some useful functions?
  • What is the essential difference between regular TZK and TZK-KaoS missions?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×