Üzenetek megjelenítése

Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.


Üzenetek - Kurtis

Oldalak: 1 2 [3] 4
31
Pluginok és Programok / SA-MP Server Configuration Generator
« Dátum: 2012. május 18. - 22:25:13 »
Tudom, hogy sok ilyen létezik már, láttam már az angol fórumon is, de ha jól tudom ilyen intelligens változata még nincsen, meg amúgy is hasznos volt számomra a megírása, mivel pár új dolgot tanultam programozásban. Majdnem teljesen hasonlít a többire, de sokkal felhasználó barátabb, 2 nyelvû, leggyakoribb beállítási lehetõségeket tartalmazza. A legjobb része, hogy ha jó helyre van telepítve, akkor a gamemode, filterscript és a plugin esetében a program leellenõrzi a lehetséges betölthetõ fájlokat. Ami még extra, hogy képes visszaolvasni egy kézzel írt, vagy általa generált server.cfg-t. Remélem, hogy azért valakinek hasznára lesz a program.
Generáló hiba javítva!
Betöltés/Mentés gomb hiba javítva (mûködésképtelen míg a háttérdolgozó fut)
Repeat (mód ismétlésszám) hozzáadva a programhoz
Timestamp paraméter hozzáadva
Letöltés ITT

32
Modok / [OTHER]Ladder Mod
« Dátum: 2012. május 18. - 22:08:57 »
Nevébõl szerintem egyértelmûen kitalálható, hogy a mód létrákkal foglalkozik. Mondjuk úgy hogy unatkoztam, és elhatároztam magam ennek a módnak megírására. A legjobb benne szerintem az, hogy az alap létrákon kívül újakat is létre lehet hozni, ebben segítségünkre lesz a programban található szöveg, ami leírja, hogy készítéskor hanyadik hang mit csinál, sajnos kézzel csak a koordinátákat lehet módosítani, a forgástengelyt nem tudtam fokba átkonvertálni, így nem lehet átírni. Elvileg minden létrát használhatóvá tettem, de maradhatott ki. SF reptérnél levõ 7-8 létrát használhatóvá tettem.
Ami a módból hiányzik az az animáció, sajnos memóriacímekkel nem sokra megyek, valószínû CLEO vagy hasonló api hook-ot kellene kezelnem.
Alapgombok:
Használat mód
F gomb - létra használata (újbóli megnyomásával leugrasz róla, nem ajánlott)
W, S - létrán fel-le mászkálás
Szerkesztõ mód
L gomb - létra készítés megkezdése
F gomb - adott lépésnél a következõ lépésre ugrik
W, S - létra magasság készítésénél használható
W,S,A,D - létra kilépõ pozíció készítésénél használható
Fontos: sose akarj létrát kreálni vízben, ha használja valaki úgy a létrát, akkor meg fog halni, valószínû a Z gyorsulás memóriacím tehet róla.
Videó a módról:
NS-zfk_Ylag
Készítõ: Kurtis
Letötlés ITT

33
SA-MP: Szerverfejlesztés / Call of Duty 2 Maps Mod
« Dátum: 2012. május 18. - 21:02:55 »
Mint a címbõl is kitalálható, a COD2-nek a többjátékos pályáit tartalmazza, viszont nem az eredeti San Andreas objectjeibõl lett létrehozva, hanem egyedi modellekkel lett ez a mód megvalósítva, a mód jelenleg béta, de játékra alkalmas, 3 map-ot tartalmaz, azok közül az mp_toujane map optimizált, a másik kettõ még munkára vár (DXT3-as tömörítésû minden textúra, ez nagyon levesz egyes gépek teljesítményébõl és elõidézi az úgynevezett lag spike-t). A módot próbáltam valamennyire COD2 szerûre megírni, valamennyire a fegyverválasztás hasonlít a COD2-re. A maradék két pályát be lehet tölteni, aki akarja, de nem optimizáltam még játékra, így csak saját felelõsségetekre használjátok játékra.
A határok csak a toujane-ra lettek még kidolgozva, ez annyit jelent, hogy a másik két pályáról ki lehet ugrani vagy sétálni.
Poligónok száma pályánként átlagosan: 60-100 ezer (teljesítmény végett fontos lehet)
Pályák konvertálási ideje kb. 10 perc (optimizálatlanul)
Mód sorainak száma: 633
Problémás lehet a mód üzemeltetése az egyedi objectek miatt, e miatt van a letöltésben 2 db mappa (Client, Server)
Client: csak az egyedi objecteket tartalmazza, mert nélkülük vízbe esel
Server: a módot tartalmazza, ha kliens szerepét is betölti egyértelmûen szükség lesz az egyedi objectekre is
További útmutatás a telepítéshez a letöltött fájl readme.txt-jében.
Update:
Mind a 3 pálya használható mostantól, minden pálya rendelkezik határral és optimizálva vannak a textúráik, carentan még kisebb \"csúnyaságokkal\" rendelkezik. A mód frissítve lett, egy súlyos hiba javítva benne, F4-es újraéledésnél a fegyvermenü nem akarta újraspawnolni a játékost.
Újdonság még: Pályaszavazás, ha sikeres, nem indul újra a mód, hanem gyorsan lecseréli a mapot, lenullázza a pontokat és újraspawnoltat mindenkit.
Jelenlegi mapok (5):
mp_toujane
mp_carentan
mp_dawnville
mp_burgundy
mp_railyard
Parancsok:
/help - parancsok listája
/kill - öngyilkosság (sose tudni mikor jöhet jól)
/req - új fegyver kérése (halál után megkapod)
/votemap - elõjön egy pályaszavazó dialógus
/yes | /no - szavazás a pályára igennel/nemmel
Videó a módról:
jsZSZ-2PLDk
Régebbi videó:
aFHMFFYf-JU
Aki tudja frissítse erre a kódra a módot (5 mapos, jelenlegi változat)
 
