PDA

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



Gotman
27.04.2017, 03:17
Здравствуйте. Целый день сидел, пролистал все форумы, уймы информации в интернете, ну не чего не помогает. Решил написать на помощь, конкретную проблему. Я пишу мод с 0, решил сделать систему продажи Ход-Догов, всё написал: и меню выбора и пикап и ботов, но вот одно не получается, а именно прибавление ХП. Я знаю как это тупо, но моя голова не может вспомнить, как написать данный код. Я перепробывал советы скриптеров в интернете про функцию "GivePlayerHealth", но она не прибавляет а на оборот ставит здоровье в то значение, которое я поставил для Ход-Дога. Например "Ход - Дог" - классический прибавляет = 20 ХП, а в реале просто значение ставится на 20 ХП и при этом не важно у игрока было 100 ХП или 10 ХП. Буду благодарен за подробную помощь и разбор данной проблемы :)

Вот код:
Это сам сток

stock GivePlayerHealth(playerid,Float:health)
{
new Float:hp;
GetPlayerHealth(playerid,hp);
SetPlayerHealth(playerid,hp+health);
}

А это код самой функции

case 0:
{
if(GetPlayerMoney(playerid) < 50)return SendClientMessage(playerid,0xFFE00AFF,"У тебя денег меньше 50$");
new moneyhd1 = 50;
Player[playerid][pMoney] -= moneyhd1;
GivePlayerHealth(playerid,20);
ApplyAnimation(playerid, "FOOD", "EAT_Burger", 10.1, 1, 1, 1, 1, 1);
SendClientMessage(playerid,0xFFE00AFF,"Ты съел: классический Ход-Дог");
return true;
}

Второй вопрос заключается в анимациях, а именно не проявляются с 1 раза, что на работе, там груз поднять, что ход дог съесть, что кричать. Прочитал много по этому поводу информации и не что не помогает. Говорю сразу перепробовал все варианты с "PreloadAnimLib(playerid,animlib[])" там с библиотекой и т.д. бесполезно и через стоки и через паблики конекта и спавна. Всёравно анимации не действуют с первого раза. Что делать вообще не представляю.

Заранее спасибо за помощь! :)

wAx
27.04.2017, 11:17
По первому вопросу - нужно сначала получить количество HP, которое имеет игрок

new Float:health;
GetPlayerHealth(playerid, health);
GivePlayerHealth(playerid, health+20.0);

По поводу анимаций, скинь подгрузку библиотек, как ты её реализовал.

Gotman
27.04.2017, 15:29
По первому вопросу - нужно сначала получить количество HP, которое имеет игрок

new Float:health;
GetPlayerHealth(playerid, health);
GivePlayerHealth(playerid, health+20.0);

По поводу анимаций, скинь подгрузку библиотек, как ты её реализовал.

Я как понял это Сток? И каждый раз вводя данную функцию в действие будет вызываться только плюсом 20 ХП не больше и не меньше?

Вот Так я реализововал:
Переменные

new gPlayerAnimLibsPreloaded[MAX_PLAYERS];
OnPlayerConnect

gPlayerAnimLibsPreloaded[playerid] = 0;
OnPlayerSpawn

if(!gPlayerAnimLibsPreloaded[playerid])
{
PreloadAnimLib(playerid, "BASEBALL");
PreloadAnimLib(playerid, "BEACH");
PreloadAnimLib(playerid, "benchpress");
PreloadAnimLib(playerid, "BD_FIRE");
PreloadAnimLib(playerid, "BOMBER");
PreloadAnimLib(playerid, "CAMERA");
PreloadAnimLib(playerid, "CAR_CHAT");
PreloadAnimLib(playerid, "CARRY");
PreloadAnimLib(playerid, "CASINO");
PreloadAnimLib(playerid, "COP_AMBIENT");
PreloadAnimLib(playerid, "CRACK");
PreloadAnimLib(playerid, "DAM_JUMP");
PreloadAnimLib(playerid, "DEALER");
PreloadAnimLib(playerid, "DODGE");
PreloadAnimLib(playerid, "FOOD");
PreloadAnimLib(playerid, "GANGS");
PreloadAnimLib(playerid, "GRAVEYARD");
PreloadAnimLib(playerid, "HEIST9");
PreloadAnimLib(playerid, "INT_HOUSE");
PreloadAnimLib(playerid, "INT_OFFICE");
PreloadAnimLib(playerid, "KISSING");
PreloadAnimLib(playerid, "LOWRIDER");
PreloadAnimLib(playerid, "MD_CHASE");
PreloadAnimLib(playerid, "ON_LOOKERS");
PreloadAnimLib(playerid, "PARK");
PreloadAnimLib(playerid, "PAULNMAC");
PreloadAnimLib(playerid, "PED");
PreloadAnimLib(playerid, "RYDER");
PreloadAnimLib(playerid, "RAPPING");
PreloadAnimLib(playerid, "RIOT");
PreloadAnimLib(playerid, "SHOP");
PreloadAnimLib(playerid, "SMOKING");
PreloadAnimLib(playerid, "SNM");
PreloadAnimLib(playerid, "STRIP");
PreloadAnimLib(playerid, "SUNBATHE");
PreloadAnimLib(playerid, "SWAT");
PreloadAnimLib(playerid, "SWORD");
PreloadAnimLib(playerid, "SWEET");
gPlayerAnimLibsPreloaded[playerid] = 1;
}
И в конец мода

PreloadAnimLib(playerid, animlib[])
{
ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
}

vovandolg
27.04.2017, 15:52
попробуй из fixes.inc плавную подгрузку анимаций, сам лично её пробовал куда правильнее и оптимизированее работает

Gotman
27.04.2017, 16:12
Извините за мою тупость, но я все варианты перепробывал исправление данных ошибок. Если получалось то функция прибавки ХП оставалась такой же как и раньше, тоесть не прибавляла +20 ХП, а фиксировала на 20 ХП.

warning 219: local variable "health" shadows a variable at a preceding level
warning 203: symbol is never used: "health"

На счёт "fixes.inc" по подробней можно? :blush2::blush2::blush2::blush2:

wAx
27.04.2017, 21:16
case 0:
{
if(GetPlayerMoney(playerid) < 50)return SendClientMessage(playerid,0xFFE00AFF,"У тебя денег меньше 50$");
Player[playerid][pMoney] -= 50;

new Float:hp;
GetPlayerHealth(playerid, hp);
GivePlayerHealth(playerid,hp+20.0);
ApplyAnimation(playerid, "FOOD", "EAT_Burger", 10.1, 1, 1, 1, 1, 1);
SendClientMessage(playerid,0xFFE00AFF,"Ты съел: классический Ход-Дог");
return true;
}
просто замени

vovandolg
27.04.2017, 21:25
На счёт "fixes.inc" по подробней можно? :blush2::blush2::blush2::blush2:

fixes (http://pro-pawn.ru/showthread.php?14040-fixes-inc-%D0%B8%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B1%D0%B0%D0%B3%D0%BE%D0%B2-SA-MP)


Ctrl + F
и ищи эти части слов на странице:
ApplyAnimation_2 Когда ApplyAnimation вызывается первый раз после появления игрока, она не работает.