Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
 Couple bugs
Today, 5:42 pm
By Remcon
Bug in disarm( )
Nov 12, 2017, 6:54 pm
By GatewaySysop
Bug in will_fall( )
Oct 23, 2017, 1:35 am
By GatewaySysop
Bug in do_zap( ), do_brandish( )
Oct 18, 2017, 1:52 pm
By GatewaySysop
Bug in get_exp_worth( )
Oct 10, 2017, 1:26 am
By GatewaySysop
LOP 1.45
Author: Remcon
Submitted by: Remcon
LOP Heroes Edition
Author: Vladaar
Submitted by: Vladaar
Heroes sound extras
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.3
Author: Vladaar
Submitted by: Vladaar
Memwatch
Author: Johan Lindh
Submitted by: Vladaar
Users Online
CommonCrawl, DotBot, Google, Yandex, Yahoo!, Majestic-12

Members: 0
Guests: 11
Stats
Files
Topics
Posts
Members
Newest Member
477
3,705
19,232
608
LAntorcha
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Codebases » SmaugFUSS » Skills Percents not moving.
Forum Rules | Mark all | Recent Posts

Skills Percents not moving.
< Newer Topic :: Older Topic >

Pages:<< prev 1 next >>
Post is unread #1 Apr 17, 2013, 2:35 pm   Last edited Apr 17, 2013, 2:36 pm by dbna2
Go to the top of the page
Go to the bottom of the page

dbna2
Sorcerer
GroupMembers
Posts600
JoinedDec 2, 2008

For some reason I can't get skill learned percents to raise after being practiced. Any help would be greatful.

