PDA

Просмотр полной версии : [Вопрос] Система подарков



Andrik851
05.04.2019, 17:20
Доброго времени суто нашел на просторах интернет систему подарков вшил ее в мод но как вияснилось при компилировании мода выявляются ошибки



D:\локальный сервер\gamemodes\mrpv1.pwn(18537) : error 036: empty statement
D:\локальный сервер\gamemodes\mrpv1.pwn(18541) : error 029: invalid expression, assumed zero
Pawn compiler 3.10.8 Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.


эти ошибки в пикапах где прописывается что будет выдаваться из этих подарков
я пробывал все вырезать и оставил только выдачу денег но подарок не берется



if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
PlayerInfo[playerid][pCash] += 2015000;
if(PlayerInfo[playerid][pWanted] >= 1);
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
}
}


вот сама команда спавна подарков



CMD:gift(playerid, params[])
{
if(GIFTdata == 0) // Если подарки ещё не спавнили
{
GIFTS[0] = CreatePickup(19057, 23, 2555.3472, -1721.7720, 21.9117); // Координаты используйте свои
GIFTS[1] = CreatePickup(19056, 23, 2558.7876, -1736.3029, 21.9057); // Координаты используйте свои
GIFTS[2] = CreatePickup(19055, 23, 2552.0261, -1751.8270, 21.8845); // Координаты используйте свои
SendClientMessage(playerid, -1, "Подарки заспавнены!");
GIFTdata++;
}
else // Если подарки уже заспавнены
{
DestroyPickup(GIFTS[0]);
DestroyPickup(GIFTS[1]);
DestroyPickup(GIFTS[2]);
SendClientMessage(playerid, -1, "Подарки удалены!");
GIFTdata--;
}
return 1;
}



если возможно подскажите как все исправить

Xeno
05.04.2019, 17:54
Попробуй вставить так


if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
PlayerInfo[playerid][pCash] += 2015000;
if(PlayerInfo[playerid][pWanted] >= 1)
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
}
}

Andrik851
05.04.2019, 18:27
не работает

Xeno
05.04.2019, 18:37
Такая же ошибка?

Andrik851
05.04.2019, 18:46
ошибки нет но подарки не берутся

Xeno
05.04.2019, 18:55
Подарки у тебя скорее всего берутся, просто запись в переменные произошла, а обновления нету.
Вот так пробуй.


if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
PlayerInfo[playerid][pCash] += 2015000;
GivePlayerMoney(playerid, 2015000);
if(PlayerInfo[playerid][pWanted] >= 1)
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]);
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
}
}

Andrik851
05.04.2019, 18:59
щас испытаем как я понял после взятия подарка он должен был исчезнуть

Xeno
05.04.2019, 19:06
Если пикап не исчезнет, то вот

CreatePickup(ID нашего пикапа,Состояние пикапа,X координата, Y координата, Z координата);
И вот 2 параметр нужно будет изменить на 3.

Вот все возможные варианты, который можно установить:


0 Пикап не отображается.
2 Берётся, появляется после некоторого времени.
3 Берётся но не появляется.
4 Исчезает вскоре после появления.
5 Исчезает вскоре после появления.
8 Берётся, но не имеет эффекта. Исчезает автоматически.
11 Взрывается через несколько секунд после того как появится.
12 Взрывается через несколько секунд после того как появится.
13 Медленно decends на землю.
15 Берётся но не появляется.
19 Берётся, но не имеет эффект (информационные иконки)
22 Берётся но не появляется
23 Берётся, но не исчезает.

Andrik851
05.04.2019, 19:14
Если пикап не исчезнет, то вот

CreatePickup(ID нашего пикапа,Состояние пикапа,X координата, Y координата, Z координата);
И вот 2 параметр нужно будет изменить на 3.

Вот все возможные варианты, который можно установить:


