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

Oldalak: [1] 2 3
1
Archívum / Small Town Roleplay
« Dátum: 2013. Augusztus 17. - 12:45:01 »
Megkérném a Fórum moderátorokat, hogy ne töröljék a témát. Folyamatos módosítás alatt van!

Köszönöm.

Képek feltöltés alatt
Sziasztok!

Rég hallhattatok felõlem. Egyrészt azért, mert elég sok dolgom volt, másrészt azért, mert kis ideig hanyagoltam a San Andreas Multiplayert.


De ez nem az én bemutatkozásom, hanem egy feltörõ GF-é. Így nem is húznám az idõtöket.

Annak ellenére, hogy még ki sem volt írva, máris 20/60-on vagyunk átlagon :)
Staff - Avagy az Adminisztrátorok.
KazZi - Scripter, Tulajdonos.
Póóliii - Tulajdonos
Kara - Szerény személyem. Kisegítõ scripter, Adminisztrátor.
Réka - Adminisztrátor
Cinti - Adminisztrátor
GYIK.
A szerver, illetve egyben a város neve
Small Town Roleplay.

Igen, sokszor használták, sokszor be is mocskolták ezt a nevet. De itt az idõ pontot rakni rá. Lehet ilyen névvel is tökéletes szervert készíteni.

Mi? Roleplay? WTF? Hogy lehet ez, ha GF szerver?!
A GF is a szerepjáték egyik variációja a SA:MP-ban.

Nem vesszük halál komolyan a szabályokat, elõfordulnak bandák, és persze picit magasabb összegért Tuning is az autódba.

Na. Bandák, Tuning, biztos ott a SWAT meg az APEH, meg az EPV meg a TBC meg a THC...
Ne becsüld le Sokszor inkább a közösség alkotja a szervert, nem a mód.

Apropó, nem. Nincsen SWAT..:)

És? Az ilyen szerverek tele vannak nonosokkal, mert nincs komolyan véve a szabály, és amúgy is, meg egyébként is...
Az, hogy lágyabban van véve, nem azt jelenti, hogy nincs szabály.
Amúgy meg a mód biztos valami edit sz.r, amiben átírtátok a dolgokat...
Szó sem volt róla, hogy ez egy egyedi mód. Átírt Defensive RPG mód.
Az egy bughalmaz, én oda nem megyek
Hol KazZi és Én tevékenykedünk. Ott bug lábon nem marad *hõsies nézés*
---------------
Szóval, akkor egy kisebb bemutatása a szervernek.
- A Szerver Bayside-ban játszódik.
- Tökéletesen mûködõ Autórendszer.
- Tökéletesen mûködõ Házrendszer
- Kezdetleges, de annál inkább mûködõ \"kattintós\" inventory rendszer\"

- Tökéletes fegyverrendszer.

- Adminnév rendszer
Bayside - a megfelelõ hely.
- Raktárak, viláítótornyok, rengeteg ház, illetve hotel/motel.
Az Autórendszerrõl röviden
- Nem, nem lehet Infernust venni.
- Nem, a megahiperszuperüberdrága autókat nem lehet kapni.
- Igen, az autóknak reális árai vannak. (A Szerveren lévõ pénzkereséshez képest)
- Az autót parancsokkal tudod vezérelni. Ergo, be tudod zárni, csomagtartót nyitni, zárni... Elég szép darab.
- Beindítás: /motor
- Ha kiszállsz NEM respawnolódik. A Sérülések megmaradnak. a szerelõknek is van munkája.
- A Tuning kimerül a Nitróban és a Hidraulikában. Nitró illegális, és drága mint a bûn, a Hidraulika legális... És...  Az is drága mint a bûn..:)
Házrendszerrõl röviden
- A Házak drágák, a motelek olcsóbbak.
- Az árak a keresethez képest reálisak.
- Paranccsal nyithatóak, és zárhatóak.
- Ha nyitva van, bárki ki-be járkálhat.
- Ha zárva van, akkor nem enged se ki, se be(senyõ)
- Forgó pickup jelzi a házat. a Pickup NEM tûnik el, ha belemész.
- Az \"F\" betû használatával léphetsz be házadba. (Ugyanígy jöhetsz ki)
Fegyverrendszer
- A Fszerveren csupán háromféle fegyver található meg. ( Baseball ütõ, Desert Eagle, 9mm(colt) )
  ezzel is egy kicsit a roleplay felé törekedve
- Ha Baseball ütõvel eltalálnak, szédülni kezdesz.
- A fegyvereket fegyverkereskedõtõl, fegyverkészítõtõl vásárolhatod meg.
- Fegyverkésítõ/kereskedõ csak bandatag lehet, közülük se mindenki.
- A Fegyverek drágák. Nagyon drágák. Nem rohangál minden ember fegyverrel.
- Ha a rendõr meglátja nálad, elkéri az engedélyedet, ha nincs, megbüntethet.
- Fegyverengedélyt illegálisan NEM lehet szerezni
Inventory rendszer
- A TAB gomb lenyomása után kétszer a nevedre kattintva hívhatod elõ.
- Itt lévõ dolgok:
                          - Iratok (Személyi, Jogosítvány, Fegyverengedély)
                          - Fegyverek (Desert, Colt, Baseball ütõ)
                          - Egyéb (Drogok, szendvicsek, stb..)
- Kereskedés: Duplakatt annak a nevére, akinek át szeretnél adni valamit, majd kikeresed az Inventoryból.
- Iratok felmutatása: Szintén, csak itt az iratokból keresed ki azt, amit az illetõ látni szeretne.
Adminnév rendszer
- Az adminisztrátorok a /adminnév parancs használatával saját \"nevet\" adhatnak maguknak.
  Ez látható ooc beszélgetés során, valamint asay-ba, vagy Globális OOC chatbe írás során, valamint kick/ban/aj használata során.
 
Frakciók
 
- A szerver Indulásakor a Leaderes munkák leadereire történõ jelentkezés lezárult.

- a Frakciók vezetõi pozícióját
NEMcsak az adminisztrátorok töltik be

- a Vezetõi pozícoókba csak olyan játékosokat helyeztünk, akikrõl lerí, hogy tisztában vannak a roleplay fogalmával, valamint


  bizonyították, hogy képesek vezetni egy frakciót.

Small Town Police Department
Avagy a szerveren a rendõri Frakció.

A Feladatuk a rend fenntartása, az illegalitás kiszûrése és megakadályozása, és a gonosz bácsik és nénik sittre vágása. *kacag*

Small Town Medical Department
Avagy a \"Mentõs\" munka. Ezt a Frakciót személyesen Én ellenõrzöm, és az én irányításom alatt áll. Talán a Mentõsség\' az, ahol a legtöbbet lehet rp-zni, és ahol a legtöbbet elõfordul a NonRP \"/gyógyít\" formája.. Ezt inkább nem részletezném. Ezen a szerveren ilyen nincs :)
Small Town Szerelõszolgálat
Avagy a \"Szerelõ\" állás. Természetesen megtalálható a gyûjtõjük. Mocskos nagy árakért extrákat szerelnek az autódba. Vigyázz, le ne bukj.
(A szerveren NINCS neon!)
Friday FM -101.1
Egy kis rövidtávú rádióadó, aminek a székhelye Small Town-ban van Nyereményjátékok, Események, Interjúk... Mind-mind az õ feladatuk :)
Adóhivatal
Jelenleg nem használjuk, nincs szerepe.
 
Illegális Frakciók:
 
- A boltban vehetõ adóvevõn kommunikálnak. Találd meg a frekvenciát, és lehallgathatod õket

- A városban székelnek, egy eldugott kis telepen. Vigyázz, ha bemész, az birtokháborítás, jogosan lõnek meg.

Don család
Elõkelõbb rétegbõl származnak, szicíliából. Van egy éttermük, ám jelenleg felújítás alatt.

Szeretnek mocskos dolgokat mûvelni az emberekkel. Néhanapján lehet látni õket az utcán, ahogy drogot árulnak.

Nem láttuk szükségét több illegális frakcióknak.
MÓDOSÍTÁS ALATT!

3
Általános / Kirúgás után, avagy ötleteket, mert idegbajt kapok!
« Dátum: 2012. Október 07. - 14:35:53 »
Sziasztok!
Mint azt sokan láttátok, a hamarosan nyíló szerverek között van õ is:
http://sampforum.hu/index.php?topic=28798.0
Ez egy iskolai RPG.
Leírást, stb. Olvashatjátok, meg az utolsó hozzászólásomat.
A Kérdés:
Mi a rákos rák legyen, ha kirúgnak?
Úgy kellene megoldani, hogy továbbra is részt tudj venni az RP szituációkban, de ne származzon belõle elõny.

5
Áthelyezzem?

6
Tanár Only / [piszk.] Alap Pickupok készítése és használata
« Dátum: 2012. Szeptember 27. - 14:58:42 »
Lecke anyaga: Alap Pickupok készítése és használata.


Sziasztok!
Ebben a leckében elmagyarázom, (és kis sikerrel megtanítom) hogy hogyan készítsünk el alap pickupokat, valamint hogyan érjünk el a pickup \"felvételekor\" hatást.
Elõször is, szükségünk lesz a függvénykönyvtárunkra...
 

#include <a_samp>

 
Létre kell hogy hozzunk egy változót. Ez nálam \"SajatPickup\" lesz.
 

new SajatPickup;

 
Oké, most szükségünk lesz az OnGameModeInit nevû funkcióra.
 

public OnGameModeInit()
{
}

 
Akkor most jön az, hogy:
 

SajatPickup = CreatePickup(modell, típus, X, Y, :Z, VirtuálisVilág);

 
A Modellbõl rengeteg van. Minden, amit valaha láttatok, forgó zöld és kék házak, dollárjelek, i betûk, drogjelek, kevlár, szivecske, bomba, lemezecske, mind mind pickup.
A Késõbbiek során én a 1242-t, azaz a Kevlárt fogom használni.
Típus: Itt is különbözõ típus van. Van ami eltûnik, ha valaki felveszi, és soha többet nem jön vissza. Van ami eltûnik, ha felveszik, de pár mp múlva megjelenik, olyan is van, ami nem tûnik el.
Sõt, egy pickup akár fel is robbanhat, ha olyan a típusa!
X, Y, Z: A Pickup koordinátái. Itt a bemutatóscriptben a 0;0;0;-t fogom használni.
VirtuálisVilág: Megadja, hogy a pickup melyik virtuális világban jelenjen meg. Ha ez az érték -1, akkor az összes Virtuális Világban megjelenik.
Szóval, akkor nézzünk egy ilyet:
 

public OnGameModeInit()
{
SajatPickup = CreatePickup(1242, 2, 0, 0, 0, -1); //
return 1;
}

 
Ezzel létrehoztunk egy Kevlár alakú pickupot, ami Blueberry farm közepén van, ha felveszik, eltûnik, de bizonyos idõ után újra megjelenik.
Attól függetlenül, hogy ez a pickup kevlár alakú, bármit tud csinálni.
Egy Kevlár alakú pickup is ugyanúgy tud életet tölteni, vagy minigunt adni, mint egy Kapszula alakú pickup Bannolni a szerverrõl.
Mindjárt megértitek, hogy mire is gondolok :)
Szóval, hogy is mûködik?
Már létezik a SajatPickup nevû pickup Blueberry farmon, de egyenlõre nem csinál semmit.
Szükségünk van az OnPlayerPickUpPickup funkcióra.
 

