Archived copy of war3source.com, the War3Source forum (2009–2020), rebuilt from the Internet Archive by wc3mods.net. This page was captured on 2012-10-25 (original capture). Forum · All archived topics · Wiki · Bug tracker · Blog
Chat

War3:Source
October 24, 2012, 07:17:42 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Download: http://war3source.com/index.php?board=9.0
What is War3Source?: http://war3source.com/index.php?topic=200.0
Sample Stats: http://war3source.com/war3stats
Steam Community Group: http://steamcommunity.com/groups/war3source
War3Source SVN Checkout: http://ownageclan.com/svn/war3source/
War3Source servers: http://www.game-monitor.com/search.php?vars=war3_version=
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: [Russian] Все таки надо создать тему про ошибки рас.  (Read 504 times)
Han
Full Member
***
Posts: 134



View Profile WWW
« on: December 05, 2011, 02:08:04 PM »

Вот опять столкнулся с нестандартной расой и ошибка уже на сервере, а компилится без ошибок. Вот его ошибка на сервере:

Quote
War3_DealDamage called when DealDamage is not suppose to be called, please use the non PRE forward
Mon Dec  5 00:40:37 2011 war3source/compiled/War3Source_067_Clinkz-BoneFletcher.smx

Вот его исходник, я добавил слово "Pre" и вот что получилось:

Quote
public OnW3TakeDmgBulletPre(victim,attacker,Float:damage)//OnWar3EventPostHurt( victim, attacker, damage )
А ошибки на сервере пошли теперь другого характера,как выше написано.
Вот код расы:

Quote
public OnW3TakeDmgBulletPre(victim,attacker,Float:damage)//OnWar3EventPostHurt( victim, attacker, damage )
{
   if( W3GetDamageIsBullet() && ValidPlayer( victim, true ) && ValidPlayer( attacker, true ) && GetClientTeam( victim ) != GetClientTeam( attacker ) )
   {
      if( War3_GetRace( attacker ) == thisRaceID && !W3HasImmunity(victim,Immunity_Skills) && !Hexed( attacker, false ))
      {
         new skill_level_strafe=War3_GetSkillLevel(attacker,thisRaceID,SKILL_1);
         if(skill_level_strafe>0)
         {   
            if( GetRandomFloat( 0.0, 1.0 ) <= 0.30 )
            {
               new arrows = StrafeArrows[attacker];
               for(new num=1;num<=arrows;num++)
               FireArrow(attacker,victim,GetRandomFloat(0.1,5.1),skill_level_strafe,false);
            }
         }
         new skill_dmg = War3_GetSkillLevel( attacker, thisRaceID, SKILL_2 );
         if(skill_dmg > 0)
         {
            if( GetRandomFloat( 0.0, 1.0 ) <= GetConVarFloat(SearingArrowCh) )
            {
               new String:wpnstr[32];
               GetClientWeapon( attacker, wpnstr, 32 );
               if(!StrEqual( wpnstr, "wep_knife" ) )
               {
                  if(FireArrow(attacker,victim,0.2,0,true))
                  {
                     new damageamount = GetRandomInt(3,5);
                     FireArrow(attacker,victim,1.8,0,true);
                     EmitSoundToAll(Sound2,victim);
                     EmitSoundToAll(Sound3,attacker);
                     CreateFire(victim,"3355","2","3","normal","16",0.0,3.0);
                     War3_DealDamage( victim, damageamount, attacker, DMG_BULLET, "searing_arrow" );
                     PrintCenterText(attacker,"Searing Arrows dealt +%i damage!",damageamount);
                  }
               }
            }
         }
      }
   }
}

Как быть? В чем опять моя ошибка?
Logged

Divix
Sr. Member
****
Posts: 280


View Profile Email
« Reply #1 on: December 05, 2011, 03:20:00 PM »

Во первых: зачем флудить ? Продолжал бы свою тему...
Во вторых: может быть я туплю на ночь, но не мог бы выложить полный код расы ?
В третьих: френзи извиняюсь конечно за флуд, но тему я тоже создам, вернее опишу как выкладывать и излагать проблему.
Logged
Arturius
Moderator
Full Member
*****
Posts: 155



