PDA

Просмотр полной версии : [Вопрос] Не работают пикапы входа/выхода в здание LSPD



xxlex
18.09.2016, 19:19
Захожу на пикап и ничего не происходит он меня не тпшит, что неправльно написал? помогите.
public OnPlayerPickUpDynamicPickup(playerid, pickupid)

if(pickupid == lspd_pic[0])
{
SetPlayerPos(playerid, 246.5096,64.6154,1003.6406);
SetPlayerFacingAngle(playerid, 0.7199);
SetPlayerInterior(playerid, 6);
SetPlayerVirtualWorld(playerid, 1);
SetCameraBehindPlayer(playerid);
}
if(pickupid == lspd_pic[1])
{
SetPlayerPos(playerid, 246.2354,85.9883,1003.6406);
SetPlayerFacingAngle(playerid, 182.7449);
SetPlayerInterior(playerid, 6);
SetPlayerVirtualWorld(playerid, 1);
SetCameraBehindPlayer(playerid);
}
if(pickupid == lspd_pic[2])
{
SetPlayerPos(playerid, 1551.0967,-1675.4124,15.6975);
SetPlayerFacingAngle(playerid, 89.5903);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
}
if(pickupid == lspd_pic[3])
{
SetPlayerPos(playerid, 1568.3635,-1692.4954,5.8906);
SetPlayerFacingAngle(playerid, 179.1812);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
}
return true;
}

если нужны еще какие-нибудь строки я еще скину.

Sp1ke
18.09.2016, 19:21
Создание пикапов покажи, скорее всего ты создаешь обычный пикап (CreatePickup), а не динамический через стример (CreateDynamicPickup)

xxlex
18.09.2016, 19:34
да было просто CreatePickup изменил на CreateDynamicPickup всеравно не работают

stock Pickups()
{
lspd_pic[0] = CreateDynamicPickup(1318, 23, 1555.5061,-1675.6877,16.1953);
lspd_pic[1] = CreateDynamicPickup(1318, 23, 1568.5746,-1689.9711,6.2188);
lspd_pic[2] = CreateDynamicPickup(1318, 23, 246.7775,62.3243,1003.6406, 1);
lspd_pic[3] = CreateDynamicPickup(1318, 23, 246.4390,88.0071,1003.6406, 1);
}

Sp1ke
18.09.2016, 19:36
да было просто CreatePickup изменил на CreateDynamicPickup всеравно не работают

Можно все таки увидеть полный код, как я и попросил.
1. Создание пикапов
2. Полный паблик OnPlayerPickUpDynamicPickup, если ты его не выложил полностью в первом посте, если он полный то не дублируй. А так же проверь нету у тебя этого паблика в других скриптах.

UP: stock Pickups прописан в OnGameModeInit?

xxlex
18.09.2016, 19:40
Можно все таки увидеть полный код, как я и попросил.
1. Создание пикапов
2. Полный паблик OnPlayerPickUpDynamicPickup, если ты его не выложил полностью в первом посте, если он полный то не дублируй. А так же проверь нету у тебя этого паблика в других скриптах.

UP: stock Pickups прописан в OnGameModeInit?

полный паблик

