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

Oldalak: [1]
1
Segítségkérés / lassú mysql lekérdezés
« Dátum: 2013. November 25. - 18:58:16 »
Üdv.
Menjünk sorba. Tehát, van ez a kód:
 
new listr[600];//egész dialog string
    new members[24*50];//max név karakter szorozva max klántag
    format(listr, sizeof(listr), \"%s klán\\nLeader: %s\\nNyert háborúk: %d\\t\\tVesztett háborúk: %d\\n\\t\\tArány: %0.2f\\nTagok:\\n\"#HWHITE#\"\", inputtext, GetClanLeader(inputtext), GetClanWins(inputtext), GetClanLoss(inputtext), Float:GetClanWins(inputtext)/Float:GetClanLoss(inputtext));
   for(new i; i < GetTableLines(\"users\"); i++)//GetTableLines: tábla sorainak lekérdezése
   {
      format(query, sizeof(query), \"SELECT Name FROM users WHERE Clan = \'%s\' AND ID = %d\", inputtext, i);
      mysql_query(query);
      mysql_store_result();
      if(mysql_num_rows() != 0)
      {
          new nevtarolo[24];//tároló a neveknek amiket kiolvas az adatbázisból
          mysql_fetch_row(linen);
          sscanf(linen, \"s[24]\", nevtarolo);
          mysql_free_result();
          if(IsPlayerConnected(GetPlayerID(nevtarolo))) format(members, sizeof(members), \"%s%s%s\\n\", members, nevtarolo, (IsPlayerConnected(GetPlayerID(nevtarolo))) ? (#HRED#\"[OFFLINE]\"#HWHITE#) : (#HGREEN#\"[ONLINE]\"#HWHITE#));
      }
   }
   strcat(listr, members);//összeilleszti a két stringet
   ShowPlayerDialog(playerid, CLANRANK2_DIALOG, DIALOG_STYLE_MSGBOX, \"Klán\", listr, \"Oké\", \"\");//a végén kiiratja dialog-ba

 
A lényeges dolog ahol kiolvassa for ciklussal a tagokat az adatbázisból.
A probléma vele: Ha 1000 vagy még több karakter található az adatbázisban akkor egyszerûen lassan íratja ki a neveket és addig lefagy az egész szerver. (köbö 2-3 másodperc)
Ami elég érdekes mert ugye csak azokat olvassa ki akik a klánban vannak, mégis amikor 500, vagy esetleg kevesebb player volt beregisztrálva akkor pár tized másodperc alatt megoldotta, de minél több annál lassabban csinálja meg.
Ehhez kéne segítség.
Hogy lehetne megcsinálni hogy gyorsabban csinálja meg, vagy hogy ne fagyassza le a szervert, vagy máshogy kiolvasni?
+ Ha valaki olyat vesz észre a kódban ami pazarlás azt is megírhatja.
De a lényeges kérdés akkor: Hogy lehetne gyorsabbá tenni a lekérdezést?

2
Segítségkérés / mysql sorok csökkenõ sor
« Dátum: 2013. Július 14. - 14:18:47 »
Üdv..
Tehát kérdés: Hogyan kell egy lista dialogba csökkenõ sorrendbe tenni mysql lekérdezéssel? (Nem tudom jobban megfogalmazni...)
Csak tipp hogy valamit ezzel kell:
 
SELECT oszlop1 FROM tabla ORDER BY oszlop2 DESC LIMIT 50

 
Így próbálkoztam:
 
new listr[750];
for(new i; i < 50; i++)
{
        mysql_query(\"SELECT ClanName FROM clans ORDER BY Wins DESC LIMIT 50\");
mysql_store_result();
if(mysql_num_rows() != 0)
{
    mysql_fetch_row(linen);
    new tarolo[30];
    sscanf(linen, \"s[30]\", tarolo);
    mysql_free_result();
    format(listr, sizeof listr, \"%s%s\\n\", listr, tarolo);
}
}
ShowPlayerDialog(playerid, CLANRANK_DIALOG, DIALOG_STYLE_LIST, \"Klán ranglista\", listr, \"Megnéz\", \"Kilép\");

 
De ezzel csak a legelsõ sort íratja ki ötvenszer.
Tehát megpróbálom újra megfogalmazni:
Van egy lista dialog, egy tábla, két oszlop.
a Dialogba kiíratni a táblában lévõ \'ClanName\' oszlopot a \'Wins\' oszlop alapján. A legtöbbet nyert legyen a legfelül.

3
Segítségkérés / Kattintos textdraw gond
« Dátum: 2012. December 28. - 14:11:20 »
Üdv all.
Elkezdtem kisérletezni a kattintós textdrawokkal, nem sok sikerrel...
Elõszöris egy kód:
 
public OnGameModeInit()
{
for(new playerid; playerid < MAX_PLAYERS; playerid++)
{
Kivalaszt[playerid] = TextDrawCreate(272.000000, 373.000000, \"Kiválaszt\");
TextDrawBackgroundColor(Kivalaszt[playerid], 255);
TextDrawLetterSize(Kivalaszt[playerid], 0.529999, 2.000000);
TextDrawFont(Kivalaszt[playerid], 1);
TextDrawColor(Kivalaszt[playerid], -16776961);
TextDrawSetOutline(Kivalaszt[playerid], 1);
TextDrawSetProportional(Kivalaszt[playerid], 1);
TextDrawUseBox(Kivalaszt[playerid], 1);
TextDrawBoxColor(Kivalaszt[playerid], -6736982);
TextDrawTextSize(Kivalaszt[playerid], 353.000000, 0.000000);
TextDrawSetSelectable(Kivalaszt[playerid], 1);
    }
}
CMD:teszt(playerid)
{
TextDrawShowForPlayer(playerid, Kivalaszt[playerid]);
SelectTextDraw(playerid, 0xFF0606FF);
return 1;
}
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == Kivalaszt[playerid])
{
SendClientMessage(playerid, COLOR_GREEN, \"rákattintottál.\");
}
return 1;
}

 
A textdrawot Zamaroth\'s textdraw editorral csináltam, azzal tuti jó lenne, de mégsem...
Semmi hibát nem ír a pawn, de amikor rákattintok a textdrawra nem történik semmi.
Valakinek ötlet, mi lehet a hiba?

4
Archívum / Budapest Real Life
« Dátum: 2012. December 04. - 21:17:41 »

Budapest Real Life
[samp=37.221.209.166:7818]\"signature_big.php?bg=000000&text=FFFFFF&border=a0a0a0&ip=37.221.209.166&port=7818&bg_image=\"[/samp]
 

Üdv all.
Elõszöris kezdeném a szerver történetével.
Biztos ismerték páran a régi Budapest Real Life-ot.
Ez a szerver eleinte Barté és tekué volt, késõbb megszünt, utána megint elindult de akkor már Bart és Metaxa vezetésével, aztán zsobo-hoz került, utána hozzám.
Sokat játszottunk rajta, de a playerszám egyre csak csökkent, mikor végül megszünt. Nehezen bírtuk ezt ki, tehát elkezdtük újra éleszteni a szervert. A mód megvolt, tehát nem volt nehéz dolgunk. Megnyílt, jöttek a playerek, jöttek a fejlesztések. A szerver sokat fejlõdött azóta. Bejött mindenféle rendszer, és kicsit elkanyarodtunk a Real Life-tól, mivel az RL szerverek már nem sokakat érdekelnek, tehát kicsit belementünk a FUN/DM-be.
Bele is kezdenék.
Kezdjük a parancsokkal:
/cmds - Egyértelmû úgyérzem, parancsok listája.
/help - Mindenféle rendszerhez tartozó parancsok, amikben vannak az információk.
/claninfo - Klán információk.
/lottoinfo - Lottó információk
/houseinfo - Ház információk
/autoinfo - Autó információk
/raceinfo - Verseny információk
/fishinfo - Horgászás információk
/rules - Szabályzat, de a fórumon részletesebben le van írva minden.
/zene - Zenéket/rádiókat tudsz hallgatni, beküldeni, link alapján hallgatni.
/ad - Hirdetést tudsz feladni. Mindenki látja a normális chat-et is, de mégis jobban észreveszik ezt.
/jedi - Ha eléggé úgy érzed hogy veled van az erõ, csakis akkor használd.
/admins - Online adminok listája
Menjünk sorba.
Klánok:
A szerveren már klánt is alapíthatsz, amikben 10 rang van.
Klánt létrehozni a /createclan paranccsal tudsz, de meg kell lenni 20 játszott órának és 1.500.000$-nak.
Miután létrehoztad a klánt, a /clanpanel paranccsal férhetsz hozzá a klánmenühöz.


\"clanpanel.png\"
 
Tagok:
Megnézheted a klánban lévõ tagokat, ha rákattintassz egyre, megváltoztathatod a rangját vagy kirúghatod.
Rangok szerkesztése:
A rangneveket írhatod át és a hozzátartozó skineket.
Jogok:
A rangokhoz tudsz jogokat hozzáadni, pl invite jog, kickjog, rangadás, klánautó parkolása.
Klán elhagyása:
Egyértelmû, de persze a klánvezér ezt nem tudja.
Klán feloszlatása:
Megintcsak egyértelmû, csak a klánvezér tudja.
Klán kihívása:
Lehetõsége van a klánvezérnek és a helyettesnek(késõbb be lehet majd állítani hogy hanyas rangtól lehessen) kihívni klánokat.
Elõszöris csak az eredeti klánvezér tudja elfogadni a kihívást, pontosabban az alapító.
Mikor kihívsz egy klánt, azt kiírha mindenkinek a chat-be, és a /clanfogad-dal lehet elfogadni, a /clanutasit-tal lehet elutasítani a kihívást. Ha elfogadtad, a klánokban lévõ tagok a háborúba a /clanhaboru paranccsal tudnak belépni, a /clanhaborukilep paranccsal meg kilépni.



\"sa-mp-218.png\"
\"sa-mp-219.png\"
 
Ha egy klán nyer, + 1 pont a nyert csatákhoz, míg a másik kánnak a vesztetthez.(/clans)
Klánkassza:
A klánba minden tag tud berakni pénzt, kivenni csak a vezér tud és elkölteni is. Egyenlõre csak autót lehet venni hozzá, de lehetséges hogy nem is lesz más.
Klánautók slotja: (Nincs a képen)
Kilistázza a klánhoz tartozó autókat.
Lottózás:
A /lotto paranccsal lehet lottózni. 20 percenként jönnek ki a nyerõszámok, ha legalább 1 számot eltalálsz, az sem kevés összeg, de a fõnyeremény mégjobb.
Házrendszer:
A szerveren csak 1 házad lehet. A /spawn paranccsal lehet beállítani hogy a házadba spawnolj.
Nincsenek alapból mindenütt házak mert elég hülyeség lenne. Fõadmintól kell kérni hogy tegyen le házat. Ha venni akarsz egy házat, odamész az ajtóhoz(persze ahol le is van rakva) és beírod a /buyhouse parancsot, ha el akarod adni akkor meg a /sellhouse parancsot és a fele árát megkapod. Házat átadni más játékosnak a /hazad paranccsal tudsz, a /tarstulaj paranccsal meg társtulajjá jelölheted, elvenni meg a /tarstulajelvesz paranccsal tudod. Még van a /housemenu parancs, amiben átnevezheted a házadat, bezárhatod, kinyithatod és berendezheted.
Házberendezés:
A szerveren lehetõséged van még berendezni a házadat kedved szerint. Tárgyakat folyamatosan teszek be amit találok, hogy minnél nagyobb legyen a választék. Egy tárgy nem is olcsó, de nem is drága, a legdrágább 500.000$. Kiválasztod az új tárgy vásárlása opciót és kiválasztod a listából milyen tárgyat szeretnél venni. Rákattintasz, megveszed, de még nem fizeted ki. Mikor elrendezted, megkérdezi mégegyszer hogy megveszed- e, aztán fizeted ki. A lerakott tárgyakat mozgathatod vagy eladhatod a fele áráért.
 A ház mellé még kérhetsz garázst is. Van egy kisméretü és egy nagyméretü garázs.
A kisméretü ingyen van, a nagyméretü 5.000.000$.(Ezt is a fõadmintól kell kérni.)
A házba az \'Y\' gomb segítségével tudsz bemenni, kimenni, akárcsak a garázsba is.
Még lehet lakni megvásárolt lakókocsiban is, oda is a /spawn paranccsal állíthatod be a spawnhelyet.
Akkor áttérek az autórendszerre.
Autórendszer:
A szerveren bármennyi autód lehet, bár nem hiszem hogy olyan sok kéne bárkinek is.(Nekem pl. 2 van)
Autót a Ryuuzaki\'s(ego LvL. up) cars-ban tudsz venni, ami az Otto\'s autós 3. emeletén található.
Van egy keresõ ahova be kell írni a megvenni kívánt nevét vagy ID-jét, kiadja róla az adatokat(Név, ID, Ár). Ha egy autó nem található a rendszerben, a fõadminnak szólsz és beárazza. Miután megvetted az autót, a bolt elõtt megtalálod, de javaslom parkold el, mert ha túl sokáig hagyod ott, (max 1 hét határidõ) törlésre kerül. Parkolni a /parkol [autód slotja] paranccsal tudsz.
Mikor megvetted kiírja az autó slot-ját, de a /mycars paranccsal is megnézheted.
Ha tuningolni/szerkeszteni szeretnéd az autódat a /autoszerkeszt paranccsal megteheted, de a tuningok nagy részét csak egy Ryuuzaki\'s carsos dolgozó tudja feltenni. (lökhárítók, oldaldísz stb.)
Az autódat átadni a /autoad paranccsal tudod, \"társtulajt\" hozzá(pontosabban slusz kulcs) a /kulcsad paranccsal tudsz, elenni a /kulcselvesz paranccsal.
Az autód csomagtartójába tudsz rakni fegyvert. Beülsz, /cstki, odamész a csomagtartóhoz(akár van, akár nincs :P) és /fegyverberak [fegyver/armour], ha kivenni akarod, megintcsak kinyit stb, /fegyverkivesz [armour/fegyver] (ha fegyver)[fegyverslot]
/cstki - Kinyitod vele a csomagtartót.
/cstbe - Bezárod vele a csomagtartót.
/mhki - Kinyitod vele a motorháztetõt.
/mhbe - Bezárod vele a motorháztetõt.
Akkor rátérek a lakóautóra.
Vehetsz 10.000.000$-ért egy lakókocsit, talán jobban megéri mint házat venni, mivel bárhova leparkolhatod és akkor ott fogsz spawnolni. A lakókocsiba bemenni a /bemegy paranccsal tudsz az ajtónál, kimenni a /kimegy paranccsal tudsz.


\"sa-mp-220.png\"
 
Versenyek:
A szerveren még megtalálható a versenyrendszer. Ha bevan kapcsolva az autómata verseny(az admin tudja bekapcsolni/kikapcsoln) akkor a beállított idõközönként(megintcsak admin tudja beállítani) indulnak versenyek, de admin is indíthat.
Csatlakozni a /join-al tudsz, kilépni a /leave-val.
Bizniszrendszer:
A szerveren megtalálható a bizniszrendszer. Csak 1 bizniszed lehet, van 15, 20 és 25 milliós biznisz, mindegyik máshogy termel, de egész jól összelehet vele gyüjteni a pénzt. Megvenni egy biznsizt a /buybiz paranccsal tudod, eladni a /sellbiz paranccsal tudod, de nem adja vissza sem a biznisz árának a felét, se semmit!
Ezeken kívül még megtalálható a reakcióteszt is, szinte alig van aki nem ismeri. Kiad randomba egy \"szöveget\"(inkább... hát inkább betüket, számokat egymás mellett), aki a leghamarabb beírja az megkapja a nyereményt.
Paintball:
Van még egy kis paintball map benne nézõtérrel együtt.


\"sa-mp-196.png\"
 
A mapon TDM folyik, 2 csapat van, ki kell ejteni a másikat. A képen látható oldalt a statisztika. Ha bemész/kimésza pályára/pályáról az automata nullázódik. Ha valaki kiesett, 5mp-t nézi a többieket aztán lespawnol.
A paintball mellett még van egy kissebb gokart gokart map is.


\"sa-mp-221.png\"
 
Nem kell sokat mondanom róla, csak egy map. Nincs rajta verseny sem egyéb.
Még van egy kis változás, a fegyverbolt.


\"sa-mp-222.png\"
 
Odakell menni ahhoz a fegyveres asztalhoz amit venni akarsz, megnyomni az \'Y\' gombot és meg is vetted a fegyvert.
Ja és majdnem a legfontosabb dolgot hagytam ki, a pénzszerzést.
A szerveren sok féleképpen szerezhetsz pénzt, Pl
- Dm
- Horgászat:
A szerveren még lehetõség van horgászni. Elmész a tengerpartra, vagy kihajózol a nyilt tengerre és beírod a /fish parancsot, aztán várod a kapást.
- Munkák:
A szerveren a /jobs paranccsal nézheted meg a munkákat.
Jelenlegi munkák/bandák:
MÁV vonatvezetõ: A vonatot kell vezetnie és kapja a pénzt
Taxis: El kell vinnie a játékost A pontból B pontba.(de nincs sok szükség rá, inkább csak ül a taxiban és kapja a pénzt.)
Mentõs: Meg kell gyógyítania a játékosokat a /heal paranccsal.
Kamionos: Fel kell venni a rakományt és el kell szállítani az adott helyre.
Bankos: A bankba kell szállítania a pénzt.
Bankrabló: Ki kell rabolnia a bankot.
Politikus: Semmit se csinál és kapja a pénzt.
Hotdogos: El kell adnia a hotdogot az adott helyeken, vagy playereknek a /hotdog paranccsal.
Farmer: Van választás: Vagy vetsz, vagy aratsz. Ajánlott minimum ketten végezni a munkát.
Leaderes munkák:
Rendõr: Le kell csuknia a körözötteket.
Katona: Le kell lõnie a körözötteket.
Drogdíler: El kell adnia a drogot/piát/cigit a vevõknek.
Ryuuzaki\'s cars: A vevõknek kell tuningolni, meg minden egyéb amit egyszer már leírtam.
Hacker: Megtudja hackelni a bankot, rendõrséget, megnézheti a játékosok adatait.
Stuntmunka: Hát lehet tippelni.
Bandák:
Triad: a térképen a \"piros kígyó\" jel jelöli
Rifa: a Kamionos munka mellet
Maffia:Az étteremnél (\"villa és kés\" jel)
Vietnami: A kikötõben(Pier 69)
Grove: LS-ben a Groove streetnél
Leaderes bandák:
Rodneyteam
Biztos vagyok benne hogy kihagytam valamit, egye fene, majd ha eszembe jut beleírom.
Aztán végül a szerverinfó:
HostName: [HUN]Budapest Real Life [FreeRoam In Real Life]| F
Address:  37.221.209.166:7818 (A szerver mostanság néha leáll és újra kell indítani, ha nem menne akkor ez történt.)
Players:  15 / 100
Ping:     26
Mode:     [HUN] BRL
Map:      Budapest, San Fierro
+ A végére egy kis videó egy érdekes klánháboruról :D :
 

Egy játékos által készített bemutatóvideó:
 

5
SA-MP: Szerverfejlesztés / Névre szóló jármûlehívó
« Dátum: 2012. Május 13. - 18:44:50 »
UPDATE
Azóta nagyon sokat változtattam rajta, mióta megírtam.
Tehát Rcon admin adhatja más játékosnak, névre szóló, elmenti az adatokat mySQL-be és restartkor is betölti,
lehet színt is adni neki amit aztán szerkeszteni is lehet, és tuningot is adni neki, amit természetesen elment.
Az elõzõben tényleg csak 1 játékosnak lehetett adni, itt már bármennyinek(khm, 500 autót lehet), és egy játékosnak bármennyi autót.
Parancsai: /carad [slot] [vehid] [playerid] [color1] [color2]
/carelvesz [slot] [playerid]
/tunszerkeszt [slot1] [tun1] [tun2] [tun3] [tun4] [tun5]
/szinszerkeszt [slot] [color1] [color2]
Letöltés(csak PWN)(új)
 
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <mysql>
#define COLOR_GREEN         0x33AA33AA
#define COLOR_BLUE          0x0000FFAA
#define COLOR_RED           0xFF0606FF
#define COLOR_YELLOW        0xFFFF00AA
#define COLOR_GREY          0xAFAFAFAA
#define COLOR_WHITE         0xFFFFFFAA
#define COLOR_BROWN         0x993300AA
#define COLOR_ORANGE        0xFF9933AA
#define COLOR_BLACK         0x000000AA
#define COLOR_LIGHTBLUE     0x00BFFFAA
#define SQL_HOST   \"\"
#define SQL_DB   \"\"
#define SQL_USER   \"\"
#define SQL_PASS   \"\"
#define MAX_SLOTS 500
new name1[24], name2[24], str[128];
new query[500];
new vehid, slot;
new id;
new carplay[500], color1, color2;
new tun1, tun2, tun3, tun4, tun5;
public OnFilterScriptInit()
{
mysql_debug(1);
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
if(mysql_ping() != 1)
{
    print(!\"MySQL: Kapcsolódás sikertelen!\");
return 1;
}
print(\"\\n--------------------------------------\");
print(\" névreszóló autó | by Ryuuzaki\");
print(\"--------------------------------------\\n\");
for(new i; i < MAX_SLOTS; i++)
{
      format(query, sizeof(query), \"SELECT * FROM cars WHERE slot = \'%d\'\", i);
      mysql_query(query);
      mysql_store_result();
if(mysql_num_rows() != 0)
{
   new linen[1024];
   mysql_fetch_row(linen);
   new tarolo[5];
   new Float:tarolo2[4];
   sscanf(linen, \"p<|>{ds[24]}dffffdddd\", tarolo[0], Float:tarolo2[0], Float:tarolo2[1], Float:tarolo2[2], Float:tarolo2[3], tarolo[1], tarolo[2], tarolo[3], tarolo[4]);
   carplay = CreateVehicle(tarolo[0], tarolo2[0], tarolo2[1], tarolo2[2], tarolo2[3], tarolo[1], tarolo[2], -1);
   AddVehicleComponent(carplay, tarolo[3]);
   AddVehicleComponent(carplay, tarolo[4]);
   mysql_free_result();
}
}
return 1;
}
public OnFilterScriptExit()
{
for(new i; i < MAX_SLOTS; i++)
{
    DestroyVehicle(carplay);
}
return 1;
}
CMD:carad(playerid, params[])
{
new Float:x, Float:y, Float:z, Float:a;
if(!IsPlayerAdmin(playerid)) return 0;
else if(sscanf(params, \"iiuii\", slot, vehid, id, color1, color2)) return SendClientMessage(playerid, COLOR_GREY, \"Használat: /carad [slot] [vehid] [playerid] [color1] [color2]\");
else if(400 > vehid || vehid > 611) return SendClientMessage(playerid,COLOR_GREY,\"HIBA: Rossz JármûID! A jármû ID-jének 400 és 611 közt kell lennie!\");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: Rossz játékosID!\");
else if(slot > MAX_SLOTS) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: A slot nem lehet nagyobb 500-nál!\");
format(query, sizeof(query), \"SELECT * FROM cars WHERE slot = \'%d\'\", slot);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() != 0) return format(str, sizeof(str), \"HIBA: A %d-s slot már foglalt!\", slot), SendClientMessage(playerid, COLOR_GREY, str); mysql_free_result();
    GetPlayerName(playerid, name1, sizeof(name1));
    GetPlayerName(id, name2, sizeof(name2));
    GetPlayerPos(id, x, y, z);
    GetPlayerFacingAngle(id, a);
    carplay[slot] = CreateVehicle(vehid, x, y, z, a, color1, color2, -1);
    SetPlayerPos(id, x, y, z+5);
format(str, sizeof(str), \"%s lespawnolt neked egy jármûvet. JármûID: %d\", name1, vehid);
SendClientMessage(id, COLOR_GREEN, str);
format(str, sizeof(str), \"Lespawnoltál %s-nek egy jármûvet. JármûID: %d\", name2, vehid);
SendClientMessage(playerid, COLOR_GREEN, str);
format(query, sizeof(query), \"INSERT INTO cars (slot, Tulaj, VehID, X, Y, Z, A, color1, color2) VALUES (%d, \'%s\', %d, %0.2f, %0.2f, %0.2f, %0.2f, %d, %d)\", slot, name2, vehid, x, y+2, z, a, color1, color2);
mysql_query(query);
return 1;
}
CMD:carelvesz(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0;
else if(sscanf(params, \"iu\", slot, id)) return SendClientMessage(playerid, COLOR_GREY, \"Használat: /carelvesz [slot] [playerid]\");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: Rossz játékosID!\");
else if(slot > MAX_SLOTS) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: A slot nem lehet nagyobb 500-nál!\");
GetPlayerName(playerid, name1, sizeof(name1));
    GetPlayerName(id, name2, sizeof(name2));
format(query, sizeof(query), \"SELECT * FROM cars WHERE Tulaj = \'%s\'\", name2);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() == 0) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: A játékosnak nincs saját jármûve!\"), mysql_free_result();
format(query, sizeof(query), \"SELECT * FROM cars WHERE Tulaj = \'%s\' AND slot = \'%d\'\", name2, slot);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() == 0) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: A tulaj és a slot nem egy sorban van!\"), mysql_free_result();
format(str, sizeof(str), \"%s törölte a saját jármûvedet!\", name1);
SendClientMessage(id, COLOR_GREEN, str);
format(str, sizeof(str), \"Törölted %s saját jármûvét!\", name2);
SendClientMessage(playerid, COLOR_GREEN, str);
    DestroyVehicle(carplay[slot]);
format(query, sizeof(query), \"DELETE FROM cars WHERE Tulaj = \'%s\'\", name2);
mysql_query(query);
return 1;
}
CMD:tunszerkeszt(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0;
else if(sscanf(params, \"iiI(0)I(0)I(0)I(0)\", slot, tun1, tun2, tun3, tun4, tun5)) return SendClientMessage(playerid, COLOR_GREY, \"Használat: /tunszerkeszt [slot] [tun1] [tun2] [tun3] [tun4] [tun5]\");
else if(slot > MAX_SLOTS) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: A slot nem lehet nagyobb 500-nál!\");
format(query, sizeof(query), \"SELECT * FROM cars WHERE slot = \'%d\'\", slot);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() == 0) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: A slot nincs létrehozva!\"), mysql_free_result();
format(query, sizeof(query), \"UPDATE cars SET tuning1 = \'%d\', tuning2 = \'%d\', tuning3 = \'%d\', tuning4 = \'%d\', tuning5 = \'%d\' WHERE slot = \'%d\'\", tun1, tun2, tun3, tun4, tun5, slot);
mysql_query(query);
format(str, sizeof(str), \"Sikeresen szerkesztetted az autó tuningjait! tuning1: %d, tuning2: %d, tuning3: %d, tuning4: %d, tuning5: %d\", tun1, tun2, tun3, tun4, tun5);
SendClientMessage(playerid, COLOR_GREY, str);
return 1;
}
CMD:szinszerkeszt(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0;
else if(sscanf(params, \"iii\", slot, color1, color2)) return SendClientMessage(playerid, COLOR_GREY, \"Használat: /szinszerkeszt [slot] [color1] [color2]\");
else if(slot > MAX_SLOTS) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: A slot nem lehet nagyobb 500-nál!\");
format(query, sizeof(query), \"SELECT * FROM cars WHERE slot = \'%d\'\", slot);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() == 0) return SendClientMessage(playerid, COLOR_GREY, \"HIBA: A slot nincs létrehozva!\"), mysql_free_result();
format(query, sizeof(query), \"UPDATE cars SET color1 = \'%d\', color2 = \'%d\' WHERE slot = \'%d\'\", color1, color2, slot);
mysql_query(query);
format(str, sizeof(str), \"Sikeresen szerkesztetted az autó színét! szín1: %d, szín2: %d\", color1, color2);
SendClientMessage(playerid, COLOR_GREY, str);
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(ispassenger == 0)
{
for(new i; i < MAX_SLOTS; i++)
{
   if(vehicleid == carplay)
   {
              new tarolo[24];
       GetPlayerName(playerid, name1, sizeof(name1));
          format(query, sizeof(query), \"SELECT * FROM cars WHERE slot = \'%d\'\", i);
      mysql_query(query);
       mysql_store_result();
       if(mysql_num_rows() != 0)
       {
         new linen[1024];
         mysql_fetch_row(linen);
         sscanf(linen, \"p<|>{d}s[24]{dffffdd}\", tarolo);
         if(strcmp(tarolo, name1))
         {
            ClearAnimations(playerid);
            format(str, sizeof(str), \"Ez a jármû \'%s\' tulajdona! Te nem vezetheted!\", tarolo);
            SendClientMessage(playerid, COLOR_GREY, str);
         }
         mysql_free_result();
      }
   }
}
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
for(new i; i < MAX_SLOTS; i++)
{
    if(vehicleid == carplay)
    {
      format(query, sizeof(query), \"SELECT * FROM cars WHERE slot = \'%d\'\", i);
      mysql_query(query);
      mysql_store_result();
   if(mysql_num_rows() != 0)
   {
      new linen[1024];
      mysql_fetch_row(linen);
      new tarolo[2];
      sscanf(linen, \"p<|>{ds[24]dffffdd}dd\", tarolo[0], tarolo[1]);
      AddVehicleComponent(carplay, tarolo[0]);
      AddVehicleComponent(carplay, tarolo[1]);
      mysql_free_result();
   }
}
}
return 1;
}

 
Lehet hogy van benne hiba, de az mindenestûl tesztelve van, használva van, szerintem bugtalan.
mySQL tábla szerkezet:
 
CREATE TABLE IF NOT EXISTS `cars` (
  `slot` int(2) NOT NULL,
  `Tulaj` varchar(30) CHARACTER SET utf8 COLLATE utf8_hungarian_ci NOT NULL,
  `VehID` int(3) NOT NULL,
  `X` float NOT NULL,
  `Y` float NOT NULL,
  `Z` float NOT NULL,
  `A` float NOT NULL,
  `color1` int(3) NOT NULL,
  `color2` int(3) NOT NULL,
  `tuning1` int(5) NOT NULL,
  `tuning2` int(5) NOT NULL,
  `tuning3` int(5) NOT NULL,
  `tuning4` int(5) NOT NULL,
  `tuning5` int(5) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

6
SA-MP: Szerverfejlesztés / TextLabel/Teleport készítõ
« Dátum: 2012. Május 12. - 18:00:10 »
Hali.
Elsõ szkriptem amit publikálok, de hát valahol el kell kezdeni. :)
Nos.. Ez egy 3DTextLabel és Teleport készítõ IG.
Használat:
-(3DTextLabel)A Scriptfiles mappába hozz létre egy TextLabels.txt nevû fájlt. Betöltöd a szkriptet, felmész a szerverre, bejelentkezel Rcon-ba, elmész arra a helyre, ahol létre akarsz hozni egy 3DTextLabel-t, ott beírod, hogy /textcreate [3d text szöveg] aztán kiválasztod a dolgokat tetszés szerint. A TextLabels.txt-ben megtalálod a 3DTextLabel-t, aztán beteszed a módba az OnGameModeInit alá.(Fejleszteni nem hiszem hogy fogom, am\' se annyira nehéz egy TextLabel-t megcsinálni, na meg úgy érzem túl hosszú idõ lenne..)
-(Teleport)A Scriptfiles mappába hozz létre egy Teleportok.txt nevû fájlt. Betöltöd a szkriptet, felmész a szerverre, bejelentkezel Rcon-ba, elmész arra a helyre, ahol létre akarod hozni a teleportot, ott beírod, hogy /telecreate, kiválasztod a dolgokat tetszés szerint, aztán beírod a teleport parancsát. A Teleportok.txt-ben megtalálod a parancsot, aztán azt beteszed a módodba/szkriptedbe.(A teleport készítõt lehet még fejleszteni, bõvíteni fogom. :P)
Letöltés
3DTextLabelCreater
 
#include <a_samp>
#include <zcmd>
#define COLOR_GREEN         0x33AA33AA
#define COLOR_BLUE          0x0000FFAA
#define COLOR_RED           0xFF0606FF
#define COLOR_YELLOW        0xFFFF00AA
#define COLOR_BLUE          0x0000FFAA
#define COLOR_GREY          0xAFAFAFAA
#define COLOR_WHITE         0xFFFFFFAA
#define COLOR_BROWN         0x993300AA
#define COLOR_ORANGE        0xFF9933AA
#define COLOR_BLACK         0x000000AA
#define COLOR_LIGHTBLUE     0x00BFFFAA
#define TELEPORT_DIALOG 500
#define AUTOTELEPORT_DIALOG 499
#define SOFORTELEPORT_DIALOG 498
new autoteleport;
new soforteleport;
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" IG Teleport készítõ betöltve| by Ryuuzaki\");
print(\"--------------------------------------\\n\");
if(!fexist(\"Teleportok.txt\")) print(\"HIBA: Hiányzik a Teleportok.txt fájl!\"), print(\"Kérlek hozz létre egyet. Scriptfiles/Teleportok.txt\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
CMD:telecreate(playerid)
{
autoteleport = 0;
soforteleport = 0;
if(!IsPlayerAdmin(playerid)) return 0;
ShowPlayerDialog(playerid, AUTOTELEPORT_DIALOG, DIALOG_STYLE_MSGBOX, \"Autó teleportálás\", \"Lehessen autóval teleportálni?\", \"Igen\", \"Nem\");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == AUTOTELEPORT_DIALOG)
{
    if(response)
    {
        autoteleport = 1;//lehet autóval teleportálni
        ShowPlayerDialog(playerid, SOFORTELEPORT_DIALOG, DIALOG_STYLE_MSGBOX, \"Sofõr ülésrõl teleport\", \"Csak a sofõr tudjon teleportálni?\", \"Igen\", \"Nem\");
}
else if(!response)
{
   autoteleport = 2;//nem lehet autóval teleportálni
    ShowPlayerDialog(playerid, TELEPORT_DIALOG, DIALOG_STYLE_INPUT, \"Teleport parancs\", \"Mi legyen a teleport parancs?(/ jel nélkül)\", \"Rendben\", \"Kilép\");
}
}
else if(dialogid == SOFORTELEPORT_DIALOG)
{
    if(response)
    {
   soforteleport = 1;//csak sofõrként lehet teleportálni
   ShowPlayerDialog(playerid, TELEPORT_DIALOG, DIALOG_STYLE_INPUT, \"Teleport parancs\", \"Mi legyen a teleport parancs?(/ jel nélkül)\", \"Rendben\", \"Kilép\");
}
else if(!response)
{
    soforteleport = 2;//az utasok is tudjanak teleportálni
    ShowPlayerDialog(playerid, TELEPORT_DIALOG, DIALOG_STYLE_INPUT, \"Teleport parancs\", \"Mi legyen a teleport parancs?(/ jel nélkül)\", \"Rendben\", \"Kilép\");
}
}
else if(dialogid == TELEPORT_DIALOG)
{
    if(response)
    {
   if(strlen(inputtext) == 0)
   {
       ShowPlayerDialog(playerid, TELEPORT_DIALOG, DIALOG_STYLE_INPUT, \"Teleport parancs\", \"Mi legyen a teleport parancs?(/ jel nélkül)\", \"Rendben\", \"Kilép\");
      SendClientMessage(playerid, COLOR_GREY, \"Parancs nélküli teleportot akarsz készíteni?\");
   }
   new Float:x[MAX_PLAYERS], Float:y[MAX_PLAYERS], Float:z[MAX_PLAYERS], Float:a[MAX_PLAYERS];
        new string[200], string2[300];
        GetPlayerPos(playerid, x[playerid], y[playerid], z[playerid]);
        GetPlayerFacingAngle(playerid, a[playerid]);
        if(autoteleport == 1)
        {
            if(soforteleport == 1)
            {
         format(string, sizeof(string), \"Teleport létrehozva! Parancsa: {0000FF}/%s{FFFF00}, Koordinátái: {FF4500}%0.2f, %0.2f, %0.2f{FFFF00}, Nézõszöge: {C0C0C0}%0.2f\", inputtext, x[playerid], y[playerid], z[playerid], a[playerid]);
         SendClientMessage(playerid, COLOR_YELLOW, string);
         SendClientMessage(playerid, COLOR_YELLOW, \"Autóval is lehet teleportálni: {00FF00}Igen{FFFF00}, Csak sofõr tud teleportálni: {00FF00}Igen{FFFF00}\");
         SendClientMessage(playerid, COLOR_YELLOW, \"A fájlt megtalálod a scriptfiles mappában.\");
         new File:Teleportok = fopen(\"Teleportok.txt\", io_append);
         format(string2, sizeof(string2), \"CMD:%s(playerid)\\r\\n\", inputtext);
         fwrite(Teleportok, string2);
         fwrite(Teleportok, \"{\\r\\n\");
         fwrite(Teleportok, \"\\tif(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)\\r\\n\");
         fwrite(Teleportok, \"\\t{\\r\\n\");
         format(string2, sizeof(string2), \"\\t\\tSetVehiclePos(GetPlayerVehicleID(playerid), %0.2f, %0.2f, %0.2f);\\r\\n\", x[playerid], y[playerid], z[playerid]);
         fwrite(Teleportok, string2);
         fwrite(Teleportok, \"\\t}\\r\\n\");
         fwrite(Teleportok, \"\\telse if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)\\r\\n\");
         fwrite(Teleportok, \"\\t{\\r\\n\");
         format(string2, sizeof(string2), \"\\t\\tSetPlayerPos(playerid, %0.2f, %0.2f, %0.2f);\\r\\n\", x[playerid], y[playerid], z[playerid]);
         fwrite(Teleportok, string2);
         format(string2, sizeof(string2), \"\\t\\tSetPlayerFacingAngle(playerid, %0.2f);\\r\\n\", a[playerid]);
         fwrite(Teleportok, string2);
         fwrite(Teleportok, \"\\t}\\r\\n\");
         fwrite(Teleportok, \"\\telse if(GetPlayerState(playerid) == PlAYER_STATE_PASSENGER)\\r\\n\");
         fwrite(Teleportok, \"\\t{\\r\\n\");
         fwrite(Teleportok, \"\\t\\tSendClientMessage(playerid, 0xFF0606FF, \\\"Ezt a parancsot utasként nem használhatod!\\\");\\r\\n\");
         fwrite(Teleportok, \"\\t}\\r\\n\");
         fwrite(Teleportok, \"\\treturn 1;\\r\\n\");
         fwrite(Teleportok, \"}\\r\\n\");
         fclose(Teleportok);
      }
      else if(soforteleport == 2)
      {
         format(string, sizeof(string), \"Teleport létrehozva! Parancsa: {0000FF}/%s{FFFF00}, Koordinátái: {FF4500}%0.2f, %0.2f, %0.2f{FFFF00}, Nézõszöge: {C0C0C0}%0.2f\", inputtext, x[playerid], y[playerid], z[playerid], a[playerid]);
         SendClientMessage(playerid, COLOR_YELLOW, string);
         SendClientMessage(playerid, COLOR_YELLOW, \"Autóval is lehet teleportálni: {00FF00}Igen{FFFF00}, Csak sofõr tud teleportálni: {FF0000}Nem{FFFF00}\");
         SendClientMessage(playerid, COLOR_YELLOW, \"A fájlt megtalálod a scriptfiles mappában.\");
         new File:Teleportok = fopen(\"Teleportok.txt\", io_append);
         format(string2, sizeof(string2), \"CMD:%s(playerid)\\r\\n\", inputtext);
         fwrite(Teleportok, string2);
         fwrite(Teleportok, \"{\\r\\n\");
         fwrite(Teleportok, \"\\tif(IsPlayerInAnyVehicle(playerid))\\r\\n\");
         fwrite(Teleportok, \"\\t{\\r\\n\");
         format(string2, sizeof(string2), \"\\t\\tSetVehiclePos(GetPlayerVehicleID(playerid), %0.2f, %0.2f, %0.2f);\\r\\n\", x[playerid], y[playerid], z[playerid]);
         fwrite(Teleportok, string2);
         fwrite(Teleportok, \"\\t}else{\\r\\n\");
         format(string2, sizeof(string2), \"\\t\\tSetPlayerPos(playerid, %0.2f, %0.2f, %0.2f);\\r\\n\", x[playerid], y[playerid], z[playerid]);
         fwrite(Teleportok, string2);
         format(string2, sizeof(string2), \"\\t\\tSetPlayerFacingAngle(playerid, %0.2f);\\r\\n\", a[playerid]);
         fwrite(Teleportok, string2);
         fwrite(Teleportok, \"\\t}\\r\\n\");
         fwrite(Teleportok, \"\\treturn 1;\\r\\n\");
         fwrite(Teleportok, \"}\\r\\n\");
         fclose(Teleportok);
      }
   }
   else if(autoteleport == 2)
   {
      format(string, sizeof(string), \"Teleport létrehozva! Parancsa: {0000FF}/%s{FFFF00}, Koordinátái: {FF4500}%0.2f, %0.2f, %0.2f{FFFF00}, Nézõszöge: {C0C0C0}%0.2f\", inputtext, x[playerid], y[playerid], z[playerid], a[playerid]);
      SendClientMessage(playerid, COLOR_YELLOW, string);
      SendClientMessage(playerid, COLOR_YELLOW, \"Autóval is lehet teleportálni: {FF0000}Nem{FFFF00}, Csak sofõr tud teleportálni: {FF0000}Nem(Autóval nem lehet teleportálni){FFFF00}\");
      SendClientMessage(playerid, COLOR_YELLOW, \"A fájlt megtalálod a scriptfiles mappában.\");
      new File:Teleportok = fopen(\"Teleportok.txt\", io_append);
      format(string2, sizeof(string2), \"CMD:%s(playerid)\\r\\n\", inputtext);
      fwrite(Teleportok, string2);
      fwrite(Teleportok, \"{\\r\\n\");
      fwrite(Teleportok, \"\\tif(IsPlayerInAnyVehicle(playerid))\\r\\n\");
      fwrite(Teleportok, \"\\t{\\r\\n\");
      format(string2, sizeof(string2), \"\\t\\tSendClientMessage(playerid, 0xFF0606FF, \\\"Ezt a parancsot csak gyalososként használhatod!\\\");\\r\\n\", x[playerid], y[playerid], z[playerid]);
      fwrite(Teleportok, string2);
      fwrite(Teleportok, \"\\t}else{\\r\\n\");
      format(string2, sizeof(string2), \"\\t\\tSetPlayerPos(playerid, %0.2f, %0.2f, %0.2f);\\r\\n\", x[playerid], y[playerid], z[playerid]);
      fwrite(Teleportok, string2);
      format(string2, sizeof(string2), \"\\t\\tSetPlayerFacingAngle(playerid, %0.2f);\\r\\n\", a[playerid]);
      fwrite(Teleportok, string2);
      fwrite(Teleportok, \"\\t}\\r\\n\");
      fwrite(Teleportok, \"\\treturn 1;\\r\\n\");
      fwrite(Teleportok, \"}\\r\\n\");
      fclose(Teleportok);
   }
}
}
return 1;
}

7
Segítségkérés / Egy csapatban lévõ tagok száma
« Dátum: 2012. Április 21. - 18:54:47 »
Hali.
Lenne egy kérdésem, mégpedig: Hogy hogyan tudom lekérdezni egy bizonyos csapatban tartózkodó játékosok számát(Mennyien tartózkodnak éppen abban a csapatban)? SetPlayerTeam-et használok.

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