Witaj
Gość

Wątek: [Dzielę Pliki]Vote NPC  (Przeczytany 8081 razy)

  • *******
  • Wiadomości: 1092

  • Pochwał: 22

[Dzielę Pliki]Vote NPC
« dnia: Marzec 30, 2009, 09:59:02 pm »
Ciekawy NPC , który może pomóc przy zdobyciu kilku głosów więcej . Otóż owy NPC biega dookoła Giran Square i prosi o Vote ( Vote czyli głosy na toplistach ) Zatrzymuje się w 4 rogach i wymawia swój tekst , zmienia położenie co 10 sec .



Tekst NPC :






Html NPC : ( po naciśnięciu na NPC )





Biegający NPC :





Kierunki biegu NPC :





Ok , ale jeśli chce zmienić trajektorie jego ruchów ?

Odpowiedź jest bardzo prosta . Zrobienie takiego NPC jest bardzo proste do czego wykorzystamy tabele 'Walker_routes' W tabeli tej , definiujemy co dany NPC może powiedzieć lub gdzie się udać w jakich odstępach czasowych . Walker routes dla tego NPC wygląda tak :

INSERT INTO `walker_routes` (`route_id`, `npc_id`, `move_point`, `chatText`, `move_x`, `move_y`, `move_z`, `delay`, `running`) VALUES
(43, 888823, 1, 'Please ! Vote for Us now !', 82718, 149312, -3471, 10, 1),
(43, 888823, 2, 'Prosze ! Glosuj na nasz server !', 82713, 147899, -3471, 10, 1),
(43, 888823, 3, 'Please ! Vote for Us now !', 81153, 147904, -3471, 10, 1),
(43, 888823, 4, 'Prosze ! Glosuj na nasz server !', 81158, 149316, -3471, 10, 1);

Wyjaśnienie :

Cytuj
43
- jest to ID 'walker_routes' , czyli jeśli dodajemy nowego NPC walkera to podajemy ID wyższe o jeden niż wyżej w tabeli

Cytuj
888823
- w tym przypadku jest to ID NPC , do którego owy walker się odnośi

Cytuj
1,2,3,4
- są to kolejne ruchy , teksty - zaczynamy od 1 , dodając kolejne

Cytuj
'Please ! Vote for Us now !'
- tutaj podajemy jaki test ma napisać NPC

Cytuj
82718, 149312, -3471,
- lokacja , do której ma przejść NPC

Cytuj
10
- odstęp w sekundach , po których NPC wykona nową czynność ( napisze tekst lub przejdzie do innego miejsca )

Cytuj
1
- tu dajemy zawsze jedynke



Ok , ale jeśli chce aby NPC jedynie chodził lub tylko mówił ?

W takim wypadku w miejsce tekstu pisujemy null , czyli przykładowo :

(43, 888823, 1, 'null', 82718, 149312, -3471, 10, 1),
W tym wypadku NPC jedynie uda się do danej lokacji w odstępie 10 sekund



Ok , myślę , że wszystko jest w miarę zrozumiałe . Jeśli nie to proszę pisać w tym temacie . Co do NPC , których ruch lub to co powiedzą będzie uzależnione od różnych czynników ( np gdy ktoś uderzy NPC ) napiszę w późniejszym czasie , a więc spokojnie



Przygotował : Matim - Ja  :P

Pobierz : Click (Updated 12.07.09)

Jeżeli ktoś będzie miał błędy przy wgrywaniu pliku .sql ( a dokładnie błąd informujący o duplikacji NPC ID , powinien pozmieniać ID! ) Pliki pod L2JFree , jeśli ktoś chce to musi sobie trochę zmienić jeśli będą błędy na innych L2J'tach
« Ostatnia zmiana: Lipiec 12, 2009, 09:18:36 am wysłana przez Matim »


  • Wiadomości: 599

  • Pochwał: 11

    • www.xyberdesign.pl
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #1 dnia: Marzec 30, 2009, 10:05:57 pm »
Mógłbyś zuploadować na inny hosting, bo ostatnio mam problemy z RS

Cytuj
Your IP address 89.78.xx.xxx is already downloading a file. Please wait until the download is completed.

Najlepsze jest to, że nic nie ściągam ;)

I jest mały błąd w HTM masz napisane "codec" a powinno być chyba "code" :)
« Ostatnia zmiana: Marzec 30, 2009, 10:08:55 pm wysłana przez Xyber »


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #2 dnia: Marzec 30, 2009, 10:09:21 pm »
Proszę : Click

/edit . Ok dzięki za poprawkę  :P


  • Banned
  • Wiadomości: 84

  • Pochwał: -3

  • L2v Dev
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #3 dnia: Kwiecień 01, 2009, 11:34:31 pm »
Ładnie Matim, ale dlaczego taki spam ? nie lepiej delay 240 ?  :elf_5_3:

