Szerző Téma: Capture The Flag Minigame  (Megtekintve 2158 alkalommal)

Capture The Flag Minigame
« Dátum: 2014. Augusztus 21. - 21:59:35 »
+1
Sziasztok!  :wave:

Most publikálom az egyik munkámat, ami nem más mint egy CTF + TDM Minigame.


A feladat annyi, hogy meg kell szerezni a másik csapat zászlóját és el kell vinni a csapatod zászlójához.


A minigamet RCon Adminisztrátor tudja elindítani a
/area parancsal.

Játékosok a
/join parancsal tudnak csatlakozni.

Ha valaki megunja a játékot, akkor a
/exit parancsal tud kilépni.

Ha valaki megöl valakit az ellenfél csapatból, akkor kap 50 Scoret és 500$ -t.


Aki meghal attól pedig levon 50 Scoret.


A játék addig folytatódik, míg az egyik csapat 5x beviszi a zászlót.


A script tartalmaz TeamKill elleni védelmet.


Készítõ: .RäNÐoM.


Sorok száma: 479


Elkészítési idõ: kb. 6-7 óra


Tesztelve lett
Mûködik! (Egyedül teszteltem...)

Ha bármilyen bugot/elírást találtok, akkor jelezzétek felém  ;)




#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
#define COLOR_RED 0xFF0000FF
#define COLOR_GREEN 0x2BB33BFF
#define COLOR_BLUE 0x0009FFFF
#define ARMY 991
#define ANARHY 992
new AnarhysFlag,
ArmysFlag,
AnarhysFlagObject,
ArmysFlagObject,
ArmyCount,
AnarhyCount,
ArmyPlayer,
AnarhyPlayer,
AreaMinigameTimer;
new string[256],
name[MAX_PLAYER_NAME];
new AreaMiniGameSarted,
AreaMiniGameSart,
PlayerInArea[MAX_PLAYERS],
ArmyFlag[MAX_PLAYERS],
AnarhyFlag[MAX_PLAYERS],
gTeam[MAX_PLAYERS],
PlayerJoinArea[MAX_PLAYERS];
new Float:hp;
forward ObjectLoad(playerid);
forward AreaStart(playerid);
forward AreaMinigame(playerid);
public OnFilterScriptInit()
{
print(\"==========[Area51 by .RäNÐoM.]==========\");
print(\"==============[Filterscipt]=============\");
print(\"===============[Loaded...]==============\");
AnarhysFlag = 0;
ArmysFlag = 0;
ArmyCount = 0;
AnarhyCount = 0;
ArmyPlayer = 0;
AnarhyPlayer = 0;
AreaMiniGameSarted = 0;
AreaMiniGameSart = 0;
return 1;
}
public OnFilterScriptExit()
{
print(\"==========[Area51 by .RäNÐoM.]==========\");
print(\"==============[Filterscipt]=============\");
print(\"==============[unloaded...]=============\");
return 1;
}
main() {}
public OnPlayerDisconnect(playerid, reason)
{
if(PlayerInArea[playerid] == 1)
{
PlayerInArea[playerid] = 0;
ArmyFlag[playerid] = 0;
AnarhyFlag[playerid] = 0;
PlayerJoinArea[playerid] = 0;
if(gTeam[playerid] == ARMY) ArmyPlayer -= 1;
if(gTeam[playerid] == ANARHY) AnarhyPlayer -= 1;
if(AnarhyFlag[playerid] == 1)
{
DestroyObject(AnarhysFlagObject), AnarhysFlagObject = CreateObject(2993, 203.33521, 1860.76038, 13.13000,   0.00000, 0.00000, -26.40000), AnarhysFlag = 1;
SendClientMessageToAll(COLOR_RED,\"[Area51]: A zászló vivõ kilépett!! A zászló visszakerült a helyére!!\");
}
if(ArmyFlag[playerid] == 1)
{
DestroyObject(ArmysFlagObject), ArmysFlagObject = CreateObject(2914, 220.08881, 1822.83191, 7.51650,   0.00000, 0.00000, 64.56000), ArmysFlag = 1;
SendClientMessageToAll(COLOR_RED,\"[Area51]: A zászló vivõ kilépett!! A zászló visszakerült a helyére!!\");
} }
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(PlayerInArea[playerid] == 1)
{
GetPlayerName(killerid,name,sizeof(name));
GetPlayerName(playerid,name,sizeof(name));
if(killerid != INVALID_PLAYER_ID) {
format(string,sizeof(string),\"[Area51]: %s megölte %s -t! Csak így tovább!\",name,name);
SendClientMessageToAll(COLOR_RED,string);
SetPlayerScore(killerid, GetPlayerScore(killerid)+50);
GivePlayerMoney(killerid, 500);
SendClientMessage(killerid,COLOR_GREEN,\"[Area51]: Megöltél egy ellenséget! Ezért kapsz 50 Score-t és 500$-t\");
}
SendClientMessage(playerid,COLOR_RED,\"[Area51]: Meghaltál! Ezért levonunk tõled 50 Score-t!\");
SetPlayerScore(playerid, GetPlayerScore(playerid)-50);
SendDeathMessage(killerid, playerid, reason);
if(gTeam[playerid] == ARMY)
{
ResetPlayerWeapons(playerid);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPlayerPos(playerid, 214.6435, 1818.9225, 6.4141);
SetCameraBehindPlayer(playerid);
GivePlayerWeapon(playerid,3,1);
GivePlayerWeapon(playerid,24,200);
GivePlayerWeapon(playerid,25,250);
GivePlayerWeapon(playerid,31,350);
}
if(gTeam[playerid] == ANARHY)
{
ResetPlayerWeapons(playerid);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPlayerPos(playerid, 214.6435, 1818.9225, 6.4141);
SetCameraBehindPlayer(playerid);
GivePlayerWeapon(playerid,23,175);
GivePlayerWeapon(playerid,31,275);
GivePlayerWeapon(playerid,32,250);
GivePlayerWeapon(playerid,34,150);
}
if(AnarhyFlag[playerid] == 1)
{
DestroyObject(AnarhysFlagObject), AnarhysFlagObject = CreateObject(2993, 203.33521, 1860.76038, 13.13000,   0.00000, 0.00000, -26.40000), AnarhysFlag = 1;
SendClientMessageToAll(COLOR_RED,\"[Area51]: A zászló vivõt megölték!! A zászló visszakerült a helyére!!\");
AnarhyFlag[playerid] = 0;
}
if(ArmyFlag[playerid] == 1)
{
DestroyObject(ArmysFlagObject), ArmysFlagObject = CreateObject(2914, 220.08881, 1822.83191, 7.51650,   0.00000, 0.00000, 64.56000), ArmysFlag = 1;
SendClientMessageToAll(COLOR_RED,\"[Area51]: A zászló vivõt megölték!! A zászló visszakerült a helyére!!\");
ArmyFlag[playerid] = 0;
} }
return 1;
}
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
GetPlayerHealth(damagedid,hp);
if(gTeam[playerid] == gTeam[damagedid]) if(damagedid != INVALID_PLAYER_ID && IsPlayerConnected(damagedid)) SetPlayerHealth(damagedid, hp), GameTextForPlayer(playerid,\"~r~Ne ~w~Sebezd a Csapattársad!!\",2000,6);
return 1;
}
public AreaMinigame(playerid)
{
GetPlayerName(playerid,name,sizeof(name));
if(IsPlayerInRangeOfPoint(playerid, 3.0, 204.1118, 1860.3279, 13.1406)) //Anarhy zászlónál van
{
if(gTeam[playerid] == ARMY && AnarhysFlag == 1)
{
AnarhyFlag[playerid] = 1;
AttachObjectToPlayer(AnarhysFlagObject, playerid, 0.0, 0.0, 0.7, 0.0, 0.0, -90.0), AnarhysFlag = 0;
format(string,sizeof(string),\"[Area51]: %s elvette az Anarhy zászlót!!\",name);
SendClientMessageToAll(COLOR_RED,string);
}
if(gTeam[playerid] == ANARHY && ArmyFlag[playerid] == 1)
{
ArmyFlag[playerid] = 0;
DestroyObject(ArmysFlagObject), ArmysFlagObject = CreateObject(2914, 220.08881, 1822.83191, 7.51650,   0.00000, 0.00000, 64.56000), ArmysFlag = 1;
AnarhyCount += 1;
format(string,sizeof(string),\"[Area51]: %s bevitte az Army zászlót!! [%d/5]\",name,AnarhyCount);
SendClientMessageToAll(COLOR_RED,string);
} }
if(IsPlayerInRangeOfPoint(playerid, 3.0, 220.8428,1822.5156,7.5259)) // Army szászlónál van
{
if(gTeam[playerid] == ANARHY && ArmysFlag == 1)
{
ArmyFlag[playerid] = 1;
AttachObjectToPlayer(ArmysFlagObject, playerid, 0.0, 0.0, 0.7, 0.0, 0.0, -90.0), ArmysFlag = 0;
format(string,sizeof(string),\"[Area51]: %s elvette az Army zászlót!!\",name);
SendClientMessageToAll(COLOR_RED,string);
}
if(gTeam[playerid] == ARMY && AnarhyFlag[playerid] == 1)
{
AnarhyFlag[playerid] = 0;
DestroyObject(AnarhysFlagObject), AnarhysFlagObject = CreateObject(2993, 203.33521, 1860.76038, 13.13000,   0.00000, 0.00000, -26.40000), AnarhysFlag = 0;
ArmyCount += 1;
format(string,sizeof(string),\"[Area51]: %s bevitte az Anarhy zászlót!! [%d/5]\",name,ArmyCount);
SendClientMessageToAll(COLOR_RED,string);
} }
if(AnarhyCount == 5)
{
SendClientMessageToAll(COLOR_RED,\"[Area51]: Az Anarhy csapat nyerte a MiniGamet!! Minden tag kap 1000$ és 500 Score-t!\");
if(gTeam[playerid] == ANARHY)
{
SetPlayerScore(playerid,GetPlayerScore(playerid)+500);
GivePlayerMoney(playerid, 1000);
}
KillTimer(AreaMinigameTimer);
PlayerInArea[playerid] = 0;
ArmyFlag[playerid] = 0;
AnarhyFlag[playerid] = 0;
AreaMiniGameSarted = 0;
PlayerJoinArea[playerid] = 0;
AreaMiniGameSart = 0;
ArmyCount = 0;
AnarhyCount = 0;
ArmysFlag = 0;
AnarhysFlag = 0;
ArmyPlayer = 0;
AnarhyPlayer = 0;
ForceClassSelection(playerid);
TogglePlayerSpectating(playerid, true);
TogglePlayerSpectating(playerid, false);
ResetPlayerWeapons(playerid);
}
else if(ArmyCount == 5)
{
SendClientMessageToAll(COLOR_RED,\"[Area51]: Az Army csapat nyerte a MiniGamet!! Minden tag kap 1000$ és 500 Score-t!\");
if(gTeam[playerid] == ARMY)
{
SetPlayerScore(playerid,GetPlayerScore(playerid)+500);
GivePlayerMoney(playerid, 1000);
}
KillTimer(AreaMinigameTimer);
PlayerInArea[playerid] = 0;
ArmyFlag[playerid] = 0;
AnarhyFlag[playerid] = 0;
AreaMiniGameSarted = 0;
PlayerJoinArea[playerid] = 0;
AreaMiniGameSart = 0;
ArmyCount = 0;
AnarhyCount = 0;
ArmysFlag = 0;
AnarhysFlag = 0;
ArmyPlayer = 0;
AnarhyPlayer = 0;
ForceClassSelection(playerid);
TogglePlayerSpectating(playerid, true);
TogglePlayerSpectating(playerid, false);
ResetPlayerWeapons(playerid);
}
return 1;
}
public ObjectLoad(playerid)
{
print(\"Objectek betöltése folyamatban...\");
{
CreateObject(2929, 215.86011, 1874.84900, 13.91210,   0.00000, 0.00000, 0.00000);
CreateObject(2929, 211.82010, 1874.84900, 13.91210,   0.00000, 0.00000, 0.00000);
CreateObject(18749, 207.58450, 1857.71045, 13.92590,   0.00000, 0.00000, 180.00000);
AnarhysFlagObject = CreateObject(2993, 203.33521, 1860.76038, 13.13000,   0.00000, 0.00000, -26.40000), AnarhysFlag = 1;
CreateObject(3053, 203.34064, 1860.73218, 12.37922,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 203.34061, 1860.73218, 12.51920,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 203.34061, 1860.73218, 12.63920,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 203.34061, 1860.73218, 12.77920,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 203.34061, 1860.73218, 12.91920,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 220.06192, 1822.83545, 6.75064,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 220.06190, 1822.83545, 6.89060,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 220.06190, 1822.83545, 7.01060,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 220.06190, 1822.83545, 7.15060,   0.00000, 0.00000, 0.00000);
CreateObject(3053, 220.06190, 1822.83545, 7.29060,   0.00000, 0.00000, 0.00000);
ArmysFlagObject = CreateObject(2914, 220.08881, 1822.83191, 7.51650,   0.00000, 0.00000, 64.56000), ArmysFlag = 1;
CreateObject(19377, 267.62100, 1883.89990, 16.54000,   0.00000, 90.00000, 0.00000);
CreateObject(19377, 267.62100, 1883.89990, 15.51420,   0.00000, 90.00000, 0.00000);
CreateObject(19364, 235.28778, 1856.95325, 17.51380,   0.00000, 0.00000, -6.12000);
CreateObject(19364, 235.63290, 1860.06995, 17.51380,   0.00000, 0.00000, -6.12000);
CreateObject(1431, 239.46600, 1874.68579, 10.98050,   0.00000, 0.00000, 60.06000);
CreateObject(1431, 239.01520, 1876.07971, 10.98050,   0.00000, 0.00000, 87.42000);
CreateObject(1431, 239.90909, 1876.86279, 10.98050,   0.00000, 0.00000, 87.42000);
CreateObject(1431, 239.10271, 1878.26843, 10.98050,   0.00000, 0.00000, 87.42000);
CreateObject(1431, 240.07275, 1879.01367, 10.98050,   0.00000, 0.00000, 81.29998);
CreateObject(1431, 238.98389, 1870.17053, 10.98050,   0.00000, 0.00000, 87.42000);
CreateObject(1431, 239.64519, 1870.26099, 10.98050,   0.00000, 0.00000, 87.42000);
CreateObject(1431, 241.35361, 1866.42786, 10.98050,   0.00000, 0.00000, 1.68000);
CreateObject(1431, 241.27089, 1865.71130, 10.98050,   0.00000, 0.00000, 1.68000);
CreateObject(1431, 240.18687, 1863.18799, 10.98050,   0.00000, 0.00000, 1.68000);
CreateObject(1431, 242.42909, 1863.64246, 10.98050,   0.00000, 0.00000, 33.36000);
CreateObject(1431, 252.13957, 1878.94019, 10.99400,   0.00000, 0.00000, 0.00000);
CreateObject(1431, 248.32600, 1878.91272, 10.99410,   0.00000, 0.00000, 0.00000);
CreateObject(1431, 249.86552, 1878.95044, 10.99400,   0.00000, 0.00000, 0.00000);
CreateObject(1431, 256.91959, 1849.98364, 8.28140,   0.00000, 0.00000, 0.00000);
CreateObject(1431, 256.91959, 1850.00354, 8.84140,   0.00000, 0.00000, 0.00000);
CreateObject(1431, 256.75482, 1851.03162, 8.28140,   0.00000, 0.00000, 22.74000);
CreateObject(1431, 256.75479, 1851.03162, 8.84140,   0.00000, 0.00000, 22.74000);
CreateObject(1431, 258.22305, 1850.95935, 8.28140,   0.00000, 0.00000, 110.93999);
CreateObject(1431, 258.22311, 1850.95935, 8.84140,   0.00000, 0.00000, 110.94000);
CreateObject(1431, 254.73218, 1843.92566, 8.31902,   0.00000, 0.00000, -38.58000);
CreateObject(1431, 253.81480, 1843.75940, 8.31902,   0.00000, 0.00000, -38.58000);
CreateObject(1431, 239.72820, 1851.29541, 8.29650,   0.00000, 0.00000, -130.38000);
CreateObject(1431, 240.85120, 1852.76282, 8.29650,   0.00000, 0.00000, -125.52000);
CreateObject(1431, 239.72820, 1851.29541, 8.83900,   0.00000, 0.00000, -130.38000);
CreateObject(1431, 240.85120, 1852.76282, 8.83900,   0.00000, 0.00000, -125.52000);
CreateObject(1431, 239.74017, 1855.64038, 8.29647,   0.00000, 0.00000, -211.38004);
CreateObject(1431, 239.74020, 1855.64038, 8.83900,   0.00000, 0.00000, -211.38000);
CreateObject(1431, 246.65402, 1843.26514, 8.29650,   0.00000, 0.00000, -53.10001);
CreateObject(1431, 243.74193, 1843.33777, 8.29650,   0.00000, 0.00000, -53.10001);
CreateObject(1431, 244.12680, 1844.52234, 8.81650,   0.00000, 0.00000, -9.48000);
CreateObject(1431, 243.72189, 1843.33777, 8.81650,   0.00000, 0.00000, -53.10000);
CreateObject(1431, 244.11353, 1844.53723, 8.29650,   0.00000, 0.00000, -9.48000);
CreateObject(1431, 246.65401, 1843.26514, 8.81650,   0.00000, 0.00000, -53.10000);
CreateObject(1431, 263.03745, 1843.96436, 7.43906,   -10.14000, -1.26000, -117.78001);
CreateObject(1431, 263.13739, 1843.96436, 7.97910,   -10.14000, -1.26000, -117.78000);
CreateObject(1431, 271.25668, 1840.30798, 6.16242,   -10.14000, -1.26000, -165.59998);
CreateObject(1431, 271.23669, 1840.20801, 6.68240,   -10.14000, -1.26000, -165.60001);
CreateObject(1431, 270.33594, 1839.26819, 6.04871,   0.12000, 6.60000, -98.21996);
CreateObject(1431, 270.33591, 1839.26819, 6.56870,   0.12000, 6.60000, -98.22000);
CreateObject(1431, 256.88510, 1837.45886, 4.21521,   0.00000, 0.00000, -102.96001);
CreateObject(1431, 256.88510, 1837.47888, 4.75520,   0.00000, 0.00000, -102.96000);
CreateObject(3280, 263.71091, 1824.22046, 3.70310,   0.00000, 0.00000, 0.00000);
CreateObject(2927, 264.66040, 1817.68896, 5.48740,   0.00000, 0.00000, 90.00000);
CreateObject(2927, 264.68039, 1813.78894, 5.48740,   0.00000, 0.00000, 90.00000);
CreateObject(2927, 264.66040, 1817.68896, 9.08740,   0.00000, 0.00000, 90.00000);
CreateObject(2927, 264.68039, 1813.78894, 9.08740,   0.00000, 0.00000, 90.00000);
CreateObject(1431, 245.33870, 1804.75159, 6.93600,   0.00000, 0.00000, 64.74000);
CreateObject(1431, 245.33870, 1804.75159, 7.47600,   0.00000, 0.00000, 64.74000);
CreateObject(1431, 242.61908, 1798.71313, 6.93600,   0.00000, 0.00000, 38.46001);
CreateObject(1431, 242.61909, 1798.71313, 7.47600,   0.00000, 0.00000, 38.46000);
CreateObject(1431, 248.64256, 1797.97900, 6.93600,   0.00000, 0.00000, 122.46000);
CreateObject(1431, 245.63040, 1798.14063, 6.93600,   0.00000, 0.00000, -122.46000);
CreateObject(1431, 245.98628, 1799.57227, 6.93600,   0.00000, 0.00000, -147.30003);
CreateObject(1431, 245.63040, 1798.14063, 7.41600,   0.00000, 0.00000, -122.46000);
CreateObject(1431, 245.98627, 1799.57227, 7.41600,   0.00000, 0.00000, -147.30000);
CreateObject(1431, 248.64259, 1797.97900, 7.41600,   0.00000, 0.00000, 122.46000);
CreateObject(1431, 248.43649, 1799.25061, 7.41600,   0.00000, 0.00000, 139.92000);
CreateObject(1431, 248.49030, 1799.26770, 6.93600,   0.00000, 0.00000, 139.92001);
CreateObject(1431, 250.45238, 1804.64539, 6.93600,   0.00000, 0.00000, 117.54000);
CreateObject(1431, 250.45239, 1804.64539, 7.45600,   0.00000, 0.00000, 117.54000);
CreateObject(1431, 251.57083, 1803.29565, 6.93600,   0.00000, 0.00000, 138.18001);
CreateObject(1431, 236.02417, 1802.17310, 6.93600,   0.00000, 0.00000, 76.44001);
CreateObject(1431, 236.23647, 1804.53772, 6.93600,   0.00000, 0.00000, 92.64001);
CreateObject(1431, 236.25650, 1804.53772, 7.47600,   0.00000, 0.00000, 92.64000);
CreateObject(1431, 236.04420, 1802.17310, 7.47600,   0.00000, 0.00000, 76.44000);
CreateObject(1431, 235.83342, 1812.19885, 6.93600,   0.00000, 0.00000, 200.93987);
CreateObject(1431, 237.06369, 1818.50134, 6.93600,   0.00000, 0.00000, 200.93987);
CreateObject(1431, 237.06371, 1818.52124, 7.47600,   0.00000, 0.00000, 200.93990);
CreateObject(1431, 228.32460, 1824.58582, 6.92937,   0.00000, 0.00000, 39.06000);
CreateObject(1431, 228.07887, 1820.96753, 6.92940,   0.00000, 0.00000, -39.06000);
CreateObject(1431, 228.34460, 1824.58582, 7.46940,   0.00000, 0.00000, 39.06000);
CreateObject(1431, 228.07890, 1821.00745, 7.46940,   0.00000, 0.00000, -39.06000);
CreateObject(1431, 240.18690, 1863.18799, 11.48050,   0.00000, 0.00000, 1.68000);
CreateObject(1431, 242.42909, 1863.64246, 11.48050,   0.00000, 0.00000, 33.36000);
CreateObject(1431, 252.13960, 1878.94019, 11.48050,   0.00000, 0.00000, 0.00000);
CreateObject(1431, 249.86549, 1878.95044, 11.48050,   0.00000, 0.00000, 0.00000);
CreateObject(1431, 248.32600, 1878.91272, 11.48050,   0.00000, 0.00000, 0.00000);
CreateObject(1431, 225.20958, 1864.51221, 12.64563,   0.00000, 0.00000, -18.90000);
CreateObject(1431, 224.03387, 1864.12402, 12.64563,   0.00000, 0.00000, 49.32000);
CreateObject(1431, 225.20959, 1864.51221, 13.16560,   0.00000, 0.00000, -18.90000);
CreateObject(1431, 224.03391, 1864.12402, 13.14560,   0.00000, 0.00000, 49.32000);
CreateObject(1431, 217.36639, 1857.51892, 12.64563,   0.00000, 0.00000, 33.00000);
CreateObject(1431, 219.25650, 1858.14893, 12.64563,   0.00000, 0.00000, 1.08000);
CreateObject(1431, 221.24115, 1857.85364, 12.64563,   0.00000, 0.00000, -21.60000);
CreateObject(1431, 222.81639, 1856.89160, 12.64563,   0.00000, 0.00000, -39.71999);
CreateObject(1431, 222.81641, 1856.89160, 13.14560,   0.00000, 0.00000, -39.72000);
CreateObject(1431, 221.24110, 1857.85364, 13.14560,   0.00000, 0.00000, -21.60000);
CreateObject(1431, 217.36639, 1857.51892, 13.14560,   0.00000, 0.00000, 33.00000);
CreateObject(1431, 219.25650, 1858.14893, 13.14560,   0.00000, 0.00000, 1.08000);
CreateObject(1431, 205.98993, 1872.80615, 12.66106,   0.00000, 0.00000, -60.42001);
CreateObject(1431, 206.51834, 1871.00012, 12.66106,   0.00000, 0.00000, -90.54000);
CreateObject(1431, 206.54550, 1869.58337, 12.66110,   0.00000, 0.00000, -90.54000);
CreateObject(1431, 206.18396, 1867.67798, 12.66110,   0.00000, 0.00000, 60.42000);
CreateObject(1431, 206.18401, 1867.67798, 13.14110,   0.00000, 0.00000, 60.42000);
CreateObject(1431, 206.54550, 1869.58337, 13.14110,   0.00000, 0.00000, -90.54000);
CreateObject(1431, 206.51830, 1871.00012, 13.14110,   0.00000, 0.00000, -90.54000);
CreateObject(1431, 205.98990, 1872.80615, 13.14110,   0.00000, 0.00000, -60.42000);
}
print(\"Objectek betöltve!\");
return 1;
}
public AreaStart(playerid)
{
AreaMinigameTimer = SetTimerEx(\"AreaMinigame\", 1000, true, \"i\",playerid);
if(PlayerJoinArea[playerid] <= 1)
{
SendClientMessageToAll(COLOR_RED,\"Az Area51 MiniGame érdeklõdés hiányában elmarad...\");
PlayerInArea[playerid] = 0;
ArmyFlag[playerid] = 0;
AnarhyFlag[playerid] = 0;
AreaMiniGameSarted = 0;
PlayerJoinArea[playerid] = 0;
AreaMiniGameSart = 0;
ArmyCount = 0;
AnarhyCount = 0;
KillTimer(AreaMinigameTimer);
return 0;
}
else
{
ObjectLoad(playerid);
AreaMiniGameSart = 1;
PlayerInArea[playerid] = 1;
if(ArmyPlayer <= AnarhyPlayer)
{
gTeam[playerid] = ARMY;
ArmyPlayer += 1;
GameTextForPlayer(playerid,\"~w~San Andreas ~b~Army\",8000,3);
ResetPlayerWeapons(playerid);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPlayerSkin(playerid,287);
SetPlayerPos(playerid, 214.6435,1818.9225,6.4141);
SetPlayerColor(playerid, COLOR_BLUE);
SetCameraBehindPlayer(playerid);
GivePlayerWeapon(playerid,23,175);
GivePlayerWeapon(playerid,31,275);
GivePlayerWeapon(playerid,32,250);
GivePlayerWeapon(playerid,34,150);
}
if(AnarhyPlayer < ArmyPlayer)
{
gTeam[playerid] = ANARHY;
AnarhyPlayer += 1;
GameTextForPlayer(playerid,\"~w~San Andreas ~r~Anarhy\",8000,3);
ResetPlayerWeapons(playerid);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPlayerSkin(playerid,181);
SetPlayerPos(playerid, 212.8605, 1857.0239, 13.1406);
SetPlayerColor(playerid, COLOR_RED);
SetCameraBehindPlayer(playerid);
GivePlayerWeapon(playerid,23,175);
GivePlayerWeapon(playerid,31,275);
GivePlayerWeapon(playerid,32,250);
GivePlayerWeapon(playerid,34,150);
} }
return 1;
}
CMD:area(playerid)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,\"[Area51]: Csak {FFFFFF}rCon {FF0000}adminisztrátor használhatja ezt a parancsot!\");
if(AreaMiniGameSarted == 1) return SendClientMessage(playerid,COLOR_RED,\"[Area51]: Már elkezdõdött egy MiniGame!\");
SendClientMessageToAll(COLOR_RED,\"[Area51]: Elidult az Area51 MiniGame!! Jelentkezni 30 másodpercig lehet a {FFFFFF}(/join) {FF0000}parancsal!\");
SetTimerEx(\"AreaStart\", 30*1000,false,\"i\",playerid);
AreaMiniGameSarted = 1;
PlayerJoinArea[playerid] = 1;
return 1;
}
CMD:join(playerid)
{
if(AreaMiniGameSarted == 0) return SendClientMessage(playerid,COLOR_RED,\"[Area51]: Nincs elindítva MiniGame!\");
if(PlayerJoinArea[playerid] == 1) return SendClientMessage(playerid,COLOR_RED,\"[Area51]: Már benne vagy a MiniGame -ben!\");
if(AreaMiniGameSart == 1) return SendClientMessage(playerid,COLOR_RED,\"[Area51]: A jelentkezést lekésted...\");
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),\"[Area51]: %s csatlakozott az Area51 MiniGame-hez! ((Kilépéshez {FFFFFF}/exit{2BB33B}))\",name);
SendClientMessageToAll(COLOR_GREEN,string);
SetTimerEx(\"AreaStart\", 30*1000,false,\"i\",playerid);
PlayerJoinArea[playerid] = 1;
return 1;
}
CMD:exit(playerid)
{
if(AreaMiniGameSarted == 0) return SendClientMessage(playerid,COLOR_RED,\"[Area51]: Nincs elindítva MiniGame!\");
if(PlayerJoinArea[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,\"[Area51]: Nem is vagy MiniGame -ben!\");
format(string,sizeof(string),\"[Area51]: %s kilépett az Area51 MiniGame -bõl!\",name);
SendClientMessageToAll(COLOR_RED,string);
PlayerInArea[playerid] = 0;
ArmyFlag[playerid] = 0;
AnarhyFlag[playerid] = 0;
PlayerJoinArea[playerid] = 0;
if(gTeam[playerid] == ARMY) ArmyPlayer -= 1;
if(gTeam[playerid] == ANARHY) AnarhyPlayer -= 1;
if(AnarhyFlag[playerid] == 1)
{
DestroyObject(AnarhysFlagObject), AnarhysFlagObject = CreateObject(2993, 203.33521, 1860.76038, 13.13000,   0.00000, 0.00000, -26.40000), AnarhysFlag = 1;
SendClientMessageToAll(COLOR_RED,\"[Area51]: A zászló vivõ kilépett!! A zászló visszakerült a helyére!!\");
}
if(ArmyFlag[playerid] == 1)
{
DestroyObject(ArmysFlagObject), ArmysFlagObject = CreateObject(2914, 220.08881, 1822.83191, 7.51650,   0.00000, 0.00000, 64.56000), ArmysFlag = 1;
SendClientMessageToAll(COLOR_RED,\"[Area51]: A zászló vivõ kilépett!! A zászló visszakerült a helyére!!\");
}
ForceClassSelection(playerid);
TogglePlayerSpectating(playerid, true);
TogglePlayerSpectating(playerid, false);
ResetPlayerWeapons(playerid);
return 1;
}

 

Link: http://pastebin.com/vwf4Ej0V

Jó szórakozást! :)
« Utoljára szerkesztve: 2014. Augusztus 21. - 22:34:04 írta .RäNÐoM. »

Capture The Flag Minigame
« Válasz #1 Dátum: 2014. Augusztus 21. - 22:09:52 »
0
Mégis hogy lehet az, hogy egész számként meghatározott változóhoz hozzárendelsz logikai értéket?
Több helyen is látható ilyen hiba a módban.
 
if(PlayerInArea[playerid] == 1)
{
PlayerInArea[playerid] = false;
}

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Capture The Flag Minigame
« Válasz #2 Dátum: 2014. Augusztus 21. - 22:17:41 »
0
Ez már haladás! Gratula, viszont:
Látom eléggé pazarolsz, itt gondolok a változókra, és a lekérdezésekre stb..
Például:
 
public OnPlayerConnect(playerid)
{
PlayerInArea[playerid] = false;
ArmyFlag[playerid] = false;
AnarhyFlag[playerid] = false;
PlayerJoinArea[playerid] = false;
return 1;
}

 
Ez teljesen feleslegesnek tartom mivel a változó létrehozásánál alapból 0 az értéke a változóknak, maximum OnPlayerDisconnect-nél lehetne alkalmazni amit ügyesen meg is tettél.
Példa2:
 
if(killerid != INVALID_PLAYER_ID) format(string,sizeof(string),\"[Area51]: %s megölte %s -t! Csak így tovább!\",name,name);
SendClientMessageToAll(COLOR_RED,string);
SendDeathMessage(killerid, playerid, reason);
if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid)+50);
if(killerid != INVALID_PLAYER_ID) GivePlayerMoney(killerid, 500);
SetPlayerScore(playerid, GetPlayerScore(playerid)-50);
SendClientMessage(playerid,COLOR_RED,\"[Area51]: Meghaltál! Ezért levonunk tõled 50 Score-t!\");
if(killerid != INVALID_PLAYER_ID) SendClientMessage(killerid,COLOR_GREEN,\"[Area51]: Megöltél egy ellenséget! Ezért kapsz 50 Score-t és 500$-t\");

 
itt is sok a felesleges lekérdezés, inkább így old meg:
 
   if(killerid != INVALID_PLAYER_ID) {
format(string,sizeof(string),\"[Area51]: %s megölte %s -t! Csak így tovább!\",name,name);
SendClientMessageToAll(COLOR_RED,string);
SetPlayerScore(killerid, GetPlayerScore(killerid)+50);
GivePlayerMoney(killerid, 500);
SendClientMessage(killerid,COLOR_GREEN,\"[Area51]: Megöltél egy ellenséget! Ezért kapsz 50 Score-t és 500$-t\");
}
SendDeathMessage(killerid, playerid, reason);
SetPlayerScore(playerid, GetPlayerScore(playerid)-50);
SendClientMessage(playerid,COLOR_RED,\"[Area51]: Meghaltál! Ezért levonunk tõled 50 Score-t!\");

 
Máris szebb, nem pazarlósabb, és átláthatóbb lett a kód :)
Példa3:
Szerintem az OnPlayerGiveDamage eljárásnál a változót tedd a script elejére, mert túl sokszór hívódna meg feleslegesen.
Példa4:
Hát igen az OnPlayerUpdate..
Sokan akik kezdõk azt hiszik az a tökéletes megoldás a jó játékélményre, pedig nagy lagot tud ám okozni ha rosszul vannak megírva alatta a kódrészlegek.
Ajánlom hogy hozz létre egy 1 másodperces timert amelyt csak a minigame közbe mûködtetsz.
Példa5:
A MAX_PLAYERS változók helyett ajánlom a PVar-t.
http://wiki.sa-mp.com/wiki/SetPVarInt
http://wiki.sa-mp.com/wiki/GetPVarInt
A sima változókat is logikával még lehetne ritkítani hogy takarékosabb legyen a script.


Remélem segítettem

Capture The Flag Minigame
« Válasz #3 Dátum: 2014. Augusztus 21. - 22:36:39 »
0
Köszönöm a tanácsokat  :)

Tudom, hogy még van mit tanulnom a PAWN nyelvrõl és így legalább most is tanulok 1-2 dolgot  :D


A Scriptet az ötleteitek alapján frissítettem ;)


A PVar -t meg még átgondolom...  ::|

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Capture The Flag Minigame
« Válasz #4 Dátum: 2014. Augusztus 21. - 23:24:38 »
0
Tetszik a kis ötlet. De én is a SetPVarInt illetve GetPVarInt függvényeket ajánlom ilyenkor. :) Szép munka!  ;)

Nem elérhető Wiliam Levy

  • 594
  • Wiliam Levy
    • Profil megtekintése
Capture The Flag Minigame
« Válasz #5 Dátum: 2014. Augusztus 22. - 14:47:07 »
0
Jó lett, jár a keksz ! :D

Capture The Flag Minigame
« Válasz #6 Dátum: 2014. Augusztus 22. - 15:47:23 »
0
Köszi srácok :) A PVar tanulásának nekilátok ..  ^-^

Köszi a kekszet :$ :D

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Capture The Flag Minigame
« Válasz #7 Dátum: 2014. Augusztus 22. - 16:16:36 »
0
Szóval..
Egy példát írok hogy hogy változtass illetve hogyan kérdezz le PVar-t.
Van mondjuk olyan játékos változód hogy:
 
new penz[MAX_PLAYERS];

 
és ugyebár így növeled a pénz értékét hogy:
 
penz[playerid] += 5000;

 
és így kéred le hogy a játékosnak jelenleg mennyi pénze van a változó szerint:
 
penz[playerid]

 
Nos nézzük ezeket meg PVar alakban..
Itt nem kell létrehoznod változót szóval azt felejtsd el.
Érték megváltoztatása az így néz ki:
 
penz[playerid] += 5000;

 
helyett:
 
SetPVarInt(playerid, \"penz\", GetPVarInt(playerid, \"penz\") + 5000);

 
A játékos pénzének PVar szerinti értékének lekérdezése:
 
penz[playerid]

 
helyett:
 
GetPVarInt(playerid, \"penz\")

 
Aztán ezek csak egész számokat tárol/változtat.


Kapcsolódó függvények:
 

                                            - SetPVarString


                                            - GetPVarString


                                            - SetPVarFloat


                                            - GetPVarFloat


                                            - DeletePVar
 
E: Bocs, belegabalyodtam
« Utoljára szerkesztve: 2014. Augusztus 22. - 16:28:14 írta Flash »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Capture The Flag Minigame
« Válasz #8 Dátum: 2014. Augusztus 22. - 16:23:31 »
0
Kedves Témanyitó, csak így tovább. ;)


Idézetet írta: Flash date=1408716996\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"50251\" data-ipsquote-contentclass=\"forums_Topic
Érték megváltoztatása az így néz ki:
penz[playerid] += 5000;

 
helyett:
 
SetPVarInt(playerid, \"penz\", 5000);

 

Pont nem :D Ha penz[playerid] értéke 1000 és ezt csináljuk:
 
penz[playerid] += 5000;

 
lesz belõle 6000. Ha a PVaros \"penz\" is 1000 és ezt csináljuk:
 
SetPVarInt(playerid, \"penz\", 5000);

 
lesz belõle 5000. 6000 helyett. Szóval akkor ezt kell tennünk:
 
SetPVarInt(playerid, \"penz\", GetPVarInt(playerid, \"penz\") + 5000);

 
És ez a hosszúság és bonyolultság az, ami miatt sokan a változókat választják. Nem véletlenül használják a változókat minden más nyelvben is. Ez talán csak egy kis könnyítés a SAMP Team részérõl a kezdõk részére. Arról nem is beszélve, hogy ez egy nagyon alap operáció. Bonyolultabbaknál már nagyon nehéz dolgunk lesz. Ráadásul a PVarok külön függvények, míg a változók csak változók. Írásban is sokkal hosszabbak. Szóval nem éri meg azokat használni, hacsak nem szeretnéd ugyanazt a PVar-t egy GM-ben és több FS-ben is lehívni, mert arra képes és ez jó.

Nem elérhető Sramm

  • 596
    • Profil megtekintése
Capture The Flag Minigame
« Válasz #9 Dátum: 2014. Augusztus 22. - 16:23:45 »
0
Idézetet írta: Flash date=1408716996\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"50251\" data-ipsquote-contentclass=\"forums_Topic
Érték megváltoztatása az így néz ki:
 
penz[playerid] += 5000;

 
helyett:
 
SetPVarInt(playerid, \"penz\", 5000);

 

helyett
 
SetPVarInt(playerid, \"penz\", GetPVarInt(playerid, \"penz\")+5000);

 
(megelõztek..  :smirksweat:)

Capture The Flag Minigame
« Válasz #10 Dátum: 2014. Augusztus 22. - 16:31:51 »
0
Köszi srácok a segítséget  :winkkiss: Úgy vagyok most vele, hogy megtanulom a PVar -t is és azzal dolgozok amelyikkel éppen kedvem van .. :D

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Capture The Flag Minigame
« Válasz #11 Dátum: 2014. Augusztus 22. - 17:06:46 »
0
Szép munka!
Nekem nagyon tetszik ez igy :D
Csinálhatnál egy olyat mint a Counter Strike-ban van a bomba lerakás :D
Az nagyon tetszene :D
Gratulálok!

Capture The Flag Minigame
« Válasz #12 Dátum: 2014. Augusztus 22. - 20:10:36 »
0
Meg lehet oldani ..  :shifty:  :D

Köszi  ;)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal