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


Témák - mr_rich

Oldalak: 1 [2]
16
Leírások/Útmutatók / [Leírás]Egyszerû regisztrációs rendszer
« Dátum: 2012. Április 06. - 21:03:13 »
Sziasztok. Nemrég kezdtem el foglalkozni a y_ini include fájlal és egy Regisztrációs script tutorialt írtam róla.
Elõször is kezdjük az include hozzáadásával(.pwn fájl elejére):
 
#include <YSI\\y_ini>

 
Szükségünk lesz még: sscanf, zcmd és dudb include fájlokra is. (parancsok és jelszókhoz)
 

#include <dudb>
#include <sscanf2>
#include <zcmd>

 
Most definiáljuk a regisztráció és belépés dialogot.
 

#define DIALOG_REG 1 //regisztrációs dialog
#define DIALOG_BELEP 2 //belépés dialog

 
Definiáljuk a fájlok mentési/beolvasási helyét.
 

#define PATH \"/enmodom/%s.ini\" //scriptfiles/enmodom mappát hozzuk létre, és ide fogja menteni a regisztrált játékosok adatait

 
Egy enumba tároljuk el a változókat.
 

enum iKarakter
{
    pPass, //jelszó
    pCash, //pénzünk
    pKills, //ölések száma
    pDeaths, //halálok száma
    pScore //pontunk
}
new Jatekosinfo[MAX_PLAYERS][iKarakter];

 
Létrehozunk egy funkciót a játékos adatainak betöltésére:
 