0 Пикап не отображается.
2 Берётся, появляется после некоторого времени.
3 Берётся но не появляется.
4 Исчезает вскоре после появления.
5 Исчезает вскоре после появления.
8 Берётся, но не имеет эффекта. Исчезает автоматически.
11 Взрывается через несколько секунд после того как появится.
12 Взрывается через несколько секунд после того как появится.
13 Медленно decends на землю.
15 Берётся но не появляется.
19 Берётся, но не имеет эффект (информационные иконки)
22 Берётся но не появляется
23 Берётся, но не исчезает.


ты посмотри я вверху в самом первом посту прислал команду в ней как раз и есть те 3 пикапа

Xeno
05.04.2019, 19:19
Тут указано 23, то есть "23 Берётся, но не исчезает."


GIFTS[0] = CreatePickup(19057, 23, 2555.3472, -1721.7720, 21.9117); // Координаты используйте свои
GIFTS[1] = CreatePickup(19056, 23, 2558.7876, -1736.3029, 21.9057); // Координаты используйте свои
GIFTS[2] = CreatePickup(19055, 23, 2552.0261, -1751.8270, 21.8845); // Координаты используйте свои

Сделай вот так.


GIFTS[0] = CreatePickup(19057, 3, 2555.3472, -1721.7720, 21.9117); // Координаты используйте свои
GIFTS[1] = CreatePickup(19056, 3, 2558.7876, -1736.3029, 21.9057); // Координаты используйте свои
GIFTS[2] = CreatePickup(19055, 3, 2552.0261, -1751.8270, 21.8845); // Координаты используйте свои

И у тебя вообще всего будет 3 пикапа с подарками?
просто в коде выше у тебя проверка на 14 штук


if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на

Удали лишнее тогда

Andrik851
05.04.2019, 19:25
Тут указано 23, то есть "23 Берётся, но не исчезает."


GIFTS[0] = CreatePickup(19057, 23, 2555.3472, -1721.7720, 21.9117); // Координаты используйте свои
GIFTS[1] = CreatePickup(19056, 23, 2558.7876, -1736.3029, 21.9057); // Координаты используйте свои
GIFTS[2] = CreatePickup(19055, 23, 2552.0261, -1751.8270, 21.8845); // Координаты используйте свои

Сделай вот так.


GIFTS[0] = CreatePickup(19057, 3, 2555.3472, -1721.7720, 21.9117); // Координаты используйте свои
GIFTS[1] = CreatePickup(19056, 3, 2558.7876, -1736.3029, 21.9057); // Координаты используйте свои
GIFTS[2] = CreatePickup(19055, 3, 2552.0261, -1751.8270, 21.8845); // Координаты используйте свои

И у тебя вообще всего будет 3 пикапа с подарками?
просто в коде выше у тебя проверка на 14 штук


if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на

Удали лишнее тогда

их будет 15 это просто 3 для настройки и проверки а как еще сделать чтобы выводилось сообщение что из подарка получил

Xeno
05.04.2019, 19:28
if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
PlayerInfo[playerid][pCash] += 2015000;
if(PlayerInfo[playerid][pWanted] >= 1)
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
}
SendClientMessage(playerid, 0xFFFF00AA, "В подарке вы получили 2015000$.");
}

Andrik851
05.04.2019, 19:45
if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
PlayerInfo[playerid][pCash] += 2015000;
if(PlayerInfo[playerid][pWanted] >= 1)
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
}
SendClientMessage(playerid, 0xFFFF00AA, "В подарке вы получили 2015000$.");
}


там же еще два подарка если не ошибаюсь снятия розыска а если не врозыске то повышает на 1 уровень выше

Xeno
05.04.2019, 19:58
Пробуй так


if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
new str[57] = "В подарке вы получили ";
PlayerInfo[playerid][pCash] += 2015000;
GivePlayerMoney(playerid, 2015000);
strcat(str, "2015000$ ");
if(PlayerInfo[playerid][pWanted] >= 1)
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]);
strcat(str, "и очистку уровня розыска.");
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
strcat(str, "и 1 уровень.");
}
}

Andrik851
05.04.2019, 20:05
Пробуй так


