Shikka Posted April 18, 2012 Group: Members Topic Count: 6 Topics Per Day: 0.00 Content Count: 33 Reputation: 2 Joined: 04/16/12 Last Seen: June 11, 2021 Share Posted April 18, 2012 (edited) 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 April 19, 2012 by Shikka Quote Link to comment Share on other sites More sharing options...
Shikka Posted April 18, 2012 Group: Members Topic Count: 6 Topics Per Day: 0.00 Content Count: 33 Reputation: 2 Joined: 04/16/12 Last Seen: June 11, 2021 Author Share Posted April 18, 2012 (edited) 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 April 19, 2012 by Shikka Quote Link to comment Share on other sites More sharing options...
Kenpachi Posted April 19, 2012 Group: Members Topic Count: 22 Topics Per Day: 0.00 Content Count: 764 Reputation: 220 Joined: 11/14/11 Last Seen: November 19, 2020 Share Posted April 19, 2012 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. 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? Quote Link to comment Share on other sites More sharing options...
Shikka Posted April 19, 2012 Group: Members Topic Count: 6 Topics Per Day: 0.00 Content Count: 33 Reputation: 2 Joined: 04/16/12 Last Seen: June 11, 2021 Author Share Posted April 19, 2012 (edited) @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 @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 Danke aufjedenfall nochmals Edited April 19, 2012 by Shikka Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.