World of Gothic Archiv > Editing
Was ist an diesem Script falsch?
Seite 1 von 1  1 
30.08.2001, 18:45 #1
Mordrag
Beiträge: 93
Was ist an diesem Script falsch?
Das ist ein Auszug aus meiner veränderten BuyAttributePoints.d! Ziel soll sein, dass nur Kämpfer einen Stärkewert von 100 bekommen können und alle andere Klassen maximal 65!(Vorläufig!)
Doch irgendwie kann ich auch als Schatten über 65 kommen!
Weiß jemand, woras liegt? Vom Technischen her funzts, d.h. es kommen keine Fehlermeldungen! Natürlich habe ich auch reparst usw!



if (ATR == ATR_STRENGTH)
{

if (Typ_Atr + AtrPlus <= 100) && (Npc_GetTrueGuild (hero) == GIL_SLD) || (Npc_GetTrueGuild (hero) == GIL_GRD) || (Npc_GetTrueGuild (hero) == GIL_TPL)
{
typ.attribute[ATR_STRENGTH] = typ.attribute[ATR_STRENGTH] + AtrPlus;
PrintString = ConcatStrings(NAME_BuyAttributeSTR, AtrPlusSTRING);
PrintScreen (PrintSTRING, -1,-1,"FONT_OLD_20_WHITE.TGA",1);
typ.lp = typ.lp - AtrPlus;
}

else if (Typ_Atr + AtrPlus <= 65) && (Npc_GetTrueGuild (hero) != GIL_SLD) && (Npc_GetTrueGuild (hero) != GIL_GRD) && (Npc_GetTrueGuild (hero) != GIL_TPL)

{
typ.attribute[ATR_STRENGTH] = typ.attribute[ATR_STRENGTH] + AtrPlus;
PrintString = ConcatStrings(NAME_BuyAttributeSTR, AtrPlusSTRING);
PrintScreen (PrintSTRING, -1,-1,"FONT_OLD_20_WHITE.TGA",1);
typ.lp = typ.lp - AtrPlus;
}
else
{
AI_StopProcessInfos ( self );
};

};
30.08.2001, 20:48 #2
PyroX
Beiträge: 304

So müsste es funktionieren (allerdings nicht ausprobiert, außerdem geht sicher auch eleganter):

-------------------

func void B_BuyAttributePoints (var C_NPC typ, var int ATR, var int AtrPlus)
{
// --------- Umwandeln von var in const
var int Typ_Atr;

if (ATR == ATR_STRENGTH) { Typ_Atr = typ.attribute[ATR_STRENGTH]; }
else if (ATR == ATR_DEXTERITY) { Typ_Atr = typ.attribute[ATR_DEXTERITY]; }
else if (ATR == ATR_MANA_MAX) { Typ_Atr = typ.attribute[ATR_MANA_MAX]; };

// --------- Steigern oder verbieten
var string AtrPlusSTRING; AtrPlusSTRING = IntToString(AtrPlus);
var string PrintSTRING;
var int added; added= FALSE;
var int cmpVal; cmpVal= 100;

// Hier nach Wunsch ändern
var int hiMaxStr; hiMaxStr= 100;
var int loMaxStr; loMaxStr= 65;

if (!(typ.lp < AtrPlus))
{
if (Typ_Atr + AtrPlus <= cmpVal)
{
typ.lp = typ.lp - AtrPlus;
if (ATR == ATR_DEXTERITY)
{
typ.attribute[ATR_DEXTERITY] = typ.attribute[ATR_DEXTERITY] + AtrPlus;
PrintString = ConcatStrings(NAME_BuyAttributeDEX, AtrPlusSTRING);
PrintScreen (PrintSTRING, -1,-1,"FONT_OLD_20_WHITE.TGA",1);
added= TRUE;
}
else if (ATR == ATR_MANA_MAX)
{
typ.attribute[ATR_MANA_MAX] = typ.attribute[ATR_MANA_MAX] + AtrPlus;
PrintString = ConcatStrings(NAME_BuyAttributeMAN, AtrPlusSTRING);
PrintScreen (PrintString, -1,-1,"FONT_OLD_20_WHITE.TGA",1);
added= TRUE;
};
};

if (ATR == ATR_STRENGTH)
{
var int gld;
gld= Npc_GetTrueGuild (hero);

if((gld == GIL_SLD) || (gld == GIL_GRD) || (gld == GIL_TPL))
{
cmpVal= hiMaxStr;
}
else
{
cmpVal= loMaxStr;
};

if (Typ_Atr + AtrPlus <= cmpVal)
{
typ.attribute[ATR_STRENGTH] = typ.attribute[ATR_STRENGTH] + AtrPlus;
PrintString = ConcatStrings(NAME_BuyAttributeSTR, AtrPlusSTRING);
PrintScreen (PrintSTRING, -1,-1,"FONT_OLD_20_WHITE.TGA",1);
typ.lp = typ.lp - AtrPlus;
added= TRUE;
};
};

if(!added)
{
var string addedStr; addedStr = IntToString(cmpVal);
var string pString; pString= ConcatStrings("Keine Steigerung über Maximum ", addedStr);
PrintScreen (pString, -1,-1,"FONT_OLD_20_WHITE.TGA",1);
B_Say (self, other, "$NOLEARNOVERMAX");
};
}
else
{
PrintScreen ("Zu wenig Lernpunkte!", -1,-1,"FONT_OLD_20_WHITE.TGA",1);
B_Say (self, other, "$NOLEARNNOPOINTS");
};
};

-------------------
Seite 1 von 1  1