|
|
(10 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
| == Faulty example ==
| |
|
| |
|
| <!-- CONTINUE Notes -->
| |
| <dl class="command_description"> | | <dl class="command_description"> |
| | <dt></dt> |
| <dd class="notedate">Posted on February 3, 2015 - 21:30 (UTC)</dd> | | <dd class="notedate">Posted on February 3, 2015 - 21:30 (UTC)</dd> |
| <dt class="note">[[User:Pierre MGI|Pierre MGI]]</dt> | | <dt class="note">[[User:Pierre MGI|Pierre MGI]]</dt> |
| <dd class="note"> | | <dd class="note"> |
| This kind of functions remains FPS killer if you can't manage conditions in order to reduce operations for each entity or, to reduce the number of entities.
| | NearEntities returns many objects like "man" of course but also "animal", "logic" (and there are plenty of with Arsenal openings), "ammoBox_F", each weapon holder created when a unit dies.... |
| One of the most demanding CPU/GPU resource is probably a DrawIcon3D treatment for these entities.
| | Unfortunately, this command reaches the club of the other ones like nearestObjects as FPS demanding command. |
| Don't stay with a simple radius condition (disk selecting entities).
| | |
| Each time you can treat visible entities, as icons displaying, try to restrict this function to your screen.
| |
| For example:
| |
| if (((worldToScreen (visiblePosition _x)) select 0 > (0 * safezoneW + safezoneX)) &&
| |
| ((worldToScreen (visiblePosition _x)) select 0 <(1 * safezoneW + safezoneX))) then {...} foreach _pos nearEntities _radius
| |
| </dd> | | </dd> |
| </dl> | | </dl> |
| <!-- DISCONTINUE Notes -->
| |
|
| |
| No idea what example is supposed to be but syntax is wrong [[User:Killzone Kid|Killzone Kid]] ([[User talk:Killzone Kid|talk]]) 18:05, 17 October 2015 (CEST)
| |
|
| |
| No problemo. It works every day for me, as i display icons on each units. (where the code is supposed to be in {...}. I just remarked I get better FPS if i limit the drawIcon3D within the screen frame. No calculation for "out of range" (screen display limit) units. So, i think in that case nearEntities is optimized to the units appearing on screen (a sector rather than a 360° disk). I would like to know how a wrong syntax could work "onEachFrame", several hours a day. I admit my script could be not "optimized" but your remark is as short as a BIKI documentation. Thank you for taking time for a discuss.
| |
| ::Well fatigue seems to be disabled for good anyway, but looking at your script:
| |
| <code>0= [] spawn {
| |
| {
| |
| while {alive _x} do {
| |
| scopename "fatigued";
| |
| sleep 0.5;
| |
| waituntil {
| |
| sleep 0.5;
| |
| getFatigue _x > 0.4
| |
| };
| |
| _x setFatigue 0.4
| |
| };
| |
| breakTo "fatigued"
| |
| } forEach units my_group;
| |
| };</code>
| |
| It should get stuck on the first member of the group until he is dead or tired, then [[breakTo]] will not break back to while loop, it will just terminate everything. I don't know why you are saying it is working fine, because clearly it is not. [[User:Killzone Kid|Killzone Kid]] ([[User talk:Killzone Kid|talk]]) 19:56, 19 October 2015 (CEST)
| |