forward Adattoltes_data(playerid,name[],value[]);
public Adattoltes_data(playerid,name[],value[])
{
    INI_Int(\"Password\",Jatekosinfo[playerid][pPass]);
    INI_Int(\"Cash\",Jatekosinfo[playerid][pCash]);
    INI_Int(\"Kills\",Jatekosinfo[playerid][pKills]);
    INI_Int(\"Deaths\",Jatekosinfo[playerid][pDeaths]);
    INI_Int(\"Score\",Jatekosinfo[playerid][pScore]);
    return 1;
}

 
Hozzunk létre egy sima stock funkciót:
 

stock Jatekosadatok(playerid)
{
new string[128],jatekosnev[MAX_PLAYER_NAME]; //létre hozunk egy szövegtárolót és a játékos nevének is egy tárolót
GetPlayerName(playerid,jatekosnev,sizeof(jatekosnev)); //lekérdezzük a játékos nevét
format(string,sizeof(string),PATH,jatekosnev); //megformáljuk az .ini fájl nevét
return string;
}

 
Most megnézzük, ha a játékos csatlakozik, regisztrálva van-e vagy most kell neki.
 

public OnPlayerConnect(playerid)
{
    if(fexist(Jatekosadatok(playerid)))//\"fexist\" funkciót használjuk a fájl keresésére, hogy regisztrálva van e már a játékos aki csatlakozott.
    {
        INI_ParseFile(Jatekosadatok(playerid), \"Adattoltes_%s\", .bExtra = true, .extra = playerid);
        ShowPlayerDialog(playerid, DIALOG_BELEP, DIALOG_STYLE_INPUT,\"Bejelentkezés\",\"Írd be a jelszód a belépéshez\",\"Belép\",\"Bezár\");
    }
    else//ha nincs regisztrálva
    {
        ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT,\"Regisztráció folyamatban\",\"Írj be egy jelszót a regisztrációhoz!\",\"Regisztrálás\",\"Bezár\");
    }
    return 1;
}

 
Kialakítjuk a dialogokat:
 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REG:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT, \"Regisztráció folyamatban\",\"Helytelen jelszót írtál be.\\nÍrj be egy jelszót a regisztrációhoz\",\"Regisztrálás\",\"Bezár\");
                new INI:File = INI_Open(Jatekosadatok(playerid));//megnyitjuk a játékos fájlját.
                INI_SetTag(File,\"data\");//fájl elõtagát állíthatjuk be
                INI_WriteInt(File,\"Password\",udb_hash(inputtext)); //jelszót elmentjük
                INI_WriteInt(File,\"Cash\",0); //Pénz beállítás
                INI_WriteInt(File,\"Kills\",0); //Ölések száma
                INI_WriteInt(File,\"Deaths\",0);//Halálozások száma
        INI_WriteInt(File,\"Score\",0);//Pont száma
                INI_Close(File);
                Jatekosinfo[playerid][pCash]=10000; //Megadjuk a kezdõpénzt
            }
        }
        case DIALOG_BELEP:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == Jatekosinfo[playerid][pPass])//Ha a beírt jelszó egyezik a fájlban tároltéval.
                {
                    INI_ParseFile(Jatekosadatok(playerid), \"Adattoltes_%s\", .bExtra = true, .extra = playerid); //betöltjük a játékos adatait a fájlból.
                }
                else //ha nem egyezik a jelszó
                {
                    ShowPlayerDialog(playerid, DIALOG_BELEP, DIALOG_STYLE_INPUT,\"Bejelentkezés\",\"Helytelen jelszó.\\nÍrd be a jelszód a belépéshez.\",\"Belép\",\"Bezár\");
                }
                return 1;
            }
        }
    }
    return 1;
}

 
Most mentsük el az adatokat, ha a játékos kilép:
 

public OnPlayerDisconnect(playerid, reason)
{
    new INI:File = INI_Open(Jatekosadatok(playerid));
    INI_SetTag(File,\"data\");
    INI_WriteInt(File,\"Cash\",Jatekosinfo[playerid][pCash]);
    INI_WriteInt(File,\"Kills\",Jatekosinfo[playerid][pKills]);
    INI_WriteInt(File,\"Deaths\",Jatekosinfo[playerid][pDeaths]);
    INI_WriteInt(File,\"Score\",Jatekosinfo[playerid][pScore]);
    INI_Close(File);
    return 1;
}

 
Írjuk meg, hogy ha meghal a játékos vagy megöl valakit, akkor növelje a statisztikát
 

public OnPlayerDeath(playerid, killerid, reason)
{
    Jatekosinfo[killerid][pKills]++; //Ölések számát megnöveljük 1el
    Jatekosinfo[playerid][pDeaths]++;//Halálozások számát megnöveljük 1el
    return 1;
}

 
Pénz használata:
 

new Text:penzem; //Textdraw a pénznek

 
OnPlayerConnect-hez írjuk be a textdrawra vonatkozó funkciókat:
 

        penzem = TextDrawCreate(500,140,\"Cash: 0\");
TextDrawFont(penzem,3);
TextDrawLetterSize(penzem,0.2,1.9);
TextDrawColor(penzem,0x00FF00FF);
TextDrawSetOutline(penzem,true);
TextDrawSetProportional(penzem,true);
TextDrawSetShadow(penzem,1);

 
OnPlayerDisconnect-hez:
 

TextDrawDestroy(penzem);

 
Regisztráció és Belépés után adjuk hozzá a következõ módon:
 

SetTimerEx(\"cashupdate\",3500,true,\"i\",playerid); //elindítunk egy timert a pénz frissítésére 3,5mp-enként
TextDrawShowForPlayer(playerid, penzem); //megjelnítjük a textdrawot

 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REG:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT, \"Regisztráció folyamatban\",\"Helytelen jelszót írtál be.\\nÍrj be egy jelszót a regisztrációhoz\",\"Regisztrálás\",\"Bezár\");
                new INI:File = INI_Open(Jatekosadatok(playerid));//megnyitjuk a játékos fájlját.
                INI_SetTag(File,\"data\");//fájl elõtagát állíthatjuk be
                INI_WriteInt(File,\"Password\",udb_hash(inputtext)); //jelszót elmentjük
                INI_WriteInt(File,\"Cash\",0); //Pénzünk
                INI_WriteInt(File,\"Kills\",0); //Ölések száma
                INI_WriteInt(File,\"Deaths\",0);//Halálozások száma
           INI_WriteInt(File,\"Score\",0);//Pont száma
                INI_Close(File);
      Jatekosinfo[playerid][pCash]=10000;//kezdõpénzt adunk
                SetTimerEx(\"cashupdate\",3500,true,\"i\",playerid); //elindítunk egy timert a pénz frissítésére 3,5mp-enként
      TextDrawShowForPlayer(playerid, penzem); //megjelnítjük a textdrawot
            }
        }
        case DIALOG_BELEP:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == Jatekosinfo[playerid][pPass])//Ha a beírt jelszó egyezik a fájlban tároltéval.
                {
                    INI_ParseFile(Jatekosadatok(playerid), \"Adattoltes_%s\", .bExtra = true, .extra = playerid); //betöltjük a játékos adatait a fájlból.
                    SetTimerEx(\"cashupdate\",3500,true,\"i\",playerid); //elindítunk egy timert a pénz frissítésére 3,5mp-enként
         TextDrawShowForPlayer(playerid, penzem); //megjelnítjük a textdrawot
      }
                else //ha nem egyezik a jelszó
                {
                    ShowPlayerDialog(playerid, DIALOG_BELEP, DIALOG_STYLE_INPUT,\"Bejelentkezés\",\"Helytelen jelszó.\\nÍrd be a jelszód a belépéshez.\",\"Belép\",\"Bezár\");
                }
                return 1;
            }
        }
    }
    return 1;
}

 
//Pénzfrissítõ funkció
 
forward cashupdate(playerid);
public cashupdate(playerid)
{
new penzstring[40];//tároló a pénz kiírására
new enpenzem = Jatekosinfo[playerid][pCash];//változó a pénzünknek
format(penzstring,sizeof(penzstring),\"Cash: %d\",enpenzem); //megformázzuk a szöveget
TextDrawSetString(penzem,penzstring);
return 1;
}

 
Most pedig egy alap parancs, hogy megnézzük, hogy tudjuk kezelni a pénzünket.
 

CMD:fegyvert(playerid,params[])
{
new ammoam;//töltény változó
new gunid;//fegyver id-nek változó
if(sscanf(params,\"ii\",gunid,ammoam)) return SendClientMessage(playerid,0xAA3333AA,\"Használat: /fegyvert <fegyverid> <töltény>\");//ellenõrizzük, hogy jól írta be a parancsot
if((ammoam*35) > Jatekosinfo[playerid][pCash]) return SendClientMessage(playerid,0xAA3333AA,\"Nincs elég pénzed!\"); //ellenõrizzük van-e elég pénze (töltény 35Pénzbe kerül darabja)
GivePlayerWeapon(playerid,gunid,ammoam);//fegyvert adunk a játékosnak
Jatekosinfo[playerid][pCash]=Jatekosinfo[playerid][pCash]-(ammoam*35);//levonjuk a töltények árát
return 1;
}

 
Letöltés teljesbe: http://www.solidfiles.com/d/e979b7b1dd/

17
Készülõ munkák / [GM]Team Tournament
« Dátum: 2012. Április 04. - 22:37:21 »

Team Tournament 1.0
A Játék lényege
Adott 2 csapat, és a tagok feladata a csapatot nyerésre juttatni. Az a csapat nyer a játék végén, aki a legtöbb pontot gyüjtötte össze.
Pontokat a csomagok megtalálásával érhetik el a csapattagok. Szükséges megölni az ellenséget, hogy fejlõdjünk .
Minnél nagyobb Rankot érünk el annál nagyobb választék nyílik meg elõttünk. Fontos a gyõzelemhez a pénz.
Bõvebb leírás a mód elkészülte után.
Parancsok:
-Segitség: /help
-Szabályzat: /rules
-Stat: /stats
-Fegyver skill: /wskills
-Öngyilkosság: /kill
Játék Szabályzat:
-Tilos a teamkill(pont és pénz levonás jár érte)
-Tilos a Spawnkill
-Ezenkívül minden engedett, a lényeg a gyõzelem.
Játék helyszíne:
-Jelenleg ismeretlen
Egyéb:
-Regisztrációs rendszer
Folyamatban: 50%

18
Munkaerő keresése / Scripter társat keresek
« Dátum: 2012. Április 01. - 22:50:06 »
Sziasztok. Már elég jártas vagyok scriptelésben, magamtól tanulgattam tutorialok alapján, lehet néha nyersen fejezem ki magam egy egy script írása közben, ezért is lenne egy társra szükségem aki segít a hibákat javítani és optimizálni. Jelenleg egy Túlélõs-zombi módot irosgatok magamban, ami már lényegében kész, csak nem a legmegfelelõbben mûködik. Map is készül hozzá lassan de biztosan. Ha esetleg 1-2komolyabb scripter szeretne jelentkezni, írjon ide vagy PÜ. A mód jelenleg ~1400soros. Ha jelentkezni akarsz angol tudás fontos!

19
Segítségkérés / "Team" segitség
« Dátum: 2012. Március 29. - 21:43:01 »
Valaki tudna ötletet adni, hogy tudnám azt megoldani, ha valaki fellép a szerverre és lespawnol az adott team-ba, akkor a mód újra indulásáig abba a teamba marad, és ez akkor is fennállna, hogy ha kilép, de vissza is lép rögtön, akkor a kilépett teamid-t kapja. Remélem úgy ahogy érthetõ, mit szeretnék.

20
Segítségkérés / TimerEx hívás
« Dátum: 2012. Március 28. - 16:00:33 »
Hali.
Ha valaki tudja, hogyan tudnék egy SetTimerEx-et indítani a mód indulásakor, az adjon már egy kis útba igazítást, mert én nem tudtam rájönni. Köszi elõre is

21
SA-MP: Szerverfejlesztés / Verona mall központ
« Dátum: 2012. Március 27. - 22:28:10 »
Sziasztok!
Még januárba készítettem el ezt a Plaza mapot, de mivel sok mindenre nem tudom használni, ezért publikálom, hátha valakinek hasznára válik.
Készítõ: mr_rich
Objectek száma: kb 600
Teleport: Los Santosban található Mall
Elkészítési idõ: rengeteg idõ volt.
Letöltés: http://www.solidfiles.com/d/818f164aa9/
 

22
Segítségkérés / Gyors futás
« Dátum: 2012. Március 27. - 19:22:40 »
Sziasztok. Az lenne a problémám, hogy nem tudom, melyik animációval tudnám elérni, hogy a SPRINT gomb megnyomására gyorsabban fusson az ember. A szituáció: 2csapat és az egyik csapat tagjai gyorsabban sprintelnének a gombbal, míg a másik lassabban futna.
És szeretném még azt megkérdezni, hogy ez mûködõképes-e (ha közeledbe van valaki és megnyomod a gombot akk ad neki pénzt) nemtudom sajnos letesztelni
[pawn]
if (PRESSED(KEY_AIM))
{
new Float:pos[3];
new money;
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
for(new i=0; i<MAX_PLAYERS; i++)
{
   if(IsPlayerConnected(i))
   {
      if(IsPlayerInRangeOfPoint(i, 1.0,pos[0],pos[1],pos[2]))
      {
         GetPlayerMoney(i,money);
         SetPlayerMoney(i, money+100);
      }
   }
}
}[/pawn]

23
SA-MP: Szerverfejlesztés / Mafia HQ
« Dátum: 2012. Január 15. - 11:04:53 »
Egy pályázatra készítettem ezt a mapot, de mivel nem nyert, ezért publikálom, hátha kell valakinek.
Videó: http://www.youtube.com/watch?v=dyL-JO_LkXg
Teleport koordináta a házba: -2078.6000976563, 1373, 6.6999998092651
Teleport koordináta kintre: -2078.6000976563, 1373, 6.6999998092651
Objectek száma: kb 150
Készítõ: mr_rich
Object lista: http://solidfiles.com/d/3e8b5a3fb8/

24
Archívum / Los Santos Gang Death Game
« Dátum: 2011. November 09. - 14:34:38 »

Server Információk
Server neve: .:: Los Santos Gang Death Game ::. @ BBEHosting.hu
IP: BBEHosting.hu:7800
Max slot: 30
Weboldal/fórum: Hamarosan
Információk:
-A serveren team deathmatch mód fut, szintlépéssel tudsz fejlõdni, így ezáltal megnyitni új fegyvereket.
-3fajta minimisszió van(autólopás, 5 és 10Kill Rampage) melyekért XP pontot kapunk. A küldetések /job parancsal érhetõk el.
-A mód helyszíne Los Santos területe, hisz itt vannak az igazi bandaháborúk.
-Összesen 9 banda érhetõ még el, ezek pedig: Grove Street, Ballas, Vagos, Aztecas, Rendõrség, Sztárok, Gazdagok, Motorosok és a Gyorséttermisek.
-Bandaterületeken élet és páncél pickupok.
Parancsok:
Szabályzat: /rules
Segitség: /help
Arckendõ vásárlás: /bandanas
Missziók: /job
Stat: /stats
Üzenet küldés: /pm
Fegyver menü: /ws
Légibázis: /ab
DM raktár: /wh
Admin Segitség: /ah
Jelenleg még teszt alatt fut a server, hamarosan ínyenc újítások kerülnek a módba.
Admin felvétel: további információ majd a honlapon.
Scripter felvétel: Van.

25
Készülõ munkák / [GM] Gang Death Game (frissítve)
« Dátum: 2011. Október 25. - 18:47:24 »
Gang Death Game
 
A mód team deathmatch alapon fog mûködni, annyi apró változással, hogy lehetõség lesz szintet lépni. Los Santos utcáin fognak zajlani a harcok. Utcán találhatunk egy telefont Ganton közelében, ahonnan feltudunk venni 3 fajta missziót( ez még lehet bõvülni fog), a 3 misszió: Autólopás, 5Kill Rampage, 10Kill Rampage, és ezekért ugyanúgy XP-t kapunk, ami elengedhetetlen a fejlõdéshez. Xp-t még gyilkolással tudunk szerezni, nem mindegy, hogy kisebb vagy nagyobb szintüt ölünk meg, hisz az XP vagy magasabb lesz ilyenkor vagy alacsonyabb, szinttõl függ. Fegyvervásárlás szinthez kötve, ugyanígy a skin csere is, minnél nagyobb a szintünk annál jobb dolgot tudunk megnyitni(igaz a fegyverek csak 10. szintig vannak, hisz a max elérhetõ szint az 99 lesz). Utcai harcokról nem maradhat el a bandai hovatartozásunkat jelölõ arckendõ is. Lehetõségünk lesz venni különféle \"bandana\"-kat. A mód még folyamatos frissitésre, javításra, szerkesztésre szorul.
 
Bandák:
 
-GSF
-Ballas
-Vagos
-Rendõrség
Fejlesztés alatt:
-Aztecas
-Bikers
-Hobok
-Gazdagok
-Munkások
 
Elõkészületben:
 
-Élet, páncél pickupok a banda HQ-kon
-Terület foglalás XP-ért
Még bõvülni fog a mód a továbbiakban

26
Segítségkérés / TextDraw visszaszámoló
« Dátum: 2011. Szeptember 04. - 02:44:56 »
Hali!
Készítettem a versenyhez egy textdraw visszaszámolót, csak az a gond ha megnyerem a versenyt akkor nem restartol ujra a számláló hanem ha új versenyre megyek, az elõzõnek mért utolsó idõpontól kezdi a számlálást. Ha valaki tud segitsen. Köszi!
Itt lesz a kód:
[pawn]new GameMinutes =1;
new GameSeconds =20;
new GameTimer;
new GameOver;
new Text:Textdraw0;[/pawn]
[pawn]public GameTime()
{
    if(GameSeconds || GameMinutes)
    {
        GameSeconds--;
        if(GameSeconds <= -1)
        {
            GameMinutes--;
            GameSeconds=59;
        }
        new TimeString[14];
        format(TimeString,sizeof(TimeString),\"%02d:%02d\",GameMinutes,GameSeconds);
        TextDrawSetString(Textdraw0,TimeString);
    }
    return 1;
}[/pawn]
[pawn]public OnPlayerEnterDynamicRaceCP(playerid, checkpointid)
{
switch(Racer[playerid])
    {
         case 1:
         {
              Textdraw0 = TextDrawCreate(86.000000,427.000000,\"1:20\");
             TextDrawAlignment(Textdraw0,2);
            TextDrawBackgroundColor(Textdraw0,0x000000ff);
            TextDrawFont(Textdraw0,3);
            TextDrawLetterSize(Textdraw0,0.499999,2.000000);
            TextDrawColor(Textdraw0,0xffffffff);
            TextDrawSetOutline(Textdraw0,1);
             TextDrawSetProportional(Textdraw0,1);
            TextDrawSetShadow(Textdraw0,1);
             TextDrawShowForPlayer(playerid,Textdraw0);
             GameTimer = SetTimer(\"GameTime\",1000,1);
        GameOver = SetTimerEx(\"GameO\",80000,false,\"i\",checkpointid);
          }
    }
return 1;
}[/pawn]
[pawn]forward GameO(playerid,checkpointid);
public GameO(playerid,checkpointid)
{
    KillTimer(GameTimer);
    KillTimer(GameOver);
    TextDrawDestroy(Textdraw0);
}[/pawn]

27
Segítségkérés / Gondok! NPC és racecheckpoint
« Dátum: 2011. Augusztus 22. - 18:30:27 »
Sziasztok!
Lenne 2dolog amit nem tudok megoldani.
1, NPC ha lespawnol a serveren akkor nem a recordba felvett skinnel spawnol hanem ami a GameModeInitbe van megadva elsõ AddplayerClass, ha valaki tud ebbe segíteni írja le.
2, Van egy elkészitett versenyem, és idõ alatt kell teljesíteni, de ha lejár az idõ a racecheckpoint megmarad és nem tûnik el.
itt a kód ha ez segit:
[pawn]GameOver = SetTimer(\"GameO\",80000,false);
forward GameO(playerid,checkpointid);
public GameO(playerid,checkpointid)
{
    SendClientMessage(playerid,COLOR_RED, \"A versenyt elbuktad!\");
    DestroyDynamicRaceCP(checkpointid);
    KillTimer(GameOver);
}[/pawn]
Elõre is köszi.

28
Segítségkérés / Random spawnra CP
« Dátum: 2011. Augusztus 12. - 13:02:02 »
Sziasztok!
Én még új vagyok a fórumon, de jól jönne a segítségetek.
Problémám az lenne, hogy készítettem egy random autó spawn parancsot, és az kellene, hogy ha lespawnol a kocsi, akkor a koordinátájára létrehozzon egy CP-t. Én nem tudom, hogy kezdhetnék bele. Remélem tud valaki segíteni :) .

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