Rada ohledně skriptů

Různé rady a řešené problémy a návrhy

Moderátoři: Dungeon Servant, World Builder, Dungeon Master

Uživatelský avatar
The_Balrog
Příspěvky: 4924
Registrován: 3. 8. 2006 7.37
Bydliště: (ಠ_ృ)
Kontaktovat uživatele:

Příspěvek od The_Balrog »

Nachjuamifiči píše:Třeba budu postiženej a nepovedenej experiment nějakyho nekromanta. Přicestuju z daleka až k vám ve snaze najít nějaký lék či způsob, jak ze sebe ,,něco" udělat...
Prosím tě..

Ne.…
„Jmenuju se Natalie. A dělám si, co chci.“
Nachjuamifiči
Příspěvky: 24
Registrován: 16. 7. 2009 22.04

Příspěvek od Nachjuamifiči »

The_Balrog píše:
Nachjuamifiči píše:Třeba budu postiženej a nepovedenej experiment nějakyho nekromanta. Přicestuju z daleka až k vám ve snaze najít nějaký lék či způsob, jak ze sebe ,,něco" udělat...
Prosím tě..

Ne.…
Ber to jako narychlo splácany něco :bleh:
Uživatelský avatar
Jon
Příspěvky: 2513
Registrován: 2. 4. 2007 10.28
Bydliště: Thalie
Kontaktovat uživatele:

Příspěvek od Jon »

Ono právě takovýhle "narychlo splácaný něco" bývá vždycky kamenem úrazu.
Kraki Skengdrang
hoodedskull
Příspěvky: 86
Registrován: 28. 12. 2008 11.21

Příspěvek od hoodedskull »

Nachjuamifiči píše:
The_Balrog píše:
Nachjuamifiči píše:Třeba budu postiženej a nepovedenej experiment nějakyho nekromanta. Přicestuju z daleka až k vám ve snaze najít nějaký lék či způsob, jak ze sebe ,,něco" udělat...
Prosím tě..

Ne.…
Ber to jako narychlo splácany něco :bleh:
A kdyz uz neco zajimavyho vymyslis, tak to nepis sem, ale nech to na IC odhalení ve hře!
_________________
GID: hoodedskull
Irma Střapatá - průzkumníčka a hudebníčka
Ramcen syn Erlordův - mistr řemesla kamenického
Thaldor Rakhum - poustevník z Fagadu

"Kdo s hrdostí nepřizná vlastní chyby, nemá hrdost!" Charles Dickens
kokosak
Příspěvky: 2954
Registrován: 17. 8. 2007 18.49
Kontaktovat uživatele:

Příspěvek od kokosak »

The_Balrog píše:
Nachjuamifiči píše:Třeba budu postiženej a nepovedenej experiment nějakyho nekromanta. Přicestuju z daleka až k vám ve snaze najít nějaký lék či způsob, jak ze sebe ,,něco" udělat...
Prosím tě..

Ne.…
Ale ano, prosímtě, ANO *brousí si svůj Holy Avenger* :dribble:
Eternal chaos comes with chocolate rain, you guys. CHOCOLATE RAIN!
Nachjuamifiči
Příspěvky: 24
Registrován: 16. 7. 2009 22.04

Příspěvek od Nachjuamifiči »

hoodedskull píše:
Nachjuamifiči píše:
The_Balrog píše: Prosím tě..

Ne.…
Ber to jako narychlo splácany něco :bleh:
A kdyz uz neco zajimavyho vymyslis, tak to nepis sem, ale nech to na IC odhalení ve hře!
Tak už víš proč sem narychlo splácal něco? :biggrin:
kokosak
Příspěvky: 2954
Registrován: 17. 8. 2007 18.49
Kontaktovat uživatele:

Příspěvek od kokosak »

hoodedskull píše:A kdyz uz neco zajimavyho vymyslis, tak to nepis sem, ale nech to na IC odhalení ve hře!
Mi připomíná experta co přišel do hospody, sedl si a začal vykládat na celé okolí, že je vlastně upír :biggrin:
Eternal chaos comes with chocolate rain, you guys. CHOCOLATE RAIN!
darmian
Příspěvky: 1159
Registrován: 22. 7. 2006 18.40

Příspěvek od darmian »