Sample Skill:
void do_kamehameha( CHAR_DATA *ch, char *argument )
{
 CHAR_DATA *victim;
 char arg [MAX_INPUT_LENGTH];
 int timer;  

  if( IS_NPC( ch ) && IS_AFFECTED( ch, AFF_CHARM ) )
  {
    send_to_char( "&wYou can't concentrate enough for that.\n\r", ch );
    return;
  }

  if ( !can_use(ch) )
  return;

  if( !IS_NPC( ch ) && ch->basepl < skill_table[gsn_kamehameha]->race_level[ch->race] )
  {
    send_to_char( "&wYou can't do that.\n\r", ch );
    return;
  }

  if( ( victim = who_fighting( ch ) ) == NULL )
  {
    send_to_char( "&wYou aren't fighting anyone.\n\r", ch );
    return;
  }
  
	timer = skill_table[gsn_kamehameha]->stimer;
	switch( ch->substate )
    {
	default:
 if( ch->focus < skill_table[gsn_kamehameha]->focus )
  {
    send_to_char( "&wYou need to focus more.\n\r", ch );
    return;
  }

        add_timer( ch, TIMER_DO_FUN, timer, do_kamehameha, 1 );
        ch->skill_timer = timer;
	    act( AT_GREEN, "&CYou bring your left foot up kicking $N, sending $M flying in the opposite direction, you quickly bend your knees and cup your hands at your side and start collecting energy.&D\n\r",  ch, NULL, victim, TO_CHAR );
	    act( AT_GREEN, "&C$n brings $s left foot up kicking you, sending you flying in the opposite direction, They then bend your thier and cup thier hands to thier side and starts to collect energy.&D\n\r",  ch, NULL, victim, TO_VICT );
	    act( AT_GREEN, "&C$n brings $s left foot up kicking $N and sending $S flying in the opposite direction, $n quickly bends $s knees and cups $s hands at $s side and starts to collect energy..&D\n\r",  ch, NULL, victim, TO_NOTVICT );
            ch->alloc_ptr = str_dup( arg );
	    return;

	 case 1:
	    if ( !ch->alloc_ptr )
     	  {
          send_to_char( "&CYour kamehameha was interupted!&D\n\r", ch );
    	  act( AT_GREEN, "&C$n's kamehameha $s was interupted.&D\n\r",  ch, NULL, victim, TO_NOTVICT );
          act( AT_GREEN, "&C$n's kamehameha was interrupted!&D\n\r",  ch, NULL, victim, TO_NOTVICT );
         // bug( "do_search: alloc_ptr NULL", 0 );
          return;
          }
	    strcpy( arg, ch->alloc_ptr );
	    DISPOSE( ch->alloc_ptr );
	    break;

	 case SUB_TIMER_DO_ABORT:
	    DISPOSE( ch->alloc_ptr );
	    ch->substate = SUB_NONE;
	    send_to_char( "You stop your kamehameha.&D\n\r", ch );
    	act( AT_GREEN, "$n's cancels $s kamehameha.&D\n\r",  ch, NULL, victim, TO_VICT );
    	act( AT_GREEN, "$n's cancels $s kamehameha.&D\n\r",  ch, NULL, victim, TO_NOTVICT );
        ch->skill_timer = 0;
 	    return;
    }

    ch->substate = SUB_NONE;

  if( xIS_SET( ( ch )->affected_by, AFF_STAGGER ) )
  {
    interpret( ch, "stagger" );
    send_to_char( "&RYou stagger around and fail to perform your attack.&D\n\r", ch );
    xREMOVE_BIT( ( ch )->affected_by, AFF_STAGGER );
    ch->mana -= skill_table[gsn_kamehameha]->min_mana / 2;
    return;
  }

	
    if ( can_use_skill(ch, number_percent(),gsn_kamehameha ) )
    {
	  if( ( victim = who_fighting( ch ) ) == NULL )
      {
       return;
      }
      int num;
	  num =  number_range( 1, 2 );
   	  learn_from_success( ch, gsn_kamehameha );
	  act( AT_GREEN, "&CFinally, you scream &B'KA-ME......'&C as a glistening ball of energy forms in your palms. Positioning your hands forward you scream &B'HA-ME'&C, then throwing your hands forward you release a large wave of energy towards $N while screaming &B'HA!!!!!'&C Directing the wave towards $N you grin as it connects with $S body causing a large explosion..&D\n\r",  ch, NULL, victim, TO_CHAR );
      if ( num == 1) 
	  {
	  act( AT_GREEN, "&CAs you regain your poster, you turn to notice $n charging energy into $s hands, Thinking quickly you charge a small sphere of energy into the palm of your hand, As you throw the blast towards $n you hear &B'Ka-me...Ha-me..HA!!'&C knowing it is to late, you watch as your blast connects with the energy wave that continues towards you. As the wave makes contact with your body an explosion erupts.&D\n\r",  ch, NULL, victim, TO_VICT );
}
else
{
	  act( AT_GREEN, "&CAs you regain your poster, you turn to notice $n charging energy into $s hands, Staring dumbfounded at $n as they yell out &B'Ka-me...Ha-me..HA!!'&C knowing it is to late, you watch the blast kareens straight towards you, engulfing your body in a glorious &Bblue&C explosion.\n\r",  ch, NULL, victim, TO_VICT );

}	 
	 act( AT_GREEN, "&C$n screams 'KAMEHAMEHA!' and fires a wave of energy at $N!\n\r",  ch, NULL, victim, TO_NOTVICT );
      global_retcode = damage( ch, victim, ( number_range( 105, 250 ) ), gsn_kamehameha );
    }
    else
    {
	 act( AT_GREEN, "&RYou scream 'KAMEHAMEHA!' and fire a beam of ki... in the wrong direction.&D\n\r",  ch, NULL, victim, TO_CHAR );
	 act( AT_GREEN, "&R$n screams 'KAMEHAMEHA!' and fires a beam of ki... in the wrong direction.&D\n\r",  ch, NULL, victim, TO_VICT );
	 act( AT_GREEN, "&R$n screams 'KAMEHAMEHA!' and fires a beam of ki... in the wrong direction.&D\n\r",  ch, NULL, victim, TO_NOTVICT );
	 learn_from_failure( ch, gsn_kamehameha );
	 global_retcode = damage( ch, victim, 0, gsn_kamehameha );
    }

return;
}


Learn from success and failure

void learn_from_success( CHAR_DATA *ch, int sn )
{
    int adept;
    int learn;
    if ( IS_NPC(ch) || ch->pcdata->learned[sn] <= 0 || !skill_table[sn])
	return;

    adept = 10;
    if ( ch->pcdata->learned[sn] < 
	skill_table[sn]->race_adept[ch->race] 
	&& number_range(1, 500 ) <
	get_curr_int ( ch ) )
    {
        learn = ( int )get_curr_int( ch ) / number_range( 275, 325 );
    ch->pcdata->learned[sn] = UMIN( adept, ch->pcdata->learned[sn] + learn );

    }
    return;
}