//offtop gdzie mozna te emoty dostac? ^^
Lineage 2 Enigma is coming, most epic polish server ever!


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #4 dnia: Kwiecień 02, 2009, 05:20:33 pm »
To tylko przykładowy NPC  :D Kto chce to sobie zmieni ( napisałem jak w pierwszym poście ) Ale chyba faktycznie masz racje , że trochę za często to dałem  :P


  • ********
  • Wiadomości: 1980

  • Pochwał: 57

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #5 dnia: Kwiecień 02, 2009, 05:26:12 pm »
Takiego często-mówiącego, to do jaila i niech regulamin krzyczy :D
Prepare for unforeseen consequences...


  • Wiadomości: 599

  • Pochwał: 11

    • www.xyberdesign.pl
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #6 dnia: Kwiecień 02, 2009, 05:45:52 pm »
Takiego często-mówiącego, to do jaila i niech regulamin krzyczy :D

Haha genialne xD


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #7 dnia: Kwiecień 02, 2009, 05:53:40 pm »
Nom , prosto takiego zrobić ( taki chyba jest na Passion , prawda ? ) W x/y/z wstawić null i robić teksty . Dobry pomysł  :D


  • *******
  • Wiadomości: 1866

  • Pochwał: 18

  • <3
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #8 dnia: Kwiecień 02, 2009, 06:01:43 pm »
Matim sry za offtop, ale Ty masz takiego neta w domu ? Btw. taki npc co wsadza do jaila to fany pomysł, oj fajny ;d

/Matim - ano taki  :D
« Ostatnia zmiana: Kwiecień 02, 2009, 06:04:27 pm wysłana przez Matim »
Sebal- Life ...

▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬

SHUT UP AND ENJOY THE MUSIC

▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬


  • ********
  • Wiadomości: 1980

  • Pochwał: 57

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #9 dnia: Kwiecień 02, 2009, 06:02:04 pm »
Mhm. Żeby nie było, że to mój pomysł. W każdym razie strasznie wkurza ;)
Prepare for unforeseen consequences...


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #10 dnia: Kwiecień 05, 2009, 09:23:27 pm »
Link poprawiony , brakowało linijek w pliku .sql .

Pobierz
« Ostatnia zmiana: Lipiec 12, 2009, 09:18:59 am wysłana przez Matim »


  • Wiadomości: 29

  • Pochwał: 1

  • 666
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #11 dnia: Styczeń 22, 2010, 06:57:24 pm »
Proszę o nowy link ( tylko nie Rapid ) do pliku


  • Wiadomości: 3

  • Pochwał: 0

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #12 dnia: Styczeń 23, 2010, 12:43:07 pm »
« Ostatnia zmiana: Styczeń 23, 2010, 12:50:41 pm wysłana przez space »


  • Wiadomości: 56

  • Pochwał: 1

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #13 dnia: Styczeń 23, 2010, 01:06:52 pm »
a da sie zrobić żeby taki npc przeskakiwał z miasta do miasta, w każdym biegał po określonych ścieżkach przez pół godziny i tp do nastpępnego?


  • Banned
  • Wiadomości: 84

  • Pochwał: -3

  • L2v Dev
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #14 dnia: Styczeń 23, 2010, 02:00:08 pm »
Postaw npcki w miastach beda krzyczec zeby glosowali w kazdym z miast
@ Matim z tego co ja pamietam ten npc ktorego tutaj przedstawiles z " Coded by Matim " zostal dawno temu napisany przez kogos z for l2jfree, nice credit stealing  :dw_3_2:
package ai.individual;

import java.util.Calendar;
import java.util.List;
import javolution.util.FastList;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.instancemanager.TownManager;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.Quest;
import net.sf.l2j.gameserver.model.zone.type.L2TownZone;
import net.sf.l2j.gameserver.network.clientpackets.Say2;
import net.sf.l2j.gameserver.network.serverpackets.NpcSay;
import net.sf.l2j.util.Rnd;

public class VoteNpc extends Quest

{
private static final int VoteNpc_GLUDIO = 9999991; // Gludio
private static final int VoteNpc_DION = 9999992; // Dion
private static final int VoteNpc_GIRAN = 9999993; // Giran
private static final int VoteNpc_OREN = 9999994; // Oren
private static final int VoteNpc_ADEN = 9999995; // Aden
private static final int VoteNpc_INNADRIL = 9999996; // Innadril
private static final int VoteNpc_GODDARD = 9999997; // Goddard
private static final int VoteNpc_RUNE = 9999998; // Rune
private static final int VoteNpc_SCHUTTGART = 9999999; // Schuttgart

List<L2Npc> _npcs = new FastList<L2Npc>();

private static final String[] dlog =
{
"Vote for our server!"
};

public VoteNpc(int questId, String name, String descr)
{
super(questId, name, descr);

// Register Events
addEventId(VoteNpc_GLUDIO, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_DION, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_GIRAN, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_OREN, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_ADEN, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_INNADRIL, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_GODDARD, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_RUNE, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_SCHUTTGART, Quest.QuestEventType.ON_SPAWN);

scheduleBroadcast();
}

@Override
public String onSpawn(L2Npc npc)
{
if (!_npcs.contains(npc))
_npcs.add(npc);

return super.onSpawn(npc);
}

private void scheduleBroadcast()
{
Calendar cal = Calendar.getInstance();
int tfhTime = cal.get(Calendar.HOUR_OF_DAY);
long currTime = tfhTime*3600000 + cal.get(Calendar.MINUTE)*60000 +
cal.get(Calendar.SECOND)*1000 + cal.get(Calendar.MILLISECOND);

long nextTime = 0;
if ((tfhTime + 1) > 24) nextTime = 6900000;
else if (cal.get(Calendar.MINUTE) < 55) nextTime = tfhTime*3600000 + 3300000;
else nextTime = (tfhTime + 1)*3600000 + 3300000;
long initial = nextTime-currTime;
  ThreadPoolManager.getInstance().
scheduleGeneralAtFixedRate(new BroadcastToZone(), initial, 3600000L);

}

  public static void main(String[] args)

    {
new VoteNpc(-1,"VoteNpc","ai");

    }

  class BroadcastToZone implements Runnable
{
@Override
public void run()
{
for (L2Npc npc : _npcs)
{
if (npc != null)
{
if (Config.DEBUG)
_log.info("Broadcasting VoteNpc Message to Zone");
 
int dg = Rnd.get(0, 2);

NpcSay ns = new NpcSay(npc.getObjectId(), Say2.SHOUT, npc.getNpcId(), dlog[dg]);
 
L2TownZone town = TownManager.getTown(npc.getX(), npc.getY(), npc.getZ());
{
if (town.getCharactersInside() != null && !town.getCharactersInside().isEmpty())

{
for (L2Character obj : town.getCharactersInside().values())
{
if (obj == null)
continue;
if (obj instanceof L2PcInstance)
obj.sendPacket(ns);
}
}
}
}
}
}
}
}
« Ostatnia zmiana: Styczeń 23, 2010, 02:02:24 pm wysłana przez Maniac »
Lineage 2 Enigma is coming, most epic polish server ever!


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #15 dnia: Styczeń 23, 2010, 02:27:32 pm »
Postaw npcki w miastach beda krzyczec zeby glosowali w kazdym z miast
@ Matim z tego co ja pamietam ten npc ktorego tutaj przedstawiles z " Coded by Matim " zostal dawno temu napisany przez kogos z for l2jfree, nice credit stealing  :dw_3_2:
package ai.individual;

import java.util.Calendar;
import java.util.List;
import javolution.util.FastList;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.instancemanager.TownManager;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.Quest;
import net.sf.l2j.gameserver.model.zone.type.L2TownZone;
import net.sf.l2j.gameserver.network.clientpackets.Say2;
import net.sf.l2j.gameserver.network.serverpackets.NpcSay;
import net.sf.l2j.util.Rnd;

public class VoteNpc extends Quest

{
private static final int VoteNpc_GLUDIO = 9999991; // Gludio
private static final int VoteNpc_DION = 9999992; // Dion
private static final int VoteNpc_GIRAN = 9999993; // Giran
private static final int VoteNpc_OREN = 9999994; // Oren
private static final int VoteNpc_ADEN = 9999995; // Aden
private static final int VoteNpc_INNADRIL = 9999996; // Innadril
private static final int VoteNpc_GODDARD = 9999997; // Goddard
private static final int VoteNpc_RUNE = 9999998; // Rune
private static final int VoteNpc_SCHUTTGART = 9999999; // Schuttgart

List<L2Npc> _npcs = new FastList<L2Npc>();

private static final String[] dlog =
{
"Vote for our server!"
};

public VoteNpc(int questId, String name, String descr)
{
super(questId, name, descr);

// Register Events
addEventId(VoteNpc_GLUDIO, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_DION, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_GIRAN, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_OREN, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_ADEN, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_INNADRIL, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_GODDARD, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_RUNE, Quest.QuestEventType.ON_SPAWN);
addEventId(VoteNpc_SCHUTTGART, Quest.QuestEventType.ON_SPAWN);

scheduleBroadcast();
}

@Override
public String onSpawn(L2Npc npc)
{
if (!_npcs.contains(npc))
_npcs.add(npc);

return super.onSpawn(npc);
}

private void scheduleBroadcast()
{
Calendar cal = Calendar.getInstance();
int tfhTime = cal.get(Calendar.HOUR_OF_DAY);
long currTime = tfhTime*3600000 + cal.get(Calendar.MINUTE)*60000 +
cal.get(Calendar.SECOND)*1000 + cal.get(Calendar.MILLISECOND);

long nextTime = 0;
if ((tfhTime + 1) > 24) nextTime = 6900000;
else if (cal.get(Calendar.MINUTE) < 55) nextTime = tfhTime*3600000 + 3300000;
else nextTime = (tfhTime + 1)*3600000 + 3300000;
long initial = nextTime-currTime;
  ThreadPoolManager.getInstance().
scheduleGeneralAtFixedRate(new BroadcastToZone(), initial, 3600000L);

}

  public static void main(String[] args)

    {
new VoteNpc(-1,"VoteNpc","ai");

    }

  class BroadcastToZone implements Runnable
{
@Override
public void run()
{
for (L2Npc npc : _npcs)
{
if (npc != null)
{
if (Config.DEBUG)
_log.info("Broadcasting VoteNpc Message to Zone");
 
int dg = Rnd.get(0, 2);

NpcSay ns = new NpcSay(npc.getObjectId(), Say2.SHOUT, npc.getNpcId(), dlog[dg]);
 
L2TownZone town = TownManager.getTown(npc.getX(), npc.getY(), npc.getZ());
{
if (town.getCharactersInside() != null && !town.getCharactersInside().isEmpty())

{
for (L2Character obj : town.getCharactersInside().values())
{
if (obj == null)
continue;
if (obj instanceof L2PcInstance)
obj.sendPacket(ns);
}
}
}
}
}
}
}
}

Jak zwykle poinformowany Maniaczek ;) To nie jest zrobione w javie jako AI lub Instancja, to jest jedynie walker routes czy jak tam to zwą.


  • Banned
  • Wiadomości: 84

  • Pochwał: -3

  • L2v Dev
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #16 dnia: Styczeń 23, 2010, 02:57:45 pm »
ta, i tego npcka napisal jakis nub na forach l2jfree
Lineage 2 Enigma is coming, most epic polish server ever!


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #17 dnia: Styczeń 23, 2010, 04:09:12 pm »
Lol Maniac, nie mam do Ciebie słów powoli. Kopiować 1 htmla i kilka linijek sql, tak to daje mega satysfakcje, jeżeli coś jest podobne do czegoś innego to od razu jest skopiowane? (zwłaszcza takie gówno, które zrobić może każdy)



  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #18 dnia: Styczeń 23, 2010, 04:18:09 pm »
Maniac to prostak i nuub - nie przejmuj sie nim, lubi sobie popeirdolic


  • Banned
  • Wiadomości: 84

  • Pochwał: -3

  • L2v Dev
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #19 dnia: Styczeń 24, 2010, 12:53:55 am »
nub napisal program kiedy ty na gowno mowiles papu
Lineage 2 Enigma is coming, most epic polish server ever!


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #20 dnia: Styczeń 24, 2010, 01:00:48 am »
nub napisal program kiedy ty na gowno mowiles papu

Zaczyna sie flame - lov it! ;p



  • Banned
  • Wiadomości: 84

  • Pochwał: -3

  • L2v Dev
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #21 dnia: Styczeń 24, 2010, 01:09:32 am »
:*
Lineage 2 Enigma is coming, most epic polish server ever!


  • Wiadomości: 50

  • Pochwał: 5

    • kompania obrony wybrzeża ASG
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #22 dnia: Styczeń 24, 2010, 01:32:48 am »
Maniac bez urazy ale żeś się przy* :oops: obudził z tym marudzeniem o "coded by matim"... ten npc tu od marca wisi a nagle Ci to teraz przeszkadza... równie dobrze możesz iść na plac zabaw i oskarżyć dzieci o plagiat bo bałwana zrobiły...
WWW.KOMPANIA-OW.XORG.PL
ASG to nie tylko zabawa- to sposób życia


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #23 dnia: Styczeń 24, 2010, 02:41:37 am »
:*

^^

Maniac bez urazy ale żeś się przy* :oops: obudził z tym marudzeniem o "coded by matim"... ten npc tu od marca wisi a nagle Ci to teraz przeszkadza... równie dobrze możesz iść na plac zabaw i oskarżyć dzieci o plagiat bo bałwana zrobiły...

Ty to wszystko zepsujesz, a taka drame mialem


  • Wiadomości: 50

  • Pochwał: 5

    • kompania obrony wybrzeża ASG
Odp: [Dzielę Pliki]Vote NPC
« Odpowiedź #24 dnia: Styczeń 24, 2010, 12:53:14 pm »
tak tak maslan też Cie kocham (wkurzać) :P
WWW.KOMPANIA-OW.XORG.PL
ASG to nie tylko zabawa- to sposób życia