Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя
Показано с 1 по 10 из 36
  1. #1
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±

    Убивает после захода на сервер.

    Решил я, значит, написать античит на хп. Что-то пошло не так, и теперь при заходе на сервер меня убивает, после смерти появляюсь на Groove Street. Что делать? В интернете видел подобные вопросы, но решения так и не нашел.


    OnPlayerDeath:
      Открыть/закрыть
    PHP код:
    public OnPlayerDeath(playeridkilleridreason)
    {
        for(new 
    07i++)
        {
            
    TextDrawHideForPlayer(playerid,Logo[i]);
        }
        
    SetPlayerHealthEx(playerid,13.31);
        return 
    1;


    OnPlayerSpawn:
      Открыть/закрыть
    PHP код:
    public OnPlayerSpawn(playerid)
    {
        
    DeleteF4Bug[playerid] = false;
        if(
    pData[playerid][pSkin] == 0)
        {
            if(
    pData[playerid][pGender] == 1)
            {
                
    SetPlayerSkin(playeridMaleSkins[0]);
            }
            else
            {
                
    SetPlayerSkin(playeridFemaleSkins[0]);
            }
            
    SCM(playerid,COLOR_ORANGE,"Âûáåðèòå âíåøíîñòü Âàøåãî ïåðñîíàæà");
              
    TogglePlayerControllable(playerid,0);
            
    SetPlayerVirtualWorld(playerid,playerid+1);
            
    SetPlayerPos(playerid,1575.8920,-1235.2469,151.6970);
            
    SetPlayerFacingAngle(playerid,129.8999);
            
    SetPlayerCameraPos(playerid,1571.8352,-1239.6108,153.0927);
            
    SetPlayerCameraLookAt(playerid,1576.4738,-1234.8547,151.6970);
            
    SelectTextDraw(playerid0xFFFFFFFF);
            return 
    1;
        }
        if(
    GetPVarInt(playerid"loggined") == 1)
        {
            for(new 
    07i++)
            {
                
    TextDrawHideForPlayer(playerid,Logo[i]),TextDrawShowForPlayer(playerid,Logo[i]);
            }
            
    SetPlayerScore(playeridpData[playerid][pLevel]);
            
    GivePlayerMoney(playeridpData[playerid][pMoney]);
            
    SetPlayerHealthEx(playeridpData[playerid][pHealth]);
            if(
    pData[playerid][pFractionSkin] == 0)
            {
                
    SetPlayerSkin(playerid,pData[playerid][pSkin]);
            }
            else
            {
                 
    SetPlayerSkin(playerid,pData[playerid][pFractionSkin]);
            }
             
    SetPlayerVirtualWorld(playerid,0);
               
    TogglePlayerControllable(playerid,0);
               if(
    pData[playerid][pSpawn] == 1)
               {
                if(
    pData[playerid][pLevel] <= 3)
                {
                    new 
    spawnls random(4);
                    if(
    spawnls == 0)
                    {
                        
    SetPlayerPos(playerid,1762.3660,-1893.1317,13.5606);
                        
    SetPlayerFacingAngle(playerid,270.7868);
                    }
                    if(
    spawnls == 1)
                    {
                        
    SetPlayerPos(playerid,1154.5562,-1768.4633,16.5938);
                        
    SetPlayerFacingAngle(playerid,1.7675);
                    }
                    if(
    spawnls == 2)
                    {
                        
    SetPlayerPos(playerid,1765.0052,-1903.4672,13.5663);
                        
    SetPlayerFacingAngle(playerid,270.7868);
                    }
                    if(
    spawnls == 3)
                    {
                        
    SetPlayerPos(playerid,1147.7163,-1768.9059,16.5992);
                        
    SetPlayerFacingAngle(playerid,0.7231);
                    }
                }
                if(
    pData[playerid][pLevel] > && pData[playerid][pLevel] <= 8)
                {
                    
    SetPlayerPos(playerid,-1969.0582,159.8374,27.6875);
                    
    SetPlayerFacingAngle(playerid,177.5901);
                }
                if(
    pData[playerid][pLevel] >= 9)
                {
                    
    SetPlayerPos(playerid,2846.0134,1291.2833,11.3906);
                    
    SetPlayerFacingAngle(playerid,92.5072);
                }
            }
            if(
    pData[playerid][pSpawn] == 2)
            {
                if(
    pData[playerid][pRank] == gFractionRankCount[pData[playerid][pFraction]-1])
                {
                    
    SetPlayerPos(playerid,gFractionSpawnPos[pData[playerid][pFraction]-1][0],gFractionSpawnPos[pData[playerid][pFraction]-1][1],gFractionSpawnPos[pData[playerid][pFraction]-1][2]);
                    
    SetPlayerFacingAngle(playerid,gFractionSpawnPos[pData[playerid][pFraction]-1][3]);
                }
                else
                {
                    new 
    fraction pData[playerid][pFraction]-1subfraction pData[playerid][pSubFraction]-1;
                    
    SetPlayerPos(playerid,gSubFractionSpawnPos[fraction][subfraction][0],gSubFractionSpawnPos[fraction][subfraction][1],gSubFractionSpawnPos[fraction][subfraction][2]);
                    
    SetPlayerFacingAngle(playerid,gSubFractionSpawnPos[fraction][subfraction][3]);
                }
            }
            
    SetCameraBehindPlayer(playerid);
            if(!
    pData[playerid][pFraction]) SetPlayerColor(playerid,0xFFFFFFFF);
            else
            {
                
    SetPlayerColor(playerid,gFractionColor[pData[playerid][pFraction]-1]);
            }
            
    SetTimerEx("UnFreeze",2000,false,"i",playerid);
        }
        return 
    1;


    OnPlayerTakeDamage:
      Открыть/закрыть
    PHP код:
    public OnPlayerTakeDamage(playeridissueridFloatamountweaponidbodypart)
    {
        if(
    bodypart == 9)
        {
            if(
    issuerid != INVALID_PLAYER_ID)
            {
                
    SetPlayerHealthEx(playerid,0.0);
            }
        }
        if(
    spawned[playerid] == false)
        {
            
    SetPlayerHealthEx(playerid,pData[playerid][pHealth]-amount);
        }
        else 
    spawned[playerid] = false;
        return 
    1;


    Таймер проверки ХП:
      Открыть/закрыть
    PHP код:
    forward secondupdate();
    public 
    healthupdate()
    {
        foreach(new 
    i:Player)
        {
            
    GetPlayerHealth(i,pTemp[i][pHealth]);
            if(
    pTemp[i][pHealth] != pData[i][pHealth]) SetPlayerHealthEx(i,pData[i][pHealth]);
            
    pTemp[i][pHealth] = 0.0;
             }



    И тут я выяснил, что если убрать строку
    PHP код:
    SetPlayerHealthEx(playerid,pData[playerid][pHealth]-amount); 
    в OnPlayerTakeDamage - меня не убьет, НО если я ее уберу - не буду получать урон от падений.

    Может кто подсказать адекватное решение?

  2. #2
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Данные с поля в переменную pData[playerid][pHealth] загружаются?

  3. #3
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Данные с поля в переменную pData[playerid][pHealth] загружаются?
    Да, загружаются.

    PHP код:
    cache_get_field_content(0"health"temp), pData[playerid][pHealth] = floatstr(temp); 

  4. #4
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от nikvlad Посмотреть сообщение
    Да, загружаются.

    PHP код:
    cache_get_field_content(0"health"temp), pData[playerid][pHealth] = floatstr(temp); 
    В базе корректно отображает?
    100
    PHP код:
    pData[playerid][pHealth] = cache_get_field_content_float(0"health"/*ID подключения*/); 
    Ошибка может быть в функции SetPlayerHealthEx.

  5. #5
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    В базе корректно отображает?

    PHP код:
    pData[playerid][pHealth] = cache_get_field_content_float(0"health"/*ID подключения*/); 
    Ошибка может быть в функции SetPlayerHealthEx.


    SetPlayerHealthEx:
      Открыть/закрыть
    PHP код:
    stock SetPlayerHealthEx(playerid,Float:hp)
    {
        
    pData[playerid][pHealth] = hp;
        
    SetPlayerHealth(playerid,pData[playerid][pHealth]);
        new 
    query[86];
        
    format(query,sizeof(query), "UPDATE `accounts` SET `health`= '%.2f' WHERE `nickname` = '%s'",pData[playerid][pHealth],pData[playerid][pNickname]);
        
    mysql_function_query(dbHandlequeryfalse"""");




    PHP код:
    C:\Users\Íèêèòà\Desktop\ÒÅÑÒ ÐÅÊÓÐÑÈÈ\gamemodes\Untitled.pwn(1611) : error 017undefined symbol "cache_get_field_content_float" 

  6. #6
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Лучше сохраняй без остатка %.0f.

    PHP код:
    stock SetPlayerHealthEx(playerid,Float:hp

       static const
          
    str[] = "UPDATE `accounts` SET `health`= '%.0f' WHERE `nickname` = '%s'";

       new 
          
    query[sizeof str MAX_PLAYER_NAME - (2)]; 

       
    pData[playerid][pHealth] = hp
       
    SetPlayerHealth(playeridhp); 

       
    format(querysizeof(query), strhppData[playerid][pNickname]); 
       
    mysql_function_query(dbHandlequeryfalse"""");

       return 
    1;

    PHP код:
    C:\Users\Íèêèòà\Desktop\ÒÅÑÒ ÐÅÊÓÐÑÈÈ\gamemodes\Untitled.pwn(1611) : error 017undefined symbol "cache_get_field_content_float" 
    Версия MySQL?

  7. #7
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Лучше сохраняй без остатка %.0f.

    PHP код:
    stock SetPlayerHealthEx(playerid,Float:hp

       static const
          
    str[] = "UPDATE `accounts` SET `health`= '%.0f' WHERE `nickname` = '%s'";

       new 
          
    query[sizeof str MAX_PLAYER_NAME - (2)]; 

       
    pData[playerid][pHealth] = hp
       
    SetPlayerHealth(playeridhp); 

       
    format(querysizeof(query), strhppData[playerid][pNickname]); 
       
    mysql_function_query(dbHandlequeryfalse"""");

       return 
    1;

    PHP код:
    C:\Users\Íèêèòà\Desktop\ÒÅÑÒ ÐÅÊÓÐÑÈÈ\gamemodes\Untitled.pwn(1611) : error 017undefined symbol "cache_get_field_content_float" 
    Версия MySQL?

    PHP код:
      MySQL plugin R7-2 successfully loaded
    - - - Добавлено - - -

    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Лучше сохраняй без остатка %.0f.

    PHP код:
    stock SetPlayerHealthEx(playerid,Float:hp

       static const
          
    str[] = "UPDATE `accounts` SET `health`= '%.0f' WHERE `nickname` = '%s'";

       new 
          
    query[sizeof str MAX_PLAYER_NAME - (2)]; 

       
    pData[playerid][pHealth] = hp
       
    SetPlayerHealth(playeridhp); 

       
    format(querysizeof(query), strhppData[playerid][pNickname]); 
       
    mysql_function_query(dbHandlequeryfalse"""");

       return 
    1;

    PHP код:
    C:\Users\Íèêèòà\Desktop\ÒÅÑÒ ÐÅÊÓÐÑÈÈ\gamemodes\Untitled.pwn(1611) : error 017undefined symbol "cache_get_field_content_float" 
    Версия MySQL?
    Сохранил без остатка (использовал Ваш код), без изменений.

  8. #8
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Еще можно сделать так:
    PHP код:
    forward secondupdate(); 
    public 
    healthupdate() 

       new
          
    Float:health;

       foreach(new 
    i:Player
       { 
          
    GetPlayerHealth(ihealth); 
          if(
    _:health != _:pData[i][pHealth]) 
             
    SetPlayerHealthEx(ipData[i][pHealth]);  
       } 

       return 
    1;


  9. #9
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    Что означает '_:'?

  10. #10
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от BadPawn Посмотреть сообщение
    Что означает '_:'?
    _: ставится, чтобы не было вызова floatcmp

 

 
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •