Ü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 - ShoCk

Oldalak: 1 2 [3] 4
31
Archívum / Welcome back to the city of Los Santos!
« Dátum: 2013. augusztus 27. - 14:25:53 »
Ez tetszik, fõleg a hacker része... Bár nem tudom, hogy akarod megoldani, de sok sikert ! :D

32
Fórum Archívum (Témák/Fórumok) / Re:Map berakasa.
« Dátum: 2013. augusztus 27. - 14:23:25 »
googleba keresd ki a sa single player editort és online map convertálóval alakítsd át az mta mapot

33
SA-MP: Szerverfejlesztés / Honey - System - Anti Cheat
« Dátum: 2013. augusztus 27. - 14:22:39 »
Jónak tûnik, bár a buggok elég idegesítõen hangzanak!

34
Fórum Archívum (Témák/Fórumok) / Re:Mappert Keresek
« Dátum: 2013. augusztus 27. - 14:21:16 »
Leírhatnád, hogy milyen gamemode-hoz keresel mappert, mert vakságban nem fognak annyian jelentkezni!

35
Archívum / Trade RolePlay Szerver
« Dátum: 2013. augusztus 27. - 14:00:39 »
Amit a bemutatás elõtt tudni kell:
A mod valójában Defensive RPG edit, viszont ahol most tart, annak körülbelül 15% köze van a Defensive RPG-hez! A szerver körülbelül 2 hónapja üzemel a nap minden órájában, mivel hostingot bérlünk. Mostanra sikerült elérnünk a napi átlag 17-20 playert, viszont sajnos pár napja volt egy karakter reset, és eléggé megrogyott a napi átlag player szám. Jelenleg napi 1-14 játékos között van a szerver playereinek száma. Nos ennyi, ami említésre méltó kezdõdjön a bemutatás.
Szerver neve: Trade Role Play

IP: -

Hosting: clans.hu

Férõhely: 68

Szerver készítõi és tulajdonosai: aSa. és ShoCk

Naponta aktív adminok: ShoCk, aSa., MiNiBlack, SS://, Alex, N3O


