PDA

Просмотр полной версии : [Мануал] Новая работа лесоруба(На машинке)



Long-
07.03.2017, 17:26
Управление транспортом:



L.ALT - Разогнать диск.
L.ALT - Остановить диск.
WASD - Передвижения.



Описание



Диск разгоняется, кружится плавно.
Только единственный минус, как только дерево вы срубили , то дерево просто удаляется, можно было и чтобы упало(Но я просто не когда не работал с функция MoveObject).
Работа новичку по pawn не подойдет, ибо это только основа, нужно еще сделать ферму и расставить машину и не много маппинга(Если есть маппер, напиши сделаем вместе)).


Ко всем глобальным переменным:



new gPlayerObject,
gPlayerVehicle,
gTimer[MAX_PLAYERS char],
gTree;


В OnGameModeInit



gPlayerObject = CreateObject(933, -11.27580, -101.37350, 2.0, 0.0, 0.0, 0.0);
gPlayerVehicle = CreateVehicle(574, 0.2742, -108.0702, 2.0, 0.0, -1, -1, 100);
gTree = CreateObject(725,-5.6700,-97.5638,0.0,2.0, 0.0, 0.0, 0.0);
AttachObjectToVehicle(gPlayerObject, gPlayerVehicle, -0.01, 2.73, -0.62, 0.00, 0.00, 0.00);


В OnPlayerKeyStateChange



if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(newkeys & KEY_FIRE)
{
if(!GetPVarInt(playerid, "job_logger"))
{
gTimer{playerid} = SetTimerEx("@__UpdateAttachedRotPos", 10, true ,"d", playerid);
SetPVarInt(playerid, "job_logger", 1);
SendClientMessage(playerid, -1, "Включили");
}
else
{
KillTimer(gTimer{playerid});
DeletePVar(playerid,"job_logger");
SendClientMessage(playerid, -1, "Отключили");
}
}
}


Сам Callback



@__UpdateAttachedRotPos(playerid);
@__UpdateAttachedRotPos(playerid)
{
static
rotation_coordinates,
time_logging[MAX_PLAYERS char],
string[8];

if (rotation_coordinates > 360)
rotation_coordinates = 0;

AttachObjectToVehicle(gPlayerObject, gPlayerVehicle, -0.01, 2.73, -0.62, 0.00, 0.00, rotation_coordinates += 20);

new
Float:object_x,
Float:object_y,
Float:object_z;

GetObjectPos(gTree, object_x, object_y, object_z);

if(IsPlayerInRangeOfPoint(playerid, 6.0, object_x, object_y, object_z) && rotation_coordinates == 360)
{
format(string, sizeof string, "%d/200", ++time_logging{playerid});
if(time_logging{playerid} == 200)
{
DestroyObject(gTree);
SendClientMessage(playerid, -1, "Пройдено!");
KillTimer(gTimer{playerid});
time_logging{playerid} = 0;
}
GameTextForPlayer(playerid, string, 10000, 3);
}
}


Команда для TP



CMD:tptrees(playerid)
return SetPlayerPos(playerid, -11.27580, -101.37350, 2.0);


Видео обзор



https://www.youtube.com/watch?v=9TxPZbvc1e0

DeimoS
07.03.2017, 17:55
if(IsPlayerInRangeOfPoint(playerid, 6.0, object_x, object_y, object_z) && rotation_coordinates == 360)
{
format(string, sizeof string, "%d/200", ++time_logging{playerid});
if(time_logging{playerid} == 200)
{
DestroyObject(gTree);
SendClientMessage(playerid, -1, "Пройдено!");
KillTimer(gTimer);
time_logging{playerid} = EOS;
}
}
GameTextForPlayer(playerid, string, 100, 3);
}
Не совсем понял смысла в расположении GameTextForPlayer. Если проверка не пройдёт, зачем показывать пустой GameTextForPlayer?

Long-
07.03.2017, 18:00
Не совсем понял смысла в расположении GameTextForPlayer. Если проверка не пройдёт, зачем показывать пустой GameTextForPlayer?

Если засунуть в тело проверки, то, он будет мигать, т.е каждую итерацию он будет обновлять данную функцию, выглядит очень не красиво :(

wAx
07.03.2017, 18:10
Если засунуть в тело проверки, то, он будет мигать, т.е каждую итерацию он будет обновлять данную функцию, выглядит очень не красиво :(

Увеличь время показа Gametext, не должно мигать.

у меня закружилась голова не только из-за езды по кругу, еще и из-за качественного монтажа. Не делай больше так xD

Long-
07.03.2017, 18:16
Увеличь время показа Gametext, не должно мигать.

у меня закружилась голова не только из-за езды по кругу, еще и из-за качественного монтажа. Не делай больше так xD

Сделаю по вашему , но тестировать не смогу, ибо Samp'a нет.
Ну думаю поможет.
На счет видео - снимал не я, да то что там заснято жесть.. :D
Исправил, спасибо :)

KillStreak
08.03.2017, 17:44
У kissad21 такое было.

Long-
08.03.2017, 19:20
У kissad21 такое было.

Именно, он предъвил это как его идею, но исходников нет.
Я же написал его идею, и выложил.