#include <a_samp>
main()
{
print(
\"======================================\\n\"\\
\"    COD2 Maps Mod By Kurtis (2012)\\n\"\\
\"======================================\"
);
}
#define WEAPON_DIALOG 0
#define MAP_DIALOG 1
//If detail object id changes
#define COD2_BUSH 19830
new pvotey[MAX_PLAYERS];
new pvoten[MAX_PLAYERS];
new vip = 0;
new tmpmapname[32];
new mapname[32];
new playergun[MAX_PLAYERS] = -1;
new map_list[] = \"1\\tmp_toujane\\n2\\tmp_carentan\\n3\\tmp_dawnville\\n4\\tmp_burgundy\\n5\\tmp_railyard\";
new wd_list[] = \"1\\tAK47\\n2\\tM4\\n3\\tShotgun\\n4\\tS.P.A.S. 12\\n5\\tMP5\\n6\\tRifle\\n7\\tSniper\";
new maplist[5][32] = {
\"mp_toujane\",
\"mp_carentan\",
\"mp_dawnville\",
\"mp_burgundy\",
\"mp_railyard\"
};
new Float:RndToujane[13][4] = {
{464.0382,-2514.1758,7.3833,2.7548},
{439.1965,-2515.0486,12.7779,312.2425},
{421.1057,-2491.7861,8.7073,350.9930},
{405.3162,-2474.6873,9.1468,23.2654},
{424.4315,-2441.9197,9.6922,203.9326},
{456.3579,-2434.1055,9.7132,178.0092},
{486.4589,-2461.9839,7.2301,210.9353},
{474.0056,-2476.6055,7.6380,156.3472},
{441.0925,-2460.2100,9.5645,204.9119},
{446.9927,-2486.0085,12.2098,289.4292},
{477.6961,-2492.7449,12.0869,0.0970},
{469.3441,-2450.9187,13.4558,313.2219},
{463.7364,-2486.0076,7.2971,258.9754}
};
new Float:RndCarentan[17][4] = {
{331.3725,-2463.6299,9.6208,269.5319},
{370.8719,-2437.4585,9.6920,279.4752},
{372.4786,-2461.2476,9.8293,157.6709},
{372.4634,-2477.4089,9.4668,301.4062},
{394.3777,-2471.4890,13.3087,120.2978},
{399.5544,-2483.5867,9.3057,148.7930},
{449.2260,-2491.3523,8.9236,16.4213},
{421.5973,-2463.6536,8.6084,23.1685},
{411.5158,-2471.4270,9.6290,2.9270},
{411.6346,-2469.2800,13.4899,348.0982},
{412.6811,-2441.7800,12.8984,135.4707},
{412.5037,-2431.6458,12.8311,203.9217},
{411.1250,-2440.7581,9.0221,290.5697},
{406.6093,-2426.4636,8.6785,156.4225},
{409.4190,-2447.5457,9.0587,96.0530},
{376.9003,-2434.2307,9.3468,251.2381},
{362.4734,-2474.5691,9.2456,279.5611}
};
new Float:RndDawnville[15][4] = {
{480.9118,-2442.5410,14.0089,80.2558},
{456.9687,-2429.9517,15.0307,178.2674},
{438.4753,-2459.8762,14.6268,321.0234},
{443.9326,-2481.3066,12.5548,338.3379},
{441.4456,-2502.3682,12.2123,92.7548},
{414.7196,-2489.0701,13.9493,160.6946},
{397.0762,-2502.5093,12.5085,265.5664},
{415.2849,-2522.6917,12.3358,0.1829},
{383.6168,-2525.8508,11.6088,48.4785},
{377.4300,-2505.8809,11.4397,42.4416},
{356.1486,-2495.6890,11.4399,306.1920},
{371.3441,-2472.4878,12.8897,252.3142},
{383.6357,-2457.2507,15.6290,274.3312},
{402.0826,-2432.3560,14.6805,268.2513},
{414.9482,-2466.1973,14.3644,8.1944}
};
new Float:RndBurgundy[12][4] = {
{370.9223,-2471.6335,12.2395,331.5641},
{392.0306,-2489.3645,13.1905,278.4099},
{400.0284,-2473.9829,12.6297,207.3871},
{420.7856,-2483.7747,12.3016,6.8334},
{415.0567,-2441.2905,12.1992,85.5827},
{397.3856,-2448.7375,12.2476,178.2675},
{426.1143,-2422.3540,12.4032,278.7219},
{419.2222,-2439.0515,12.4075,179.6880},
{429.1496,-2446.6245,12.4770,175.7818},
{451.0567,-2446.2837,12.1678,89.7580},
{461.4712,-2462.0259,12.1316,187.5705},
{434.4026,-2488.3638,12.2063,276.4622}
};
new Float:RndRailyard[14][4] = {
{347.0537,-2496.8896,8.2547,341.8892},
{339.0773,-2451.0918,10.4344,270.7693},
{326.5202,-2437.4736,9.7799,267.9284},
{342.2571,-2421.9387,8.5707,269.5051},
{375.3299,-2406.7124,8.3437,210.5560},
{393.5036,-2418.7754,8.2469,137.2464},
{405.0043,-2429.8384,8.2469,340.6839},
{428.0715,-2415.8176,8.2469,162.8146},
{454.4234,-2419.8809,6.4522,181.2806},
{449.6583,-2478.6968,8.2605,124.1071},
{436.1698,-2506.0925,8.2547,111.4791},
{400.0956,-2472.7327,11.3140,168.0983},
{435.4421,-2458.9587,8.2469,332.2312},
{392.5327,-2447.7178,9.1454,116.2086}
};
public OnGameModeInit()
{
SetGameModeText(\"COD2 Mod\");
ShowPlayerMarkers(0);
ShowNameTags(0);
LoadMap(\"mp_toujane\");
AllowInteriorWeapons(1);
UsePlayerPedAnims();
AddPlayerClass(287,419.3375,-2478.2483,15.8563,0.0,0,0,0,0,0,0);
return 1;
}
//Maps
stock LoadMap(name[32])
{
new tmp[48];
mapname = name;
format(tmp,48,\"mapname %s\",name);
SendRconCommand(tmp);
//Clear Objects
for(new i = 0; i < MAX_OBJECTS; i++)
{
if(!IsValidObject(i)) continue;
DestroyObject(i);
}
if(!strcmp(name,\"mp_toujane\"))
{
CreateObject(19808,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19809,419.3375,-2478.2483,12.8563,0,0,0,300.0);
//Bounds
CreateObject(19810,419.3375,-2478.2483,12.8563,0,0,0,300.0);
}
else if(!strcmp(name,\"mp_carentan\"))
{
CreateObject(19811,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19812,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19813,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19814,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19815,419.3375,-2478.2483,12.8563,0,0,0,300.0);
//Bounds
CreateObject(19816,419.3375,-2478.2483,12.8563,0,0,0,300.0);
//Details
CreateObject(COD2_BUSH, 329.84, -2479.87, 8.06,   0.00, 0.00, 158.07);
CreateObject(COD2_BUSH, 315.79, -2465.83, 6.99,   0.00, 12.00, 116.89);
CreateObject(COD2_BUSH, 324.27, -2475.60, 8.06,   0.00, 0.00, 133.12);
CreateObject(COD2_BUSH, 309.11, -2433.19, 6.78,   0.00, 0.00, 86.52);
CreateObject(COD2_BUSH, 319.82, -2470.76, 8.16,   0.00, 0.00, 133.12);
CreateObject(COD2_BUSH, 358.85, -2433.95, 9.82,   0.00, 0.00, 11.59);
CreateObject(COD2_BUSH, 309.81, -2453.85, 6.78,   0.00, 0.00, 103.79);
CreateObject(COD2_BUSH, 308.91, -2447.37, 6.78,   0.00, 0.00, 95.80);
CreateObject(COD2_BUSH, 308.69, -2440.15, 6.78,   0.00, 0.00, 86.52);
CreateObject(COD2_BUSH, 312.80, -2460.10, 6.78,   0.00, 0.00, 124.22);
CreateObject(COD2_BUSH, 327.99, -2450.30, 8.43,   0.00, 0.00, 79.29);
CreateObject(COD2_BUSH, 331.59, -2443.60, 8.23,   0.00, 0.00, 43.57);
CreateObject(COD2_BUSH, 336.33, -2440.66, 7.49,   0.00, 0.00, 29.06);
CreateObject(COD2_BUSH, 322.83, -2450.71, 7.41,   0.00, -8.00, 148.84);
CreateObject(COD2_BUSH, 361.71, -2431.78, 10.77,   0.00, 0.00, 14.36);
CreateObject(COD2_BUSH, 342.64, -2437.88, 7.50,   0.00, 0.00, 20.12);
CreateObject(COD2_BUSH, 345.57, -2436.17, 8.77,   0.00, 0.00, 23.40);
CreateObject(COD2_BUSH, 338.99, -2438.27, 8.77,   0.00, 0.00, 28.15);
CreateObject(COD2_BUSH, 350.81, -2435.57, 8.77,   0.00, 0.00, 11.59);
CreateObject(COD2_BUSH, 349.61, -2434.00, 9.87,   0.00, 0.00, 11.59);
CreateObject(COD2_BUSH, 356.34, -2432.78, 9.87,   0.00, 0.00, 14.36);
CreateObject(COD2_BUSH, 333.49, -2440.69, 8.77,   0.00, 0.00, 28.15);
CreateObject(COD2_BUSH, 328.07, -2445.29, 8.97,   0.00, 0.00, 68.98);
CreateObject(COD2_BUSH, 326.74, -2449.01, 8.97,   0.00, 0.00, 78.00);
CreateObject(COD2_BUSH, 323.68, -2452.92, 8.07,   0.00, -8.00, 332.00);
CreateObject(COD2_BUSH, 320.86, -2450.94, 7.41,   0.00, -8.00, 332.00);
}
else if(!strcmp(name,\"mp_dawnville\"))
{
CreateObject(19817,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19818,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19819,419.3375,-2478.2483,12.8563,0,0,0,300.0);
//Bounds
CreateObject(19820,419.3375,-2478.2483,12.8563,0,0,0,300.0);
}
else if(!strcmp(name,\"mp_burgundy\"))
{
CreateObject(19821,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19822,419.3375,-2478.2483,12.8563,0,0,0,300.0);
//Bounds
CreateObject(19823,419.3375,-2478.2483,12.8563,0,0,0,300.0);
//Details
CreateObject(COD2_BUSH, 361.36, -2509.06, 12.58,   0.00, 0.00, 268.94);
CreateObject(COD2_BUSH, 406.88, -2502.72, 14.04,   0.00, 0.00, 96.27);
CreateObject(COD2_BUSH, 362.46, -2488.55, 12.58,   0.00, 0.00, 255.16);
CreateObject(COD2_BUSH, 361.68, -2495.57, 12.58,   0.00, 0.00, 266.25);
CreateObject(COD2_BUSH, 361.35, -2501.78, 12.58,   0.00, 0.00, 266.25);
CreateObject(COD2_BUSH, 479.91, -2457.97, 12.83,   0.00, 0.00, 47.92);
CreateObject(COD2_BUSH, 347.29, -2511.23, 12.83,   0.00, 0.00, 98.34);
CreateObject(COD2_BUSH, 347.16, -2504.38, 12.83,   0.00, 0.00, 92.17);
CreateObject(COD2_BUSH, 347.14, -2497.87, 12.83,   0.00, 0.00, 90.35);
CreateObject(COD2_BUSH, 347.57, -2491.12, 12.83,   0.00, 0.00, 82.66);
CreateObject(COD2_BUSH, 349.09, -2484.26, 12.83,   0.00, 0.00, 73.53);
CreateObject(COD2_BUSH, 351.97, -2477.78, 12.83,   0.00, 0.00, 63.36);
CreateObject(COD2_BUSH, 355.69, -2472.14, 12.83,   0.00, 0.00, 54.65);
CreateObject(COD2_BUSH, 360.55, -2467.43, 12.83,   0.00, 0.00, 43.22);
CreateObject(COD2_BUSH, 365.15, -2462.34, 12.83,   0.00, 0.00, 47.84);
CreateObject(COD2_BUSH, 370.45, -2457.06, 12.83,   0.00, 0.00, 47.84);
CreateObject(COD2_BUSH, 375.95, -2452.50, 12.83,   0.00, 0.00, 31.86);
CreateObject(COD2_BUSH, 383.68, -2444.71, 11.91,   0.00, 0.00, 84.47);
CreateObject(COD2_BUSH, 385.57, -2445.74, 12.83,   0.00, 0.00, 80.63);
CreateObject(COD2_BUSH, 386.07, -2439.18, 12.83,   0.00, 0.00, 89.16);
CreateObject(COD2_BUSH, 386.30, -2432.11, 12.83,   0.00, 0.00, 89.16);
CreateObject(COD2_BUSH, 387.89, -2425.27, 12.83,   0.00, 0.00, 70.09);
CreateObject(COD2_BUSH, 391.11, -2419.46, 12.83,   0.00, 0.00, 57.20);
CreateObject(COD2_BUSH, 395.87, -2415.43, 12.83,   0.00, 0.00, 30.26);
CreateObject(COD2_BUSH, 402.40, -2413.29, 12.83,   0.00, 0.00, 12.09);
CreateObject(COD2_BUSH, 409.05, -2413.11, 12.83,   0.00, 0.00, 1.63);
CreateObject(COD2_BUSH, 416.37, -2412.86, 12.83,   0.00, 0.00, 1.63);
CreateObject(COD2_BUSH, 423.25, -2412.72, 12.83,   0.00, 0.00, 1.63);
CreateObject(COD2_BUSH, 430.06, -2412.58, 12.83,   0.00, 0.00, 1.63);
CreateObject(COD2_BUSH, 436.46, -2413.32, 12.83,   0.00, 0.00, 353.97);
CreateObject(COD2_BUSH, 441.45, -2414.97, 12.83,   0.00, 0.00, 321.57);
CreateObject(COD2_BUSH, 443.65, -2418.94, 12.83,   0.00, 0.00, 290.49);
CreateObject(COD2_BUSH, 449.07, -2423.63, 12.83,   0.00, 0.00, 352.52);
CreateObject(COD2_BUSH, 455.14, -2424.86, 12.83,   0.00, 0.00, 352.52);
CreateObject(COD2_BUSH, 461.39, -2427.21, 12.83,   0.00, 0.00, 334.16);
CreateObject(COD2_BUSH, 465.71, -2431.53, 12.83,   0.00, 0.00, 297.94);
CreateObject(COD2_BUSH, 467.97, -2438.12, 12.83,   0.00, 0.00, 278.94);
CreateObject(COD2_BUSH, 468.52, -2444.80, 12.83,   0.00, 0.00, 271.13);
CreateObject(COD2_BUSH, 468.81, -2451.64, 12.83,   0.00, 0.00, 271.13);
CreateObject(COD2_BUSH, 469.52, -2458.64, 12.83,   0.00, 0.00, 279.30);
CreateObject(COD2_BUSH, 406.81, -2508.12, 12.42,   0.00, 0.00, 88.23);
CreateObject(COD2_BUSH, 470.76, -2457.13, 11.64,   0.00, 0.00, 271.07);
CreateObject(COD2_BUSH, 496.86, -2435.23, 12.83,   0.00, 0.00, 270.62);
CreateObject(COD2_BUSH, 496.78, -2441.20, 12.83,   0.00, 0.00, 270.62);
CreateObject(COD2_BUSH, 496.57, -2447.76, 12.83,   0.00, 0.00, 268.03);
CreateObject(COD2_BUSH, 496.02, -2454.67, 12.83,   0.00, 0.00, 259.93);
CreateObject(COD2_BUSH, 494.07, -2461.55, 12.83,   0.00, 0.00, 249.63);
CreateObject(COD2_BUSH, 491.31, -2467.21, 12.83,   0.00, 0.00, 243.51);
CreateObject(COD2_BUSH, 487.24, -2472.46, 12.83,   0.00, 0.00, 219.23);
CreateObject(COD2_BUSH, 481.33, -2476.10, 12.83,   0.00, 0.00, 209.16);
CreateObject(COD2_BUSH, 475.04, -2478.21, 12.83,   0.00, 0.00, 189.87);
CreateObject(COD2_BUSH, 467.97, -2478.92, 12.83,   0.00, 0.00, 184.51);
CreateObject(COD2_BUSH, 423.26, -2532.26, 12.83,   0.00, 0.00, 175.79);
CreateObject(COD2_BUSH, 416.50, -2530.51, 12.83,   0.00, 0.00, 157.36);
CreateObject(COD2_BUSH, 412.00, -2526.71, 12.83,   0.00, 0.00, 129.80);
CreateObject(COD2_BUSH, 408.91, -2521.02, 12.83,   0.00, 0.00, 109.90);
CreateObject(COD2_BUSH, 407.57, -2513.98, 12.83,   0.00, 0.00, 93.12);
CreateObject(COD2_BUSH, 381.54, -2450.42, 12.83,   0.00, 0.00, 14.72);
CreateObject(COD2_BUSH, 380.66, -2449.11, 11.91,   0.00, 0.00, 22.05);
CreateObject(COD2_BUSH, 473.76, -2461.18, 12.83,   0.00, 0.00, 14.92);
CreateObject(COD2_BUSH, 474.42, -2459.80, 11.64,   0.00, 0.00, 14.92);
CreateObject(COD2_BUSH, 408.10, -2508.39, 12.42,   0.00, 0.00, 88.23);
CreateObject(COD2_BUSH, 364.53, -2482.63, 11.67,   0.00, 0.00, 243.55);
CreateObject(COD2_BUSH, 365.49, -2483.25, 12.90,   0.00, 0.00, 243.55);
CreateObject(COD2_BUSH, 401.81, -2498.82, 15.06,   0.00, 0.00, 170.08);
CreateObject(COD2_BUSH, 376.88, -2483.47, 14.04,   0.00, 0.00, 153.63);
CreateObject(COD2_BUSH, 382.97, -2487.36, 14.04,   0.00, 0.00, 148.75);
CreateObject(COD2_BUSH, 388.97, -2491.45, 14.04,   0.00, 0.00, 148.75);
CreateObject(COD2_BUSH, 395.49, -2494.95, 14.04,   0.00, 0.00, 155.24);
CreateObject(COD2_BUSH, 402.40, -2497.99, 14.04,   0.00, 0.00, 167.04);
CreateObject(COD2_BUSH, 370.19, -2480.56, 14.04,   0.00, 0.00, 162.49);
CreateObject(COD2_BUSH, 363.60, -2490.22, 14.31,   0.00, 0.00, 262.31);
CreateObject(COD2_BUSH, 379.55, -2486.55, 15.06,   0.00, 0.00, 149.65);
CreateObject(COD2_BUSH, 384.76, -2490.16, 15.06,   0.00, 0.00, 149.65);
CreateObject(COD2_BUSH, 390.83, -2493.73, 15.06,   0.00, 0.00, 155.61);
CreateObject(COD2_BUSH, 397.09, -2496.85, 15.06,   0.00, 0.00, 160.87);
CreateObject(COD2_BUSH, 453.41, -2497.68, 13.65,   0.00, 0.00, 270.04);
CreateObject(COD2_BUSH, 453.44, -2490.90, 13.65,   0.00, 0.00, 270.04);
CreateObject(COD2_BUSH, 420.40, -2517.31, 13.65,   0.00, 0.00, 280.17);
CreateObject(COD2_BUSH, 372.94, -2482.78, 15.06,   0.00, 0.00, 162.49);
CreateObject(COD2_BUSH, 366.25, -2483.94, 14.55,   0.00, 0.00, 238.64);
CreateObject(COD2_BUSH, 432.33, -2507.58, 13.65,   0.00, 0.00, 185.28);
CreateObject(COD2_BUSH, 419.68, -2509.87, 13.65,   0.00, 0.00, 272.39);
}
else if(!strcmp(name,\"mp_railyard\"))
{
    CreateObject(19824,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19825,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19826,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19827,419.3375,-2478.2483,12.8563,0,0,0,300.0);
CreateObject(19828,419.3375,-2478.2483,12.8563,0,0,0,300.0);
//Bounds
CreateObject(19829,419.3375,-2478.2483,12.8563,0,0,0,300.0);
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
SpawnPlayer(i);
}
else continue;
}
}
public OnPlayerConnect(playerid)
{
playergun[playerid] = -1;
pvotey[playerid] = 0;
pvoten[playerid] = 0;
SendClientMessage(playerid,0xFFFFFFAA,\"COD2 Mod by Kurtis\");
SendClientMessage(playerid,0xFF0000AA,\"Minden új játékosnak:\");
SendClientMessage(playerid,0xFFFFFFAA,\"Látogass el a {FF0000}www.gta-mpmods.weboldala.net {FFFFFF}oldalra, és töltsd le a szükséges fájlokat a módhoz!\");
return 1;
}
public OnPlayerDisconnect(playerid)
{
    playergun[playerid] = -1;
pvotey[playerid] = 0;
pvoten[playerid] = 0;
if(vip == 1)
{
new count = 0;
new votestat = 0;
new votestat2 = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
   if(IsPlayerConnected(i)) count++;
   else continue;
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
   if(IsPlayerConnected(i))
   {
   votestat+=pvotey;
   votestat2+=pvoten;
   }
   else continue;
}
if(votestat >= floatround(count/2,floatround_ceil))
{
   SendClientMessageToAll(0xFFFF00AA,\"A szavazás sikeres.\");
   vip = 0;
   LoadMap(tmpmapname);
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i))
      {
      SetPlayerScore(i,0);
      pvotey = 0;
      pvoten = 0;
      }
      else continue;
   }
}
else if(votestat2 >= floatround(count/2,floatround_ceil))
{
    SendClientMessageToAll(0xFFFF00AA,\"A szavazás sikertelen.\");
   vip = 0;
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i))
      {
      pvotey = 0;
      pvoten = 0;
      }
      else continue;
   }
}
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, \"/help\", true))
{
    SendClientMessage(playerid,0xFF0000AA,\"Parancsok\");
    SendClientMessage(playerid,0xFFFFFFAA,\"/req - következõ halálkor új fegyver\");
    SendClientMessage(playerid,0xFFFFFFAA,\"/kill - öngyilkosság\");
    SendClientMessage(playerid,0xFFFFFFAA,\"/votemap - pályaszavazás\");
    SendClientMessage(playerid,0xFFFFFFAA,\"/yes | /no - szavazás igen/nem\");
    return 1;
}
if(!strcmp(cmdtext, \"/req\", true))
{
       ShowPlayerDialog(playerid,WEAPON_DIALOG,DIALOG_STYLE_LIST,\"Fegyverek\",wd_list,\"Választ\",\"Kilép\");
       return 1;
}
if(!strcmp(cmdtext, \"/votemap\", true))
{
if(pvotey[playerid] == 0 && pvoten[playerid] == 0 && vip == 0)
{
    ShowPlayerDialog(playerid,MAP_DIALOG,DIALOG_STYLE_LIST,\"Pálya Választás\",map_list,\"OK\",\"Mégse\");
    return 1;
}
else
{
SendClientMessage(playerid,0xFFFF00AA,\"Szavazás folyamatban vagy már szavaztál.\");
}
}
if(!strcmp(cmdtext, \"/yes\", true))
{
if(pvotey[playerid] == 0 && pvoten[playerid] == 0 && vip == 1)
{
   new count = 0;
   new votestat = 0;
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i)) count++;
      else continue;
   }
   pvotey[playerid] = 1;
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i)) votestat+=pvotey;
      else continue;
   }
   if(votestat >= floatround(count/2,floatround_ceil))
   {
      SendClientMessageToAll(0xFFFF00AA,\"A szavazás sikeres.\");
      vip = 0;
      LoadMap(tmpmapname);
      for(new i = 0; i < MAX_PLAYERS; i++)
      {
         if(IsPlayerConnected(i))
         {
         SetPlayerScore(i,0);
         pvotey = 0;
         pvoten = 0;
         }
         else continue;
      }
   }
}
else
{
SendClientMessage(playerid,0xFFFF00AA,\"Nincs szavazás vagy már szavaztál.\");
}
return 1;
}
if(!strcmp(cmdtext, \"/no\", true))
{
if(pvotey[playerid] == 0 && pvoten[playerid] == 0 && vip == 1)
{
   new count = 0;
   new votestat = 0;
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i)) count++;
      else continue;
   }
   pvoten[playerid] = 1;
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i)) votestat+=pvoten;
      else continue;
   }
   if(votestat >= floatround(count/2,floatround_ceil))
   {
      SendClientMessageToAll(0xFFFF00AA,\"A szavazás sikertelen.\");
      vip = 0;
      for(new i = 0; i < MAX_PLAYERS; i++)
      {
         if(IsPlayerConnected(i))
         {
         pvotey = 0;
         pvoten = 0;
         }
         else continue;
      }
   }
}
else
{
SendClientMessage(playerid,0xFFFF00AA,\"Nincs szavazás vagy már szavaztál.\");
}
return 1;
}
if(!strcmp(cmdtext, \"/kill\", true))
{
SetPlayerHealth(playerid,0);
return 1;
}
return 0;
}
public OnPlayerRequestClass(playerid, classid)
{
//SetPlayerInterior(playerid,0);
SetPlayerCameraPos(playerid,419.3375,-2478.2483,64);
SetPlayerCameraLookAt(playerid,419.3375,-2478.2483,128);
ShowPlayerDialog(playerid,WEAPON_DIALOG,DIALOG_STYLE_LIST,\"Fegyverek\",wd_list,\"Választ\",\"Kilép\");
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
SendClientMessage(playerid,0xFFFFFFAA,\"INFO: Használd a dialógust a spawnhoz!\");
return 0;
}
public OnPlayerSpawn(playerid)
{
if(!strcmp(mapname,\"mp_toujane\"))
{
new rand = random(sizeof(RndToujane));
SetPlayerPos(playerid,RndToujane[rand][0],RndToujane[rand][1],RndToujane[rand][2]);
SetPlayerFacingAngle(playerid,RndToujane[rand][3]);
}
else if(!strcmp(mapname,\"mp_carentan\"))
{
new rand = random(sizeof(RndToujane));
SetPlayerPos(playerid,RndCarentan[rand][0],RndCarentan[rand][1],RndCarentan[rand][2]);
SetPlayerFacingAngle(playerid,RndCarentan[rand][3]);
}
else if(!strcmp(mapname,\"mp_dawnville\"))
{
new rand = random(sizeof(RndToujane));
SetPlayerPos(playerid,RndDawnville[rand][0],RndDawnville[rand][1],RndDawnville[rand][2]);
SetPlayerFacingAngle(playerid,RndDawnville[rand][3]);
}
else if(!strcmp(mapname,\"mp_burgundy\"))
{
new rand = random(sizeof(RndToujane));
SetPlayerPos(playerid,RndBurgundy[rand][0],RndBurgundy[rand][1],RndBurgundy[rand][2]);
SetPlayerFacingAngle(playerid,RndBurgundy[rand][3]);
}
else if(!strcmp(mapname,\"mp_railyard\"))
{
new rand = random(sizeof(RndToujane));
SetPlayerPos(playerid,RndRailyard[rand][0],RndRailyard[rand][1],RndRailyard[rand][2]);
SetPlayerFacingAngle(playerid,RndRailyard[rand][3]);
}
//SetPlayerInterior(playerid,1);
GivePlayerWeapon(playerid,24,50);
GivePlayerWeapon(playerid,playergun[playerid],2000);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID)
        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
else
{
SendDeathMessage(killerid,playerid,reason);
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == WEAPON_DIALOG)
{
if(response == 1)
{
           if(listitem == 0)
      playergun[playerid] = 30;
   if(listitem == 1)
      playergun[playerid] = 31;
            if(listitem == 2)
      playergun[playerid] = 25;
           if(listitem == 3)
      playergun[playerid] = 27;
   if(listitem == 4)
      playergun[playerid] = 29;
            if(listitem == 5)
      playergun[playerid] = 33;
   if(listitem == 6)
      playergun[playerid] = 34;
   if(GetPlayerState(playerid) == 0 || GetPlayerState(playerid) == 7 ||
   GetPlayerState(playerid) == 8 || GetPlayerState(playerid) == 9)
      SpawnPlayer(playerid);
}
else
{
   if(playergun[playerid] == -1)
      playergun[playerid] = 30;
   if(GetPlayerState(playerid) == 0 || GetPlayerState(playerid) == 7 ||
   GetPlayerState(playerid) == 8 || GetPlayerState(playerid) == 9)
      SpawnPlayer(playerid);
}
}
if(dialogid == MAP_DIALOG)
{
    if(response == 1)
    {
   new string[256];
   new pname[32];
       tmpmapname = maplist[listitem];
       new count = 0;
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i)) count++;
      else continue;
   }
   pvotey[playerid] = 1;
   GetPlayerName(playerid,pname,32);
   format(string,256,\"%s a következõ pályát szavazta: %s\",pname,tmpmapname);
   SendClientMessageToAll(0xFFFF00AA,string);
   SendClientMessageToAll(0xFFFF00AA,\"Szavazás: /yes - igen | /no - nem\");
   vip = 1;
   if(pvotey[playerid] >= floatround(count/2,floatround_ceil))
   {
      SendClientMessageToAll(0xFFFF00AA,\"A szavazás sikeres.\");
      LoadMap(tmpmapname);
      vip = 0;
      for(new i = 0; i < MAX_PLAYERS; i++)
      {
         if(IsPlayerConnected(i))
         {
         SetPlayerScore(i,0);
         pvotey = 0;
         pvoten = 0;
         }
         else continue;
      }
   }
    }
}
}

 
Letöltés ITT

34
Modok / [OTHER]Racetrack Maker 3.0
« Dátum: 2012. április 12. - 15:52:50 »
Ez a mód azért készült elsõsorban, hogy gyorsan és könnyen lehessen versenypályákat alkotni SP illetve MP játékba, 5 elemet tartalmaz a mód, sajnos többet nem bír el a singleplayer, így nem adtam hozzá újabbakat. A mód azoknak is jó, akik nem tudnak mapolni singleplayerre, vagy multiplayerre csak a bemásolós és átfordítós módszert használják. Használata egyszerû: 2 féle méret közül választhatunk: 8x8 vagy 16x16, a pályákat le is menthetjük az általam megírt formátumban, 768kb a legnagyobb mérete, minden sorban egy négyzet adatát tárolja. Gondolom a szerkesztést nem kell részletezni, kivéve ha forgatni akarunk ott a 4 db rádiógomb, vagy R betûvel. Ha elkészült a pálya érdemes a Change Bounds-t megnyomni elsõ használatnál arra a méretre amilyen méretben készült a pálya, ha váltunk akkor egyértelmûen használni kell. Ha minden megvan nyomjunk a Make gombra, ez után indítsuk el a játékot töltsünk be egy állást vagy új játék. Csak ha kültéren tartózkodsz, tedd le a játékot tálcára, és a Set Teleport Point-ra nyomj rá, ez után kattints egy kockára és ha megjelent a fehér négyzet, akkor Warp To Point-ra kell nyomni, ez után ha minden jó a pályára fog teleportálni, ha nem történik semmi 2x-3x meg kell nyomni a Warp To Point gombot, általában bejön.
Telepítés:
Másold be a fájlokat a játék könyvtárába (SAMP mappa opcionális, avagy ha multiba szeretnél a szerveredre, akkor érdemes ezzel bajlódni, természetesen az IMG fájlt el kell küldeni a többi játékosnak is). A mód felül fogja írni az eredeti gta.dat-ot, e miatt nem kell aggódni, mivel mellékeltem egy gta.dat.bak fájlt.
Ha minden a helyén van akkor a Make gomb megnyomása után nem fogja majd kérni a GTA: San Andreas elérési útvonalát a program.
Videó (Ez volt az elsõ változat, sokkal bõvebb a 3.0):
3Sa7x-WnumA
Letöltés: ITT

35
Modok / [WEAP]AMD-65
« Dátum: 2012. január 06. - 15:31:47 »
3ds max 2009 dff pluginnal, textúrához meg txd workshop

36
Modok / [WEAP]AMD-65
« Dátum: 2012. január 05. - 17:34:16 »
Mivel nincsen még errõl a fegyverrõl mód, így elkészítettem, mivel magyar fegyver elsõsorban azért kezdtem neki (gondolom kevesen hallottatok errõl a fegyverrõl). Elsõ komolyabb fegyvermodellem.
Polyszám: 2300 körül
Elkészítési idõ: kb 1 óra
Készítõ: Kurtis
Az AK47-est cseréli le.
Kép
\"amd65.jpg\"
Letöltés: ITT

37
Modok / [MAP]San Andreas: Wild Life (RÉGI)
« Dátum: 2011. augusztus 30. - 18:28:20 »
Nemrég kiadtam a 2.0-s verziót, az újításban:
- 2 új sziget:
  - romokkal és erdõvel + híd
  - havas fenyves sziget
- pár új object
  - étterem
  - néhány kaja object
  - elsõ rámpa
  - új sátor
- új radar
- PED-ek a közeli kisvárosban
- majdnem minden épület be lett rendezve
- 1-2 új skin
- MTA Loader 1.0.5-re *
Lesz egy újabb frissítés a 2.5-ös, jelenleg béta fázisban van, várható újítások:
- Jobb minõségû famodellek
- Új sziget: város (félkész)
- Új IPL-ek a növényzetnek
- Béta küldetések (DYOM)
- Mentési lehetõség a wlscriptbe
- MTA Loader 1.0.5 és 1.1-re *
* = Arra jó, hogy külön indítófilet hoz létre, amivel külön elindíthatjuk a Wild Lifes MTA-t
Ha valakinek van valamilyen ötlete az újításhoz, az nyugodtan írja le válaszként.
Akit érdekel az újabb verzió, az jelentkezhet teszternek a következõ MSN címeken:
[email protected]
[email protected]

38
Beszélgetés / Fotózd az asztalod.
« Dátum: 2011. augusztus 28. - 20:22:16 »
\"asztal.jpg\"

39
Weblapok / www.gta-mpmods.weboldala.net
« Dátum: 2011. augusztus 08. - 15:07:36 »
Minden 3D-s GTA-val foglalkozunk, ami kijött PC-re, még a GTA 3 letöltések nincsenek meg.
2 féle letöltés van az oldalon, sima letöltéseket én kezelem, a másikat Sleepy93HUN. Nem csak olyan módok vannak, amelyeket más készített, hanem saját módokat is raktunk fel.
Sajnos egy ideje alacsony lett a látogatottság, mivel kb. 4-5x költözni kellett más webhostinghoz.
http://www.gta-mpmods.weboldala.net

40
Modok / [OTHER]San Andreas Difficulty Mod
« Dátum: 2011. augusztus 07. - 23:28:52 »
Mivel még nincsen ilyen mód a játékra, úgy gondoltam írok egyet. A programmal 5 féle nehézségi fokot állíthatunk be a játékhoz, és 2 opcionális lehetõség közül lehet választani (körözéskor zene, alacsony HP esetén szívdobogás).
Nehézségi fokok:
- Very Easy
  - 100 hp alatt regenerálódik az életed
- Easy
  - 50 hp alatt regenerálódik az életed
- Medium
  - Semmi effekt
- Hard
  - 100-ig van korlátozva a pajzs (150-et semmiképp nem fogja engedni - 12. rendõr mellékküldetés után jár)
  - 75-ig van korlátozva a max élet
- Realistic
  - Korlátozott fegyverarzenál (7 féle fegyvercsoport)
    - Közelharci fegyverek (jelenlegi közelharci fegyverek + tûzoltókészülék és spray)
    - Elsõdleges fegyverek (Shotgun,Géppuska,Sniper)
    - Másodlagos fegyverek (Pisztoly,SMG)
    - Speciális fegyverek (RPG, HS RPG, Flamethrower, Minigun)
    - Gránátok
    - Egyéb (night vision, parachute,...)
  - Korlátozott lõszerszám (leginkább a speciális fegyvereknél és a gránátoknál vehetõ észre)
  - Sniper néha fel/le ugrál célzás közben + nem sétálhatsz célzás közben
  - 75-ig van korlátozva a pajzs
  - 50-ig van korlátozva a max élet
Videók:
Elsõ videó:
 

Küldetés teszt (legnehezebb fokozaton):
 

Kép:
\"sd_mod.png\"
A mód C#-ban íródott.
Letöltés ITT
Ha van valamilyen ötletetek akármelyik nehézségi fokhoz, akkor azt leírhatjátok.
Készítõ:
Kurtis

41
Modok / [MAP]San Andreas: Wild Life (RÉGI)
« Dátum: 2011. augusztus 02. - 10:37:17 »
Direkt úgy lett megcsinálva, hogy ne írjon felül semmit, egyedül az eltávolításnál kell figyelni, hogy melyik exe-t törlöd le. Akik elõször tesztelték nem mondták hogy felül írt volna valamit (Ha kézileg kell törölni a módot, az audio mappában van 2-3 fájl amit hozzáad, szerintem nem nehéz megtalálni). Elvileg ha feltelepítetted használni kell a San Andreas váltót, mert nem a Wild Life van kiválasztva.

42
Modok / [MAP]San Andreas: Wild Life (RÉGI)
« Dátum: 2011. augusztus 02. - 09:48:27 »
Kell hozzá a 3ds max 9 (win7 alatt 2009-el mûködik), hozzá egy X Scripts script, elõször be kell tölteni a dff fájlokat a megfelelõ képformátummal, utána az IPL fájlokat, abból összerakja a mapot amit csináltál pár pillanat alatt. Végül az X Radar Maker-t kell lefuttatni, 144 renderelt képet fog lementeni. Utánna csak az X Radar Editorba kell betölteni és azzal kimenteni txd formátumba, pár perc alatt kész, utána meg csak be kell rakni a gta3.img-be. A részletesebb leírást, és a programokat ITT megtalálod.

43
Modok / [MAP]San Andreas: Wild Life (RÉGI)
« Dátum: 2011. augusztus 01. - 23:07:09 »
A sátrat lehet majd átdolgozom, mivel azt az egy objectet csináltam google sketchuppal.

44
Modok / [OTHER]San Andreas Nem Hivatalos Javítás
« Dátum: 2011. augusztus 01. - 19:30:31 »
Mivel még senki nem csinált még ilyen patchet a játékra, így én és Sleepy93HUN csináltunk egy javítást a játékhoz. Elõször összegyûjtöttük az objectek nevét, amik hibásak voltak kollúzióban (szilárdság) vagy kinézetben. Én LS-el kezdtem, Sleepy93HUN meg SF-t csinálta, egyedül annyit segítettem neki, hogy a Dotherty Garázs kollúzióját én javítottam át (a garázsban minden leesett az 5 dff az 1 kollúzióban miatt).
Pár objectet nem lehetett kijavítani, mivel olyan volt, hogy azt visszafejteni nem lehetett hibátlanul (fekete lett az object). LV-t viszont 2-en csináltuk meg, de még sajnos maradt 1-2 bug, majd egy hotfixes telepítõ várható valamikor.
Talán a patch sokat javít a játékélményen, mivel nem csak fixek vannak, hanem bizonyos helyeket kidolgoztam, amit úgy gondoltam, hogy félkész.
És a legfontosabb:
Gondolom sokan nem tudták használni a tûzlépcsõket, mivel vagy nem tudtak felmászni rájuk vagy átestek rajtuk, a patchben talán ki lett javítva minden tûzlépcsõ.
Videók:
Trailerek:
 
45
Modok / [MAP]San Andreas: Wild Life (RÉGI)
« Dátum: 2011. augusztus 01. - 15:25:12 »
Egyik nagyobb projectem, teljesen új pálya, új fegyverekkel, meg még 1-2 kisebb újítással. Úgy 1-2 hónapig dolgoztam vele, az elején sok újítással utána amikor valami jó eszembe jutott beraktam.
A mód egy San Andreas váltót tartalmaz, amivel könnyedén válthatunk az eredeti játék és a Wild Life mód között. Az eredeti fájlok miatt nem kell aggódni, mivel a mód teljesen egyedi mappából tölt mindent be (expp mappa, viszont az audio mappát használja, de semmit sem ír felül).
Ha új játékot kezdesz akkor vigyázz, mert csíkokban bevilloghat a képernyõ töltés közben.
A mód kompatibilis az MTA-val, csak akkor ha a szerveren ki van kapcsolva a fájl ellenõrzés.
SA-MP-re sajnos nem lehet optimizálni, betölteni betölti a pályát, de bizonyos helyeken errort floodol, és kicrashel.
2.0-s verzió újdonságai:
- 2 új sziget:
  - romokkal és erdõvel + híd
  - havas fenyves sziget
- pár új object
  - étterem
  - néhány kaja object
  - elsõ rámpa
  - új sátor
- új radar
- PED-ek a közeli kisvárosban
- majdnem minden épület be lett rendezve
- 1-2 új skin
- MTA Loader 1.0.5-re *
Várható Frissítés 2.5
- Jobb minõségû famodellek
- Új sziget: város (félkész)
- Új IPL-ek a növényzetnek
- Béta küldetések (DYOM)
- Mentési lehetõség a wlscriptbe
- MTA Loader 1.0.5 és 1.1-re *
* = Arra jó, hogy külön indítófilet hoz létre, amivel külön elindíthatjuk a wild lifes MTA-t
Videók:
1.0-s verzió:
http://www.youtube.com/watch?v=dB-2DgB_CMY&feature=channel_video_title
2.0-s verzió:
 
Oldalak: 1 2 [3] 4
SimplePortal 2.3.7 © 2008-2024, SimplePortal