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

    Статус
    Оффлайн
    Регистрация
    08.05.2020
    Адрес
    г. Стерлитамак
    Сообщений
    14
    Репутация:
    0 ±

    Перестали работать все команды и чат

    Приветствую. У меня такой вопрос. В общем впервые перевёл мод с OnPlayerCommandText на dc_cmd. Все команды работали после моего удачного перевода, но я заметил что не работают нажатия клавиш и тут я вспомнил, что они связаны с командами, которые я перевёл. В общем в моде была вот такая команда: (на форум не влазиет, слишком огромная0)

    https://pastebin.com/6V0gzBR4


    Перевёл её на dc_cmd тоже, но это не дало нужного эффекта, подумал и решил попробовать весь код из этой команды запихнуть в паблик OnPlayerKeyStateChange.

    https://pastebin.com/b6ec4iHP

    В итоге всё скомпилировалось удачно, даже code size и другие параметры уменьшились, но когда зашёл на сервер чтобы проверить, просто впал в ступор. Сами клавиши работают, но вот ни одна команда не работает, так и ещё написав любой текст выдаёт вот это:




    К моду подключены такие плагины как crashdetect и nativecheker, но никаких ошибок в консоли нет, зато тот текст, который я вводил на сервере, в консоли выдаётся правильным. Кто сталкивался с такой проблемой? Как решить можно?
    Последний раз редактировалось Danny Marcelo; 11.05.2020 в 10:02.

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Ты хоть чекал свой пост с темной темой?


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

    Статус
    Оффлайн
    Регистрация
    08.05.2020
    Адрес
    г. Стерлитамак
    Сообщений
    14
    Репутация:
    0 ±
    Цитата Сообщение от SteveStage Посмотреть сообщение
    Ты хоть чекал свой пост с темной темой?

    Нет не проверял. У меня стандартная - светлая стоит.

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Я постарался и перевел это нечитаемое убожество в более менее сносный вид:

    1. if(newkeys == KEY_YES)
    2. {
    3. if(GetPVarInt(playerid,"sellzone") == 0) return SCM(playerid, COLOR_GRAD, "Вам не ничего не предлагали");
    4. {
    5. new price = GetPlayerOption1[playerid];
    6. new idterr = GetPlayerOption[playerid];
    7. new giverid = GetPlayerTransfer[playerid];
    8. if(GetDistanceBetweenPlayers(playerid, giverid) > 20) return SCM(playerid, COLOR_GRAD, "Игрок слишком далеко от Вас");
    9. if(Player[playerid][pMoney] < price) return SCM(playerid,COLOR_GRAD, "У Вас недостаточно денег");
    10. if(Player[playerid][pMember] == 1)
    11. {
    12. GhettoMen[0]++;
    13. UpdateStoreGrove();
    14. }
    15. if(Player[playerid][pMember] == 2)
    16. {
    17. GhettoMen[1]++;
    18. UpdateStoreBallas();
    19. }
    20. if(Player[playerid][pMember] == 3)
    21. {
    22. GhettoMen[2]++;
    23. UpdateStoreAztec();
    24. }
    25. if(Player[playerid][pMember] == 4)
    26. {
    27. GhettoMen[3]++;
    28. UpdateStoreVagos();
    29. }
    30. if(Player[playerid][pMember] == 5)
    31. {
    32. GhettoMen[4]++;
    33. UpdateStoreRifa();
    34. }
    35. if(Player[giverid][pMember] == 1)
    36. {
    37. GhettoMen[0]--;
    38. UpdateStoreGrove();
    39. }
    40. if(Player[giverid][pMember] == 2)
    41. {
    42. GhettoMen[1]--;
    43. UpdateStoreBallas();
    44. }
    45. if(Player[giverid][pMember] == 3)
    46. {
    47. GhettoMen[2]--;
    48. UpdateStoreAztec();
    49. }
    50. if(Player[giverid][pMember] == 4)
    51. {
    52. GhettoMen[3]--;
    53. UpdateStoreVagos();
    54. }
    55. if(Player[giverid][pMember] == 5)
    56. {
    57. GhettoMen[4]--;
    58. UpdateStoreRifa();
    59. }
    60. Player[giverid][pMoney] += price;
    61. Player[playerid][pMoney] -= price;
    62. format(query, sizeof(query),"~r~-%d$",price);
    63. GameTextForPlayer(playerid, query, 1000, 1);
    64. format(query, sizeof(query),"Вы купили территорию для своей банды у лидера %s за {00cc00}%d$", Player[giverid][pName], price);
    65. SCM(playerid, 0x0099FFAA, query);
    66. format(query, sizeof(query),"%s принял Ваше предложение.", Player[playerid][pName]);
    67. SCM(giverid, 0x00CC00AA, query);
    68. format(query, sizeof(query),"%s купили территорию у банды %s", GetGangName(Player[playerid][pLeader]), GetGangName(GZInfo[idterr][gMemberZone]));
    69. SendGhettoMessage(0xFF6600AA,query);
    70. SendPlaySound(1139, 0.0, 0.0, 0.0);
    71. GZInfo[idterr][gMemberZone] = Player[playerid][pLeader];
    72. GangZoneStopFlashForAll(GZInfo[idterr][gID]);
    73. GangZoneHideForAll(GZInfo[idterr][gID]);
    74. GangZoneShowForAll(GZInfo[idterr][gID], GetGangZoneColor(idterr));
    75. SaveZone(idterr);
    76. GetPlayerTransfer[playerid] = INVALID_PLAYER_ID;
    77. SetPVarInt(playerid,"sellzone",0);
    78. GetPlayerOption[playerid] = 0;
    79. GetPlayerOption1[playerid] = 0;
    80. SetPVarInt(giverid,"yes",0);
    81. SaveAll(playerid);
    82. SaveAll(giverid); }
    83. if(GetPVarInt(playerid, "sellsim") == 0) return SCM(playerid, COLOR_GRAD, "Вам не ничего не предлагали");
    84. {
    85. if(GetDistanceBetweenPlayers(playerid, GetPlayerTransfer[playerid]) > 6 ||
    86. GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(GetPlayerTransfer[playerid]))
    87. return SCM(playerid, COLOR_GRAD, "Игрок слишком далеко от Вас.");
    88. new price = GetPlayerOption[playerid];
    89. new giverid = GetPlayerTransfer[playerid];
    90. Player[giverid][pMoney] += price;
    91. Player[playerid][pMoney] -= price;
    92. new PlayerID = GetPlayerTransfer1 [playerid];
    93. Player[playerid][pPhone] = Player[PlayerID][pPhone];
    94. Player[PlayerID][pPhone] = 0;
    95. format(query, sizeof(query),"%s продал Вам SIM-карту с номером {FFFF00}%d {00CC00}за %d$", Player[playerid][pName],Player[playerid][pPhone],price); SCM(playerid, COLOR_GREEN, query); PlayerPlaySound(playerid, 1137, 0.0, 0.0, 0.0); format(query,sizeof(query), "Вы продали свою SIM-карту с номером {FFFF00}%d {00CC00}игроку %s за %d$",Player[playerid][pPhone],Player[playerid][pName],price); SCM(giverid, 0x00CC00AA, query); format(query, sizeof(query),"~r~-%d$",price);
    96. GameTextForPlayer(playerid, query, 1000, 1);
    97. if(Player[playerid][pPhone] == 1) Player[playerid][pPhone] = 0;
    98. GetPlayerTransfer[playerid] = INVALID_PLAYER_ID;
    99. GetPlayerOption[playerid] = 0;
    100. SetPVarInt(playerid,"sellsim",0);
    101. SetPVarInt(giverid,"yes",0);
    102. SaveAll(playerid);
    103. SaveAll(giverid);
    104. }
    105. if(GetPVarInt(playerid,"ticket") == 0) return SCM(playerid, COLOR_GRAD, "Вам не ничего не предлагали");
    106. {
    107. new summa = GetPlayerOption[playerid];
    108. new giverid = GetPlayerTransfer[playerid];
    109. if(GetDistanceBetweenPlayers(playerid, giverid) > 10 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(giverid))
    110. return SCM(playerid, COLOR_GRAD, "Игрок слишком далеко от Вас.");
    111. if(Player[playerid][pMoney] < summa) return SCM(playerid,COLOR_GRAD, "У Вас недостаточно денег.");
    112. PlayerPlaySound(playerid, 17000, 0.0, 0.0, 0.0);
    113. Player[giverid][pMoney] += summa;
    114. Player[playerid][pMoney] -= summa;
    115. format(query, sizeof(query),"~r~-%d$",summa);
    116. GameTextForPlayer(playerid, query, 1000, 1);
    117. format(query, sizeof(query),"Вы оплатили штраф на %d$ выписанный от сотрудника полиции %s",summa,Player[giverid][pName]);
    118. SCM(playerid, 0x0099FFAA, query);
    119. format(query, sizeof(query),"%s оплатил Ваш штраф.", Player[playerid][pName]);
    120. SCM(giverid, 0x00CC00AA, query);
    121. GetPlayerTransfer[playerid] = INVALID_PLAYER_ID;
    122. SetPVarInt(playerid,"ticket",0);
    123. GetPlayerOption[playerid] = 0;
    124. SetPVarInt(giverid,"yes",0);
    125. }
    126. }
    127. }


    И зачем было так измываться над табуляцией? От сжатости кода производительность не зависит.

    И как ты так сделал, что у тебя и return прямо в if, и код в блоке кода?
    Последний раз редактировалось SteveStage; 11.05.2020 в 09:41.

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

    Статус
    Оффлайн
    Регистрация
    08.05.2020
    Адрес
    г. Стерлитамак
    Сообщений
    14
    Репутация:
    0 ±
    С табуляцией всё нормально, это на форуме я с редактированием текста намудрил. Проблема не в этом коде, я пробовал закомментировать полностью public OnPlayerKeyStateChange, проблема не ушла от этого, самое странное, что больше то ничего в моде не менял, что это за ошибка странная? И гуглил, ничего не нашёл, может в dc_cmd что то упустил? Хотя по сути, до редактирования паблика с клавишами все команды работали.

    Вот полностью данный паблик: https://pastebin.com/ULcSeWQe



    Последний раз редактировалось Danny Marcelo; 11.05.2020 в 09:55.

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    [PHP и [COLOR надо заканчивать фигурной скобкой, у тебя сейчас вместо PHP кода обычный спойлер.

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

    Статус
    Оффлайн
    Регистрация
    08.05.2020
    Адрес
    г. Стерлитамак
    Сообщений
    14
    Репутация:
    0 ±
    Цитата Сообщение от SteveStage Посмотреть сообщение
    [PHP и [COLOR надо заканчивать фигурной скобкой, у тебя сейчас вместо PHP кода обычный спойлер.
    Всё, отредактировал, для удобства скинул на pastebin

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Попробовал ситуацию воспроизвести - все нормально у меня:

    1. cmd:kas(playerid)
    2. {
    3. new
    4. str[5] = "aabc",
    5. string[128+1];
    6. format(string, sizeof(string), "%d$%s", 15, str);
    7. SCM(playerid, 0x00C0FFAA, string);
    8. return true;
    9. }




    Значит дело точно не в коде отображения, а возможно в специфике dc_cmd.

    Хотя то что все сработало - очевидно, ибо этот код вполне корректный.

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

    Кстати, скиньте все свои дефайны и массивы из кода (вроде GetPlayerOption, GetPlayerOption1).

    Возможно тут COLOR_GRAD1 - опечатка:

    1. if(PlayerInfo[playerid][pMoney] < price) return SendClientMessage(playerid,COLOR_GRAD1, "У Вас недостаточно денег");
    Последний раз редактировалось SteveStage; 11.05.2020 в 11:08.

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

    Статус
    Оффлайн
    Регистрация
    08.05.2020
    Адрес
    г. Стерлитамак
    Сообщений
    14
    Репутация:
    0 ±
    Цитата Сообщение от SteveStage Посмотреть сообщение
    Попробовал ситуацию воспроизвести - все нормально у меня:



    1. cmd:kas(playerid)
    2. {
    3. &nbsp;&nbsp;&nbsp;&nbsp;new
    4. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str[5] = "aabc",
    5. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string[128+1];
    6. &nbsp;&nbsp;&nbsp;&nbsp;format(string, sizeof(string), "%d$%s", 15, str);
    7. &nbsp;&nbsp;&nbsp;&nbsp;SCM(playerid, 0x00C0FFAA, string);
    8. &nbsp;&nbsp;&nbsp;&nbsp;return true;
    9. }







    Значит дело точно не в коде отображения, а возможно в специфике dc_cmd.

    Хотя то что все сработало - очевидно, ибо этот код вполне корректный.

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

    Кстати, скиньте все свои дефайны и массивы из кода (вроде GetPlayerOption, GetPlayerOption1).

    Возможно тут COLOR_GRAD1 - опечатка:



    1. if(PlayerInfo[playerid][pMoney] < price) return SendClientMessage(playerid,COLOR_GRAD1, "У Вас недостаточно денег");


    В общем вернул OnPlayerKeyStateChange в исходное состояние (благо резервный мод на OnPlayerCommandText остался), перевёл команду эту странную на dc_cmd, команды заработали, а вот чат нет.
    https://pastebin.com/F4RRmW0T

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

    PHP код:
    new GetPlayerOption[MAX_PLAYERS];
    new 
    GetPlayerOption1[MAX_PLAYERS];
    new 
    GetPlayerOption2[MAX_PLAYERS]; 
    PHP код:
    CMD:cancel(playerid){    if(GetPVarInt(playerid"yes") == 0) return SCM(playeridCOLOR_GRAD, !"Нет активных предложений");    GetPlayerTransfer1[playerid] = INVALID_PLAYER_ID;    GetPlayerTransfer[playerid] = INVALID_PLAYER_ID;    GetPlayerOption[playerid] = INVALID_PLAYER_ID;    GetPlayerOption1[playerid] = INVALID_PLAYER_ID;    GetPlayerOption2[playerid] = INVALID_PLAYER_ID;    GetPlayerTransfer1[yesid[playerid]] = INVALID_PLAYER_ID;    GetPlayerTransfer[yesid[playerid]] = INVALID_PLAYER_ID;    GetPlayerOption[yesid[playerid]] = INVALID_PLAYER_ID;    GetPlayerOption1[yesid[playerid]] = INVALID_PLAYER_ID;    GetPlayerOption2[yesid[playerid]] = INVALID_PLAYER_ID;    new string[55];    f("%s отозвал(а) своё предложение"Player[playerid][pName]);    SCM(GetPlayerTransfer[playerid], 0xFF6600AAstring);    yesid[playerid] = INVALID_PLAYER_ID;    SetPVarInt(playerid"yes"0);    return 1;} 
    Ну остальные в коде, который скинул на pastebin, ну и в OnPlayerConnect обнуляется вот эта
    PHP код:
    GetPlayerOption1[playerid] = false
    Вот эти

    PHP код:
    GetPlayerTransfer
    GetPlayerTransfer1 
    Используются в командах с нажатием клавиш "Y" "N"
    Последний раз редактировалось Danny Marcelo; 11.05.2020 в 11:44.

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от Danny Marcelo Посмотреть сообщение
    PHP код:
    new GetPlayerOption[MAX_PLAYERS];
    new 
    GetPlayerOption1[MAX_PLAYERS];
    new 
    GetPlayerOption2[MAX_PLAYERS]; 
    Ну остальные в коде, который скинул на pastebin, ну и в OnPlayerConnect обнуляется вот эта
    PHP код:
    GetPlayerOption1[playerid] = false
    Эм, а как ты присваиваешь GetPlayerOption1 значение false, если при создании она не является boolean?

 

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

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

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

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

Ваши права

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