-
Проверка на броню
Создал зону с действием.
PHP код:
if(IsPlayerInRangeOfPoint(playerid, 50.0, -2155.3828,-2314.1523,30.4765))
{
new Float:PH;
new Float:armour;
if (GetPlayerArmour(playerid, armour) <== 0 //Если броня игрока меньше либо рова нулю, то
{
GetPlayerHealth(playerid, PH); //Узнаём сколько хп на данный момент у игрока
SetPlayerHealth(playerid, PH-10); //Отнимаем 10 хп
SetPlayerDrunkLevel (playerid, 3000);
SendClientMessage(playerid, 0xAA3333AA, "* Вы в радиоактивной зоне!");
}
false //Иначе (Если есть броня)
[
SetPlayerArmour(playerid, armour); //узнаём сколько брони на игроке
SetPlayerArmour(playerid, armour-1); // отнимаем 1 единицу брони
SendClientMessage(playerid, 0xAA3333AA, "* Вы в радиоактивной зоне!");
Хочу сделать так:
Если броня меньше либо рава нулю, то отнимается 10 ХП, даётся уровень опьянения 3000 и сообщение в чат
Иначе отнимается 1 единица брони и сообщение в чат
Однако выдаёт ошибки:
PHP код:
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(524) : error 029: invalid expression, assumed zero
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(524 -- 525) : error 029: invalid expression, assumed zero
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(531 -- 532) : error 028: invalid subscript (not an array or too many subscripts): "false"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(536) : error 029: invalid expression, assumed zero
-
PHP код:
if (GetPlayerArmour(playerid, armour) <== 0
- Ты во первых скобку не закрыл, и второе причем тут
PHP код:
false //Иначе (Если есть броня)
false значит лож, а иначе как я знаю обозначается так
И вообще в коде бред какой то:
PHP код:
if(IsPlayerInRangeOfPoint(playerid, 50.0, -2155.3828,-2314.1523,30.4765))
{
new Float:PH;
new Float:armour;
if (GetPlayerArmour(playerid, armour) <= 0) //Если броня игрока меньше либо рова нулю, то
{
GetPlayerHealth(playerid, PH); //Узнаём сколько хп на данный момент у игрока
SetPlayerHealth(playerid, PH-10); //Отнимаем 10 хп
SetPlayerDrunkLevel (playerid, 3000);
SendClientMessage(playerid, 0xAA3333AA, "* Вы в радиоактивной зоне!");
}
else { //Иначе (Если есть броня)
SetPlayerArmour(playerid, armour); //узнаём сколько брони на игроке
SetPlayerArmour(playerid, armour-1); // отнимаем 1 единицу брони
SendClientMessage(playerid, 0xAA3333AA, "* Вы в радиоактивной зоне!"); }
Табуляцию сам исправь если конечно у тебя pragma tabsize не стоит)
-
PHP код:
if(IsPlayerInRangeOfPoint(playerid, 50.0, -2155.3828,-2314.1523,30.4765))
{
new Float:armour;
if (GetPlayerArmour(playerid, armour) <= 0) //Åñëè áðîíÿ èãðîêà ìåíüøå ëèáî ðîâà íóëþ, òî
{
new Float:PH;
GetPlayerHealth(playerid, PH); //Óçíà¸ì ñêîëüêî õï íà äàííûé ìîìåíò ó èãðîêà
SetPlayerHealth(playerid, PH-10); //Îòíèìàåì 10 õï
SetPlayerDrunkLevel (playerid, 3000);
SendClientMessage(playerid, 0xAA3333AA, "* Âû â ðàäèîàêòèâíîé çîíå!");
PlayAudioStreamForPlayer(playerid,"http://stalker-samp.ucoz.ru/Radiaciya.mp3"); //ON MUSIC
}
else { //Èíà÷å (Åñëè åñòü áðîíÿ)
GetPlayerArmour(playerid, armour); //óçíà¸ì ñêîëüêî áðîíè íà èãðîêå
SetPlayerArmour(playerid, armour-1); // îòíèìàåì 1 åäèíèöó áðîíè
SendClientMessage(playerid, 0xAA3333AA, "* Âû â ðàäèîàêòèâíîé çîíå!"); }
PlayAudioStreamForPlayer(playerid,"http://stalker-samp.ucoz.ru/Radiaciya.mp3"); //ON MUSIC
}
Когда нет брони при первом разе ничего не происходит, а на второй раз выдаётся броня (100 или больше). А должно если нет брони, то отниматься хп, а если есть броя, то хп не отниматься, а отниматься броня.
Подскажите пожалуйста как исправить код?
-
GetPlayerArmour насколько я знаю void возвращает. Как вы собрались проверять значение функции?
Сначала получите количество брони, а потом сравнивайте значение переменной с числом, а не значение функции с числом.
-
Огромное спасибо. Вот рабочий код:
PHP код:
if(IsPlayerInRangeOfPoint(playerid, 50.0, -2155.3828,-2314.1523,30.4765))
{
new Float:armour;
new Float:PH;
GetPlayerArmour(playerid, armour);
if (armour != 0) //Åñëè áðîíÿ èãðîêà ìåíüøå ëèáî ðîâà íóëþ, òî
{
GetPlayerArmour(playerid, armour); //óçíà¸ì ñêîëüêî áðîíè íà èãðîêå
SetPlayerArmour(playerid, armour -1); // îòíèìàåì 1 åäèíèöó áðîíè
SendClientMessage(playerid, 0xAA3333AA, "* Âû â ðàäèîàêòèâíîé çîíå!");
PlayAudioStreamForPlayer(playerid,"http://stalker-samp.ucoz.ru/Radiaciya.mp3"); //ON MUSIC
}
else { //Èíà÷å (Åñëè åñòü áðîíÿ)
GetPlayerHealth(playerid, PH); //Óçíà¸ì ñêîëüêî õï íà äàííûé ìîìåíò ó èãðîêà
SetPlayerHealth(playerid, PH -10); //Îòíèìàåì 10 õï
SetPlayerDrunkLevel (playerid, 3000);
SendClientMessage(playerid, 0xAA3333AA, "* Âû â ðàäèîàêòèâíîé çîíå!");
PlayAudioStreamForPlayer(playerid,"http://stalker-samp.ucoz.ru/Radiaciya.mp3"); //ON MUSIC
}
}
Проблема решена. Чтоб я без бас всех делал... :good: