Combo de Itens #8190
Tamanho do Combo: 3
Itens do Combo
Time_Gap_SS_Dagger1
Time_DM_R_Crown_SS
Time_Gap_SS_Dagger2
Efeito do Combo
if (getequipid(EQI_HAND_L) == 510172) {
bonus2 bSkillAtk,"SS_KUNAIKUSSETSU",25;
bonus bLongAtkRate,15;
if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HAND_L)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
bonus2 bSkillCooldown,"SS_KUNAIKAITEN",-700;
bonus2 bSkillCooldown,"SS_KUNAIKUSSETSU",-700;
}
}
Referências do Script
if
Comando
if
Assinatura:
if (<condition>) <statement>;
Descrição:
Este é o comando de instrução condicional básico, e praticamente o único disponível nesta linguagem de script.
A condição pode ser qualquer expressão. Todas as expressões que resultam em um valor não zero serão consideradas Verdadeiras, incluindo valores negativos. Todas as expressões que resultam em zero são falsas.
Se a expressão resultar em Verdadeira, a instrução será executada. Se não for verdadeira, nada acontece e passamos para a próxima linha do script.
Para mais informações sobre operadores condicionais, consulte a seção de operadores acima.
armazená-lo em uma variável específica:
Mais exemplos de uso do comando 'if' no mundo real:
Exemplo 1:
Exemplo 2:
Note que os exemplos 1 e 2 têm o mesmo efeito.
Exemplo 3:
Exemplo 4:
Exemplo 5:
Veja 'strcharinfo' para uma explicação do que esta função faz.
Exemplo 6: Usando condições complexas.
O motor de script também suporta declarações 'if' aninhadas:
Se a condição não for atendida, ele executará a ação seguinte ao 'else'.
Também podemos agrupar várias ações dependendo de uma condição:
Lembre-se que se você planeja fazer várias ações quando a condição for falsa, e
você esquecer de usar as chaves ( { } ), a segunda ação será executada independentemente
da saída da condição, a menos, é claro, que você pare a execução do script se a
condição for verdadeira (ou seja, no primeiro agrupamento usando um return;, end; ou um close;)
Além disso, você pode ter múltiplas condições aninhadas ou encadeadas.
Exemplo:
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;
getequipid
Comando
getequipid
Assinatura:
getequipid({<equipment slot>,<char_id>})
Descrição:
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:
Exemplo:
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;
bSkillAtk
Bônus de Item
bSkillAtk
Assinatura:
bonus2 bSkillAtk,sk,n;
Descrição:
Increases damage of skill sk by n%
bLongAtkRate
Bônus de Item
bLongAtkRate
Assinatura:
bonus bLongAtkRate,n;
Descrição:
Increases damage of long ranged attacks by n%
getenchantgrade
Comando
getenchantgrade
Assinatura:
getenchantgrade({<equipment slot>,<char_id>})
Descrição:
function is called or the specified equipment slot. If nothing is
equipped there, it returns -1.
Valid equipment slots are:
EQI_COMPOUND_ON - Item slot that calls this script (In context of item script) (default)
For a list of others equipment slots see 'getequipid'.
bSkillCooldown
Bônus de Item
bSkillCooldown
Assinatura:
bonus2 bSkillCooldown,sk,t;
Descrição:
Increases cooldown of skill sk by t milliseconds