void learn_from_failure( CHAR_DATA *ch, int sn )
{
    int adept

    int learn;

    if ( sn < 0 )
	return;

    if ( IS_NPC(ch) || ch->pcdata->learned[sn] <= 0 )
	return;
    if ( skill_table[sn]->race_adept[ch->race] <= ch->pcdata->learned[sn] )
	return;
    adept = 10;
    if ( ch->pcdata->learned[sn] < skill_table[sn]->race_adept[ch->race] && number_range(1, 500 ) < (get_curr_int(ch) / 1.5))
    {
	  learn = ( int )get_curr_int( ch ) / number_range( 325, 400 );
  if( ch->pcdata->learned[sn] < ( adept - 1 ) )
    ch->pcdata->learned[sn] = UMIN( adept, ch->pcdata->learned[sn] + learn );


    }
    return;
}


and here is my check_skills.


/*
 * Perform a binary search on a section of the skill table
 * Each different section of the skill table is sorted alphabetically
 * Only match skills player knows				-Thoric
 */
bool check_skill( CHAR_DATA *ch, char *command, char *argument )
{
    int sn;
    int first = gsn_first_skill;
    int top   = gsn_first_weapon-1;
    int mana, blood;
    struct timeval time_used;


if ( IS_AFFECTED( ch, AFF_BERSERK ) )
{
   pager_printf( ch, "&RYou are currently out of control!  There is no stopping you in this state!\n\r" );
   return(FALSE);
}

    /* bsearch for the skill */
    for (;;)
    {
	sn = (first + top) >> 1;

	if ( LOWER(command[0]) == LOWER(skill_table[sn]->name[0])
 	&&  !str_prefix(command, skill_table[sn]->name)
	&&  (skill_table[sn]->skill_fun || skill_table[sn]->spell_fun != spell_null)
        && ( can_use_skill(ch, 0, sn ) ) )
	break;
	if (first >= top)
	    return FALSE;
      if( strcasecmp( command, skill_table[sn]->name ) < 1 )
         top = sn - 1;
    	else
	    first = sn + 1;
    }


    if ( !check_pos( ch, skill_table[sn]->minimum_position ) )
	return TRUE;

    if ( IS_NPC(ch)
    &&  (IS_AFFECTED( ch, AFF_CHARM ) || IS_AFFECTED( ch, AFF_POSSESS )) )
    {
	send_to_char( "For some reason, you seem unable to perform that...\n\r", ch );
	act( AT_GREY,"$n wanders around aimlessly.", ch, NULL, NULL, TO_ROOM );
	return TRUE;
    }

    /* check if mana is required */
    if ( skill_table[sn]->min_mana )
    {
	mana = IS_NPC(ch) ? 0 : UMAX(skill_table[sn]->min_mana,
	   100 / ( 2 + ch->basepl - skill_table[sn]->race_level[ch->race] ) );
	blood = UMAX(1, (mana+4) / 8);     
	if ( !IS_NPC(ch) )
		mana = skill_table[sn]->min_mana; 

	if ( !IS_NPC(ch) && ch->mana < mana )
	{
	    send_to_char( "&wYou don't have enough energy.\n\r", ch );
	    return TRUE;
	}
/*Lets add a focus check here */
  if ( !IS_NPC ( ch ) && !IS_IMMORTAL ( ch ) )
{
   if( ch->focus < skill_table[sn]->focus )
  {
    send_to_char( "&wYour Focus Percent isn't high enough.\n\r", ch );
    return (TRUE);
  }
}
    }
    else
    {
	mana = 0;
	blood = 0;
    }
	if ( skill_table[sn]->race_adept[ch->race] < 10)
	{
		send_to_char( "&wThat's not meant for your kind.\n\r", ch );
		return( FALSE );
	}
    /* Can they even use it?! */
	if ( !IS_NPC(ch) && ch->basepl < skill_table[sn]->race_level[ch->race] && !IS_IMMORTAL(ch))
	{
		send_to_char( "&wYou need to be stronger for that one...\n\r", ch );
		return (FALSE);
	}

/* I dont feel like rewriting this right now but need to encompass the new fighting
   styles in here as soon as possible 
    Ricochet */
/*	if ( ch->position <= POS_SITTING )
	{
		send_to_char( "Get up first.\n\r", ch );
		return(FALSE);
	} */
    /*
     * Is this a real do-fun, or really a spell?
     */
    if ( !skill_table[sn]->skill_fun )
    {
	ch_ret retcode = rNONE;
	void *vo = NULL;
	CHAR_DATA *victim = NULL;
	OBJ_DATA *obj = NULL;

	target_name = "";

	switch ( skill_table[sn]->target )
	{
	default:
	    bug( "Check_skill: bad target for sn %d.", sn );
	    send_to_char( "Something went wrong...\n\r", ch );
	    return TRUE;

	case TAR_IGNORE:
	    vo = NULL;
	    if ( argument[0] == '\0' )
	    {
		if ( (victim=who_fighting(ch)) != NULL )
		    target_name = PERS( victim, ch );
	    }
	    else
		target_name = argument;
	    break;

	case TAR_CHAR_OFFENSIVE:
	    {
	      if ( argument[0] == '\0'
	      &&  (victim=who_fighting(ch)) == NULL )
	      {
		ch_printf( ch, "&wConfusion overcomes you as your '%s' has no target.\n\r", skill_table[sn]->name );
		return TRUE;
	      }
	      else
	      if ( argument[0] != '\0'
	      &&  (victim=get_char_room(ch, argument)) == NULL )
	      {
		send_to_char( "They aren't here.\n\r", ch );
		return TRUE;
	      }
	    }
	    if ( is_safe( ch, victim, TRUE ) )
		return TRUE;

	    if ( ch == victim && SPELL_FLAG(skill_table[sn], SF_NOSELF))
            {
                send_to_char( "&wYou can't target yourself!\n\r", ch);
                return TRUE;
            }

	    if ( !IS_NPC(ch) )
	    {
		if ( !IS_NPC(victim) )
		{
		    /*  Sheesh! can't do anything
		    send_to_char( "&wYou can't do that on a player.\n\r", ch );
		    return TRUE;
	            */	
/*
		    if ( xIS_SET(victim->act, PLR_PK))
*/
		    if ( get_timer( ch, TIMER_PKILLED ) > 0 )
		    {
			send_to_char( "You have been killed in the last 5 minutes.\n\r", ch);
			return TRUE;
		    }

		    if ( get_timer( victim, TIMER_PKILLED ) > 0 )
		    {
			send_to_char( "This player has been killed in the last 5 minutes.\n\r", ch );
			return TRUE;
		    }	

		    if ( victim != ch)
		        send_to_char( "You really shouldn't do this to another player...\n\r", ch );
		}

		if ( IS_AFFECTED(ch, AFF_CHARM) && ch->master == victim )
		{
		    send_to_char( "You can't do that on your own follower.\n\r", ch );
		    return TRUE;
		}
	    }

	    check_illegal_pk( ch, victim );
	    vo = (void *) victim;
	    break;

	case TAR_CHAR_DEFENSIVE:
	    {
	      if ( argument[0] != '\0'
	      &&  (victim=get_char_room(ch, argument)) == NULL )
	      {
		send_to_char( "They aren't here.\n\r", ch );
		return TRUE;
	      }
	      if ( !victim )
		victim = ch;
	    }

	    if ( ch == victim && SPELL_FLAG(skill_table[sn], SF_NOSELF))
            {
                send_to_char( "You can't target yourself!\n\r", ch);
                return TRUE;
            }

	    vo = (void *) victim;
	    break;

	case TAR_CHAR_SELF:
	    vo = (void *) ch;
	    break;

	case TAR_OBJ_INV:
	    {
	      if ( (obj=get_obj_carry(ch, argument)) == NULL )
	      {
		send_to_char( "You can't find that.\n\r", ch );
		return TRUE;
	      }
	    }
	    vo = (void *) obj;
	    break;
	}

	/* waitstate */
	WAIT_STATE( ch, skill_table[sn]->beats );
	/* check for failure */
	if ( (number_percent( ) + skill_table[sn]->difficulty * 5)
	   > (IS_NPC(ch) ? 75 : LEARNED(ch, sn)) )
	{
	    failed_casting( skill_table[sn], ch, victim, obj ); 
	    learn_from_failure( ch, sn );
	    if ( mana )
	    {
		ch->mana -= mana/2;
		if ( ch->mana < 0 )
			ch->mana = 0;
	    }
	    return TRUE;
	}
	if ( mana && !skill_table[gsn_hellzone])
	{
	    ch->mana -= mana;
		if ( ch->mana < 0 )
			ch->mana = 0;
	}

	start_timer(&time_used);
	retcode = (*skill_table[sn]->spell_fun) ( sn, ch->level, ch, vo );
	end_timer(&time_used);
	update_userec(&time_used, &skill_table[sn]->userec);
	
	if ( retcode == rCHAR_DIED || retcode == rERROR )
	    return TRUE;

	if ( char_died(ch) )
	    return TRUE;

	if ( retcode == rSPELL_FAILED )
	{
	    learn_from_failure( ch, sn );
	    retcode = rNONE;
	}
	else
	    learn_from_success( ch, sn );

	if ( skill_table[sn]->target == TAR_CHAR_OFFENSIVE
	&&   victim != ch
	&&  !char_died(victim) )
	{
	    CHAR_DATA *vch;
	    CHAR_DATA *vch_next;

	    for ( vch = ch->in_room->first_person; vch; vch = vch_next )
	    {
		vch_next = vch->next_in_room;
		if ( victim == vch && !victim->fighting && victim->master != ch )
		{
		    retcode = multi_hit( victim, ch, TYPE_UNDEFINED );
		    break;
		}
	    }
	}
	return TRUE;
    }

    if ( mana )
    {
	ch->mana -= mana;
                if ( ch->mana < 0 )
                        ch->mana = 0;

    }
    ch->prev_cmd = ch->last_cmd;    /* haus, for automapping */
    ch->last_cmd = skill_table[sn]->skill_fun;
    start_timer(&time_used);
    (*skill_table[sn]->skill_fun) ( ch, argument );
    end_timer(&time_used);
    update_userec(&time_used, &skill_table[sn]->userec);
    tail_chain( );
    return TRUE;
}
       
Post is unread #2 Apr 17, 2013, 3:02 pm
Go to the top of the page
Go to the bottom of the page

Zeno
Sorcerer
GroupMembers
Posts723
JoinedMar 5, 2005

You have a lot of variables. What is skill_table[sn]->race_adept[ch->race] at, for example?

Is it making it into that ifcheck in learn_from_success?
       
Post is unread #3 Apr 17, 2013, 5:22 pm
Go to the top of the page
Go to the bottom of the page

dbna2
Sorcerer
GroupMembers
Posts600
JoinedDec 2, 2008

i dont understand your question.
       
Post is unread #4 Apr 17, 2013, 6:42 pm
Go to the top of the page
Go to the bottom of the page

GatewaySysop
Conjurer
GroupMembers
Posts367
JoinedMar 7, 2005


dbna2 said:

i dont understand your question.


What he's getting at is that you should probably try debugging this by looking in learn_from_success at what point you're entering and exiting the function. Further, what steps / blocks are you reaching and which are you not? Why or why not? All easy to answer if you throw some simple bug( ) calls in there to print out some of the values, like the one that Zeno is asking about.

Look at the examples in any of the .c files for how bug( ) is used, throw some calls in at every step and then go in and use the skill to see what messages you get. You can print out the values of all the pieces of your if checks and see where they're at and why things are or are not flowing the way you think.

