1
Skrypty / Wyświetlanie listu w monologu
« dnia: 2013-07-19, 11:01 »
noo to brzmi trochę lepiej dzięki:)
Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.
instance list (C_INFO)
{
npc = PC_Hero;
nr = 999;
condition = listt;
information = Listl;
permanent = 1;
important = 0;
description = "Zobacz skrzynkę";
};
FUNC Listt()
{
if (monolog == otwart)
{
return TRUE;
};
};
func VOID Listl()
{
Info_ClearChoices (List);
Info_AddChoice (List,"Otwórz list "List_1);
Info_AddChoice (List,"Otwórz list "List_2);
};
func VOID List_1()
{
Info_ClearChoices (List);
Info_AddChoice (List,"wróć "Listl);
};
func VOID List_2()
{
Info_ClearChoices (List);
Info_AddChoice (List,"wróć "Listl);
};
instance PC_rulon (C_INFO)
{
npc = PC_Hero;
nr = 2;
condition = PC_rulon_TRUE;
information = PC_rulon_Info;
permanent = 1;
important = 0;
description = "Ruletka";
};
FUNC INT PC_rulon_TRUE()
{
if (monolog == otwart)
{
return TRUE;
};
};
func VOID PC_rulon_Info()
{
Info_ClearChoices (PC_rulon);
Info_AddChoice (PC_rulon,"odbierz wygraną",PC_rulon_Wyb2);
if(stawa > 0)
{
Info_AddChoice (PC_rulon,"Obstaw",PC_rulon_Wyb1);
};
Info_AddChoice (PC_rulon,"stawka",PC_rulon_Wyb3);
};
func VOID PC_rulon_Wyb2()
{
};
func VOID PC_rulon_Wyb1()
{
Rulet = Hlp_Random(37);
};
func VOID PC_rulon_Wyb3()
{
Info_ClearChoices (PC_rulon_Wyb33);
Info_AddChoice (PC_rulon_Wyb33,"1",PC_rulon_Wyb3_Wybor1);
Info_AddChoice (PC_rulon_Wyb33,"2",PC_rulon_Wyb3_Wybor2);
Info_AddChoice (PC_rulon_Wyb33,"5",PC_rulon_Wyb3_Wybor3);
Info_AddChoice (PC_rulon_Wyb33,"10",PC_rulon_Wyb3_Wybor4);
Info_AddChoice (PC_rulon_Wyb33,"25",PC_rulon_Wyb3_Wybor5);
Info_AddChoice (PC_rulon_Wyb33,"50",PC_rulon_Wyb3_Wybor6);
Info_AddChoice (PC_rulon_Wyb33,"100",PC_rulon_Wyb3_Wybor7);
Info_AddChoice (PC_rulon_Wyb33,"200",PC_rulon_Wyb3_Wybor8);
Info_AddChoice (PC_rulon_Wyb33,"500",PC_rulon_Wyb3_Wybor9);
};
Info_ClearChoices (PC_rulon_Wyb33);
Info_AddChoice (PC_rulon_Wyb33,"1",PC_rulon_Wyb3_Wybor1);
Info_AddChoice (PC_rulon_Wyb33,"2",PC_rulon_Wyb3_Wybor2);
Info_AddChoice (PC_rulon_Wyb33,"5",PC_rulon_Wyb3_Wybor3);
Info_AddChoice (PC_rulon_Wyb33,"10",PC_rulon_Wyb3_Wybor4);
Info_AddChoice (PC_rulon_Wyb33,"25",PC_rulon_Wyb3_Wybor5);
Info_AddChoice (PC_rulon_Wyb33,"50",PC_rulon_Wyb3_Wybor6);
Info_AddChoice (PC_rulon_Wyb33,"100",PC_rulon_Wyb3_Wybor7);
Info_AddChoice (PC_rulon_Wyb33,"200",PC_rulon_Wyb3_Wybor8);
Info_AddChoice (PC_rulon_Wyb33,"500",PC_rulon_Wyb3_Wybor9);
func VOID PC_rulon_Wyb3_wybor1()
{
};
itd.func VOID PC_rulon_Wyb3()
i Info_ClearChoices (PC_rulon_Wyb33);
powinny mieć to samą nazwę if( wylosowana == wartość )
naelse if
się krzaczy więc zastosowałem !!
i nadal się krzaczy czyli wszystkie warunki są jednocześnie spełniane a chciałbym aby spełnił to tylko jeden chyba że mam zastosować strukturę if
{
}
else
{
if
{
}
else
{
}
}
Amuletrand = Hlp_Random(100);
if(Amuletrand >= 12)
{
CreateInvItems (self, markool_scavenger_amulette,1);
};
if else(Amuletrand <= 24)
!!(Amuletrand <= 12)
{
CreateInvItems (self, markool_wolf_amulette, 1);
};
if else(Amuletrand <= 36)
!!(Amuletrand <= 24)
{
CreateInvItems (self, markool_bloodfly_amulette,1);
};
if else(Amuletrand <= 38)
!!(Amuletrand <= 36)
{
CreateInvItems (self, markool_shadowbeast_amulette,1);
};
if else(Amuletrand <= 40)
!!(Amuletrand <= 38)
{
CreateInvItems (self, markool_troll_amulette,1);
};
if else(Amuletrand <= 45)
!!(Amuletrand <= 40)
{
CreateInvItems (self,markool_waran_amulette,1);
};
if else(Amuletrand <= 50)
!!(Amuletrand <= 45)
{
CreateInvItems (self, markool_snapper_amulette,1);
Print("ole");
};
if else(Amuletrand > 50 )
{
CreateInvItems (self, markool_npc_scavenger_amulette,1);
Print("Ooo jak przykro..");
};
CreateInvItems (self, ItFoMuttonRaw, 1);
Gotowca nikt Ci nie pośle
polaking może ty byś mi gtowca przesłał w spoilerzze np?
func void PC_Sleep (var int t)
{
a bez dawanie tego do sleep tzn że jak zaśniemy hoc raz w ciągu tygodnia to się nie zrespi i zacznie odliczać od nowa czy zignoruje spanie w co jednak trochę wątpie,// ------ XP ------
if ( Npc_IsPlayer(other) || (other.aivar[AIV_PARTYMEMBER]==TRUE) )
&& (self.aivar[AIV_VictoryXPGiven] == FALSE)
{
B_GivePlayerXP (self.level * XP_PER_VICTORY);
self.aivar[AIV_VictoryXPGiven] = TRUE;
};
nie czyta npcismonster nawet if (NpcIsMonster(other) && other.aivar[AIV_MM_PARTYMEMBER])
{
other.aivar[AIV_MMPT_POINTS] +=1;
other.exp += self.level * XP_PER_LEVEL_DEAD;
};
wszystko działa oprucz aivaru nawet levelowanie zrobiłem i działa ;)chociaż nie zapisuje stat:/ błąd na aivarze pewnie dlatego ze w g2nk inne są puste.if (other.guild == GIL_SUMMONED_WOLF && other.aivar[AIV_PARTYMEMBER])
{
other.aivar[AIV_MMPT_POINTS] +=1;
other.exp += self.level * XP_PER_VICTORY;
};
BTW, spróbowałbyś chociaż najpierw samemu ogarnąć podstawy i spróbować to skleić, a nie oczekujesz że dostaniesz coś gotowego![]()
if (self.id == SummonedScavenger.id)
{
exp_Scavenger += 1;
};
func void ZS_Dead ()
{
// ------ aivars resetten ------
self.aivar[AIV_RANSACKED] = FALSE;
self.aivar[AIV_PARTYMEMBER] = FALSE;
B_StopLookAt (self);
AI_StopPointAt (self);
// ------ XP ------
if ( Npc_IsPlayer(other) || (other.aivar[AIV_PARTYMEMBER]==TRUE) )
&& (self.aivar[AIV_VictoryXPGiven] == FALSE)
{
B_GivePlayerXP (self.level * XP_PER_VICTORY);
self.aivar[AIV_VictoryXPGiven] = TRUE;
};
// ------ Sumpfdrohne -------
if (self.aivar[AIV_MM_REAL_ID] == ID_SWAMPDRONE)
{
if (Npc_GetDistToNpc(self, other) < 300)
{
other.attribute[ATR_HITPOINTS] -= 50;
//Npc_ChangeAttribute(other, ATR_HITPOINTS, -50);
};
zrobiłem coś takiego ale nie działa, a co do aivarów to jaki mógły być i jak zadeklarowany jeszcze się w nie tak nie zagłębiałem ale też by się przydało do innych potworkówif (Npc_IsDead (self))
&&(other == SummonedScavenger)
{
exp_Scavenger += 1;
};
var string carryx;carryx = IntToString (carry);
var string carren ;
carren = ConcatStrings(carren, carryx);
Doc_PrintLines ( nDocID, 0, carren);
a co do zdobywania doświadczenia to też coś zrobiłem func void B_GivePlayerXP_scavenger (var int add_xp)
{
if (level_scavenger == 0)
{
exp_next_scavenger = 500;
};
//----------------------------------------------------------------------------
exp_Scavenger = exp_Scavenger + add_xp;
//----------------------------------------------------------------------------
var string concatText;
concatText = PRINT_XPGained;
concatText = ConcatStrings (concatText, IntToString(add_xp));
PrintScreen (concatText, -1, YPOS_XPGained, FONT_ScreenSmall, 2);
//----------------------------------------------------------------------------
if ( exp_Scavenger >= exp_next_scavenger )
{
level_scavenger = level_scavenger+1;
exp_next_scavenger = exp_next_scavenger +((level_scavenger+1)*500);
ATR_HITPOINTS_MAX_scavenger = ATR_HITPOINTS_MAX_scavenger + HP_PER_LEVEL;
ATR_HITPOINTS_scavenger = ATR_HITPOINTS_scavenger + HP_PER_LEVEL;
PrintScreen (PRINT_LevelUp, -1, YPOS_LevelUp, FONT_Screen, 2);
Snd_Play ("Ścierwojad LevelUp");
};
B_Checklog ();
a to owej bestii;)INSTANCE SummonedScavenger (Mst_Default_Scavenger)
{
name = "Przywołany Ścierwojad ";
guild = GIL_SUMMONED_WOLF;
aivar[AIV_MM_REAL_ID] = 10000;
level = level_scavenger;
Npctype = NPCTYPE_MAIN;
// ------ XP Setup ------
exp = exp_Scavenger ;
exp_next = exp_next_Scavenger ;
exp_next_Scavenger = 500;
//----- Attribute ----
attribute [ATR_STRENGTH] = 35;
attribute [ATR_DEXTERITY] = 35;
if (level_scavenger == 0)
{
ATR_HITPOINTS_MAX_scavenger =70;
}
else
{
attribute [ATR_HITPOINTS_MAX] = ATR_HITPOINTS_MAX_scavenger;
};
if (level_scavenger == 0)
{
ATR_HITPOINTS_scavenger =70;
}
else
{
attribute [ATR_HITPOINTS] = ATR_HITPOINTS_scavenger;
};
attribute [ATR_MANA_MAX] = 0;
attribute [ATR_MANA] = 0;
aivar[AIV_PARTYMEMBER] = true;
B_SetAttitude (self, ATT_FRIENDLY);
start_aistate = ZS_MM_Rtn_Summoned;
B_SetVisuals_Scavenger();
Npc_SetToFistMode(self);
};
może trochę przekombinowałem;) a może działa gdybym wywołał to by naliczało mu zabijanie, ten skrypt levelowania zacząłem właśnie podstosowywać pod ilość zabić czyli exp jako liczba zabójstw a nie doświadczenie z konkretnego potwora bo kompletnie niewiedziałem gdzie wstawić by jak heros otrzymywał expa, obie metody wolałbym znać, i co właśnie z levelowaniem. Oczywiście nie musi być to widoczne gdy w grze po wpisaniu marvina klikam