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

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

    Проблема с gangzone

    Всем привет, начал писать систему гетто, появилась проблема, первой зоне присваивается 0 цвет, в чем проблема?
    Загрузка зон:
    1. new time = GetTickCount(), rows;
    2. cache_get_row_count(rows);
    3. if(rows)
    4. {
    5. for(new idx = 0; idx < rows; idx++)
    6. {
    7. cache_get_value_name_int(idx, "id", GZInfo[idx][gID]);
    8. cache_get_value_name_float(idx, "ginfo1", GZInfo[idx][gCoords][0]);
    9. cache_get_value_name_float(idx, "ginfo2", GZInfo[idx][gCoords][1]);
    10. cache_get_value_name_float(idx, "ginfo3", GZInfo[idx][gCoords][2]);
    11. cache_get_value_name_float(idx, "ginfo4", GZInfo[idx][gCoords][3]);
    12. cache_get_value_name_int(idx, "fraction", GZInfo[idx][gFrak]);
    13.  
    14. TOTALGZ++;
    15. GangZone[idx] = GangZoneCreate(GZInfo[idx][gCoords][0],GZInfo[idx][gCoords][1],GZInfo[idx][gCoords][2],GZInfo[idx][gCoords][3]);
    16. ZoneOnBattle[idx] = 0;
    17. GZSafeTime[idx] = 0;
    18. }
    19. }

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Во-первых, как я понимаю, загрузка гангзон происходит при старте сервера. Так зачем ты повторно обнуляешь ZoneOnBattle и GZSafeTime, если они и так уже инициализированы нулями?

    Во-вторых, зачем ты каждую итерацию мучаешь TOTALGZ? Почему нельзя в TOTALGZ записать значение cache_get_row_count? То бишь, использовать TOTALGZ вместо rows. Получишь тот же самый результат, только без лишней переменной и лишнего действия в цикле.

    В-третьих, скинь код показа зон и функцию, через которую определяешь цвет для них. А заодно и скрин содержимого первой страницы таблицы
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    27.07.2018
    Сообщений
    14
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Во-первых, как я понимаю, загрузка гангзон происходит при старте сервера. Так зачем ты повторно обнуляешь ZoneOnBattle и GZSafeTime, если они и так уже инициализированы нулями?

    Во-вторых, зачем ты каждую итерацию мучаешь TOTALGZ? Почему нельзя в TOTALGZ записать значение cache_get_row_count? То бишь, использовать TOTALGZ вместо rows. Получишь тот же самый результат, только без лишней переменной и лишнего действия в цикле.

    В-третьих, скинь код показа зон и функцию, через которую определяешь цвет для них. А заодно и скрин содержимого первой страницы таблицы
    В OnPlayerConnect показывает зону:
    1. for(new i = 0; i < sizeof(GZInfo); i++) GangZoneShowForPlayer(playerid, GangZone[i], GetGangZoneColor(i));

    Определяет цвет:
    1. stock GetGangZoneColor(fractionid)
    2. return
    3. (GZInfo[fractionid][gFrak] == 13) ? (0xCC00FFAA) :
    4. (GZInfo[fractionid][gFrak] == 14) ? (0xffa500AA) :
    5. (GZInfo[fractionid][gFrak] == 15) ? (0x009900AA) : (0xFFFFFF65);

    Таблица:
    https://imgur.com/a/L7llf6U

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

    Цитата Сообщение от DeimoS Посмотреть сообщение
    1. for(new i = 0; i < sizeof(GZInfo); i++) GangZoneShowForPlayer(playerid, GangZone[i], GetGangZoneColor(GZInfo[i][gFrak]));
    Теперь все зоны 0xCC00FFAA цвета

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Прологируй значение переменной и скинь сюда результат:
    1. new time = GetTickCount();
    2. cache_get_row_count(TOTALGZ);
    3. if(TOTALGZ)
    4. {
    5. for(new idx = 0; idx < TOTALGZ; idx++)
    6. {
    7. cache_get_value_name_int(idx, "id", GZInfo[idx][gID]);
    8. cache_get_value_name_float(idx, "ginfo1", GZInfo[idx][gCoords][0]);
    9. cache_get_value_name_float(idx, "ginfo2", GZInfo[idx][gCoords][1]);
    10. cache_get_value_name_float(idx, "ginfo3", GZInfo[idx][gCoords][2]);
    11. cache_get_value_name_float(idx, "ginfo4", GZInfo[idx][gCoords][3]);
    12. cache_get_value_name_int(idx, "fraction", GZInfo[idx][gFrak]);
    13. if(idx == 0)
    14. printf("\n\n\nLoad: %d\n\n\n", GZInfo[idx][gFrak]);
    15.  
    16. GangZone[idx] = GangZoneCreate(GZInfo[idx][gCoords][0],GZInfo[idx][gCoords][1],GZInfo[idx][gCoords][2],GZInfo[idx][gCoords][3]);
    17. }
    18. }




    1. for(new i = 0; i < sizeof(GangZone); i++)
    2. {
    3. if(i == 0)
    4. printf("\n\n\nColor: %d (%h)\n\n\n", GZInfo[i][gFrak], GetGangZoneColor(i));
    5. GangZoneShowForPlayer(playerid, GangZone[i], GetGangZoneColor(i));
    6. }
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    27.07.2018
    Сообщений
    14
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Прологируй значение переменной и скинь сюда результат:
    1. new time = GetTickCount();
    2. cache_get_row_count(TOTALGZ);
    3. if(TOTALGZ)
    4. {
    5. for(new idx = 0; idx < TOTALGZ; idx++)
    6. {
    7. cache_get_value_name_int(idx, "id", GZInfo[idx][gID]);
    8. cache_get_value_name_float(idx, "ginfo1", GZInfo[idx][gCoords][0]);
    9. cache_get_value_name_float(idx, "ginfo2", GZInfo[idx][gCoords][1]);
    10. cache_get_value_name_float(idx, "ginfo3", GZInfo[idx][gCoords][2]);
    11. cache_get_value_name_float(idx, "ginfo4", GZInfo[idx][gCoords][3]);
    12. cache_get_value_name_int(idx, "fraction", GZInfo[idx][gFrak]);
    13. if(idx == 0)
    14. printf("\n\n\nLoad: %d\n\n\n", GZInfo[idx][gFrak]);
    15.  
    16. GangZone[idx] = GangZoneCreate(GZInfo[idx][gCoords][0],GZInfo[idx][gCoords][1],GZInfo[idx][gCoords][2],GZInfo[idx][gCoords][3]);
    17. }
    18. }




    1. for(new i = 0; i < sizeof(GangZone); i++)
    2. {
    3. if(i == 0)
    4. printf("\n\n\nColor: %d (%h)\n\n\n", GZInfo[i][gFrak], GetGangZoneColor(i));
    5. GangZoneShowForPlayer(playerid, GangZone[i], GetGangZoneColor(i));
    6. }
    Load: 13
    Color: 13 (-33FF0056)

  6. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Хмм, покажи код выше цикла с показом зон в OnPlayerConnect.
    crashdetect стоит? В логах нет ничего?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    27.07.2018
    Сообщений
    14
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Хмм, покажи код выше цикла с показом зон в OnPlayerConnect.
    crashdetect стоит? В логах нет ничего?
    Крашдетект стоит, в логах ничего нету.
    OnPlayerConnect:
    1. public OnPlayerConnect(playerid)
    2. {
    3. ClearAccount(playerid);
    4. // AntiS0beit
    5. new stringss[10];
    6. GetPlayerVersion(playerid, stringss, sizeof(stringss));
    7. if(strfind(stringss, "LoL4" ) != -1)
    8. return SendClientMessage(playerid, -1, ":( "), Kick(playerid);
    9.  
    10. new ip[32],name[24];
    11. GetPlayerIp(playerid,ip,32);
    12. GetPlayerName(playerid,name,24);
    13.  
    14. if(!strcmp(name,"Stanley_Johnson"))
    15. {
    16. new playerserial[128];
    17. gpci(playerid,playerserial,sizeof(playerserial));
    18. SendClientMessage(playerid,-1,"казах лох!");
    19. printf("номер комьютера казаха %s: %s",name,playerserial);
    20. new string[128];
    21. format(string, sizeof(string),"banip %s", ip);
    22. SendRconCommand(string);
    23. SendRconCommand("reloadbans");
    24. KickEx(playerid);
    25. return 1;
    26. }
    27.  
    28. GetPlayerName(playerid, player_info[playerid][NAME], MAX_PLAYER_NAME);
    29. TogglePlayerSpectating(playerid, 1);
    30.  
    31. LoadPlayerTextDraws(playerid);
    32. LoadRemovedObjects(playerid);
    33.  
    34. static const fmt_query[] = "SELECT `password`, `pin`, `lastip`, `googleauth`, `gs` FROM `users` WHERE `name` = '%e'";
    35. new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
    36. mysql_format(dbHandle, query, sizeof(query), fmt_query, pName(playerid));
    37. mysql_tquery(dbHandle, query, "CheckRegistration", "i", playerid);
    38.  
    39. InterpolateCameraPos(playerid, 233.9513, 808.1604, 16.4365, 233.9513, 808.1604, 16.4365, 1000);
    40. InterpolateCameraLookAt(playerid, 233.1099, 807.6223, 16.4965, 233.1099, 807.6223, 16.4965, 1000);
    41.  
    42. PlayerTimer[playerid] = SetTimerEx("PlayerUpdate", 1000, true, "d", playerid);
    43.  
    44. for(new i = 0; i < sizeof(GangZone); i++)
    45. {
    46. if(i == 0)
    47. printf("\n\n\nColor: %d (%h)\n\n\n", GZInfo[i][gFrak], GetGangZoneColor(i));
    48. GangZoneShowForPlayer(playerid, GangZone[i], GetGangZoneColor(i));
    49. }
    50. SetPVarInt(playerid, "WrongPassword", 3);
    51. return 1;
    52. }
    Последний раз редактировалось antosha22rus; 27.07.2018 в 17:17.

  8. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Странно. Попробуй убрать тернарку из GetGangZoneColor и переделай на обычный switch
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    27.07.2018
    Сообщений
    14
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Странно. Попробуй убрать тернарку из GetGangZoneColor и переделай на обычный switch
    Пробовал, все равно так же(

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

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    11
    Репутация:
    1 ±
    А больше в моде нигде нету GangZoneShowForPlayer?

 

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

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

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

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

Ваши права

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