if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
new str[57] = "В подарке вы получили ";
PlayerInfo[playerid][pCash] += 2015000;
GivePlayerMoney(playerid, 2015000);
strcat(str, "2015000$ ");
if(PlayerInfo[playerid][pWanted] >= 1)
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]);
strcat(str, "и очистку уровня розыска.");
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
strcat(str, "и 1 уровень.");
}
}




D:\локальный сервер\gamemodes\mrpv1.pwn(18534) : warning 217: loose indentation
D:\локальный сервер\gamemodes\mrpv1.pwn(18554) : warning 217: loose indentation
Pawn compiler 3.10.8 Copyright (c) 1997-2006, ITB CompuPhase

Header size: 19672 bytes
Code size: 6128484 bytes
Data size: 7630388 bytes
Stack/heap size: 16384 bytes; estimated max. usage=7264 cells (29056 bytes)
Total requirements:13794928 bytes

2 Warnings.

Xeno
05.04.2019, 20:18
Проверь, работает ли, а варнинги из за табуляции. Скорее всего строчки криво встали, нужно выровнять.
Можешь загуглить notepad табуляция павно, там много мануалов.

Andrik851
05.04.2019, 20:25
Проверь, работает ли, а варнинги из за табуляции. Скорее всего строчки криво встали, нужно выровнять.
Можешь загуглить notepad табуляция павно, там много мануалов.

работает но не правильно должно быть так в 1 подарке начисляются денги Cash а во втором если ты в розыске то его снимает а если нет то повышает на 1 уровень а 3 пустой там я сделаю средит

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

Да и сообщения с текстом не выводятся

Xeno
05.04.2019, 20:31
Да, увидел, вот


if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
new str[57] = "В подарке вы получили ";
PlayerInfo[playerid][pCash] += 2015000;
GivePlayerMoney(playerid, 2015000);
strcat(str, "2015000$ ");
if(PlayerInfo[playerid][pWanted] >= 1)
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]);
strcat(str, "и очистку уровня розыска.");
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
strcat(str, "и 1 уровень.");
}
SendClientMessage(playerid, 0xFFFF00AA,str);
}

А вот уже с выдачей призов нужно будет переделывать, если хочешь чтобы выдавало сначала одно, а потом второе. То есть игрок будет собирать 3 подарка сразу или как?

Andrik851
05.04.2019, 20:38
в каждом подарке одно и тоже но только чтобы они не повторялись

Xeno
05.04.2019, 20:46
Могу предложить такой вариант


if(pickupid == GIFTS[0] || pickupid == GIFTS[1] || pickupid == GIFTS[2] || pickupid == GIFTS[3] || pickupid == GIFTS[4] || pickupid == GIFTS[5] || pickupid == GIFTS[6] || pickupid == GIFTS[7] || pickupid == GIFTS[8] || pickupid == GIFTS[9] || pickupid == GIFTS[10] || pickupid == GIFTS[11] || pickupid == GIFTS[12] || pickupid == GIFTS[13] || pickupid == GIFTS[14]) // Если игрок стал на один из наших пикапов
{
if(GetPVarInt(playerid, "GiftNumber") == 0)
{
PlayerInfo[playerid][pCash] += 2015000;
GivePlayerMoney(playerid, 2015000);
SendClientMessage(playerid, 0xFFFF00AA,"В подарке вы получили 2015000$.");
SetPVarInt(playerid, "GiftNumber", 1);
}
else if(GetPVarInt(playerid, "GiftNumber") == 1)
{
if(PlayerInfo[playerid][pWanted] >= 1)
{
PlayerInfo[playerid][pWanted] = 0;// первая ошибка
SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]);
SendClientMessage(playerid, 0xFFFF00AA,"В подарке вы получили очистку розыска.");
}
else // вторая ошибка
{
PlayerInfo[playerid][pLevel] += 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
SendClientMessage(playerid, 0xFFFF00AA,"В подарке вы получили 1 уровень.");
}
SetPVarInt(playerid, "GiftNumber", 2);
}
else if(GetPVarInt(playerid, "GiftNumber") == 2)
{
//выдача 3 подарка
}
}

Andrik851
06.04.2019, 08:32
Все нормально работает

Andrik851
06.04.2019, 09:36
тему можно закрывать