Ü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 - _[G]M[K]_Sh1ft_

Oldalak: [1]
1
Fórum Archívum (Témák/Fórumok) / Re:Műszerfal
« Dátum: 2016. július 30. - 17:43:33 »
Tettem bele egykis pluszt is ha nem baj
\"width=500http://ledautos.uw.hu/images/benett_p406_01.jpg[/img]

2
Kérdések, Segítség / Külső merevlemez vásárlása
« Dátum: 2016. július 27. - 14:55:21 »
Sziasztok!
A segítségeteket vagyis a véleményeiteket szeretném kérni az alábbiban:
Jelenleg van egy linux alapú szerver-gépem amit igen intenzíven használatban van a nap 24 órájában, nem kis adatforgalommal. A belső tárolói lassan meg telnek, és már hely sincs hogy újat vegyek vele, pénzem meg hogy nagyobbat a régiek helyett. Arra gondoltam, hogy úgy is van rajta 3-4db USB 3.0-s port és vehetnék külső meghajtókat is, ebben szeretném hogy segítsetek.
Nos eddig Western Digital és ADATA meghajtókkal még nem volt problémám és most ezek üzemelnek belső tárolóként, ezért már ki is néztem 3 külső meghajtót csak nem tudok közülük választani. (Ha esetleg tudtok jobbat kérlek írjátok le azt is hogy miért (úgy értem akár márkán belül vagy más márka))
Árukereső összehasonlított termékeim ami közül választani szeretnék
Valami olyasmit keresek ami:
-bírja a terhelést!!!!!!!
(-(átviteli sebessége nagyobb mint 30-40MB/s))
-max 30.000ft/db
-500-1000GB (vagy több)
Köszönöm, hogy elolvastál! Ha esetleg lenne tapasztalatod/ötleted/véleményed szívesen várom! :D
(Ui.: Csakis kizárólag külső meghajtókban gondolkozom jelenleg)

3
Kérdések, Segítség / Matematikai feladvány
« Dátum: 2016. január 14. - 19:15:17 »
Sziasztok!
Minap ezzel a problémával szembesültem:
Egy tört számlálójához hozzáadok 3-at így az érték 1 lesz majd a számlálóból kivonok hetet és a nevezőhöz hozzáadok 2-t, így 1/5-t kapok. Melyik ez a szám?
Nos akárhogy akartam ezt megoldani sehogy se sikerült.
Gondolom nincs megoldása, de akkor miből jött ki neki az 1/5???! (Azt szeretném, hogy megerősítenétek-e benne, hogy nincs megoldása, vagy ha van mi.)

Dupla hozzászólás automatikusan összefûzve. ( 2016. január 14. - 21:30:50 )

Ben: 5/8 számlálójához +3 = 8/8 (az érték 1) számlálóból kivonok 6-ot = 2/8, majd nevezőhöz hozzáadok 2-t = 2/10 = 1/5[/quote]
*Valószínűleg 7 helyett 6ot kellett kivonni (elírás lehet)