public OnPlayerPickUpPickup(playerid, pickupid)

 
Ennek a segítségével oldjuk meg, hogy a pickup csináljon valamit :)
Így:
 

public OnPlayerPickUpPickup(playerid, pickupid) //Funkció
{
if(pickupid == SajatPickup) //Ha a Pickup a SajatPickup
{
SetPlayerArmour(playerid, 100); //Feltölti a Kevit 100-ra
SendClientMessage(playerid, 0x0FFF, \"Kevi feltöltve! :)\"); //Dob egy Kliensüzenetet
}

 
Egyszerû, ugye? :)

7
Tanár Only / [piszk.] Alap Checkpointok készítése, és használata.
« Dátum: 2012. Szeptember 27. - 12:56:35 »
Lecke Tartalma: Alap Checkpointok készítése, és használata, valamint bepillantás az InRangeOfPoint függvény használatába.


Sziasztok!
Ebben a Leckében megmutatom, hogyan lehet egyszerûen, és gyorsan Checkpointokat (CP-ket) létrehozni.
A Checkpointokat felhasználhatod például a roleplay szerverekben az úgynevezett \"CP-s\" munkákhoz, mint az úttisztító, utcaseprõ, stb. De a Race, Drift, Stunt játékmódokban is sokszor fordulnak elõ.
Két fajtájuk van: Versenycp (\"Race Checkpoint\") illetve, a sima Normál Checkpoint.
A VersenyCP sokkal nagyobb. Race szervereken szokták használni.
Függvényileg csupán ennyi különbség van közöttük:
 

SetPlayerCheckpoint // Normál CP létrehozása
DisablePlayerCheckpoint //Normál CP eltávolítása
SetPlayerRaceCheckpoint // VersenyCP létrehozása
DisablePlayerRaceCheckpoint // VersenyCP eltávolítása

 
Szóval.
Azzal kezdünk mint mindig, a függvénykönyvtárunkkal.
Tehát:
 

#include     <a_samp>   //Függvénykönyvtár

 
Most, hogy bent van a függvénykönyvtár, és ismerjük a checkpoint-fajták létrehozását, és eltávolítását,  választhatunk, hogy melyiket csináljuk meg. Én most egy Normál Checkpointot csinálok, de ti természetesen csinálhatjátok a másikat.
Szóval, keressük meg az OnPlayerSpawn funkciót.
 

public OnPlayerSpawn(playerid)
{
}

 
Szóval, akkor hozzunk létre benne egy Normál Checkpointot.
 

public OnPlayerSpawn(playerid)
{
    SetPlayerCheckpoint(playerid, 0, 0, 0, 7);
    return 1;
}

 
Akkor nézzük, hogy ez mit is jelentett:
Elõször is, OnPlayerSpawn alatt van. Bárki aki spawnol (bármilyen indokkal, pl. Login, Halál, Teleport) annak megjelenik ez a CheckPoint.
Öt Paraméter van benne.
Az elsõ a játékos ID-je. Értelemszerû.
A Következõ három, az X, Y, és Z, koordináta, és végül a Checkpoint mérete.
Tehát:
 

SetPlayerCheckpoint(playerid, X, Y, Z, Méret);

 
Egyszóval a fentebb lévõ függvény a 0;0;0-ra dobta a CP-t, ami Blueberry farm közepe.
Szuper, elkészítettünk egy Checkpointot.
A Checkpointokat általában nem azért készítjük, hogy nézegessük õket, hanem van valami funkciójuk is.
Funkció.
 

public OnPlayerEnterCheckpoint(playerid)

 
Oké, tehát valaminek történnie kell, ha a játékos belép a checkpointba.
De honnan tudja a szerver, hogy melyik checkpointról beszélünk?
Itt jön képbe a fent leírt IsPlayerInRangeOfPoint függvény. Ne ijedjetek meg, egyszerûbb használni, mint azt hiszitek.
A Függvény segítségével egy adott koordináta köré gömb alakban sugarat vonhatunk, és megnézhetjük, hogy a játékos belépett-e a sugárba
A Sugár mértéke mindig legyen egyenlõ a Checkpoint méretével.
Én a Checkpoint méretét 7-re állítottam, ezért a sugarat is 7-re állítom.
Mondjuk adjunk neki egy sok szerver által használt \"Adminskint\"
Ennek 217 az id-je.
 

public OnPlayerEnterCheckpoint(playerid) //Funkció
{
    if(IsPlayerInRangeOfPoint(playerid, 7, 0, 0, 0)) //Megnézzük, hogy a checkpointban van-e. (Sugár)
    {
        SetPlayerSkin(playerid, 217); //217-es skint adunk neki
        DisablePlayerCheckpoint(playerid); //Eltûntetjük a Checkpointot
    }
    return 1;
}

 
Természetesen pénzt is kaphat.
Illetve elõtte megadhatjuk azt is, hogy csak akkor vegye fel a checkpointot, ha autóban ül, és sofõr.
De ezt majd egy késõbbi leckében. Elõször ezt emésszétek meg :)

8
Sziasztok!
Ezt a leckét rövidre fogom.
Sok scripter gondolkodott már azon, hogy hogyan lehet valamit bizonyos idõközönként csinálni.
Erre való a timer, azaz az idõzítõ.
Most Random, automatikus szerverüzenetek segítségével mutatom be röviden, a timer mûködési elvét.
Szükségünk van itt is, mint minden scriptben és módban, a függvénykönyvtárunkra.
 

#include <a_samp>

 
Innentõl kétféleképpen haladhatunk tovább:
- Vagy Kifejezzük(Definiáljuk) a mód elején az idõt
- Vagy A Késõbbiekben adjuk meg a függvényben.
Az, hogy ki hogy szokta csinálni, emberfüggõ, viszont, a zavarodás elkerülésének érdekében ajánlatos definiálni.
 

#define FELORA 1800000

 
És most mindenki néz, hogy Fél Óra az miben Egymillió-Nyolcszázezer? :)
Milliszekundumban.
Ugyanis a Timereknél az idõt Milliszekundumban kell megadni.
Utána lehet számolni: 1000 Milliszekundum az Egy Másodperc. Ha beszorozzuk hatvannal (Hogy egy perc legyen) Akkor Hatvanezer Milliszekundum egy perc. És ezt ha beszorozzuk 30-al, akkor Egymillió-Nyolcszázezer jön ki.
Egyébként, ha kerek perceket akarsz megadni, akkor mindíg Hatvanezerrel szorozz.
Így például egy óra az ennek a kétszerese, vagyis 60*60*1000 azaz 3600000 Milliszekundum :)
Szóval, ott tartottunk, hogy definiáltuk a 1800000-et a \"FELORA\"-ra.
Haladjunk tovább.
Létrehozunk egy Tömbváltozót
 

