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

Oldalak: [1] 2 3 ... 5
1
Munkaerő keresése / Mapper keresetik!
« Dátum: 2015. Augusztus 06. - 01:04:34 »
Hozzáértő rp mappert keresek. Nem tudok adni semmi extrat, csak akkor jelentkezz, ha szereted csinalni, es van kedved mapolni egy rp szervernek(egyenlore modnak) csak ugy, hobbi szinten.. Nem erdekel, ha te, aki eppen olvasod igy hulyesegnek tartod, nem kell leirni sem, tudom nehez, de tartsd magadban :D Ha valakit megis megfog a dolog, es szeretne valami egyedit alkotni egy egyedi dologhoz velem, az irjon Pü-t batran :)
Udv, Sramm

2
SA-MP: Szerverfejlesztés / calculateDate - Melyik dátum volt korábban?
« Dátum: 2014. Október 28. - 13:50:05 »
Egy egyszerű kis kód, ami eldönti két dátumról, hogy melyik volt korábban(vagy később).
A kód 0-val tér vissza, ha ugyan az a két dátum,
1-el ha az elsőnek beírt dátum volt korábban,
és 2-vel, ha a másodiknak beírt dátum volt korábban.
 
stock calculateDate(y,m,d,y2,m2,d2)
{
if(y == y2 && m == m2 && d == d2) return 0;
if(y > y2 || y == y && m > m2 || y == y && m == m && d > d2) return 1;
else return 2;
}

3
Archívum / Nevada State RPG
« Dátum: 2014. Augusztus 25. - 16:11:20 »
Nevada State RPG
 

2014
 
Bevezetõ


Sokan ismerhetitek a régi Nevada Role Playt, van aki rossz, van aki jó élményekkel teli. Sajnos a régi szerver majdnem egy év után bezárt, pontos okára nem emlékszem, de arra igen, hogy rengeteg problémánk volt a móddal.
Sokáig hagytuk a dolgot, egészen eddig, amíg elhatároztuk, hogy újranyitjuk a szervert.
A Mód


Sokakban felmerülhetett, hogy esetleg a régi Nevada móddal indítjuk-e újra a szervert. Hát nem. Még a szerver bezárása után kezdtem el írni egy módot egyedül, szépen lassan. Igyekeztem az összes lehetséges hibát kiküszöbölni, ami a Nevadában benne volt, sokkal rendezettebben, és tárhelykímélõbben igyekszem írni a módot, és persze az elsõdleges szempontom a laggmentesség, ami régen elég sokszor elõfordult. Talán kimerem jelenteni, hogy a régi mód nagyon kidolgozott volt, és sok élményt nyújtott. Szeretnénk még ennél is nagyobbat adni, minden apróbb kis rendszer a tökéletességig lesz kidolgozva.
RPG - de mennyire?


Igen, elõször bennem is ez a kérdés fogalmazódott meg. Igazából én GF szervereken \"nõttem fel\", de, hogy õszinte legyek egy idõ után unalmas - és jóval könnyebb is mint egy normális RP szerver. Én szeretem a kihívásokat, innentõl számomra egyértelmû volt, hogy melyik is lesz a kettõ közül. Igyekszünk mindent biztosítani, hogy igazi RP szerverhez illõ szituációkat teremthessünk a mód segítségével. Bár elég sok ötletünk volt, hogy mit hogy kellene, rengeteg mindent elvetettünk, mert befolyásolták volna a játékos cselekményeit. Kizárólag olyan dolgok fognak beleszólni karaktered életébe, amirõl IRL sem te döntesz. (pl betegség) Szerintem ez így elég korrekt. De kicsit térjünk át magára a módra.
A játéktér


A játék hivatalosan Fort Carsonban játszódik, de nagy szerepet kap az LV-ben lévõ raktárnegyed, és egész San Andreasban elszórt gyárak, stb. (ugye milyen jó kis kamionozás érhet ebbõl? :3). De fontosabb dolgok, és eventek mind Fort Carson városára csoportosulnak.
Script rész - kisebb eltérések a megszokottól


