PDA

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



Albert
04.01.2015, 20:24
Создаю новый диалог и появляется уйма ошибок
Диалог:



if(dialogid == 7)// Инвентарь
{
if(response)
{
if(listitem == 0) // Водка
{
if(pInfo[playerid][pVodka] != 0)
{

pInfo[playerid][pVodka] -= 1;
pInfo[playerid][pInfect] -= 15;
pInfo[playerid][pHunger] += 15;
SendClientMessage(playerid,0x88AA88AA,"Вы выпили бутылку водки");
GameTextForPlayer(playerid, "Заражение -15", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончилась водка");
}
if(listitem == 1) // Консервы
{
if(pInfo[playerid][pKonserv] != 0)
{

pInfo[playerid][pKonserv] -= 1;
pInfo[playerid][pHunger] -= 30;
SendClientMessage(playerid,0x88AA88AA,"Вы съели порцию консерв");
GameTextForPlayer(playerid, "Голод -30", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончились консервы");
}
if(listitem == 2) // Препорат "Антирад"
{
if(pInfo[playerid][pPreporat] != 0)
{

pInfo[playerid][pPreporat] -= 1;
pInfo[playerid][pInfect] -= 50;
SendClientMessage(playerid,0x88AA88AA,"Вы приняли препорат `Антирад`");
GameTextForPlayer(playerid, "Заражение -50", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончились препораты");
}
if(listitem == 3) // Армейский паёк
{
if(pInfo[playerid][pRation] != 0)
{

pInfo[playerid][pRation] -= 1;
pInfo[playerid][pHunger] -= 100;
SendClientMessage(playerid,0x88AA88AA,"Вы съели 1 армейский паёк");
GameTextForPlayer(playerid, "Голод -100", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончился армейский паёк");
}
if(listitem == 4) // ИПП
{
if(pInfo[playerid][pIpp] != 0)
{
new float:PH;
GetPlayerHealth(playerid, PH); //Узнаём сколько хп на данный момент у игрока
SetPlayerHealth(playerid, PH +50); //Прибовляем 15 хп
pInfo[playerid][pIpp] -= 1;

SendClientMessage(playerid,0x88AA88AA,"Вы использовали 1 ИПП");
GameTextForPlayer(playerid, "Здоровье +50", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончились ИПП");
}
if(listitem == 5) // Армейская аптечка
{
if(pInfo[playerid][pMedic] != 0)
{
new float:PH;
GetPlayerHealth(playerid, PH); //Узнаём сколько хп на данный момент у игрока
SetPlayerHealth(playerid, PH +100); //Прибовляем 15 хп
pInfo[playerid][pMedic] -= 1;

SendClientMessage(playerid,0x88AA88AA,"Вы использовали 1 армейскую аптечку");
GameTextForPlayer(playerid, "Здоровье +100", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончились армейские аптечки");
}


}
else
{
SendClientMessage(playerid,0x88AA88AA,"Вы закрыли инвентарь");
return 1;
}


Ошибки:



E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(124) : error 017: undefined symbol "ChangeWeather"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(210) : error 017: undefined symbol "RemovePlayerInfo"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(229) : error 017: undefined symbol "SavePlayer"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(704) : error 017: undefined symbol "CreateAccount"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(722) : error 017: undefined symbol "OnPlayerLogin"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(972) : warning 213: tag mismatch
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(973) : warning 213: tag mismatch
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(989) : warning 213: tag mismatch
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(990) : warning 213: tag mismatch
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1014) : 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(1014) : error 004: function "OnPlayerClickPlayer" is not implemented
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1019) : warning 225: unreachable code
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1019) : 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(1019) : error 017: undefined symbol "UnfreezePlayer"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1020) : 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(1020) : error 017: undefined symbol "UnfreezePlayer"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1021) : error 001: expected token: ";", but found "return"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1026) : warning 225: unreachable code
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1026) : 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(1026) : error 017: undefined symbol "UpdateOneSecond"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1029) : 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(1029) : error 017: undefined symbol "UpdateOneSecond"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1421) : 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(1421) : error 017: undefined symbol "ChangeWeather"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1423) : 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(1423) : error 017: undefined symbol "ChangeWeather"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1448) : warning 225: unreachable code
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1448) : 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(1448) : error 017: undefined symbol "Eject"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1450) : 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(1450) : error 017: undefined symbol "Eject"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1472) : 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(1472) : error 004: function "ProxDetector" is not implemented



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

Исправил. Теперь диалог верный:



if(dialogid == 10)// V Bare
{
if(response)
{
if(listitem == 0) // Âîäêà
{
if(pInfo[playerid][pVodka] != 0)
{

pInfo[playerid][pVodka] -= 1;
pInfo[playerid][pInfect] -= 15;
pInfo[playerid][pHunger] += 15;
SendClientMessage(playerid,0x88AA88AA,"Âû âûïèëè áóòûëêó âîäêè");
GameTextForPlayer(playerid, "Çàðàæåíèå -15", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"Ó âàñ çàêîí÷èëàñü âîäêà");
}
}
if(listitem == 1) // Êîíñåðâû
{
if(pInfo[playerid][pKonserv] != 0)
{

pInfo[playerid][pKonserv] -= 1;
pInfo[playerid][pHunger] -= 30;
SendClientMessage(playerid,0x88AA88AA,"Âû ñúåëè ïîðöèþ êîíñåðâ");
GameTextForPlayer(playerid, "Ãîëîä -30", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"Ó âàñ çàêîí÷èëèñü êîíñåðâû");
}
if(listitem == 2) // Ïðåïîðàò "Àíòèðàä"
{
if(pInfo[playerid][pPreporat] != 0)
{

pInfo[playerid][pPreporat] -= 1;
pInfo[playerid][pInfect] -= 50;
SendClientMessage(playerid,0x88AA88AA,"Âû ïðèíÿëè ïðåïîðàò `Àíòèðàä`");
GameTextForPlayer(playerid, "Çàðàæåíèå -50", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"Ó âàñ çàêîí÷èëèñü ïðåïîðàòû");
}
}

if(listitem == 3) // Àðìåéñêèé ïà¸ê
{
if(pInfo[playerid][pRation] != 0)
{

pInfo[playerid][pRation] -= 1;
pInfo[playerid][pHunger] -= 100;
SendClientMessage(playerid,0x88AA88AA,"Âû ñúåëè 1 àðìåéñêèé ïà¸ê");
GameTextForPlayer(playerid, "Ãîëîä -100", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"Ó âàñ çàêîí÷èëñÿ àðìåéñêèé ïà¸ê");
}
}
if(listitem == 4) // ÈÏÏ
{

if(pInfo[playerid][pIpp] != 0)
{

GetPlayerHealth(playerid, PH); //Óçíà¸ì ñêîëüêî õï íà äàííûé ìîìåíò ó èãðîêà
SetPlayerHealth(playerid, PH +50); //Ïðèáîâëÿåì 15 õï
pInfo[playerid][pIpp] -= 1;

SendClientMessage(playerid,0x88AA88AA,"Âû èñïîëüçîâàëè 1 ÈÏÏ");
GameTextForPlayer(playerid, "Çäîðîâüå +50", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"Ó âàñ çàêîí÷èëèñü ÈÏÏ");
}
}

if(listitem == 5) // Àðìåéñêàÿ àïòå÷êà
{
if(pInfo[playerid][pMedic] != 0)
{
new float:PH;
GetPlayerHealth(playerid, PH); //Óçíà¸ì ñêîëüêî õï íà äàííûé ìîìåíò ó èãðîêà
SetPlayerHealth(playerid, PH +100); //Ïðèáîâëÿåì 15 õï
pInfo[playerid][pMedic] -= 1;

SendClientMessage(playerid,0x88AA88AA,"Âû èñïîëüçîâàëè 1 àðìåéñêóþ àïòå÷êó");
GameTextForPlayer(playerid, "Çäîðîâüå +100", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"Ó âàñ çàêîí÷èëèñü àðìåéñêèå àïòå÷êè");
}


}



}
else
{
SendClientMessage(playerid,0x88AA88AA,"Âû íàæàëè íà 'Êíîïêà 2' ëèáî Esc");
return 1;
}
}
}


Только выдаются ошибки


E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(977) : error 017: undefined symbol "PH"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(978) : error 017: undefined symbol "PH"
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(996) : warning 213: tag mismatch
E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(997) : warning 213: tag mismatch

Куда мне переменные на проверку хп правильно записать?

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

Проблемма решена. Нужно Float с большой буквы писать.

Albert
04.01.2015, 20:42
Новая проблемма. Функцианирует только пункт 0 и пункт 1. Пункты ниже не функцианируют. Инвентарь просто