new SzerverUzenetek[5][] = {
    \"Érezd jól magad a sampforum.hu szerverén!\",
    \"Sampforum.hu - Carmageddon\",
    \"www.sampforum.hu\",
    \"Ha Cheatert látsz, jelentsd egy adminnak!\",
    \"A Jólneveltek nem Csalnak, a többieknek pedig tilos!\"
};

 
Fontos, hogy a Tömbváltozónál mindíg Nulláról kezdd a számolást. (0, 1, 2).
Jogosan merül fel a kérdés, hogy az elején tökéletesen látszik az [5], és ott öt szerverüzenet van.
Ha Nulláról kezdtem volna számolni, akkor négynek kellene ott lennie.
Ez azért van, mert saját magát is beleszámoltam, tehát van 5+1, azaz 6 változóm, és mivel a számolás nulláról indul, ezért csak 5 van kiírva.
Szóval, akkor most hozzá kell hogy adjuk a Timert, ami szépen félóránként random üzenetet fog kidobni a fenti öt közül.
 

forward UziMutat();

 
Mivel forwardoltunk, ezért nagy valószínûséggel egy funkció következik utána:
 

public UzikMutat() {
    new RandomUzik = random(sizeof(SzerverUzenetek));
    SendClientMessageToAll(0xFFFFFFAA, SzerverUzenetek[RandomUzik]);
}

 
Bõvebben:
 

public UzikMutat() {

 
Az elsõ sor megállapítja (deklarálja), hogy az elsõ sor egy funkció.
 

new RandomUzik = random(sizeof(SzerverUzenetek));

 
A Második Sorban létrehozunk egy változót, ami véletlenszerûen választ ki a SzerverUzenetek közül.
 

SendClientMessageToAll(0xFFFFFFAA, SzerverUzenetek[RandomUzik]);

 
A Harmadik sor elküldi mindenkinek a SendClientMessageToAll függvény segítségével a random kiválasztott üzenetet.
És végül, tegyük az OnGameModeInit alá így:
 

public OnGameModeInit() {
    SetTimer(\"UzikMutat\", FELORA, true);
    return 1;
}

 
Mikor elindul a mód, vele együtt indul a timer is.
Az UzikMutat funkciót, félóránként végrehajtja.
___________________
Megjegyzés: Az Elsõ verzió 2x ilyen hosszú volt..:)

9
PAWN gyakorlati tanfolyam / Második lecke - Bevezetés a Zcmd-be és az Sscanfba
« Dátum: 2012. Szeptember 27. - 09:18:43 »
Tanóra anyaga: Bevezetés a Zcmd-be és az Sscanf-ba
Szükséges Pluginok/Includeok: Zcmd parancsfeldolgozó és Y_Less sscanf2 pluginja, valamint az sscanf2 include.


Sziasztok!
Zcmd és Sscanf!
Egy kezdõ Scripternek ijesztõen hangozhat ez a két szavacska, pedig ha sikerül megérteni õket, pofonegyszerû tud lenni :)
A Mód elejére felírjuk a szükséges Includeokat:
 

#include  <a_samp>     // A függvénykönyvtárunk, ami mindenhova kötelezõ
#include  <zcmd>     // A \"zcmd\" amely tartalmazza a parancsfeldolgozót
#include <sscanf2>   // És az sscanf2.

 
Következõ lépés -> Parancsok létrehozása Zcmd-ben.
Többféleképpen lehet:
 

CMD:
COMMAND:
command:

 
Szóval, akkor nézzük meg egy parancs elejét.
Én mindenhol a \"CMD\" Rövidítést használom, de ti természetesen használhattok mást is! :)
 

CMD:parancs(playerid, params[])

 
Egyszerûbben néz ki, mint az strcmp, és egyszerûbb is.
Különszedve a részei:
\"CMD\" -> Ezzel fejezzük ki a pawnonak, hogy Zcmd-t használunk.
\"parancs\" -> A Parancs neve. A Játékos ezt fogja beírni \"per\" jellel. (/parancs)
\"playerid\" -> A Játékos, aki beírta a parancsot.
\"params[]\" -> A Parancs paraméterei
Szóval, akkor csináljunk egy parancsot, és kezdjünk vele bele az sscanf rejtelmeibe is :)
 

