|
我修改了一个20级的魔兽,其他种族都可以升到20级,但是9族一超过10级,服务器就挂了,到底什么问题呢?希望有经验的玩家来看看。- /*
- * Race: Chameleon Functions
- */
- public CHAM_Randomize()
- {
- if ( get_pcvar_num( CVAR_wc3_races ) == 9 && get_pcvar_num( CVAR_wc3_cham_random ) )
- {
- new i, iNewSkill, iType;
- // Lets loop through and find some skills!
- for ( i = 0; i < 5; i++ )
- {
- iNewSkill = random_num( 0, MAX_SKILLS - 1 );
-
- // Trainable Skills
- if ( i < 3 )
- {
- iType = SKILL_TYPE_TRAINABLE;
- }
- // Ultimate
- else if ( i == 3 )
- {
- iType = SKILL_TYPE_ULTIMATE;
- }
- // Passive Ability
- else if ( i == 4 )
- {
- iType = SKILL_TYPE_PASSIVE;
- }
-
- // Loop until we find the right type of skill and while the skill exists ( we don't want a duplicate skill!! )
- while ( g_SkillType[iNewSkill] != iType || CHAM_SkillExists( iNewSkill ) )
- {
- iNewSkill = random_num( 0, MAX_SKILLS - 1 );
- }
- g_ChamSkills[i] = iNewSkill;
- }
- // Do we need to set-up the skills for certain players?
- new iPlayers[32], iNumPlayers, id;
- get_players( iPlayers, iNumPlayers );
- for ( i = 0; i < iNumPlayers; i++ )
- {
- id = iPlayers[i];
- if ( p_data[id][P_RACE] == RACE_CHAMELEON )
- {
-
- // Reset everything
- SM_ResetSkillLevels( id );
- SM_ResetSkills( id );
- // Set up the player's race again
- SM_SetPlayerRace( id, RACE_CHAMELEON );
- // Set up the player's skill levels
- CHAM_ConfigureSkills( id );
-
- // After skills set up - we need to configure the race!
- WC3_SetRaceUp( id );
- }
- }
- }
- }
- CHAM_SkillExists( skill_id )
- {
- new i;
- for ( i = 0; i < 5; i++ )
- {
- if ( g_ChamSkills[i] == skill_id )
- {
- return true;
- }
- }
- return false;
- }
- CHAM_Configure()
- {
- // Configure the Chameleon Race
- if ( !get_pcvar_num( CVAR_wc3_cham_random ) )
- {
- g_ChamSkills[0] = get_pcvar_num( CVAR_wc3_cham_skill1 );
- g_ChamSkills[1] = get_pcvar_num( CVAR_wc3_cham_skill2 );
- g_ChamSkills[2] = get_pcvar_num( CVAR_wc3_cham_skill3 );
- g_ChamSkills[3] = get_pcvar_num( CVAR_wc3_cham_ultimate );
- g_ChamSkills[4] = get_pcvar_num( CVAR_wc3_cham_passive );
- // Lets do some error checking b/c I know some people will fuck this up...
-
- new i, bool:bError = false;
- for ( i = 0; i < 3; i++ )
- {
- if ( !CHAM_ValidSkill( g_ChamSkills[i], SKILL_TYPE_TRAINABLE ) )
- {
- WC3_Log( true, "Invalid trainable skill for cvar wc3_cham_skill%d: %d", i+1, g_ChamSkills[i] );
- bError = true;
- }
- }
-
- // Check Ultimate
- if ( !CHAM_ValidSkill( g_ChamSkills[3], SKILL_TYPE_ULTIMATE ) )
- {
- WC3_Log( true, "Invalid ultimate skill for cvar wc3_cham_ultimate: %d", g_ChamSkills[3] );
- bError = true;
- }
- // Check Passive
- if ( !CHAM_ValidSkill( g_ChamSkills[4], SKILL_TYPE_PASSIVE ) )
- {
- WC3_Log( true, "Invalid passive skill for cvar wc3_cham_passive: %d", g_ChamSkills[4] );
- bError = true;
- }
- if ( bError )
- {
- set_pcvar_num( CVAR_wc3_cham_random, 1 )
- }
- }
- }
- // This will randomly assign skills to a player w/chameleon
- CHAM_ConfigureSkills( id )
- {
- // Keep giving the a random skill until we have no more to give!
- while ( SM_GiveRandomSkillPoint( id ) ) {}
- // Display /level info...
- WC3_ShowRaceInfo( id );
- }
- CHAM_ValidSkill( skill_id, iType )
- {
- if ( skill_id < 0 || skill_id >= MAX_SKILLS )
- {
- return false;
- }
- if ( g_SkillType[skill_id] != iType )
- {
- return false;
- }
- return true;
- }
复制代码 |
|