Problem z nową funkcją 1939 4

O temacie

Autor Siemekk

Zaczęty 14.07.2016 roku

Wyświetleń 1939

Odpowiedzi 4

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
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ś.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Najgłupszy błąd jaki kiedykolwiek widziałem. Sorki, ale naprawdę. Masz wszędzie return, przez co nigdy nie dochodzi do końca skryptu. Wywal wszystkie return, oprócz tych, które określają, że masz za mało czegoś.

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 !");

};
/***************************/
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 !");
};

};
/***************************/
if(skill==Skill_Duals)
{
Talent_Dual_Fight=Skill_Level;
Ico_Duals="Ico_2x2yes.tga";
Prints2("Wyuczono: Walka dwoma mieczami !");

};
/***************************/
if(skill==Skill_Break)
{
BreakSkill=Skill_Level;
IMMUNE=50;
Ico_Break="Ico_BreakYes.tga";
Prints2("Wyuczono: Rozbicie !");

};
/***************************/
if(skill==Skill_Penetration)
{
PenetrationSkill=Skill_Level;
Ico_Penetration="Ico_PenetYes.tga";
Prints2("Wyuczono: Penetracja !");

};
/***************************/
if(skill==Skill_RegenerateHP)
{
Regenerate_HP_Skill=Skill_Level;
Ico_HealthRegenation="Ico_Health_RegenYes.tga";
Prints2("Wyuczono: Regeneracja życia !");

};
/***************************/
if(skill==Skill_RegenerateMP)
{
Regenerate_Mana_Skill=Skill_Level;
Ico_ManaRegenation="Ico_MANA_RegenYes.tga";
Prints2("Wyuczono: Regeneracja many !");

};
/***************************/
if(skill==Skill_FastLearn)
{
FastLearnSkill=Skill_Level;
Ico_FastLearn="Ico_FastLearnYes.tga";
Prints2("Wyuczono: Szybka nauka !");

};
 /***************************/
oth.lp = oth.lp - kosten;
b_giveinvitems(oth,slf,itmi_gold,NeedItem);
Npc_RemoveInvItems(slf,itmi_gold,NeedItem);
};

return = "Zakończ skrypt oraz zwróć wartość". W przypadku func void tylko kończy skrypt.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Dzięki. Patrzyłem na funkcję B_TeachThiefTalent i tam co chwilę był return :F Jeszcze jedno. Wywala zły parametr
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;
   };
Mimo iż nie powinno. Wiesz może co jest nie tak ?? Bo dla mnie wszystko jest dobrze :ayfkm:
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Przyjrzyj się oryginalnym skryptom i zobacz jakiego faila tu zrobiłeś xD
No i wygodniej by było zrobić po prostu tak:
if (skill > 7 || skill < 0)
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota

Siemekk
Złote Wrota

Problem z nową funkcją
#4 2016-07-14, 20:08(Ostatnia zmiana: 2016-07-15, 12:09)
OOOOMMMMMGGGG serio :F != Chyba a raczej na stówę można zamknąć.

Post połączony: 2016-07-15, 12:09
Lol jednak nie :F Napisałem skrypt ostrzenia, tylko funkcja znowu nie zawraca... Mimo iż mam wszystkie składniki :ayfkm:
func int Sharping_Func(var C_NPC oth, var C_Item First_Item, var int First_Item_Need, var C_Item Second_Item, var int Second_Item_Need)
{
var C_Item EquipedMeleeWeapon;
EquipedMeleeWeapon=Npc_GetEquippedMeleeWeapon(oth);

if(Npc_HasItems(oth,First_Item)<First_Item_Need)
||(Npc_HasItems(oth,Second_Item)<Second_Item_Need)
{
Prints_Ext("Brakuje mi składników !", RGBA(255,100,100,255));
b_endproductiondialog();
CreateInvItems (oth, ItMiSwordBlade,1);
return FALSE;
};
Ja tego nie rozumiem .-. wygląda właściwie, dialog na testy też jest i nic :/
@Splash , @Bogdan Zwei  powiecie o co chodzi :F ?
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.


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