GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: bazsina - 2015. Május 26. - 12:30:14

Cím: /fix parancs probléma!
Írta: bazsina - 2015. Május 26. - 12:30:14
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];
Cím: /fix parancs probléma!
Írta: Kovacs_Richard - 2015. Május 26. - 12:53:42
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
Cím: /fix parancs probléma!
Írta: bazsina - 2015. Május 26. - 15:35:24
Ezt hogy érted?
Letudod írni nekem a teljes scriptet?(Enyémről másolva!)
Cím: /fix parancs probléma!
Írta: AnthonyGates - 2015. Május 26. - 17:08:59
OnPlayerDisconnect:
 
KillTimer(Javitas);

 
Mivel hiába lépsz ki, ha az időzítő fut tovább.
Cím: /fix parancs probléma!
Írta: .random. - 2015. Május 26. - 18:01:01
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;
}
Cím: /fix parancs probléma!
Írta: bazsina - 2015. Május 26. - 21:42:09
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.