Hope that makes more sense? :wink:
       
Post is unread #5 Apr 24, 2013, 3:40 pm
Go to the top of the page
Go to the bottom of the page

Remcon
Geomancer
GroupAdministrators
Posts1,858
JoinedJul 26, 2005

void learn_from_success( CHAR_DATA *ch, int sn )
{
    int adept;
    int learn;
    if ( IS_NPC(ch) || ch->pcdata->learned[sn] <= 0 || !skill_table[sn])
	return;

    adept = 10;
    if ( ch->pcdata->learned[sn] < skill_table[sn]->race_adept[ch->race] 
    && number_range(1, 500 ) < get_curr_int ( ch ) )
    {
        learn = ( int )get_curr_int( ch ) / number_range( 275, 325 );
    ch->pcdata->learned[sn] = UMIN( adept, ch->pcdata->learned[sn] + learn );

    }
    return;
}

In the above the chance is slim that number_range will be lower then get_curr_int of the character, it is also going to set the learned to the lowest possible be it adept (10) or learned + learn; so it never is set to increase lol
void learn_from_failure( CHAR_DATA *ch, int sn )
{
    int adept

    int learn;

    if ( sn < 0 )
	return;

    if ( IS_NPC(ch) || ch->pcdata->learned[sn] <= 0 )
	return;
    if ( skill_table[sn]->race_adept[ch->race] <= ch->pcdata->learned[sn] )
	return;
    adept = 10;
    if ( ch->pcdata->learned[sn] < skill_table[sn]->race_adept[ch->race] && number_range(1, 500 ) < (get_curr_int(ch) / 1.5))
    {
	  learn = ( int )get_curr_int( ch ) / number_range( 325, 400 );
  if( ch->pcdata->learned[sn] < ( adept - 1 ) )
    ch->pcdata->learned[sn] = UMIN( adept, ch->pcdata->learned[sn] + learn );

    }
    return;
}

