Wysłany: 2012-07-25, 18:08
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
Witam
Znalaz?em tempomat.Wklei?em do mapki.
Wszystko ?adnie dzia?a.Zacz??em gra? z
bratem i dzia?a? tylko mi (bo mia?em id 0).
Co zrobi? aby tempomat dzia?a? u wszystkich.
Oto kod:
Kod: if(IsPlayerInAnyVehicle(playerid))
{
if(GetPVarInt(playerid, "Tempomat_Enabled") == 1)
{
#if ENABLING == 2 || ENABLING == 3
if(newkeys & KEY_SUBMISSION)
return DisableCruiseControl(playerid);
#endif
if(newkeys & 8 || newkeys & 32 || newkeys & 128)
return DisableCruiseControl(playerid);
}
#if ENABLING == 2 || ENABLING == 3
else
{
if(newkeys & KEY_SUBMISSION)
return EnableCruiseControl(playerid);
}
#endif
}
return 0;
}
Za pomoc piwko i rep +5
Wysłany: 2012-07-25, 21:20
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
Zale?y gdzie masz ten kod, jak w forwardzie to musisz p?tl? robi?, bo w forwardzie playerid nie dzia?a. Nie wiem czy to bug, czy co, ale po prostu nie dzia?a (mi te?), wi?c radz? zrobi? ten kod w p?tli
Wysłany: 2012-07-27, 09:02
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
CombaT , to znaczy ja ten kod kt?ry jest w
pierwszym po?cie da?em do:
Kod: public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
a w?a?nie nie za bardzo wiem jak w tym publicu
zrobi? p?tle.Ju? pr?bowa?em ale tempomat nie
dzia?a?.
Wysłany: 2012-07-27, 10:20
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
A to nie wiem dlaczego dzia?a tylko dla id 0, mo?e kod ?le u?o?ony, nie wiem.
Wysłany: 2012-07-27, 18:14
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
No nic.
Mo?e kto? z supportu pomo?e.
Wysłany: 2012-07-28, 20:58
xqz
otaku desu!
Wiek: 32 Na forum: 6407 dni Posty: 723
Nick w MP: xqz
Piwa : 5465
Pokaz funkcje EnableCruiseControl(playerid); i DisableCruiseControl(playerid);
Wysłany: 2012-07-29, 09:18
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
xqz , prosz? bardzo.
Kod: EnableCruiseControl(playerid)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
SendClientMessage(playerid, jasnoczerwony, "Tempomat mo?esz w??czy? tylko jako kierowca.");
else if(GetPVarInt(playerid, "Tempomat_Enabled") != 0)
SendClientMessage(playerid, jasnozielony, "Tempomat jest ju? w??czony,aby go wy??czy? naci?nij Space.");
else
{
new vehicleid = GetPlayerVehicleID(playerid),
Float:velX,
Float:velY,
Float:velZ;
GetVehicleVelocity(vehicleid, velX, velY, velZ);
new Float:speed = floatsqroot(velX * velX + velY * velY + velZ * velZ);
if(speed > 0.1)
{
SetPVarFloat(playerid, "Tempomat_Speed", speed);
SetPVarInt(playerid, "Tempomat_Enabled", 1);
SendClientMessage(playerid, jasnoniebieski, "Tempomat w??czony,aby go wy??czy? naci?nij Space.");
}
else
SendClientMessage(playerid, jasnoczerwony, "Nie mo?esz w??czy? tempomatu przy takiej pr?dko?ci. Przyspiesz!");
}
return 1;
}
Kod: DisableCruiseControl(playerid)
{
DeletePVar(playerid, "Tempomat_Enabled");
DeletePVar(playerid, "Tempomat_Speed");
SendClientMessage(playerid, zielony, "Tempomat zosta? wy??czony.");
return 1;
}
Wysłany: 2012-07-29, 09:59
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
Wklej te kody z tych forward?w od razu do publica OnPlayerKeyStateChange , bo jak m?wi?em, w forwardach dzia?a tylko dla id 0
Wysłany: 2012-07-29, 11:52
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
Wklei?em to do:
Kod: public OnPlayerKeyStateChange
i mam errory:
Kod: C:\DOCUME~1\PASKAL\Pulpit\SAMP0~1.3E\GAMEMO~1\truck.pwn(3552) : error 017: undefined symbol "EnableCruiseControl"
C:\DOCUME~1\PASKAL\Pulpit\SAMP0~1.3E\GAMEMO~1\truck.pwn(4603) : error 017: undefined symbol "DisableCruiseControl"
C:\DOCUME~1\PASKAL\Pulpit\SAMP0~1.3E\GAMEMO~1\truck.pwn(4915) : error 017: undefined symbol "DisableCruiseControl"
C:\DOCUME~1\PASKAL\Pulpit\SAMP0~1.3E\GAMEMO~1\truck.pwn(4919) : error 017: undefined symbol "DisableCruiseControl"
C:\DOCUME~1\PASKAL\Pulpit\SAMP0~1.3E\GAMEMO~1\truck.pwn(4925) : error 017: undefined symbol "EnableCruiseControl"
i tak to wklei?em:
Kod: //temopmat funckja w??czenia
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
SendClientMessage(playerid, jasnoczerwony, "Tempomat mo?esz w??czy? tylko jako kierowca.");
else if(GetPVarInt(playerid, "Tempomat_Enabled") != 0)
SendClientMessage(playerid, jasnozielony, "Tempomat jest ju? w??czony,aby go wy??czy? naci?nij Space.");
else
{
new vehicleid = GetPlayerVehicleID(playerid),
Float:velX,
Float:velY,
Float:velZ;
GetVehicleVelocity(vehicleid, velX, velY, velZ);
new Float:speed = floatsqroot(velX * velX + velY * velY + velZ * velZ);
if(speed > 0.1)
{
SetPVarFloat(playerid, "Tempomat_Speed", speed);
SetPVarInt(playerid, "Tempomat_Enabled", 1);
SendClientMessage(playerid, jasnoniebieski, "Tempomat w??czony,aby go wy??czy? naci?nij Space.");
}
else
SendClientMessage(playerid, jasnoczerwony, "Nie mo?esz w??czy? tempomatu przy takiej pr?dko?ci. Przyspiesz!");
}
//tempomat funkcja wy??czania
DeletePVar(playerid, "Tempomat_Enabled");
DeletePVar(playerid, "Tempomat_Speed");
SendClientMessage(playerid, zielony, "Tempomat zosta? wy??czony.");
//tempomat w??czenie
if(IsPlayerInAnyVehicle(playerid))
{
if(GetPVarInt(playerid, "Tempomat_Enabled") == 1)
{
#if ENABLING == 2 || ENABLING == 3
if(newkeys & KEY_SUBMISSION)
return DisableCruiseControl(playerid);
#endif
if(newkeys & 8 || newkeys & 32 || newkeys & 128)
return DisableCruiseControl(playerid);
}
#if ENABLING == 2 || ENABLING == 3
else
{
if(newkeys & KEY_SUBMISSION)
return EnableCruiseControl(playerid);
}
#endif
}
Wysłany: 2012-07-29, 12:20
xqz
otaku desu!
Wiek: 32 Na forum: 6407 dni Posty: 723
Nick w MP: xqz
Piwa : 5465
CombaT , to nie sa forwardy.
paskal , skoro funkcja ustalajaca predkosc jest PVar to na pewno masz gdzies funkcje kontrolujaca ta predkosc wedlug pvara.
W OnPlayerUpdate lub jakis timer?
Wysłany: 2012-07-29, 15:20
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
xqz , mam taki timer:
Kod: SetTimer("Tempomat_Refresh", TIMER_DELAY, 1);
i tu mam public timer'a:
Kod: public Tempomat_Refresh()
{
new vehicleid,
Float:rotZ,
Float:velX,
Float:velY,
Float:velZ,
Float:speed;
foreach(Player, playerid)
{
vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid != 0 && GetPVarInt(playerid, "Tempomat_Enabled") == 1)
{
speed = GetPVarFloat(playerid, "Tempomat_Speed");
GetVehicleVelocity(vehicleid, velX, velY, velZ);
if(velX == 0.0 && velY == 0.0 && velZ == 0.0)
GetVehicleZAngle(vehicleid, rotZ);
else
rotZ = Float:GetHeadingAngle(velX, velY, 0.0, 0.0);
SetVehicleVelocity(vehicleid, speed * floatsin(-rotZ, degrees), speed * floatcos(-rotZ, degrees), velZ);
}
}
return 1;
}
P.S nie wiem czy to rozwi??e m?j problem ale
znaj?c ciebie to zawsze co? poradzisz.
Wysłany: 2012-07-31, 19:00
xqz
otaku desu!
Wiek: 32 Na forum: 6407 dni Posty: 723
Nick w MP: xqz
Piwa : 5465
paskal , zapomnialem, ze pisalem w temacie xD
Sprobuj uzyc zwyklego timera a nie foreach
Tagi: tempomat :: działa :: dla
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: