本文整理汇总了C++中IS_CLASS函数的典型用法代码示例。如果您正苦于以下问题:C++ IS_CLASS函数的具体用法?C++ IS_CLASS怎么用?C++ IS_CLASS使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IS_CLASS函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: semBTake
STATUS semBTake(SEM_ID semId, int timeout)
{
int level;
int status;
/* TODO ISR no be allowed */
again:
level = intLock();
if(!IS_CLASS(semId, semClassId))
{
intUnlock(level);
return (ERROR);
}
if(NULL == semId->semOwner)
{
semId->semOwner = (RAIN_TCB*)taskIdCurrent;
intUnlock(level);
return (OK);
}
/* semId have been take by other task */
kernelState = TRUE;
intUnlock(level);
if(OK != kernelPendQPut(&semId->qHead, timeout))
{
kernelExit();
return (ERROR);
}
/* test for interrupt in kernelState=TRUE of semGive */
/*{
int j = 1000000;
while(j >= 0)
{
j--;
}
}*/
if(RESTART == (status = kernelExit()))
{
goto again;
}
return (status);
}
示例2: do_touchofgod
void do_touchofgod(CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char arg[MAX_INPUT_LENGTH];
int dam;
argument = one_argument( argument, arg );
dam = number_range(100,200);
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ANGEL))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (ch->pcdata->powers[ANGEL_JUSTICE] < 4)
{
send_to_char("You cannot channel the will of God yet.\n\r",ch);
return;
}
if ((victim = get_char_room(ch, arg)) == NULL)
{
send_to_char("They are not here.\n\r", ch);
return;
}
if (IS_NPC(victim))
{
send_to_char("Not on mobiles.\n\r",ch);
return;
}
if (is_safe(ch,victim)) return;
if (victim == ch)
{
send_to_char("That doesn't seem like a good idea.\n\r",ch);
return;
}
WAIT_STATE(ch, 18);
hurt_person(ch, victim, dam);
act("You grab $N by the forehead and channel God's justice into $S body.",ch,NULL,victim,TO_CHAR);
act("$n grabs you by your forehead and sends a prayer to God, DAMN THAT HURT.",ch,NULL,victim,TO_VICT);
act("$n grabs $N by the forehead and sends a prayer to God.",ch,NULL,victim,TO_NOTVICT);
if (number_range(1,3) == 1)
{
if (victim->position == POS_FIGHTING) stop_fighting(victim,TRUE);
act("$N screams in pain and drops to the ground as God's justice wrecks $S body.",ch,NULL,victim,TO_CHAR);
act("AARGH!!! The pain is to much, you drop to the ground.",ch,NULL,victim,TO_VICT);
act("$N screams in agony and falls to the ground.",ch,NULL,victim,TO_NOTVICT);
victim->position = POS_STUNNED;
}
return;
}
示例3: do_lloth
void do_lloth( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
CHAR_DATA *gch;
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_DROW) && !IS_CLASS(ch, CLASS_DROID) )
{
send_to_char("Huh?\n\r",ch);
return;
}
send_to_char("#p -*- The Church of Lloth -*-#n\n\r",ch);
send_to_char("#7[#pName #7] [#p Hp #7] [#p Mana #7] [#p Move #7] [#p Gen #7 ]#n\n\r",ch);
for ( gch = char_list; gch != NULL; gch = gch->next)
{
if (IS_NPC(gch)) continue;
if (!IS_CLASS(gch, CLASS_DROW) && !IS_CLASS(gch, CLASS_DROID)) continue;
sprintf( buf,"#7[%-20s] [%-7d] [%-7d] [%-7d] [%-7d]#n\n\r",
capitalize( gch->name ), gch->hit, gch->mana, gch->move, gch->generation);
send_to_char( buf, ch );
}
return;
}
示例4: do_gfavor
void do_gfavor( CHAR_DATA *ch, char *argument )
{
char buf [MAX_STRING_LENGTH];
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ANGEL))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (ch->pcdata->powers[ANGEL_LOVE] < 2)
{
send_to_char("God does not love you enough to grant his divine favor.\n\r",ch);
return;
}
if (ch->alignment != 1000) ch->alignment = 1000;
if (IS_SET(ch->newbits, NEW_CUBEFORM))
{
REMOVE_BIT(ch->newbits, NEW_CUBEFORM);
REMOVE_BIT(ch->affected_by, AFF_POLYMORPH);
act( "$n turns into a human.",ch,NULL,NULL,TO_ROOM);
send_to_char("You turn into your normal form.\n\r",ch);
ch->damroll -=400;
ch->hitroll -=400;
free_string(ch->morph);
ch->morph=str_dup("");
return;
}
if (ch->move < 2000 || ch->mana < 2000)
{
send_to_char("You need 2000 mana and 2000 move to make yourself a true angel.\n\r",ch);
return;
}
else
{
act( "$n transforms into an angel.",ch,NULL,NULL,TO_ROOM);
send_to_char("God is with you, your now one of his divine.\n\r",ch);
SET_BIT(ch->newbits, NEW_CUBEFORM);
SET_BIT(ch->affected_by, AFF_POLYMORPH);
sprintf(buf,"%s the angel",ch->name);
free_string(ch->morph);
ch->morph = str_dup(buf);
ch->move -= 2000;
ch->mana -= 2000;
ch->damroll +=400;
ch->hitroll +=400;
return;
}
return;
}
示例5: do_skyforge
void do_skyforge( CHAR_DATA *ch, char *argument )
{
OBJ_INDEX_DATA *pObjIndex;
OBJ_DATA *obj;
int vnum = 0;
if (IS_NPC(ch)) return;
if(!IS_IMMORTAL(ch))
{
if (!IS_CLASS(ch, CLASS_SKYBLADE))
{
send_to_char("What?\n\r",ch);
return;
}
}
if (ch->pcdata->powers[SKYBLADE_MAGIC] < 1)
{
send_to_char("You haven't mastered enough of the magic ability yet.\n\r",ch);
return;
}
if ( ch->practice < 250 )
{
send_to_char("You don't have the 250 primal needed.\n\r",ch);
return;
}
if (ch->pcdata->powers[SKYBLADE_MAGIC] == 1) vnum = 33178;
if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 2) vnum = 33179;
if ( vnum == 0 || (pObjIndex = get_obj_index( vnum )) == NULL)
{
send_to_char("Missing object, please inform a God .\n\r",ch);
return;
}
if( !IS_IMMORTAL(ch) )
{
ch->practice -= 250;
}
obj = create_object(pObjIndex, 50);
SET_BIT(obj->spectype, SITEM_SKYBLADE);
obj->questowner = str_dup(ch->pcdata->switchname);
obj->ownerid = ch->pcdata->playerid;
obj_to_char(obj, ch);
act("$p falls from the heavens and lands before you.",ch,obj,NULL,TO_CHAR);
act("$p falls from the heavens and lands before $n.",ch,obj,NULL,TO_ROOM);
return;
}
示例6: do_entropy
void do_entropy (CHAR_DATA *ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
ROOM_INDEX_DATA *location;
CHAR_DATA *victim;
one_argument (argument, arg);
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_WIZARD))
{
send_to_char("Huh?\n\r", ch );
return;
}
if ((victim = get_char_world(ch, arg)) == NULL)
{
send_to_char("Teleport to whom?\n\r", ch );
return;
}
if (IS_SET(victim->in_room->room_flags, ROOM_ASTRAL))
{
stc( "You can't find it's room.\n\r",ch);
return;
}
if (IS_IMMUNE(victim, IMM_TRAVEL) && !IS_NPC(victim))
{
send_to_char("I don't think they want you to do that.\n\r",ch);
return;
}
if (IS_SET(ch->in_room->room_flags, ROOM_ASTRAL))
{
stc( "Your room is not connected to the astral plane.\n\r",ch);
return;
}
location = victim->in_room;
if (ch->mana < 250)
{
send_to_char("You don't have the mana to cast teleport.\n\r", ch );
return;
}
act("You utter a single powerword.", ch, NULL, NULL, TO_CHAR);
act("$n utters a strange sounding word and disappers.", ch, NULL, NULL, TO_ROOM);
ch->mana -= 250;
char_from_room(ch);
char_to_room(ch, location);
do_look(ch, "auto");
act("You materialize.", ch, NULL, NULL, TO_CHAR);
act("$n suddenly appear from out of nowhere.", ch, NULL, NULL, TO_ROOM);
return;
}
示例7: do_kanzuite
void do_kanzuite( CHAR_DATA *ch, char *argument )
{
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_NINJA) )
{
send_to_char("Huh?\n\r", ch);
return;
}
if (IS_CLASS(ch, CLASS_NINJA) && ch->pcdata->powers[NPOWER_SORA] < 5 )
{
send_to_char("You have not learned the Sora principle to 5.\n\r", ch);
return;
}
else if (ch->move < 500)
{
send_to_char("You don't have 500 move to increase your awareness.\n\r", ch);
return;
}
if ( IS_SET(ch->act, PLR_HOLYLIGHT) )
{
REMOVE_BIT(ch->act, PLR_HOLYLIGHT);
send_to_char( "You're senses return to normal.\n\r", ch );
}
else
{
SET_BIT(ch->act, PLR_HOLYLIGHT);
send_to_char( "You're senses increase into incredible proportions.\n\r", ch );
ch->move -= 500;
}
return;
}
示例8: semFlushDefer
STATUS semFlushDefer(SEM_ID semId)
{
if(!IS_CLASS(semId, semClassId))
{
return (ERROR);
}
if(NULL == semFlushTbl[semId->semType & SEM_TYPE_MASK])
{
return (ERROR);
}
workQAdd1 (semFlushDeferTbl [semId->semType], (int) semId);
return (OK);
}
示例9: do_sinsofthepast
void do_sinsofthepast( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char arg[MAX_INPUT_LENGTH];
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ANGEL))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (ch->pcdata->powers[ANGEL_JUSTICE] < 3)
{
send_to_char("Your not ready to punish the sinners.\n\r",ch);
return;
}
if ((victim = get_char_room(ch, arg)) == NULL)
{
send_to_char("They are not here.\n\r", ch);
return;
}
/* if (IS_NPC(victim))
{
send_to_char("Not on mobiles.\n\r",ch);
return;
}*/
if (is_safe(ch,victim)) return;
if (victim == ch)
{
send_to_char("That doesn't seem like a good idea.\n\r",ch);
return;
}
send_to_char("#RYou burn them with the fires of hell!#n\n\r",ch);
if (!IS_AFFECTED(victim, AFF_FLAMING)) SET_BIT(victim->affected_by, AFF_FLAMING);
send_to_char("#LTheir body is wrecked by poison!#n\n\r",ch);
if (!IS_AFFECTED(victim, AFF_POISON)) SET_BIT(victim->affected_by, AFF_POISON);
send_to_char("#CGod's fury upon them for they have truly sinned!!!#n\n\r",ch);
one_hit(ch,victim, gsn_wrathofgod,1);
one_hit(ch,victim, gsn_wrathofgod,1);
one_hit(ch,victim, gsn_wrathofgod,1);
one_hit(ch,victim, gsn_wrathofgod,1);
WAIT_STATE(ch,12);
return;
}
示例10: do_enrage
void do_enrage(CHAR_DATA *ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
CHAR_DATA *victim;
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_TANARRI))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (!IS_SET(ch->pcdata->powers[TANARRI_POWER], TANARRI_ENRAGE))
{
send_to_char("you don't have that power yet.\n\r",ch);
return;
}
if ((victim = get_char_room(ch, NULL, arg)) == NULL)
{
send_to_char("They are not here.\n\r", ch);
return;
}
if (victim == ch)
{
send_to_char("Your unable to enrage yourself.\n\r", ch);
return;
}
if (IS_NPC(victim) || victim->level < 3)
{
send_to_char("Not on them\n\r",ch);
return;
}
do_say(ch, "Kara, Kara, Xenos!");
if (number_percent() > 40)
{
SET_BIT(victim->pcdata->tempflag, TEMP_AGGRESSIVE);
do_berserk2(victim,"");
REMOVE_BIT(victim->pcdata->tempflag, TEMP_AGGRESSIVE);
}
else send_to_char("#RSomeone is trying to control your actions!!!#n\n\r",victim);
WAIT_STATE(ch,18);
return;
}
示例11: do_focus
void do_focus(CHAR_DATA *ch, char *argument)
{
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_SAMURAI))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (ch->pcdata->powers[SAMURAI_FOCUS] < 10)
{
send_to_char("You cannot focus your weaponcontrol any more.\n\r",ch);
return;
}
ch->pcdata->powers[SAMURAI_FOCUS] -= number_range(1, ch->pcdata->powers[SAMURAI_FOCUS]);
send_to_char("You focus your control, letting the battle slow to a halt.\n\r",ch);
WAIT_STATE(ch, 8);
return;
}
示例12: msgQReceive
int msgQReceive(FAST MSG_Q_ID msgQId, char* buffer, UINT maxNBytes, int timeout)
{
FAST MSG_NODE* pMsg;
FAST int bytesReturned;
/* TODO int restrict */
if((int)maxNBytes < 0)
{
return (ERROR);
}
TASK_LOCK();
restart:
if(!IS_CLASS(msgQId, msgQClassId))
{
TASK_UNLOCK();
return (ERROR);
}
pMsg = (MSG_NODE*)qJobGet(msgQId, &msgQId->msgQ, timeout);
if(pMsg == (MSG_NODE*)NONE)
{
/* timeout recalc */
goto restart;
}
if(pMsg == NULL)
{
msgQId->recvTimeouts++;
TASK_UNLOCK();
return (ERROR);
}
bytesReturned = MIN(pMsg->msgLength, maxNBytes);
memcpy(buffer, MSG_NODE_DATA(pMsg), bytesReturned);
qJobPut(msgQId, &msgQId->freeQ, &pMsg->node, Q_JOB_PRI_DONT_CARE);
TASK_UNLOCK();
return (bytesReturned);
}
示例13: do_wyrmroar
void do_wyrmroar(CHAR_DATA *ch, char *argument)
{
CHAR_DATA *victim;
char arg[MAX_INPUT_LENGTH];
one_argument (argument, arg);
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_SKYBLADE))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (ch->pcdata->powers[SKYBLADE_SKILLS] < 9)
{
send_to_char("You have not mastered the skills ability enough yet.\n\r",ch);
return;
}
if (!TIME_UP(ch, TIMER_WYRM_ROAR))
{
send_to_char("Your throat is still sore from the last time.\n\r",ch);
return;
}
if (( victim = get_char_room(ch, NULL, arg)) == NULL)
{
if (ch->fighting == NULL)
{
send_to_char("Yes release the roar of the wyrm, but at who?\n\r",ch);
return;
}
else victim = ch->fighting;
}
if (victim == ch)
{
send_to_char("Quit that stupid ass.\n\r",ch);
return;
}
if (is_safe(ch, victim)) return;
SET_TIMER(ch, TIMER_WYRM_ROAR, 6);
WAIT_STATE(victim, 18);
act("$n roars with the power of the wyrm, stunning you in place.",ch,NULL,victim,TO_VICT);
act("$n roars with the power of the wyrm, stunning $N in place.", ch, NULL, victim, TO_NOTVICT);
act("You roar with the power of the wyrm, stunning $N in place.", ch, NULL, victim, TO_CHAR);
return;
}
示例14: do_enmity
void do_enmity(CHAR_DATA *ch, char *argument)
{
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
CHAR_DATA *victim1;
CHAR_DATA *victim2;
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_TANARRI))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (!IS_SET(ch->pcdata->powers[TANARRI_POWER], TANARRI_EMNITY))
{
send_to_char("you don't have that power yet.\n\r",ch);
return;
}
if ((victim1 = get_char_room(ch, arg1)) == NULL)
{
send_to_char("They are not here.\n\r", ch);
return;
}
if ((victim2 = get_char_room(ch, arg2)) == NULL)
{
send_to_char("They are not here.\n\r", ch);
return;
}
if (IS_NPC(victim1) || IS_NPC(victim2))
{
send_to_char("Not on NPC's\n\r",ch);
return;
}
do_say(ch,"Xenus, Morkain, Hau!");
if (number_percent() > 60) do_kill(victim1, victim2->pcdata->switchname);
else send_to_char("#RSomeone is trying to control your actions!!!#n\n\r",victim1);
if (number_percent() > 60) do_kill(victim2, victim1->pcdata->switchname);
else send_to_char("#RSomeone is trying to control your actions!!!#n\n\r",victim2);
WAIT_STATE(ch,24);
return;
}
示例15: do_fightdance
void do_fightdance(CHAR_DATA *ch, char *argument)
{
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_DROW) || !IS_SET(ch->pcdata->powers[1], DPOWER_FIGHTDANCE))
{send_to_char("Huh?\n\r", ch );
return;}
if (IS_SET(ch->newbits, NEW_FIGHTDANCE)) {
send_to_char("You will no longer dance The Dance of Lloth.\n\r", ch );
REMOVE_BIT(ch->newbits, NEW_FIGHTDANCE);
}
else {
send_to_char("You will start dancing The Dance of Lloth while fighting.\n\r", ch );
SET_BIT(ch->newbits, NEW_FIGHTDANCE);
}
return;
}