here again small chance based on how high peoples int can get, but once it gets there again it is just going to set it and looks like if youre at 8 or lower it might increase it but aside from that it won't increase it at all.
       
Post is unread #6 Apr 24, 2013, 6:32 pm
Go to the top of the page
Go to the bottom of the page

dbna2
Sorcerer
GroupMembers
Posts600
JoinedDec 2, 2008

The lowest the int can go is 8 and I tested it with a char that had 100 int. Still nothing, and I spammed every skill possible. The second part I am unsure what you mean wouldn't ch->pcdata->learned[sn] = UMIN( adept, ch->pcdata->learned[sn] + learn ); cause it to increase? I took a look at a dbsaga codebase it almost looks exactly the same.
       
Post is unread #7 Apr 24, 2013, 6:44 pm
Go to the top of the page
Go to the bottom of the page

Remcon
Geomancer
GroupAdministrators
Posts1,858
JoinedJul 26, 2005

ok and what is the race_adept for your ch->race? also the number_range( 1, 500 ) < get_curr_int( ch ) means that even at 100 it will still be fairly low. ok on this your setting learn to lets see we will go with 100 for int so 100 / ( 275 to 325 ) and your making that an int so thats 0.363 or 0 so then we have
ch->pcdata->learned[sn] = UMIN( adept (10), ch->pcdata->learned[sn] + learn (0));

so in this case your lucky if it ever goes more then 10.

UMIN is set like this if adept is 10 and ( ch->pcdata->learned[sn] + learn ) is 50 it will set ch->pcdata->learned[sn] = 10. a better way is likely to go with
ch->pcdata->learned[sn] += UMIN( adept, learn );

for learn_from_success that is.
       
Post is unread #8 Apr 24, 2013, 6:55 pm   Last edited Apr 24, 2013, 7:01 pm by dbna2
Go to the top of the page
Go to the bottom of the page

dbna2
Sorcerer
GroupMembers
Posts600
JoinedDec 2, 2008

race_adept is set as a sh_int.
       
Post is unread #9 Apr 24, 2013, 7:02 pm
Go to the top of the page
Go to the bottom of the page

Remcon
Geomancer
GroupAdministrators
Posts1,858
JoinedJul 26, 2005

na i mean for that skill what is the race_adept set for it? should show on slookup <skill> for the adepts
       
Post is unread #10 Apr 24, 2013, 7:06 pm
Go to the top of the page
Go to the bottom of the page

dbna2
Sorcerer
GroupMembers
Posts600
JoinedDec 2, 2008

Oh each skill is different the race_adept.Like Kamehameha is 95, Fly is 100
       
Post is unread #11 Apr 24, 2013, 7:10 pm
Go to the top of the page
Go to the bottom of the page

dbna2
Sorcerer
GroupMembers
Posts600
JoinedDec 2, 2008

I do have a question though, could it be because pcdata->learn is a sh_int and lets say you have 8 intelligence, 8/275 is a double?
       
Post is unread #12 Apr 24, 2013, 7:19 pm
Go to the top of the page
Go to the bottom of the page

Remcon
Geomancer
GroupAdministrators
Posts1,858
JoinedJul 26, 2005

the fact its a sh_int isn't the issue its the fact that unless their current int is higher then what your dividing it by then the double will be 0.<something> so swap that to an int and it is 0. like i said your best bet is to change it how i said in the other one lol and maybe reduce what youre dividing it by lol
       
Post is unread #13 Apr 24, 2013, 7:35 pm
Go to the top of the page
Go to the bottom of the page

dbna2
Sorcerer
GroupMembers
Posts600
JoinedDec 2, 2008

Fixed it Thanks :) Remcon you rock.
       
Post is unread #14 Apr 24, 2013, 7:43 pm
Go to the top of the page
Go to the bottom of the page

Remcon
Geomancer
GroupAdministrators
Posts1,858
JoinedJul 26, 2005

yw did you fix your learn_from_failure up too?
       
Post is unread #15 Apr 25, 2013, 4:21 am
Go to the top of the page
Go to the bottom of the page

dbna2
Sorcerer
GroupMembers
Posts600
JoinedDec 2, 2008

yup thanks :)
       
Pages:<< prev 1 next >>