-
Helló azt szeretném megkérdezni hogy hogyan lehetne az megoldani hogy a jármû ne robbanjon fel.
Én próbáltam OnVehicleDamageStatusUpdate de nem jött össze :(
-
mivel nem a textura alapján nézi, hogy sérült e, gondolj bele ha minigunnal szétlövik nem látszik mégis robban :D
Ez kell neked:
http://wiki.sa-mp.com/wiki/GetVehicleHealth
http://wiki.sa-mp.com/wiki/SetVehicleHealth
-
Nem teszteltem, de ha hiba van akkor szólj:
new dam_timer[MAX_PLAYERS]; //timer-eknek egy tömb
public OnPlayerStateChange(playerid, newstate, oldstate) //ha állást vált
{
if(newstate != PLAYER_STATE_DRIVER) return 0; //ha nem õ a sofõr
dam_timer[playerid] = SetTimerEx(\"repair\", 500, true, \"i\", playerid); //elindítja a timert, fél másodpercenként, azaz 500ms-enként fut le
return 1;
}
forward repair(playerid);
public repair(playerid)
{
SetVehicleHealth(GetPlayerVehicleID(playerid), 1000); //1000 lesz a kocsi
return 1;
}
public OnPlayerExitVehicle(playerid)
{
KillTimer(dam_timer[playerid]); //kilövi a timert
return 1;
}
-
Nem teszteltem, de ha hiba van akkor szólj:
new dam_timer[MAX_PLAYERS]; //timer-eknek egy tömb
public OnPlayerStateChange(playerid, newstate, oldstate) //ha állást vált
{
if(newstate != PLAYER_STATE_DRIVER) return 0; //ha nem õ a sofõr
dam_timer[playerid] = SetTimerEx(\"repair\", 500, true, \"i\", playerid); //elindítja a timert, fél másodpercenként, azaz 500ms-enként fut le
return 1;
}
forward repair(playerid);
public repair(playerid)
{
SetVehicleHealth(GetPlayerVehicleID(playerid), 1000); //1000 lesz a kocsi
return 1;
}
public OnPlayerExitVehicle(playerid)
{
KillTimer(dam_timer[playerid]); //kilövi a timert
return 1;
}
[/quote]
én nem pont erre gondoltam de lehet ez kellett neki csak ez a kód nem jó...
ha 100x beszáll 1 ember akármilyen jármûbe létrehoz 100 timert ami mindig fut...szóval eléggé terhelné a szervert egy idõ után
http://wiki.sa-mp.com/wiki/KillTimer
de felesleges játékosonként 1-1 timer inkább ciklust használnék erre
-
ha elolvasnád ott van a killtimer :facepalm: 1,
2 pedig a ciklus az megfagyaszthatja 1-2 másodpercre a szervert ha sok a jármû.
-
ha elolvasnád ott van a killtimer :facepalm: 1,
2 pedig a ciklus az megfagyaszthatja 1-2 másodpercre a szervert ha sok a jármû.
[/quote]
bocs, tényleg ott van a KillTimer, nem figyeltem :)
nem is a jármûveken kell végig menni :facepalm: :D itt sem a jármûvekre adtál timert :)
-
ja... tényleg, elfelejtettem, hogy az emberek akarnak fel robbanni :) jó hogy szóltál ;)
a Timer-t a játékosok kapják, ha jármûre rakom a timer az sokkal gázabb....
Dupla hozzászólás automatikusan összefûzve. ( 2013. október 29. - 15:07:23 )
kis javítás:
new dam_timer[MAX_PLAYERS]; //timer-eknek egy tömb
public OnPlayerStateChange(playerid, newstate, oldstate) //ha állást vált
{
if(newstate == PLAYER_STATE_DRIVER){
dam_timer[playerid] = SetTimerEx(\"repair\", 500, true, \"i\", playerid); //elindítja a timert, fél másodpercenként, azaz 500ms-enként fut le
}
return 1;
}
forward repair(playerid);
public repair(playerid)
{
SetVehicleHealth(GetPlayerVehicleID(playerid), 1000); //1000 lesz a kocsi
return 1;
}
public OnPlayerExitVehicle(playerid)
{
KillTimer(dam_timer[playerid]); //kilövi a timert
return 1;
}
-
for(new i; i < GetMaxPlayers(); i++)
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER) { RepairVehicle(GetPlayerVehicle(i)); }
}
csak hogy örülj :D 30 timer kicsit jobban terhel mint 1 ciklus de te tudod nem állok le vitázni te használd nyugodtan a timereket :)
-
Jó, ne haragudj..
new i = 1*
és egyébként, ha ciklust szeretnél használni, te hova rakod be?:)
-
public RepairAllPlayerVehicle()
{
for(new i; i < GetMaxPlayers(); i++)
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER) { RepairVehicle(GetPlayerVehicle(i)); }
}
return 1;
}
SetTimer(\"RepairAllPlayerVehicle\",500,true);
-
Értem, csak ezért kérdeztem, hogy van neki 2000 jármûve lerakva és van fenn 2-10-20 játékos akkor semmi értelme hogy végig fusson az összesen.. :/
-
én olyanra gondoltam hogy pl eléri a 350 akkor lejebb ne menjen
Dupla hozzászólás automatikusan összefûzve. ( 2013. október 29. - 15:23:52 )
vagyis ne szerelje meg meg akkor az én szerelõmunkámnak semmi lényege
-
SetTimer(\"RepairAllPlayerVehicle\",500,true);
[/quote]
new Float:hp;
public RepairAllPlayerVehicle()
{
for(new i; i < MAX_VEHICLES; i++)
{
GetVehicleHealth(i,hp);
if(hp < 350) SetVehicleHealth(i,350);
}
}
ui: bocs telon nem tudok elrendezest.
-
kösz