Regisztráció, karakterlap, adatok
Regisztrációnál tulajdonképpen minden fontosabb adatot meg kell adnod karakteredrõl - és nem fontosakat is. Így például szemszín,alkat stb. Nyilván sokan találkoztatok ilyennel sok szerveren, de igazából bármit megadhatsz, azt írsz le /do-ba amit akarsz igazából, az adminok úgysem tudnak mindenre figyelni, nem? Nem. A szerveren igyekeztem úgy kialakítani a dolgot, hogy amit megadsz regisztrációnál, az végigkísérje a karaktered életét. Na de hogyan? Ha valaki közel áll hozzád, és megnyomod a jobb klikket ránézve, kilistázza annak adatait. Mindent. (Amit IRL is látsz kívülrõl, nyílván nem írja ki, hogy az illetõ szereti a cicákat..) Minden karakter kap egy egyéni arc azonosítót, amivel bármikor felismerhetõ lesz, még ha más is a skin - persze ha nincs eltakarva az arca.
Még az alkatra szeretnék kicsit bõvebben kitérni. Igazából ahol ilyen lehetõség van, mindenki kigyúrt. Kivétel nélkül, egyszerûen komolyan nem találkoztam mással. (Jó, én is mindig azt RP-zek, de nálam bevett szokás :D)
Most, bár megadhatod, ha nem edzed a tested, akkor szépen lassan \"leeresztesz\" - ezzel is befolyásolva a következõ menüpontban látható try-t. De ha edzed magad, erõsebbeket ütsz, nagyobb lesz a kitartásod (többet tudsz futni), stb. RP teszt nem lesz, úgyis játék közben derül ki, ki mennyit tud, kipuskázni ki lehet bármelyik oldalról, ezért feleslegesnek tartom.
Personal Try
Az elmúlt idõben elég sokat olvasgattam a szerverek témáit, tanulva azoknak hibáiból. A fórumi kritikák elég sokban befolyásolták a szkriptek megírását, igyekszem a nagyközönség felõl elvárt szintet hozni. Ilyen a Personál try (ptry): A szerveren megszüntettük az egyszerû /try parancsot, bár én szükségesnek érzem valamilyen szinten, de belegondolva szinte csak más játékosokon használjuk. Épp ezért hoztam létre a ptry-t, amivel külön személyre szabottan lehet próbálkozni. A siker függ a te karaktered, és a másik játékos karakterétõl is. Lássunk egy szituációt: vegyük izomtalan jánost (továbbiakban ij), a helyi hajléktalant, aki talán már egy botot sem tör ketté egykönnyen, és vegyük kigyúrt pistát (kp), az izomagyú box-világbajnokot. Azért már a szituáció sejtet valamit. Mi történne egy másik RP szerveren? ij beírja a parancsot: /try leütni kp-t -> sikerül, ok elterül kifossza megy vígan a dolgára.. (jobb esetben, ugyanis elég sok mindent ki tud váltani egy ilyen a másik félbõl). Na de nálunk. A regisztrációnál megadott paraméterek(karakterlap) - vagy a játékban késõbb szerzett tapasztalatok alapján kezeli mindkét játékost. Ugye így szegény janinak nincs túl sok esélye kiütni egy ilyen állatot. De nem csak a fizikum számít ám - láttam már csont sovány gyereket leteperni egy izomagyú kancigányt - minden tapasztalat kérdése. De errõl majd a késõbbiekben.
Inventory
Túl sok extra nem található benne, egyenlõre nem vezettük be a tömeget, azaz hogy ha túl nehéz valami nem tudod vinni - azért ez elég abszurd egy RP szerveren, nem igazán van olyan item, amit a karakter ne tudna vinni, még sosem láttam egy szerveren sem olyan hûde nehéz dolgot, vagy ha igen, akkor is elég gázul volt megoldva - azért benzineskannát nem hordoz magánál az ember, maximum a kocsiban - de zsebben semmiképp. Ezért az itemek méret szerint vannak meghatározva. De ha már nehéz dolgok, nyilván, ami nem fér bele a tatyóba vagy zsebbe, de mindenképpen hordozni szeretnéd, ezeket a kezedben kell megtenned. Azért általában ami nagy az nehéz - ha nem is, akkor sem fér be sehova (sajnos), ezért kézben kell cipelni. Egy idõ után elfárad a karakter, ezért le kell tennie kicsit a plusz terhet. Ez befolyásolható edzésekkel, amikrõl már fentebb szó esett.
Sérülés és halál
Elõször én is megörültem az új samp funkcióknak: a fej, láb kar lövés. Na ezt tapasztalni mégsem volt olyan szuper. Általában minden szerveren ész nélkül lövöldöznek, és egy M4 azért elég sok helyre betalál miközben lõnek, szépen floodolja neked a chatet, amíg meg nem halsz - mert minden esetben meghaltam, pedig nem egyszer volt ilyen. Ezért ezzel a fejlesztéssel mi nem élünk.. Minek? Helyette az \"animba esés\" már 70hp-tól megtörténik, úgy gondolom ez viszonylag reális, és bõven marad idõ megállni, mert sokszor van olyan, hogy késõn kapcsolsz, vagy szerver lagg stb, és megölöd. A szerveren van CK. Elõször felfüggesztjük karaktered, azaz elteleportálódsz játékon kívülre, amíg az admin el nem bírálja, hogy jogos volt-e, avagy sem. Ha esetleg nincs fent admin, kickel, és a fórumon tudsz bõvebben érdeklõdni. Mindaddig, amíg felfüggesztve vagy, és van fent admin, fel tudsz járni az adott névvel a szerverre, játszani viszont nem tudsz, ez pont arra jó, hogy panaszodat jelentsd az adminoknak. a felfüggesztés egy hét, ha addig nem jelzed problémád, vagy igazságosnak találod a halált, lezárjuk a karaktered - többé már nem léphetsz be vele.
Bizniszek, cégek, és gazdaság & munkahelyek
Minden gazdasági rendszerre épül. Gyárak, raktárak, árubeszállító cégek, egyéni vállalkozások.. Minden egymásra épül.  Mindegyik ad munkalehetõséget, akár felsõbb szinten is. Te lehetsz a legbefolyásosabb gyárigazgató, vagy egy egyszerû vegyesbolt tulajdonos a sarkon. Minden tõled - és persze a pénzedtõl függ. Minden munkahelyen feljebb kerülhetsz a ranglétrán, de a legmagasabb fokra csakis a pénzeddel juthatsz - viszont kemény munka árán akár igazgató-helyettes is válhat belõled. Nagyon gondolkoztam ezt hogyan kéne kiviteleznem, de végül arra jutottam, hogy a szerver nyitáskor és alapvetõleg mindent a \"gép\" irányít, a gép az igazgató, az alkalmazottak, stb. Amint telik a szerver, egyre jobban halványodik majd a gép uralom. Az elõléptetéseidrõl mindig az igazgató vagy üzletvezetõ dönt, legyen akár gép- vagy játékos. NPC-ket nem tervezünk, maximum az igazgatókat és üzletvezetõket - az azért kicsit sok slotot foglalna, ha minden meg lenne oldva NPC-kel. Ha esetleg vezetõi pozícióba kerülsz, kezelheted az alkalmazottakat, legyen az akár gép, akár játékos. A láthatatlan gép alkalmazott is dolgozik, neve van, és ha mindet elküldöd, a termelés/üzemelés az adott helyen leáll! Ezt jobb észben tartani. A gépek által irányított helyek alapjáraton eladóak, viszont ha játékos kezére kerül, a cég/üzlet teljes sorsáról az adott személy dönt - így ha el akarja adni. Na de akkor miért kéne emberi alkalmazottakat is felvenni, ha ott a gép? Egy játékos sokkal nagyobb bevételeket hoz, és nagyobb, gyorsabb munkaerõ is. (kb. úgy lehetne elképzelni, mint az Euro Truck Simulator 2 legelsõ alkalmazottja, akit felveszel, elég póréhagyma hozzád képest, annyi különbséggel, hogy ott fejlõdnek a botok, itt nem.). Figyelembe kell venni, hogy az alkalmazottakat fizetni kell! Ha csõdbe megy a cég, elárverezi az önkormányzat. Munkalehetõségek a munkaügyi hivatalban találhatóak, az igazgatók felvételt hirdethetnek, és akkor a munkaügyi hivatalban bárki alkalmazott lehet. Továbbá személyes úton is elérhetõ a felvétel. Továbbá a vezetõ állítja a fizetéseket is, így lehet reklamálni. Na de mi történik, ha esetleg valaki inaktív? 1,5 hét bejelentetlen inaktivitás után szintén árverezésre kerül az üzlet. Az árverezés 1 hétig tart, ha senki nem veszi meg a játékosok közül, ismét a gép kezébe kerül a cég. Érdemes árverezésnél lecsapni ezekre, ugyanis ilyenkor jóval olcsóbbak.
Frakciók
3 frakciót terveztem, tulajdonképpen az állam által fenntartott dolgok, azaz: rendõrség, mentõszolgálat és orvosok, tûzoltóság. A többi már megszokott frakciót, mint pl. taxisok,szerelõk,rádiósok mind cégekként elérhetõek bárkinek. Szerver nyitáskor lehetõség adódik korlátozott számú embernek pályázat beadásával pénz nélkül céget alapítani - de csak fent felsoroltakból. A többi a frakciókban a szokásos módokon fog zajlani.
Jármû és házrendszer, illetve hotel
Azért raktam egybe, mert semmi különösebb egyediség nincs bennük. Bármilyen jármûved, és bármilyen házad lehet, ha meg tudod fizetni. Nincsenek korlátozva, hogy mibõl mennyit vehetsz. Az alap dolgok - üzemanyag,motorindítás, csomagtartó, lámpák, sérülés, stb. természetesen megtalálhatóak. Ha egyszer egy kocsi megsemmisül, azt többet nem élesztheted újra, örökre megsemmisül. Mivel ezek általában robbanással történnek, nyomot is hagynak, égõ roncsok formájában - ezzel munkát adva a tûzoltóságnak. A házakat nem lehet majd rendezgetni. Ez azért van így, hogy ne az legyen a szerveren, hogy mindenki gubbaszt a bezárt lakásában rendezgetve, tessék menni RP-zni, rendezgetésre ott a Minecraft, Sims és az egyéb szuperkirálysirály játékok, ott ki lehet élni magad. A városban található egy hotel, amibõl szobát bérelhetsz magadnak, adott idõre. Ha lejár, akkor a szerver értesíteni fog.
Szükségletek
A szerveren megtalálhatóak lesznek a szükségletek, személy szerint én mindig is szerettem õket - de nem minden, ami IRL is tapasztalható. Lesz ürítés, de csak kis dolog - a nagy dolgot már túlzottnak és korlátozónak tartom. Éhség és szomjúság, illetve fáradtság is jelen lesz. Az éhség és szomjúság kivitele egyenlõre még nincs kitalálva, de semmiképpen sem a HP-t szeretnénk csökkenteni/vagy növelni vele. Majd eldõl. A fáradtságnál nem alvásra kell gondolni, ez is rengeteget befolyásolna a szerepjátszásban. Szimplán, ha elfáradsz ->meg kell állnod pihenni. Mint edzésnél, mint futásnál, mint cipelésnél.
Képek


Hamarosan.
Az adminok, és az adminrendszer


Semmi eltérõ a megszokottól, talán annyi, hogy 3 adminszint lesz. Teljesen feleslegesnek tartom az ilyen 7-8 szintes rendszereket, az admin legfõképp attól admin mert megbízunk benne, ezért majdnem minden paranccsal élni fognak. Azért 3 fokozat, mert az elsõt újoncokon használjuk, akik pár fontosabb parancsot még nem használhatnak (pl Ban, jártunk már pórul ilyennel), 2-es szint kb. minden paranccsal rendelkezik, kivéve a nagyon fõadminosokat (pl. admin adása és elvétele), a 3-as értelem szerûen pedig mindennel rendelkezik, de ezt a fejlesztõ csapatnak tartjuk fent.
Egyenlõre ketten dolgozunk a szerveren, Asdelon, mint mapper, és én, mint scripter. Adminokat valószínûleg külön kérjük fel, nem lesz felvétel.
Szerver adatok


Egyenlõre nincs publikus adat.
A Hostot nagyon szépen köszönjük a Whalehostnak! :)
Fejlesztések


Azok a fejlesztések, amiket általában hozzászólásokban is kiposztolunk, de jó, ha benne vannak a fõposztban is.
Még nem voltak fejlesztések..
Utószó


Köszönjük szépen, hogy elolvastad (azért szép kis olvasmány lett :D), remélem találkozunk régi, és új játékosokkal egyaránt!
Bármilyen kritikát elfogadunk, mai értelmesen és nem lenézõen van közölve, ötleteket, észrevételeket és véleményeket nagyon szívesen várjuk :)
Téma folyamatos bõvítés alatt.

4
SA-MP: Szerverfejlesztés / Rag.inc - Fejlett ragozás szavakhoz
« Dátum: 2014. Július 02. - 22:00:09 »
Sziasztok!
Ez az Include szavak ragozására készült, kizárólag magyar szavakkal! Az ötletet, és a függvény paramétereit is innen nyúltam: http://sampforum.hu/index.php?topic=2248.0
Régen használtam, de nem tudott túl sokat, így gondoltam megírom a sajátomat. Kicsit több típussal bõvült:
 

-ból-bõl 1
-ról-rõl 2
-nak-nek 3
-tól-tõl 4
-ra-re 5
-ban-ben 6
-ba-be 7
-val-vel 8
-t 9
-hoz-hez-höz 10

 
rag, és a típus kódja.
Használat tehát:
 
