Combo d'Objets #832
Taille du Combo: 2
Objets du Combo
Gryphon_Card
FlyingGalapago
Effet du Combo
bonus bAspdRate,3; bonus bAspd,1; bonus2 bAddClass,Class_All,-5; if (getequiprefinerycnt(EQI_HAND_R) >= 10 && getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW) == 11) bonus bAspd,1;
Références du Script
bAspdRate
Bonus d’Objet
bAspdRate
Signature:
bonus bAspdRate,n;
Description:
Attack speed + n%
bAspd
Bonus d’Objet
bAspd
Signature:
bonus bAspd,n;
Description:
Attack speed + n
bAddClass
Bonus d’Objet
bAddClass
Signature:
bonus2 bAddClass,c,x;
Description:
+x% physical damage against class c
if
Commande
if
Signature:
if (<condition>) <statement>;
Description:
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.
Exemple:
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
Commande
getequiprefinerycnt
Signature:
getequiprefinerycnt(<equipment slot>{,<char_id>})
Description:
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:
Exemple:
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;
getiteminfo
Commande
getiteminfo
Signature:
getiteminfo(<item ID>,<type>)
getiteminfo(<item name>,<type>)
getiteminfo(<aegis item name>,<type>)
Description:
and return the info set by TYPE argument.
It will return -1 if there is no such item or "" if the aegis item name is requested.
Valid types are:
Returned values and their constants (constant = value),
one can use either the value or the constants for your checks:
Exemple:
ITEMINFO_BUY - Buy Price
ITEMINFO_SELL - Sell Price
ITEMINFO_TYPE - Type
ITEMINFO_MAXCHANCE - maxchance (max drop chance of this item, e.g. 1 = 0.01%)
if = 0, then monsters don't drop it at all (rare or a quest item)
if = 10000, then this item is sold in NPC shops only
ITEMINFO_GENDER - Gender
ITEMINFO_LOCATIONS - Location(s)
ITEMINFO_WEIGHT - Weight
ITEMINFO_ATTACK - ATK
ITEMINFO_DEFENSE - DEF
ITEMINFO_RANGE - Range
ITEMINFO_SLOT - Slot
ITEMINFO_VIEW - View
ITEMINFO_EQUIPLEVELMIN - equipment LV
ITEMINFO_WEAPONLEVEL - weapon LV
ITEMINFO_ALIASNAME - AliasName
ITEMINFO_EQUIPLEVELMAX - equipment LV Max
ITEMINFO_MAGICATTACK - matk if RENEWAL is defined
ITEMINFO_ID - item ID
ITEMINFO_AEGISNAME - aegis item name
ITEMINFO_ARMORLEVEL - armor LV
ITEMINFO_SUBTYPE - Subtype
ITEMINFO_TYPE:
IT_HEALING
IT_UNKNOWN
IT_USABLE
IT_ETC
IT_ARMOR
IT_WEAPON
IT_CARD
IT_PETEGG
IT_PETARMOR
IT_UNKNOWN2
IT_AMMO
IT_DELAYCONSUME
IT_SHADOWGEAR
IT_CASH
ITEMINFO_SUBTYPE:
W_FIST //Bare hands
W_DAGGER
W_1HSWORD
W_2HSWORD
W_1HSPEAR
W_2HSPEAR
W_1HAXE
W_2HAXE
W_MACE
W_2HMACE
W_STAFF
W_BOW
W_KNUCKLE
W_MUSICAL
W_WHIP
W_BOOK
W_KATAR
W_REVOLVER
W_RIFLE
W_GATLING
W_SHOTGUN
W_GRENADE
W_HUUMA
W_2HSTAFF
W_DOUBLE_DD // 2 daggers
W_DOUBLE_SS // 2 swords
W_DOUBLE_AA // 2 axes
W_DOUBLE_DS // dagger + sword
W_DOUBLE_DA // dagger + axe
W_DOUBLE_SA // sword + axe
AMMO_NONE
AMMO_ARROW
AMMO_DAGGER
AMMO_BULLET
AMMO_SHELL
AMMO_GRENADE
AMMO_SHURIKEN
AMMO_KUNAI
AMMO_CANNONBALL
AMMO_THROWWEAPON
ITEMINFO_GENDER:
SEX_FEMALE
SEX_MALE
SEX_BOTH
ITEMINFO_LOCATIONS:
EQP_HEAD_LOW
EQP_HEAD_MID
EQP_HEAD_TOP
EQP_HAND_R
EQP_HAND_L
EQP_ARMOR
EQP_SHOES
EQP_GARMENT
EQP_ACC_R
EQP_ACC_L
EQP_COSTUME_HEAD_TOP
EQP_COSTUME_HEAD_MID
EQP_COSTUME_HEAD_LOW
EQP_COSTUME_GARMENT
EQP_COSTUME_FLOOR
EQP_AMMO
EQP_SHADOW_ARMOR
EQP_SHADOW_WEAPON
EQP_SHADOW_SHIELD
EQP_SHADOW_SHOES
EQP_SHADOW_ACC_R
EQP_SHADOW_ACC_L
// Combined
EQP_ACC_RL (EQP_ACC_R + EQP_ACC_L)
EQP_SHADOW_ACC_RL (EQP_SHADOW_ACC_R + EQP_SHADOW_ACC_L)
getequipid
Commande
getequipid
Signature:
getequipid({<equipment slot>,<char_id>})
Description:
on the invoking character or the specified equipment slot. If nothing is
equipped there, it returns -1.
Valid equipment slots are:
EQI_COMPOUND_ON (-1) - Item slot that calls this script (In context of item script) - exclusive to getequipid
EQI_ACC_L (0) - Accessory 1
EQI_ACC_R (1) - Accessory 2
EQI_SHOES (2) - Footgear (shoes, boots)
EQI_GARMENT (3) - Garment (mufflers, hoods, manteaux)
EQI_HEAD_LOW (4) - Lower Headgear (beards, some masks)
EQI_HEAD_MID (5) - Middle Headgear (masks, glasses)
EQI_HEAD_TOP (6) - Upper Headgear
EQI_ARMOR (7) - Armor (jackets, robes)
EQI_HAND_L (8) - Left hand (weapons, shields)
EQI_HAND_R (9) - Right hand (weapons)
EQI_COSTUME_HEAD_TOP (10) - Upper Costume Headgear
EQI_COSTUME_HEAD_MID (11) - Middle Costume Headgear
EQI_COSTUME_HEAD_LOW (12) - Lower Costume Headgear
EQI_COSTUME_GARMENT (13) - Costume Garment
EQI_AMMO (14) - Arrow/Ammunition
EQI_SHADOW_ARMOR (15) - Shadow Armor
EQI_SHADOW_WEAPON (16) - Shadow Weapon
EQI_SHADOW_SHIELD (17) - Shadow Shield
EQI_SHADOW_SHOES (18) - Shadow Shoes
EQI_SHADOW_ACC_R (19) - Shadow Accessory 2
EQI_SHADOW_ACC_L (20) - Shadow Accessory 1
Notice that a few items occupy several equipment slots, and if the character is
wearing such an item, 'getequipid' will return its ID number for either slot.
Can be used to check if you have something equipped, or if you haven't got
something equipped:
You can also use it to make sure people don't pass a point before removing an
item totally from them. Let's say you don't want people to wear Legion Plate
armor, but also don't want them to equip if after the check, you would do this:
Exemple:
if (getequipid(EQI_HEAD_TOP) == 2234)
mes "What a lovely Tiara you have on";
else
mes "Come back when you have a Tiara on";
close;
if (getequipid(EQI_ARMOR) == 2341 || getequipid(EQI_ARMOR) == 2342) {
mes "You are wearing some Legion Plate Armor, please drop that in your stash before continuing";
close;
}
// the || is used as an or argument, there is 2341 and 2342 cause there are
// two different legion plate armors, one with a slot one without.
if (countitem(2341) > 0 || countitem(2432) > 0) {
mes "You have some Legion Plate Armor in your inventory, please drop that in your stash before continuing";
close;
}
mes "I will lets you pass.";
close2;
warp "place",50,50;
end;