Przerobiony kryształ działa tylko w połowie 1834 2

O temacie

Autor Graveir

Zaczęty 12.03.2014 roku

Wyświetleń 1834

Odpowiedzi 2

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Mam taki mały problem z działaniem przerobionego kryształu portalu, z którego "utworzyłem" Kryształ rudy". Jego przeznaczeniem jest dawanie 100 bryłek rudy przy użyciu, ale tylko raz dziennie(czyli jeśli zechcemy użyć go ponownie po dajmy na to 3 sekundach wyskakuje napis, że trzeba poczekać jeden dzień). Chicken podał mi takie rozwiązanie skryptu:
////////// Kryształ rudy ///////////

INSTANCE OreCristal(C_Item)
{
name = "Kryształ rudy";
mainflag = ITEM_KAT_NONE;
flags = ITEM_MISSION|ITEM_MULTI;

value = 300;

visual = "damonminiviolet1.3DS";
material = MAT_STONE;
on_state[0] = orecristal_use;
scemename = "MAPSEALED";
description = name;
text[0] = "Ten kryształ raz dziennie";
text[1] = "obdarza właściciela";
text[2] = "rudą w ilości";
text[3] = "100 sztuk.";
text[4] = "";
text[5] = NAME_VALUE;
count[5] = value;
};
var int NextDay;
func void orecristal_use()
{

var int NextNumber;
if (NextDay >= Wld_GetDay()-1)
{
NextNumber = 1;
};
if (NextNumber == 0) || (NextNumber == 1)
{
NextNumber = 2;
PrintScreen ("Otrzymano 100 bryłek rudy", -1,-1,"font_old_20_white.tga",3);
CreateInvItem (self, OreCristal);
CreateInvItems(hero, ItMiNugget,100);
}
else
{
PrintScreen ("Musisz odczekać jeden dzień!", -1,-1,"font_old_20_white.tga",3);
CreateInvItem (self, OreCristal);
};
};
I działa tylko dawanie 100 bryłek rudy, ale cały czas mogę używać tego itemu. Jak to poprawić, żeby po użyciu trzeba było odczekać jeden dzień przed ponownym użyciem?
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Ja bym to zrobił tak : Zrobiłbym zmienną.
var int zmienna;
Do funkcji B_RefreshArmor dodałbym zmienną :
zmienna = false;
I w funkcji PC_Sleep też dodałbym zmienną w odpowiednie miejsce (plik SleepABit)

   if(Wld_IsTime(0,0,t,0))
   {
      Wld_SetTime(t,0);
   }
   else
   {
      t = t + 24;
      Wld_SetTime(t,0);
      zmienna = false; // tutaj
   };
Funkcja orecristal_use będzie wyglądać tak :
func void orecristal_use()
{
if (zmienna == false)
{
PrintScreen ("Otrzymano 100 bryłek rudy", -1,-1,"font_old_20_white.tga",3);
CreateInvItem (self, OreCristal);
CreateInvItems(hero, ItMiNugget,100);
zmienna = true;
}
else
{
PrintScreen ("Musisz odczekać jeden dzień!", -1,-1,"font_old_20_white.tga",3);
CreateInvItem (self, OreCristal);
};
};

 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Dobra, teraz działa. Masz propsa za pomoc.
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry