Jump to content

Recommended Posts

Posted

Guten Abend.

Wie kann ich einem NPC sagen das er eine ID Range abchecken soll?

Es geht darum, ich würde gernen einen NPC schreiben der die Card Range abfragte also von 4001 - 4453 und erkennt ob ich eines dieser ID Range im Inventar habe, oder 2 oder mehr, egal wie viele.

Also ich spreche den NPC an und er fragt mich ob ich meine Cards gegen punkte eintauschen will würde heißen 1 Card = 1 Punkt 2 Cards = 2 Punkte usw.

Der NPC müsste als erkennen ob und wie viele Cards ich besitze und diese löschen, wenn ich sage ich möschte meine Cards eintauschen. Das ganze soll natürlich nur für Cards gelten die im Inventar liegen, nicht im EQ.

Kann mir jemand netterweise ein kleines beispiel schreiben wie ich das anstelle?

Posted

Card Trader verkauft Cards, das ist nicht das was ich suche.

Zum Link den du geschickt hast, der hilft mir nicht da der NPC ja nur Coins tauscht. Ich könnte wohl jede Card die es gibt in ein fi countitem eintragen, aber das ist mühselig, Ich suche eine möglichkeit wie der NPC mit bzw if countitem einen ID bereich abfragen kann...

Posted (edited)

Hier der wichtigste Teil von so einem Script.

//- Prüfen ob der Spieler Cards bei sich hat (ID Range 4000 - 4700)
getinventorylist;
set @amount, 0; //- Um Bugs zu vermeiden
for (set .@i, 0; .@i < @inventorylist_count; set .@i, .@i +1){
 if (@inventorylist_id[.@i] > 4000 && @inventorylist_id[.@i] < 4700){
  set @amount, @amount +@inventorylist_amount[.@i];
 }
}
//- Sollte der Spieler keine Cards bei haben
if (!@amount){
 mes "Keine Cards dabei.";
 close;
}
//- Anzeige was für Cards der Spieler bei sich hat und in welcher Menge
mes "Du hast folgende Karten in deinem Inventory:";
set @points, 0; //- Um Bugs zu vermeiden
for (set .@i, 0; .@i < @inventorylist_count; set .@i, .@i +1){
 if (@inventorylist_id[.@i] > 4000 && @inventorylist_id[.@i] < 4700){
set @points, @points +@inventorylist_amount[.@i] *$Card_PTS;
mes "^FF0000"+countitem(@inventorylist_id[.@i])+"x "+getitemname(@inventorylist_id[.@i])+"^000000";
 }
}
//- Löschen der Cards aus dem Inventar
for (set .@i, 0; .@i < @inventorylist_count; set .@i, .@i +1){
 if (@inventorylist_id[.@i] > 4000 && @inventorylist_id[.@i] < 4700){
  delitem @inventorylist_id[.@i], @inventorylist_amount[.@i];
 }
}
//- Punkte vergabe oder sonst irgendwas als Belohnung für die Abgabe der Cards
set #CARDPOINTS, #CARDPOINTS +@points;

Den Rest wie z.B. Texte und wo der NPC stehen soll, darfst du dir überlegen.

Edited by Hismoon
Posted (edited)

Ehm Card Trader verkauft keine Cards sondern tauscht Cards gegen Punkte oder sonst was xD.

Kannst von mir aus ihn Umbennenen in "Card Exchanger".

Naja aber Hismoon hat dir ja ne Einleitung geschickt.

Gut gemacht Benny xD!

Edited by May
Posted (edited)

Hier habe den NPC endlich gefunden http://www.eathena.ws/board/index.php?act=attach&type=post&id=2945

Das ist im übrigen der NPC den ich eigentlich suche... http://forums.irowik...ead.php?t=14054

Also ich habe das jetztmal zum teste so gemacht:

prontera,152,195,5 script Card Converter 97,{
mes "[Card Converter]";
mes "Wie kann ich dir helfen?";
menu "Cards eintauschen",card_t;
card_t:
next;
mes "[Card Converter]";
//- Prüfen ob der Spieler Cards bei sich hat (ID Range 4000 - 4700)
getinventorylist;
set @amount, 0; //- Um Bugs zu vermeiden
for (set .@i, 0; .@i < @inventorylist_count; set .@i, .@i +1){
if (@inventorylist_id[.@i] > 4000 && @inventorylist_id[.@i] < 4700){
set @amount, @amount +@inventorylist_amount[.@i];
}
}
//- Sollte der Spieler keine Cards bei haben
if (!@amount){
 mes "Du hast keine Karten dabei";
 close;
}
//- Anzeige was für Cards der Spieler bei sich hat und in welcher Menge
mes "Du hast folgende Karten in deinem Inventory:";
mes "Willst du sie tauschen?";
set @points, 0; //- Um Bugs zu vermeiden
for (set .@i, 0; .@i < @inventorylist_count; set .@i, .@i +1){
if (@inventorylist_id[.@i] > 4000 && @inventorylist_id[.@i] < 4700){
set @points, @points +@inventorylist_amount[.@i] *$Card_PTS;
mes "^FF0000"+countitem(@inventorylist_id[.@i])+"x "+getitemname(@inventorylist_id[.@i])+"^000000";
next;
menu "Ja",ja,"Nein",nein;
}
}
ja:
next;
mes "[Card Converter]";
//- Löschen der Cards aus dem Inventar
for (set .@i, 0; .@i < @inventorylist_count; set .@i, .@i +1){
if (@inventorylist_id[.@i] > 4000 && @inventorylist_id[.@i] < 4700){
delitem @inventorylist_id[.@i], @inventorylist_amount[.@i];
}
}
//- Punkte vergabe oder sonst irgendwas als Belohnung für die Abgabe der Cards
set #CARDPOINTS, #CARDPOINTS +@points;
close;
nein:
close;
}

Das ganze Funktioniert auch richtig.

zwei Fragen bleiber aber offen.

1. Wo merkt der NPC sich wie viele Punkter der einzelne Spieler hat, da sie im SQL nicht zu finden sind.

2. Wie lasse ich den NPC anzeigen wie viele Punkte der Spieler hat?

Edited by Pysk
Posted (edited)

zwei Fragen bleiber aber offen.

1. Wo merkt der NPC sich wie viele Punkter der einzelne Spieler hat, da sie im SQL nicht zu finden sind.

2. Wie lasse ich den NPC anzeigen wie viele Punkte der Spieler hat?

1. global_reg_value

2. mes " " + #CARDPOINTS + " ";

Wenn das ne Quiz Frage war /ok

Edited by InnosTM

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...