if(dialogid == 10)// Инвентарь
{
if(response)
{
if(listitem == 0) // Водка
{
if(pInfo[playerid][pVodka] != 0)
{

pInfo[playerid][pVodka] -= 1;
pInfo[playerid][pInfect] -= 15;
pInfo[playerid][pHunger] += 15;
SendClientMessage(playerid,0x88AA88AA,"Вы выпили бутылку водки");
GameTextForPlayer(playerid, "Заражение -15", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончилась водка");
}
}
if(listitem == 1) // Консервы
{
if(pInfo[playerid][pKonserv] != 0)
{

pInfo[playerid][pKonserv] -= 1;
pInfo[playerid][pHunger] -= 30;
SendClientMessage(playerid,0x88AA88AA,"Вы съели порцию консерв");
GameTextForPlayer(playerid, "Голод -30", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончились консервы");
}
if(listitem == 2) // Препорат "Антирад"
{
if(pInfo[playerid][pPreporat] != 0)
{

pInfo[playerid][pPreporat] -= 1;
pInfo[playerid][pInfect] -= 50;
SendClientMessage(playerid,0x88AA88AA,"Вы приняли препорат `Антирад`");
GameTextForPlayer(playerid, "Заражение -50", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончились препораты");
}
}

if(listitem == 3) // Армейский паёк
{
if(pInfo[playerid][pRation] != 0)
{

pInfo[playerid][pRation] -= 1;
pInfo[playerid][pHunger] -= 100;
SendClientMessage(playerid,0x88AA88AA,"Вы съели 1 армейский паёк");
GameTextForPlayer(playerid, "Голод -100", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончился армейский паёк");
}
}
if(listitem == 4) // ИПП
{

if(pInfo[playerid][pIpp] != 0)
{
new Float:PH;
GetPlayerHealth(playerid, PH); //Узнаём сколько хп на данный момент у игрока
SetPlayerHealth(playerid, PH +50); //Прибовляем 15 хп
pInfo[playerid][pIpp] -= 1;

SendClientMessage(playerid,0x88AA88AA,"Вы использовали 1 ИПП");
GameTextForPlayer(playerid, "Здоровье +50", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончились ИПП");
}
}

if(listitem == 5) // Армейская аптечка
{
if(pInfo[playerid][pMedic] != 0)
{
new Float:PH;
GetPlayerHealth(playerid, PH); //Узнаём сколько хп на данный момент у игрока
SetPlayerHealth(playerid, PH +100); //Прибовляем 15 хп
pInfo[playerid][pMedic] -= 1;

SendClientMessage(playerid,0x88AA88AA,"Вы использовали 1 армейскую аптечку");
GameTextForPlayer(playerid, "Здоровье +100", 5000, 1);

}
else
{
SendClientMessage(playerid,0x88AA88AA,"У вас закончились армейские аптечки");
}


}



}
else
{
SendClientMessage(playerid,0x88AA88AA,"Вы закрыли инвентарь");
return 1;
}
}
}



Проблема решена. Дело было в скобках

#ball
04.01.2015, 21:19
if(dialogid == 10) {
if(response) {
switch(listitem) {
case 0: {
if(pInfo[playerid][pVodka] != 0)
{
pInfo[playerid][pVodka] -= 1;
pInfo[playerid][pInfect] -= 15;
pInfo[playerid][pHunger] += 15;
SendClientMessage(playerid,0x88AA88AA,"Вы выпили бутылку водки");
GameTextForPlayer(playerid, "Заражение -15", 5000, 1);
}
else SendClientMessage(playerid,0x88AA88AA,"У вас закончилась водка");
}
case 1: {
if(pInfo[playerid][pKonserv] != 0)
{
pInfo[playerid][pKonserv] -= 1;
pInfo[playerid][pHunger] -= 30;
SendClientMessage(playerid,0x88AA88AA,"Вы съели порцию консерв");
GameTextForPlayer(playerid, "Голод -30", 5000, 1);
}
else SendClientMessage(playerid,0x88AA88AA,"У вас закончились консервы");
}
case 2: {
if(pInfo[playerid][pPreporat] != 0)
{
pInfo[playerid][pPreporat] -= 1;
pInfo[playerid][pInfect] -= 50;
SendClientMessage(playerid,0x88AA88AA,"Вы приняли препорат `Антирад`");
GameTextForPlayer(playerid, "Заражение -50", 5000, 1);
}
else SendClientMessage(playerid,0x88AA88AA,"У вас закончились препораты");
}
case 3: {
if(pInfo[playerid][pRation] != 0)
{
pInfo[playerid][pRation] -= 1;
pInfo[playerid][pHunger] -= 100;
SendClientMessage(playerid,0x88AA88AA,"Вы съели 1 армейский паёк");
GameTextForPlayer(playerid, "Голод -100", 5000, 1);
}
else SendClientMessage(playerid,0x88AA88AA,"У вас закончился армейский паёк");
}
case 4: {
if(pInfo[playerid][pIpp] != 0)
{
new Float:PH;
GetPlayerHealth(playerid, PH); //Узнаём сколько хп на данный момент у игрока
SetPlayerHealth(playerid, PH +50); //Прибовляем 15 хп
pInfo[playerid][pIpp] -= 1;
SendClientMessage(playerid,0x88AA88AA,"Вы использовали 1 ИПП");
GameTextForPlayer(playerid, "Здоровье +50", 5000, 1);
}
else SendClientMessage(playerid,0x88AA88AA,"У вас закончились ИПП");
}
case 5: {
if(pInfo[playerid][pMedic] != 0)
{
new Float:PH;
GetPlayerHealth(playerid, PH); //Узнаём сколько хп на данный момент у игрока
SetPlayerHealth(playerid, PH +100); //Прибовляем 15 хп
pInfo[playerid][pMedic] -= 1;
SendClientMessage(playerid,0x88AA88AA,"Вы использовали 1 армейскую аптечку");
GameTextForPlayer(playerid, "Здоровье +100", 5000, 1);
}
else SendClientMessage(playerid,0x88AA88AA,"У вас закончились армейские аптечки");
}
}
}
else SendClientMessage(playerid,0x88AA88AA,"Вы закрыли инвентарь");
}


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

Пробуй.

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

Дам совет,научитесь писать код лесенкой.Вам проще будет найти не закрытую скобку.