CMD:kick(playerid, params[])
{
    new aldozat, indok[24], string[125], JatekosNev[24], AdminNev[24]; // Létrehozzuk a változókat
    if(IsPlayerAdmin(playerid)) // Megkérdezzük, hogy Rcon admin-e.
    {
        if(sscanf(params, \"us[24]\", aldozat, indok)) return SendClientMessage(playerid,0x0FFF,\"Használat: /kick id indok\");
        else if(aldozat == INVALID_PLAYER_ID) return SendClientMessage(playerid,0x0FFF,\"Nem Online\");
        else
        {
            GetPlayerName(aldozat, JatekosNev, sizeof(JatekosNev));
            GetPlayerName(playerid, AdminNev, sizeof(AdminNev));
            format(string, sizeof(string), \"%s kirúgta a %s(%d) nevû játékost. Indok: %s\", AdminNev, JatekosNev, aldozat, indok);
            SendClientMessageToAll(0x0FFF, string);
            Kick(aldozat); // Kickeljük az áldozatot
        }
    }
    else return SendClientMessage(playerid, 0x0FFF, \"Nem használhatod\"); // Ha nem Rcon admin, nem engedjük használni
    return 1;
}

 
Bõvebben:
aldozat: A Parancs egyik paramétere
indok: Szintén a parancs egyik paramétere
string: Létrehozunk egy stringet, amit a késõbbiekben használtunk a parancs során
JatekosNev: A bannolt játékos neve
AdminNev: A Bannoló admin neve
Nézzük ezt a sort:
 

if(sscanf(params, \"us[24]\", aldozat, indok)) return SendClientMessage(playerid,0x0FFF,\"Használat: /kick id indok\");

 
Ebben a részben sscanfot használunk, hogy kifejtsük a parancs paramétereit.
Az \"u\" kifejezi, hogy a parancsban szereplõ elsõ paraméter egy Játékos neve, vagy id-je lesz.
A Következõ karakter az \"s\". Kifejezi, hogy egy String következik.
Ezek után változókat láthattok. Késõbb láthattok egy visszatérést. Ha a Paraméterek nem lettek megadva, vagy hibásan lettek megadva, akkor ez lép érvénybe.
Ennyi lett volna. Ugye nem is volt nehéz? :)

10
Tanár Only / [piszk.] [SetPlayerHealth/Armour] Istenmód készítése
« Dátum: 2012. Szeptember 27. - 08:28:59 »
\"Tanóra\" anyaga: SetPlayerHealth és SetPlayerArmour függvény.
Amire szükségünk van: ZCMD parancsfeldolgozó
Sziasztok!
Ebben a Tanórában bemutatom, hogy hogyan kell Istenmódot hozzáadni.
Ezzel együtt megtanítalak titeket a SetPlayerHealth illetve a SetPlayerArmour függvények alkalmazására is :)
Kezdetben adjunk hozzá két színt, az elsõ leckében megtanult módon:
 

#define SZIN_PIROS   0xFF0000FF
#define SZIN_ZOLD    0x00FF00FF

 
Utána létre kell hogy hozzunk egy változót:
 

new Isten[MAX_PLAYERS] = 0;

 
És hozzuk létre a parancsot:
 

CMD:god(playerid, params[])
{
        if (Isten[playerid] == 0) // Ha nincs Istenmódba
        {
            SendClientMessage(playerid, COLOR_RED, \"Bekapcsoltad az Istenmódot!\");
            SetPlayerHealth(playerid, 9999999); // Az életét (hp) 9999999-re állítja
            SetPlayerArmour(playerid, 9999999); // A Kevlárt (páncél) szintén annyira.
            Isten[playerid] = 1; // A Játékos Istenmódba lépett, a változó 1-re módosul.
            return 1;
        }
        else if(Isten[playerid] == 1) // Ellenkezõ esetben, ha a játékos Istenmódban van
        {
            SendClientMessage(playerid, COLOR_GREEN, \"Kikapcsoltad az Istenmódot!\");
            Isten[playerid] = 0; // A Játékos Kilépett az Istenmódból, a változó ismét 0-ra módosul
            SetPlayerArmour(playerid, 0); // A Játékos kevlárját lenullázzuk
            SetPlayerHealth(playerid, 100); // Az életét visszaállítjuk 100-ra
            }
            return 1;

 
A Két függvény alkalmazása a GameMódokban általában:
SetPlayerHealth
Szinte minden játékmódban elõfordul, a /heal, illetve a /kill parancs szíve, hiszen míg az egyik 100-ra, (vagy egy adott értékre állítja) a másik lenullázza az életet.
Fent már láttuk, hogy hogyan lehet egy adott értékre beállítani az életet.
SetPlayerArmour
Sok Roleplay szerver elõszeretettel használja, például a rendõrségnél.
Ha az illetõ beír egy parancsot, vagy beleáll egy pickupba, akkor a Kevlár feltöltõdik :)
Persze elõfordul DM, illetve Fun szervereken is :)

11
PAWN gyakorlati tanfolyam / [Különóra] Strcmp és mûködése
« Dátum: 2012. Szeptember 27. - 08:05:19 »
Sziasztok!
Valaki már az elsõ leckénél felvetette, hogy miért Zcmd-t használunk.
Rögtön érkezett rá a válasz is. Gyors, egyszerû.
Úgy gondoltam, hogy így, egyfajta a tananyaghoz nem, vagy csak alig-alig kapcsolódó leckében bemutatnám az strcmp mûködését.
1.) Mi az Stcmp jelentése?
Az Strcmp jelentése \"StringCompare\"
2.) Mit csinál az Strcmp?
Két Stringet hasonlít össze egymással.
3.) Hogyan mûködik?
Az Strcmp egyesével összehasonlítja a két stringben megegyezõ karaktereket.
Tehát, ha össze akarod hasonlítani a \"Szia\" és a \"Szia\" stringet, (Ami ugyan az) akkor az Strcmp ezt fogja csinálni:
Kiveszi az elsõbõl az \"S\" Karaktert, és összehasonlítja a másik Stringben lévõ \"S\" karakterrel.
A Karakterek megegyeznek. Mindezt addig csinálja, amíg az egyik stringben kevesebb karakter lesz, mint a másik, vagy a két karakter nem fog megegyezni.
Tehát:
Ha egy \"Szia\" és egy \"Sziamia\" stringet hasonlítunk össze, akkor õ az elsõ a-ig jut.
Az Strcmp-nél szintén meg lehet adni, hogy mit csináljon, ha a két string egyezik, és mit csináljon, ha nem.
Például:
 

if(strcmp(\"Szia\", \"Szia\") == 0)
{
    SendClientMessage(playerid, 0x0FFF, \"Ezt fogja elküldeni, ha a két string megegyezik\");
}
else
{
    SendClientMessage(playerid, 0x0FFF, \"És ezt, ha nem egyezik meg, tehát különbözik\");
}

 
Persze, gondolom, hogy a kezdõ szerverüzemeltetõk csak a Parancsok létrehozására használják.
A Zcmd-vel ellentétben itt a parancsokat az OnPlayerCommandText alá kell írni.
 

public OnPlayerCommandText()
{
// Ide jöhetnek a parancsok
}

 
Az Strcmp nem csak a pawn-ban fordul elõ, hanem például a Javaban is! :)

12
Off Telep / Történelem. WTF?!
« Dátum: 2012. Szeptember 26. - 21:31:15 »
Mi is a Történelemtanárnõm mértékegysége?
Ja, megvan. MEGAKURV@ANYJA!
Ebbõl hétfõn dogát írunk...
AZ ÓKORI RÓMA
HÉTFÕN DOGA TANULNI! :PPP
Aedilis: a városi biztonságra ügyeltek, az ünnepi játékokat szervezték és felügyelték a középítkezéseket.
Ager privatus:magántulajdonú föld.
Ager publicus: közföld, a hódítások során szerzett földek 1/3-a Róma birtokába került.
Augur : madárjós, a madarak repülésébõl végezte a jóslást.
Centúria: katonai egység, század.
Cenzor : az embereket vagyoni osztályba soroló és a szenátus névjegyzékét összeállító magisztrátus. Feladata még az adók kivetése, államháztartás ellenõrzése, a vámok megszabása.
Cenzus: vagyoni kategória, az osztályba sorolás alapja.
Classis: vagyoni osztály, a lakosságot öt classisba sorolták, ami egyben a katonáskodás alapja is lett.
Cliens: a patrícius ok szolgálatában állók.
Collégium : azonos foglalkozásúak önsegélyezõ és adózó eyesülete, papi testület.
Colonia: a meghódított területeken római telep.
Colonus: szabad parasztbérlõ.
Comitia centuriata : vagyon s ennek megfelelõ ketonai beosztású népgyûlés (joga a választás és a hadügyek).
Comitia curiata: származás szerinti patrícius :népgyûlés .
Comitia tributa : kerületenkénti népgyûlés (joga a törvényhozás).
Consul : az állam élén álló fõtisztviselõ (kettõ). Feladataik: a szenátus és a népgyûlés összehívás a, ezek tárgyalásainak vezetése, a hozott határozatok végrehajtása, bíráskodás és hadvezéri szerep.
Curia: 10 nemzetség szervezete.
Curialisok: városi arisztokrácia.
Decurio: városi tanács testülete a csáazárkorban.
Diakonus: szolga, a presbiter e munkáját segíti.
Dictator : meghatározott idõre (fél év) teljhatalommal felruházott magistrátus.
Divide et impera : oszd meg és uralkodj (a római külpolitika alapelve), a legyõzött és meghódított népekkel eltérõõ tartalmú békét kötött, hogy azok inkább egymás ellen forduljanak, és ne foghassanak össze Róma ellen.
Dogma: megváltoztathatatlan tantétel.
Dominátus: nyílt császári hatalmi rend, a köztársaságkori intézmények már látszólag sem maradnak fenn, az államigazgatás a császári hivatalokban történik, a hadsereg a császárok magánhadseregévé vált.
Dominus: Úr,császár, teljes hatalommal rendelkezik.
Evangélium: \"örömhír\", a Biblia Jézusról szóló részei.
Família:nagycsalád.
Fibula : tû, amely a tógát fogta össze viselõje testén.
Géniusz: a család szelleme a római vallásban.
Gens: nemzetség.
Gladiátor : fegyverforgató, cirkuszi játékokon fellépõ rabszolga.
Imperátor : hadseregvezetõ, gyõztes hadvezér.
Italicus : Itália indoeurópai nyelvet beszélõ õslakosságának egyik csoportja, a letin, az umber és a szabell népek gyûjtõneve.
Katakomba: barlangrendszer, a rómaiak temetkezésére solgál, a korai keresztény gyülekezetek helye.
Kodifikálás: a törvények írásba foglalása és rendszerezése.
Lares: a termékenység szelleme a római vallásban.
Latifundium: rab szolgamunkán alapuló mezõgazdasági nagyüzem.
Latin jog: jog a vagyonszerzéshez, a római polgárokkal való törvényes házasságkötéshez. Rómába költözés esetén a teljes római polgárjog megszerzésének joga.
Legátus: alvezér a római hadseregben.
Légió: a legnagyobb katonai egység.
Libertinus : felszabadított, ám politikai jogokkal nem rendelkezõ rabszolga. A libertinus gyermeke szabad embernek számított.
Lictor : testõr, a királyok kíséretét látják el, a vesszõnyalábba dugott bárdot õk hordozták.
Limes : kiépített határõrvonal.
Lovagok : gazdag kereskedõk, kézmûvesek, politikai hatalommal nem rendelkeznek.
Matróna: a római családanya.
Mediolanumi ediktum: a kereszténység államvallássá nyilvánítása (313).
Messiás: megváltó.
Municípium: önkormányzattal rendelkezõ város.
Néppárt: a lovagok szervezõdése a reformok megvalósítása és a politikai hatalom megszerzése érdekében.
Néptribunus: vétójoggal rendelkezõ magistrátus, fõ feladatuk a plebejus ok érdekeinek védelme, személyük szent és sérthetetlen volt. Õk hívták össze a plebejus népgyûlést, és részt vettek a szenátus ülésein.
Niceai zsinat : elsõ egyetemes zsinat (325).
Nobilitás: vagyon szerinti osztály, a patrícius ok és a gazdag plebejus ok összeolvadásával kialakult társadalmi réteg.
Optimaták : \"legjobbak\", politikai hatalommal rendelkezõ gazdag földbirtokosok.
Panem et circenses: \"kenyeret és cirkuszt\", a római proletariátus elégedettlenségének mérséklésére, a zavargások megelõzésére szervezett ingyenes gabonaosztás és cirkuszi játékok.
Panetas: az élelmezés szelleme a római vallásban.
Pater familias : a családtagok felett teljhatalommal rendelkezõ római családfõ.
Patrícius : a római társadalom elõkelõi, földbirtokkal rendelkezõ és a hadseregben lovas katonai szolgálatot teljesítõ arisztok raták.
Patrocínium : oltalmazás, az adószedõk zaklatásai elõl a közeli földbirtokos oltalma alá helyezkedõ paraszt felajánlja földjét az urnak, aki azt nem fogadja el, de a védelemért terményhányadot követel.
Pax Romana : a római birodalom belsõ és külsõ békéje.
Plebejus : jogokkal nem rendelkezõ közrendû szabad, parasztok, kézmûvesek és kereskedõk.
Plebs: köznép, teljes joggal rendelkezik.
Pontifex maximus : fõpap.
Populus Romanus: Római Nép.
Praetor : magistratus, feladata a polgári és büntetõbíráskodás, valamint a városi rend fenntartása.
Praetoriánusok : császári testõrök.
Presbiter : a keresztény gyülekezet veztõje.
Princeps : Elsõ polgár, császár.
Principátus: a császárság burkolt formája.
Proconsul, propraetor: a provincia helytartója.
Proletariátus : nincstelenek, a plebejusok lesüllyedt rétege, fõleg alkalmi munkákból, ingyen gabonából éltek, idõnként polgárjogkat bocsátják áruba .
Proscriptió : a kivégzendõk listájának kifüggesztése.
Provincia: meghódított, alávetett tartomány.
Püspök : a keresztény gyülekezet vezetõje.
Qestor: az állami okmányok at õrizték, a hadsereg gazdasági ügyeit intézték és az államkincstárt kezelték.
Rex: király.
Római jog : felnõtt római férfiakra vonatkozik (eleinte). Tartalma: földhöz való jog, hivatalviselés joga, vagyonöröklési jog, házasság-, fellebbezés joga, népgyûléésen való részvétel és annak jogainak gyakorlása.
Szenátori rend: az optimaták politikai szervezõdése. Célja a politikai hatalom megtartása.
Szenátus : vének tanácsa, létszáma változó (300, 600, majd 900 fõ, Augustus 1200-ra emelte). Feladata az állami vagyon ellenõrzése, a külügyek irányítása, törvény elõkészítése, a népgyûlési határozatok jóváhagyása.
Terra sigillata: az alkotó nevével jelzett égetett cserépedény.
Tetrarchia: négyes császárság a IV. század elején.
Tribus : törzs, késõbb kerület.
Triumvirátus: hármas szövetség a hatalom megragadására.
Veteránus: kiszolgált, földet vagy pénzt kapott katona
Zsinat : az egyház tanácskozó, törvényalkotó, ünnepélyes keretek között megrendezett gyûlése.
Tetszik · Hozzászólok · Bejegyzés követése · 4 perce
Normális?...
Nem hogy külön iratná meg..

13
Tanár Only / [piszk.] Ötödik Lecke - Alap fájlmûvelet (log)
« Dátum: 2012. Szeptember 26. - 21:16:57 »
Lecke/Fejlesztés tartalma: Ismerkedés a fájlok, illetve mappák létrehozásával, egy log létrehozása
Szükséges Pluginok és Includek: ZCMD Parancsfeldolgozó
Sziasztok!
Az alábbi leckében az egyik alap fájlmûvelet az úgynevezett \"log\" készítését fogom bemutatni! :)
Készítsünk egy logot a bannolásról.
A Log tartalmazni fogja a bannolt játékos nevét, az admin nevét, és az indokot.
Elsõ lépésként forwardolnunk kell az adott dolgot.
így:
 

forward Bannok(string[]);

 
Spoiler for megjegyzés:
Ezt érdemes a Mód elejére írni. Én általában ilyen sorrendben szoktam:
- Include
- Változók
- Forwardok.
Most hozzá kell hogy adjuk a funkciót (public) is.
Ez így néz ki:
 

public Bannok(string[])

 
Minden funkciót forwardolni kell.
Ha egy funkció nincs forwardolva, akkor fordításkor (konvertálás) warningokat fogsz kapni.
Szóval, most leírok nektek ide néhány sort, alatta megtaláltok egy magyarázatot is :)
 

public Bannok(string[])
{
    new ujstr[128];
    format(ujstr, sizeof(ujstr), \"%s\\n\",string);
    new File:hFile;
    hFile = fopen(\"/Logok/bannok.log\", io_append);
    fwrite(hFile, ujstr);
    fclose(hFile);
}

 
Na, akkor nézzük:
 

new ujstr[128];
format(ujstr, sizeof(ujstr), \"%s\\n\",string);

 
Létrehoztunk egy Új Stringet, ami a fájlba fog írni nekünk.
A %s lesz ebben az esetben az adott sor. (Pistikét bannolta Janika. Indok: Juliska)
A \\n egy új sort nyit, így a következõ bejegyzés új sorba kerül.
Nem szeretnénk, ha összemosódna :)
Nézzük tovább:
 

new File:hFile;
    hFile = fopen(\"/Logok/bannok.log\", io_append);
    fwrite(hFile, ujstr);
    fclose(hFile);
   

 
Itt megcsináljuk a Scriptfiles mappába a \"Logok Mappát\" és azon belülre a bannok.log fájlt. :)
Minden létrehozott Mappa és Fájl, legyen az akármilyen log, a SCRIPTFILES mappába kerül!
Egyébként azon belül megváltoztathatod, pl. Pistikeszervere/bannok.log. Bármi.
Amint a fájl megnyílt, a szerver ezzel ír bele:
 

fwrite(hFile, ujstr);

 
Amikor az írásnak vége, lezárja.
 

fclose(hFile);

 
Utolsó simításként az esetleges /ban parancsunk a végére:
 

CMD:ban(playerid, params[])
{
        new aldozat, indok[ 128 ]; //Létrehozzuk a változókat
        if (sscanf(params, \"us[128]\", aldozat, indok))
        {
            SendClientMessage(playerid, 0x00FF, \"Helyes használat: /ban JátékosID Indok \"); // Ha nem megfelelõen adta meg
            return 1;
        }
        if (aldozat == INVALID_PLAYER_ID) // Ha az \"Áldozat\" nem online
        {
            SendClientMessage(playerid, 0xAA3333AA, \"Nem Online\"); // Ha az \"Áldozat\" nem online
            return 1;
        }
          new banstr[128], AdminNeve[24], BannoltNeve[24]; //Létrehozzuk a változókat
        GetPlayerName(playerid, AdminNeve, 24); // Lekérjük az admin nevét
        GetPlayerName(aldozat, BannoltNeve, 24); // Lekérjük a bannolt játékos nevét (Áldozat)
        format(banString, 128, \"%s Játékost bannolta: %s. Indok: %s.\", BannoltNeve, AdminNeve, Indok);
        BanLog(banString);
        Ban(toplayerid);
    }
    return 1;
}

14
Fórum Archívum (Témák/Fórumok) / Re:Társalgó
« Dátum: 2012. Szeptember 26. - 21:10:15 »
Logok készítése - elsõ verzió
Sziasztok!
Az alábbi leckében az egyik alap fájlmûvelet az úgynevezett \"log\" készítését fogom bemutatni! :)
Készítsünk egy logot a bannolásról.
A Log tartalmazni fogja a bannolt játékos nevét, az admin nevét, és az indokot.
Elsõ lépésként forwardolnunk kell az adott dolgot.
így:
 

forward Bannok(string[]);

 
Spoiler for megjegyzés:
Ezt érdemes a Mód elejére írni. Én általában ilyen sorrendben szoktam:
- Include
- Változók
- Forwardok.
Most hozzá kell hogy adjuk a funkciót (public) is.
Ez így néz ki:
 

public Bannok(string[])

 
Minden funkciót forwardolni kell.
Ha egy funkció nincs forwardolva, akkor fordításkor (konvertálás) warningokat fogsz kapni.
Szóval, most leírok nektek ide néhány sort, alatta megtaláltok egy magyarázatot is :)
 

public Bannok(string[])
{
    new ujstr[128];
    format(ujstr, sizeof(ujstr), \"%s\\n\",string);
    new File:hFile;
    hFile = fopen(\"/Logok/bannok.log\", io_append);
    fwrite(hFile, ujstr);
    fclose(hFile);
}

 
Na, akkor nézzük:
 

new ujstr[128];
format(ujstr, sizeof(entry), \"%s\\n\",string);

 
Létrehoztunk egy Új Stringet, ami a fájlba fog írni nekünk.
A %s lesz ebben az esetben az adott sor. (Pistikét bannolta Janika. Indok: Juliska)
A \\n egy új sort nyit, így a következõ bejegyzés új sorba kerül.
Nem szeretnénk, ha összemosódna :)
Nézzük tovább:
 

new File:hFile;
    hFile = fopen(\"/Logok/bannok.log\", io_append);
    fwrite(hFile, ujstr);
    fclose(hFile);
   

 
Itt megcsináljuk a Scriptfiles mappába a \"Logok Mappát\" és azon belülre a bannok.log fájlt. :)
Minden létrehozott Mappa és Fájl, legyen az akármilyen log, a SCRIPTFILES mappába kerül!
Egyébként azon belül megváltoztathatod, pl. Pistikeszervere/bannok.log. Bármi.
Amint a fájl megnyílt, a szerver ezzel ír bele:
 

fwrite(hFile, ujstr);

 
Amikor az írásnak vége, lezárja.
 

fclose(hFile);

 
Utolsó simításként az esetleges /ban parancsunk a végére:
 

CMD:ban(playerid, params[])
{
        new aldozat, indok[ 128 ]; //Létrehozzuk a változókat
        if (sscanf(params, \"us[128]\", aldozat, indok))
        {
            SendClientMessage(playerid, 0x00FF, \"Helyes használat: /ban JátékosID Indok \"); // Ha nem megfelelõen adta meg
            return 1;
        }
        if (aldozat == INVALID_PLAYER_ID) // Ha az \"Áldozat\" nem online
        {
            SendClientMessage(playerid, 0xAA3333AA, \"Nem Online\"); // Ha az \"Áldozat\" nem online
            return 1;
        }
          new banstr[128], AdminNeve[24], BannoltNeve[24]; //Létrehozzuk a változókat
        GetPlayerName(playerid, AdminNeve, 24); // Lekérjük az admin nevét
        GetPlayerName(aldozat, BannoltNeve, 24); // Lekérjük a bannolt játékos nevét (Áldozat)
        format(banString, 128, \"%s Játékost bannolta: %s. Indok: %s.\", BannoltNeve, AdminNeve, Indok);
        BanLog(banString);
        Ban(toplayerid);
    }
    return 1;
}

15
Stunt / Void - SSU
« Dátum: 2012. Szeptember 26. - 11:17:39 »
Ez õrülten jól meg lett csinálva!
 

Szerintetek?

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