Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 9 из 9
  1. #1
    Аватар для Dimon_Fanat
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Сообщений
    131
    Репутация:
    0 ±

    Загрузка домов.

    Всем добрый вечер. Проблема появилась с загрузкой домов на сервер.
    Создаю дома, в базу данных заносятся, перезапускаю сервер, пишет загружено 2 дома как и надо, но как только захожу на сервер их нет.

    Мод пишется с 0

    PHP код:
    enum Hinfo
    {
        
    hID,
        
    hOwned,
        
    hOwner[MAX_PLAYER_NAME],
        
    hInt,
        
    Float:hEnter[3],
        
    Float:hExit[3],
        
    hMIcon,
        
    hPickup[2],
        
    Text3D:hLabel,
    }
    new 
    HouseInfo[MAX_HOUSES][Hinfo];
    new 
    HOME;


    mysql_tquery(database,"SELECT * FROM houses ORDER BY houses.id ASC","LoadHouses","");


    publics LoadHouses()
    {
        new 
    rows,string[126];
        
    cache_get_row_count(rows);
        if(
    rows)
        {
            for(new 
    id 1id <= rowsid++)
            {
                
    cache_get_value_name_int(id-1,"ID",HouseInfo[id][hID]);
                
    cache_get_value_name_int(id-1,"Owned",HouseInfo[id][hOwned]);
                
    cache_get_value_name(id-1,"Owner",HouseInfo[id][hOwner], MAX_PLAYER_NAME);
                
    cache_get_value_name_float(id-1,"Enter1",HouseInfo[id][hEnter][0]);
                
    cache_get_value_name_float(id-1,"Enter2",HouseInfo[id][hEnter][1]);
                
    cache_get_value_name_float(id-1,"Enter3",HouseInfo[id][hEnter][2]);
                
    cache_get_value_name_float(id-1,"Exit1",HouseInfo[id][hEnter][0]);
                
    cache_get_value_name_float(id-1,"Exit2",HouseInfo[id][hEnter][1]);
                
    cache_get_value_name_float(id-1,"Exit3",HouseInfo[id][hEnter][2]);
                if(
    HouseInfo[id][hOwned] == 0)
                {
                    
    format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n{33CCFF}Уровень: {FFFF00}Нет\n{33CCFF}Цена: {FFFF00}$0",id);
                    
    HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],31,0xFFFFFFAA,0,-1,-1,400.0);
                    
    HouseInfo[id][hPickup][0] = CreateDynamicPickup(1273,23,HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],-1);
                    
    HouseInfo[id][hPickup][1] = CreateDynamicCP(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],1.0,-1,-1,-1,3.0);
                }
                else if(
    HouseInfo[id][hOwned] == 1)
                {
                    
    format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n{33CCFF}Владелец: {00FF00}Нет",id);
                    
    HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],32,0xFFFFFFAA,0,-1,-1,400.0);
                    
    HouseInfo[id][hPickup][0] = CreateDynamicPickup(19522,23,HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],-1);
                    
    HouseInfo[id][hPickup][1] = CreateDynamicCP(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],1.0,-1,-1,-1,3.0);
                }
                
    HouseInfo[id][hLabel] = Create3DTextLabel(string,0xFFFFFFFF,HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2]+1,20.0,0,1);
                
    HOME++;
            }
        }
        
    printf("Загружено [%i] домов.",HOME);
        return 
    1;


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

    Статус
    Оффлайн
    Регистрация
    22.04.2016
    Адрес
    Украина
    Сообщений
    118
    Репутация:
    18 ±
    1. publics LoadHouses()
    2. {
    3. new rows;
    4. cache_get_row_count(rows);
    5.  
    6. if( !rows )
    7. return true;
    8.  
    9. new string[ 126 ];
    10. for(new id; id < rows; id++)
    11. {
    12. cache_get_value_name_int(id, !"ID", HouseInfo[id][hID]);
    13. cache_get_value_name_int(id, !"Owned", HouseInfo[id][hOwned]);
    14. cache_get_value_name(id, !"Owner", HouseInfo[id][hOwner], MAX_PLAYER_NAME);
    15. cache_get_value_name_float(id, !"Enter1", HouseInfo[id][hEnter][0]);
    16. cache_get_value_name_float(id, !"Enter2", HouseInfo[id][hEnter][1]);
    17. cache_get_value_name_float(id, !"Enter3", HouseInfo[id][hEnter][2]);
    18. cache_get_value_name_float(id, !"Exit1", HouseInfo[id][hEnter][0]);
    19. cache_get_value_name_float(id, !"Exit2", HouseInfo[id][hEnter][1]);
    20. cache_get_value_name_float(id, !"Exit3", HouseInfo[id][hEnter][2]);
    21.  
    22. if(HouseInfo[id][hOwned] == 0)
    23. {
    24. format(string, sizeof string,
    25. "{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n\
    26. {33CCFF}Уровень: {FFFF00}Нет\n{33CCFF}Цена: {FFFF00}$0",
    27. id
    28. );
    29. }
    30. else
    31. {
    32. format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n\
    33. {33CCFF}Владелец: {00FF00}Нет",
    34. id
    35. );
    36. }
    37.  
    38. HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1],
    39. HouseInfo[id][hEnter][2], !HouseInfo[id][hOwned] ? 31 : 32, 0xFFFFFFAA, 0
    40. );
    41. HouseInfo[id][hPickup][0] = CreateDynamicPickup(!HouseInfo[id][hOwned] ? 1273 : 19522, 23,
    42. HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1], HouseInfo[id][hEnter][2], -1
    43. );
    44. HouseInfo[id][hPickup][1] = CreateDynamicCP(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],
    45. HouseInfo[id][hEnter][2], 1.0, -1, -1, -1, 3.0
    46. );
    47. HouseInfo[id][hLabel] = Create3DTextLabel(string, 0xFFFFFFFF,
    48. HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1], HouseInfo[id][hEnter][2]+1, 20.0, 0, 1
    49. );
    50.  
    51. HOME++;
    52. }
    53.  
    54. printf("Загружено [%i] домов.",HOME);
    55. return 1;
    56. }

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

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Сообщений
    131
    Репутация:
    0 ±
    Цитата Сообщение от Pa4enka Посмотреть сообщение
    1. publics LoadHouses()
    2. {
    3. new rows;
    4. cache_get_row_count(rows);
    5.  
    6. if( !rows )
    7. return true;
    8.  
    9. new string[ 126 ];
    10. for(new id; id < rows; id++)
    11. {
    12. cache_get_value_name_int(id, !"ID", HouseInfo[id][hID]);
    13. cache_get_value_name_int(id, !"Owned", HouseInfo[id][hOwned]);
    14. cache_get_value_name(id, !"Owner", HouseInfo[id][hOwner], MAX_PLAYER_NAME);
    15. cache_get_value_name_float(id, !"Enter1", HouseInfo[id][hEnter][0]);
    16. cache_get_value_name_float(id, !"Enter2", HouseInfo[id][hEnter][1]);
    17. cache_get_value_name_float(id, !"Enter3", HouseInfo[id][hEnter][2]);
    18. cache_get_value_name_float(id, !"Exit1", HouseInfo[id][hEnter][0]);
    19. cache_get_value_name_float(id, !"Exit2", HouseInfo[id][hEnter][1]);
    20. cache_get_value_name_float(id, !"Exit3", HouseInfo[id][hEnter][2]);
    21.  
    22. if(HouseInfo[id][hOwned] == 0)
    23. {
    24. format(string, sizeof string,
    25. "{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n\
    26. {33CCFF}Уровень: {FFFF00}Нет\n{33CCFF}Цена: {FFFF00}$0",
    27. id
    28. );
    29. }
    30. else
    31. {
    32. format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n\
    33. {33CCFF}Владелец: {00FF00}Нет",
    34. id
    35. );
    36. }
    37.  
    38. HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1],
    39. HouseInfo[id][hEnter][2], !HouseInfo[id][hOwned] ? 31 : 32, 0xFFFFFFAA, 0
    40. );
    41. HouseInfo[id][hPickup][0] = CreateDynamicPickup(!HouseInfo[id][hOwned] ? 1273 : 19522, 23,
    42. HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1], HouseInfo[id][hEnter][2], -1
    43. );
    44. HouseInfo[id][hPickup][1] = CreateDynamicCP(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],
    45. HouseInfo[id][hEnter][2], 1.0, -1, -1, -1, 3.0
    46. );
    47. HouseInfo[id][hLabel] = Create3DTextLabel(string, 0xFFFFFFFF,
    48. HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1], HouseInfo[id][hEnter][2]+1, 20.0, 0, 1
    49. );
    50.  
    51. HOME++;
    52. }
    53.  
    54. printf("Загружено [%i] домов.",HOME);
    55. return 1;
    56. }
    Так же пишет что загрузились дома 2 штуки, именно столько их сейчас в базе данных. Но на сервере совсем ничего нет в этих местах.

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

    Статус
    Оффлайн
    Регистрация
    05.04.2020
    Сообщений
    16
    Репутация:
    0 ±
    А почему idx-1у тебя? В загрузке

    - - - Добавлено - - -

    А лучше есть тема как лучше реализовать загрузку домов на iterator и сделай так будет на много лучше

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

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Сообщений
    131
    Репутация:
    0 ±
    Цитата Сообщение от Pawn.Dima Посмотреть сообщение
    А почему idx-1у тебя? В загрузке

    - - - Добавлено - - -

    А лучше есть тема как лучше реализовать загрузку домов на iterator и сделай так будет на много лучше
    idx-1 это от того что я уже загружал и 0 и 1 и idx+1 думал в чем проблема)

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

    Статус
    Оффлайн
    Регистрация
    22.04.2016
    Адрес
    Украина
    Сообщений
    118
    Репутация:
    18 ±
    Крашдетект молчит?

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

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Сообщений
    131
    Репутация:
    0 ±
    Цитата Сообщение от Pa4enka Посмотреть сообщение
    Крашдетект молчит?
    Я разобрался в чем была проблема.
    А она была вот тут)

    PHP код:
     Float:hEnter[3], 

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

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Сообщений
    131
    Репутация:
    0 ±
    Еще такой вопрос. При покупке дома №1 у меня в базе данных не обновляется дом под номером 1, а когда покупаю дом 2 то в базе данных сохраняется дом 1. Можно ли как-то сделать чтоб такой каши не было. Без всяких +id или -

    PHP код:
    mysql_tquery(database,"SELECT * FROM houses ORDER BY `ID`","LoadHouses",""); 
    PHP код:
    publics LoadHouses()
    {
        new 
    string[126];
        new 
    rows;
        
    cache_get_row_count(rows);
        if(!
    rows)return 1;
        for(new 
    irowsi++)
        {
             
    cache_get_value_name_int(i,!"ID",HouseInfo[i][hID]);
            
    cache_get_value_name(i,!"Owner",HouseInfo[i][hOwner],MAX_PLAYER_NAME);
            
    cache_get_value_name_float(i,!"Enter1",HouseInfo[i][hEnterX]);
            
    cache_get_value_name_float(i,!"Enter2",HouseInfo[i][hEnterY]);
            
    cache_get_value_name_float(i,!"Enter3",HouseInfo[i][hEnterZ]);
            
    cache_get_value_name_float(i,!"Exit1",HouseInfo[i][hExitX]);
            
    cache_get_value_name_float(i,!"Exit2",HouseInfo[i][hExitY]);
            
    cache_get_value_name_float(i,!"Exit3",HouseInfo[i][hExitZ]);
            if(
    GetString(HouseInfo[i][hOwner],"The State"))
            {
                
    format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n{33CCFF}Уровень: {FFFF00}Нет\n{33CCFF}Цена: {FFFF00}$0",HouseInfo[i][hID]);
                
    HouseInfo[i][hMIcon] = CreateDynamicMapIcon(HouseInfo[i][hEnterX], HouseInfo[i][hEnterY],HouseInfo[i][hEnterZ],31,0xFFFFFFAA,0,-1,-1,400.0);
            }
            else
            {
                
    format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n{33CCFF}Владелец: {00FF00}%s",HouseInfo[i][hID],HouseInfo[i][hOwner]);
            }
            
    HouseInfo[i][hPickup][0] = CreateDynamicPickup(GetString(HouseInfo[i][hOwner],"The State") ? 1273 1952223,HouseInfo[i][hEnterX],HouseInfo[i][hEnterY],HouseInfo[i][hEnterZ],-1);
            
    HouseInfo[i][hPickup][1] = CreateDynamicCP(HouseInfo[i][hEnterX],HouseInfo[i][hEnterY],HouseInfo[i][hEnterZ],1.0,-1,-1,-1,3.0);
            
    HouseInfo[i][hText] = Create3DTextLabel(string,0xFFFFFFFF,HouseInfo[i][hEnterX],HouseInfo[i][hEnterY],HouseInfo[i][hEnterZ]+1,20.0,0,1);
            
    HOME++;
        }
        
    printf("Загружено [%d] домов.",HOME);
        return 
    1;

    PHP код:
    CMD:h(playerid,params[])
    {
        if(
    params[0] == 0)
        {
            
    SendClientMessage(playerid,0xFFFFFFAA,"У вас нет дома.");
        }
        if(
    sscanf(params,"s[32]",params[0]))return 1;
        else if(
    strcmp(params[0],"buy",true) == 0)
        {
            for(new 
    idid HOMEid++)
            {
                 if(
    IsPlayerInRangeOfPoint(playerid,0.8,HouseInfo[id][hEnterX],HouseInfo[id][hEnterY],HouseInfo[id][hEnterZ]))
                   {
                if(!
    GetString(HouseInfo[id][hOwner],"The State"))return SendClientMessage(playerid,0xFFFFFFAA"Дом занят!");
                 
    strmid(HouseInfo[id][hOwner],Player[playerid][pName],0,strlen(Player[playerid][pName]),MAX_PLAYER_NAME);
                  
    sql_str[0] = EOS;
                
    mysql_format(database,sql_str,sizeof(sql_str),"UPDATE houses SET Owner = '%s' WHERE ID = %d LIMIT 1",HouseInfo[id][hOwner],id);
                
    mysql_tquery(database,sql_str);

                
    SetPlayerInterior(playerid,HouseInfo[id][hInt]);
                
    SetPlayerVirtualWorld(playerid,HouseInfo[id][hID]);
                
    SetPlayerPos(playerid,HouseInfo[id][hExitX],HouseInfo[id][hExitY],HouseInfo[id][hExitZ]);

                
    UpdateHouse(id);
                }
            }
        }
        return 
    1;


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

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Сообщений
    131
    Репутация:
    0 ±
    Решил. Можно закрывать.

 

 

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

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

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

Ваши права

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