Szerver bemutatása:
- A szerver 95%-a egyedileg van mappolva, talán 2 interior van, ami az eredeti Defensive RPG modban is ugyanolyan volt. (Adóhivatal Interior és Kórház)
- Ahol játszódik: El Querbados és Las Papayas
- A szerveren megtalálható munkák: Úttisztító, Villanyszerelõ, Postás, Pizzafutár, Gyári munkás, Benzinszállító, Kamionsofõr, Buszsofõr, Pilóta, Szemétszállító.
- A szerveren megtalálható leaderes munkák: Rendõr, Mentõ, Tûzoltó, Szerelõ, Adóhivatalos, Rádiós, Taxis
- Szervezetek a szerveren karakter reset óta nincsenek, mivel még nem lettek kinevezve az élükre vezetõk.
Kicsit az RP élményrõl:
- A két város közötti hídon rendõr kordon és igazoltatás szokott folyni akár naponta többször is!
- A mod kialakítása úgy van megcsinálva, hogy minél jobban törekedjen a való életre!
- Jármûveken idex
- Jármûvek motorját indítani kell, persze csak ha van hozzá kulcs.
- Minden jármûvön (kivéve amin a való életbe sincs) le és felkapcsolható lámpa van, melyet a 2-es gombbal lehet kapcsolni.
- Három féle üzemanyagtípus: Benzin, Gázolaj és Kerozin!
- Nem kell megszakadni a fizetésedért, viszont nem is hullik minden az öledbe!
- Segítõkész admin csapat
- A szerveren engedélyezett fegyvertípusok: Desert Eagle, Colt, Baseball ütõ (késõbb fegyverboltban lesz beszerezhetõ), Gumibot (Rendõröknek)
- Inventory system: Tab gomb lenyomása után a nevedre kattintva érhetõ el!
- Drog system: Bizonyos számú játszott óra után Kokaint és Füves cigit készíthetsz a drogháznál, amit vagy megtartasz, vagy eladsz az utcán!
Munkák:
- Úttisztító: Az úton kell haladnia, a jármû közben tisztítja az utat. Minél nagyobb a megtett táv, annál nagyobb fizetést kap. Munkát kezdeni a /munkakezdés paranccsal tud!
- Villanyszerelõ: A városokban és a köztük lévõ útszakaszokon lámpák vannak, amelyek elromolhatnak. A villanyszerelõ dolga, hogy ellenõrizze õket és meghibásodás esetén megjavítsa.
- Postás: CP-ken kell áthaladnia, hogy kihordja az újságot. Miután minden újságot kivitt újrakezdheti az újságkihordást a /munkakezdés paranncsal
- Pizzafutár: Lényegében ugyanaz a dolga mint a postásnak, csak neki pizzát kell házhoz vinnie
- Gyári munkás: A gyár dolgozóasztalánál kell tárgyakat összeállítania, majd azokat leadni a raktár részen. Minden elkészített tárgy után kap fizetést, amit a postán felvehet, csak úgy mint minden más munkás.
- Benzinszállító: A benzinszállítók munkája nagyon fontos, mivel õk látják el El Querbados benzinkútját üzemanyaggal.
- Kamionsofõr: A gyári munkások szorgos munkájának eredményeképpen a felgyülemlett tárgyakat a kamionsofõrök szállítják ki.
- Buszsofõr: A buszos dolga, hogy a buszmegállóban várakozó játékosokat felvegye és egészen addig szállítsa, amíg õk valamelyik buszmegállóban le nem szállnak. Nem mellesleg a rutinellenõrzések és igazoltatások kikerülésére is ideális jármû egy utasnak...
- Pilóta: A pilóták \"utasokat\" szállítanak az Elhagyatott Repülõtér és a San Fierro-i repülõtér között. Fizetésük nekik a legjobb.
- Szemétszállító: Dolga, hogy a városban elhelyezett kukákból a szemetet összegyûjtse, majd azt a szeméttelepre elvigye.
Sok-sok más érdekes dologgal várunk Téged: Trade RolePlay Team

36
Segítségkérés / Y_ini segítség!
« Dátum: 2013. április 28. - 10:18:47 »
Idézetet írta: scripter01 date=1367135899\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"36572\" data-ipsquote-contentclass=\"forums_Topic
Segítek!!! Www.google.hu vagy ezer darab van fent.
 
2 hozzászólásodból 2 off volt...Ez nem off topic. Amúgy pedig leírtam, hogy azt nem tudom, hogy mivel oldható meg az, hogy kicserélje a kocsit és hogy kezdésnél kapjon. Azért segítségkérés a téma neve, hogy itt lehessen segítséget kérni. Nem baj, a lényeg, hogy te profi vagy.

37
Segítségkérés / Y_ini segítség!
« Dátum: 2013. április 28. - 09:50:33 »
Bocsi rosszul fogalmaztam. Abban kellene a segitseg hogy mikor beirja a jatekos pl hogy /kocsivesz (nem kell helyhez kotni) akkor elojon egy dialog ahol kivalasztja hogy melyik kocsit akarja megvenni, mahd mikor kivalasztja akkor a regi kocsit torolje ki es azt adja neki amit kivalasztott.

Dupla hozzászólás automatikusan összefûzve. ( 2013. április 28. - 09:55:39 )

Roviden a lenyeg...egy RP kocsi rendszer kene nekem ugy hogy mar kezdeskor kapjon a jatekos egy kocsit

38
Segítségkérés / Y_ini segítség!
« Dátum: 2013. április 26. - 15:26:24 »
Sziasztok! Lenne egy problémám. Azt szeretném megvalósítani enum és y_ini segítségével, hogy mikor egy játékos regisztrál, akkor a szerver hozzon létre neki egy saját kocsit, amibe csak õ tud beszállni. Ha utána netán ki akarja cserélni a kocsit akkor ha beírja hogy /kocsivesz jöjjön neki elõ egy dialog ahol tud választani, és ha van elég pénze akkor kitörli a régi kocsiját, és legenerál neki egy újat.
Pl: Enumba beírni hogy:
 
