Csak annyit fûznék hozzá hogy semmi értelme olyan Timert használni ami 1 másodpercenként megjavítaná a kocsikat (tudtommal senkinek se javítaná a kocsiját, mivel a kocsijavit(playerid) prototípusban nem hiovatkoztál rá hogy melyik playeridnek a kocsiját javítsa meg, ezáltal nem javítaná mindenkinek, hacsak egy for ciklussal mindenkinek megjavítanád) mikor értelmesebben is meglehet oldani.
Itt egy jobb, kevésbé terhelõ, picivel gyorsabb, tömörebb verzió:
#include <a_samp>
#include <zcmd>
#define COLOR_SIKERES 0x000080AA
#define COLOR_SIKERTELEN 0xFF0000AA
public OnFilterScriptInit() print(\" Autómatikus kocsi javító betöltve\");
public OnFilterScriptExit() print(\" Autómatikus kocsi javító kivéve\");
public OnPlayerConnect(playerid) SetPVarInt(playerid, \"javito\", 0);
public OnPlayerDisconnect(playerid, reason) SetPVarInt(playerid, \"javito\", 0);
public OnVehicleDamageStatusUpdate(vehicleid, playerid) if(GetPVarInt(playerid, \"javito\")) RepairVehicle(vehicleid);
CMD:repairletilt(playerid,params[]) // A játékos letilthatja magának
{
if(!GetPVarInt(playerid, \"javito\")) SetPVarInt(playerid, \"javito\", 1),
SendClientMessage(playerid,COLOR_SIKERES,\"Sikeresen letiltottad az autód javítását, ha összetöröd nem javul meg!\"),
SendClientMessage(playerid,COLOR_SIKERES,\"Ha újra törhetetlenné akarod tenni: /repairenged \");
else SendClientMessage(playerid,COLOR_SIKERTELEN,\"Már le volt tiltva neked az autómatikus javítás!!!\");
return 1;
}
CMD:repairenged(playerid,params[]) // A játékos engedélyezheti
{
if(GetPVarInt(playerid, \"javito\")) SetPVarInt(playerid, \"javito\", 0),
SendClientMessage(playerid,COLOR_SIKERES,\"A kocsid törhetetlen újra! Ha akarod hogy \'törékeny\' legyen, /repairletilt\");
else SendClientMessage(playerid,COLOR_SIKERTELEN,\"Neked eddig is engedélyezve volt a kocsi törhetetlenség!\");
return 1;
}
Csak annyit fûznék hozzá hogy semmi értelme olyan Timert használni ami 1 másodpercenként megjavítaná a kocsikat (tudtommal senkinek se javítaná a kocsiját, mivel a kocsijavit(playerid) prototípusban nem hiovatkoztál rá hogy melyik playeridnek a kocsiját javítsa meg, ezáltal nem javítaná mindenkinek, hacsak egy for ciklussal mindenkinek megjavítanád) mikor értelmesebben is meglehet oldani.
Itt egy jobb, kevésbé terhelõ, picivel gyorsabb verzió, tömör verzió:
#include <a_samp>
#include <zcmd>
#define COLOR_SIKERES 0x000080AA
#define COLOR_SIKERTELEN 0xFF0000AA
public OnFilterScriptInit() print(\" Autómatikus kocsi javító betöltve\");
public OnFilterScriptExit() print(\" Autómatikus kocsi javító kivéve\");
public OnPlayerConnect(playerid) SetPVarInt(playerid, \"javito\", 0);
public OnPlayerDisconnect(playerid, reason) SetPVarInt(playerid, \"javito\", 0);
public OnVehicleDamageStatusUpdate(vehicleid, playerid) if(GetPVarInt(playerid, \"javito\")) RepairVehicle(vehicleid);
CMD:repairletilt(playerid,params[]) // A játékos letilthatja magának
{
if(!GetPVarInt(playerid, \"javito\")) SetPVarInt(playerid, \"javito\", 1),
SendClientMessage(playerid,COLOR_SIKERES,\"Sikeresen letiltottad az autód javítását, ha összetöröd nem javul meg!\"),
SendClientMessage(playerid,COLOR_SIKERES,\"Ha újra törhetetlenné akarod tenni: /repairenged \");
else SendClientMessage(playerid,COLOR_SIKERTELEN,\"Már le volt tiltva neked az autómatikus javítás!!!\");
return 1;
}
CMD:repairenged(playerid,params[]) // A játékos engedélyezheti
{
if(GetPVarInt(playerid, \"javito\")) SetPVarInt(playerid, \"javito\", 0),
SendClientMessage(playerid,COLOR_SIKERES,\"A kocsid törhetetlen újra! Ha akarod hogy \'törékeny\' legyen, /repairletilt\");
else SendClientMessage(playerid,COLOR_SIKERTELEN,\"Neked eddig is engedélyezve volt a kocsi törhetetlenség!\");
return 1;
}
Valóban DrAkE megoldása sokkal jobb, nincs plusz felesleges timer.
Egyet felejtettetek el mivel zcmd-t használtok és filterscriptként írtátok meg.
Note #1: If you want to use zcmd in a filterscript, put this define before including:
#define FILTERSCRIPT
[/quote]
ZCMD
Tehát helyesen:
#include <a_samp>
#define FILTERSCRIPT
#include <zcmd>
Szép lett, Drake megoldása jobb, hatékonyabb, mivel PVar-t használt.
Megjegyezném:
public OnVehicleDamageStatusUpdate(vehicleid, playerid) if(GetPVarInt(playerid, \"javito\")) RepairVehicle(vehicleid);
Ez sajnos nem mindig jó. Pl., felborultál, keresed a /flip parancso ( ;D ) és akkor nem fog elállni az égés hanem felfogsz robbanni. Ezért használom én még mindig a timeres megoldást (vagy OnPlayerUpdatest ?!)