Советы, пожелания по плагину

Тема в разделе "Общие вопросы", создана пользователем Vit_ amin, 30 дек 2013.

  1. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    Всем привет. Недавно стал изучать SourcePawn очень мучительно настолько трудный почему то язык для меня не могу его учить по накатанной. В общем написал плагин возрождение игрока за деньги хочется узнать критику ну и как оптимизация и прочее ?
     

    Вложения:

    • test_2.sp
      Размер файла:
      1,3 КБ
      Просмотров:
      2
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.993
    Симпатии:
    2.989
    Vit_ amin,
    PHP:
    HookEvent("player_say"Hook_PlayerSay);
    Бред.
    Замени на
    PHP:
    RegConsoleCmd("sm_respawn"Call);
    И тогда
    PHP:
    public Hook_PlayerSay(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        
    decl String:command[10];
        
    GetEventString(event"text"commandsizeof(command));
    на

    PHP:
    public Action:Call(clientargs)
    {
    Это:
    PHP:
    if (StrEqual(command"!respawn") && client 0)
        {
    не нужно будет

    только
    PHP:
    if (client 0)
    {
    PHP:
    if (i_Get_Money >= GetConVarInt(h_CvarMoney))
    Лучше получи при старте GetConVarInt(h_CvarMoney) и запиши в глобальную переменную.

    Пока хватит. :)
     
    Vit_ amin нравится это.
  3. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    А если моя цель использовать именно !respawn а не sm_respawn и /respawn а именно этот текст.

    Добавлено через 1 минуту
    Не совсем понял .
     
    Последнее редактирование: 30 дек 2013
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.993
    Симпатии:
    2.989
    В чате будет !respawn и /respawn, а в консоле sm_respawn


    В этом фишка RegConsoleCmd


    PHP:
    new g_iMoney;

    public 
    OnPluginStart()
    {
    //код
    g_iMoney GetConVarInt(h_CvarMoney);
    }
    И дальше юзаешь g_iMoney
     
  5. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    А разве если я не заменю серверную переменную sv_respawn_player на свое значение оно же не поменяется так как хук будет только в начале работы плагина, альтернатива HookConVarChanged ?
     
  6. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.993
    Симпатии:
    2.989
    Vit_ amin, просто нужно потом сделать HookConVarChange
     
  7. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    А почему раз такое дело не сделать локальную переменную и вогнать туда значение уже .Или все же лучше делать по твоему методу просто создание глобальных переменных в отличае от локальных отражается на оптимизации ... Или я не прав ?
     
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.993
    Симпатии:
    2.989
    А как ты потом локальную будешь юзать?
     
  9. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    У меня всего 1 блок в данном плагине .
    PHP:
    public Hook_PlayerSay(Handle:event, const String:name[], bool:dontBroadcast)
    {
     new 
    client GetClientOfUserId(GetEventInt(event"userid"));
     
    decl String:command[10];
     
    GetEventString(event"text"commandsizeof(command));
     new 
    i_Client_Money GetConVarInt(h_CvarMoney);
     new 
    i_Get_Money GetEntProp(clientProp_Send"m_iAccount");
     new 
    i_Money_Function;
     if (
    StrEqual(command"!respawn") && client 0)
     {
      if (!
    IsPlayerAlive(client))
      {
       if (
    i_Get_Money >= i_Client_Money))
       {
        
    i_Money_Function i_Get_Money i_Client_Money;
        
    SetEntProp(clientProp_Send"m_iAccount"i_Money_Function);
        
    CS_RespawnPlayer(client);
        
    PrintToChat(client"[SM] Вы возрождены");
       }
       else
       {
        
    i_Money_Function i_Client_Money i_Get_Money;
        
    PrintToChat(client"[SM] Для возрождения вам необходимо %i $"i_Money_Function);
       }
      }
      else 
    PrintToChat(client"[SM] Вы не можете использовать возрождение - вы живы");
     }
    }
    Или так нельзя ?
     
  10. semjef

    semjef semjef.ru

    Сообщения:
    1.031
    Симпатии:
    473
    Vit_ amin, это кривовато
     
  11. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.993
    Симпатии:
    2.989
    Vit_ amin, но тем не мене ты умудрился 3 раза получить значение квара.
    Я свои замечания высказал, а вот что из этого взять на заметку- дело твое.
     
    Vit_ amin нравится это.
  12. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    Спасибо я понял.