Jump to content

[Erledigt] PcWalkTo


Shikka

Recommended Posts


  • Group:  Members
  • Topic Count:  6
  • Topics Per Day:  0.00
  • Content Count:  33
  • Reputation:   2
  • Joined:  04/16/12
  • Last Seen:  

Hi,

Ich würde gerne im src einbauen, dass man per npc-klick, automatisch läuft.

Sowas wie NPCWalkTo halt, nur, dass sich nicht der Npc bewegt, sondern der Spieler.

Wäre das überhaupt möglich?

Hab schon ein wenig im src rumgeschraubt, hat aber bisher nicht geklappt

Hab's mit ner kopie von NPCWalkTo versucht und auf den pc abgeändert, hat aber nicht geklappt.

Hab's aber auch garantiert falsch gemacht xD

Wäre echt super, wenn mir da jemand helfen könnte.

(Wäre für ne Stadt-rundschau gedacht.

damit man die Stadt automatisch kennen lernt.)

Danke im vorraus

Bisheriger versuch:

Script.c

BUILDIN_FUNC(pcwalkto)
{
struct pc_data *pd=(struct pc_data *)map_id2bl(st->oid);
int x=0,y=0;
x=script_getnum(st,2);
y=script_getnum(st,3);
if(pd) {
 unit_walktoxy(&pd->bl,x,y,0);
}
return 0;
}

PC.C

struct pc_data {
struct block_list bl;
struct unit_data  ud; //Because they need to be able to move....
struct view_data *vd;
struct status_change sc; //They can't have status changes, but.. they want the visual opt values.
struct npc_data *master_nd;
short class_;
short speed;
char name[NAME_LENGTH+1];// display name
char exname[NAME_LENGTH+1];// unique npc name
int chat_id;
int touching_id;
unsigned int next_walktime;

unsigned size : 2;

void* chatdb; // pointer to a npc_parse struct (see npc_chat.c)
enum npc_subtype subtype;
int src_id;
union {
	struct {
		struct script_code *script;
		short xs,ys; // OnTouch area radius
		int guild_id;
		int timer,timerid,timeramount,rid;
		unsigned int timertick;
		struct npc_timerevent_list *timer_event;
		int label_list_num;
		struct npc_label_list *label_list;
	} scr;
	struct {
		struct npc_item_list* shop_item;
		int count;
	} shop;
	struct {
		short xs,ys; // OnTouch area radius
		short x,y; // destination coords
		unsigned short mapindex; // destination map
	} warp;
} u;
};

Grobe NPC vorlage:

prontera,100,100,4	script	Rundführer	113,{
setmounting();
pcblockmove getcharid(3),1;
pcwalkto 300,300;
sleep2 20000;
pcblockmove getcharid(3),0;
}

(auch schon ohne blockmove getestet)

Edited by Shikka
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  6
  • Topics Per Day:  0.00
  • Content Count:  33
  • Reputation:   2
  • Joined:  04/16/12
  • Last Seen:  

solved:

okay, funktioniert doch =D

set .@GID,getcharid(3);

unitwalk .@GID,102,102;

unitwalk .@GID,300,300;

ging nicht, weil das der rand der map ist und nicht begehbar ist.

neues problem -> das laufen kann per klick auf ein feld unterbrochen werden =(

das find ich jetzt blöd

edit:

hat sich auch erledigt

PCFollow getcharid(3),getnpcid(0); <-- spieler folgt dem npc

---------------------

hmm... die möglichkeit funktioniert leider nicht, gerade getestet

geht der pcfollow befehl nicht nur auf andere spieler?

-> Makes a character follow or stop following someone. This command does the same as the @follow command.

The main difference is that @follow can use character names, and this commands needs the Account ID for the target.

(dürfte also nur auf spieler gehen - fällt somit auch weg)

aber danke für den versuch und die schnelle antwort ^^

Edited by Shikka
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  22
  • Topics Per Day:  0.00
  • Content Count:  764
  • Reputation:   220
  • Joined:  11/14/11
  • Last Seen:  

Wieso adaptierst du nicht einfach den Code von UnitWalk()?

Und zu deinem Versuch:

1.

Ich bin kein Core developer, was ich sage muss also nicht stimmen. :D

2.

Wieso castest du zuerst eine BlockList als pc_data um dann später wieder auf die BlockList eben dieser pc_data zuzugreifen, wär es nicht sinnvoller/einfacher direkt map_id2bl(st->oid) in UnitWalkXY() zu nutzen?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  6
  • Topics Per Day:  0.00
  • Content Count:  33
  • Reputation:   2
  • Joined:  04/16/12
  • Last Seen:  

@Masao

Ja, bei mir funktionieren auch beide commands, aber beim ersten (UnitWalk) kannst du mit der Maus das laufen unterbrechen und somit läuft dein Char nicht automatisch weiter zum Ziel.

Beim PcFollow kannst du dich nicht weit vom Npc entfernen (sonst gibt's nen auto-port zu ihm). Das ich den Npc dafür dort hinlaufen lassen muss, wo der Char hin soll, ist mir bewusst, es geht aber einwandfrei :D

@Kenpachi

Ich hab die Src edits, komplett wieder raus genommen. ^^

Funktioniert auch ohne.

Ich kenn mich mit den Sourcen zu wenig aus.

Ich freu mich gerade drüber, dass alles klappt, wie ich's wollte :D

Danke aufjedenfall nochmals /omg

Edited by Shikka
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...