Staredit Network > Forums > Modding Assistance > Topic: Iscript sprites -> max number of frames is 255?
Iscript sprites -> max number of frames is 255?
Jan 5 2017, 12:27 am
By: DirectShift  

Jan 5 2017, 12:27 am DirectShift Post #1



Hello, I want to make sure why the unit I just finished designing and adding to starcraft was failing, but I think I know why that is.

I read somewhere that the max number of images for an unit (for example zealot) is 255, is this true? because I'm using like 400.

Thanks



None.

Jan 5 2017, 1:52 am O)FaRTy1billion[MM] Post #2

👻 👾 👽 💪

The limit on frames should be 65535. The width and height are limited to 255, but frame count should not be an issue (for example, unit\zerg\zlurker.grp has 595 frames).

If you would like, you could post or PM the GRP and maybe the iscript you are using and I or someone could take a look at it to see what could be the issue.



TinyMap2 - Latest in map compression! ( 7/09/14 - New build! )
EUD Action Enabler - Lightweight EUD/EPD support! (ChaosLauncher/MPQDraft support!)
EUDDB - topic - Help out by adding your EUDs! Or Submit reference files in the References tab!
MapSketch - New image->map generator!
EUDTrig - topic - Quickly and easily convert offsets to EUDs! (extended players supported)
SC2 Map Texture Mask Importer/Exporter - Edit texture placement in an image editor!
\:farty\: This page has been viewed [img]http://farty1billion.dyndns.org/Clicky.php?img.gif[/img] times!

Jan 5 2017, 2:32 am DirectShift Post #3



Quote from O)FaRTy1billion[MM]
The limit on frames should be 65535. The width and height are limited to 255, but frame count should not be an issue (for example, unit\zerg\zlurker.grp has 595 frames).

If you would like, you could post or PM the GRP and maybe the iscript you are using and I or someone could take a look at it to see what could be the issue.

Thanks farty, I picked the grp and found that, for some reason, the grp converter just grabbed just 223 frames.

So, that was the issue!



None.

Jan 5 2017, 3:06 am DirectShift Post #4



Sorry, it keeps failing.
The problem appears in ZealotWalking, this is the code:

Quote
# ----------------------------------------------------------------------------- #
# This is a decompile of the iscript.bin file 'data\scripts\iscript.bin'
# created on: Mon Jan 02 21:35:02 2017
# ----------------------------------------------------------------------------- #

# ----------------------------------------------------------------------------- #
# This header is used by images.dat entries:
# 151 Zealot (protoss\zealot.grp)
.headerstart
IsId 163
Type 21
Init ZealotInit
Death ZealotDeath
GndAttkInit ZealotGndAttkInit
AirAttkInit [NONE]
Unused1 [NONE]
GndAttkRpt ZealotGndAttkRpt
AirAttkRpt [NONE]
CastSpell [NONE]
GndAttkToIdle ZealotGndAttkToIdle
AirAttkToIdle [NONE]
Unused2 [NONE]
Walking ZealotWalking
WalkingToIdle ZealotWalkingToIdle
SpecialState1 [NONE]
SpecialState2 [NONE]
AlmostBuilt [NONE]
Built [NONE]
Landing [NONE]
LiftOff [NONE]
IsWorking [NONE]
WorkingToIdle [NONE]
WarpIn ZealotWarpIn
.headerend
# ----------------------------------------------------------------------------- #

ZealotInit:
imgul 152 0 0 # ZealotShad (protoss\pzeShad.grp)
ZealotWalkingToIdle:
playfram 0xaa # frame set 5
goto ZealotLocal00

ZealotLocal00:
wait 125
goto ZealotLocal00

ZealotDeath:
playsnd 678 # Protoss\ZEALOT\PZeDth00.WAV
setfldirect 0
playfram 0x198 # frame set 13
wait 2
playfram 0x199 # frame set 13
wait 2
playfram 0x19a # frame set 13
wait 2
playfram 0x19b # frame set 13
wait 2
playfram 0x19c # frame set 13
wait 2
playfram 0x19d # frame set 13
wait 2
playfram 0x19e # frame set 13
wait 2
playfram 0x19f # frame set 13
wait 2
end

ZealotGndAttkInit:
playfram 0x00 # frame set 0
wait 1
ZealotGndAttkRpt:
playsndrand 2 662 663 # Protoss\ZEALOT\pzeAtt00.WAV, Protoss\ZEALOT\pzeAtt01.WAV
playfram 0x11 # frame set 1
wait 1
nobrkcodestart
playfram 0x22 # frame set 2
wait 1
playfram 0x33 # frame set 3
wait 1
playfram 0x44 # frame set 4
wait 1
playfram 0x55 # frame set 3
wait 1
playfram 0x66 # frame set 2
wait 1
playfram 0x77 # frame set 1
attackmelee 1 664 # Protoss\ZEALOT\pzeHit00.WAV
wait 1
playfram 0x88 # frame set 1
wait 1
playfram 0x99 # frame set 0
nobrkcodeend
gotorepeatattk
ignorerest
ZealotGndAttkToIdle:
goto ZealotWalkingToIdle

ZealotWalking:
move 4
wait 1
playfram 0xbb # frame set 5
move 4
wait 1
playfram 0xcc # frame set 6
move 4
wait 1
playfram 0xdd # frame set 7
move 4
wait 1
playfram 0xee # frame set 8
move 4
wait 1
playfram 0xff # frame set 9
move 4
wait 1
playfram 0x110 # frame set 10
move 4
wait 1
playfram 0x121 # frame set 11
move 4
wait 1
playfram 0x132 # frame set 11
move 4
wait 1
playfram 0x143 # frame set 11
move 4
wait 1
playfram 0x154 # frame set 11
move 4
wait 1
playfram 0x165 # frame set 11
move 4
wait 1
playfram 0x176 # frame set 11
move 4
wait 1
playfram 0x187 # frame set 12
goto ZealotWalking

ZealotWarpIn:
imgol 154 0 0 # Unknown154 (protoss\zealot.grp)
goto ZealotLocal00



im also adding the grp

Attachments:
zealot.grp
Hits: 2 Size: 440.98kb



None.

Jan 5 2017, 6:44 pm O)FaRTy1billion[MM] Post #5

👻 👾 👽 💪

Have you updated pzeShad.grp? Since it now has far fewer frames than zealot.grp, it could be what is crashing. Try removing or commenting out the imgul under ZealotInit and see if that makes it no longer crash.



TinyMap2 - Latest in map compression! ( 7/09/14 - New build! )
EUD Action Enabler - Lightweight EUD/EPD support! (ChaosLauncher/MPQDraft support!)
EUDDB - topic - Help out by adding your EUDs! Or Submit reference files in the References tab!
MapSketch - New image->map generator!
EUDTrig - topic - Quickly and easily convert offsets to EUDs! (extended players supported)
SC2 Map Texture Mask Importer/Exporter - Edit texture placement in an image editor!
\:farty\: This page has been viewed [img]http://farty1billion.dyndns.org/Clicky.php?img.gif[/img] times!

Jan 5 2017, 6:51 pm Pr0nogo Post #6



In images.dat, change the entry for the zealot shadow to reference the zealot grp. It'll create an accurate shadow of your grp.




Jan 5 2017, 7:17 pm O)FaRTy1billion[MM] Post #7

👻 👾 👽 💪

Yes, that too. And I'm not sure how familiar you are with iscript, but be sure to change the imgul to have a y offset so you can see the shadow in that case. Something like imgul 152 0 7 (based on probe's and vulture's shadow).



TinyMap2 - Latest in map compression! ( 7/09/14 - New build! )
EUD Action Enabler - Lightweight EUD/EPD support! (ChaosLauncher/MPQDraft support!)
EUDDB - topic - Help out by adding your EUDs! Or Submit reference files in the References tab!
MapSketch - New image->map generator!
EUDTrig - topic - Quickly and easily convert offsets to EUDs! (extended players supported)
SC2 Map Texture Mask Importer/Exporter - Edit texture placement in an image editor!
\:farty\: This page has been viewed [img]http://farty1billion.dyndns.org/Clicky.php?img.gif[/img] times!

Jan 5 2017, 9:37 pm DirectShift Post #8



Quote from Pr0nogo
In images.dat, change the entry for the zealot shadow to reference the zealot grp. It'll create an accurate shadow of your grp.

Great effect, I thought I had to also draw all the shadows!!

Quote from O)FaRTy1billion[MM]
Yes, that too. And I'm not sure how familiar you are with iscript, but be sure to change the imgul to have a y offset so you can see the shadow in that case. Something like imgul 152 0 7 (based on probe's and vulture's shadow).

I know programming languages, so I understand iscript.
Thanks for the clarification, it was definitely a problem with shadows!!!



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[06:25 pm]
m.0.n.3.y -- Here's another question. I'm using switch randomization for powerups. There are 9 powerups, and I only want any of the powerups to appear only about 30% of the time. So I was just going to use 5 switches for a total of 32 options and have the other 23 results restart the randomization process. Is there a better way to do this?
[06:04 pm]
m.0.n.3.y -- NudeRaider
NudeRaider shouted: m.0.n.3.y Pro and Demon already gave correct answers, but let me add a pretty elegant way: Have the detection trigger owned by whoever is convenient for you. A single computer player, a force, all players - it doesn't matter. Now detect for the arbiter in conditions - also doesn't really matter how. In actions just set a dc to 1 for all players or the force that should have the text displayed. It will set the dc for each player to 1 individually. Because of this you can make a 2nd trigger that checks for the dc for current player and remove the dc for current player afterwards.
Ok that makes perfect sense NudeRaider
NudeRaider shouted: This method also has a bonus use: If you detect the arbiter in conditions for current player (set trigger owned accordingly!) then you can do the following: Add 1 to dc for current player AND add 1 to dc for all players. And in your 2nd trigger you can distinguish between players that just are informed and the player that actually had it, because their dc will be 2 instead of 1. So you can give them an additional reward or something dynamically.
Wow that's awesome! I'll definitely be doing this. Thanks for the tip, that's really cool
[05:29 pm]
NudeRaider -- This method also has a bonus use: If you detect the arbiter in conditions for current player (set trigger owned accordingly!) then you can do the following: Add 1 to dc for current player AND add 1 to dc for all players. And in your 2nd trigger you can distinguish between players that just are informed and the player that actually had it, because their dc will be 2 instead of 1. So you can give them an additional reward or something dynamically.
[05:27 pm]
NudeRaider -- m.0.n.3.y
m.0.n.3.y shouted: NEW QUESTION: How is it possible to show text to all players when something occurs? EX: Player 1 builds an Arbiter. Trigger says, When player 1 builds an Arbiter, do something, then remove the Arbiter. Now, I'd like text to show for all other players when P1 builds an Arbiter that says "P1 built an arbiter!". But how is this possible when the the original trigger that detects if P1 built an Arbiter then removes the Arbiter in it's actions? Like, the Arbiter is detected as built, then Action occurs for P1, then Arbiter is removed. So how can you detect if the Arbiter is built to show text to the other plays saying "P1 built an Arbiter" if the other trigger quickly removes the Arbiter? Does that make sense?
Pro and Demon already gave correct answers, but let me add a pretty elegant way: Have the detection trigger owned by whoever is convenient for you. A single computer player, a force, all players - it doesn't matter. Now detect for the arbiter in conditions - also doesn't really matter how. In actions just set a dc to 1 for all players or the force that should have the text displayed. It will set the dc for each player to 1 individually. Because of this you can make a 2nd trigger that checks for the dc for current player and remove the dc for current player afterwards.
[05:22 pm]
NudeRaider -- that's why the All Players thing is neat: When one player runs a wait, their copy of hypers will actually be blocked. But the hyper effect will not be disrupted because the hypers of all the other players are still running.
[05:21 pm]
NudeRaider -- *running at the same time for the same player.
[05:20 pm]
NudeRaider -- m.0.n.3.y
m.0.n.3.y shouted: Mini Moose 2707 Shit. Ok what are the exact circumstances where using wait triggers causes wait blocks and messes things up? EX: If player 8 is a computer and has hyper triggers at the bottom of his list, can I use a few of triggers on each human player 1-6 with a few waits each lasting 50 - 1000ms? I've read the articles in SEN Wiki but still not super clear on it :/
simple: 2 waits running at the same time. Hyper triggers constantly block each other, but they have no other purpose than to force another trigger loop, and stay in that "blocking each other" state as long as possible (=NEO)
[05:17 pm]
NudeRaider -- Dem0n
Dem0n shouted: It's recommended to never use waits if you have hyper triggers.
yes and no. If you have to ask: yes. If you know what you're doing, you can use them in a non-disruptive manner.
[05:15 pm]
NudeRaider -- m.0.n.3.y
m.0.n.3.y shouted: ALSO: @NudeRaider for your "other setup" you mean give the hypers to the "All Players" player checkbox, not to each player individually, right?
That's equivalent. At the start of a game sc parses triggers and creates copies of triggers owned by player groups (forces and all players) to each player that is part of that group. During runtime there's only individual trigger owners.
[04:04 pm]
m.0.n.3.y -- Dem0n
Dem0n shouted: That won't work. And it's one extra trigger with 2 actions. Hardly extra work.
You're right. Thank you!
Please log in to shout.


Members Online: Roy, m.0.n.3.y, Wing Zero