Item-Kombination #1177
Kombinationsgröße: 2
Kombinationsgegenstände
Immaterial_Sword_IL
Cape_Of_Ancient_Lord_IL
Kombinationseffekt
if (BaseJob == Job_Rogue) {
.@weapon = getequiprefinerycnt(EQI_HAND_R);
.@eq = getequiprefinerycnt(EQI_GARMENT);
.@val = 100;
if (.@weapon >= 7 && .@eq >= 7) {
.@val += 50;
}
bonus bMatk,.@val;
if ((.@weapon + .@eq) >= 18) {
bonus3 bAutoSpell,"MG_COLDBOLT",3,50;
bonus3 bAutoSpell,"MG_FIREBOLT",3,50;
bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,50; /* fix me: unknown skill lvl/rates */
}
if ((.@weapon + .@eq) >= 22) {
autobonus "{ bonus2 bSkillAtk,\"WZ_STORMGUST\",30; bonus2 bSkillAtk,\"WZ_METEOR\",30; bonus2 bSkillAtk,\"WZ_VERMILION\",30; bonus2 bSkillAtk,\"WZ_HEAVENDRIVE\",30; }",20,10000; /* fix me: unknown rate/specialeffect (if any) */
}
}
Skriptreferenzen
if
Befehl
if
Signatur:
if (<condition>) <statement>;
Beschreibung:
This is the basic conditional statement command, and just about the only one
available in this scripting language.
The condition can be any expression. All expressions resulting in a non-zero
value will be considered True, including negative values. All expressions
resulting in a zero are false.
If the expression results in True, the statement will be executed. If it isn't
true, nothing happens and we move on to the next line of the script.
For more information on conditional operators see the operators section above.
bothering to store it in a specific variable:
More examples of using the 'if' command in the real world:
Example 1:
Example 2:
Notice that examples 1 and 2 have the same effect.
Example 3:
Example 4:
Example 5:
See 'strcharinfo' for an explanation of what this function does.
Example 6: Using complex conditions.
The script engine also supports nested 'if' statements:
If the condition isn't met, it'll do the action following the 'else'.
We can also group several actions depending on a condition:
Remember that if you plan to do several actions upon the condition being false, and
you forget to use the curly braces (the { } ), the second action will be executed regardless
the output of the condition, unless of course, you stop the execution of the script if the
condition is true (that is, in the first grouping using a return; , and end; or a close; )
Also, you can have multiple conditions nested or chained.
Beispiel:
if (1) mes "This will always print.";
if (0) mes "And this will never print.";
if (5) mes "This will also always print.";
if (-1) mes "Funny as it is, this will also print just fine.";
if (strcharinfo(0) == "Daniel Jackson") mes "It is true, you are Daniel!";
.@answer = 1;
input .@input;
if (.@input == .@answer)
close;
mes "Sorry, your answer is incorrect.";
close;
.@answer = 1;
input .@input;
if (.@input != .@answer)
mes "Sorry, your answer is incorrect.";
close;
.@count++;
mes "[Forgetful Man]";
if (.@count == 1) mes "This is the first time you have talked to me.";
if (.@count == 2) mes "This is the second time you have talked to me.";
if (.@count == 3) mes "This is the third time you have talked to me.";
if (.@count == 4) {
mes "This is the fourth time you have talked to me.";
mes "I think I am getting amnesia, I have forgotten about you...";
.@count = 0;
}
close;
mes "[Quest Person]";
if (countitem(512) < 1) { // 512 is the item ID for Apple, found in db/item_db.yml
mes "Can you please bring me an apple?";
close;
}
mes "Oh, you brought an Apple!";
mes "I didn't want it, I just wanted to see one.";
close;
mes "[Person Checker]";
if ($@name$ == "") { // global variable not yet set
mes "Please tell me someones name";
next;
input $@name$;
$@name2$ = strcharinfo(0);
mes "[Person Checker]";
mes "Thank you.";
close;
}
if ($@name$ == strcharinfo(0)) { // player name matches $@name$
mes "You are the person that " + $@name2$ + " just mentioned.";
mes "Nice to meet you!";
// reset the global variables
$@name$ = "";
$@name2$ = "";
close;
}
mes "You are not the person that " + $name2$ + " mentioned.";
close;
mes "[Multiple Checks]";
if (@queststarted == 1 && countitem(512) >= 5) {
mes "Well done, you have started the quest and brought me 5 Apples.";
@queststarted = 0;
delitem 512,5;
close;
}
mes "Please bring me 5 apples.";
@queststarted = 1;
close;
if (<condition>)
dothis;
else
dothat;
if (<condition>) {
dothis1;
dothis2;
} else {
dothat1;
dothat2;
dothat3;
}
if (<condition 1>)
dothis;
else if (<condition 2>) {
dothat;
end;
} else
dothis;
getequiprefinerycnt
Befehl
getequiprefinerycnt
Signatur:
getequiprefinerycnt(<equipment slot>{,<char_id>})
Beschreibung:
slot. For a list of equipment slots see 'getequipid'.
Can be used to check if you have reached a maximum refine value, default for
this is +10:
Beispiel:
if (getequiprefinerycnt(EQI_HEAD_TOP) < 10)
mes "I will now upgrade your " + getequipname(EQI_HEAD_TOP);
else
mes "Sorry, it's not possible to refine hats better than +10";
close;
bMatk
Gegenstandsbonus
bMatk
Signatur:
bonus bMatk,n;
Beschreibung:
Magical attack power + n
bAutoSpell
Gegenstandsbonus
bAutoSpell
Signatur:
bonus5 bAutoSpell,sk,y,n,bf,i;
Beschreibung:
Adds a n/10% chance to cast skill sk of level y when attacking with trigger criteria bf
bSkillAtk
Gegenstandsbonus
bSkillAtk
Signatur:
bonus2 bSkillAtk,sk,n;
Beschreibung:
Increases damage of skill sk by n%
specialeffect
Befehl
specialeffect
Signatur:
specialeffect <effect number>{,<send_target>{,"<NPC Name>"}};
Beschreibung:
This command will display special effect with the given number, centered on the
specified NPCs coordinates, if any. For a full list of special effect numbers
known see ''. Some effect numbers are known not to work in
some client releases. (Notably, rain is absent from any client executables
released after April 2005.)
<NPC name> parameter will display <effect number> on another NPC. If the NPC
specified does not exist, the command will do nothing. When specifying an NPC,
<send_target> must be specified when specifying an <NPC Name>, specifying AREA
will retain the default behavior of the command.
Beispiel:
// this will make the NPC "John Doe#1"
// show the effect "EF_HIT1" specified by
// Jane Doe. I wonder what John did...
mes "[Jane Doe]";
mes "Well, I never!";
specialeffect EF_HIT1,AREA,"John Doe#1";
close;