FAQ  •  Szukaj  •  Użytkownicy  •  Grupy •  Galerie   •  Rejestracja  •  Profil  •  Zaloguj się, by sprawdzić wiadomości  •  Zaloguj
 
 
 Skrypty Zobacz następny temat
Zobacz poprzedni temat
Napisz nowy tematOdpowiedz do tematu
Autor Wiadomość
Wedrowiec
Administrator


Dołączył: 21 Wrz 2008
Posty: 514
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5

PostWysłany: Pią 11:26, 21 Lis 2008 Powrót do góry

tu będą umieszczane przydatne skrypty

na początek skrypt teleportacji czyli jeden z najużyteczniejszych skryptów. skrypt w czterech wersjach, dwie pierwsze aktywowane przez użycie obiektu (np skrypty wychodzenia z aren). Obiekt nie może być statyczny a skrypt umieszczony w miejscu OnUsed, dwa kolejne to skrypty to aktywowane podczas rozmowy (np Chauron, podróż statkiem w doku.) skypt umieszczamy w konwersacji w zakładce "Podjęte działania", ale proponuje umieszczenie skryptu w zdaniu kończącym dialog inaczej reszta dialogu zostanie przerwana podczas przenoszenia. w obu przypadkach istnieja dwie wersje skryptu z efektem teleportacji (biały krąg na ziemi tak jak na arenie, teleportacja trwa trochę dłużej) i bez tego efektu
skrypty teleportuja w miejsce oznaczone Punktem Nawigacyjnym o etykiecie "gdzie" (oczywiście sam punkt nawigacyjny powinien miec inna etykiete, unikalna i nie powtarzalna i taka sama etykieta powinna byc uzyta w skrypcie)

Arrow teleportacja OnUsed z efektem wizualnym
void main()
{

object oPC = GetLastUsedBy();

if (!GetIsPC(oPC)) return;

object oTarget;
location lTarget;
oTarget = GetWaypointByTag("gdzie");

lTarget = GetLocation(oTarget);

if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

AssignCommand(oPC, ClearAllActions());

DelayCommand(3.0, AssignCommand(oPC, ActionJumpToLocation(lTarget)));

oTarget = oPC;

int nInt;
nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), GetLocation(oTarget));

}

Arrow teleportacja OnUsed bez efektu wizualnego
void main()
{

object oPC = GetLastUsedBy();

if (!GetIsPC(oPC)) return;

object oTarget;
location lTarget;
oTarget = GetWaypointByTag("gdzie");

lTarget = GetLocation(oTarget);

if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

AssignCommand(oPC, ClearAllActions());

AssignCommand(oPC, ActionJumpToLocation(lTarget));

}

Arrow teleportacja podczas rozmowy z efektem wizualnym
void main()
{

object oPC = GetPCSpeaker();

object oTarget;
location lTarget;
oTarget = GetWaypointByTag("gdzie");

lTarget = GetLocation(oTarget);

if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

AssignCommand(oPC, ClearAllActions());

DelayCommand(3.0, AssignCommand(oPC, ActionJumpToLocation(lTarget)));

oTarget = oPC;

int nInt;
nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), GetLocation(oTarget));

}

Arrow teleportacja z rozmowy bez efektu wizualnego
void main()
{

object oPC = GetPCSpeaker();

object oTarget;
location lTarget;
oTarget = GetWaypointByTag("gdzie");

lTarget = GetLocation(oTarget);

if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

AssignCommand(oPC, ClearAllActions());

AssignCommand(oPC, ActionJumpToLocation(lTarget));

}


Post został pochwalony 0 razy
Zobacz profil autora
damianwrobi



Dołączył: 29 Paź 2008
Posty: 45
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Gliwice
Płeć: Mężczyzna

PostWysłany: Sob 0:44, 22 Lis 2008 Powrót do góry

Mógłbyś napisać tu jaki jest skrypt żeby używając siedzeń można było na nich siadać i jaki jest skrypt na to żeby NPC siedzieli na tym siedzeniu. Wiem że w innym temacie było to napisane lecz jak sam zresztą napisałeś te skrypty działają tylko w matrycy, a ja bym chciał żeby działały też w moim module.
Potrzebowałbym też skryptu na to żeby latarnicy o konkretnych porach gasili i zapalali latarnie. (Potrzebuje tego wszystkiego bo robię drugie miasto do Matrycy i potrzebuje tych skryptów)

Ps. Czy w tym mieście muszę umieszczać NPC o nazwie Strażnik lub Strażniczka Matrycy, czy sam ich dodasz?


Post został pochwalony 0 razy
Zobacz profil autora
Wedrowiec
Administrator


Dołączył: 21 Wrz 2008
Posty: 514
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5

PostWysłany: Nie 16:13, 23 Lis 2008 Powrót do góry

void main()
{
AssignCommand(OBJECT_SELF,ActionSit(GetNearestObjectByTag("krzeslo", OBJECT_SELF)));
}

obiekt na którym ma usiąść NPC musi mieć etykietę "krzeslo"
jak pisałem w tym innym miejscu jesli lokacja ma byc dodana do matryca skrypt musi nosic nazwe siadanie_npc a taki skrypt najlepiej wsadzić w OnHeartbeat


Post został pochwalony 0 razy
Zobacz profil autora
Wedrowiec
Administrator


Dołączył: 21 Wrz 2008
Posty: 514
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5

PostWysłany: Pon 16:59, 24 Lis 2008 Powrót do góry

a oto jak zrobic by przedmiot miał swoją umiejętnośc, jest to trochę trudniejsze od zwykłęgo skryptu, bo pzredmioty nie mają miejsc na skrypty, ale jak się wie co trzeba zrobić wtedy to banał. najpierw twożymy przedmiot, wazna jest jego etykieta. potem twożymy dwa skrypty, pierwszy z nich nosi nazwe dokładnie taka samą jak etykieta przedmiotu a skrypt ten musi wyglądać tak:

#include "x2_inc_switches"
void main()
{
int nEvent =GetUserDefinedItemEventNumber();
switch (nEvent)
{
case X2_ITEM_EVENT_ACTIVATE:
ExecuteScript("ac_"+GetTag(GetItemActivated()),
OBJECT_SELF); break;
case X2_ITEM_EVENT_EQUIP:
ExecuteScript("eq_"+GetTag(GetPCItemLastEquipped()),
OBJECT_SELF); break;
case X2_ITEM_EVENT_UNEQUIP:
ExecuteScript("ue_"+GetTag(GetPCItemLastUnequipped())
, OBJECT_SELF); break;
case X2_ITEM_EVENT_ACQUIRE:
ExecuteScript("aq_"+GetTag(GetModuleItemAcquired()),
OBJECT_SELF); break;
case X2_ITEM_EVENT_UNACQUIRE:
ExecuteScript("ua_"+GetTag(GetModuleItemLost()),
OBJECT_SELF); break;
case X2_ITEM_EVENT_SPELLCAST_AT:
ExecuteScript("sp_"+GetTag(GetModuleItemLost()),
OBJECT_SELF); break;
case X2_ITEM_EVENT_ONHITCAST:
ExecuteScript("on_"+GetTag(GetSpellCastItem()),
OBJECT_SELF); break;
}
}

nastepnie twożymy skrypt z instrukcją co ma robić ten przedmiot a taki skrypt nazywamy "ac_ETYKIETA" oczywiscie zamiast slowa etykieta wpisujemy etykiete przedmiotu. Na koniec w właściwościach przedmiotu wybieramy "Rzucenie zaklęcia: Unikalna Moc" określamy ilość użyć i gotowe


Post został pochwalony 0 razy
Zobacz profil autora
arystoteles



Dołączył: 31 Paź 2008
Posty: 29
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

Płeć: Mężczyzna

PostWysłany: Śro 11:48, 26 Lis 2008 Powrót do góry

A mógłbym prosić o skrypt który powoduje że po otwarciu drzwi po jakimś czasie same się zamykają.


Post został pochwalony 0 razy
Zobacz profil autora
Wedrowiec
Administrator


Dołączył: 21 Wrz 2008
Posty: 514
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5

PostWysłany: Śro 12:00, 26 Lis 2008 Powrót do góry

ten skrypt wsadzamy w OnOpen
void main()
{
DelayCommand(8.0, ActionCloseDoor(OBJECT_SELF));
}

a ten w OnHeartbeat w drzwiach które się otwierają same, to znaczy na przykład jeśli są drzwi przejściowe z jednej do drugiej lokacji to otwierając jedne automatycznie otwiera się drugie, niestety te drugie sie nie zamkną mając tylko ten pierwszy skrypt dla tego trzeba użyć tego tutaj. mówiąc w skrócie ten skrypt dajemy do każdych drzwi przejściowych miedzy obszarami
void main()
{

object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN);
object lPC = GetLastOpenedBy();
if (IsInConversation(OBJECT_SELF) || GetIsInCombat()) return;


if (oPC == lPC)
{ }
else
{
ActionCloseDoor(OBJECT_SELF);
}
}


Post został pochwalony 0 razy
Zobacz profil autora
Garrador



Dołączył: 17 Paź 2008
Posty: 213
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Sob 14:40, 29 Lis 2008 Powrót do góry

Mam puyanko... jak zrobic, by potwór zostawiał po sobie dobrą broń co jakiś czas? ( np. jak pustynne minotaury, raz to, taz to itp. )


Post został pochwalony 0 razy
Zobacz profil autora
Wedrowiec
Administrator


Dołączył: 21 Wrz 2008
Posty: 514
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5

PostWysłany: Śro 19:32, 03 Gru 2008 Powrót do góry

void main()
{
object oChair = OBJECT_SELF;
AssignCommand(GetLastUsedBy(), ActionSit(oChair));
}

skrypt dajemy do OnUse krzesła (musi być używalne) i po kliknięciu gracz będzie mógł usiąść. nazwa skryptu używana na matrycy "urzyciekrzesla"


Post został pochwalony 0 razy
Zobacz profil autora
Wedrowiec
Administrator


Dołączył: 21 Wrz 2008
Posty: 514
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5

PostWysłany: Śro 10:37, 10 Gru 2008 Powrót do góry

skrypt uruchamiajacy sklep podczas rozmowy

void main()
{
OpenStore(GetNearestObjectByTag("ETYKIETA"),GetPCSpeaker());
}

zamiast ETYKIETA, wpisujemy etykiete sklepu ktory umieszczamy obok sprzedawcy
nazwe skryptu dajemy skl_*** (oczywiscie cos orginalnego)


Post został pochwalony 0 razy

Ostatnio zmieniony przez Wedrowiec dnia Śro 10:38, 10 Gru 2008, w całości zmieniany 1 raz
Zobacz profil autora
dkinvoker



Dołączył: 27 Paź 2008
Posty: 232
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Z świata Lineage ][
Płeć: Mężczyzna

PostWysłany: Sob 16:09, 10 Sty 2009 Powrót do góry

przykładowo mam se taki skrypt

//::///////////////////////////////////////////////
//:: FileName pd_10_bank
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Script Wizard
//:: Created On: 2009-01-10 13:59:11
//:://////////////////////////////////////////////
void main()
{

// Zabierz graczowi doświadczenie
GiveXPToCreature(GetPCSpeaker(), -1);
}


no to czemu nie dziła mi on w rozmowie? jak kiedyś robiłem rozmowe z takim skryptem to zawsze mi dzilalo a teraz nagle nie


Post został pochwalony 0 razy
Zobacz profil autora
Wedrowiec
Administrator


Dołączył: 21 Wrz 2008
Posty: 514
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5

PostWysłany: Sob 22:18, 10 Sty 2009 Powrót do góry

powinno działać. pamiętaj tylko że musi być jakiś exp do zabraniaa gdzie to wsadzasz w rozmowe?


Post został pochwalony 0 razy
Zobacz profil autora
dkinvoker



Dołączył: 27 Paź 2008
Posty: 232
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Z świata Lineage ][
Płeć: Mężczyzna

PostWysłany: Nie 11:10, 11 Sty 2009 Powrót do góry

W banku na moim module (tam on dziala inaczej niż na matrycy) a jeśli chodzi czy to jest w wypowiedzi npc czy w mojej to dalem i w tej i w tej i nic... a mialem postac co 300 expa miala i nie stracila doświadczenia


Post został pochwalony 0 razy
Zobacz profil autora
Wedrowiec
Administrator


Dołączył: 21 Wrz 2008
Posty: 514
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5

PostWysłany: Nie 12:43, 11 Sty 2009 Powrót do góry

void RemoveXPFromParty(int nXP, object oPC, int bAllParty=TRUE)
{

if (!bAllParty)
{
nXP=(GetXP(oPC)-nXP)>=0 ? GetXP(oPC)-nXP : 0;
SetXP(oPC, nXP);
}
else
{
object oMember=GetFirstFactionMember(oPC, TRUE);

while (GetIsObjectValid(oMember))
{
nXP=(GetXP(oMember)-nXP)>=0 ? GetXP(oMember)-nXP : 0;
SetXP(oMember, nXP);
oMember=GetNextFactionMember(oPC, TRUE);
}
}
}
void main()
{

object oPC = GetPCSpeaker();

RemoveXPFromParty(100, oPC, FALSE);

}


Post został pochwalony 0 razy
Zobacz profil autora
dkinvoker



Dołączył: 27 Paź 2008
Posty: 232
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Z świata Lineage ][
Płeć: Mężczyzna

PostWysłany: Nie 13:32, 11 Sty 2009 Powrót do góry

Jeśli to zamiennik tamtego skryptu to Dziękuję


Post został pochwalony 0 razy
Zobacz profil autora
Ginden



Dołączył: 17 Gru 2008
Posty: 9
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

Płeć: Mężczyzna

PostWysłany: Nie 13:59, 11 Sty 2009 Powrót do góry

dkinvoker napisał:
void main()
{

// Zabierz graczowi doświadczenie
GiveXPToCreature(GetPCSpeaker(), -1);
}

A ta funkcja obsługuje minusowe liczby?


Post został pochwalony 0 razy
Zobacz profil autora
Wyświetl posty z ostatnich:      
Napisz nowy tematOdpowiedz do tematu


 Skocz do:   



Zobacz następny temat
Zobacz poprzedni temat
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001/3 phpBB Group :: FI Theme :: Wszystkie czasy w strefie EET (Europa)
 
 
Regulamin