public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
if(pickupid == OldPickup[playerid] || TimePickup[playerid] > 0) return true;
new Float: z;
GetPlayerPos(playerid, PickupX[playerid], PickupY[playerid], z);
TimePickup[playerid] = 3;
OldPickup[playerid] = pickupid;
new string[220];
new id;
for(new h = 0; h < sizeof(House); h++)
{
if(pickupid == House[h][hPickup])
{
HouseInfo[playerid] = h;
new textclass[2];
new textonline[16];
new textopen[15];
switch(House[h][hClass])
{
case 0: textclass = "N";
case 1: textclass = "D";
case 2: textclass = "C";
case 3: textclass = "B";
case 4: textclass = "A";
}
sscanf(House[h][hPlayer], "u", id);
if(IsPlayerConnected(id)) textonline = "{1AA41E}Online";
else textonline = "{FF0000}Offline";
if(House[h][hOpen] == 0) textopen = "{FF0000}Çàêðûò";
else textopen = "{1AA41E}Îòêðûò";
if(strcmp(House[h][hPlayer],"None",true) == 0)
{
f("{EDEDED}Íîìåð äîìà: {FFFF00}%d\n{EDEDED}Öåíà äîìà: {FFFF00}%d\n{EDEDED}Êëàññ äîìà: {FFFF00}%s\n{EDEDED}Êîëè÷åñòâî ìåñò â ãàðàæå: {FFFF00}%d",h, House[h][hCost], textclass, House[h][hClass]);
SPD(playerid, 51, DSM, "{1AA41E}Äîì ñâîáîäåí", string, "Êóïèòü", "Îòìåíà");
}
else
{
f("{EDEDED}Âëàäåëåö äîìà: {00BFFF}%s {EDEDED}[%s{EDEDED}]\n{EDEDED}Íîìåð äîìà: {FFFF00}%d\n{EDEDED}Êëàññ äîìà: {FFFF00}%s\n{EDEDED}Êîëè÷åñòâî ìåñò â ãàðàæå: {FFFF00}%d\n{EDEDED}Äîì: %s", House[h][hPlayer], textonline, h, textclass, House[h][hClass], textopen);
SPD(playerid, 52, DSM, "{FF0000}Äîì çàíÿò", string, "Âîéòè", "Îòìåíà");
}
}
}
if(pickupid == lspd_pic[0])
{
SetPlayerPos(playerid, 246.5096,64.6154,1003.6406);
SetPlayerFacingAngle(playerid, 0.7199);
SetPlayerInterior(playerid, 6);
SetPlayerVirtualWorld(playerid, 1);
SetCameraBehindPlayer(playerid);
}
if(pickupid == lspd_pic[1])
{
SetPlayerPos(playerid, 246.2354,85.9883,1003.6406);
SetPlayerFacingAngle(playerid, 182.7449);
SetPlayerInterior(playerid, 6);
SetPlayerVirtualWorld(playerid, 1);
SetCameraBehindPlayer(playerid);
}
if(pickupid == lspd_pic[2])
{
SetPlayerPos(playerid, 1551.0967,-1675.4124,15.6975);
SetPlayerFacingAngle(playerid, 89.5903);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
}
if(pickupid == lspd_pic[3])
{
SetPlayerPos(playerid, 1568.3635,-1692.4954,5.8906);
SetPlayerFacingAngle(playerid, 179.1812);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
}
return true;
}
stock Pickups прописан в OnGameModeInit.

Sp1ke
18.09.2016, 19:50
Попробуй убрать анти флуд проверку

if(pickupid == OldPickup[playerid] || TimePickup[playerid] > 0) return true;
А так же добавить в начало паблика

printf("Паблик динамических пикапов сработал, %d", pickupid);

DeimoS
18.09.2016, 19:53
Во-первых, вы ошиблись разделом. Перенесено.
Во-вторых, код нужно убирать в тег [php]
В-третьих, если код большой, его так же лучше убирать под спойлер.

xxlex
18.09.2016, 19:59
Попробуй убрать анти флуд проверку

if(pickupid == OldPickup[playerid] || TimePickup[playerid] > 0) return true;
А так же добавить в начало паблика

printf("Паблик динамических пикапов сработал, %d", pickupid);
Спасибо все заработало

Sp1ke
18.09.2016, 20:01
Спасибо все заработало

Скорее всего ты не отнимаешь значение переменной TimePickup в ежесекундном таймере, чтобы работал антифлуд это тебе и нужно сделать, или использовать GetTickCount/gettime

xxlex
18.09.2016, 20:21
Скорее всего ты не отнимаешь значение переменной TimePickup в ежесекундном таймере, чтобы работал антифлуд это тебе и нужно сделать, или использовать GetTickCount/gettime

А как это делается?

Sp1ke
18.09.2016, 20:23
А как это делается?



new unixtime = gettime();
if(TimePickup[playerid] >= unixtime) return true;
TimePickup[playerid] = unixtime + 3;

xxlex
18.09.2016, 20:27
а где это надо прописать?

Sp1ke
18.09.2016, 20:29
а где это надо прописать?

Вместо строки
if(pickupid == OldPickup[playerid] || TimePickup[playerid] > 0) return true; и антифлуд начнет работать, на пикап можно будет не чаще, чем через 3 секунды