enum pInfo
{
pKocsiID
}

 
Ha egyezik a kocsi id-je és a tulajdonosnál szereplõ kocsi id akkor tudja használni.
A fõbb probléma mint már írtam az, hogy generálja le neki a kocsit és utána ha másikat vesz akkor törölje is ki a kocsiját.

39
Segítségkérés / [error 001] SEGÍTSÉG!!
« Dátum: 2013. április 25. - 22:44:35 »
Megoldottam elvileg köszi :)

40
Segítségkérés / [error 001] SEGÍTSÉG!!
« Dátum: 2013. április 25. - 22:35:49 »
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\asd.pwn(112) : error 001: expected token: \"-string end-\", but found \"-identifier-\"
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\asd.pwn(112) : error 017: undefined symbol \"Bel\"
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\asd.pwn(112) : error 029: invalid expression, assumed zero
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\asd.pwn(112) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664           Copyright © 1997-2006, ITB CompuPhase
4 Errors.
Tiedre ez a hibaüzenet

41
Segítségkérés / [error 001] SEGÍTSÉG!!
« Dátum: 2013. április 25. - 22:14:23 »
Sziasztok! Valaki tudna segíteni, mert mikor le akarom Compilelni a modot ezt a hibaüzenetet kapom:
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\lan.pwn(112) : error 001: expected token: \"-string end-\", but found \"-identifier-\"
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\lan.pwn(112) : warning 215: expression has no effect
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\lan.pwn(112) : error 001: expected token: \";\", but found \"-string-\"
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\lan.pwn(112) : warning 215: expression has no effect
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\lan.pwn(112) : error 001: expected token: \"-string end-\", but found \"-identifier-\"
C:\\Documents and Settings\\Valaki\\Asztal\\Szerver\\Szerver\\gamemodes\\lan.pwn(112) : fatal error 107: too many error messages on one line
Itt a teljes mod:
 
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
#include <Dini>
#include <fixchars>
#include <foreach>
#include <OPVD>
#include <Streamer>
#include <sscanf2>
#include <zcmd>
#include <YSI\\y_ini>
#define DIALOG_REGEL 1 //DIALOG_REGISTER
#define DIALOG_BELEP 2 //DIALOG_LOGIN
#define DIALOG_SIKERES_1 3 //DIALOG_SUCCESS_1
#define DIALOG_SIKERES_2 4 //DIALOG_SUCCESS_2
//============ SZÍNEK ==================
#define NARANCS            0xff8c00AA
#define PIROS            0xFF0000AA
#define ZOLD            0x33AA33AA
#define LILA             0xC2A2DAAA
#define CITROM            0xFFFF00AA
#define FONTOS             0x007bffAA
#define UZENET             0x5de8e1AA
#define RADIO             0x5ccdf2AA
#define KEK             0x1373C1FF
#define SOTETKEK          0x0000FFFF
#define VILAGOSKEK          0x2BCDFDFF
#define SOTETZOLD          0x008000FF
#define VILAGOSZOLD         0x00FF00FF
#define ROZSASZIN          0xFF00FFFF
#define AQUA             0x00FFFFFF
#define FEKETE             0x000000FF
#define FEHER             0xFFFFFFFF
#define SZURKE             0x808080FF
#define BORDO             0x800000FF
//===================
#define PATH \"/Felhasznalok/%s.ini\"
main()
{
}
enum pInfo
{
    pJelszo,
    pPenz,
    pAdmin,
    pDriftPont,
    pDMPont,
    pSkin
}
new PlayerInfo[MAX_PLAYERS][pInfo];
stock UserPath(playerid)
{
    new string[128],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),PATH,playername);
    return string;
}
stock udb_hash(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
    INI_Int(\"Jelszo\",PlayerInfo[playerid][pJelszo]);
    INI_Int(\"Penz\",PlayerInfo[playerid][pPenz]);
    INI_Int(\"Admin\",PlayerInfo[playerid][pAdmin]);
    INI_Int(\"DriftPont\",PlayerInfo[playerid][pDriftPont]);
    INI_Int(\"DMPont\",PlayerInfo[playerid][pDMPont]);
    INI_Int(\"Skin\",PlayerInfo[playerid][pSkin]);
    return 1;
}
public OnGameModeInit()
{
SetGameModeText(\"LAN v1.0\");
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
    if(fexist(UserPath(playerid)))
    {
        INI_ParseFile(UserPath(playerid), \"LoadUser_%s\", .bExtra = true, .extra = playerid);
        ShowPlayerDialog(playerid, DIALOG_BELEP, DIALOG_STYLE_INPUT,\"\"FEHER\"Belépés\",\"\"FEHER\"Írd be a jelszavad a belépéshez!\",\"Belépés\",\"Kilépés\");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGEL, DIALOG_STYLE_INPUT,\"\"FEHER\"Regisztráció...\",\"\"FEHER\"Írj be egy jelszót a regisztrációhoz.\",\"Regisztráció\",\"Kilép\");
    }
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,\"data\");
    INI_WriteInt(File,\"Penz\",GetPlayerMoney(playerid));
    INI_WriteInt(File,\"Admin\",PlayerInfo[playerid][pAdmin]);
    INI_WriteInt(File,\"DriftPont\",PlayerInfo[playerid][pDriftPont]);
    INI_WriteInt(File,\"DMPont\",PlayerInfo[playerid][pDMPont]);
    INI_WriteInt(File,\"Skin\",PlayerInfo[playerid][pSkin]);
    INI_Close(File);
    return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REGEL:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGEL, DIALOG_STYLE_INPUT, \"\"FEHER\"Regisztráció...\",\"\"PIROS\"Rossz jelszót írtál be!\\n\"FEHER\"Írj be egy jelszót a regisztrációhoz.\",\"Regisztráció\",\"Kilép\");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,\"data\");
                INI_WriteInt(File,\"Jelszo\",udb_hash(inputtext));
                INI_WriteInt(File,\"Penz\",0);
                INI_WriteInt(File,\"Admin\",0);
                INI_WriteInt(File,\"DriftPont\",0);
                INI_WriteInt(File,\"DMPont\",0);
                INI_WriteInt(File,\"Skin\",1);
                INI_Close(File);
                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
                ShowPlayerDialog(playerid, DIALOG_SIKERES_1, DIALOG_STYLE_MSGBOX,\"\"FEHER\"Sikeres!\",\"\"COL_GREEN\"Sikeresen regisztráltál! Lépj be újra, hogy elmentsd a statod!\",\"Ok\",\"\");
            }
        }
        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pJelszo])
                {
                    INI_ParseFile(UserPath(playerid), \"LoadUser_%s\", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pPenz]);
                    ShowPlayerDialog(playerid, DIALOG_SIKERES_2, DIALOG_STYLE_MSGBOX,\"\"FEHER\"Sikeres!\",\"\"ZOLD\"Sikeresen beléptél!\",\"Ok\",\"\");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_BELEP, DIALOG_STYLE_INPUT,\"\"FEHER\"Belépés\",\"\"PIROS\"Rossz jelszót írtál be.\\n\"FEHER\"Írd be a jelszavad a belépéshez.\",\"Belép\",\"Kilép\");
                }
                return 1;
            }
        }
    }
    return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
//=========================================

42
Általános / Milyen szervernek örülnétek?
« Dátum: 2013. április 19. - 07:41:05 »
Semmi képpen sem DT, See, Cry vagy egyéb mod edit lenne ha RPG indulna, de a szavazás jelenlegi állása szerint az egyedi Drift modra van igény, a DM csak 2. helyen áll... Lehet, hogy kombinálva lesz a kettõ valami módon, hogy mindenkinek megfeleljen. Valahogy így értem ezt: A drift rendszert már írtam a szavazásnál, hogy milyen lenne, ezt ötvöznénk pl egy /dmcsapat paranccsal, amivel meg tudnád alapítani saját dm csapatod, fegyvered csak ha belépsz egy dm mapra, akkor lenne. Mondjuk ha 3v3 DM mapra mentek be, akkor minden játékosnak (amúgy is) 1 élete lenne. Ha meghal akkor õ kiesett a körbõl. Minden megölt játékos után (csak DM-en) DM pontokat kapna az, aki megölte a játékost. A DM pontokból tudná feljeszteni a fegyver skilljét, vagy ha éppen nem a skilljét szeretné fejleszteni, akkor beválthatja Driftpontokra, vagy különbözõ más jutalmakra.
Leírom bõvebben a drift rendszer lényegét is: Spawnoláskor kapsz egy nagyon alap, nagyon gyenge kocsit, amit a /autom paranccsal tudsz lehívni. Más jármûvébe nem tudsz beleülni. Lesznek drift teleportok, melyeken tudtok driftelni, (persze bárhol driftelhettek) és a driftszámláló megállásakor (mikor vége a driftnek) kaptok a driftszámláló által mért számhoz megfelelõ drift pontot. Pl.: Ha te driftelsz mondjuk egy kanyarba 2.000-t, akkor kapsz érte 20 driftpontot. Vagyis driftszámláló/100=driftpont
Nem lesz egyszerû megszerezni a kocsikat, rá a tuningot felszerelni, de nem is az a szerver célja, hogy mindenki 1 óra után Eleggyel rohangáljon.
Hol tart eddig a mod: Nos a drift mod már 70-75%-a készen van, még kell rajt kicsit finomítani, az árakat jól belõni stb... Ha van igény rá, akkor a fent leírt DM részt beleírom a modba. Vasárnap este 20:00-ig lehet szavazni, utána már az a mod marad, amire a legtöbb szavazat érkezett. (Ha a DM és a Drift mod ilyen szorosan egymás mellett fog haladni akkor mindkettõ bele lesz írva a modba.

43
Általános / Milyen szervernek örülnétek?
« Dátum: 2013. április 17. - 18:44:22 »
Ha esetleg más jellegû szervert szeretnétek, akkor írjátok meg nekem.
Nincs ötletem, hogy milyen típusú szervernek örülnétek, ezért egy kis közvéleménykutatást tartok.
A host már megvan, csak a modot kell megírnom.

44
RP/RPG kérések / Telefonszám!
« Dátum: 2013. április 17. - 07:31:11 »
Szerintem sehogy, mivel a telefonszám egy megadott helyrõl (pl 1001-tõl) induló sorozatszám. Vagyis 0-val elég nehéz lenne indítani...

45
RP/RPG kérések / Animba esés
« Dátum: 2013. április 17. - 07:26:46 »
Antonyo írta ezt egy elõzõ topicba, ránézésre mûködnie kell!
 
public for20hp(playerid)
{     
    new Float:health;
    GetPlayerHealth(playerid,health);
    if(health < 30)// ez azt jelenti ha az élet kisseb mint 30
    { //akkor
         ApplyAnimation(playerid,\"CRACK\",\"crckdeth2\",4.1,1,1,1,1,1); //nyomjon be egy ApplyAnimationt
    }
    return 1;
}
new pTimer[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
    pTimer[playerid] = SetTimerEx(\"for20hp\",1000,1,\"i\",playerid);
    return 1;
}
public OnPlayerDisconnect(playerid)
{
    KillTimer(pTimer[playerid]);
    return 1;
}

Oldalak: 1 2 [3] 4
SimplePortal 2.3.7 © 2008-2024, SimplePortal