rag(\"Ember\",1);

 
eredmény: emberbõl


Hibák még elõfordulhatnak, nyugodtan lehet próbálgatni mindenféle cifra szóval.
Tesztelni:
 
public OnGameModeInit() //Tesztelni
{
for(new i = 1; i<13; i++) printf(\"%s\",rag(\"románc\",i));
return 1;
}

 


Letöltés:
http://www.solidfiles.com/d/e2a555f78d/rag.inc
vagy kód:



// Ragozás include 1.0 Beta | by:Sramm
#if defined _INC_rag
#endinput
#endif
#define _INC_rag
/*
-ból-bõl 1
-ról-rõl 2
-nak-nek 3
-tól-tõl 4
-ra-re 5
-ban-ben 6
-ba-be 7
-val-vel 8*
-t 9
-hoz-hez-höz 10 *
*/
/* native rag(str[],tipus); */
 
new mely[][] ={\"a\", \"á\", \"o\", \"ó\", \"u\", \"ú\"};
new magas[][] ={\"e\", \"é\", \"i\", \"í\", \"ö\", \"õ\", \"ü\", \"û\"};
new all[][] = {\"a\", \"á\", \"o\", \"ó\", \"u\", \"ú\",\"e\", \"é\", \"i\", \"í\", \"ö\", \"õ\", \"ü\", \"û\"};
new other[][] = {\"m\", \"n\", \"j\", \"l\", \"r\", \"b\", \"d\", \"g\", \"v\",\"p\", \"t\",\"c\"};
 
new melytype[][] ={\"ból\", \"ról\", \"nak\", \"tól\", \"ra\", \"ban\", \"ba\",\"val\",\"t\"};
new magastype[][] ={\"bõl\", \"rõl\", \"nek\", \"tõl\", \"re\", \"ben\", \"be\",\"vel\",\"t\"};
 
stock CheckMaganhangzo(betu[])
{
    for(new i; i<sizeof(all); i++)
    {
        if(strcmp(betu, all, true) == 0) return 1;
}
return 0;
}
stock CheckType(betu[])
{
for(new i; i<sizeof(mely); i++){ if(strcmp(betu, mely, true) == 0) return 1;}
    for(new i; i<sizeof(magas); i++){ if(strcmp(betu, magas, true) == 0) return 2;}
    return 3;
}
/*public OnGameModeInit() //Tesztelni
{
for(new i = 1; i<13; i++) printf(\"%s\",rag(\"románc\",i));
return 1;
}*/
 
stock rag(str[],tipus)
{
new betu[8];
new szo[128];
format(szo,sizeof(szo),str); //másképp nem kezeli rendesen..
    strmid(betu, szo, strlen(szo)-1, strlen(szo));
    if(CheckMaganhangzo(betu) == 0)
{
new lastbetu[8];
    if(tipus == 8)
{
    for(new i; i<sizeof(other); i++)
    {
        if(strcmp(betu, other, true) == 0)
       {
           for(new c; c<strlen(szo); c++)
          {
              strmid(betu, szo, c,c+1);
              if(CheckType(betu) != 3) format(lastbetu,sizeof(lastbetu),betu);
         }
         if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%s%sal\",szo,other);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%s%sel\",szo,other);
           return szo;
      }
   }
   if(strcmp(betu, \"z\", true) == 0)
    {
        for(new i; i<strlen(szo); i++)
       {
           strmid(betu, szo, i,i+1);
           if(CheckType(betu) != 3) format(lastbetu,sizeof(lastbetu),betu);
      }
      strmid(betu, szo, strlen(szo)-2, strlen(szo)-1);
      if(strcmp(betu, \"s\", true) == 0)
       {
           strdel(szo,strlen(szo)-2,strlen(szo));
           if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%ssszal\",szo);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%ssszel\",szo);
      }
      else
      {
         if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%sal\",szo);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%sel\",szo);
      }
        return szo;
   }
   if(strcmp(betu, \"y\", true) == 0)
    {
        for(new i; i<strlen(szo); i++)
       {
           strmid(betu, szo, i,i+1);
           if(CheckType(betu) != 3) format(lastbetu,sizeof(lastbetu),betu);
      }
      strmid(betu, szo, strlen(szo)-2, strlen(szo)-1);
      if(strcmp(betu, \"g\", true) == 0)
       {
           strdel(szo,strlen(szo)-2,strlen(szo));
           if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%sggyal\",szo);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%sggyel\",szo);
      }
        return szo;
   }
   if(strcmp(betu, \"s\", true) == 0)
    {
        for(new i; i<strlen(szo); i++)
       {
           strmid(betu, szo, i,i+1);
           if(CheckType(betu) != 3) format(lastbetu,sizeof(lastbetu),betu);
      }
      strmid(betu, szo, strlen(szo)-2, strlen(szo)-1);
      if(strcmp(betu, \"c\", true) == 0)
       {
           strdel(szo,strlen(szo)-2,strlen(szo));
           if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%sccsal\",szo);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%sccsel\",szo);
      }
      else if(strcmp(betu, \"z\", true) == 0)
       {
           strdel(szo,strlen(szo)-2,strlen(szo));
           if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%szzsal\",szo);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%szzsel\",szo);
      }
             else
      {
         if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%ssal\",szo);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%ssel\",szo);
      }
        return szo;
   }
   if(strcmp(betu, \"k\", true) == 0)
    {
        for(new i; i<strlen(szo); i++)
       {
           strmid(betu, szo, i,i+1);
           if(CheckType(betu) != 3) format(lastbetu,sizeof(lastbetu),betu);
      }
      strmid(betu, szo, strlen(szo)-2, strlen(szo)-1);
      if(strcmp(betu, \"k\", true) == 0)
       {
           if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%sal\",szo);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%sel\",szo);
      }
      else
      {
         if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%skal\",szo);
         if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%skel\",szo);
      }
        return szo;
   }
}
if(tipus == 9)
{
    if(strcmp(betu, \"t\", true) == 0 || strcmp(betu, \"k\", true) == 0 || strcmp(betu, \"c\", true) == 0)
    {
        for(new i; i<strlen(szo); i++)
       {
           strmid(betu, szo, i,i+1);
           if(CheckType(betu) != 3) format(lastbetu,sizeof(lastbetu),betu);
      }
      if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%sot\",szo);
      if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%set\",szo);
        return szo;
   }
}
    for(new i; i<strlen(szo); i++)
    {
        strmid(betu, szo, i,i+1);
        if(CheckType(betu) != 3) format(lastbetu,sizeof(lastbetu),betu);
}
if(tipus == 10)
{
    if(strcmp(betu, \"ö\", true) == 0)
    {
        strdel(szo,strlen(szo)-1, strlen(szo));
        format(szo,sizeof(szo),\"%sõhöz\",szo);
        return szo;
   }
   if(strcmp(betu, \"õ\", true) == 0)
    {
        strdel(szo,strlen(szo)-1, strlen(szo));
        format(szo,sizeof(szo),\"%shöz\",szo);
        return szo;
   }
}
if(CheckType(lastbetu) == 1) format(szo,sizeof(szo),\"%s%s\",szo,melytype[tipus-1]);
if(CheckType(lastbetu) == 2) format(szo,sizeof(szo),\"%s%s\",szo,magastype[tipus-1]);
}
    if(CheckMaganhangzo(betu) == 1)
    {
    if(strcmp(betu, \"a\", true) == 0)
    {
        strdel(szo,strlen(szo)-1, strlen(szo));
        format(szo,sizeof(szo),\"%sá%s\",szo,melytype[tipus-1]);
        return szo;
}
if(strcmp(betu, \"e\", true) == 0)
    {
        strdel(szo,strlen(szo)-1, strlen(szo));
        format(szo,sizeof(szo),\"%sé%s\",szo,magastype[tipus-1]);
        return szo;
}
if(tipus == 10)
{
    if(strcmp(betu, \"ö\", true) == 0)
    {
        strdel(szo,strlen(szo)-1, strlen(szo));
        format(szo,sizeof(szo),\"%sõhöz\",szo);
        return szo;
   }
   if(strcmp(betu, \"õ\", true) == 0)
    {
        strdel(szo,strlen(szo)-1, strlen(szo));
        format(szo,sizeof(szo),\"%shöz\",szo);
        return szo;
   }
}
if(CheckType(betu) == 1) format(szo,sizeof(szo),\"%s%s\",szo,melytype[tipus-1]);
if(CheckType(betu) == 2) format(szo,sizeof(szo),\"%s%s\",szo,magastype[tipus-1]);
return szo;
}
return szo;
}

 
 
Használjátok egészséggel :)

5
Sziasztok!
Ezzel a függvénykönyvtárral egyszerûen lekérhetõ, hogy a jármû milyen módon semmisült meg. (Víz vagy robbanás)
Így így fog kinézni:
 
public OnVehicleDeath(vehicleid,killerid,reason)

 
Ha felrobbant, akkor a reason 0, ha vízbe esett, akkor 1.
Példa:
 

#include <vehdeath>
public OnVehicleDeath(vehicleid, killerid,reason)
{
    if(reason == 0) return SendClientMessage(killerid,-1,\"Felrobbant..\");
else return SendClientMessage(killerid,-1,\"Víz\");
}

 


Letöltés:
http://www.solidfiles.com/d/170ecda80f/vehdeath.inc
vagy kód:



#if defined _INC_vehdeath
#endinput
#endif
#define _INC_vehdeath
 
public OnVehicleDeath(vehicleid, killerid)
{
    new Float:vhealth;
    GetVehicleHealth(vehicleid,vhealth);
    if(vhealth < 250) OnVehicleDeathEx(vehicleid,killerid,0);
    else OnVehicleDeathEx(vehicleid,killerid,1);
    return 1;
}
#if defined _ALS_OnVehicleDeath
    #undef OnVehicleDeath
#else
    #define _ALS_OnVehicleDeath
#endif
#define OnVehicleDeath OnVehicleDeathEx
#if defined OnVehicleDeathEx
    forward OnVehicleDeathEx(vehicleid,killerid,reason);
#endif

6
Készülõ munkák / Hungarian Mini Games
« Dátum: 2014. Június 01. - 17:25:24 »
Sziasztok!
Nem tudom mennyien ismeritek az ilyen Mini Games szervereket (Ha valaki nem ismerné itt egy videó egyrõl.)
A játéktípusok haladása:
 

1: DM \"tick.png\"
2: TDM \"tick.png\"
3: Race \"hourglass_delete.png\"
4: Parkour \"hourglass_delete.png\"
5: TDM-LEVELS \"tick.png\"
6: Bombing \"tick.png\"
7: CTC (Capture the car)  \"tick.png\"
8: Defending (bázisbevédõs) \"tick.png\"
9: Zombie ?  \"cross.png\"
10: LMS (Last Man Standing) \"tick.png\"
11: TLMS (Team Last Man Standing)     \"tick.png\"

[/quote]
További fejlesztések:
 

Regisztrációs rendszer  \"tick.png\"
Reakció teszt játék  \"cross.png\"
Shop (A pénzbõl amit ölésért kapsz) \"cross.png\"
VIP System (?)  \"cross.png\"
Anticheat  \"cross.png\"
Admin rendszer  \"cross.png\"
Néhány alap player parancs/gyorsgombok  \"cross.png\"
Mapok \"hourglass_delete.png\"
Díszítések/színezések  \"hourglass_delete.png\"
Statisztikalap  \"cross.png\"
Random szövegek  \"hourglass_delete.png\"

[/quote]
\"tick.png\" - Kész
\"cross.png\" - MÉG Nincs kész
\"hourglass_delete.png\" - Folyamatban/félkész
A mód jól haladgat, viszont mapper egyelõre nincs. Ha valaki esetleg lát fantáziát ebben, annak várom a jelentkezését. :) Nemsokára rakok ki képet, hátha felkelti valaki érdeklõdését.
(Azért nem hamarosan nyíló szerver, mert még nem vagyok biztos a szerver készítésben.)
Képek az alap módról:
\"sa-mp-0140d770.png\"
\"sa-mp-0165fab9.png\"
\"sa-mp-015f5aae.png\"

7
SA-MP: Szerverfejlesztés / Sramm\'s Inventory System v. 5.0 (Új verzió)
« Dátum: 2014. Május 10. - 16:53:35 »
Sramm\'s Inventory System 5.0
 


 

 
Bevezetõ
Az alábbi filterscript azért jött létre, mert az RPG módomhoz kerestem egy Inventory(Hátizsák) rendszert, de sajnos nem találtam olyat, ami megfelelõ lett volna, ezért kénytelen voltam én írni egyet.
Fejlesztési napló:
v. 5.0
- Apróbb bugjavítások
- Az egyik változó neve akadt más incekkel, ez javítva.
- A kategória nélküli 3.0 verzió frissítve lett, már abban is eldobhatjuk, vagy átadhatjuk tárgyainkat.
- Választható rendszerek (kategóriás legyen-e, vagy ne.)
- Új fajta felépítés
v. 4.1
- ID elírás javítva
- Tárgy eldobás javítva. (csak egyet lehetett eldobni)
v. 4.0
- Új alapkövek: Kategóriák hozzáadása a játékhoz
- Új, játékos funkciók: Használat,eldobás,átadás.
- Új kinézet
- Frissített tesztfilterszkript hozzáadva
v. 3.0
- Más játékosokkal való lehetõségek hozzáadása
- Apróbb bugjavítások
- Tesztfilterszkript frissítés
v. 2.0
- Az elsõ verzió teljes cserélése és bugtalanítása.
v. 1.0
- Elsõ kiadott verzió
Függvények (Amennyiben nem használsz kategóriát, a cat[] részeket hagyd ki.)
AddItem(playerid,item[],amount,cat[])


Hozzáad a táskához egy tárgyat.
Paraméterek:

playerid - A játékos, akinek a táskájához hozzá akarsz adni valamit.
item[] - A tárgy neve, amit hozzá akarsz adni.
amount - Amennyi tárgyat akarsz hozzáadni.
cat[] - Amelyik kategóriába be szeretnéd helyezni.
Példa:

CMD:givememedikit(playerid) //Amikor beírja a parancsot
{
AddItem(playerid,\"Medikit\",1,\"Orvosságok\"); //Adunk neki egy darab \"Medikit\" nevû tárgyat az \"Orvosságok\" kategóriába
return 1;
}

Megjegyzés: Ez mindig csak hozzáad tárgyat, nem megváltoztatja. Azaz, ha van már 1 tárgyad, és te 5-t írsz a darabszámhoz, akkor 6 tárgya lesz, és nem 5.
RemoveItem(playerid,item[],amount,cat[])


Elvesz a táskából egy tárgyat.
Paraméterek:

playerid - A játékos, akinek a táskájából el akarsz venni valamit.
item[] - A tárgy neve, amit el akarsz venni.
amount - Amennyi tárgyat el akarsz venni.
cat[] - Amelyik kategóriából törölni szeretnéd.
Példa:

CMD:removememedikit(playerid) //Amikor beírja a parancsot
{
RemoveItem(playerid,\"Medikit\",1,\"Orvosságok\"); //Elveszünk egy darab \"Medikit\" nevû tárgyat az \"Orvosságok\" kategóriából
return 1;
}

ShowItems(playerid)


Megmutatja a táska tartalmát.
Paraméterek:

playerid - A játékos, akinek megmutatjuk táskát.
Példa:

CMD:hatizsakom(playerid) //Amikor beírja a parancsot
{
ShowItems(playerid); //Megmutatjuk neki a táskáját.
return 1;
}

ShowItemsEx(playerid,id,bool:type)


Megmutatja a táska tartalmát egy másik játékosnak.
Paraméterek:

playerid - A játékos, akié a táska.
id - A játékos, akinek megmutatjuk a táskát.
type - true, ha elveheti a tárgyat, false, ha nem
Példa:

CMD:getinv(playerid,params[])
{
new id,type;
    if(sscanf(params,\"ui\",id,type)) return SendClientMessage(playerid,-1,\"Használat: /getinv [id/név] [Típus] (Ha a típus 0, nem veheti el tõle a tárgyat, ha 1 igen)\");
    if(type != 0 && type != 1) return 1;
if(type == 0) ShowItemsEx(id,playerid,false);
else ShowItemsEx(id,playerid,true);
return 1;
}

GetItemSlot(playerid,item[],cat[])


Lekéri, hogy melyik helyen van egy tárgy.
Paraméterek:

playerid - A játékos, akinek a táskájából lekéri.
item[] - A tárgy neve, amit le akarunk kérni.
cat[] - Melyik kategóriában van a tárgy
Példa:

CMD:holamedikit(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"A Medikit ezen a helyen van: \'%d\'\",GetItemSlot(playerid,\"Medikit\",\"Orvosságok\"));
SendClientMessage(playerid,-1,msg);
return 1;
}

SaveItems(playerid)


Lementi egy játékos hátizsákját.
Paraméterek:

playerid - A játékos, akinek lementjük.
Példa:

CMD:saveinv(playerid) //Amikor beírja a parancsot
{
SaveItems(playerid);
return 1;
}

LoadItems(playerid)


Betölti egy játékos hátizsákját.
Paraméterek:

playerid - A játékos, akinek betöltjük.
Példa:

CMD:loadinv(playerid) //Amikor beírja a parancsot
{
LoadItems(playerid);
return 1;
}

OnItemResponse(playerid,response,listitem,inputtext[])


Lementi egy játékos hátizsákját.
Paraméterek:

playerid - A játékos, aki a dialogot megnyomja.
response - Ha a jó gombot nyomja.
listitem - Melyikre nyom.
inputtext[] - A tárgy neve.
FONTOS:
Az alábbi kódot muszáj ide raknod, hogy ki tudd választani a tárgyat.

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
      OnItemResponse(playerid,dialogid,response,listitem,inputtext);
      return 0;
}

GetItemAmount(playerid,item[],cat[])


Lekéri, hogy mennyi van az adott tárgyból.
Paraméterek:

playerid - A játékos, akinek a táskájából lekéri.
item[] - A tárgy neve, aminek a darabszámát le akarjuk kérni.
cat[] - Melyik kategóriában van a tárgy.
Példa:

CMD:mennyimedikitemvan(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Ennyi Medikited van: \'%d\'\",GetItemAmount(playerid,\"Medikit\",\"Orvosságok\"));
SendClientMessage(playerid,-1,msg);
return 1;
}

IsPlayerOwnItem(playerid,item[])


Lekéri, hogy a játékosnál van-e ilyen item.
Paraméterek:

playerid - A játékos, akinek a táskájából lekéri.
item[] - A tárgy neve, amit le akarunk kérni.
Példa:

CMD:vanemedikit(playerid) //Amikor beírja a parancsot
{
if(IsPlayerOwnItem(playerid,\"Medikit\")) return SendClientMessage(playerid,-1,\"Van nálad medikit.\");
else if(!IsPlayerOwnItem(playerid,\"Medikit\")) return SendClientMessage(playerid,-1,\"Nincs nálad medikit.\");
return 1;
}

GetItemName(playerid,slot)


Lekéri a sloton lévõ tárgy nevét.
Paraméterek:

playerid - A játékos, akinek lekérjük.
slot - Aminek a nevét lekérjük.
Példa:

CMD:getname(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Slot 1-en lévõ tárgy neve: \'%s\'\",GetItemName(playerid,1));
SendClientMessage(playerid,-1,msg);
        return 1;
}

GetItemCategory(playerid,slot)


Lekéri a sloton lévõ tárgy kategóriáját.
Paraméterek:

playerid - A játékos, akinek lekérjük.
slot - Aminek a nevét lekérjük.
Példa:

CMD:getcat(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Slot 1-en lévõ tárgy kategóriája: \'%s\'\",GetItemCategory(playerid,1));
SendClientMessage(playerid,-1,msg);
        return 1;
}

ResetPlayerItems(playerid)


Nullázza az játékos összes tárgyát.
Paraméterek:

playerid - A játékos, akinek nullázni szeretnénk.
Példa:

CMD:resetitem(playerid) //Amikor beírja a parancsot
{
ResetPlayerItems(playerid);
return 1;
}

Eljárások
public OnPlayerUseItem(playerid,item[])


Akkor hívódik meg, amikor egy játékos rákattint egy tárgyra a hátiszáknál, ami a ShowItems(playerid)-nél hívódik meg.

Paraméterek:

playerid - A játékos, aki rányomott.
item[] - Annak a tárgynak a neve, amelyikre rányomott.
Példa:
Ha pl. én adok valakinek egy Medikit-et:

AddItem(playerid,\"Medikit\",1); //Megadom a \"Medikit\" nevû tárgyat a játékosnak

És utána õ rákattint:
public OnPlayerUseItem(playerid,item[])
{
if(CompareEx(item,\"Medikit\")) //Tehát ha egyezik annak a tárgynak a neve, amire rákattintottam a \"Medikit\"-tel... (Az inc tartalmazza a CompareEx-et)
{
    SetPlayerHealth(playerid,100); //Beállítjuk a játékos életét 100-ra
    RemoveItem(playerid,\"Medikit\",1); //És elvesszük tõle, mert ugye már használta.
    return 1;
}
return 1;
}

Megjegyzés: Ha olyan tárgyat adsz neki, amit aztán itt nem kezelsz, arra hiába kattint rá, nem fog történni semmi.
public OnPlayerUseItemEx(playerid,fromplayerid,item[])


Akkor hívódik meg, amikor egy játékos rákattint egy tárgyra egy másik játékos táskájában, ami a ShowItemsEx()-nél hívódik meg.

Paraméterek:

playerid - A játékos, aki rányomott.
fromplayerid - A játékos, akinek a táskájában túrkált.
item[] - Annak a tárgynak a neve, amelyikre rányomott.
Példa:
public OnPlayerUseItemEx(playerid,fromplayerid,item[])
{
new amount = GetItemAmount(fromplayerid,item);
        RemoveItem(fromplayerid,item,amount); //elvesszük az elõzõ tulajtól
AddItem(playerid,item,amount); //odaadjuk az újnak
return 1;
}

Fontos:
1. Az alábbi kódot muszáj ide raknod, hogy ki tudd választani a tárgyakat.

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
      OnItemResponse(playerid,dialogid,response);
      return 0;
}

2. Létre kell hoznod egy \"Inv\" mappát, hogy tudja mibe menteni a rendszer a dolgokat.
3. Az 5.0-ás verziótól kezdve az #include <inventory> elé be kell raknod, hogy
szeretnél-e használni kategóriákat, vagy sem.
Tehát így kell kinéznie:
#define INVENTORY_WITH_CATEGORY 1 // Ha 1, akkor lesznek kategóriák, ha 0, akkor nem
#include <inventory>

Megjegyzések
Ha növeled a maximum tárgyakat, minden játékost, akinek elõtte kevesebb volt szinkronizálnod kell, különben kifagyhat a szerver!
Ha bugot találsz, vagy ötleted van a témában elküldheted. :)
Külön köszönet
F0rian - Compare
Videó, képanyag
v. 2.0, v. 3.0 -

v. 4.1 -

Letöltés
v. 5.0 (Ajánlott)
srinv5.0.rar (Inventory pack)
v. 4.1
inventory.rar (Include+Inv mappa tesztfájllal+Teszt filterscript) |
v. 3.0
inventory.rar (Include+Inv mappa tesztfájllal+Teszt filterscript) | inventory.inc
v. 2.0
inventory.rar (Include+Inv mappa tesztfájllal+Teszt filterscript) | inventory.inc
Kód: (v. 4.1)



/*
/*
         Sramm\'s Inventory System
& Készítette: Sramm
& Utoljára frissítve: 2014.05.11
& Veziószám: 4.1
(c) Sramm 2013-2014
*/
#include <dini>
#if defined _INC_inventory
#endinput
#endif
#define _INC_inventory
#define SFMC(%0,%1,%2) do{new _str[128]; format(_str,128,%2); SendClientMessage(%0,%1,_str);}while(INVFALSE)
#define MAX_ITEMS 100
#define MAX_DROP_ITEMS 200
#define ITEM_DIALOG 5842
#define ITEM_DIALOG_EX ITEM_DIALOG+10
#define ITEM_DIALOG_CAT ITEM_DIALOG_EX+10
#define ITEM_DIALOG_ULTRA ITEM_DIALOG_CAT+10
 
/*
native AddItem(playerid,item[],amount,cat[]);
native RemoveItem(playerid,item[],amount,cat[]);
native ShowItems(playerid);
native ShowItemsEx(playerid,id);
native ShowRealItems(playerid,cat[]);
native GetItemSlot(playerid,item[],cat[]);
native SaveItems(playerid);
native LoadItems(playerid);
native OnItemResponse(playerid,response,listitem,inputtext[]);
native GetItemAmount(playerid,item[],cat[]);
native IsPlayerOwnItem(playerid,item[]);
native ResetPlayerItems(playerid);
native GetItemName(playerid,itemslot);
native GetItemCategory(playerid,itemslot);
*/
new INVFALSE = false;
new ItemName[MAX_PLAYERS][MAX_ITEMS][36];
new ItemCat[MAX_PLAYERS][MAX_ITEMS][36];
new ItemAmount[MAX_PLAYERS][MAX_ITEMS];
new ItemID[MAX_PLAYERS];
new listItem[MAX_ITEMS];
new ItemPlayer[MAX_PLAYERS] = INVALID_PLAYER_ID;
new ItemPlayerID[MAX_PLAYERS];
enum ditInfo
{
Text3D:ittext,
Float:posX,
Float:posY,
Float:posZ,
VW,
INV,
itname[36],
itcat[36],
itamount,
itobject
};
new DropItemInfo[MAX_ITEMS][ditInfo];
forward OnPlayerUseItem(playerid,item[]);
forward OnPlayerUseItemEx(playerid,fromplayerid,item[]);
stock RemoveHexColorFromString(string[])
{
    new
        pos[2];
    pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
for(new i;i < strlen(string); i++)
{
    if(pos[0]+7 == pos[1])
    {
        strdel(string, pos[0], pos[1]+1);
        pos[0] = strfind(string,\"{\",true,0);
   pos[1] = strfind(string,\"}\",true,0);
}
}
return 1;
}
stock GetNamei(playerid)
{
new n[MAX_PLAYER_NAME];
GetPlayerName(playerid,n,sizeof(n));
return n;
}
 
stock CompareEx(comp[], with[]) //By: Fl0rian
{
new LenghtComp = strlen(comp);
new LenghtWith = strlen(with);
new Character;
if( LenghtComp != LenghtWith ) return false;
for( new i = 0; i < LenghtComp; i++ )
{
    if( comp == with )
    {
        Character++;
}
}
if( LenghtComp == Character ) return true;
return false;
}
stock DropItem(playerid,id,amount)
{
for(new i; i<MAX_DROP_ITEMS; i++)
{
   if(!IsValidObject(DropItemInfo[itobject]))
   {
      new Float:Xp,Float:Yp,Float:Zp;
      GetPlayerPos(playerid, Xp, Yp, Zp);
      DropItemInfo[itobject] = CreateObject(1210, Xp, Yp, Zp-1, 0.0, 0.0, 0.0);
      DropItemInfo[ittext] = Create3DTextLabel(ItemName[playerid][id], -1, Xp,Yp,Zp, 10.0,GetPlayerVirtualWorld(playerid),1);
      DropItemInfo[posX] = Xp;
      DropItemInfo[posY] = Yp;
      DropItemInfo[posZ] = Zp;
      DropItemInfo[VW] = GetPlayerVirtualWorld(playerid);
      DropItemInfo[iNV] = GetPlayerInterior(playerid);
      format(DropItemInfo[itname],36,ItemName[playerid][id]);
      format(DropItemInfo[itcat],36,ItemCat[playerid][id]);
      DropItemInfo[itamount] = amount;
      RemoveItem(playerid,ItemName[playerid][id],amount,ItemCat[playerid][id]);
      return 1;
   }
}
return 1;
}
stock PickUpItem(playerid)
{
    for(new i; i<MAX_DROP_ITEMS; i++)
    {
if(IsPlayerInRangeOfPoint(playerid,3.0,DropItemInfo[posX],DropItemInfo[posY],DropItemInfo[posZ]) && GetPlayerVirtualWorld(playerid) == DropItemInfo[VW] && GetPlayerInterior(playerid) == DropItemInfo[iNV])
{
   new sucess = AddItem(playerid,DropItemInfo[itname],DropItemInfo[itamount],DropItemInfo[itcat]);
   if(sucess)
   {
       Delete3DTextLabel(DropItemInfo[ittext]);
       DestroyObject(DropItemInfo[itobject]);
       return 1;
    }
}
}
return 1;
}
stock AddItem(playerid,item[],amount,category[] = \"Egyéb\")
{
if(amount <= 0) return 0;
if(strlen(item) > 128) return 0;
new bool: count[2] = false;
for(new i; i<MAX_ITEMS; i++)
{
    if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],category))
    {
   count[0] = true;
        ItemAmount[playerid] += amount;
        return 1;
}
}
if(count[0] == false)
{
    for(new i; i<MAX_ITEMS; i++)
{
    if(CompareEx(ItemName[playerid],\"Üres\"))
    {
      count[1] = true;
      format(ItemName[playerid],36,\"%s\",item);
      format(ItemCat[playerid],36,\"%s\",category);
        ItemAmount[playerid] = amount;
        return 1;
   }
}
}
if(count[1] != true) return SendClientMessage(playerid,-1,\"Betelt a tárhelyed, üríts belõle.\"),0;
return 1;
}
stock RemoveItemEx(playerid,i)
{
format(ItemName[playerid],36,\"%s\",\"Üres\");
format(ItemCat[playerid],36,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
return 1;
}
stock RemoveItem(playerid,item[],amount,category[])
{
    for(new i; i<MAX_ITEMS; i++)
{
        if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],category))
{
    if(ItemAmount[playerid] > amount)
    {
        ItemAmount[playerid] -= amount;
   }
   else if(ItemAmount[playerid] == amount || ItemAmount[playerid] < amount)
   {
      format(ItemName[playerid],36,\"%s\",\"Üres\");
      format(ItemCat[playerid],36,\"%s\",\"Üres\");
      ItemAmount[playerid] = 0;
   }
   return 1;
}
}
return 1;
}
stock ShowItems(playerid)
{
new msg[128],dialogstr[3000],bool:c;
for(new i; i<MAX_ITEMS; i++)
{
    if(!CompareEx(ItemCat[playerid],\"Üres\"))
    {
        c = true;
   format(msg,128,\"\\n%s\",ItemCat[playerid]);
   if(strfind(dialogstr, msg, true) == -1)
   {
      strcat(dialogstr,msg);
   }
}
}
if(c != false)
{
ShowPlayerDialog(playerid,ITEM_DIALOG_CAT,DIALOG_STYLE_LIST,\"Táska tartalma\",dialogstr,\"Választ\",\"Mégsem\");
}
else SendClientMessage( playerid, -1, \"Itt nincs semmi.\" );
return 1;
}
 
stock ShowRealItems(playerid,cat[])
{
new msg[128],dialogstr[3000],bool:c,count=-1;
for(new i; i<MAX_ITEMS; i++)
{
    if(!CompareEx(ItemName[playerid],\"Üres\") && CompareEx(ItemCat[playerid],cat))
    {
        c = true;
        count++;
   format(msg,128,\"\\n[%ddb] %s\",ItemAmount[playerid],ItemName[playerid]);
   strcat(dialogstr,msg);
   listItem[count] = i;
}
}
if(c != false) ShowPlayerDialog(playerid,ITEM_DIALOG,DIALOG_STYLE_LIST,\"Táska tartalma\",dialogstr,\"Választ\",\"Mégsem\");
else SendClientMessage( playerid, -1, \"Itt nincs semmi.\" );
return 1;
}
 
stock ShowItemsEx(playerid,id,bool:use = false)
{
new msg[128],dialogstr[3000],bool:c;
for(new i; i<MAX_ITEMS; i++)
{
    if(!CompareEx(ItemName[playerid],\"Üres\"))
    {
        c = true;
   format(msg,128,\"\\n[%d] %s\",ItemAmount[playerid],ItemName[playerid]);
   strcat(dialogstr,msg);
}
}
if(use == false)
{
if(c != false) ShowPlayerDialog(id,ITEM_DIALOG_EX,DIALOG_STYLE_LIST,\"Tárhely\",dialogstr,\"\",\"Oké\");
else SendClientMessage( id, -1, \"Nincs semmi a táskájában.\" );
}
else
{
    ItemPlayer[id] = playerid;
if(c != false) ShowPlayerDialog(id,ITEM_DIALOG_EX+1,DIALOG_STYLE_LIST,\"Tárhely\",dialogstr,\"\",\"Oké\");
else SendClientMessage( id, -1, \"Nincs semmi a táskájában.\" );
}
return 1;
}
 
stock GetItemSlot(playerid,item[],cat[])
{
    for(new i; i<MAX_ITEMS; i++)
    {
        if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],cat)) return i;
}
return -1;
}
stock IsPlayerOwnItem(playerid,item[])
{
    for(new i; i<MAX_ITEMS; i++)
    {
        if(CompareEx(ItemName[playerid],item)) return 1;
}
return 0;
}
stock GetItemAmount(playerid,item[],cat[])
{
    for(new i; i<MAX_ITEMS; i++)
    {
        if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],cat)) return ItemAmount[playerid];
}
return -1;
}
stock GetItemName(playerid,itemslot) return ItemName[playerid][itemslot];
stock GetItemCategory(playerid,itemslot) return ItemCat[playerid][itemslot];
stock ResetPlayerItems(playerid)
{
for(new i; i<MAX_ITEMS; i++)
{
    format(ItemName[playerid],36,\"%s\",\"Üres\");
    format(ItemCat[playerid],36,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
}
return 1;
}
stock OnItemResponse(playerid, dialogid, response,listitem, inputtext[])
{
    if(dialogid == ITEM_DIALOG_CAT)
    {
        if(!response) return 1;
ShowRealItems(playerid,inputtext);
return 1;
}
if(dialogid == ITEM_DIALOG)
    {
       if(!response) return 1;
       ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+1,DIALOG_STYLE_LIST,\"Mi legyen vele?\",\"Használat\\nEldobás\\nÁtadás\",\"Oké\",\"Mégsem\");
       ItemID[playerid] = listItem[listitem];
}
if(dialogid == ITEM_DIALOG_EX)
    {
       if(!response) return 1;
if(listitem != 0) return SendClientMessage(playerid,-1,\"Mások tárgyát nem használhatod!\");
}
if(dialogid == ITEM_DIALOG_EX+1)
    {
       if(!response) return 1,ItemPlayer[playerid] = INVALID_PLAYER_ID;
if(listitem != 0)
{
    new str[128];
    RemoveHexColorFromString(inputtext);
    format(str,128,inputtext[strfind(inputtext,\"]\")+1]);
   CallLocalFunction( \"OnPlayerUseItemEx\", \"iis\", playerid,ItemPlayer[playerid], str );
   ItemPlayer[playerid] = INVALID_PLAYER_ID;
}
}
    if(dialogid == ITEM_DIALOG_ULTRA)
{
if(response) ShowItems(playerid);
else ShowItems(playerid);
return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+1)
{
    if(!response) return 1;
    //ShowPlayerDialog(playerid,11,DIALOG_STYLE_LIST,\"Mi legyen vele?\",\"Használat\\nEldobás\\nÁthelyezés\",\"Oké\",\"Mégsem\");
    if(listitem == 0)
    {
   CallLocalFunction( \"OnPlayerUseItem\", \"is\", playerid, ItemName[playerid][itemID[playerid]] );
   ItemID[playerid] = -1;
}
if(listitem == 1)
{
    ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
}
if(listitem == 2)
{
    ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
}
}
if(dialogid == ITEM_DIALOG_ULTRA+3)
{
    if(!response) return 1;
    if(!strval(inputtext)) return SendClientMessage(playerid,-1,\"Csak számokat adj meg!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
    if(strval(inputtext) > ItemAmount[playerid][itemID[playerid]]) return SendClientMessage(playerid,-1,\"Nincs ennyid ebbõl a tárgyból!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
    DropItem(playerid,ItemID[playerid],strval(inputtext));
    ItemID[playerid] = -1;
    return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+4)
{
    if(!response) return 1;
    if(!strval(inputtext) && !CompareEx(inputtext,\"0\")) return SendClientMessage(playerid,-1,\"Csak számokat adj meg!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
    if(!IsPlayerConnected(strval(inputtext))) return SendClientMessage(playerid,-1,\"Nincs ilyen játékos!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
    if(!PTP(playerid,strval(inputtext))) return SendClientMessage(playerid,-1,\"Nem vagy a játékos közelében.\");
    if(strval(inputtext) == playerid) return SendClientMessage(playerid,-1,\"Magadnak nem adhatod át!\");
    SFMC(strval(inputtext),-1,\"%s át szeretné adni ezt a tárgyat: %s. Elfogadod?\",GetNamei(playerid),ItemName[playerid][itemID[playerid]]);
    ShowPlayerDialog(strval(inputtext),ITEM_DIALOG_ULTRA+5,DIALOG_STYLE_LIST,\"Átadás\",\"Elfogadom.\\nNem fogadom el.\",\"Oké\",\"Mégsem\");
    ItemPlayerID[strval(inputtext)] = playerid;
    return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+5)
{
    if(!response) return 1;
    if(listitem == 0)
{
    new id = ItemPlayerID[playerid];
   new i = ItemID[id];
    new sucess = AddItem(playerid,ItemName[id],ItemAmount[id],ItemCat[id]);
    if(sucess)
    {
        SFMC(id,-1,\"%s elfogadta a tárgyat.\",GetNamei(playerid));
        SendClientMessage(playerid,-1,\"Sikeresen elfogadtad a tárgyat, elhelyezted a zsebedben.\");
        RemoveItem(playerid,ItemName[id],1,ItemCat[id]);
        ItemID[id] = -1;
        ItemPlayerID[playerid] = -1;
        return 1;
   }
   else
   {
       SendClientMessage(playerid,-1,\"Nincs elég hely a zsebedben!\");
       return 1;
   }
}
if(listitem == 2)
{
    new id = ItemPlayerID[playerid];
        SFMC(id,-1,\"%s nem fogadta el a tárgyat.\",GetNamei(playerid));
        SendClientMessage(playerid,-1,\"Elutasítottad a tárgyat.\");
        ItemID[id] = -1;
        ItemPlayerID[playerid] = -1;
    return 1;
}
return 1;
}
return 1;
}
stock SaveItems(playerid)
{
new m[36],itemfile[64];
    format(itemfile,sizeof(itemfile),\"Inv/%s.ini\",GetNamei(playerid));
    for(new i; i<MAX_ITEMS; i++)
{
    format(m,36,\"Item%d\",i);
    dini_Set(itemfile,m,ItemName[playerid]);
    format(m,36,\"Itemcat%d\",i);
    dini_Set(itemfile,m,ItemCat[playerid]);
    format(m,36,\"Itemamount%d\",i);
    dini_IntSet(itemfile,m,ItemAmount[playerid]);
}
return 1;
}
 
stock LoadItems(playerid)
{
new m[128],itemfile[128];
    format(itemfile,sizeof(itemfile),\"Inv/%s.ini\",GetNamei(playerid));
    if(dini_Exists(itemfile))
    {
        ResetPlayerItems(playerid);
    for(new i; i<MAX_ITEMS; i++)
{
    format(m,128,\"Item%d\",i);
    format(ItemName[playerid],24,\"%s\",dini_Get(itemfile,m));
    format(m,128,\"Itemcat%d\",i);
    format(ItemCat[playerid],36,\"%s\",dini_Get(itemfile,m));
    format(m,128,\"Itemamount%d\",i);
    ItemAmount[playerid] = dini_Int(itemfile,m);
}
}
else
{
dini_Create(itemfile);
ResetPlayerItems(playerid);
SaveItems(playerid);
}
return 1;
}
stock PTP(playerid,id,Float:radi = 2.0)
{
new Float:pos[3];
GetPlayerPos(id,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,radi,pos[0],pos[1],pos[2])) return 1;
else return 0;
}

8
Segítségkérés / MYSQL In SAMP?
« Dátum: 2014. Május 03. - 17:20:20 »
Sziasztok!
Azt szeretném megkérdezni, hogy a samp mysql pluginjain belül bármilyen eljárás lehetséges?
Mert igazság szerint én oszlopot szeretnék létrehozni sampon keresztül, viszont nem tudom, hogy azt engedélyezi-e, és nem csak az UPDATE,SET,SELECT, stb. eljárásokkal rendelkezik, tesztelni pedig nem tudom. Valaki meg tudná mondani?
(Ezt akarnám egyébként:
 
ALTER TABLE `users` ADD `sajt` INT( 11 ) NOT NULL 

 
Ilyen formában:
 
format(query, sizeof(query), \"ALTER TABLE `%s` ADD `%s` INT( 11 ) NOT NULL\",file,mode);
mysql_query(query);

)
Elõre is köszönöm.

9
SA-MP: Szerverfejlesztés / Vehicle Radio (Jármû rádió) BETA
« Dátum: 2014. Május 02. - 21:24:01 »

Sramm\'s Vehicle Radio BETA


 

Miért béta?
Publikálom egyenlõre nagyon béta includem, fõleg arra, hogy valaki tesztelje a mûködését, mert nekem nincs rá módom, és jelentgesse nekem a bugokat, vagy hogy egyáltalán mûködik -e, viszonylag részletes beszámolóval - mit csinál, stb.
Mit is tud?
A lényege annyi, hogy a jármûben aktiválja a rádiót, és azt hallani lehet kívül is, belül is. Ahogy távolodunk egyre halkabb, közvetlen mellette pedig hangosabb.
Funkciók, használat
 
VehicleRadio(vehicleid,link[],bool:turn);

 
Paraméterek:
vehicleid - A jármû ID-je, amelynek a rádióját szeretnénk elindítani.
link[] - A zene/rádió linkje
bool:turn - Rádió be/ki
Példa:
 
#include <a_samp>
#include <zcmd>
CMD:playtimber(playerid) //mondjuk elindítjuk pitbulltól és keshatól a timbert..
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,\"Nem vagy a vezetõ ülésen.\");
VehicleRadio(GetPlayerVehicleID(playerid),\"http://dl.ttbax.org/Hamid/Music/1392/07/Pitbull%20feat.%20Ke$ha%20-%20Timber%5B128%5D.mp3\",true); //true, azaz bekapcsoljuk. ha már be van kapcsolva, akkor csak sávot vált.
return 1;
}
CMD:stopradio(playerid)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,\"Nem vagy a vezetõ ülésen.\");
VehicleRadio(GetPlayerVehicleID(playerid),\"\",false); //false, azaz kikapcsoljuk
return 1;
}

 
Letöltés
(Egyenlõre csak kód formátumban)



#if !defined include_vehicle_radio
#define include_vehicle_radio
#endif
#define RADIO_DISTANCE 40.0
new RadioTimer = -1;
new RadioActive[MAX_PLAYERS][2];
enum RadioEN
{
Float:VRposX,
Float:VRposY,
Float:VRposZ,
mode
};
new VRadio[MAX_VEHICLES][RadioEN];
stock VehicleRadio(vehicleid,link[],bool:turn)
{
if(turn)
{
if(RadioTimer == -1) RadioTimer = SetTimerEx(\"VehicleRadioTimer\",1000,1,\"s[256]\",link);
VRadio[vehicleid][mode] = 1;
GetVehiclePos(vehicleid,VRadio[vehicleid][VRposX],VRadio[vehicleid][VRposY],VRadio[vehicleid][VRposZ]);
}
else
{
VRadio[vehicleid][mode] = 0;
}
return 1;
}
stock GetClosestVehicleEx(playerid,Float:dis = RADIO_DISTANCE)
{   
new Float:distance[2] = 0.0,bool:count;
distance[1] = dis;
new vehicleid;
for(new i; i<MAX_VEHICLES; i++)
{
if(VRadio[mode] == 1)
{
   new Float:pos[3];
   GetVehiclePos(i,pos[0],pos[1],pos[2]);
   distance[0] = GetPlayerDistanceFromPoint(playerid, pos[0],pos[1],pos[2]);
   if(distance[0] < distance[1])
   {
      count = true;
      distance[1] = distance[0];
      vehicleid = i;
   }
}
}
if(distance[1] == dis && count == false) return INVALID_VEHICLE_ID;
return vehicleid;
}
 
forward VehicleRadioTimer(link[]);   
public VehicleRadioTimer(link[])
{
new Float:pos[3];
for(new i; i<MAX_PLAYERS; i++)
{
if(RadioActive[0] == 0)
{
   new v = GetClosestVehicleEx(i);
   if(v != -1)
   {
      GetVehiclePos(v,VRadio[v][VRposX],VRadio[v][VRposY],VRadio[v][VRposZ]);
      PlayAudioStreamForPlayer(i, link, VRadio[v][VRposX],VRadio[v][VRposY],VRadio[v][VRposZ], RADIO_DISTANCE);
      RadioActive[0] = 1;
      RadioActive[1] = v;
   }
}
else
{
   new v = RadioActive[1];
   GetVehiclePos(v,pos[0],pos[1],pos[2]);
   new Float:dis = GetPlayerDistanceFromPoint(i, pos[0],pos[1],pos[2]);
   if(dis > RADIO_DISTANCE)
   {
      StopAudioStreamForPlayer(i);
      RadioActive[0] = 0;
      RadioActive[1] = -1;
   }
}
}
return 1;
}

10
Munkaerő keresése / Nevada State RPG Mappert keres!
« Dátum: 2013. Június 29. - 15:27:18 »
Sziasztok!
Nem tudom hova kell nyitni, egyszerûen képtelen vagyok itt kiigazodni. Kérlek helyezzétek át, ha rossz helyen van :)
A szerverre mappert keresünk! Természetesen admin jog jár a szerveren. Érdeklõdni itt a témában, PÜ-ben, vagy Skypen: -
Minimum Haladó mappernek kell lenned, és néhány munkádat be kell mutatnod, mielõtt felveszünk :)
Várom a jelentkezéseket!
Sramm

11
Fórum Archívum (Témák/Fórumok) / Re:Ismeretlen hiba
« Dátum: 2013. Május 08. - 12:03:07 »
Frissítsd a streamered..

12
Fórum Archívum (Témák/Fórumok) / Re:DangerRPG (0.3x)
« Dátum: 2013. Március 08. - 11:38:20 »
Már a nevébõl tudtam, hogy nem várhatok tõle sokat  :Cry2:

13
MTA .map betöltõ
 
Hello. Szeretném publikálni nektek a legújabb alkotásom, az MTA .map betöltõt. A különbség a többi közt az, hogy minden verziójú mapot betölt, ami MTA-val készült. (A többi nem). Hátránya, hogy nem sscanf-al van csinálva, mert akkor nem érzékelné rendesen a dolgokat. Így egy kicsit lassúcska, olyan 4-5mp alatt tölt be 20-30 mapot.
Egyenlõre még csak egy függvény van hozzá:
 
LoadMTAMap(map[],bool:0.3c = false)

 
Használat:
1. Berakod a betölteni kívánt mapot a scriptfiles mappába.
2. A módodban/fs-edben beírod a fenti funkciót, elõre a map nevét helyezve.
Példák: 
LoadMTAMap(\"enmappom.map\"); //Betölti az enmappom.map fájlt a scriptfilesbõl.

 

LoadMTAMap(\"enmappom.map\",true); //Betölti az enmappom.map fájlt a scriptfilesbõl, és érzékeli a 0.3c objecteket. (Alapból nem fogja)

 
3. Konvertálod a scriptet, majd elindítod a szervered. Ha mindent jól csináltál, akkor ki fogja írni, hogy egy adott mapból mennyi objectet töltött be.


Letöltés:
mtamap.inc - Solidfiles
mtamap.inc - Pastebin

14
SA-MP: Szerverfejlesztés / Sortörés a szóköznél.
« Dátum: 2013. Február 26. - 17:12:36 »
Hello. Már biztos ismeritek ezt a kódot, ami ha túl hosszú egy szöveg, megtöri a sorokat, és külön sorba írja a dolgokat. Visszatérõ probléma volt, hogy beletört a szavakba, és így elég érthetetlenné sikeredett a szöveg. Ez a kód arra jó, hogy ez kikeresi, hogy hol a szóköz, és úgy töri meg, így biztos nem vág bele a szavakba.
UPDATE: Már a hex kódok is megmaradnak! Tehát nincs az, hogy a darabolás miatt kimaradnának.
Kód: (Mód elejére kell beilleszteni, ha nem menne, include-ba berakom.)
 
#define MIN_LENGHT 128
#define MAX_LENGHT 256
stock FindLastHexColor(string[])
{
if(strfind(string, \"{\", true) != -1 && strfind(string, \"}\", true) != -1)
{
    new pos[4];
        for(new i; i<strlen(string); i++)
        {
            pos[2] = strfind(string,\"{\",true,pos[1]);
            pos[3] = strfind(string,\"}\",true,pos[2]);
            if(pos[2] >= pos[0] && pos[2]+7 == pos[3])
            {
                pos[0] = pos[2];
                pos[1] = pos[3]+1;
   }
}
new ret[16];
strmid(ret,string,pos[0],pos[1]);
return ret;
}
new ret[16];
format(ret,16,\"\");
return ret;
}
stock SendClientMessageEx(playerid,color,string[])
{
    new pos[2] = 0;
    new msg[128];
    if(strlen(string) > MIN_LENGHT)
    {
    if(strfind(string, \" \", true) != -1)
    {
        for(new i; i<strlen(string); i++)
        {
      pos[1] = strfind(string,\" \",true,pos[0]);
      if(pos[1] > pos[0] && pos[1] < MIN_LENGHT)
      {
         pos[0] = pos[1]+1;
      }
        }
        strmid(msg, string, 0, pos[0]);
        new last[16];
   format(last,16,FindLastHexColor(msg));
        SendClientMessage(playerid,color,msg);
        strmid(msg, string, pos[0], MAX_LENGHT);
            format(msg,sizeof(msg),\"%s%s\",last,msg);
        SendClientMessage(playerid,color,msg);
       
    }
    else
    {
        strmid(msg, string, 0, MIN_LENGHT);
        SendClientMessage(playerid,color,msg);
        new last[16];
   format(last,16,FindLastHexColor(msg));
        strmid(msg, string, MIN_LENGHT, MAX_LENGHT);
        format(msg,sizeof(msg),\"%s%s\",last,msg);
        SendClientMessage(playerid,color,msg);
    }
}
    else SendClientMessage(playerid,color,string);
    return 1;
}
#define SendClientMessage SendClientMessageEx
stock SendClientMessageToAllEx(color,string[])
{
    new pos[2] = 0;
    new msg[128];
    if(strlen(string) > MIN_LENGHT)
    {
    if(strfind(string, \" \", true) != -1)
    {
        for(new i; i<strlen(string); i++)
        {
      pos[1] = strfind(string,\" \",true,pos[0]);
      if(pos[1] > pos[0] && pos[1] < MIN_LENGHT)
      {
         pos[0] = pos[1]+1;
      }
        }
        strmid(msg, string, 0, pos[0]);
        new last[16];
   format(last,16,FindLastHexColor(msg));
        SendClientMessageToAll(color,msg);
        strmid(msg, string, pos[0], MAX_LENGHT);
        format(msg,sizeof(msg),\"%s%s\",last,msg);
        SendClientMessageToAll(color,msg);
    }
    else
    {
        strmid(msg, string, 0, MIN_LENGHT);
        new last[16];
        format(last,16,FindLastHexColor(msg));
        SendClientMessageToAll(color,msg);
        strmid(msg, string, MIN_LENGHT, MAX_LENGHT);
        format(msg,sizeof(msg),\"%s%s\",last,msg);
        SendClientMessageToAll(color,msg);
    }
}
    else SendClientMessageToAll(color,string);
    return 1;
}
#define SendClientMessageToAll SendClientMessageToAllEx

15
SA-MP: Szerverfejlesztés / RemoveHexColorFromString
« Dátum: 2013. Február 14. - 18:27:13 »
A kód arra jó, hogy egy üzenetbõl eltávolíthatjuk vele az összes hex kódot.
Példa:
 
{ffffff}Ez egy fehér hex kódos szöveg.

 
A függvény lefutása után:
 
Ez egy fehér hex kódos szöveg.

 



Példaszkript:





// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
 
stock RemoveHexColorFromString(string[],startpos = 0)
{
    new
        pos[2];
    pos[0] = strfind(string,\"{\",true,startpos);
pos[1] = strfind(string,\"}\",true,startpos);
while(pos[0]+7 == pos[1])
{
        strdel(string, pos[0], pos[1]+1);
        pos[0] = strfind(string,\"{\",true,startpos);
pos[1] = strfind(string,\"}\",true,startpos);
}
return 1;
}
main() {}
public OnGameModeInit()
{
new str[] = \"Ez a fehér hex: {ffffff}\";
print(str);
RemoveHexColorFromString(str);
print(str);
new str2[] = \"{ffffff}Ez a fehér hex: {ffffff}-< Meg ez is.{fffffff}\";
print(str2);
RemoveHexColorFromString(str2);
print(str2);
new str3[] = \"{ffffff}Ez a startpos teszt: {ffffff}-< Meg ez is.{fffffff}\";
print(str3);
RemoveHexColorFromString(str3,8);
print(str3);
return 1;
}

 
 


Kép:
\"a1_2013_2_14_6kscz2r2z8.png\"


A kód:
 
stock RemoveHexColorFromString(string[],startpos = 0)
{
    new
        pos[2];
    pos[0] = strfind(string,\"{\",true,startpos);
pos[1] = strfind(string,\"}\",true,startpos);
while(pos[0]+7 == pos[1])
{
        strdel(string, pos[0], pos[1]+1);
        pos[0] = strfind(string,\"{\",true,startpos);
pos[1] = strfind(string,\"}\",true,startpos);
}
return 1;
}

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