Спидометр

Тема в разделе "Программирование / Скриптинг", создана пользователем Anub1s, 30 май 2016.

  1. Anub1s

    Anub1s

    Сообщения:
    37
    Симпатии:
    1
    Помогите исправить ошибки в плагине - [Pawn] #include <sourcemod> #include <sdktools> #define PLUGIN_NAME "Speed Meter" - Pastebin.com

    Вот сами ошибки:
    script.sp(15) : warning 213: tag mismatch
    script.sp(40) : error 100: function prototypes do not match
    script.sp(93) : error 017: undefined symbol "args"
    script.sp(94) : error 035: argument type mismatch (argument 1)
    script.sp(96) : error 017: undefined symbol "elseif"
    script.sp(97) : error 076: syntax error in the expression, or invalid function call
    script.sp(98) : warning 213: tag mismatch
    script.sp(99) : error 035: argument type mismatch (argument 1)
    script.sp(101) : error 017: undefined symbol "elseif"
    script.sp(102) : warning 213: tag mismatch
    script.sp(103) : error 035: argument type mismatch (argument 1)
    script.sp(105) : warning 209: function "SwitchMeter" should return a value
    script.sp(141) : warning 213: tag mismatch

    Я новичок и мне сложновато понять суть ошибок:ac:
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.540
    Симпатии:
    1.984
    new Bool: - с маленькой буквы.
    public Action:SwitchMeter () --> public Action:SwitchMeter(client, args)
    Пишется раздельно: else if
    return Plugin_Handled;
    return Bool:GetConVarBool (g_switch); --> return GetConVarBool(g_switch);
     
  3. Anub1s

    Anub1s

    Сообщения:
    37
    Симпатии:
    1
    [Pawn] #include <sourcemod> #include <sdktools> #define PLUGIN_NAME "Speed Meter" - Pastebin.com


    script.sp(94) : error 035: argument type mismatch (argument 1)
    script.sp(97) : error 035: argument type mismatch (argument 1)
    script.sp(98) : warning 213: tag mismatch
    script.sp(100) : error 035: argument type mismatch (argument 1)
    script.sp(101) : warning 213: tag mismatch
    script.sp(103) : warning 209: function "SwitchMeter" should return a value
    script.sp(139) : warning 213: tag mismatch
     
  4. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.540
    Симпатии:
    1.984
    PrintToChat("\x04[SM]:\x03 --> PrintToChat(client, "\x01\x04[SM]:\x03
    g_switch = true;
    g_switch = false;
    В конце функции return Plugin_Handled;
     
  5. Monomizer

    Monomizer Мимо пробегал Супер-модератор

    Сообщения:
    1.528
    Симпатии:
    201
    PHP:
    #include <sourcemod>
    #include <sdktools>

    #define PLUGIN_NAME "Speed Meter"
    #define PLUGIN_VERSION "1.0.1"
    #define PLUGIN_DESCRIPTION "Show current player speed in HUD every 2 sec"
    #define PLUGIN_AUTHOR "Petit Renard, Anubis"
    #define PLUGIN_URL "http://css.cooldev.net/"

    new Handle:g_enable INVALID_HANDLE;
    new 
    Handle:g_unit INVALID_HANDLE;
    new 
    Float:lastPosition[MAXPLAYERS 1][3];
    new 
    g_MaxClients;
    new 
    Handle:g_timer INVALID_HANDLE;
    new 
    bool:g_switch false;

    /********************
    * Plugin Info
    *********************/
    public Plugin:myinfo = {
        
    name PLUGIN_NAME,
        
    author PLUGIN_AUTHOR,
        
    description PLUGIN_DESCRIPTION,
        
    version PLUGIN_VERSION,
        
    url PLUGIN_URL
    };

    /********************
    * Start of Plugin
    *********************/
    public OnPluginStart (){
        
    LoadTranslations ("speedmeter.phrases");
      
        
    g_enable CreateConVar ("speedmeter_enable""1""Enable SpeedMeter ? (1 = yes, 0 = no)"FCVAR_PLUGINtrue0.0true1.0);
        
    g_unit CreateConVar ("speedmeter_unit""0""Unit of length (0 = kilometres, 1 = miles)"FCVAR_PLUGINtrue0.0true1.0);
      
        
    CreateConVar ("speedmeter_version"PLUGIN_VERSIONPLUGIN_NAMEFCVAR_PLUGIN FCVAR_REPLICATED FCVAR_NOTIFY);
        
    CreateConVar ("speedmeter_credit"PLUGIN_URLPLUGIN_NAMEFCVAR_PLUGIN FCVAR_REPLICATED FCVAR_NOTIFY);
      
        
    RegConsoleCmd("sm_speed"SwitchMeter);
      
        
    HookEvent ("round_start"Event_RoundStart);
        
    HookEvent ("round_end"Event_RoundEnd);
    }

    /********************
    * Start of Map
    *********************/
    public OnMapStart (){
        
    g_MaxClients GetMaxClients();
    }

    /********************
    * Start of Round
    *********************/
    public Action:Event_RoundStart (Handle:event, const String:name[], bool:dontBroadcast) {
        if (
    IsPluginEnable ()){
            if (
    EnabledForPlar ()) {
                if (
    g_timer != INVALID_HANDLE){
                    
    KillTimer (g_timer);
                    
    g_timer INVALID_HANDLE;
                }
                
    g_timer CreateTimer (1.0Timer_Speed);
            }
        }
        return 
    Plugin_Continue;
    }

    /********************
    * End of Round
    *********************/
    public Action:Event_RoundEnd (Handle:event, const String:name[], bool:dontBroadcast) {
        if (
    g_timer != INVALID_HANDLE) {
            
    KillTimer (g_timer);
            
    g_timer INVALID_HANDLE;
        }
    }

    /********************
    * Speed Timer
    *********************/
    public Action:Timer_Speed (Handle:timerany:nothing) {
        for (new 
    i=1i<=g_MaxClientsi++){
            
    speedMeter (i);
        }
        
    g_timer CreateTimer (1.0Timer_Speed);
    }

    /********************
    * On/Off for Player
    *********************/
    public Action:SwitchMeter (clientargs) {
        if(
    args && args 1)
        {
            
    PrintToChat(client"\x04[SM]:\x03 1 - Включить спидометр; 0 - отключить спидометр");
            return 
    Plugin_Handled;
        }
        else if (
    args == 1)
        {      
            
    PrintToChat(client"\x04[SM]:\x03Вы включили спидометр");
            
    g_switch true;
        }
        else if (
    args == 0)
        {      
            
    PrintToChat(client"\x04[SM]:\x03Вы выключили спидометр");
            
    g_switch false;
        }
        return 
    Plugin_Handled;
    }

    /********************
    * Speed Calculator
    *********************/
    stock speedMeter (client){
        if (
    client && IsClientConnected (client) && IsClientInGame (client) && IsPlayerAlive (client)){
            new 
    Float:newPosition[3], Float:distanceFloat:speedString:message[128], unit;
          
            
    GetClientAbsOrigin (clientnewPosition);
            
    distance GetVectorDistance (lastPosition[client], newPosition);
            
    speed distance 20 2;
            
    lastPosition[client] = newPosition;
          
            
    unit GetConVarInt (g_unit);
            switch (
    unit){
                case 
    0:{
                    
    message "Current speed in kilometers";
                }
                case 
    1:{
                    
    speed speed 1.609347;
                    
    message "Current speed in miles";
                }
            }      
            
    PrintHintText (client"%t"messageRoundToNearest (speed));
        }
    }

    /********************
    * Check Plugin
    *********************/
    stock Bool:IsPluginEnable()
    {
        return 
    GetConVarBool(g_enable);
    }

    stock Bool:EnabledForPlar () 
    {
        return 
    GetConVarBool(g_switch);
    }
     
  6. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.540
    Симпатии:
    1.984
    Ага, щас, возврат неверный) Там он вообще не нужен, без return.
     
  7. Monomizer

    Monomizer Мимо пробегал Супер-модератор

    Сообщения:
    1.528
    Симпатии:
    201
    Убрал позор
    --- Добавлено позже ---
    @AlmazON, Под рукой проверить не начем, но разве в стоках не будет несоответствий тегов?
     
    AlmazON нравится это.
  8. Anub1s

    Anub1s

    Сообщения:
    37
    Симпатии:
    1
    мне постоянно пишет что я выключил спидометр :(
     
  9. Monomizer

    Monomizer Мимо пробегал Супер-модератор

    Сообщения:
    1.528
    Симпатии:
    201
    @AlmazON,
    PHP:
    stock bool:IsPluginEnable()
    {
        return 
    GetConVarBool(g_enable);
    }

    stock bool:EnabledForPlar()
    {
        return 
    g_switch;
    }
    Или вообще без стока?
     
  10. Anub1s

    Anub1s

    Сообщения:
    37
    Симпатии:
    1
    я пишу аргумент "1" и пишет что плагин выключн
     
  11. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.540
    Симпатии:
    1.984
    Оффтоп Может будет работать:
    PHP:
    #include <sourcemod>
    #include <sdktools>

    #define PLUGIN_NAME "Speed Meter"
    #define PLUGIN_VERSION "1.0.1"
    #define PLUGIN_DESCRIPTION "Show current player speed in HUD every 2 sec"
    #define PLUGIN_AUTHOR "Petit Renard, Anubis copy-paste"
    #define PLUGIN_URL "http://css.cooldev.net/"

    new Handle:g_enable INVALID_HANDLE;
    new 
    Handle:g_unit INVALID_HANDLE;
    new 
    Float:lastPosition[MAXPLAYERS 1][3];
    new 
    g_MaxClients;
    new 
    Handle:g_timer INVALID_HANDLE;
    new 
    bool:g_switch[MAXPLAYERS 1];

    /********************
    * Plugin Info
    *********************/
    public Plugin:myinfo = {
        
    name PLUGIN_NAME,
        
    author PLUGIN_AUTHOR,
        
    description PLUGIN_DESCRIPTION,
        
    version PLUGIN_VERSION,
        
    url PLUGIN_URL
    };

    /********************
    * Start of Plugin
    *********************/
    public OnPluginStart (){
        
    LoadTranslations ("speedmeter.phrases");
        
        
    g_enable CreateConVar ("speedmeter_enable""1""Enable SpeedMeter ? (1 = yes, 0 = no)"FCVAR_PLUGINtrue0.0true1.0);
        
    g_unit CreateConVar ("speedmeter_unit""0""Unit of length (0 = kilometres, 1 = miles)"FCVAR_PLUGINtrue0.0true1.0);
        
        
    CreateConVar ("speedmeter_version"PLUGIN_VERSIONPLUGIN_NAMEFCVAR_PLUGIN FCVAR_REPLICATED FCVAR_NOTIFY);
        
    CreateConVar ("speedmeter_credit"PLUGIN_URLPLUGIN_NAMEFCVAR_PLUGIN FCVAR_REPLICATED FCVAR_NOTIFY);
        
        
    RegConsoleCmd("sm_speed"SwitchMeter);
        
        
    HookEvent ("round_start"Event_RoundStart);
        
    HookEvent ("round_end"Event_RoundEnd);
    }

    /********************
    * Start of Map
    *********************/
    public OnMapStart (){
        
    g_MaxClients GetMaxClients();
    }

    /********************
    * Start of Round
    *********************/
    public Event_RoundStart (Handle:event, const String:name[], bool:dontBroadcast) {
        if (
    GetConVarBool (g_enable)){
            if (
    g_timer != INVALID_HANDLE){
                
    KillTimer (g_timer);
            }
            
    g_timer CreateTimer (1.0Timer_Speed);
        }
    }

    /********************
    * End of Round
    *********************/
    public Event_RoundEnd (Handle:event, const String:name[], bool:dontBroadcast) {
        if (
    g_timer != INVALID_HANDLE) {
            
    KillTimer (g_timer);
            
    g_timer INVALID_HANDLE;
        }
    }

    /********************
    * Speed Timer
    *********************/
    public Action:Timer_Speed (Handle:timerany:nothing) {
        for (new 
    i=1i<=g_MaxClientsi++){
            if (
    g_switch[i]) speedMeter (i);
        }
        
    g_timer CreateTimer (1.0Timer_Speed);
    }

    /********************
    * On/Off for Player
    *********************/
    public Action:SwitchMeter (clientargs) {
        if (
    client) {
            if (
    g_switch[client]) {        
                
    PrintToChat(client"\x01\x04[SM]:\x03Вы выключили спидометр");
                
    g_switch[client] = false;
            }
            else {        
                
    PrintToChat(client"\x01\x04[SM]:\x03Вы включили спидометр");
                
    g_switch[client] = true;
            }
        }
        return 
    Plugin_Handled;
    }

    /********************
    * Speed Calculator
    *********************/
    stock speedMeter (client){
        if (
    IsPlayerAlive (client)){
            new 
    Float:newPosition[3], Float:distanceFloat:speedString:message[128], unit;
            
            
    GetClientAbsOrigin (clientnewPosition);
            
    distance GetVectorDistance (lastPosition[client], newPosition);
            
    speed distance 20 2;
            
    lastPosition[client] = newPosition;
            
            
    unit GetConVarInt (g_unit);
            switch (
    unit){
                case 
    0:{
                    
    message "Current speed in kilometers";
                }
                case 
    1:{
                    
    speed speed 1.609347;
                    
    message "Current speed in miles";
                }
            }        
            
    PrintHintText (client"%t"messageRoundToNearest (speed));
        }
    }
    Оффтоп