4
SA-MP: Szerverfejlesztés / Játszott idő mentése
« Dátum: 2016. január 10. - 01:03:23 »
A scriptről:
-Menti a játszott időt (másodpercekben) dini segítségével.
-A scriptfiles mappában hozz létre egy users nevű mappát, és már nincs más dolgod, mint betölteni ezt.
-Egyszerű, rövid, hasznos, és még nem nagyon találkoztam ilyennel. Gondolom ez majd jól jöhet valakinek ezért megosztom veletek. Szerintem hasznosabb mint szórakozni egy timerrel. (Bár ha bírja a vasad...)
+Le tudod kérni a játszott idődet.
Parancsa: /jatszott_idom
Letöltés (<a href=\"http://pastebin.com/uF240VMz\">Pastebin</a>)
Letöltés (<a href=\"http://www.mediafire.com/download/gfohuk9o3e1687x/time.pwn\">.pwn</a>)
Letöltés (<a href=\"http://www.mediafire.com/download/3e6q5q969m1lda6/time.amx\">.amx</a>)
Forrás kódja:
 

#include <a_samp>
#include <dini>
#include <zcmd>
static ET[MAX_PLAYERS];
new PlayedTime[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
new filePath[64];
format(filePath,sizeof(filePath),\"users/%s.ini\", pName(playerid));
    if(!dini_Exists(filePath)) {
dini_Create(filePath);
PlayedTime[playerid] = 0;
} else {
    PlayedTime[playerid] = dini_Int(filePath,\"PTIS\");//PlayedTimeInSeconds
}
    ET[playerid] = GetTickCount();
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    new filePath[64];
format(filePath,sizeof(filePath),\"users/%s.ini\", pName(playerid));
    new interval = GetTickCountDifference(ET[playerid], GetTickCount());
interval = interval/1000;
PlayedTime[playerid] = PlayedTime[playerid]+floatround(interval);
dini_IntSet(filePath,\"PTIS\",PlayedTime[playerid]);
return 1;
}
CMD:jatszott_idom(playerid)
{
new interval = GetTickCountDifference(ET[playerid], GetTickCount());
interval = PlayedTime[playerid]+(interval/1000);
new minutes,seconds,hours;
minutes = interval / 60;
seconds = interval % 60;
hours = minutes / 60;
minutes = minutes % 60;
new str[128];
format(str,sizeof(str),\"Játszott idő: %d óra %d perc %d másodperc\",hours,minutes,seconds);
    SendClientMessage(playerid,-1,str);
return 1;
}
 
stock abs(int)
{
    if(int < 0)
return -int;
    return int;
}
stock intdiffabs(tick1, tick2)
{
    if(tick1 > tick2)
        return abs(tick1 - tick2);
    else
        return abs(tick2 - tick1);
}
stock GetTickCountDifference(a, b)
{
    if ((a < 0) && (b > 0))
    {
        new dist;
        dist = intdiffabs(a, b);
        if(dist > 2147483647)
            return intdiffabs(a - 2147483647, b - 2147483647);
        else
            return dist;
    }
    return intdiffabs(a, b);
}
stock pName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}

5
Segítségkérés / String mint változó?
« Dátum: 2015. december 22. - 20:18:34 »
Sziasztok! Azzal a problémámmal szeretnék a fórum közössége felé fordulni, hogy, bárhogy is szeretném nem tudom megoldani a következő kivitelezését:
 

for(new i = 1; i < NumberOfItems; i++)
{
    new condition[34]; format(condition,sizeof(condition),\"SuInfo[playerid][FireWall%i]\",i);
    switch(condition)////azt szeretném ha lefutáskor ez állna pl a condition helyén: SuInfo[playerid][FireWall35]
{

 
Ugyanis a következő hibát kapom: error 033: array must be indexed (variable \"-unknown-\")
a strval(condition); meg tudná-e oldani a problémám? (azért kérdezem, mert sajnos tesztelni nem tudok egy hosszú ideig ->(Köszönöm a megértést!))

6
Leírások/Útmutatók / Adatbázis kezelés SQL nyelven
« Dátum: 2015. október 30. - 17:21:20 »
Adatbázis kezelés SQL nyelven
 

Bevezető
 
 Az SQL (Structured Query Language - Strukturált Lekérdező Nyelv) relációs adatbázisok kezelésére alkalmas, szabványos lekérdező nyelv, amelynek fejlesztése az 1970-es években kezdődött az IBM keretein belül, igaz ekkor még SEQUEL-nek nevezték. (Structured English QUEry Language) Tehát az SQL nyelv adatbázisok kezelésére szolgál.
Egy relációs adatbázisban az adattárolás alapjait a táblák jelentik. Egy adatbázis általában több táblából áll. A táblák a logikailag összetartozó adatok sorokból és oszlopokból álló elrendezése. A táblák sorait adatrekordoknak, oszlopait rekordmezőknek nevezzük.
SQL-en belül vannak olyan műveletek melyek nem túl fontosak számunkra, amikkel táblákat tudunk létrehozni vagy törölni, mivel ezeket nem „kódokon” keresztül szoktuk csinálni, hanem a phpMyAdmin-ban vagy valamilyen hasonló grafikus felületű programban. A gyakran elvégzett műveletek túlnyomó részt az alábbi négy alapműveletre korlátozódnak:
-   SELECT: tábla sorainak beolvasása
-   INSERT: sorok beillesztése a táblába
-   UPDATE: tábla sorainak módosítása
-   DELETE: tábla sorainak törlése
Pár nyelvtani szabály:
   A nyelvben az utasításokat mindig pontosvessző választja el egymástól.
   Az olvashatóság és az eligazgatóság érdekében a kulcsszavakat általában nagybetűvel szokás írni, bár az utasítások értelmezésénél nem tesz különbséget. (kulcsszavak = pl: a fent említett select, insert, update, delete)
   A táblák és oszlopok neveit a biztonság érdekében rakjuk tick-ek közé (pl. `username`)! Hogy miért? Mert ha esetleg véletlenül egy kulcsszavat használunk oszlop vagy tábla névnek, akkor a tick-ek nélkül hibás lesz a kód. (` = tick = ALT GR + 7)
   A karakterláncokat aposztrófok közé kell írni. Ha egy karakterláncban aposztróf szerepel, azt ( \\ ) escape karakterrel (ALT GR + Q) írhatjuk bele. Pl: \\’ A számokat természetesen nem muszáj aposztróf közé írni.
 
Táblázatok kezelése
 
Mint említettem egy adatbázisban több táblát is létrehozhatunk pl: felhasználók, adminok, lányok, fiúk, diákok, osztályok, állatok, növények stb…
Vegyünk is alapul egy egyszerű példát! Mondjuk az alábbi tábla neve „versenyzok”
névneme   szuletesi_ev   azonositoja
Kiss Virag199912631
Nagy Mátéférfi199569069
Horváth Péter   férfi199644050
Szabó Emese199423145
Kala Pálférfi199723965
Bajuk Petra199978940

A SELECT utasítás
 
A SELECT utasítással a táblázatból válogathatunk ki adatokat pl:
 
SELECT nev FROM versenyzok;

 
Eredményül egy ún. eredménytáblát kapunk. Lásd:
                                                       
név
Kiss Virag
Nagy Máté
Horváth Péter
Szabó Emese
Kala Pál
Bajuk Petra
Ez az eredménytábla hasonlíthat az adattáblához, de csak ideiglenesen jött létre a lekérdezés lefutatásakor.
Használata: SELECT oszlop_nevek FROM tábla_neve;
Miért írtam, hogy oszlop nevek? Mert nem csak egy oszlopot kérdezhetünk le egyszerre, hanem többet is, amit vesszővel kell elválasztani
pl: SELECT nev, szuletesi_ev FROM versenyzok;
Az eredmény:
                                                                                   
névszuletesi_ev
Kiss Virag1999
Nagy Máté1995
Horváth Péter   1996
Szabó Emese1994
Kala Pál1997
Bajuk Petra1999
Ha netán az összes mező értékét szeretnénk kérdezni, akkor nem szükséges felsorolni az összes oszlop nevét, hanem elég, ha csak a * karaktert használjuk. Lásd:
 
SELECT * FROM versenyzok;

 
Ezzel a lekérdezéssel az összes „rekord” (6) tartalmát megtudtuk. Az eredménytáblánk most azonos az „alap” tábláéval.
 
Lekérdezés eredményének szűkítése(WHERE)
 
A WHERE kulcsszó után feltételeket adhatunk meg a sorokra vonatkozóan. Az eredménytáblába csak azok a sorok fognak bekerülni, amelyek teljesítik a feltételeket.
Ha például azt akarjuk, hogy akik 1998 után születtek azok kerülhessenek be eme szent táblázatba, akkor a feltétel: `szuletesi_ev` > 1998. Ahhoz, hogy összetettebb feltételeket tudjunk írni, nemsokára megismerkedünk a fontosabb operátorokkal.
Használata:
 
SELECT oszlop_nevek FROM tábla_neve WHERE oszlopra vonatkozó feltétel;

 
Jelen esetben a példánk:
 
SELECT nev FROM versenyzok WHERE szuletesi_ev > 1998;

 
Eredményül csak Kiss Virág és Bajuk Petra fog szerepelni
Példa(2):
 
SELECT nev FROM versenyzok WHERE szuletesi_ev = 1999;

 
Eredményül, most szintén csak Kiss Virág és Bajuk Petra neve fog szerepelni.
Példa(3):
 
SELECT nev FROM versenyzok WHERE neme = ’nő’;

 
Eredményül, most értelem szerűen csak azoknak a nevét fogja ki listázni akinek a neme nő.
!!FIGYELEM!!!
Ha szöveg alapján szeretnéd szűkíteni a keresésedet akkor használj aposztrófot! Mint a hármas példánál tettem.
 
Műveleti jelek/Operátorok a WHERE feltételben
 
A WHERE kulcsszó után feltételeket adhatunk meg a sorokra vonatkozóan.
                                                                                                                                   
MűveletLeírása
=egyenlő
<>nem egyenlő
<kisebb, mint ...
>nagyobb, mint ...
<=kisebb vagy egyenlő, mint ...
>=nagyobb vagy egyenlő, mint ...

LIKE

keresési minta alapján keres

A minta megadásánál használhatod a % karaktert, amely több karakter helyettesítésére szolgál. Egy karakter helyettesítésére a _ mintát használhatod.

Példa:
\'A%\' : A betűvel kezdődik a szöveg
\'%A\' : A betűvel végződik a szöveg
\'A%Z\' : A betűvel kezdődik és Z betűvel végződik a szöveg
\'%CIA%\' : minden olyan szöveg, amely tartalmazza a CIA karaktereket.
\'A_C\' : A betűvel kezdődik és C-vel végződik és 3 karakterből áll a szöveg

Például: SELECT nev FROM betegek WHERE szuletesi_hely LIKE \'G%\';
Eredmény: Kidobja neked az összes olyan beteg nevét, akiknek a születési helyük G-vel,kezdődik.

BETWEEN

egy keresési intervallumot adhatunk meg

Pl: SELECT nev FROM betegek WHERE szuletesi_ev BETWEEN 1950 and 2000;
Eredmény: Most szépen kidobja azoknak a betegeknek a nevét akik 1950 és 2000 közt születtek. Egyes rendszerekben az eredmény eltérő lehet!
MySQL-ben így néz ki: eredménytábla elemei = 1950 vagy nagyobb de nem lehet nagyobb mint 2000

IS NULL

mikor egy bizonyos mezőnek nincs értéke, tehát üres

Pl: SELECT nev FROM dolgozok WHERE szuletesi_ev IS NULL;
Eredmény: Ki adja azoknak a dolgozóknak a neveit, akiknél nincs megadva a születési év.

IS NOT NULL   

mikor egy bizonyos mezőnek van értéke, tehát nem üres

Pl: SELECT nev FROM dolgozok WHERE szuletesi_ev IS NOT NULL;
Eredmény: Ki adja azoknak a dolgozóknak a neveit, akiknél meg van adva a születési év.

A WHERE feltételek összekapcsolása
 
Emlékezzünk, hogy a WHERE kulcsszó után megadhattunk egy feltételt, amely alapján szűrtük az eredményhalmazt. Lásd:
 
SELECT nev FROM versenyzok WHERE szuletesi_ev = 1994;

 
Azonban e feltételeket össze is tudjuk kapcsolni különböző ún. logikai műveletekkel. Például AND (és), illetve OR (vagy).
 
Az OR (vagy) és AND (és) műveletek
 
Használatuk:
OR
 
SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve műveleti_jel érték OR oszlop_neve műveleti_jel érték;

 
AND
 
SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve műveleti_jel érték AND oszlop_neve műveleti_jel érték;

 
Példa (OR művelet)
 
SELECT * FROM versenyzok WHERE szuletesi_ev=1994 OR szuletesi_ev=1999;

 
Eredményül most megkaptuk azoknak a versenyzoknek az adatait akik 1994ben vagy 1999ben születtek.
Lásd:
nevneme   szuletesi_ev   azonositoja
Kiss Virág199912631
Szabó Emese   199423145
Bajuk Petra199978940
Példa (AND művelet 1)
 
SELECT * FROM versenyzok WHERE nev LIKE \'Kiss%\' AND szuletesi_ev >= 1990;

 
Eredményül most megkaptuk azoknak a versenyzoknek az adatait, akiknek a vezetéknevük (fogalmazzunk most így) Kiss-sel kezdődik és a születési évük 1990 vagy nagyobb. Ugye e szerint a táblázatunk most így nézne ki a gyakorlatban:
nevneme   szuletesi_ev   azonositoja
Kiss Virág   199912631
Hát igen elég szegényes minta táblát adtam meg. Sebaj ez lehetőséget ad egy kis ön ellenőrzésre/gyakorlásra. A feltételünk/kérésünk adott, nem változott.
Első kérdésem: Ha szerepelne a táblázatomban egy Kis Márk nevű versenyző, aki 1991ben született, akkor az szerepelhet-e az eredménytáblázatomban?


NEM. Miért? Mivel a LIKE ’Kiss%’ kifejezés azt jelenti, hogy a Kiss kifejezés után bármi állhat, de csak azután! A mi esetünkben a Kis Márk nevű versenyző egy s-sel írja a nevét, ami után egy szóköz áll, már itt buktuk a feltétel teljesülését, hiába teljesül az a feltételünk hogy a születési éve 1990 vagy nagyobb.
 
Második kérdésem: Ha szerepelne a táblázatomban egy Kissert József nevű versenyző, aki 1989ben született, akkor az szerepelhet-e az eredménytáblázatomban?


NEM. Miért? Nézzük csak a lájkos feltételünk teljesült, mert azt adtuk meg, hogy a Kiss után bármi lehet. Értelem szerűen akkor most a második feltételünk nem teljesült. Miért? Mert akárhogy számolom a 1989 nem nagyobb, mint 1990…
 
Harmadik kérdésem: Ha szerepelne a táblázatomban egy Kiss Ferenc nevű versenyző, aki 2005ben született, akkor az szerepelhet-e az eredménytáblázatomban?


IGEN. Miért? A \"lájkolós\" és a második feltételünk is teljesült.
 
Negyedik kérdésem: Ha a harmadik kérdésem teljesült akkor kinek vagy kiknek az adatait kaptuk meg?


Kiss Virág és Kiss Ferenc
 
Példa (AND művelet 2)
 
SELECT * FROM versenyzok WHERE azonositoja <> 69069 AND szuletesi_ev > 1994;

 
Eredményül most megkaptuk azoknak a versenyzőknek az adatait, akiknek az azonosítójuk nem egyenlő 69069-cel és születési évük nagyobb, mint 1994.
Lásd:
névneme   szuletesi_ev   azonositoja
Kiss Virag199912631
Horváth Péter   férfi199644050
Kala Pálférfi199723965
Bajuk Petra199978940
Most ha jól tudom kiesett Szabó Emese és Nagy Máté. Miért? Emese sajnos 1994ben született, ezért a második feltétel hibádzik. (mivel nagyobbnak kell lennie, mint 1994) Mátéval akkor most mi a helyzet? Rá pedig teljesült a második feltétel mert ő 1995ös, csak sajnos az a fránya első feltétel az mondja ki hogy az azonosító nem lehet 69069.
 
BETWEEN ... AND művelet
 
Ez ismerős már nem? „Műveleti jelek/Operátorok a WHERE feltételben” című résznél már találkozhattunk vele.
A BETWEEN … AND műveletet akkor használjuk, ha egy intervallum alapján akarjuk szűkíteni a feltételt.
Használata:
 
SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve BETWEEN érték1 AND érték2;

 
Példa (1)
 
SELECT * FROM versenyzok WHERE szuletesi_ev BETWEEN 1996 AND 1999;

 
Eredményünk:
névneme   szuletesi_ev   azonositoja
Kiss Virag199912631
Nagy Mátéférfi199569069
Horváth Péter   férfi199644050
Kala Pálférfi199723965
Bajuk Petra199978940
Példa (2)
Ez a művelet azonban nem csak számok esetén működik, akár kilistázhatjuk azon versenyzők nevét is, akik ábécésorrendben Bajuk Petra és Kiss Virág között helyezkednek el, a következő módon:
 
SELECT * FROM diakok WHERE nev BETWEEN \'Bajuk Petra\' AND \'Kiss Virág\';

 
Eredményünk:
névneme   szuletesi_ev   azonositoja
Kiss Virag199912631
Horváth Péter   férfi199644050
Kala Pálférfi199723965
Bajuk Petra199978940
(Vigyázzunk arra, - mint már felhívtam erre a figyelmet - hogy ez a funkció más-más eredményt adhat, az eltérő adatbázis kezelő rendszerekben. Van ahol csak a két érték között ad ki eredményt, valahol a két értéket is beleszámítja (azaz amivel/be most dolgozunk). És még más variációk is vannak)
Bár nem hiszem, hogy ez a probléma bárkit is veszélyeztetne, ugyanis mi mind értelmes lények vagyunk, és előbb gondolkodunk, aztán cselekszünk. Vagyis előbb tesztelünk, és csak utána nyomjuk élesbe, ha minden jó.
 
Az IN művelet
 
Az IN műveletet akkor használjuk, ha az alapján szeretnénk szűkíteni a keresésünket, hogy a mező értéke egy adott felsoroláshalmazba tartozik-e.
Használata
 
SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve IN (érték1,érték2,érték3, ...)

 
*Az érték lehet egy szöveg is illetve szám is. !Ne felejtsd el, hogy a szöveget aposztrófok közé kell rakni!
Nem tudom, hogy észrevetted a hasonlóságot, de majdnem olyan mint az OR művelet, csak itt több értéket is megadhatunk.
Példa
 
SELECT * FROM versenyzok WHERE szuletesi_ev IN (1996,1999);

 
Eredményül most megkaptuk azoknak a versenyzőknek az adatait akik 1996ban illetve 1999ben születtek.
Lásd:
                                                                               
nevneme    szuletesi_ev   azonositoja
Kiss Virág199912631
Horváth Péter   férfi199644050
Bajuk Petra199978940

A NOT feltétel
 
A NOT feltételt akkor használjuk, ha arra az eredménytáblára vagy halmazra van szükségünk, amelyt a feltétel tagadásával kapnánk.
Használata
 
SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve NOT művelet;

 
Példa
 
SELECT * FROM versenyzok WHERE szuletesi_ev NOT BETWEEN 1996 AND 2000;

 
Eredményül most megkaptuk azoknak a versenyzőnek az adatait akiknek a születési évük nem tehető 1996 és 2000 közé. Lásd:
névneme   szuletesi_ev   azonositoja
Nagy Mátéférfi199569069
Szabó Emese   199423145
Ha most bekavartalak volna azzal, hogy: \"születési évük nem tehető 1996 és 2000 közé\" és én mégis kihagytam Horváth Péter-t (aki 1996ban született), akkor most figyelj ide!
Először is, mint említettem a rendszer amivel dolgozunk MySQL alapú, ezért a BETWEEN ... AND művelete intervalluma zárt. (matematikai jele: [x;y] )
Ez azt jelenti, hogy az első érték és az utolsó érték is még beletartozik az intervallumunkba.
Tehát azok a versenyzők adatai nem szerepelhetnek az eredménytáblázatba akik 1996, 1997, 1998, 1999, 2000-ben születtek.
 
Az INSERT INTO utasítás
 
Az INSERT INTO utasítást akkor használjuk, ha egy meglévő táblához szeretnénk adatokat hozzáadni.
Használata
 
INSERT INTO tábla_neve (oszlop_neve1,oszlop_neve2,oszlop_neve3, ...) VALUES (érték1, érték2, ...);

 
Megjegyés: Ha mindenen mezőbe szeretnénk értékeket megadni, akkor nem szükséges felsorolni az összes oszlop nevét.
 
INSERT INTO tábla_neve VALUES (érték1, érték2, érték3, érték4, ...);

 
Példa (1)
Elvileg van nekünk egy \'versenyzok\' nevű táblánk, és mondjuk még csatlakozni szeretne 2 ember.
Adataik a következők:
Név: Molnár Zoltán
Neme: férfi
Születési év: 1999
Azonosítója: 81721
Név: Tóth Edina
Neme:
Születési év: 1997
Azonosítója: 92853
Rendben most ezeket az adatokat szépen felvisszük az adatbázisunkba és a megfelelő táblázatunkba.
 
INSERT INTO versenyzok (nev,neme,szuletesi_ev,azonositoja) VALUES (\'Molnár Zoltán\',\'férfi\',1999,81721);

 
A következő versenyző adatait vagy az előzőt is feltölthetjük a következő példa alapján, mivel az összes mező értékét megadtuk.
 
INSERT INTO versenyzok VALUES (\'Tóth Edina\',\'nő\',1997,92853);

 
Példa (2)
Mi van akkor, ha hiányzik egy adat? Nem kell pánikba esni, hiszen ettől még feltölthetjük az adatbázisba amit szeretnénk.
Lásd:
Név: Nagy Judit
Neme:
Azonosítója: 99921
Kódunk:
 
INSERT INTO versenyzok (nev,neme,azonositoja) VALUES (\'Nagy Judit\',\'nő\',99921);

 
Most a táblázatunk valalhogy így nézne ki:
névneme   szuletesi_ev   azonositoja
Kiss Virag199912631
Nagy Mátéférfi199569069
Horváth Péter   férfi199644050
Szabó Emese199423145
Kala Pálférfi199723965
Bajuk Petra199978940
Nagy Judit 99921

Az UPDATE utasítás
 
Az UPDATE utasítást akkor használjuk, ha szeretnénk módosítani a táblázatunk egyes rekordjainak a tartalmát.
Használata
 
UPDATE tábla_neve SET oszlop_neve1=új_érték1, oszlop_neve2=új_érték2, ... WHERE oszlop_neve=érték;

 
Példa
Ebben a példánkban most szeretnénk megadni Nagy Judit születési évét (amit nem sikerült megtudnunk az előzőekben)
 
UPDATE versenyzok SET szuletesi_ev=1996 WHERE azonositoja=99921;

 
Most a táblázatunk valalhogy így nézne ki:
névneme   szuletesi_ev   azonositoja
Kiss Virag199912631
Nagy Mátéférfi199569069
Horváth Péter   férfi199644050
Szabó Emese199423145
Kala Pálférfi199723965
Bajuk Petra199978940
Nagy Judit199699921
Az UPDATE utasítást akkor is használhatjuk, ha törölöni szeretnénk egy mező értékét.
Lásd:
 
UPDATE tábla_neve SET oszlop_neve = NULL WHERE oszlop_neve=érték

 
Amikre figyelni kell:
- Figyeljünk arra, ha a feltételünknek több rekord is megfelel, akkor a módosítás mindegyikken végrehajtódik.
- Figyeljünk arra, hogy mindig adjunk meg feltételt, mert ha nem akkor az egész oszlopnuk értékei megváltozhatnak.
 
A DELETE utasítás
 
A DELETE utasítást akkor használjuk, ha egy tábla tartalmát vagy rekordot/kat szeretnénk törölni.
Használata
 
DELETE FROM tábla_neve WHERE oszlop_nev = érték);

 
Megjegyés: Ha a tábla teljes tartalmát szeretnénk törölni akkor elég csak a következőeket használni:
 
DELETE FROM tábla_neve;

 
Példa
 
DELETE FROM versenyzok WHERE azonositoja = 23965);

 
Eredményül, most törölve lett az a versenyző összes adata akinek az azonosítója 23965 volt.
 
Az ALIAS használata
 
Ha az eredménytáblában nem az eredeti (tábla/)oszlopneveket szeretnénk látni, akkor használhatunk helyettük úgynevezett aliasokat, vagyis állneveket is.
Használata(oszlopnevek megváltoztatásához):
 
SELECT oszlop_neve1 AS álnév1, oszlop_neve2 AS alnév2 FROM tábla_neve

 
Példa
A táblázatunk mondjuk legyen:
                                                                               
nevszuletesi_ev   eletkor
Nagy Lili199519
Horváth Imre   199618
Nagy Ferenc199123
Vass Albert199320
Mit tehetünk akkor, ha olyan eredményhalmazra van szükségünk amely csak a nev, és szuletesi_ev oszlopokat tartalmazza, és az oszlopok neve angolul szerepeljen?
 
SELECT nev AS Name, szuletesi_ev AS Birthdate FROM tabla;

 
Az eredményünk a következő:
                                                           
NameBirthdate
Nagy Lili1999
Horváth Imre   1997
Nagy Ferenc1991
Vass Albert1993
Megjegyzés: Ha az álnév szóközt tartalmazna, akkor használj idéző vagy szögletes zárójeleket.
Lásd:
 
SELECT nev AS [Teljes neve], szuletesi_ev AS \'Szuletesi ev\' FROM tabla;

 
Alias használata(táblanevek megváltoztatásához):
 
SELECT oszlop_neve(i) FROM tábla_neve AS álnev;

 
Példa
Figyelem! - Az alábbi példa két táblázatot is összekapcsol (JOIN), melyről lentebb olvashatsz!



Varsalok nevű táblázatunk:
                                                                               
azonosito  nevlakhely
690Nagy LiliBudapest
692Horváth Imre   Győr
693Nagy FerencDebrecen
701Vass AlbertPécs
Rendelesek nevű táblázatunk:
                                                                                                   
rendelesID   vevoID   elado_neve   szallito
2760505Németh Zoltán  FastTrans ltd.
2761692Nagy IstvánHT kft.
2762696Nagy IstvánHunLand kft.
2763692Nagy PéterHT kft.
Most azt szeretnénk, hogy az eredményhalmazunként megkapjuk az összes olyan leadott rendelést, mely Horváth Imrétől származik.
Parancsunk:
 
SELECT r.rendelesID, r.elado_neve, v.nev AS \'Vasarlo Neve\' FROM Vasarlok AS v, Rendelesek AS r WHERE v.nev=\"Horváth Imre\" AND v.azonosito=r.vevoID;

 
Eredményünk:
                                               
rendelesID   elado_neve   Vasarlo Neve
2761Nagy IstvánHorváth Imre
2763Nagy PéterHorváth Imre


Táblák összekapcsolása(JOIN)
 
   Az adatbáziskezelés egyik leggyakrabban használt műveletei között mindenképpen meg kell említeni az összekapcsolás műveletét is. E művelet fontosságának egyik legfőbb oka az, hogy az adatbázis tervezése során, az információkat (az átláthatóság szempontjából) több táblára is szét bontjuk.  (lásd előző példa) Egy összetettebb lekérdezéshez szükséges információk több táblában szétszórva helyezkednek el, így a lekérdezés során össze kell gyűjteni ezen adatokat a különböző táblákból, ahol az összetartozás bizonyos mezők értékeinek kapcsolatán alapszik. Azt a folyamatot, amikor több táblából származó adatokból állítunk elő egy újabb eredménytáblázatot, összekapcsolásnak, egyesítésnek vagy join-nak nevezzük.
Négy ismert fajtája/típusa van:
-   INNER JOIN: Azokat a sorokat kérdezi le ami mindkét táblában létezik.
-   LEFT JOIN: Visszatér a bal oldali tábla minden rekordjával és a hozzá tartozó jobb oldali tábla rekordjával ha létezik, különben NULL(üres).
-   RIGHT JOIN: A LEFT JOIN ellenkezője, a jobb oldali tábla minden sorát visszaadja és a hozzájuk tartozó bal oldali tábla sorát ha van.
-   FULL OUTER JOIN: Az előző két típus kombinálása, mindkét táblából visszaadja az összes sort.
   Tudnunk kell azt is hogy az összekapcsoláskor megadhatunk az ON paraméter után egy feltételt is, ami alapján összeválogatja a sorokat. Ha viszont nem adunk meg ilyen feltételt, akkor minden sort minden sorral össze fog párosítani, ez két kétsoros táblánál 4 sort, két háromsoros táblánál 9 sort, egy három és négy soros táblánál 12 sort ad vissza. Tehát a sorok száma a két tábla sorainak a számának a szorzatával egyezik meg. (ez az ún. Descartes szorzat)
   Gondoljunk bele, hogy egy 100 és egy 200 soros táblánál, 20000 sort kapunk vissza, míg ha használjuk a ON feltételét átlagban jóval kebesebb sorról beszélhetünk. (hamarosan kitérünk erre is)
   Tehát az SQL-ben két táblázat egyesítésének legegyszerűbb formája, amikor a két táblázat Descartes szorzatát képezzük. Két táblázat Descartes szorzatának előállításához a következő (egy nagyon bonyolult) SQL utasítást kell kiadni:
 
SELECT * FROM tabla1, tabla2;

 
Persze a most létrehozott ereménytáblázatot tetszőlegesen tovább lehet alakítani, mert nagyon ritka azaz eset mikor szükségünk is van mind két táblázat rekordjainak teljes Descartes szorzatára.
 
SELECT tabla1.oszlop_neve, tabla2.oszlop_neve FROM tabla1, tabla2 WHERE feltétel;

 
Példa
Ebben a példában most szeretnénk egy listát készíteni arról, hogy egy iskolában melyik diák, melyik osztályba jár, és ki az osztályfőnöke.
diakok nevű táblázatunk:
                                                                                                                       
azonosito   nevosztaly   eletkor
31Tóth Márton9.A15
32Tóth András9.A16
63Szélesi Vivien   10.C16
109Szabó Szilvia12.Ny18
86Kovács Luca11.B17
tanarok nevű táblázatunk:
                                                                                                                               
nevszakosztalyfonok
Nagy MátéTörténelem   10.A
Földesi LauraMagyar9.A
Kovács KárolyAngol12.Ny
Szalai Magdolna   Matek10.C
Tóth EdinaFizika11.B
Fejér ZsófiaNémetNULL
Bozsik KláraKémia13.Ny
Lássuk is a kódunkat:
 
SELECT diakok.nev, diakok.osztaly, tanarok.nev FROM diakok, tanarok WHERE diakok.osztaly=tanarok.osztalyfonok; 

 
Ez vajon jó lesz lekünk? :nono:
Persze a kóddal nincs semmi baj de az átláthatóság miatt jobb lenne ha az eredményhalmazunkban, nem lenne két \"nev\" nevű oszlop. Szóval használjuk a már korábban megismert ALIAST-t:
 
SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok, tanarok WHERE diakok.osztaly=tanarok.osztalyfonok;

 
Íme az eredményünk:
                                                                                               
diakosztaly   osztalyfonok
Tóth Márton9.AFöldesi Laura
Tóth András9.AFöldesi Laura
Szélesi Vivien10.CSzalai Magdolna
Szabó Szilvia12.NyKovács Károly
Kovács Luca11.BTóth Edina
A fenti módszer lényege, hogy a táblák közötti kapcsolatot a WHERE záradékban adjuk meg.
Van ennek egy másik módja is: mégpedig a JOIN.
Megjegyzés: Ez a példa hasonló azzal a példával, ami az Aliasba is szerepelt. (rendelesek,vasarlok)
 
INNER JOIN
 
Az INNER JOIN használatával, a lekérdezés eredményébe nem kerülnek bele azon tabla1-beli elemek, amelyeknek nincs megfelelőjük a tabla2 nevű táblában.
Használata nagyon egyszerű:
 
SELECT oszlop_neve(i) FROM tabla1 INNER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop;

 
Vagy:
 
SELECT oszlop_neve(i) FROM tabla1 JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop;

 
(Jótudni! - Az INNER JOIN hasonlóan(ugyanúgy) működik, mint a JOIN. Ennek ellenére a rendezett, átláthatósághoz javaslom az INNER JOIN használatát.)
 
\"img_innerjoin.gif\"
 
Példa
 
SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev as osztalyfonok FROM diakok INNER JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok;

 
BUMM! Az eredményünk ugyanaz lesz, mint az eggyel korábbi esetben. Az INNER JOIN használata annyival jobb a táblák WHERE záradékon keresztül történő (össze)kapcsolásánál, hogy így külön helyen szerepelnek a kapcsolatokat leíró feltételek és a lekérdezés eredményét szűkítő feltételek, és ezáltal a lekérdezés SQL kódja áttekinthetőbb lesz.
 
LEFT JOIN
 
Ez annyiban különbözik az INNER JOIN-tól, hogy amikor összekapcsolunk két táblát és ha nincsen megfelelő érték az első helyen lévő táblába a második helyen lévő táblához, akkor kiegészíti azokat NILL értékekkel. Ez akkor kelhet, amikor minden sornak szerepelni kell az eredményben, még akkor is, ha nem tartozik hozzá érték.
Használata:
 
SELECT oszlop_neve(i) FROM tabla1 LEFT JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop;

 
Vagy:
 
SELECT oszlop_neve(i) FROM tabla1 LEFT OUTER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop;

 
(Jótudni! - Néhány adatbázisnál a LEFT JOIN helyett LEFT OUTER JOIN-t kell használni)
 
\"img_leftjoin.gif\"
 
Példa
Tegyük fel van egy diakok és egy tanarok nevű táblázatunk, viszont a tanárok nevű táblázatban nem szerepel egy ember. (Aki éppen a 5.C osztályfőnöke)
Kódunk:
 
SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok LEFT JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok;

 
Eredményünk:
                                                                               
diakosztaly   osztalyfonok
Velkei Tamás7.AFöldesi Eszter
Nagy Dénes6.BNagy Ferenc
Szabó Máté5.CNULL
Szarvas Ákos8.ANyitrai Tünde

RIGHT JOIN
 
A RIGHT JOIN pedig pont azt teszi lehetővé, hogy a második táblában lévő összes adatot jelenítsük meg, függetlenül attól, hogy az első táblában van-e hozzátartozó mező. (ergo: ellentétesen viselkedik mint a left)
Használata:
 
SELECT oszlop_neve(i) FROM tabla1 RIGHT JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop;

 
Vagy:
 
SELECT oszlop_neve(i) FROM tabla1 RIGHT OUTER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop;

 
(Jótudni! - Néhány adatbázisnál a RIGHT JOIN helyett RIGHT OUTER JOIN-t kell használni)
 
\"img_rightjoin.gif\"
 
Példa
Tegyük fel van egy diakok és egy tanarok nevű táblázatunk, viszont a tanárok nevű táblázatban van olyan tanár amelynek nincs osztálya.
Kódunk:
 
SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok RIGHT JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok;

 
Eredményünk:
                                                                               
diakosztaly   osztalyfonok
Velkei Tamás7.AFöldesi Eszter
Südi Barbara6.DNagy Ágnes
NULLNULLSzolojov Zsuzsanna
Lipták László8.ANyitrai Tünde
*Zárás ként, remélem nem hagytam le semmi fontosat, és segíteni fog ez valamit valakinek az sql nyelv használatában. Természetesen ebben a topikban nem volt szó az összes utasításról/záradékokról/függvényekről. Csak a legfontosabbakat emeltem ki.
Ajánlott link: https://sampforum.hu/index.php?topic=9285.0
Forrásaim:
http://www.w3schools.com/
http://php.webprog.biz
http://aries.ektf.hu
http://sql.misi.eu
http://www.beregszaszi-debr.sulinet.hu
http://www.sqlcourse.com
https://hu.wikipedia.org/wiki/SQL
Gondolkodási módom: Kell az alap mielőtt nekikezdenénk a programjaink megírásának. Természetesen ezeket az információkat bárki elérheti más oldalakon, akinek jó barátja a kereső mező :D

7
Leírások/Útmutatók / [TUT] MySQL Register/Login rendszer
« Dátum: 2015. október 28. - 20:11:17 »
Sziasztok!
Ma készültem nektek egy kis bemutatóval, hogy hogyan lehet készíteni egy bejelentkező/regisztrációs rendszert, ami MySQL-en alapul. Ez menteni fogja a játékos pénzét, pontját, halálait, öléseit. Valamint a felhasználóknak lesz egy lejárati dátumuk is, mely után a rendszer törölni fogja őket. Nos hogy ezt megvalósítsuk erre 2 (vagy több) mód is létezik. Ezt időközben el fogom mondani.
Előkészületek:
Szükségünk lesz egy MySQL és egy sscanf pluginra.
<a href=\"http://forum.sa-mp.com/showthread.php?t=122983\">MySQL Plugin</a>
Direkt link windows felhasználóknak <a href=\"http://files.g-stylezzz.com/mysql/rel/R6/windows/plugin-R6-win32_vs9.rar\">KATT</a>
Direkt link linux felhasználóknak <a href=\"http://files.g-stylezzz.com/mysql/rel/R6/debian5/mysql.so\">KATT</a>
<a href=\"https://dl.dropboxusercontent.com/u/102595204/sscanf-2.8.2.zip\">sscanf Plugin</a>
Valamint ugye szükséged lesz egy MySQL adatbázisra amit phpmyadmin segítségével webes felületen elérhetsz.
Rendben most elvileg meg van mindenünk és hozzá is kezdhetünk!
Első lépés: - Táblázat létrehozása az adatbázisunkban
\"image.png\"
\"image.png\"
<a href=\"http://s23.postimg.org/btn76vly3/image.png\">Kép teljes méretben</a>
Vagy választasz egy adatbázist > SQL menüpont > Kódot beilleszted > Indít
 

CREATE TABLE IF NOT EXISTS `users` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Username` varchar(32) NOT NULL,
  `Password` varchar(32) NOT NULL,
  `Score` int(11) NOT NULL DEFAULT \'0\',
  `Money` int(16) NOT NULL DEFAULT \'150000\',
  `Kills` int(16) NOT NULL DEFAULT \'0\',
  `Deaths` int(16) NOT NULL DEFAULT \'0\',
  `ExpirationDate` date NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

 
Most lett egy táblázatunk:
\"image.png\"
<a href=\"http://s14.postimg.org/7z5rt9sup/image.png\">Kép teljes méretben</a>
Második lépés: - A \"scriptelés\"
!Ne felejtsük hozzáadni a script elejéhez: #include <a_mysql> és #include <sscanf2>
Mielőtt hozzá kezdünk definiáljunk pár dolgot csak a rend kedvéért! :D
 

#define mysql_host \"SzerverIPje\"
#define mysql_user \"MySQL_Felhasználóneved\"
#define mysql_database \"Adatbázisod_neve\"
#define mysql_password \"MySQL_Jelszód\"

 
Most az OnGameModeInit() vagy az OnFilterScriptInit() alá írjuk be a következő sorokat:
 

mysql_debug(1);//Erre nincs szükséged, de ha hiba merül fel akkor a szervered mappájában Debug.txt fájl alatt utána tudsz nézni
mysql_connect(mysql_host,mysql_user,mysql_database ,mysql_password);

 
Most elvileg sikeresen „csatlakoztunk” az adatbázisunkhoz.
Tökéletes! Most csekkoljuk le, hogy ha egy felhasználó fellép, az szerepel-e az adatbázisunkban. Majd az eredmények megfelelően, hozzon elő egy dialógust mely megkéri, hogy regisztráljon vagy jelentkezzen be, ha regisztrálva van.
 

public OnPlayerConnect(playerid)
{
   new Query[80],string[164];
   format(Query,sizeof(Query),\"SELECT `Username` FROM `users` WHERE `Username` = \'%s\' LIMIT 1;\",pName(playerid));
   mysql_query(Query);//Elküldjük a \"kérésünket\" a szerver felé
   mysql_store_result();//Majd eltároljuk az eredményt
   if(mysql_num_rows() != 0)//Ezzel a feltétellel megkérdeztük, hogy van-e már adat a felhasználónkról.
   {//És ha van ez történik:
      format(string,sizeof(string),\"Ezzel a felhasználónévvel már regisztráltak.\\nKérlek add meg a jelszavad!\");
      ShowPlayerDialog(playerid,0,DIALOG_STYLE_INPUT,\"Bejelentkezés\", string,\"Login\",\"\");
   }
   else
   {//Ha nincs akkor ez
      format(string,sizeof(string),\"Még nem regisztráltak ezzel a felhasználónévvel.\\nKérlek adj meg egy jelszót!\");
      ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,\"Regisztráció\", string,\"Register\",\"\");
   }
   mysql_free_result();
   return 1;
}

 
Remek ezzel is megvolnánk. Most készítsük el az űrlap(dialógus) feldolgozását:
 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 0)
   {
      new Query[256],EscapedStr[32];
      mysql_real_escape_string(inputtext, EscapedStr);//Ennek segítségével megakadályozzuk azt hogy kárt tehessenek az adatbázisunkban.
      //A speciális karaktereket ki Eszképeli (kiveszi) pl: az aposztróf elé rak egy \'\\\' jelet lásd: \\\'. Hogy miért hasznos? Nos, ha ez nem lenne
      //akkor aki ért hozzá, nagy károkat tudna csinálni. (Azt hogy hogyan lehet nem áll módomban elmondani)
      format(Query,sizeof(Query),\"SELECT * FROM `users` WHERE `Username` = \'%s\' AND `Password` = \'%s\'\",pName(playerid),EscapedStr);
      mysql_query(Query);
      mysql_store_result();
      if(mysql_num_rows() != 0)//művelet eredménye
      {
         SendClientMessage(playerid,-1,\"Sikeresen bejelentkeztél!!\");
         LoadStats(playerid);
      }
      else
      {
         //SendClientMessage(playerid,-1,\"Rossz jelszó!\");
         Kick(playerid);
      }
      mysql_free_result();
   }
   if(dialogid == 1)
   {
      if(strlen(inputtext) == 0)
      {
         ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,\"Regisztráció\",\"Kérlek adj meg egy jelszót!\",\"Register!\",\"\");
      }
      else
      {
          //Lejárati dátum megadása
          new Year, Month, Day;
          getdate(Year, Month, Day);
          new CD[32];
          if(Month == 12) {
              format(CD,sizeof(CD),\"%d-01-%02d\", Year+1, Day);
          }
          else {
             format(CD,sizeof(CD),\"%d-%02d-%02d\", Year, Month+1, Day);
          }
          //Lejárati dátum értéke most: Regisztrálás dátuma +1 hónap
         
          new Query[256];
         new EscapedText[60];
         mysql_real_escape_string(inputtext, EscapedText);
         format(Query,sizeof(Query),\"INSERT INTO `users` (Username,Password,ExpirationDate) VALUES (\'%s\',\'%s\',\'%s\')\",pName(playerid),EscapedText,CD);
         mysql_query(Query);//Most feltöltjük az adatokat az adatbázis users táblázatába. (ami nincs megadva, akkor annak az értéke egyenlő lesz azzal
         //amit megadtunk, mint automatikus érték)
         SendClientMessage(playerid,-1,\"Sikeresen regisztráltál!\");
         LoadStats(playerid);//Adatok bekérése
      }
   }
   return 0;
}

 
Még mielőtt folytatnánk, hozzunk létre változókat a felhasználó számára.
Írjuk a mód elejére:
 

enum PlayerData
{
   ID,Username[32],Password[32],Score,Money,Kills,Deaths,ExpirationDate[16]
}
new PlayerInfo[MAX_PLAYERS][PlayerData];

 
Következő lépésben „értelmet” adunk a pName és a LoadStats parancsunknak/függvényünknek.
 

stock LoadStats(playerid)
{
   new Query[256];
   format(Query, sizeof(Query), \"SELECT * FROM `users` WHERE `Username` = \'%s\' \", pName(playerid));
   mysql_query(Query);
   
   mysql_store_result();
   mysql_fetch_row_format(Query, \"|\");
   sscanf(Query, \"e<p<|>is[32]s[32]iiiis[16]>\", PlayerInfo[playerid]);//Érték adás az adatbázistól kapott adatok alapján, abban a sorrenben
   //ahogy az enumoknál adtuk meg.
   mysql_free_result();
   //Értékek felhasználása
   GivePlayerMoney(playerid,PlayerInfo[playerid][Money]);
   SetPlayerScore(playerid,PlayerInfo[playerid][score]);
   return 1;
}
stock pName(playerid)
{
   new name[MAX_PLAYER_NAME];
   GetPlayerName(playerid, name, sizeof(name));
   return name;
}

 
Ez most szép és jó, de hát ha változás történt a felhasználónkkal azt nem menti a kilépésekor :\'(
-Most akkor mit is szeretnénk csinálni?
-Szeretnénk menteni a pontját, pénzét, öléseit, halálait, no meg, meg kéne valahogy hosszabbítani a \"lejárati dátum\"-ot
A kód:
 

public OnPlayerDisconnect(playerid,reason)
{
    new Year, Month, Day;
   getdate(Year, Month, Day);
    new CD[32];
    if(Month == 12) {
        format(CD,sizeof(CD),\"%d-01-%02d\", Year+1, Day);
    }
    else {
       format(CD,sizeof(CD),\"%d-%02d-%02d\", Year, Month+1, Day);
    }
   new Query[256];
    format(Query, sizeof(Query), \"UPDATE users SET Score = %d, Money = %d, Kills = %d, Deaths = %d, ExpirationDate = \'%s\' WHERE Username=\'%s\'\",
   GetPlayerScore(playerid),GetPlayerMoney(playerid),PlayerInfo[playerid][Kills],PlayerInfo[playerid][Deaths],CD,pName(playerid));
    mysql_query(Query);
   return 1;
}

 
Harmadik lépés: - Feladat ütemezés/Esemény hozzáadása
Rendben most van egy scriptünk, ami adatokat kér és közöl az adatbázissal. Ha jól látom most minden tökéletes, kivéve a „lejárati dátumot”. Mivel hiába van, az ott nekünk, még nem csinál semmit :(
Ezért most kattintsunk az adatbázisunk nevére > SQL menüpont és illesszük be a következő kódot:
 

SET GLOBAL event_scheduler = ON;
CREATE EVENT myevent
    ON SCHEDULE
      EVERY 6 HOUR
    COMMENT \'Inaktiv felhasznalok torlese\'
    DO
      DELETE FROM `adatbazisneve`.`users` WHERE `users`.`ExpirationDate` < CURDATE();

 
Eredmény:
\"image.png\"
<a href=\"http://s17.postimg.org/z5lbf5qen/image.png\">Kép teljes méretben</a>
- Ez most mire volt jó?
- Létrehoztunk egy eseményt mely ismétlődni fog minden hatodik órában. (Persze ezt át írhatod)
- Mi is tulajdonképpen ez az esemény?
- Ugye ez szépen lefut nekünk minden hatodik órában, majd szépen törli az olyan felhasználók adatait melyeknek a \"lejárati dátuma\" kisebb mint a mai.



Példa:
Mai dátum: 2015-09-19
Géza lejárati dátuma: 2015-09-18 Törlődni fog? IGEN
Gizi lejárati dátuma: 2015-09-19 Törlődni fog? NEM
 
Hát igen itt van a bibi, ha nincs jogosultságod ilyenre.
Hogy mit tehetsz ez ügyben? A szolgáltató vagy a rendszer gazda felé fordulsz, hogy szeretnél létrehozni egy ilyen eseményt/időzítőt a rendszerben, ami lefut bizonyos időközönként.
Ha ez nem lehetséges, ugye úgy kezdtem, hogy erre több mód is van. Nos a másik mód az lenne , hogy a scriptben egy időzítő segítségével vagy egy függvény segítségével lefutatjuk ezt a sort:
 
DELETE FROM ` adatbazisneve `.`users` WHERE `users`.`ExpirationDate` < CURDATE();

 
>>>
 
new Query[256];
format(Query, sizeof(Query), \" DELETE FROM ` adatbazisneve `.`users` WHERE `users`.`ExpirationDate` < CURDATE();”);
mysql_query(Query);

 
Remélem nem felejtettem ki semmit, használjátok egészséggel!  :thumbsup:
Valamint a kérdéseiteket vagy ha bármiféle problémátok lenne bátran jelezzétek kommentben!
Vélemény?


Ez az első tutorialom, remélem nem szúrtam el nagyon és érthető voltam. Nem azt mondom hogy nézzétek el a hibáim(de remélem nincs :D), mert akkor miért is raktam ezt ki?
 
További jó fórumozást és szép napot!
_[G]M[K]_Sh1ft_

8
Segítségkérés / Float használata
« Dátum: 2015. október 15. - 21:17:17 »
Sziasztok!
Röviden: Olyat szeretnék csinálni, hogy létrehoztam egy változót amely két dimenziós tömbben tárolja az adatokat. Lásd:
new Float:BC01[3][4] = {{2795.8096,1232.6162,10.4726,269.1470},{2979.5374,1293.6962,18.2394,1.4599},{2878.9316,1590.8331,10.5257,87.8260}};
Majd szeretném megváltoztatni a BC01(első sorban lévő, 4 értéket).
Arra gondolok hogy ugye létrehoztam a változót, majd az OnPlayerConnect fgv. meghívásakor:
 
BC01[1][4]={{0.0,1.1,2.2,3.3}};

 
Vagy előbb kéne létrehozni egy változót, majd utána értéket adni neki?

9
Hivatalos fórumról áthozott szkriptek / Emergency mod - Villogó lámpák
« Dátum: 2015. július 18. - 18:56:24 »
Sziasztok!
A mai nap \"editeltem\" egy olyan scriptet, amely hasonló a cleo módokban található emergency módokhoz. (Magyarul a jármű első fényszórói szépen villognak :) )
Eredeti Link: http://forum.sa-mp.com/showthread.php?t=571926
Amit érdemes róla tudni:
Jelenleg úgy van beállítva, ha a jármű elkezd szirénázni, akkor a lámpa is villog, ha kikapcsolja akkor nem villog. !De ha át állítod \"#define plo 0\"-át 1-re akkor az összes olyan jármű (függetlenül hogy van szirénája, vagy nincs), akkor a 2-es gombbal is tudod de/aktiválni a villogást.
Tudom, lehet egyszerű a script, de lehet valakinek majd jól jön, és még nem nagyon találtam itt.
Lássuk is a scriptet:
 

#include <a_samp>
#define plc 1 //ha ez a szám 1, akkor az összes olyan jármű ami tud szirénázni, az tud \"villogni\" abban az esetben ha be van kapcsolva a sziréna
#define plo 0 //ha ez a szám 1, akkor bármelyik jármű tud \"villogni\" a 2es gomb segítségével
#define PRESSED(%0) \\
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
new iFlashCount = 0;
new FlashTime[MAX_VEHICLES];
new iFlash[MAX_PLAYERS];
forward OnLightFlash(vehicleid);
public OnLightFlash(vehicleid)
{
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    switch(iFlashCount)
    {
       case 0: UpdateVehicleDamageStatus(vehicleid, panels, doors, 2, tires);
        case 1: UpdateVehicleDamageStatus(vehicleid, panels, doors, 5, tires);
        case 2: UpdateVehicleDamageStatus(vehicleid, panels, doors, 2, tires);
        case 3: UpdateVehicleDamageStatus(vehicleid, panels, doors, 4, tires);
        case 4: UpdateVehicleDamageStatus(vehicleid, panels, doors, 5, tires);
        case 5: UpdateVehicleDamageStatus(vehicleid, panels, doors, 4, tires);
    }
    if(iFlashCount >=5) iFlashCount = 0;
    else iFlashCount++;
    return 1;
}
public OnVehicleSirenStateChange(playerid, vehicleid, newstate)
{
        if(newstate && iFlash[playerid] == 0)
{
    iFlash[playerid]=1;
   FlashTime[vehicleid] = SetTimerEx(\"OnLightFlash\", 120, true, \"d\", vehicleid);//minnél nagyobb a ms annál lassabban villog
}
        if(!newstate && iFlash[playerid] == 1)
        {
            iFlash[playerid]=0;
            new panels, doors, lights, tires;
            KillTimer(FlashTime[vehicleid]);
            GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
            UpdateVehicleDamageStatus(vehicleid, panels, doors, 0, tires);
        }
        return 1;
}
public OnFilterScriptExit()
{
    new panels, doors, lights, tires;
    for(new i=0; i<GetVehiclePoolSize(); i++)
    {
       KillTimer(FlashTime);
        GetVehicleDamageStatus(i, panels, doors, lights, tires);
         UpdateVehicleDamageStatus(i, panels, doors, 0, tires);
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_SUBMISSION) && plo == 1)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(iFlash[playerid] == 0)
{
   iFlash[playerid]=1;
   FlashTime[vehicleid] = SetTimerEx(\"OnLightFlash\", 120, true, \"d\", vehicleid);//minnél nagyobb a ms annál lassabban villog
}
else
{
   iFlash[playerid]=0;
   new panels, doors, lights, tires;
            KillTimer(FlashTime[vehicleid]);
            GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
            UpdateVehicleDamageStatus(vehicleid, panels, doors, 0, tires);
}
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
iFlash[playerid]=0;
new panels, doors, lights, tires;
    KillTimer(FlashTime[vehicleid]);
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    UpdateVehicleDamageStatus(vehicleid, panels, doors, 0, tires);
return 1;
}

10
SA-MP: Szerverfejlesztés / Nagybetű tiltása/engedélyezése
« Dátum: 2015. április 11. - 14:49:43 »
Sziasztok!
Ez egy olyan FS, mely segítségével ki és be tudod kapcsolni a chatben a nagybetűk használatát, vagy egy adott playernek.
Jelenleg ezeket a nagy betűket alakítja át a script: (EN) A-Z, Ö, Ü, Ó, Ű, Ő, Ú, É, Á, Í, Ä, Ë
Készítési idő: kb 5-15 perc
RCON Parancsok:
- /caps [playerid]   -ezzel a paranccsal tudod ki-be kapcsolni egy játékosnak a nagybetűk használatát
- /gcaps                     -ezzel a paranccsal tudod ki-be kapcsolni a nagy betű használatát (Mindenkinek)
Letöltés: http://www.mediafire.com/download/tp6sm6s3avb0rc9/caps.rar
Hasznos lehet: https://sites.google.com/site/szandras23/home/alt-codes-html-codes---ascii-special-characters-magyar-ekezetes-betuk-alt-kod-segitsegevel
 

#include <a_samp>
#include <sscanf2>
#include <zcmd>
new GlobalCapitalLetters;
public OnFilterScriptInit()
{
    GlobalCapitalLetters = 0;
}
public OnPlayerText(playerid, text[])
{
    if(GlobalCapitalLetters == 1 || GetPVarInt(playerid, \"CapitalLetters\") == 1)
{
    for(new i=1; i<strlen(text); i++)
        {
          if(text > 64 && text< 91) text += 32; //EN ABC
          if(text == 193) text = 225; //Á => á
          if(text == 201) text = 233; //É => é
          if(text == 205) text = 237; //Í => í
          if(text == 211) text = 243; //Ó => ó
          if(text == 214) text = 246; //Ö => ö
          if(text == 213) text = 245; //Ő => ő
          if(text == 218) text = 250; //Ú => ú
          if(text == 220) text = 252; //Ü => ü
          if(text == 219) text = 251; //Ű => ű
          if(text == 196) text = 228; //Ä => ä
          if(text == 203) text = 235; //Ë => ë
        }
}
return 1;
}
CMD:caps(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return 0;
    new targetID,str[128];
    if(sscanf(params,\"i\",targetID)) return SendClientMessage(playerid,0xFF0000AA,\"Használat: /caps [playerid]\");
    if(!IsPlayerConnected(targetID) || targetID == INVALID_PLAYER_ID) return SendClientMessage(playerid,0xFF0000AA,\"HIBA: Rossz ID!\");
    if(GetPVarInt(playerid, \"CapitalLetters\") == 0)
    {
        SetPVarInt(playerid, \"CapitalLetters\", 1);
        format(str, sizeof(str), \"Most már nem tud %s nagy betűket írni a chatbe!\",pName(targetID));
SendClientMessage(playerid,0x00FF00AA,str);
    }
    else if(GetPVarInt(playerid, \"CapitalLetters\") == 1)
    {
        SetPVarInt(playerid, \"CapitalLetters\", 0);
        format(str, sizeof(str), \"Most már %s is tud nagy betűket írni a chatbe!\",pName(targetID));
SendClientMessage(playerid,0x00FF00AA,str);
    }
    return 1;
}
CMD:gcaps(playerid)
{
    if(!IsPlayerAdmin(playerid)) return 0;
    if(GlobalCapitalLetters == 1)
    {
        GlobalCapitalLetters = 0;
SendClientMessage(playerid,0x00FF00AA,\"Sikeresen {ffffff}engedélyezted{00ff00}, a NAGYBETŰKET!\");
    }
    else if(GlobalCapitalLetters == 0)
    {
        GlobalCapitalLetters = 1;
SendClientMessage(playerid,0x00FF00AA,\"Sikeresen {ffffff}letiltottad{00ff00}, a NAGYBETŰK használatát!\");
    }
    return 1;
}
stock pName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}

11
SA-MP: Szerverfejlesztés / Hírdetés elleni védelem
« Dátum: 2015. január 02. - 19:52:44 »
Sziasztok!
A scriptet én készítettem, mint a címből is biztosan kiderült hírdetés elleni védelmre jó. (Tesztelve)
Működése: Ha a játékos a chatbe IP címet ír akkor bannolja.
Akkor is bannol ha a(z) IP cím közepén van egy betű mivel, akkor bannol ha meg található a \"player\" által írt szövegben:
  -3 pont ÉS 1 kettős pont ÉS 9-nél több szám
(Ami egy IP címnek felel meg)
Na de mivan ha nem csak egyet ír? A scriptet arra is írtam hogyha 9-nél több számot ír a chatbe akkor ne jelenítse meg a szöveget és hiba üzenetet küldjön neki.
A scriptnek szükséges, hogy létrehozzatok egy mappát és egy jegyzet tömböt (.txt kiterjesztéssel, de ha letöltitek csak \"át kell húzni\")
Szükséges elérési útvonal: [szervered mappája]/scriptfiles/slogs/Hirdetesek.txt
Megjegyzésem:
          A script hasznos az esetek 90%-ban. Mivel nincs tökéletes védelem véleményem szerint. A script lehet
          egyszerűnek tűnik (mert az is), de lehet jó lesz valakinek. :D
Link: http://www.mediafire.com/download/m09kjw22ql74n9z/HirdetesElleniVedelem.rar
Kód:

/*
Készítette:                     _[G]M[K]_Sh1ft_
Készítési idő(teszteléssel):    25 < perc
Köszönet a TUT-okért:
                                       sampforum.hu & wiki.sa-mp.com
Megjegyzésem:
   A scriptet szabadon fellehet használni / és terjeszteni, hiszen az a cél,
   hogy ne hírdessenek. A script IGÉNYELI, hogy a server scriptfiles mappájába
   létrehozzál egy \'slogs\' nevű mappát azon belül egy jegyzet tömböt .txt
   kiterjesztéssel melynek neve: Hirdetesek
                                                             */
#include <a_samp>
#include <dini>
public OnPlayerText(playerid, text[])
{
   new PONTok, KettosPONTok, SZAMok;
    for(new l = strlen(text), p; p < l; ++p)
   {
       if(text[p] == \'.\') ++PONTok;
       if(text[p] == \':\') ++KettosPONTok;
        if(\'0\' <= text[p] <= \'9\') ++SZAMok;
   }
   if( PONTok >= 3 && KettosPONTok >= 1 && SZAMok >= 10 )
   {
      new swcys[128], name[MAX_PLAYER_NAME], hdate[16],htime[16],strng[256],year,month,day,hours,minutes,seconds;
      GetPlayerName(playerid, name, sizeof(name));
     
      //Ez a folyamat arra jó, hogy elmentsük: MIKOR? KI? és MIT? reklámozott.
      format(swcys, sizeof(swcys),\"/slogs/Hirdetesek.txt\");
      getdate(year, month, day), gettime(hours, minutes, seconds);
      format(hdate, sizeof hdate, \"%d.%s%d.%s%d\", year, ((month < 10) ? (\"0\") : (\"\")), month,((day < 10) ? (\"0\") : (\"\")), day);
      format(htime, sizeof htime, \"%s%d:%s%d:%s%d\", (hours < 10) ? (\"0\") : (\"\"), hours, (minutes < 10) ? (\"0\") : (\"\"), minutes, (seconds < 10) ? (\"0\") : (\"\"), seconds);
      format(strng, sizeof strng, \"%s %s %s: %s\", hdate, htime, name, text);
      dini_IntSet(swcys,strng,1);
     
      //Kiírjuk az áldozatnak hogy mi lett vele...
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFFFFFFAA, \"Örülj, hogy nem az ujjaidat amputáltam!\" );
     
      //Bannoljuk 0,5mp múlva, AZÉRT csak annyi hogy legyen idő kiírjnia a szöveget.
      HBan(playerid);
       return 0;
    }
   if(SZAMok >=9)
   {
      SendClientMessage( playerid, -1, \"Szerver:{ffffff} Hírdetés gyanus, amit írtál, ezért nem jelent meg a \'közös/nyílt\' chatben. Sorry!\");
      return 0;
   }
   return 1;
}
stock HBan(playerid) SetTimerEx(\"SBan\", 500, false, \"i\", playerid);
forward SBan(playerid);
public SBan(playerid)
{
   SendClientMessageToAll(0xFFFFFFAA,\"Valaki ki lett bannolva hirdetésért!\");
   return Ban(playerid);
}

12
Szkript kérések / AKA rendszer
« Dátum: 2014. április 27. - 16:46:11 »
Üdv!
Sziasztok szükségem lenne aka rendszerre, tehát ha fel jön egy player írja ki rcon adminnak hogy \"XY feljött. (aka: Nevei)\"

13
SA-MP: Szerverfejlesztés / Vip rendszer
« Dátum: 2014. április 25. - 21:59:28 »
Sziasztok!
Pár nappal ezelõtt készítettem egy VIP rendszert remélem tetszeni fog. Annyi a hibája hogy ha Vipet adok vkinek akkor csak akkor adja meg neki mikor újra feljön. És ahanyas szintet állítok be y playernek olyan lesz az én szintem is. Ez a két hibája van.
VIP 1-es szintû parancsok:
/varmour /vcar /vcolor /vfix /vheal
/vjetpack /vlockcar /vgoto
/vsetmytime /vsetmyweather /vunlockcar
VIP 2-es szintû parancsok:
/vann /varmour /varmourall /vcar /vcolor /vfix /vget /vgoto /vheal
/vhealall /vhide /vjetpack /vkick /vlockcar /vrac /vsetallwanted
/vsetarmour /vsethealth /vsetmytime /vsetmyweather /vunhide /vunlockcar
RCON parancsai:
/vszint
Letöltés: http://www.mediafire.com/view/m95jrz33uwcxwzc/VIP_System.zip
CODE
 

/*
                  VIP System by: _[G]M[K]_Sh1ft_
*/
#include <a_samp>
#include <dini>
#include <dudb>
#include <zcmd>
#include <sscanf2>
#include <fixchars>
#pragma tabsize 0
#pragma unused ret_memcpy
#define red 0xFF0000AA
#define green 0x00ff09AA
#define COLOR_GREEN 0x33AA33AA
#define blue 0x375FFFFF
//-------VIP System-------//
new nev[MAX_PLAYER_NAME];
new vipszint[MAX_PLAYERS];
//---Jármû respawn cuccok---//
new vehicletimer, vehtimer;
new vehicletime;
//---Jármû lehívó cuccok---//
new SpawnedVehicles[MAX_PLAYERS];
new VehicleNames[212][] = {
{\"Landstalker\"},{\"Bravura\"},{\"Buffalo\"},{\"Linerunner\"},{\"Perrenial\"},{\"Sentinel\"},{\"Dumper\"},{\"Firetruck\"},{\"Trashmaster\"},{\"Stretch\"},{\"Manana\"},{\"Infernus\"},{\"Voodoo\"},{\"Pony\"},{\"Mule\"},
{\"Cheetah\"},{\"Ambulance\"},{\"Leviathan\"},{\"Moonbeam\"},{\"Esperanto\"},{\"Taxi\"},{\"Washington\"},{\"Bobcat\"},{\"Mr Whoopee\"},{\"BF Injection\"},{\"Hunter\"},{\"Premier\"},{\"Enforcer\"},{\"Securicar\"},
{\"Banshee\"},{\"Predator\"},{\"Bus\"},{\"Rhino\"},{\"Barracks\"},{\"Hotknife\"},{\"Trailer 1\"},{\"Previon\"},{\"Coach\"},{\"Cabbie\"},{\"Stallion\"},{\"Rumpo\"},{\"RC Bandit\"},{\"Romero\"},{\"Packer\"},{\"Monster\"},
{\"Admiral\"},{\"Squalo\"},{\"Seasparrow\"},{\"Pizzaboy\"},{\"Tram\"},{\"Trailer 2\"},{\"Turismo\"},{\"Speeder\"},{\"Reefer\"},{\"Tropic\"},{\"Flatbed\"},{\"Yankee\"},{\"Caddy\"},{\"Solair\"},{\"Berkley\'s RC Van\"},
{\"Skimmer\"},{\"PCJ-600\"},{\"Faggio\"},{\"Freeway\"},{\"RC Baron\"},{\"RC Raider\"},{\"Glendale\"},{\"Oceanic\"},{\"Sanchez\"},{\"Sparrow\"},{\"Patriot\"},{\"Quad\"},{\"Coastguard\"},{\"Dinghy\"},{\"Hermes\"},{\"Sabre\"},
{\"Rustler\"},{\"ZR-350\"},{\"Walton\"},{\"Regina\"},{\"Comet\"},{\"BMX\"},{\"Burrito\"},{\"Camper\"},{\"Marquis\"},{\"Baggage\"},{\"Dozer\"},{\"Maverick\"},{\"News Chopper\"},{\"Rancher\"},{\"FBI Rancher\"},{\"Virgo\"},{\"Greenwood\"},
{\"Jetmax\"},{\"Hotring\"},{\"Sandking\"},{\"Blista Compact\"},{\"Police Maverick\"},{\"Boxville\"},{\"Benson\"},{\"Mesa\"},{\"RC Goblin\"},{\"Hotring Racer A\"},{\"Hotring Racer B\"},{\"Bloodring Banger\"},{\"Rancher\"},
{\"Super GT\"},{\"Elegant\"},{\"Journey\"},{\"Bike\"},{\"Mountain Bike\"},{\"Beagle\"},{\"Cropdust\"},{\"Stunt\"},{\"Tanker\"}, {\"Roadtrain\"},{\"Nebula\"},{\"Majestic\"},{\"Buccaneer\"},{\"Shamal\"},{\"Hydra\"},{\"FCR-900\"},
{\"NRG-500\"},{\"HPV1000\"},{\"Cement Truck\"},{\"Tow Truck\"},{\"Fortune\"},{\"Cadrona\"},{\"FBI Truck\"},{\"Willard\"},{\"Forklift\"},{\"Tractor\"},{\"Combine\"},{\"Feltzer\"},{\"Remington\"},{\"Slamvan\"},
{\"Blade\"},{\"Freight\"},{\"Streak\"},{\"Vortex\"},{\"Vincent\"},{\"Bullet\"},{\"Clover\"},{\"Sadler\"},{\"Firetruck LA\"},{\"Hustler\"},{\"Intruder\"},{\"Primo\"},{\"Cargobob\"},{\"Tampa\"},{\"Sunrise\"},{\"Merit\"},{\"Utility\"},{\"Nevada\"},{\"Yosemite\"},{\"Windsor\"},{\"Monster A\"},{\"Monster B\"},{\"Uranus\"},{\"Jester\"},
{\"Sultan\"},{\"Stratum\"},{\"Elegy\"},{\"Raindance\"},{\"RC Tiger\"},{\"Flash\"},{\"Tahoma\"},{\"Savanna\"},{\"Bandito\"},{\"Freight Flat\"},{\"Streak Carriage\"},{\"Kart\"},{\"Mower\"},{\"Duneride\"},{\"Sweeper\"},
{\"Broadway\"},{\"Tornado\"},{\"AT-400\"},{\"DFT-30\"},{\"Huntley\"},{\"Stafford\"},{\"BF-400\"},{\"Newsvan\"},{\"Tug\"},{\"Trailer 3\"},{\"Emperor\"},{\"Wayfarer\"},{\"Euros\"},{\"Hotdog\"},{\"Club\"},{\"Freight Carriage\"},
{\"Trailer 3\"},{\"Andromada\"},{\"Dodo\"},{\"RC Cam\"},{\"Launch\"},{\"Police Car (LSPD)\"},{\"Police Car (SFPD)\"},{\"Police Car (LVPD)\"},{\"Police Ranger\"},{\"Picador\"},{\"S.W.A.T. Van\"},{\"Alpha\"},{\"Phoenix\"},{\"Glendale\"},
{\"Sadler\"},{\"Luggage Trailer A\"},{\"Luggage Trailer B\"},{\"Stair Trailer\"},{\"Boxville\"},{\"Farm Plow\"},{\"Utility Trailer\"}
};
//---Lockcar cuccok---//
new PlayerCar[MAX_PLAYERS], LockedCar[1000];
new Text:Locked;
new MsgLocked[MAX_PLAYERS], LockedTimer[MAX_PLAYERS];
forward RemoveLock(playerid);
//---Jármû respawn cuccok---//
forward VehicleRespawn();
forward CheckTimer();
public OnPlayerDisconnect(playerid, reason)
{
vipszint[playerid]= 0;
}
public OnPlayerConnect(playerid)
{
    new file[128];
GetPlayerName(playerid,nev,sizeof(nev));
format(file,sizeof(file),\"/Karakterek/%s.ini\",nev);
    vipszint[playerid] = dini_Int(file,\"vipszint\");
    PlayerCar[playerid] = -1;
return 1;
}
 
public OnPlayerText( playerid, text[ ] )
{
new textstr[ 128 ];
if ( text[ 0 ] == \'!\' && vipszint[playerid] >= 1 )
{
GetPlayerName( playerid, textstr, sizeof( textstr ) );
format( textstr, sizeof( textstr ),\"VIP-Chat: {00FF00}%s:{FF5500} %s\", textstr, text[ 1 ] );
SendVipMessage( red, textstr );
return 0;
}
return 1;
}
CMD:vszint(playerid,params[])
{
    if(IsPlayerAdmin(playerid))
    {
        new id,szint;
        new neve[MAX_PLAYER_NAME];
        if(sscanf(params,\"ui\",id,szint))return SendClientMessage(playerid,-1,\"Használat: /vszint [Player ID] [szint]\");
        if(szint < 0 || szint > 2) return SendClientMessage(playerid,-1,\"A szintnek 0 és 2 között kell lennie!\");
        vipszint[playerid] = szint;
      new file[128];
      GetPlayerName(id,neve,sizeof(neve));
      format(file,sizeof(file),\"/Karakterek/%s.ini\",neve);
      dini_Create(file);
      dini_IntSet(file,\"vipszint\",vipszint[playerid]);
              GetPlayerName(playerid,nev,sizeof(nev));
              GetPlayerName(id,neve,sizeof(neve));
              new string[128];
              format(string,sizeof(string),\"%s megváltoztatta a vipszintedet erre: %d\",nev,szint);
              SendClientMessage(id,-1,string);
              format(string,sizeof(string),\"Megváltoztattad %s vipszintjét erre: %d\",neve,szint);
              SendClientMessage(playerid,-1,string);
              printf(\"%s megváltoztatta %s vipszintjét erre: %d\",nev,neve,szint);
    }
    else SendClientMessage(playerid,-1,\"Nem vagy rcon admin!\");
return 1;
}
CMD:vcmds(playerid, params[])
{
    if(vipszint[playerid] == 1) //11 parancs
    {
SendClientMessage(playerid, red, \"--------------------Parancsok--------------------\");
    SendClientMessage(playerid, green, \"/varmour /vcar /vcolor /vfix /vheal\");
    SendClientMessage(playerid, green, \"/vjetpack /vlockcar /vgoto\");
    SendClientMessage(playerid, green, \"/vsetmytime /vsetmyweather /vunlockcar\");
    SendClientMessage(playerid, red, \"------------------------------------------------------\");
    SendClientMessage(playerid, red, \"VIP chat: {00ff09}!(szöveg)\");
    return 1;
    }
else
{
if(vipszint[playerid] == 2) //22 parancs
    {
SendClientMessage(playerid, red, \"-----------------------------------------------Parancsok----------------------------------------------\");
       SendClientMessage(playerid, green, \"/vann /varmour /varmourall /vcar /vcolor /vfix /vget /vgoto /vheal\");
       SendClientMessage(playerid, green, \"/vhealall /vhide /vjetpack /vkick /vlockcar /vrac /vsetallwanted\");
    SendClientMessage(playerid, green, \"/vsetarmour /vsethealth /vsetmytime /vsetmyweather /vunhide /vunlockcar\");
         SendClientMessage(playerid, red, \"-----------------------------------------------------------------------------------------------------------\");
       SendClientMessage(playerid, red, \"VIP chat: {00ff09}!(szöveg)\");
         }
           else
           {
           SendClientMessage(playerid, red, \"HIBA: Nem vagy VIP tag!\");
           }
           }
return 1;
}
//----------------------------------------------------------------------------//
//--------------------------------VIP Parancsok-------------------------------//
//---------------------------VIP 1. szintû parancsok--------------------------//
//----------------------------------------------------------------------------//
 
CMD:varmour(playerid, params[])
{
if(vipszint[playerid] >= 1)
{
SetPlayerArmour(playerid,100.0);
}
else
    {
    SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
    }
return 1;
}
CMD:vcar(playerid, params[])
{
if(vipszint[playerid] >=1)
{
new Index;
    new tmp[256];  tmp  = strtok(params,Index);
new tmp2[256]; tmp2 = strtok(params,Index);
new tmp3[256]; tmp3 = strtok(params,Index);
    if(!strlen(tmp)) return SendClientMessage(playerid, red, \"Használat: /vcar [modellid/jármûnév] [szín1] [szín2]\");
new car, string[128], colour1, colour2;
if(!IsNumeric(tmp)) car = GetVehicleModelIDFromName(tmp);
else car = strval(tmp);
if(car < 400 || car > 611) return  SendClientMessage(playerid, red, \"Használat: /vcar [modellid/jármûnév] [szín1] [szín2]\");
if(!strlen(tmp2)) colour1 = random(126); else colour1 = strval(tmp2);
if(!strlen(tmp3)) colour2 = random(126); else colour2 = strval(tmp3);
    if(SpawnedVehicles[playerid] != 0) DestroyVehicle(SpawnedVehicles[playerid]);
new Float:X,Float:Y,Float:Z;
new Float:Angle,int1;
new LVehicleID = GetPlayerVehicleID(playerid);
GetPlayerPos(playerid, X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
int1 = GetPlayerInterior(playerid);
SpawnedVehicles[playerid] = CreateVehicle(car, X+3,Y,Z, Angle, colour1, colour2, -1);
LinkVehicleToInterior(LVehicleID,int1);
PutPlayerInVehicle(playerid,SpawnedVehicles[playerid],0);
format(string, sizeof(string), \"Jármû sikeresen lekérve!\");
return SendClientMessage(playerid, green, string);
}
else
    {
    SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
    }
return 1;
}
CMD:vcolor(playerid, params[])
{
if(vipszint[playerid] >= 1)
ShowPlayerDialog(playerid, 4949, DIALOG_STYLE_LIST, \"Színek\", \"{000000}Color1\\n{FFFFFF}Color2\\n{FF0000}Color3\\n{ff006f}Color4\\n{ff00d5}Color5\\n{f700ff}Color6\\n{d500ff}Color7\\n{8400ff}Color8\\n{5100ff}Color9\\n{0900ff}Color10\\n{003cff}Color11\\n{006fff}Color12\\n{0099ff}Color13\\n{00c4ff}Color14\\n{00eaff}Color15\\n{00ffc4}Color16\\n{00ff99}Color17\\n{00ff51}Color18\\n{00ff00}Color19\\n{51ff00}Color20\\n{7bff00}Color21\\n{aeff00}Color22\\n{ffff00}Color23\\n{ff9900}Color24\\n{ff5e00}Color25\", \"Kiválaszt\", \"Kilépés\");
}
CMD:vfix(playerid, params[])
#pragma unused params
{
if(vipszint[playerid] >= 1)
        {
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, red, \"Nem vagy jármûben!\");
        return RepairVehicle(GetPlayerVehicleID(playerid)),  SendClientMessage(playerid, green, \"Jármû megjavítva!\");
        }
        else
            {
   SendClientMessage(playerid, red, \"HIBA: Nem vagy VIP tag!\");
   }
return 1;
}
CMD:vgoto(playerid,params[])
{
    if(vipszint[playerid] >= 1) {
    if(!strlen(params)) return SendClientMessage( playerid, red, \"Használat: /vgoto [playerid]\" );
    new player1;
if(!IsNumeric(params)) player1 = ReturnPlayerID(params);
      else player1 = strval(params);
    if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid) {
   new Float:x, Float:y, Float:z;   GetPlayerPos(player1,x,y,z); SetPlayerInterior(playerid,GetPlayerInterior(player1));
   SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(player1));
   if(GetPlayerState(playerid) == 2) {
      SetVehiclePos(GetPlayerVehicleID(playerid),x+3,y,z+3);   LinkVehicleToInterior(GetPlayerVehicleID(playerid),GetPlayerInterior(player1));
      SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),GetPlayerVirtualWorld(player1));
   } else SetPlayerPos(playerid,x+2,y,z+3);
} else return SendClientMessage( playerid, red, \"Használat: /vgoto [playerid]\" );
} else return SendClientMessage(playerid,red,\"HIBA: Nem vagy VIP tag!\");
return 1;
}
CMD:vheal(playerid, params[])
{
if(vipszint[playerid] >= 1)
{
SetPlayerHealth(playerid,100.0);
}
else
    {
    SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
    }
return 1;
}
CMD:vjetpack(playerid, params[])
{
if(vipszint[playerid] >= 1)
{
    SetPlayerSpecialAction(playerid,2);
    }
    else
{
SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
}
    return 1;
}
CMD:vlockcar(playerid, params[])
{
    if(vipszint[playerid] >= 1)
    {
        if(!IsPlayerInAnyVehicle(playerid))
            return SendClientMessage(playerid,0xFFFFFFAA,\"You have to be inside a vehicle.\");
        if(GetPlayerVehicleSeat(playerid) != 0)
            return SendClientMessage(playerid,0xFFFFFFAA,\"You have to be a driver.\");
        if(PlayerCar[playerid] != -1)
        {
            LockedCar[PlayerCar[playerid]] = 0;
        }
        PlayerCar[playerid] = GetPlayerVehicleID(playerid);
        LockedCar[GetPlayerVehicleID(playerid)] = 1;
        return 1;
    }
    else
{
SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
}
    return 1;
}
CMD:vsetmytime(playerid,params[])
{
if(vipszint[playerid] >= 1)
{
new time;
if(sscanf(params,\"i\",time))SendClientMessage(playerid,COLOR_GREEN,\"Használat: /vsetmytime 0-24\");
if(time < 0 || time > 24) return SendClientMessage(playerid, 0xbbff00aa, \"Használat: /vsetmytime 0-24\");
SetPlayerTime(playerid,time, time);
return 1;
}
    else
{
SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
}
    return 1;
}
CMD:vsetmyweather(playerid,params[])
{
if(vipszint[playerid] >= 1)
    ShowPlayerDialog(playerid, 4951, DIALOG_STYLE_LIST, \"Weathers:\", \"{FFFFFF}Kék egek\\n{FFFFFF}Viharos\\n{FFFFFF}Felhõs és Ködös\\n{FFFFFF}Hõhullám\\n{FFFFFF}Homok vihar\\n{FFFFFF}Ködös, zöldes\", \"Kiválaszt\", \"Kilépés\");
}
CMD:vunlockcar(playerid, params[])
{
if(vipszint[playerid] >= 1)
{
        if(!IsPlayerInAnyVehicle(playerid))
            return SendClientMessage(playerid,0xFFFFFFAA,\"You have to be inside a vehicle.\");
        if(GetPlayerVehicleSeat(playerid) != 0)
            return SendClientMessage(playerid,0xFFFFFFAA,\"You have to be a driver.\");
        PlayerCar[playerid] = -1;
        LockedCar[GetPlayerVehicleID(playerid)] = 0;
        return 1;
    }
            else
{
SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
}
    return 1;
}
//----------------------------------------------------------------------------//
//---------------------------VIP 2. szintû parancsok--------------------------//
//----------------------------------------------------------------------------//
 
CMD:vann(playerid, params[])
{
if(vipszint[playerid] == 2)
{
if(!strlen(params)) return SendClientMessage(playerid,red,\"Használat: /vann <szöveg>\");
return GameTextForAll(params,4000,3);
    } else return SendClientMessage(playerid,red,\"HIBA: Nem vagy VIP tag!\");
}
CMD:varmourall(playerid, params[])
{
if(vipszint[playerid] == 2)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerArmour(i,100.0);
}
}
else
{
SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
}
return 1;
}
CMD:veject(playerid, params[])
{
if(vipszint[playerid] == 2)
if(sscanf(params,\"u\",playerid)) SendClientMessage( playerid, red, \"Használat: /veject [playerid]\");
else
{
    if(playerid == INVALID_PLAYER_ID) SendClientMessage( playerid, red, \"HIBA: A játékos nem található!\");
    else
        {
        RemovePlayerFromVehicle(playerid);
           }
}
else
{
SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
}
return 1;
}
CMD:vget(playerid, params[])
{
new PID;
new Float:x, Float:y, Float:z;
    if(vipszint[playerid] == 2)
    if ( sscanf( params, \"u\", PID ) ) return SendClientMessage( playerid, red, \"Használat: /vget [playerid]\" );
if ( IsPlayerConnected( PID ) && PID != INVALID_PLAYER_ID && PID != playerid )
{
GetPlayerPos( playerid, x, y, z );
    SetPlayerInterior( PID, GetPlayerInterior( playerid ) );
SetPlayerVirtualWorld( PID, GetPlayerVirtualWorld( playerid ) );
if ( GetPlayerState( PID ) == 2 )
{
    new VehicleID = GetPlayerVehicleID( PID );
   SetVehiclePos( VehicleID, x+3, y, z);
   LinkVehicleToInterior( VehicleID, GetPlayerInterior( PID ) );
   SetVehicleVirtualWorld( GetPlayerVehicleID( PID ), GetPlayerVirtualWorld( PID ) );
} else {
   SetPlayerPos( PID, x+2, y, z );
   }
   }
   else
   {
   SendClientMessage (playerid, red, \"HIBA: Nem vagy VIP tag!\");
   }
return 1;
}
CMD:vhealall(playerid, params[])
{
if(vipszint[playerid] == 2)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerHealth(i,100.0);
}
}
else
{
SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
}
return 1;
}
CMD:vhide(playerid, params[])
{
        if(vipszint[playerid] == 2)
        {
                SetPlayerColor(playerid, 0xFFFFFF00);
        }
        return 1;
}
CMD:vkick(playerid, params[])
{
if(vipszint[playerid] == 2)
if(sscanf(params,\"u\",playerid)) SendClientMessage( playerid, red, \"Használat: /vkick [playerid]\");
else
{
    if(playerid == INVALID_PLAYER_ID) SendClientMessage( playerid, red, \"HIBA: A játékos nem található!\");
    else
        {
        Kick(playerid);
           }
}
   else
            {
   SendClientMessage(playerid, red, \"HIBA: Nem vagy VIP tag!\");
   }
return 1;
}
CMD:vrac(playerid, params[])
{
if(vipszint[playerid] == 2)
{
if(sscanf(params, \"d\", vehicletime)) return SendClientMessage(playerid, red, \"Használat: /vrac [1-10]\");
if(vehicletime < 1 || vehicletime > 10) return SendClientMessage(playerid, red, \"Használat: /vrac [1-10]!\");
    vehicletimer = vehicletime;
    vehtimer = SetTimer(\"VehicleRespawn\", 1000, true);
    new string[128], sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), \"* Minden használaton kívüli jármû repsawnolva lesz %d másodperc múlva.\", vehicletime, sendername);
    SendClientMessageToAll(0xFF9900AA, string);
    }
    else
{
SendClientMessage( playerid, red, \"HIBA: Nem vagy VIP tag!\");
}
return 1;
}
CMD:vsetallwanted(playerid,params[])
{
if(vipszint[playerid] == 2)
{
    if(!strlen(params)) return SendClientMessage(playerid, red, \"Használat: /vsetallwanted [körözési szint]\");
new var = strval(params);
for(new i = 0; i < MAX_PLAYERS; i++) {
   if(IsPlayerConnected(i)) {
   SetPlayerWantedLevel(i,var);
   }
}
} else return SendClientMessage(playerid,red,\"HIBA: Nem vagy VIP tag!\");
return 1;
}
CMD:vsetarmour(playerid,params[])
{
if(vipszint[playerid] == 2)
{
    new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
    if(!strlen(tmp) || !strlen(tmp2) || !IsNumeric(tmp2)) return SendClientMessage(playerid, red, \"USAGE: /vsetarmour [playerid] [érték]\");
if(strval(tmp2) < 0 || strval(tmp2) > 100) return SendClientMessage(playerid, red, \"HIBA: Rossz érték 0-100\");
new player1 = strval(tmp), armour = strval(tmp2), string[128];
        if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
   format(string, sizeof(string), \"You have set \\\"%s\'s\\\" armour to \'%d\", pName(player1), armour); SendClientMessage(playerid,blue,string);
   if(player1 != playerid) { format(string,sizeof(string),\"VIP \\\"%s\\\" has set your armour to \'%d\'\", pName(playerid), armour); SendClientMessage(player1,blue,string); }
            return SetPlayerArmour(player1, armour);
    } else return SendClientMessage(playerid,red,\"HIBA: Rossz playerid!\");
} else return SendClientMessage(playerid,red,\"HIBA: Nem vagy VIP tag!\");
}
CMD:vsethealth(playerid,params[])
{
if(vipszint[playerid] == 2)
{
    new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
    if(!strlen(tmp) || !strlen(tmp2) || !IsNumeric(tmp2)) return SendClientMessage(playerid, red, \"Használat: /vsethealth [playerid] [érték]\");
if(strval(tmp2) < 10 || strval(tmp2) > 100) return SendClientMessage(playerid, red, \"HIBA: Rossz érték (10-100)\");
new player1 = strval(tmp), health = strval(tmp2), string[128];
        if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
   if(player1 != playerid) { format(string,sizeof(string),\"VIP \\\"%s\\\" has set your health to \'%d\'\", pName(playerid), health); SendClientMessage(player1,blue,string); }
            return SetPlayerHealth(player1, health);
    } else return SendClientMessage(playerid,red,\"HIBA: Rossz playerid!\");
} else return SendClientMessage(playerid,red,\"HIBA: Nem vagy VIP tag!\");
}
CMD:vunhide(playerid, params[])
{
        if(vipszint[playerid] == 2)
        {
                SetPlayerColor(playerid, 0x09ff00AA);
        }
        return 1;
}
//-----------------------------Stocks----------------------------------------//
 
stock GetVehicleModelIDFromName(vname[]) {
for(new i = 0; i < 211; i++) {
if ( strfind(VehicleNames, vname, true) != -1 ) return i + 400;
}
return -1;
}
stock IsNumeric(string[]) {
for (new i = 0, j = strlen(string);   i < j; i++) {
if (string > \'9\' || string < \'0\') return 0;
}
return 1;
}
stock ReturnPlayerID(PlayerName[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
   if(strfind(pName(i),PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}
stock pName(playerid)
{
  new name[MAX_PLAYER_NAME];
  GetPlayerName(playerid, name, sizeof(name));
  return name;
}
CMD:vsaw(playerid, params[])
{
return cmd_vsetallwanted(playerid, params);
}
#define PRESSED(%0) \\
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (PRESSED(KEY_SUBMISSION))
{
        if(vipszint[playerid] >= 1)
   RepairVehicle(GetPlayerVehicleID(playerid)),  SendClientMessage(playerid, green, \"Jármû megjavítva!\");
}
return 1;
}
//---respawncars---//
public VehicleRespawn()
{
--vehicletimer;
if( !vehicletimer )   {
new vehid;
    while(vehid < MAX_VEHICLES)
    {
        if(!IsVehicleOccupied(vehid))
        {
            SetVehicleToRespawn(vehid);
        }
        vehid++;
    }
KillTimer(vehtimer);
return;
}
static string[ 3 ];
format( string, 3, \"%d\", vehicletimer );
GameTextForAll(string, 1000, 6 );
}
stock IsVehicleOccupied ( vehicleid )
{
new i;
while(i < MAX_PLAYERS)
{
if ( IsPlayerInVehicle ( i, vehicleid ) ) return 1;
i++;
}
return 0;
}
forward SendVipMessage( color, const string[ ] );
public SendVipMessage( color, const string[ ] )
{
for ( new i = 0; i < MAX_PLAYERS; i++ )
{
if ( IsPlayerConnected( i ) )
{
   if ( vipszint[ i ] >= 1 )
   {
       SendClientMessage( i, color, string );
   }
}
}
return 1;
}
 
//------------------------------Lockcar Cuccok--------------------------------//
 
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(LockedCar[vehicleid] == 1 && PlayerCar[playerid] != vehicleid)
    {
        if(MsgLocked[playerid] == 1)
        {
            TextDrawHideForPlayer(playerid, Locked);
            MsgLocked[playerid] = 0;
            KillTimer(LockedTimer[playerid]);
        }
        TogglePlayerControllable(playerid, true);
Locked = TextDrawCreate(10.0, 250.0, \"This Vehicle is Locked\");
        TextDrawUseBox(Locked, 1);
        TextDrawBoxColor(Locked, 0x00000055);
        TextDrawTextSize(Locked, 125, 5);
        TextDrawShowForPlayer(playerid, Locked);
        LockedTimer[playerid] = SetTimer(\"RemoveLock\", 4000, false);
        MsgLocked[playerid] = 1;
    }
    return 1;
}
public RemoveLock(playerid)
{
    if(MsgLocked[playerid] == 1)
    {
        TextDrawHideForPlayer(playerid, Locked);
        MsgLocked[playerid] = 0;
    }
}
public OnVehicleSpawn(vehicleid)
{
    LockedCar[vehicleid] = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(PlayerCar == vehicleid)
            PlayerCar = -1;
    }
    return 1;
}
 
//------------------------------DIALOGS---------------------------------------//
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 4949)
{
if(response)
{
if(listitem == 0)
{
SetPlayerColor(playerid,0x000000AA);
}
if(listitem == 1)
{
SetPlayerColor(playerid,0xffffffAA);
}
if(listitem == 2)
{
SetPlayerColor(playerid,red);
}
if(listitem == 3)
{
SetPlayerColor(playerid,0xff006fAA);
}
if(listitem == 4)
{
SetPlayerColor(playerid,0xff00d5AA);
}
if(listitem == 5)
{
SetPlayerColor(playerid,0xf700ffAA);
}
if(listitem == 6)
{
SetPlayerColor(playerid,0xd500ffAA);
}
if(listitem == 7)
{
SetPlayerColor(playerid,0x8400ffAA);
}
if(listitem == 8)
{
SetPlayerColor(playerid,0x5100ffAA);
}
if(listitem == 9)
{
SetPlayerColor(playerid,0x0900ffAA);
}
if(listitem == 10)
{
SetPlayerColor(playerid,0x003cffAA);
}
if(listitem == 11)
{
SetPlayerColor(playerid,0x006fffAA);
}
if(listitem == 12)
{
SetPlayerColor(playerid,0x0099ffAA);
}
if(listitem == 13)
{
SetPlayerColor(playerid,0x00c4ffAA);
}
if(listitem == 14)
{
SetPlayerColor(playerid,0x00eaffAA);
}
if(listitem == 15)
{
SetPlayerColor(playerid,0x00ffc4AA);
}
if(listitem == 16)
{
SetPlayerColor(playerid,0x00ff99AA);
}
if(listitem == 17)
{
SetPlayerColor(playerid,0x00ff51AA);
}
if(listitem == 18)
{
SetPlayerColor(playerid,0x00ff00AA);
}
if(listitem == 19)
{
SetPlayerColor(playerid,0x51ff00AA);
}
if(listitem == 20)
{
SetPlayerColor(playerid,0x7bff00AA);
}
if(listitem == 21)
{
SetPlayerColor(playerid,0xaeff00AA);
}
if(listitem == 22)
{
SetPlayerColor(playerid,0xffff00AA);
}
if(listitem == 23)
{
SetPlayerColor(playerid,0xff9900AA);
}
if(listitem == 24)
{
SetPlayerColor(playerid,0xff5e00AA);
}
}
return 1;
}
if(dialogid == 4951)
{
if(response)
{
if(listitem == 0)
{
SetPlayerWeather(playerid, 0);
}
if(listitem == 1)
{
SetPlayerWeather(playerid, 8);
}
if(listitem == 2)
{
SetPlayerWeather(playerid, 9);
}
if(listitem == 3)
{
SetPlayerWeather(playerid, 11);
}
if(listitem == 4)
{
SetPlayerWeather(playerid, 19);
}
if(listitem == 5)
{
SetPlayerWeather(playerid, 20);
}
}
return 1;
}
return 0;
}

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