-
Aussehen verändern nach Speichern/Laden funktioniert nicht
Ich hab in meiner Mod ein Rasiermesser eingebaut mit dem man sich den Bart abrasieren sprich die Face Textur ändern kann, nur hat der Held nach dem Speichern/Laden wieder einen Bart.
Folgendes hab ich gemacht:
Code:
func void init_global()
{
Game_InitGerman();
LeGo_Init(LeGo_All & ~LeGo_Bloodsplats);
InitDamage();
if (Shave_Hero == TRUE)
{
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_Player,0,NO_ARMOR);
};
};
Code:
const int Value_Rasiermesser = 10;
var int Shave_Hero;
INSTANCE ItMi_Barbknife (C_Item)
{
name = "Rasiermesser";
mainflag = ITEM_KAT_NONE;
flags = ITEM_MULTI;
value = Value_Rasiermesser;
visual = "ItMi_Stuff_Barbknife_01.3DS";
scemeName = "MAPSEALED";
material = MAT_METAL;
on_state[0] = BarbKnife;
description = name;
TEXT[5] = NAME_Value; COUNT[5] = value;
};
func void BarbKnife()
{
Shave_Hero == TRUE;
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_Player,0,NO_ARMOR);
};
Wo liegt der Fehler?
-
Code:
Shave_Hero == TRUE;
Das ist ein Vergleich, keine Zuweisung.
In solchen Fällen solltest du immer überprüfen, ob dein Code (d.h. in der Init_Global innerhalb das ifs) überhaupt ausgeführt wird. Entweder über Prints oder in diesem Fall (da die Prints eventuell verschwinden, bevor der Ladebildschirm weg ist) zum Beispiel mit MEM_InfoBox().
-
Wie muss ich das Skript anpassen, sodass der Code ausgeführt wird?
-
Naja, Zuweisungen macht man mit '=', nicht mit '==' (denn mit '==' vergleicht man zwei Werte).
-
Ich hab jetzt ein = weniger und trotzdem funktioniert es nicht, siehst du noch mehr Fehler im Skript?
Code:
const int Value_Rasiermesser = 10;
var int Shave_Hero;
INSTANCE ItMi_Barbknife1 (C_Item)
{
name = "Rasiermesser";
mainflag = ITEM_KAT_NONE;
flags = ITEM_MULTI;
value = Value_Rasiermesser;
visual = "ItMi_Stuff_Barbknife_01.3DS";
scemeName = "MAPSEALED";
material = MAT_METAL;
on_state[0] = BarbKnife1;
description = name;
TEXT[4] = "Lass dir einen Vollbart wachsen.";
TEXT[5] = NAME_Value; COUNT[5] = value;
};
func void BarbKnife1()
{
Shave_Hero = Face_N_PlayerUnShaved;
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_PlayerUnShaved,0,NO_ARMOR);
};
INSTANCE ItMi_Barbknife2 (C_Item)
{
name = "Rasiermesser";
mainflag = ITEM_KAT_NONE;
flags = ITEM_MULTI;
value = Value_Rasiermesser;
visual = "ItMi_Stuff_Barbknife_01.3DS";
scemeName = "MAPSEALED";
material = MAT_METAL;
on_state[0] = BarbKnife2;
description = name;
TEXT[4] = "Weg mit dem Bart.";
TEXT[5] = NAME_Value; COUNT[5] = value;
};
func void BarbKnife2()
{
Shave_Hero = Face_N_PlayerShaved;
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_PlayerShaved,0,NO_ARMOR);
};
INSTANCE ItMi_Barbknife3 (C_Item)
{
name = "Rasiermesser";
mainflag = ITEM_KAT_NONE;
flags = ITEM_MULTI;
value = Value_Rasiermesser;
visual = "ItMi_Stuff_Barbknife_01.3DS";
scemeName = "MAPSEALED";
material = MAT_METAL;
on_state[0] = BarbKnife3;
description = name;
TEXT[4] = "Ein bisschen Bart darf's schon sein.";
TEXT[5] = NAME_Value; COUNT[5] = value;
};
func void BarbKnife3()
{
Shave_Hero = Face_N_Player;
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_Player,0,NO_ARMOR);
};
Code:
func void init_global()
{
Game_InitGerman();
LeGo_Init(LeGo_All & ~LeGo_Bloodsplats);
InitDamage();
if(Shave_Hero == Face_N_PlayerShaved)
{
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_PlayerShaved,0,NO_ARMOR);
};
if(Shave_Hero == Face_N_PlayerUnShaved)
{
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_PlayerUnShaved,0,NO_ARMOR);
};
if(Shave_Hero == Face_N_Player)
{
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_Player,0,NO_ARMOR);
};
};
-
In der Init_Global setzt du das Aussehen von "self" - das könnte zu diesem Zeitpunkt ein beliebiger Npc sein. Du könntest stattdessen PC_Hero hero (siehe unten) probieren.
Geändert von Milky-Way (16.10.2018 um 06:00 Uhr)
-
Zitat von Milky-Way
In der Init_Global setzt du das Aussehen von "self" - das könnte zu diesem Zeitpunkt ein beliebiger Npc sein. Du könntest stattdessen PC_Hero probieren.
Man sollte wohl "hero" vorziehen, das zeigt immer auf den Helden. PC_Hero tut das, glaube ich, manchmal nicht (evtl. nach Weltenwechsel oder so?).
-
Zitat von Lehona
Man sollte wohl "hero" vorziehen, das zeigt immer auf den Helden. PC_Hero tut das, glaube ich, manchmal nicht (evtl. nach Weltenwechsel oder so?).
Genau daran hatte ich gedacht, aber dass es genau anders herum ist. Du hast aber recht
PC_Hero geht sonst tatsächlich nach Weltenwechsel verloren. (Und wenn ich mich richtig an meinen Test erinnere, wird es auch beim Wechsel zurück in die erste Welt nicht automatisch wieder korrigiert.)
-
Danke, das hat mir schon sehr weitergeholfen!
Einen Fehler hab ich aber jetzt noch, ich hab ja drei Rasierklingen eingebaut.
Eine für Vollbart, eine für ganz rasiert und das Standard Helden Gesicht.
Folgendes passiert:
PC_Hero.d hat den Vollbart eingetragen. Ich starte ein neues Spiel und er hat den Vollbart. Ich speichere das Spiel, lade den Spielstand und er hat auf einmal das Standard Helden Gesicht.
Dasselbe wenn ich eine der Rasierklingen benutze, sie funktionieren zwar, aber nach dem Laden hat er wieder das Standard Helden Gesicht, aber komischerweise eben nicht den Vollbart der in PC_Hero.d eingetragen ist.
Woran liegt das jetzt?
-
Hast du mal geprüft, welchen Wert dein shave_hero nach dem Laden hat? Das Visual wird ja in deinem Fall davon abhängig gesetzt.
-
Zitat von Draxes
Hast du mal geprüft, welchen Wert dein shave_hero nach dem Laden hat? Das Visual wird ja in deinem Fall davon abhängig gesetzt.
Wie kann ich das prüfen?
edit: Hab den Fehler gefunden. Hatte in der init global keinen Vergleich == sondern eine Zuweisung =.
Geändert von Moe (16.10.2018 um 16:53 Uhr)
-
Zitat von Moe
Wie kann ich das prüfen?
edit: Hab den Fehler gefunden. Hatte in der init global keinen Vergleich == sondern eine Zuweisung =.
mit IntToString kannst du deine Integer Variable in einen String umwandeln:
var string strShaveHero; strShaveHero = IntToString(shave_hero);
Dann kannst du deine Variable auf dem Bildschirm ausgeben:
var string msg; msg = ConcatStrings("shave_hero = ", strShaveHero);
Print(msg);
oder du verwendest Ikarus, um es in zSpy auszugeben:
MEM_Info(msg);
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|