-
Segítségeteket szeretném kérni egy alap szkript miatt.
A gondom az lenne hogy restartolom a szerót és belépek a játékba.Kipróbálásként vminek neki megyek nem javul meg ,ezért bekapcsolom az autójavítót. Ez eddig minden oké.
PROBLÉMA:Ha kilépek a játékból és újból belépek (Nem restartolom!) a játékba akkor már úgy érzékeli hogy autójavító bekapcsolva maradt ez miért van?Elvileg az OnPlayerConnect-nél állítom be hogy a player fellép akkor maradjon kikapcsolva. :wall: :wall: :wall: :weep: :hmmm:
#include <a_samp>
#include <zcmd>
#define COLOR_RED 0xFF0000FF
#define COLOR_GREEN 0x00FF00FF
new Kocsijavitas[MAX_PLAYER_NAME];
new Javitas;
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Blank Filterscript by your name here\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
Kocsijavitas[playerid] = 0;
return 1;
}
forward Kocsijavito(playerid, vehicleid);
public Kocsijavito(playerid, vehicleid)
{
SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
RepairVehicle(GetPlayerVehicleID(playerid));
}
CMD:fix(playerid, params[])
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage (playerid,0xFFFF00FF,\"Ezt a parancsot, csak kocsiban használhatod!\");
{
if(Kocsijavitas[playerid] == 0)
{
Javitas = SetTimer(\"Kocsijavito\", 800, true);
SendClientMessage(playerid, COLOR_GREEN, \"Automata Javitás Bekapcsolva (Kikapcsolni a [/fix] Paranccsal)!\");
Kocsijavitas[playerid] = 1;
}
else if(Kocsijavitas[playerid] == 1)
{
SendClientMessage(playerid, COLOR_RED, \"Automata javítás kikapcsolva!\");
Kocsijavitas[playerid] = 0;
KillTimer(Javitas);
}
}
return 1;
}
Egyetlen bajom van hogy többféle módon is próbálkoztam. Pl.
new Kocsijavitas[MAX_PLAYERS];
new Kocsijavitas[MAX_PLAYER_NAME];
new bool:Kocsijavitas[MAX_PLAYERS];
new bool:Kocsijavitas[MAX_PLAYER_NAME];
-
public Kocsijavito(playerid, vehicleid)
Javitas = SetTimer(\"Kocsijavito\", 800, true);
ez így nagyon nem jó...főleg ha 2x írod be akkor 2x indul el a timer...
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage (playerid,0xFFFF00FF,\"Ezt a parancsot, csak kocsiban használhatod!\");
{
itt nem kell blokkot nyitni, mivel az if-hez tartozó kód a return SendClientMessage
alakítsd át, hogy vagy 1 timer legyen és akkor abban ciklussal javítasz, vagy játékosonként timer de akkor SetTimerEx-et használd!
http://wiki.sa-mp.com/wiki/SetTimerEx
-
Ezt hogy érted?
Letudod írni nekem a teljes scriptet?(Enyémről másolva!)
-
OnPlayerDisconnect:
KillTimer(Javitas);
Mivel hiába lépsz ki, ha az időzítő fut tovább.
-
Mindig a legegyszerűbb megoldást keresd :)
#include <a_samp>
#include <zcmd>
#define COLOR_RED 0xFF0000FF
#define COLOR_GREEN 0x00FF00FF
new Kocsijavitas[MAX_PLAYERS];
CMD:fix(playerid)
{
if(Kocsijavitas[playerid] == 0) SendClientMessage(playerid, COLOR_GREEN, \"Automata javítás bekapcsolva!\"), Kocsijavitas[playerid] = 1;
else if(Kocsijavitas[playerid] == 1) SendClientMessage(playerid, COLOR_RED, \"Automata javítás kikapcsolva!\"), Kocsijavitas[playerid] = 0;
return 1;
}
public OnPlayerConnect(playerid)
{
Kocsijavitas[playerid] = 0;
return 1;
}
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
if(Kocsijavitas[playerid] == 1) RepairVehicle(vehicleid);
return 1;
}
-
Holnap kipróbálom!
Dupla hozzászólás automatikusan összefûzve. ( 2015. május 27. - 07:52:38 )
Köszönöm a tanácsokat de AnthonyGates-é bevált(kicsi átalakítással) de azért köszi mindenkinek a tanácsokat. A témát megoldottam.