Project X Forums http://px.worms2d.info/forum/ |
|
SetSpriteOverride - need help http://px.worms2d.info/forum/viewtopic.php?f=13&t=426 |
Page 1 of 1 |
Author: | PyroMan [ Mon Apr 09, 2012 1:50 pm ] |
Post subject: | SetSpriteOverride - need help |
I think it would be nice to change some sprites while gameplay. like.. the t-cloud. But while making it i found some problems, which i cant solve. As i understood, InitGraphic() works once, at the begining of the game. Is it possible to use SetSpriteOverride in some other way, to call it at any moment of the gameplay? Thats what i wonder to know. Script below supposed to change sprite of tcloud to a variation of different. Sprite still should be loaded in usual "t" pressing way, but which sprite to show - we can choose by pressing keys around "t" key. for example pressing "E" once, then pressing "t" will show WTF-cloud (like on my avatar); "R" pressing once, then "t" pressing will show !-cloud; and "Y" pressing once, then "t" pressing should get back t-cloud sprite. so here`s the script: Code: void customscheme::Init() { keySync->AddKey(69); // E button keySync->AddKey(82); // R button keySync->AddKey(89); // Y button } void customscheme::InitGraphic() { CFile *cloud; cloud = GetAttachment("wcloud.png"); wcloud = LoadSprite(cloud, 29, 0); cloud = GetAttachment("icloud.png"); icloud = LoadSprite(cloud, 29, 0); cloud = GetAttachment("tcloud.png"); tcloud = LoadSprite(cloud, 29, 0); } void customscheme::FirstFrame() { c = 0; } override void CWorm::Message(CObject* sender,EMType Type,int MSize,CMessageData* MData) { super; if(GetCurrentWorm() != NullObj) { if(GetCurrentWorm() == this) { if(Type == M_FRAME) { if(keySync->KeyPressedNow(69) == true) { c = 1; changeSprite(); GG->WriteToChat(2, "You just pressed E key!", false); } if(keySync->KeyPressedNow(82) == true) { c = 2; changeSprite(); GG->WriteToChat(2, "You just pressed R key!", false); } if(keySync->KeyPressedNow(89) == true) { c = 0; changeSprite(); GG->WriteToChat(2, "You just pressed I key!", false); } } } } } void CWorm::changeSprite() { if (c == 1) { SetSpriteOverride(136, wcloud); GG->WriteToChat(2, "function WTF-cloud executed", false); } if (c == 2) { SetSpriteOverride(136, icloud); GG->WriteToChat(2, "function !-cloud executed", false); } if (c == 0) { SetSpriteOverride(136, tcloud); GG->WriteToChat(2, "function t-cloud executed", false); } } p.s. by getting those messages in chat like "You just pressed E key!" and "Function WTF-cloud executed" i can say that script works correctly, but SetSpriteOverride - doesnt. What i also found - if game starts and i press T - i see T-cloud. If game starts and i press E-key first, then T - i see WTF-cloud. Question: WTF?! |
Page 1 of 1 | All times are UTC |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |