| 
				
				Автоисправление
				 | 
 | 
| 
Darkeneez
 | 
Дата: Вторник, 09.07.2013, 16:38:52 | Сообщение # 1 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
 И снова привет. 
   Надеюсь сейчас я объясню все нормально.   Вот смотрите, у нас есть команда !asd, при ее вводе мы получаем аргумент, который к примеру равен 30. НО исходя из этого аргумента нам нужно засечь таймер. А ведь таймер работает только с float => аргумент должен выглядеть так 30.0 
   Можно ли как-нибудь сделать, чтобы шло "автоисправление". т.е чтобы не ввел игрок, таймер будет запускаться правильно. 
 | 
 
|   | 
 |    | 
| 
TEIN
 | 
Дата: Вторник, 09.07.2013, 16:42:07 | Сообщение # 2 |  
  
  |  
Сообщений: 563
 
Репутация: 78 [ +/- ]
 |   
 | 
 CreateTimer(StringToFloat(arg), Timer) 
 | 
 
|   | 
 |    | 
| 
Darkeneez
 | 
Дата: Вторник, 09.07.2013, 17:10:44 | Сообщение # 3 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
Спасибо.Добавлено (09.07.2013, 17:10:44) --------------------------------------------- Не буду создавать новую тему. Вот этот участок кода (Detonate(client), крашит сервер, причем раньше этого не было (до обновления)) не подскажите в чем дело? 
    Код public Action:Command_Detonate(client, args)   {     if(!g_lr)    {     if (GetClientTeam(client) == 2)     {      if(IsPlayerAlive(client))      {       if(g_iready[client])       {        if (g_ibomb[client] && b_timer[client] == INVALID_HANDLE)        {         b_timer[client] = CreateTimer(3.0, Babah, client);        }        else        {         PrintToChat(client, "\x07%06X[Jhad]\x07%06XУ вас нет бомбы. Или вы уже взрываетесь (^_^)",  0xFFFF00, 0xFF6600);        }       }       else       {        PrintToChat(client, "\x07%06X[Jhad]\x07%06XБомба еще не готова",  0xFFFF00, 0xFF6600);       }      }      else      {       PrintToChat(client, "\x07%06X[Jhad]\x07%06XТы не террорист",  0xFFFF00, 0xFF6600);      }     }    }    else    {     PrintToChat(client, "\x07%06X[Jhad]\x07%06XНельзя взрываться во время !lr",  0xFFFF00, 0xFF6600);    }        return Plugin_Handled;   } 
   public Action:Babah(Handle:timer, any:client)   {    Detonate(client);   } 
   Detonate(client)   {    // Explosion!    new ExplosionIndex = CreateEntityByName("env_explosion");    if (ExplosionIndex != -1)    {     new radius = GetConVarInt(g_iradius); 
     SetEntProp(ExplosionIndex, Prop_Data, "m_spawnflags", 16384);     SetEntProp(ExplosionIndex, Prop_Data, "m_iMagnitude", GetConVarInt(g_iDamage));     SetEntProp(ExplosionIndex, Prop_Data, "m_iRadiusOverride", radius); 
     DispatchSpawn(ExplosionIndex);     ActivateEntity(ExplosionIndex);          new Float:playerEyes[3];     GetClientEyePosition(client, playerEyes);     new clientTeam = GetEntProp(client, Prop_Send, "m_iTeamNum"); 
     TeleportEntity(ExplosionIndex, playerEyes, NULL_VECTOR, NULL_VECTOR);     SetEntPropEnt(ExplosionIndex, Prop_Send, "m_hOwnerEntity", client);     SetEntProp(ExplosionIndex, Prop_Send, "m_iTeamNum", clientTeam); 
     EmitAmbientSound("ambient/explosions/explode_1.wav", NULL_VECTOR, client);          AcceptEntityInput(ExplosionIndex, "Explode");     AcceptEntityInput(ExplosionIndex, "Kill"); 
     ForcePlayerSuicide(client);          g_ibomb[client] = false;          b_timer[client] = INVALID_HANDLE;    }   }  
 | 
 
|   | 
 |    | 
| 
TEIN
 | 
Дата: Вторник, 09.07.2013, 17:19:08 | Сообщение # 4 |  
  
  |  
Сообщений: 563
 
Репутация: 78 [ +/- ]
 |   
 | 
 Крашит постоянно? Сделай логирование после каждого условия, поймешь, думаю, в чем проблема 
 | 
 
|   | 
 |    | 
| 
Darkeneez
 | 
Дата: Вторник, 09.07.2013, 17:26:04 | Сообщение # 5 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
 В том то и дело что в логах чисто. 
 | 
 
|   | 
 |    | 
| 
TEIN
 | 
Дата: Вторник, 09.07.2013, 17:37:18 | Сообщение # 6 |  
  
  |  
Сообщений: 563
 
Репутация: 78 [ +/- ]
 |   
 | 
 Сделай логирование =\ 
 | 
 
|   | 
 |    | 
| 
Darkeneez
 | 
Дата: Вторник, 09.07.2013, 17:43:17 | Сообщение # 7 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
 Как? Я умею только LogTofile, но не думаю что он поможет. 
 
 Сообщение отредактировал Darkeneez - Вторник, 09.07.2013, 17:43:25  | 
 
|   | 
 |    | 
| 
TEIN
 | 
Дата: Вторник, 09.07.2013, 17:47:21 | Сообщение # 8 |  
  
  |  
Сообщений: 563
 
Репутация: 78 [ +/- ]
 |   
 | 
 Делаешь логирование, смотришь, как упадет сервер, идешь и смотришь логи 
 | 
 
|   | 
 |    | 
| 
Darkeneez
 | 
Дата: Вторник, 09.07.2013, 17:52:05 | Сообщение # 9 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
 Логирование Sourcemod, или в плагин вшить? Если в плагин, то повторюсь я не умею, можешь объяснить?Я умею только LogTofile и все. 
 | 
 
|   | 
 |    | 
| 
TEIN
 | 
Дата: Вторник, 09.07.2013, 17:55:22 | Сообщение # 10 |  
  
  |  
Сообщений: 563
 
Репутация: 78 [ +/- ]
 |   
 | 
 LogError 
 | 
 
|   | 
 |    | 
| 
Darkeneez
 | 
Дата: Вторник, 09.07.2013, 18:04:16 | Сообщение # 11 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
Написало по латински в белом квадратке SOH, даже не копируется для вставки. Думаю я что-то не то сделал верно? 
   Код     decl String:error[256];     LogError(error);     
 | 
 
|   | 
 |    | 
| 
TEIN
 | 
Дата: Вторник, 09.07.2013, 18:10:02 | Сообщение # 12 |  
  
  |  
Сообщений: 563
 
Репутация: 78 [ +/- ]
 |   
 | 
 Каждое условие дублируй и все   LogError("Твое условие из кода"); 
 | 
 
|   | 
 |    | 
| 
Darkeneez
 | 
Дата: Вторник, 09.07.2013, 18:12:36 | Сообщение # 13 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
 Т.е 
   LogError("if (GetClientTeam(client) == 2)"); 
   или вообще так 
   LogError(" if(g_iready[client])   {   if (g_ibomb[client] && b_timer[client] == INVALID_HANDLE)   {   b_timer[client] = CreateTimer(3.0, Babah, client);   } "); 
 | 
 
|   | 
 |    | 
| 
TEIN
 | 
Дата: Вторник, 09.07.2013, 18:19:42 | Сообщение # 14 |  
  
  |  
Сообщений: 563
 
Репутация: 78 [ +/- ]
 |   
 | 
 По одному условию дублилуйй 
 | 
 
|   | 
 |    | 
| 
Darkeneez
 | 
Дата: Среда, 10.07.2013, 05:35:21 | Сообщение # 15 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
Код    if(IsPlayerAlive(client))      {       if(g_iready[client])       {        if (g_ibomb[client] && b_timer[client] == INVALID_HANDLE)        {         b_timer[client] = CreateTimer(3.0, Babah, client);                  LogError(if (g_ibomb[client] && b_timer[client] == INVALID_HANDLE));         LogError("if (g_ibomb[client] && b_timer[client] == INVALID_HANDLE)");         return Plugin_Handled;        }        else         {         PrintToChat(client, "\x07%06X[Jhad]\x07%06XУ вас нет бомбы. Или вы уже взрываетесь (^_^)",  0xFFFF00, 0xFF6600);                 }                LogError(if(g_iready[client]));        LogError("if(g_iready[client])");       }       else       {        PrintToChat(client, "\x07%06X[Jhad]\x07%06XБомба еще не готова",  0xFFFF00, 0xFF6600);       }       LogError(if(IsPlayerAlive(client)));      }   
   Правильно?Добавлено (10.07.2013, 05:35:21) --------------------------------------------- Не работает логирование.  
 | 
 
|   | 
 |    |