Odwietrzam wątek.
Efekt ma być taki że funkcja wywołuje się co kilka sekund w trakcie gry. Kiedy wejdę w npc na kodach klawiszem "O" to funkcja znika i już nie działa a chodzi mi o to żeby się ponownie włączyła w toku gry. Otóż nie wiem jaki popełniam błąd ale funkcja ogóle nie chce mi się włączyć.Pokaże wam materiał krok po kroku co robiłem.
Poradnik na którym robiłem te czynność:
http://themodders.ovh/index.php?topic=89.0O to główny skrypt funkcji.
Spoiler
/////////////////////
//------------TurnToGhost------------------------
// (Duch w Gothic 1)
// Pomysł i wykonanie funkcji Zysk & Orcwarrior.
// id = Instancja npc'ta
// visibility = widoczność ducha 0 = calkiem niewidoczny 19 = przeswitywanie prawie niezauwazalne
//
//Znane problemy:
//-Używając funkcji w startupie powoduje że cień pod duchem nadal występuje, aby cień znikł
// funkcje najlepiej dodać w timetriggerze, tak aby uruchamiała co kilka chwil.
// Pazdziernik 10, 2009 The Modders
//
//Funkcja bez problemów dziala na kazdym C_NPC, przeznaczona do dowolnego użytku w modyfikacjach
//miło by jednak było wspomnieć gdzieś o jej autorach
//-----------------------------------------------
func void TurnToGhost(var int id, var int visibility)
{
var zCVob vob; vob = Hlp_GetNpc(id);
vob.bitfield[0] = vob.bitfield[0] & ~zCVob_bitfield0_castDynShadow;
vob.bitfield[0] = vob.bitfield[0] & ~zCVob_bitfield0_collDetectionDynamic;
vob.bitfield[0] = vob.bitfield[0] | (1<<2);
//Bugfix
if(visibility == 24)
{
vob.visualAlpha = 1;
}
if(visibility == 23)
{
vob.visualAlpha = 1;
}
if(visibility == 22)
{
vob.visualAlpha = 1;
}
if(visibility == 21)
{
vob.visualAlpha = 1;
}
if(visibility == 20)
{
vob.visualAlpha = 1;
}
if(visibility == 19)
{
vob.visualAlpha = 0.95;
}
else if(visibility == 18)
{
vob.visualAlpha = 0.9;
}
else if(visibility == 17)
{
vob.visualAlpha = 0.85;
}
else if(visibility == 16)
{
vob.visualAlpha = 0.8;
}
else if(visibility == 15)
{
vob.visualAlpha = 0.75;
}
else if(visibility == 14)
{
vob.visualAlpha = 0.7;
}
else if(visibility == 13)
{
vob.visualAlpha = 0.65;
}
else if(visibility == 12)
{
vob.visualAlpha = 0.6;
}
else if(visibility == 11)
{
vob.visualAlpha = 0.55;
}
else if(visibility == 10)
{
vob.visualAlpha = 0.5;
}
else if(visibility == 9)
{
vob.visualAlpha = 0.45;
}
else if(visibility == 8)
{
vob.visualAlpha = 0.4;
}
else if(visibility == 7)
{
vob.visualAlpha = 0.35;
}
else if(visibility == 6)
{
vob.visualAlpha = 0.3;
}
else if(visibility == 5)
{
vob.visualAlpha = 0.25;
}
else if(visibility == 4)
{
vob.visualAlpha = 0.2;
}
else if(visibility == 3)
{
vob.visualAlpha = 0.15;
}
else if(visibility == 2)
{
vob.visualAlpha = 0.1;
}
else if(visibility == 2)
{
vob.visualAlpha = 0.05;
}
else if(visibility == 1)
{
vob.visualAlpha = 0;
}
else if(visibility == 0)
{
vob.visualAlpha = 0;
};
};
Skrypt w trigger.D
Tu dopisałem na samym końcu te funkcje którą ma mi działać ze spacerem
Spoiler
Func void Ghost ()
{
TurnToGhost (GRD_254_Orry,5);
};
No i jeszcze zapisałem w startup.D chyba w dobrym miejscu.
Spoiler
//-------- eigentliche Startup des Spiels --------
FUNC VOID INIT_WORLD ()
{
Wld_SendTrigger("Ghost");
Wld_SetObjectRoutine(23,58,"SWORD_TRIG",1);
Wld_SetObjectRoutine(23,59,"SWORD_TRIG",0);
//Wld_SetObjectRoutine(00,00,"CALENDAR",1);
//Wld_SendTrigger("ARENA_FEN");
Wld_SetObjectRoutine(00,01,"ARENA_FEN",1);
Wld_SetObjectRoutine(23,59,"ARENA_FEN",0);
//Wld_SetObjectRoutine(00,05,"CALENDAR",0);
//Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_32",1);
//Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_32",1);
//Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_32",0);
No i jeszcze SS ze spacera.