GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Dfoglalo - 2013. május 16. - 17:40:55

Cím: SetObjectMaterialText frissülése probléma
Írta: Dfoglalo - 2013. május 16. - 17:40:55
Szaiasztok!
Olyan problémával szembesültem, amit sehogyan sem tudok megfejteni. Van egy kis alap timerem, ami kiír egy több perces visszaszámlálást, Percben:Másodpercben. A timert simán aktiválja egy parancs, azzal nem kell foglalkozni. Meg van adva egy alap másodperc, ami a VSZErteke. Ha nagyobb, mint 0, akkor másodpercenként csökken egyel az értéke, és minden másodpercben elosztja DIV-el a VSZErteke-t, megkapva a Perceket, MOD-al elosztja a VSZErteket, megkapva a Másodperceket, majd ezeket kiírja egy Objectre. Eddig nincs is vele gond, el is kezd számolni, majd XPerc:45-nél leáll. Fontos tudni, hogy magával a timer nincs baj, az frissül tovább, tehát látom, hogy az object frissül (másodpercenként villan, bár ne villanna, szebb is lenne), de a számok XPerc:45-nél mégsem mennek tovább. Próbálgattam, 2x oda írtam a SetObjectMaterialText-et, és így már XPerc:52-nél állt meg a Visszaszámláló. Ha jól emlékszem, 5, vagy 6 kiíráskor már XPerc:58-nál megállt a VSZ. Tudom, elég egyszer beírni, de kísérletezõs kedvemben voltam, és így megtudtam, hogy valami a SetObjectMaterialText-tel lehet. Netán korlátozva van a frissülése? Itt van maga a timer, ha segít, de ebben nincs hiba.
 
forward VSZ();
public VSZ()
{
if(VSZErtek > 0)
{
                VSZErtek--;
Perc = VSZErtek/60;
Masodperc = VSZErtek%60;
format(string, sizeof(string), \"%i:%i\", Perc, Masodperc);
SetObjectMaterialText(VSZMT, string, 0, 30, \"Arial\", 24, 1, -1, 0, 1);
}
else
{
SetObjectMaterialText(VSZMT, \"Lejárt a számláló\", 0, 30, \"Arial\", 24, 1, -1, 0, 1);
}
}

 
Kicsit hosszúra sikeredett, de remélem, valaki elolvasta, és akár még tud segíteni is, akár itt, vagy esetleg Skypeon, beszélgetve.
Üdv: Dfoglalo
Cím: SetObjectMaterialText frissülése probléma
Írta: Zsolesszka - 2013. május 16. - 17:53:57
Próbáld nem global string-el, hanem helyi string-el alkalmazni.
 
                new str[24];
                VSZErtek--;
                Perc = VSZErtek/60;
                Masodperc = VSZErtek%60;
                format(str, sizeof(str), \"%i:%i\", Perc, Masodperc);
                SetObjectMaterialText(VSZMT, str, 0, 30, \"Arial\", 24, 1, -1, 0, 1);
Cím: SetObjectMaterialText frissülése probléma
Írta: Dfoglalo - 2013. május 16. - 17:57:12
Idézetet írta: ɐʞzssǝlosz date=1368719637\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"37436\" data-ipsquote-contentclass=\"forums_Topic
Próbáld nem global string-el, hanem helyi string-el alkalmazni.
 
                new str[24];
                VSZErtek--;
                Perc = VSZErtek/60;
                Masodperc = VSZErtek%60;
                format(str, sizeof(str), \"%i:%i\", Perc, Masodperc);
                SetObjectMaterialText(VSZMT, str, 0, 30, \"Arial\", 24, 1, -1, 0, 1);

 

Szerintem nem lesz jó...


Edit: megcsináltam így is, de sajnos nem jó.
Cím: SetObjectMaterialText frissülése probléma
Írta: Zsolesszka - 2013. május 16. - 21:15:14
Küld el az objectet is melyikre próbálod írni, majd kipróbálom én is nálam is akad-e.
Cím: SetObjectMaterialText frissülése probléma
Írta: Zsolesszka - 2013. május 19. - 23:26:19
Arra jutottam hogy nálam is megakad de egy kis barbárkodással úgy oldottam meg hogy töröltem az objectet majd újra létrehoztam és akkor szépen végig számolt. (Igaz lusta voltam kivárni teljesen, privibe küldöm a kódot)