Nachjuamifiči píše: Tak nic. Předmět tam je ale bez účinku. Udělal sem vše jaks napsal.…
-Předmět má být v inventáři, nebo se tim musím vybavit?
-A má přidělovat permanentně XP, i když třeba prodávám?
-Když sem vyvtořil nový xpgiver (prsten např.) nepřidělím mu ve vlastnostech žádny odkazy na tento skript nebo nějaky zvláštní nastavení?
Ten předmět nemusíš mít vybavený. Skript na něj navážeš už tím, že ho vyhledáváš podle tagu - proto tag musí být přesně "xpgiver" bez úvozovek.
Dále ten předmět může být jakýkoliv - třeba nějakej nepatrnej šutřík, aby nezabíral moc místa v inventáři.
Hele otevři si ten modul -> úpravy -> vlastnosti modulu -> události -> OnHeartbeat. Zmáčkni tlačítko "uprav" ( je napravo ). Otevře se ti okno skript editoru -> tam vlož následující upravený skript.

Kód: Vybrat vše

void main()
{
object oPC=GetFirstPC();
int nCounterXP=GetLocalInt(GetItemPossessor(GetObjectByTag("xpgiver")),"counter_XP")+1;

if(nCounterXP==1 && GetIsObjectValid(oPC)==TRUE)
{
GiveXPToCreature(GetItemPossessor(GetObjectByTag("xpgiver")),100);
nCounterXP=0;
oPC=GetNextPC();
}
SetLocalInt(GetItemPossessor(GetObjectByTag("xpgiver")), "counter_XP", nCounterXP);
}
A ulož to jako třeba "skript_xp". Pamatuj ale, že jestliže hrajete kampaň, tak ta má asi milion modulů, takže tenhle postup musíš udělat v každém z těch modulů. Moduly kampaně by v Heartbeatu nic mít neměli... A co se týče těch předmětů, tak samozřejmě rozdat jenom v počáteční lokaci...
BTW: tenhle skript je jiný,než ten první. Ale nechápu, proč ti to nefungovalo. Ten skript je v pořádku, akorát, že to vyhledalo jenom prvního s tímhle předmětem a pak mu to dávalo XP - nemám server, tak si to řádně nemůžu ověřit na vícero lidech, leda na sobě a to jaksi pro multiplayer není úplně ideálně, ale tohle by fungovat mohlo.
Naposledy upravil(a) darmian dne 17. 7. 2009 13.21, celkem upraveno 2 x.
Nachjuamifiči
Příspěvky: 24
Registrován: 16. 7. 2009 22.04

Příspěvek od Nachjuamifiči »

darmian píše:
Nachjuamifiči píše: Tak nic. Předmět tam je ale bez účinku. Udělal sem vše jaks napsal.…
-Předmět má být v inventáři, nebo se tim musím vybavit?
-A má přidělovat permanentně XP, i když třeba prodávám?
-Když sem vyvtořil nový xpgiver (prsten např.) nepřidělím mu ve vlastnostech žádny odkazy na tento skript nebo nějaky zvláštní nastavení?
….

A ulož to jako třeba "skript_xp". Pamatuj ale, že jestliže hrajete kampaň, tak ta má asi milion modulů, takže tenhle postup musíš udělat v každém z těch modulů. Moduly kampaně by v Heartbeatu nic mít neměli... A co se týče těch předmětů, tak samozřejmě rozdat jenom v počáteční lokaci...
BTW: tenhle skript je jiný,než ten první. Ale nechápu, proč ti to nefungovalo. Ten skript je v pořádku, akorát, že to vyhledalo jenom prvního s tímhle předmětem a pak mu to dávalo XP - nemám server, tak si to řádně nemůžu ověřit na vícero lidech, leda na sobě a to jaksi pro multiplayer není úplně ideálně, ale tohle by fungovat mohlo.
Právě já to zkoušel jenom přes SP, hráče nemám teď k dispozici :biggrin: Ale mělo by to jet i v SP, ne? Ok, vyzkouším druhou variantu. Ještě mi bylo doporučeno změnit ve vlastnostech modulu koeficient násobku přidělovaných XP, ale nemůžu ho tam nějak najít. Toolset mám v češtině.

EDIT: V modulu kampaní už OnHeartbeat skript má. Mám ho přepsat, nebo řádky vložit pod něj?
darmian
Příspěvky: 1159
Registrován: 22. 7. 2006 18.40

Příspěvek od darmian »

V Single Playeru ten první funguje na 100%.
darmian
Příspěvky: 1159
Registrován: 22. 7. 2006 18.40

Příspěvek od darmian »

Jestli tam nějaký skripty v události OnHeartbeat jsou, tak je určitě nepřepisuj, jenom to na jejich konec přidej...
Mělo by to mít výslednou formu asi takovou:

Kód: Vybrat vše

void main()  // -> tady může být i něco jiného, než void main. Třeba HeartBeat() atp., ale to neřeš.
{
.
.
.
nějaký skript
.
.
.
object oPC=GetFirstPC();
int nCounterXP=GetLocalInt(GetItemPossessor(GetObjectByTag("xpgiver")),"counter_XP")+1;

if(nCounterXP==1 && GetIsObjectValid(oPC)==TRUE)
{
GiveXPToCreature(GetItemPossessor(GetObjectByTag("xpgiver")),100);
nCounterXP=0;
oPC=GetNextPC();
}
SetLocalInt(GetItemPossessor(GetObjectByTag("xpgiver")), "counter_XP", nCounterXP); 
}
Ale nějak nevidím v žádným z modulů kampaně v OnHeartbeat žádné skripty. Jak se ten modul, který upravuješ, jmenuje?

EDIT: jo už tu nějaký skript vidím, ok...
Naposledy upravil(a) darmian dne 17. 7. 2009 13.20, celkem upraveno 4 x.
darmian
Příspěvky: 1159
Registrován: 22. 7. 2006 18.40

Příspěvek od darmian »

A koeficient můžeš upravit v "úpravy -> vlastnosti modulu -> rozšířené" Tam je "měřítko zkušeností". S posuvníkem si dělej co chceš -> bude to dávat víc zkušeností z těch bestií třeba... Tendle skript dělá něco jinýho. Ten permanentně za určitý časový úsek dává XP ať děláš, co děláš.
Nachjuamifiči
Příspěvky: 24
Registrován: 16. 7. 2009 22.04

Příspěvek od Nachjuamifiči »

Kód: Vybrat vše

void main()
{
    if (GetLocalInt(GetModule(),"NW_G_M2MainPlotActive") > 0)
    {
       SetLocalInt(GetModule(),"NW_G_M2MainPlotActive",GetLocalInt(GetModule(),"NW_G_M2MainPlotActive") - 1);
    }
    if (GetLocalInt(GetModule(),"NW_G_M2MainPlotDelay") > 1)
    {
       SetLocalInt(GetModule(),"NW_G_M2MainPlotDelay",GetLocalInt(GetModule(),"NW_G_M2MainPlotDelay") - 1);
    }
    else if (GetLocalInt(GetModule(),"NW_G_M2MainPlotDelay") == 1)
    {
        if (GetLocalInt(GetModule(),"NW_G_M2Q6MainPlot") < 4)
        {
            SetLocalInt(GetModule(),"NW_G_M2Q6MainPlot",4);
        }
    }
    int nCounterXP=GetLocalInt(GetItemPossessor(GetObjectByTag("xpgiver")),"counter_XP")+1;

    if(nCounterXP==1)
    {
    GiveXPToCreature(GetItemPossessor(GetObjectByTag("xpgiver")),100);
    nCounterXP=0;
    }
    SetLocalInt(GetItemPossessor(GetObjectByTag("xpgiver")), "counter_XP", nCounterXP);
}
Takto by měl vypadat OnHeartbeat?
darmian
Příspěvky: 1159
Registrován: 22. 7. 2006 18.40

Příspěvek od darmian »

Jak sem psal už dřív - myslím, že ten můj první skript bude fungovat jenom pro prvního hráče, který ten item bude mít, takže zkuste i tohle:

Kód: Vybrat vše

void main()
{
    if (GetLocalInt(GetModule(),"NW_G_M2MainPlotActive") > 0)
    {
       SetLocalInt(GetModule(),"NW_G_M2MainPlotActive",GetLocalInt(GetModule(),"NW_G_M2MainPlotActive") - 1);
    }
    if (GetLocalInt(GetModule(),"NW_G_M2MainPlotDelay") > 1)
    {
       SetLocalInt(GetModule(),"NW_G_M2MainPlotDelay",GetLocalInt(GetModule(),"NW_G_M2MainPlotDelay") - 1);
    }
    else if (GetLocalInt(GetModule(),"NW_G_M2MainPlotDelay") == 1)
    {
        if (GetLocalInt(GetModule(),"NW_G_M2Q6MainPlot") < 4)
        {
            SetLocalInt(GetModule(),"NW_G_M2Q6MainPlot",4);
        }
    }
    object oPC=GetFirstPC();
int nCounterXP=GetLocalInt(GetItemPossessor(GetObjectByTag("xpgiver")),"counter_XP")+1;

if(nCounterXP==1 && GetIsObjectValid(oPC)==TRUE)
{
GiveXPToCreature(GetItemPossessor(GetObjectByTag("xpgiver")),100);
nCounterXP=0;
oPC=GetNextPC();
}
SetLocalInt(GetItemPossessor(GetObjectByTag("xpgiver")), "counter_XP", nCounterXP); 
}
Naposledy upravil(a) darmian dne 17. 7. 2009 13.19, celkem upraveno 2 x.
Sethiel
Příspěvky: 286
Registrován: 14. 4. 2008 19.23
Kontaktovat uživatele:

Příspěvek od Sethiel »

Já jsem jen chtěl říct, aby ses nedivil, že pak budeš sám, pokud budeš hrát něco takovýho. A hrát na online serveru sám je podle mě pěkná pruda. Nejkrásnější věci jdou právě z toho, že hraješ s ostatními … což si jako nemrtvý nedokážu představit.

Řekl bych, že tohle začátečníci nevnímají (já to taky nevnímal, chtěl jsem si na začátku udělat nějakou drsňáckou postavu) … ale samotářské postavy to nemají jednoduché. Ať už jsou sami z přesvědčení, nebo jim nic jiného nezbývá.
Imagination is the only weapon in the war against reality.
KaTo
Příspěvky: 850
Registrován: 15. 2. 2007 12.34
Bydliště: Severní okraj Středozemě
Kontaktovat uživatele:

Příspěvek od KaTo »

Sethiel píše:Já jsem jen chtěl říct, aby ses nedivil, že pak budeš sám, pokud budeš hrát něco takovýho. A hrát na online serveru sám je podle mě pěkná pruda. Nejkrásnější věci jdou právě z toho, že hraješ s ostatními … což si jako nemrtvý nedokážu představit.
Řekl bych, že tohle začátečníci nevnímají (já to taky nevnímal, chtěl jsem si na začátku udělat nějakou drsňáckou postavu) … ale samotářské postavy to nemají jednoduché. Ať už jsou sami z přesvědčení, nebo jim nic jiného nezbývá.
...jojo, to pak jednoho potkají Dx (občas i) killy a rady, ať si najdeš nějaké hráčské uskupení :megalol: .
Btw hrát "dlouhodobě" zrovna nemrtvého či drowa bez podpory Dx je, vzhledem k nastavení EQ, řekněme VELMI krátkodobá záležitost.
Opravdu ti doporučuji - zahraj si nějakou plechovku/barda, aspoň do 12-15tého lvlu. Rozkoukej se jak tu funguje svět, lidi (jak PC, tak NPC) a systémy výdělku/expů/smrti/a milion dalších a pak si polož znovu otázku:
Mám na to hrát (tady) nemrtvého?! :crazy: :yes:
Obrázek
Nachjuamifiči
Příspěvky: 24
Registrován: 16. 7. 2009 22.04

Příspěvek od Nachjuamifiči »

Tak jsem to vyřešil tím XP sliderem. XP je víc, funguje jak má...
darmianovi díky za trpělivost :bigwink:

A poslední dotaz. Když hrajeme ten multiplayer tři, někdo zabije skřeta, za kteryho je v SP např. 12 XP, rozdělí se to přesně mezi nás 3? Dostaneme každej 4 XP nebo záleží na tom kdo udělí poslední ránu, jak sme od sebe vzdálení atp.?

KaTO, Sethiel: Opakuju, byl to jen výkřik do tmy :bigwink:
Odpovědět