View Profile Email
« Reply #2 on: December 05, 2011, 04:29:57 PM »

Pre ставится только в тех функциях, где используется War3_DamageModPercent! А у тебя War3_DealDamage! Вот твоя ошибка.
Logged
Han
Full Member
***
Posts: 134



View Profile WWW
« Reply #3 on: December 06, 2011, 03:27:44 AM »

Спасибо всем сразу хочу задать следующий вопрос.
Раса warden,на версии 1.2.3.5. Хотел уменьшить время регена, свое значение было 20 секунд, я вместо этого прописал 10 секунд как видно ниже. Но он регенится всеравно 20 секунд как вот это можно сделать?


Quote
public OnPluginStart()
{
   
   ultCooldownCvar=CreateConVar("war3_warden_vengence_cooldown","10","Cooldown between Warden Vengence (ultimate)");
   
   CreateTimer(0.2,CalcBlink,_,TIMER_REPEAT);
   OriginOffset=FindSendPropOffs("CBaseEntity","m_vecOrigin");
   MyWeaponsOffset=FindSendPropOffs("CBaseCombatCharacter","m_hMyWeapons");
   //Clip1Offset=FindSendPropOffs("CBaseCombatWeapon","m_iClip1");
   AmmoOffset=FindSendPropOffs("CBasePlayer","m_iAmmo");
   
   if(War3_GetGame()==Game_CS){
      HookEvent("player_death",PlayerDeathEvent);
      HookEvent("round_start",RoundStartEvent);
      ultMaxCvar=CreateConVar("war3_warden_vengence_max","0","Max number of revivals from vengence per round (CS only), 0 for unlimited");
   }
   RegConsoleCmd("testsnd",testsndcmd);
   
   LoadTranslations("w3s.race.warden.phrases");
}
Logged

alex0310
Full Member
***
Posts: 170



View Profile
« Reply #4 on: December 06, 2011, 10:46:17 AM »

Спасибо всем сразу хочу задать следующий вопрос.
Раса warden,на версии 1.2.3.5. Хотел уменьшить время регена, свое значение было 20 секунд, я вместо этого прописал 10 секунд как видно ниже. Но он регенится всеравно 20 секунд как вот это можно сделать?



   
   ultCooldownCvar=CreateConVar("war3_warden_vengence_cooldown","10","Cooldown between Warden Vengence (ultimate)");
   
   
Это не реген, это время между активацией Ultimate, для этой расы.
Logged
Divix
Sr. Member
****
Posts: 280


View Profile Email
« Reply #5 on: December 06, 2011, 11:13:27 AM »

Раса warden,на версии 1.2.3.5. Хотел уменьшить время регена, свое значение было 20 секунд, я вместо этого прописал 10 секунд как видно ниже. Но он регенится всеравно 20 секунд как вот это можно сделать?

А как работает в тф у него реген (ультимейт) ?

alex0310, если я правильно понял скил, то он это и имел ввиду.

Вопрос: Зачем придумали CreateConVar ?
Ответ: CreateConVar нужны для того, чтобы в .cfg прописывать первый аргумент (в данном случае war3_warden_vengence_cooldown) и его значение, 2 аргумент (в данном случае 10), и получить результат (в данном случае уменьшить время откаты ульты)

Что из этого следует усвоить: в war3source.cfg входишь и пишешь в конец war3_warden_vengence_cooldown   "10"
Если так сильно хочется изменить код расы, то:
1) Удаляешь new Handle:ultCooldownCvar; и ultCooldownCvar=CreateConVar("war3_warden_vengence_cooldown","20","Cooldown between Warden Vengence (ultimate)");
2) Ищешь GetConVarFloat(ultCooldownCvar) (все, т.е. в данном случае 2 штуки) и заменяешь на нужное тебе время (вот только не помню надо писать 10 или 10.0 (кажется второе)).
Logged
Han
Full Member
***
Posts: 134



View Profile WWW
« Reply #6 on: December 06, 2011, 01:03:43 PM »

Ну Братан огромное тебе спасибо.
Logged

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!