Viccelsz ? :dead:
if(strcmp(cmdtext, \"/catapult\", true) == 0)
{
new Float:X, Float:Y, Float:Z; // Lebegopontos változók ( Pozíció tárolására )
GetPlayerPos ( playerid, X, Y, Z ); // Pozíció légkérdezése
if ( !IsPlayerInAnyVehicle ( playerid ) ) return SetPlayerPos ( playerid, X, Y, Z+800 ); // Lekérdezzük hogy a játékos jármuben van-e vagy nincs, ha nincs akkor visszatérünk a játékos magasságának növelésével
{
GetVehiclePos ( GetPlayerVehicleID ( playerid ), X, Y, Z ); // Jármu pozíciójának lekérdezése
SetVehiclePos ( GetPlayerVehicleID ( playerid ), X, Y, Z+800 ); // Ha a játékos jármuben van, akkor a jármu magasságát növeljük
}
GivePlayerWeapon ( playerid, 46, 1 ); // Ejtoernyo
return 1; // Visszatérünk \'Igaz\' értékkel.
}
Az egyetlen jó dolog, amit csináltál a scriptedben az az, hogy változóban tároltad a GetPlayerVehicleID függvényt, aminek köszönhetoen memóriát takarítottál meg. Ám ez sem tökéletes, ugyanis nem intergert csinálunk, hanem tömböt (aka stringet) ezért a bokkok mennyiségét kell adni, valahogy így:
new vehid[MAX_VEHICLES] = GetPlayerVehicleID(playerid);
Másrészrol folosleges a scriptedet azzal olvashatatlanná tenni, hogy a vektorokat tároló változókat (X,Y,Z) minden egyes IF-nél külön deklarálod. Elég lenne 1x, a parancs elején, és az használható egészen a parancs végéig.
Harmadrészrol identítás befigyel, normálisan nézzen már ki a scripted, ha belerakod a tutba.
Viccelsz ? :dead:
if(strcmp(cmdtext, \"/catapult\", true) == 0)
{
new Float:X, Float:Y, Float:Z; // Lebegopontos változók ( Pozíció tárolására )
GetPlayerPos ( playerid, X, Y, Z ); // Pozíció légkérdezése
if ( !IsPlayerInAnyVehicle ( playerid ) ) return SetPlayerPos ( playerid, X, Y, Z+800 ); // Lekérdezzük hogy a játékos jármuben van-e vagy nincs, ha nincs akkor visszatérünk a játékos magasságának növelésével
{
GetVehiclePos ( GetPlayerVehicleID ( playerid ), X, Y, Z ); // Jármu pozíciójának lekérdezése
SetVehiclePos ( GetPlayerVehicleID ( playerid ), X, Y, Z+800 ); // Ha a játékos jármuben van, akkor a jármu magasságát növeljük
}
GivePlayerWeapon ( playerid, 46, 1 ); // Ejtoernyo
return 1; // Visszatérünk \'Igaz\' értékkel.
}
Ha jól néztem, akkor amikor a játékos gyalog van nem kap ejtoernyot. Mert azzal tér vissza, hogy feldobja. Ha nem akkor bocs.
Lehet te írtad de khm. :
#include <a_samp>
new catapulttimer;
forward Catapult(playerid);
new warning[MAX_PLAYERS] = 0;
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_LIGHTRED 0xED0321AA
public OnFilterScriptInit()
{
catapulttimer = SetTimer(\"Catapult\",1000,1);
return 1;
}
public OnFilterScriptExit()
{
KillTimer(catapulttimer);
return 1;
}
public Catapult(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid),health);
new ember[MAX_PLAYER_NAME];
new string[256];
GetPlayerName(playerid, ember, sizeof(ember));
if(health <= 249 && warning[playerid] == 0)
{
SendClientMessage(playerid,COLOR_YELLOW, \"Ugorj ki a kocsiból a /ugras paranccsal! !\");
format(string, sizeof(string), \"%s -nek ég a jármuve !\",ember);
SendClientMessageToAll(COLOR_YELLOW,string);
warning[playerid] = 1;
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/ugras\",true) == 0)
{
if(IsPlayerInAnyVehicle(playerid))
{
new Float:X;
new Float:Y;
new Float:Z;
GetPlayerPos(playerid,X,Y,Z);
SetPlayerPos(playerid,X,Y,Z+500);
GivePlayerWeapon(playerid, 46, 1);
SendClientMessage(playerid, COLOR_YELLOW, \"Katapultáltál !!!\");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, \"HIBA: Nem ülsz kocsiban !\");
return 1;
}
}
return 0;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
warning[playerid] = 0;
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
warning[playerid] = 0;
return 1;
}