Jako iż takich kłopotów baardzo dawno nie miałem, to teraz się pojawił, a wszystkie próby naprawienia nic nie dają.
Napisałem funkcję uczenia 7 nowych umiejętności(orginalne/dodatkowe jakie można użyć są już wykorzystane).
Problem w tym że NPC nie zabiera mi złota i PN.
func int B_TeachNewSkills(var C_NPC slf, var C_NPC oth, var int skill,var int kosten, var int NeedItem, var int Skill_Level)
{
/*if(skill!=Skill_Staffs || skill!=Skill_Shield || skill!=Skill_Duals
|| skill!=Skill_Break || skill!=Skill_Penetration || skill!=Skill_RegenerateHP
|| skill!=Skill_RegenerateMP || skill!=Skill_FastLearn)
{
Print("*** Błąd: Zły parametr ***");
return FALSE;
};
*/
if(oth.lp < kosten)
{
Prints2(PRINT_NOTENOUGHLEARNPOINTS);
b_say(slf,oth,"$NOLEARNNOPOINTS");
return FALSE;
};
if(Npc_HasItems(oth,Itmi_Gold)<NeedItem)
{
b_say(slf,oth,"$SHITNOGOLD");
var int GoldMiss; GoldMiss= NeedItem-Npc_HasItems(oth,Itmi_Gold);
var string msg; msg= concatstrings("Brakuje mi ",Inttostring(GoldMiss));
msg=concatstrings(msg," szt. złota ");
Prints_Ext(msg,RGBA(180,0,0,255));
return FALSE;
};
/***************************/
if(skill==Skill_Staffs)
{
Staff_Skill=Skill_Level;
Ico_MagicStaffs="Ico_MagicStaffsYes";
Prints2("Wyuczono: Kostury magiczne !");
return TRUE;
};
/***************************/
if(skill==Skill_Shield)
{
Talent_Shield_Fight=Skill_Level;
Ico_Shields="Ico_Shieldyes.tga";
if (Skill_Level==1)
{
Prints2("Wyuczono: Walka tarczą 1-szy poziom !");
}
else if(Skill_Level==2)
{
Prints2("Wyuczono: Walka tarczą 2-gi poziom !");
}
else if(Skill_Level==3)
{
Prints2("Wyuczono: Walka tarczą 3-ci poziom !");
}
else if(Skill_Level==4)
{
Prints2("Wyuczono: Walka tarczą 4-ty poziom !");
};
return TRUE;
};
/***************************/
if(skill==Skill_Duals)
{
Talent_Dual_Fight=Skill_Level;
Ico_Duals="Ico_2x2yes.tga";
Prints2("Wyuczono: Walka dwoma mieczami !");
return TRUE;
};
/***************************/
if(skill==Skill_Break)
{
BreakSkill=Skill_Level;
IMMUNE=50;
Ico_Break="Ico_BreakYes.tga";
Prints2("Wyuczono: Rozbicie !");
return TRUE;
};
/***************************/
if(skill==Skill_Penetration)
{
PenetrationSkill=Skill_Level;
Ico_Penetration="Ico_PenetYes.tga";
Prints2("Wyuczono: Penetracja !");
return TRUE;
};
/***************************/
if(skill==Skill_RegenerateHP)
{
Regenerate_HP_Skill=Skill_Level;
Ico_HealthRegenation="Ico_Health_RegenYes.tga";
Prints2("Wyuczono: Regeneracja życia !");
return TRUE;
};
/***************************/
if(skill==Skill_RegenerateMP)
{
Regenerate_Mana_Skill=Skill_Level;
Ico_ManaRegenation="Ico_MANA_RegenYes.tga";
Prints2("Wyuczono: Regeneracja many !");
return TRUE;
};
/***************************/
if(skill==Skill_FastLearn)
{
FastLearnSkill=Skill_Level;
Ico_FastLearn="Ico_FastLearnYes.tga";
Prints2("Wyuczono: Szybka nauka !");
return TRUE;
};
/***************************/
oth.lp = oth.lp - kosten;
b_giveinvitems(oth,slf,itmi_gold,NeedItem);
Npc_RemoveInvItems(slf,itmi_gold,NeedItem);
};
Oraz gdy nie zakomentowałem tego
/*if(skill!=Skill_Staffs || skill!=Skill_Shield || skill!=Skill_Duals
|| skill!=Skill_Break || skill!=Skill_Penetration || skill!=Skill_RegenerateHP
|| skill!=Skill_RegenerateMP || skill!=Skill_FastLearn)
{
Print("*** Błąd: Zły parametr ***");
return FALSE;
};
*/
To wywalało mi zły parametr, mimo iż wszystko jest dobrze. Tak wyglądają stałe:
/*******************************/
const int Skill_Staffs = 0;
const int Skill_Shield = 1;
const int Skill_Duals = 2;
const int Skill_Break = 3;
const int Skill_Penetration = 4;
const int Skill_RegenerateHP = 5;
const int Skill_RegenerateMP = 6;
const int Skill_FastLearn = 7;
/*******************************/
A wywoływanie u CH tak:
FUNC VOID DIA_DESCLONG_START_TeachSkillsNew_TeachSkill_Staff()
{
B_TeachNewSkills(SELF,other,Skill_Staffs,20,2000,1);
};
Tak prasowałem wszystko jak coś.