|
|
 |
 |
 |
 |
|
 |
 |
|
 |
 |
|
 |
|
Quests::Q&A This is the quest support section |

03-17-2008, 04:40 PM
|
Sarnak
|
|
Join Date: Feb 2008
Posts: 72
|
|
Wow, was it just the word Appearance in all of the code? I really suck at spelling, wow I can't believe it. Where there any other errors in the code? I really do want to learn what I did wrong as I plan to do many quest scripts in the future.
|

03-17-2008, 09:26 PM
|
Discordant
|
|
Join Date: May 2006
Posts: 356
|
|
Quote:
Originally Posted by Ut0pia
Wow, was it just the word Appearance in all of the code? I really suck at spelling, wow I can't believe it. Where there any other errors in the code? I really do want to learn what I did wrong as I plan to do many quest scripts in the future.
|
It turned out to be a little bit more than that. Appearance was causing the Hail's to not work, but Platinum was also misspelled. Check out the differences in sub EVENT_ITEM area to see where I made other changes.
__________________
Random Segments of Code....
|
 |
|
 |

03-17-2008, 11:21 PM
|
Sarnak
|
|
Join Date: Feb 2008
Posts: 72
|
|
Yeah, I figured that out after I posted the original scripts.
Well now that my scripts work, I want to take it a little further.
My mindbender script works very nicely, except for the fact that when you hail her, she responds to her own name. Since bend is a trigger, when she says something and since her name has the word bend in it, is there a way to script a trigger that says if something is said && player said it? I also run into this same problem with the soulbinders. Which is why I can't use "bind: as a trigger unless I change their names.
I also wanted to ask another question, but I honestly can't remember what it was, so I'll just ask it later.
Also I wanted to give credit where it is deserved. Aramid thanks a lot for correcting my scripts so that all I had to do was copy and paste. GeorgeS also helped out by helping me getting his script editor to work so I can check my syntax. But although it's not obvious here on this post, leslamarch helped me out a lot by explaining to me the uses of elsif's through private messages. He almost had both my scripts completely correctly, but Aramid beat him to it.
|
 |
|
 |
 |
|
 |

03-18-2008, 12:14 AM
|
Dragon
|
|
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
|
|
I have a script similar to that. I turned my girlfriend into an NPC vendor on our server, and have her use custom sayings for everyone on our server (all friends) who come up to her:
Code:
sub EVENT_SAY {
if($text =~ /hail/i && $name =~ /Greenmistlolz/) {
quest::say("You're so scaly! <3");
}
elsif($text =~ /hail/i && $name =~ /Tissirja/) {
quest::say("My favorite cleric! <3");
}
elsif($text =~ /hail/i && $name =~ /Chinc/) {
quest::say("Haha. You're hung like a five year old. Go back to playing Starcraft, we all hate you.");
}
elsif($text =~ /hail/i && $name =~ /Mabey/) {
quest::say("Either step away from me, or I'm going to Rambo your throat.");
}
elsif($text =~ /hail/i && $name =~ /Snacko/) {
quest::say("You're a tiny troll Jesus. Best shaman evar <3'");
}
elsif($text =~ /hail/i && $name =~ /Panthro/) {
quest::say("A black panther? You effing racist.");
}
elsif($text =~ /hail/i) {
quest::say("Welcome to the Order of Hasson server, how can I help you today?");
}
}
sub EVENT_ITEM {
if(($platinum==1) && ($gold==3) && ($silver==3) && ($copper==7)) {
quest::selfcast(6593);
quest::say("Hehe, enjoy!");
}
else{
quest::say("What the hell am I supposed to do with that? Take it back. And get away from me, freak!");
plugin::return_items(\%itemcount);
}
}
#Submitted by Jim Mills
Edited out a few of the more harshly worded ones :P
She has a basic hail that works for anyone, and then customized ones that work for anyone with a specific name. Hope this gets you on the right track.
|
 |
|
 |
 |
|
 |

03-18-2008, 12:46 AM
|
Sarnak
|
|
Join Date: Feb 2008
Posts: 72
|
|
Yeah, but sadly that script is for specific players. But after looking at your script, it gave me an idea. This would work as long as $name can't be used for an npc name. I wonder if this would work and thus would allow the words like bend work in my script.
Code:
sub EVENT_SAY {
if($text =~ /hail/i && $name =~ $name) {
quest::say("I'm a stupid NPC");
It's it is doing is hail and then checking name to equal name. Well, the only way to know if this word work is a stronger understanding of the code which I lack. So yeah, I definitely have a lot more questions including the one I forgot earilier. So here they go.
1. Can $name =~ $name be used to check to make sure it's a player name and not an npc name?
2. What does ~ tell the script to do?
3. What does /i tell the script to do?
4. When you update a script, will the new script work right away without doing anything to the server? Or do you have to #repop, restart the zone, or do you always have to restart the server?
5. When you add a new npc to the database, to have him spawn, do you have to #repop, restart the zone, or do you always have to restart the server?
6. When you change specific values in a table regarding a specific npc, again, when do the changes take affect?
Well there they are, I'm asking those last three b/c it's a real pain in the butt to restart my server. I could always just figure them out on my own through trial and error. However, if someone knows that would be great, in addition, I'm a bit weary of such trial and error as the last time I did that, I somehow screwed up my server and caused my zone.exe to crash everytime someone connected. And to this day, i have no idea what I did.
|
 |
|
 |
 |
|
 |

03-18-2008, 01:22 AM
|
Dragon
|
|
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
|
|
Admittedly, I skimmed your post. Was checking the forums real quick before leaving for work. Saw this:
Quote:
... is there a way to script a trigger that says if something is said && player said it?
|
And replied. I see what you're meaning now.
1. Can $name =~ $name be used to check to make sure it's a player name and not an npc name?
Haven't tested, but that seems to be your idea, and it seems like it should work just fine. You'll have to give it a shot. However, keep reading through this post, and you might see where it's unnecessary.
2. What does ~ tell the script to do?
3. What does /i tell the script to do?
Quote:
Note the /i. This means it is case insensitive. It is always better to include this.
$text =~/Hello/ - Would match "Hello", but not "hello".
$text =~/hello/ - Would match "hello", but not "Hello".
$text =~/hello/i - Would match "Hello" and "hello".
$text =~/me/ - Would match the "me" in name.
$text =~/\bme\b/ - Would not match the "me" in name. The "\b" means there must not be text next to the match so "me" must be by itself.
$text =~/^me$/i - Would only match if me is the only text said. The "^" tells it it must be the first thing said and the "$" tells it it must be the last thing.
|
4. When you update a script, will the new script work right away without doing anything to the server? Or do you have to #repop, restart the zone, or do you always have to restart the server?
5. When you add a new npc to the database, to have him spawn, do you have to #repop, restart the zone, or do you always have to restart the server?
6. When you change specific values in a table regarding a specific npc, again, when do the changes take affect?
Quote:
Originally Posted by Cavedude
Changes to items, loot, spells, and factions in anyway require a full server reboot.
Creating new spawns, adding doors/objects, changing merchantlists, and some quests in addition to #reloadqst also require a zone reboot.
Changing/creating NPCs only require a #repop. This includes changing their faction/loot/spell id, provided the new ID already exists and doesn't need to be created.
Most quests only require a #reloadpl, though ones that use a lot of globals or user defined variables often require a zone shutdown in addition. Thelin Poxbourne and the Nexus port scripts are two examples.
Just about everything else can be done on the fly, or has a command that does so.
|
And just a final thought, but is "bend" really causing him to only reply to his hail script? The trigger for that is the "hail" portion, not his name.
Last edited by So_1337; 03-18-2008 at 09:25 AM..
|
 |
|
 |

03-18-2008, 01:53 AM
|
Sarnak
|
|
Join Date: Feb 2008
Posts: 72
|
|
I had the same problem with the soulbinder. I did a script for her, but when you hailed her, she would automatically bind your soul because the trigger for binding your soul was the word "bind". When she gave her trigger for "hail", it picked up the word "bind" in her name.
Same issue is happening with my Illusionist_Mindbender. You hail her and the trigger is "hail" She says what she needs to but then the say command "bend" is triggered because she just talked and she has the word "bend" in her name.
This is why I want to try the $name =~ $name to see if $name is for players only and not npcs. Adding that as to the if statement would allow the script to check to see if it's a player saying the word and not an npc.
However, if that does not work, the alternative would be slightly editing the NPCs name so that the word Mindbender would become MindBender. Thus the case sensitive bend would not be picked up. 
|
Thread Tools |
|
Display Modes |
Hybrid Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 06:22 AM.
|
|
 |
|
 |
|
|
|
 |
|
 |
|
 |