Dobra, stworzyłem od nowa plik(przekopiowałem Goldhacken.d na pulpit i tam pozmieniałem rzeczy)i mam interakcję z bryłą rudy. Ale zastanawiam się, czy(i jak)zrobić, żeby w zależności od zdolności wydobycia zwiększała się szansa na wydobycie 3 bryłek rudy. W spoilerach daję skrypty nowe i podaję wpisy w Story_Globals.
Spoiler
FUNC INT B_OreMob_Mining()
{
if Hlp_StrCmp (Npc_GetNearestWP (self), "OW_MINE2_GRIMES") && (OreMining_01_Amount_MAX > OreMining_01_Amount)
{
OreMining_01_Amount = (OreMining_01_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (self), "OW_MINE2_STRF") && (OreMining_02_Amount_MAX > OreMining_02_Amount)
{
OreMining_02_Amount = (OreMining_02_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (self), "OW_MINE2_ORE") && (OreMining_03_Amount_MAX > OreMining_03_Amount)
{
OreMining_03_Amount = (OreMining_03_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (self), "OW_MINE2_ORE1") && (OreMining_04_Amount_MAX > OreMining_04_Amount)
{
OreMining_04_Amount = (OreMining_04_Amount +1);
return TRUE;
};
//sonst nicht
return FALSE;
};
FUNC VOID OreMining_S1 ()
{
var C_NPC her; her = Hlp_GetNpc(PC_Hero);
if (Hlp_GetInstanceID(self)==Hlp_GetInstanceID(her))
{
self.aivar[AIV_INVINCIBLE]=TRUE;
PLAYER_MOBSI_PRODUCTION = MOBSI_OREMINNING;
Ai_ProcessInfos (her);
};
};
//*******************************************************
// Goldhacken Dialog abbrechen
//*******************************************************
INSTANCE PC_OreMining_End (C_Info)
{
npc = PC_Hero;
nr = 999;
condition = PC_OreMining_End_Condition;
information = PC_OreMining_End_Info;
permanent = TRUE;
description = DIALOG_ENDE;
};
FUNC INT PC_OreMining_End_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_OREMINNING)
{
return TRUE;
};
};
FUNC VOID PC_OreMining_End_Info()
{
BlueOre_Count = 0;
B_ENDPRODUCTIONDIALOG ();
};
//*******************************************************
// Goldhacken
//*******************************************************
INSTANCE PC_OreMine_Addon_Hour (C_Info)
{
npc = PC_Hero;
nr = 2;
condition = PC_OreMine_Addon_Hour_Condition;
information = PC_OreMine_Addon_Hour_Info;
permanent = TRUE;
description = "Odłup trochę.";
};
FUNC INT PC_OreMine_Addon_Hour_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_OREMINNING)
{
return TRUE;
};
};
var int BlueCounter;
FUNC VOID PC_OreMine_Addon_Hour_Info()
{
//---------- Learning by doing 10 PKT---------
Ruda_doing = (Ruda_doing +1);
if (Ruda_doing == 10)
{
B_Upgrade_Hero_OreHackChance (2);
}
else if (Ruda_doing == 15)
{
B_Upgrade_Hero_OreHackChance (3);
}
else if (Ruda_doing == 20)
{
B_Upgrade_Hero_OreHackChance (5);
};
//----- EIGENTLICHES HACKEN -------------
var int RudaSzansa;
RudaSzansa = Hlp_Random (100);
var int OreNugget;
OreNugget = Hlp_Random (10);
if (B_OreMob_Mining() == TRUE)
{
if (RudaSzansa <= Hero_BlueHackChance)
{
//----Gold verteilen-----------------------
if (BlueCounter >= 20)
&& (OreNugget >= 8)
{
CreateInvItems (hero, ItMi_Nugget, 3);
PrintScreen ("Odpadły 3 bryłki rudy!", -1, -1, FONT_ScreenSmall, 2);
BlueOre_Count = 0;
}
else if (BlueCounter >= 7)
&& (OreNugget >= 5)
{
CreateInvItems (hero, ItMi_Nugget, 2);
PrintScreen ("Odpadły 2 bryłki rudy!", -1, -1, FONT_ScreenSmall, 2);
BlueOre_Count = 0;
BlueCounter = (BlueCounter +1);
}
else
{
CreateInvItems (hero, ItMi_Nugget, 1);
PrintScreen ("Odpadła 1 bryłka rudy!", -1, -1, FONT_ScreenSmall, 2);
BlueOre_Count = 0;
BlueCounter = (BlueCounter +1);
};
}
else
{
PrintScreen ("Kawałki rudy zasypują okolicę...", -1, -1, FONT_ScreenSmall, 2);
BlueOre_Count = (BlueOre_Count +1);
};
}
else
{
PrintScreen ("Nic nie zostało.", -1, -1, FONT_ScreenSmall, 2);
B_ENDPRODUCTIONDIALOG ();
};
};
//*******************************************************
// Goldhacken Trümmerschlag
//*******************************************************
INSTANCE PC_OreHack_Addon_TSchlag (C_Info)
{
npc = PC_Hero;
nr = 997;
condition = PC_OreHack_Addon_TSchlag_Condition;
information = PC_OreHack_Addon_TSchlag_Info;
permanent = TRUE;
description = "Mocno uderz.";
};
FUNC INT PC_OreHack_Addon_TSchlag_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_OREMINNING)
&& (BlueOre_Count >= 2)
&& (Knows_Ore == TRUE)
{
return TRUE;
};
};
FUNC VOID PC_OreHack_Addon_TSchlag_Info()
{
var int SzansaRudowa;
SzansaRudowa = Hlp_Random (100);
if (SzansaRudowa < 5)
{
PrintScreen ("Nic...", -1, -1, FONT_ScreenSmall, 2);
}
else
{
Snd_Play ("RAVENS_EARTHQUAKE3");
Wld_PlayEffect("FX_EarthQuake", self, self, 0, 0, 0, FALSE );
if (SzansaRudowa >= 85)
{
//----Gold verteilen-----------------------
CreateInvItems (hero, ItMi_Nugget, 3);
PrintScreen ("Odpadły 3 bryłki rudy!", -1, -1, FONT_ScreenSmall, 2);
}
else if (SzansaRudowa >= 50)
{
CreateInvItems (hero, ItMi_Nugget, 2);
PrintScreen ("Odpadły 2 bryłki rudy!", -1, -1, FONT_ScreenSmall, 2);
}
else
{
CreateInvItems (hero, ItMi_Nugget, 1);
PrintScreen ("Odpadła 1 bryłka rudy!", -1, -1, FONT_ScreenSmall, 2);
};
};
BlueOre_Count = 0;
};
//*******************************************************
// Goldhacken Chance
//*******************************************************
INSTANCE PC_Orehack_Addon_Chance (C_Info)
{
npc = PC_Hero;
nr = 998;
condition = PC_Orehack_Addon_Chance_Condition;
information = PC_Orehack_Addon_Chance_Info;
permanent = TRUE;
description = "(Ocena zdolności)";
};
FUNC INT PC_Orehack_Addon_Chance_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_OREMINNING)
{
return TRUE;
};
};
FUNC VOID PC_Orehack_Addon_Chance_Info()
{
var string ConcatText;
if (Hero_BlueHackChance < 20)
{
ConcatText = ConcatStrings ("nieopierzony żółtodziób (", IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 40)
{
ConcatText = ConcatStrings ("przeciętny kopacz (" , IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 55)
{
ConcatText = ConcatStrings ("doświadczony kopacz (", IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 75)
{
ConcatText = ConcatStrings ("urodzony kopacz ( ", IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 90)
{
ConcatText = ConcatStrings ("piekielnie dobry kopacz ( ", IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 98)
{
ConcatText = ConcatStrings ("mistrz kopania ( ", IntToString (Hero_BlueHackChance));
}
else
{
ConcatText = ConcatStrings ("guru kopaczy ( ", IntToString (Hero_BlueHackChance));
};
ConcatText = ConcatStrings (concatText, " procent)");
PrintScreen (concatText, -1, -1, FONT_ScreenSmall,2);
};
Powyższy skrypt dotyczy kopania. Teraz skrypt B_Upgrade_Hero_OreHackChance(on chyba informuje o tym, że zwiększyła się nasza zdolność wydobywania):
I już wyjaśniam, o jaką zmianę mi dokładnie chodzi. Chciałbym zrobić tak, że w zależności od % zdolności wydobywania rudy mamy większą szansę na wydobycie określonej ilości rudy. Czyli: