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.
Üzenetek - kurta999
Oldalak: 1 ... 56 57 [58] 59 60 ... 184
856
« Dátum: 2012. február 29. - 18:12:47 »
Ez szerintem a legegyszerûbb, bár módosítani még mindig lehet rajta, de én így használom Eredetileg egy módban találtam, elég jól átszerkesztettem. #define IsValidVehicle(%1) \\ (!!GetVehicleModel(%1)) #define FLOAT_INFINITY (Float:0x7F800000) // Streamer plugin 2.6 include-ba benenvan.. GetVehicleWithinDistance(playerid, Float:x1, Float:y1, Float:z1, Float:dist, &veh) { new Float:vDist = FLOAT_INFINITY; for(new i = 1; i < MAX_VEHICLES; i++) { if(!IsValidVehicle(i)) continue; if(GetPlayerVehicleID(playerid) != i) { vDist = GetVehicleDistanceFromPoint(i, x1, y1, z1); if(vDist < dist) { veh = i; dist = vDist; } } } }
else if(newkeys == 640) // Submission + Space { new vehicle; vID = GetPlayerVehicleID(playerid); GetPlayerPos(playerid, X, Y, Z ); GetVehicleWithinDistance(playerid, X, Y, Z, 30.0, vehicle); if(vehicle) { ShowWelcome(playerid, \"~p~Trainer ~y~~h~felkapcsolva~w~!\", .time = 750); AttachTrailerToVehicle(vID, vehicle); } }
857
« Dátum: 2012. február 27. - 22:13:54 »
Azon már annyiszor baszakodtam, de valahogy soha nemjött össze.. Azokat a kibasz.ott címeket nem olyan egyszerû kikeresni, mert nincs mi szerint keresni, mint a Szerver Rule-nél. Ott mindig volt egy fix pont és azszerint kerestem ki, de itt nincs fix pont. Assembly kódot meg nem nagyon vágom, úgyhogy..
858
« Dátum: 2012. február 26. - 18:44:13 »
Próbáld ki ezt, bár ebben még elõfordulhatnak hibák, nem teszteltem.. // MySQL Regisztrációs rendszer By kurta999 // Verzió: 1.0 R4 // Last Update: 2012.02.24 #include <a_samp> #include <a_mysql> // http://forum.sa-mp.com/showthread.php?t=56564 #include <sscanf2> // http://forum.sa-mp.com/showthread.php?t=120356 #include <zcmd> // http://forum.sa-mp.com/showthread.php?t=91354 #define NINCS_REG_CSILLAG // Rakd a kommenttárba, ha a jelszót a játékosnak a regisztráció dialógusban csillagozni akarod. // Szerintem ezt ajánlott így hagyni, mivel a regisztrációban könnyen félrhetírhatsz és nemjössz rá a hibára, mivel nem látod, hogy mit írtál.. // A hibára pedig csak akkor jössz rá, miután beregisztráltál. #define ChangeNameDialog(%1) \\ ShowPlayerDialog(%1, DIALOG_CHANGENAME, DIALOG_STYLE_INPUT, !\"{\" #XCOLOR_RED \"}Névváltás\", !\"{\" #XCOLOR_GREEN \"}Lentre írd be az új neved! \\nHa régóta játszol már, akkor a névváltás több másodpercig is eltarthat!\\n\\n{\" #XCOLOR_RED \"}Ahogy megváltoztattad, rögtön változtasd meg a neved a SAMP-ba!\", !\"Változtatás\", !\"Mégse\") // gpci beágyazása native gpci(playerid, const serial[], maxlen); new year, month, day, hour, minute, second; new // Direkt adok hozzá + 1 karaktert, mivel valahol a \\0 kraktert is tárolni kell. (Ez 4 karakter, de kell az 5. is, mivel ott tárolja a \\0-t! [\'a\', \'n\', \'y\', \'á\', \'d\', \'\\0\']) g_szQuery[512 +1], g_szLine[128 +1], i_str[128 +1], tmp[128 +1], g_szName[24 +1], g_szIP[16 +1]; // MySQL regisztrációs rendszer By kurta999 /* Forrás: Wiki mysql_query Egy megadott \'parancs\' elküldése mysql_store_result Ez akkor kell, ha tárolni szertnénk azokat az adatokat, amiket a lekérdedés visszadott. (SELECT, stb.. ) mysql_free_result() Ez a store_result után kell, felszabadítja a memóriát, amit a store_result() lefoglalt. mysql_num_rows Az SQL sorok számával tér vissza (SELECT & SHOW) mysql_affected_rows Az SQL sorok számával tér vissza (INSERT, UPDATE, REPLACE & DELETE) mysql_fetch_row A kiválasztott sort beleírjuk egy megadott karakterláncba, egy megadott elválasztóval, alapból ez: | mysql_insert_id INSTER INTO után visszatér a sor azonosítójával (Csak akkor, ha az auto_increment) */ // MySQL beállítások, alapból ezek azok a wamp-nál, csak a tábla nevét módosítsd arra, amilyen néven létrehoztad, nekem itt a \'samp\' #define MYSQL_HOST \"localhost\" #define MYSQL_USER \"root\" #define MYSQL_PASS \"\" #define MYSQL_DB \"samp\" #define COLOR_GREY 0x375FFFFF #define COLOR_GREEN 0x33FF33AA #define COLOR_RED 0xFF0000AA #define COLOR_YELLOW 0xFF9900AA #define COLOR_WHITE 0xFFFFFFAA #define COLOR_BLUE 0x33CCFFAA #define COLOR_LIGHTBLUE 0x33CCFFAA #define COLOR_BASIC 0x0066FFAA #define COLOR_SYSTEM 0xEFEFF7AA #define COLOR_LIGHTBLUE 0x33CCFFAA #define COLOR_PINK 0xFF66FFAA #define XCOLOR_GREEN 33FF33 #define XCOLOR_RED FF0000 #define XCOLOR_BLUE 33CCFF #define XCOLOR_YELLOW FF9900 #define XCOLOR_WHITE FFFFFF // Dialóg ID-k #define DIALOG_LOGIN 16770 #define DIALOG_REGISTER 16771 #define DIALOG_CHANGENAME 16772 #define DIALOG_CHANGEPASS 16773 #define DIALOG_FINDPLAYER 16774 // isnull by Y_Less #define isnull(%1) \\ ((!(%1[0])) || (((%1[0]) == \'\\1\') && (!(%1[1])))) public OnFilterScriptInit() { // MySQL print(!\"MySQL: Kapcsolódás erre a címre \" MYSQL_HOST \" \" MYSQL_USER \" nevû felhasználóval. \\nAdatbázis neve: \" MYSQL_DB \".\"); mysql_debug(1); // Ha élesbe futtatod, akkor ezt SEMMIKÉPP se hagy bekapcsolva! Ez az egész rendszer sebességét kb. ötszörösére csökkenti, ha nem tízszeresére.. mysql_connect(!MYSQL_HOST, !MYSQL_USER, !MYSQL_DB, !MYSQL_PASS); if(mysql_ping() != 1) { print(!\"MySQL: Kapcsolódás sikertelen! (\" MYSQL_HOST \")\"); print(!\"MySQL: A mód kikapcsol! (\" MYSQL_HOST \")\"); SendRconCommand(!\"exit\"); return 1; } print(!\"MySQL: Kapcsolódás elfogadva!\" MYSQL_HOST \"\"); print(!\"MySQL: Adatbázis \" MYSQL_DB \" kiválasztva!\"); mysql_reconnect(); // Újrakapcsolódás engedélyezése return 1; } public OnFilterScriptExit() { mysql_close(); return 1; } public OnPlayerConnect(playerid) { // Automatikus bejelentkezés if(!IsPlayerNPC(playerid)) // Csak játékosokra vonatkozik { SetPVarInt(playerid, \"RegID\", -1); SetPVarInt(playerid, \"FristSpawn\", 1); new iRegID; GetPlayerIp(playerid, g_szIP, sizeof(g_szIP)); gpci(playerid, i_str, sizeof(i_str)); getdate(year, month, day); gettime(hour, minute, second); format(g_szQuery, sizeof(g_szQuery), \"INSERT INTO `connections`(id, name, ip, serial, time) VALUES(0, \'%s\', \'%s\', \'%s\', \'%02d.%02d.%02d/%02d.%02d.%02d\')\", pName(playerid), g_szIP, i_str, year, month, day, hour, minute, second); mysql_query(g_szQuery); // Autologin format(g_szQuery, sizeof(g_szQuery), \"SELECT * FROM `players` WHERE `name` = \'%s\' AND `ip` = \'%s\'\", pName(playerid), g_szIP); mysql_query(g_szQuery); mysql_store_result(); if(mysql_num_rows() != 0) // Ha a sor nem üres { mysql_fetch_row(g_szLine); mysql_free_result(); sscanf(g_szLine, \"p<|>d{s[24]s[16]s[30]s[24]s[24]ddddd}\", iRegID); SetPVarInt(playerid, \"RegID\", iRegID); // printf(\"%d\", iRegID); LoginPlayer(playerid, g_szLine); SendClientMessage(playerid, COLOR_GREEN, \"Automatikusan bejelentkeztél!\"); } else // Ha üres, akkor itt lesz free_result, mer az elõzõ részünk akkor nem fut le és nem lesz neki ott free_result.. { mysql_free_result(); } SetPlayerColor(playerid, (random(0xFFFFFF) << | 0xFF); // GetPlayerColor() javítása } return 1; } public OnPlayerDisconnect(playerid, reason) { return (GetPVarType(playerid, \"LoggedIn\")) ? (SavePlayer(playerid)) : (1); } public OnPlayerRequestClass(playerid, classid) { if(!GetPVarType(playerid, \"LoggedIn\")) // Ha nincs bejelentkezve, ez a lekérés ide nagyon fontos mert minden gobnyomásnál felmutatná a skiválasztóban. { format(g_szQuery, sizeof(g_szQuery), \"SELECT * FROM `players` WHERE `name` = \'%s\'\", pName(playerid)); // Kiválasztjuk, a játékos nevét mysql_query(g_szQuery); mysql_store_result(); if(mysql_num_rows() != 0) // Ha a sorok száma nem 0 ( nem üres ) { LoginDialog(playerid); // Akkor login } else // Ellentétben { RegisterDialog(playerid); // Register } mysql_free_result(); } return 1; } public OnPlayerRequestSpawn(playerid) { if(!IsPlayerNPC(playerid)) { if(!GetPVarType(playerid, \"LoggedIn\")) { format(g_szQuery, sizeof(g_szQuery), \"SELECT `reg_id` FROM `players` WHERE `name` = \'%s\'\", pName(playerid)); mysql_query(g_szQuery); mysql_store_result(); if(mysql_num_rows() != 0) { LoginDialog(playerid); } else { RegisterDialog(playerid); } mysql_free_result(); return 0; } } return 1; } public OnPlayerSpawn(playerid) { // Ha elõször spawnol, akkor odaadjuk neki a pénzt. Mivel skinválasztásnál nem lehet pénzt adni a játékosnak! if(GetPVarType(playerid, \"FristSpawn\")) { ResetPlayerMoney(playerid); GivePlayerMoney(playerid, GetPVarInt(playerid, \"Cash\")); DeletePVar(playerid, \"FristSpawn\"); DeletePVar(playerid, \"Cash\"); } // Ütésstílus beállítása SetPlayerFightingStyle(playerid, GetPVarInt(playerid, \"Style\")); return 1; } // Y_Less NameCheck(const aname[]) { new i, ch; while ((ch = aname[i++]) && ((ch == \']\') || (ch == \'[\') || (ch == \'(\') || (ch == \')\') || (ch == \'_\') || (ch == \'$\') || (ch == \'@\') || (ch == \'.\') || (ch == \'=\') || (\'0\' <= ch <= \'9\') || ((ch |= 0x20) && (\'a\' <= ch <= \'z\')))) {} return !ch; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DIALOG_LOGIN: { if(!response) return LoginDialog(playerid); if(GetPVarType(playerid, \"LoggedIn\")) { SendClientMessage(playerid, COLOR_RED, \"Már be vagy jelentkezve.\"); return 1; } if(isnull(inputtext)) { SendClientMessage(playerid, COLOR_RED, \"Nem írtál be semilyen jelszót!\"); LoginDialog(playerid); return 1; } if(!(3 <= strlen(inputtext) <= 20)) { SendClientMessage(playerid, COLOR_RED, \"Rossz jelszó hosszúság! 3 - 20\"); LoginDialog(playerid); return 1; } mysql_real_escape_string(inputtext, tmp); // \"Átvisszzük a karaktereket MySQL formába, hogy nemhogy hiba lesz\"... ( lol, ez aztán kurva értelmes ) format(g_szQuery, sizeof(g_szQuery), \"SELECT * FROM `players` WHERE `name` = \'%s\' AND `pass` COLLATE `utf8_bin` LIKE \'%s\'\", pName(playerid), tmp); mysql_query(g_szQuery); mysql_store_result(); if(mysql_num_rows() != 1) { mysql_free_result(); SendClientMessage(playerid, COLOR_RED, \"HIBA: Rossz jelszó.\"); LoginDialog(playerid); return 1; } else { new iRegID; mysql_fetch_row(g_szLine); mysql_free_result(); sscanf(g_szLine, \"p<|>d{s[24]s[16]s[30]s[24]s[24]ddddd}\", iRegID); SetPVarInt(playerid, \"RegID\", iRegID); LoginPlayer(playerid, g_szLine); } // Az IP-t beállítjuk a jelenlegi IP-re, hogy az autologin menjen. A GetPlayerIp OnPlayerDisconnect-nél nem mûködik! (255.255.255.255-el tér mindig vissza..) GetPlayerIp(playerid, g_szIP, sizeof(g_szIP)); format(g_szQuery, sizeof(g_szQuery), \"UPDATE `players` SET `ip` = \'%s\' WHERE `reg_id` = %d\", g_szIP, GetPVarInt(playerid, \"RegID\")); mysql_query(g_szQuery); SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen bejelentkeztél!\"); } case DIALOG_REGISTER: { if(!response) return RegisterDialog(playerid); if(isnull(inputtext)) { SendClientMessage(playerid, COLOR_RED, \"Nem írtál be semilyen jelszót!\"); RegisterDialog(playerid); return 1; } new len = strlen(inputtext); if(!(3 <= len <= 20)) { SendClientMessage(playerid, COLOR_RED, \"Rossz jelszó hosszúság! 3 - 20\"); RegisterDialog(playerid); return 1; } for(new i; i < len; i++) { if(inputtext == \'|\') return SendClientMessage(playerid, COLOR_RED, \"Ezt a jelet {\" #XCOLOR_BLUE \"}| {\" #XCOLOR_RED \"}nem használhatod, mert ez a MySQL elválasztó!\"); } format(g_szQuery, sizeof(g_szQuery), \"SELECT `reg_id` FROM `players` WHERE `name` = \'%s\'\", pName(playerid)); mysql_query(g_szQuery); mysql_store_result(); if(mysql_num_rows() != 0) { mysql_free_result(); SendClientMessage(playerid, COLOR_RED, \"MySQL sorok száma nem 0, valami hiba történt a kiválasztás közben!\"); SendClientMessage(playerid, COLOR_RED, \"Ezt a hibát jelezd a tulajdonosnak! Kickelve lettél, mert ebbõl hiba keletkezhet!\"); Kick(playerid); return 1; } mysql_free_result(); getdate(year, month, day); gettime(hour, minute, second); GetPlayerIp(playerid, g_szIP, sizeof(g_szIP)); mysql_real_escape_string(inputtext, tmp); // Ez arra van, hogy ha speciális karatereket tartalmaz, akk azt átcsinálja az SQL-nek érthetõre // A jeszavak nincsenek titkosítva... format(g_szQuery, sizeof(g_szQuery), \"INSERT INTO `players`(reg_id, name, ip, pass, reg_date, laston) VALUES(0, \'%s\', \'%s\', \'%s\', \'%02d.%02d.%02d/%02d.%02d.%02d\', \'%02d.%02d.%02d/%02d.%02d.%02d\')\", pName(playerid), g_szIP, tmp, year, month, day, hour, minute, second, year, month, day, hour, minute, second); mysql_query(g_szQuery); SetPVarInt(playerid, \"RegID\", mysql_insert_id()); // Játékos Regisztrációs ID-jét beállítuk arra, ameik sorba írtunk elõbb ( INSERT INTO ) SetPVarInt(playerid, \"LoggedIn\", 1); format(i_str, sizeof(i_str), \"Sikeresen regisztráltál! A jelszavad: {\" #XCOLOR_RED \"}%s. {\" #XCOLOR_GREEN \"}Felhasználó ID: {\" #XCOLOR_BLUE \"}%d\", tmp, GetPVarInt(playerid, \"RegID\")); SendClientMessage(playerid, COLOR_GREEN, i_str); SendClientMessage(playerid, COLOR_PINK, \"Ennyi lenne a MySQL regisztáció {\" #XCOLOR_BLUE \"}:)\"); } case DIALOG_CHANGENAME: { if(!response) return 0; if(!(3 <= strlen(inputtext) <= 20)) { SendClientMessage(playerid, COLOR_RED, \"Nem megfelelõ hosszú a neved! 3 és 20 karakter között legyen!\"); ChangeNameDialog(playerid); return 1; } if(!NameCheck(inputtext)) { SendClientMessage(playerid, COLOR_RED, \"Nem megfelelõ név! Csak ezek a karakterek lehetnek benne: {\" #XCOLOR_GREEN \"}A-Z, 0-9, [], (), $, @. {\" #XCOLOR_RED \"}Ezenkívül helyet nem tartamlazhat!\"); ChangeNameDialog(playerid); return 1; } if(!strcmp(inputtext, pName(playerid), true)) { SendClientMessage(playerid, COLOR_RED, \"Jelenleg is ez a neved! Írj be egy másikat!\"); ChangeNameDialog(playerid); return 1; } format(g_szQuery, sizeof(g_szQuery), \"SELECT `reg_id` FROM `players` WHERE `name` = \'%s\'\", inputtext); mysql_query(g_szQuery); mysql_store_result(); if(mysql_num_rows() != 0) { mysql_free_result(); SendClientMessage(playerid, COLOR_RED, \"HIBA: Ez a név már használatban van!\"); SendClientMessage(playerid, COLOR_GREEN, \"Írj be egy más nevet, vagy menj a \'Mégse\' gombra!\"); ChangeNameDialog(playerid); return 1; } else { mysql_free_result(); } new pname[MAX_PLAYER_NAME + 1], pRegID = GetPVarInt(playerid, \"RegID\"); GetPlayerName(playerid, pname, sizeof(pname)); if(SetPlayerName(playerid, inputtext) != 1) { SendClientMessage(playerid, COLOR_RED, \"Nem megfelelõ név! Írj be egy másikat!\"); ChangeNameDialog(playerid); return 1; } getdate(year, month, day); gettime(hour, minute, second); format(g_szQuery, sizeof(g_szQuery), \"INSERT INTO `namechanges`(id, reg_id, oldname, newname, time) VALUES(0, %d, \'%s\', \'%s\', \'%02d.%02d.%02d/%02d.%02d.%02d\')\", pRegID, pname, inputtext, year, month, day, hour, minute, second); mysql_query(g_szQuery); format(g_szQuery, sizeof(g_szQuery), \"UPDATE `players` SET `name` = \'%s\' WHERE `reg_id` = %d\", inputtext, pRegID); mysql_query(g_szQuery); format(i_str, sizeof(i_str), \"Sikeresen átváltottad a neved! Új neved: {\" #XCOLOR_WHITE \"}%s.\", inputtext); SendClientMessage(playerid, COLOR_YELLOW, i_str); } case DIALOG_CHANGEPASS: { if(!response) return 0; if(!(3 <= strlen(inputtext) <= 20)) { SendClientMessage(playerid, COLOR_RED, \"Nem megfelelõ hosszú a jelszavad! 3 és 20 karakter között legyen!\"); ShowPlayerDialog(playerid, DIALOG_CHANGEPASS, DIALOG_STYLE_INPUT, \"Jelszóváltás\", \"Lentre írd be az új jelszavad! \\n\\n\", \"Változtatás\", \"Mégse\"); return 1; } new pRegID = GetPVarInt(playerid, \"RegID\"); format(g_szQuery, sizeof(g_szQuery), \"SELECT `pass` FROM `players` WHERE `reg_id` = %d\", pRegID); mysql_query(g_szQuery); mysql_store_result(); mysql_fetch_row(i_str); mysql_free_result(); mysql_real_escape_string(inputtext, tmp); format(g_szQuery, sizeof(g_szQuery), \"UPDATE `players` SET `pass` = \'%s\' WHERE `reg_id` = %d\", tmp, pRegID); mysql_query(g_szQuery); getdate(year, month, day); gettime(hour, minute, second); format(g_szQuery, sizeof(g_szQuery), \"INSERT INTO `namechanges_p`(id, reg_id, name, oldpass, newpass, time) VALUES(0, %d, \'%s\', \'%s\', \'%s\', \'%02d.%02d.%02d/%02d.%02d.%02d\')\", pRegID, pName(playerid), i_str, tmp, year, month, day, hour, minute, second); mysql_query(g_szQuery); format(i_str, sizeof(i_str), \"Sikeresen átállítotad a jelszavad! Új jelszavad: {\" #XCOLOR_GREEN \"}%s\", tmp); SendClientMessage(playerid, COLOR_YELLOW, i_str); } case DIALOG_FINDPLAYER: { if(!response) return 0; format(g_szQuery, sizeof(g_szQuery), \"SELECT * FROM `players` WHERE `name` = \'%s\'\", inputtext); mysql_query(g_szQuery); mysql_store_result(); mysql_fetch_row(g_szLine); mysql_free_result(); new pRegID, RegDate[24], Laston[24], Cash, Score, Kills, Deaths, Style, Float:Ratio, Changes[2]; sscanf(g_szLine, \"p<|>d{s[24]s[16]s[30]}s[24]s[24]ddddd\", pRegID, RegDate, Laston, Cash, Score, Kills, Deaths, Style); // Arány kiszámítása if(Deaths && Kills) // Ha az ölések és a halálok száma nem nulla, mivel a 0-val való osztásnak nincs értelme és bebugol a format() { Ratio = floatdiv(Kills, Deaths); } else { Ratio = 0.0; } switch(GetPlayerFightingStyle(playerid)) { case FIGHT_STYLE_NORMAL: tmp = \"Normál\"; case FIGHT_STYLE_BOXING: tmp = \"Boxoló\"; case FIGHT_STYLE_KUNGFU: tmp = \"Kungfu\"; case FIGHT_STYLE_KNEEHEAD: tmp = \"Kneehead\"; case FIGHT_STYLE_GRABKICK: tmp = \"Grabkick\"; case FIGHT_STYLE_ELBOW: tmp = \"Elbow\"; } // Megszámlálás format(g_szQuery, sizeof(g_szQuery), \"SELECT COUNT( reg_id ) FROM `namechanges` WHERE `reg_id` = %d\", pRegID); mysql_query(g_szQuery); mysql_store_result(); Changes[0] = mysql_fetch_int(); mysql_free_result(); format(g_szQuery, sizeof(g_szQuery), \"SELECT COUNT( reg_id ) FROM `namechanges_p` WHERE `reg_id` = %d\", pRegID); mysql_query(g_szQuery); mysql_store_result(); Changes[1] = mysql_fetch_int(); mysql_free_result(); // Üzenet elküldése format(i_str, sizeof(i_str), \"Név: %s, ID: %d, RegID: %d, Pénz: %d, Pont: %d\", inputtext, playerid, pRegID, Cash, Score); SendClientMessage(playerid, COLOR_RED, i_str); format(i_str, sizeof(i_str), \"Ölések: %d, Halálok: %d, Arány: %.2f, Ütés Stílus: %s\", Kills, Deaths, Ratio, tmp); SendClientMessage(playerid, COLOR_YELLOW, i_str); format(i_str, sizeof(i_str), \"Névváltások: %d, Jelszóváltások: %d\", Changes[0], Changes[1]); SendClientMessage(playerid, COLOR_PINK, i_str); format(i_str, sizeof(i_str), \"Regisztáció ideje: {\" #XCOLOR_BLUE \"}%s{\" #XCOLOR_GREEN \"}, Utuljára a szerveren: {\" #XCOLOR_BLUE \"}%s\", RegDate, Laston); SendClientMessage(playerid, COLOR_GREEN, i_str); } } return 1; } public OnPlayerDeath(playerid, killerid, reason) { if(IsPlayerConnected(killerid) && killerid != INVALID_PLAYER_ID) { SetPVarInt(killerid, \"Kills\", GetPVarInt(killerid, \"Kills\") + 1); } SetPVarInt(playerid, \"Deaths\", GetPVarInt(playerid, \"Deaths\") + 1); return 1; } public OnQueryError(errorid, error[], resultid, extraid, callback[], sql_query[], connectionHandle) { print(sql_query); } // Statisztika felmutató CMD:stats(playerid, params[]) { new RegDate[24], Laston[24], Kills = GetPVarInt(playerid, \"Kills\"), Deaths = GetPVarInt(playerid, \"Deaths\"), Float:Ratio, Changes[2], pRegID = GetPVarInt(playerid, \"RegID\"); format(g_szQuery, sizeof(g_szQuery), \"SELECT `reg_date`, `laston` FROM `players` WHERE `reg_id` = %d\", pRegID); // Kiválasztjuk a reg_date és a laston mezõt mysql_query(g_szQuery); mysql_store_result(); mysql_fetch_row(g_szLine); // Beleírjuk a \"g_szLine\" karakterláncba mysql_free_result(); sscanf(g_szLine, \"p<|>s[24]s[24]\", RegDate, Laston); // Arány kiszámítása if(Deaths && Kills) // Ha az ölések és a halálok száma nem nulla, mivel a 0-val való osztásnak nincs értelme és bebugol a format() { Ratio = floatdiv(Kills, Deaths); } else { Ratio = 0.0; } switch(GetPlayerFightingStyle(playerid)) { case FIGHT_STYLE_NORMAL: tmp = \"Normál\"; case FIGHT_STYLE_BOXING: tmp = \"Boxoló\"; case FIGHT_STYLE_KUNGFU: tmp = \"Kungfu\"; case FIGHT_STYLE_KNEEHEAD: tmp = \"Kneehead\"; case FIGHT_STYLE_GRABKICK: tmp = \"Grabkick\"; case FIGHT_STYLE_ELBOW: tmp = \"Elbow\"; } // Megszámlálás format(g_szQuery, sizeof(g_szQuery), \"SELECT COUNT( reg_id ) FROM `namechanges` WHERE `reg_id` = %d\", pRegID); mysql_query(g_szQuery); mysql_store_result(); Changes[0] = mysql_fetch_int(); mysql_free_result(); format(g_szQuery, sizeof(g_szQuery), \"SELECT COUNT( reg_id ) FROM `namechanges_p` WHERE `reg_id` = %d\", pRegID); mysql_query(g_szQuery); mysql_store_result(); Changes[1] = mysql_fetch_int(); mysql_free_result(); // Üzenet elküldése format(i_str, sizeof(i_str), \"Név: %s, ID: %d, RegID: %d, Pénz: %d, Pont: %d\", pName(playerid), playerid, GetPVarInt(playerid, \"RegID\"), GetPlayerMoney(playerid), GetPlayerScore(playerid)); SendClientMessage(playerid, COLOR_RED, i_str); format(i_str, sizeof(i_str), \"Ölések: %d, Halálok: %d, Arány: %.2f, Ütés Stílus: %s\", Kills, Deaths, Ratio, tmp); SendClientMessage(playerid, COLOR_YELLOW, i_str); format(i_str, sizeof(i_str), \"Névváltások: %d, Jelszóváltások: %d\", Changes[0], Changes[1]); SendClientMessage(playerid, COLOR_PINK, i_str); format(i_str, sizeof(i_str), \"Regisztáció ideje: {\" #XCOLOR_BLUE \"}%s{\" #XCOLOR_GREEN \"}, Utuljára a szerveren: {\" #XCOLOR_BLUE \"}%s\", RegDate, Laston); SendClientMessage(playerid, COLOR_GREEN, i_str); return 1; } /* CMD:kill(playerid, params[]) { SetPlayerHealth(playerid, 0.0); return 1; } */ CMD:changename(playerid, params[]) { ChangeNameDialog(playerid); return 1; } CMD:changepass(playerid, params[]) { ShowPlayerDialog(playerid, DIALOG_CHANGEPASS, DIALOG_STYLE_PASSWORD, \"Jelszóváltás\", \"Lentre írd be az új jelszavad! \\n\\n\", \"Változtatás\", \"Mégse\"); return 1; } CMD:findplayer(playerid, params[]) { new count; if(sscanf(params, \"s[128]\", i_str)) return SendClientMessage(playerid, COLOR_RED, \"HASZNÁLAT: /findplayer <Játékos Névrészlet>\"); // format() trükk, bele kell írni valahogy a százalékot ( % ) is format(g_szQuery, sizeof(g_szQuery), \"SELECT `name` FROM `players` WHERE `name` LIKE \'%s%s%s\'\", \"%%\", i_str, \"%%\"); mysql_query(g_szQuery); mysql_store_result(); count = mysql_num_rows(); if(!count) { mysql_free_result(); format(i_str, sizeof(i_str), \"Nincs találat a \'%s\' részletre!\", i_str); SendClientMessage(playerid, COLOR_RED, i_str); return 1; } else if(count > 130) { mysql_free_result(); format(i_str, sizeof(i_str), \"A \'%s\' részletre több, mint 130 találad van! < %d >!\", i_str, count); SendClientMessage(playerid, COLOR_RED, i_str); return 1; } g_szQuery[0] = EOS; // Kiûrítjük a karakterláncot while(mysql_fetch_row(g_szName)) { strcat(g_szQuery, g_szName); // Hozzáadjuk a \"g_szQuery\" karakterlánchoz a \"g_szName\" karakterláncot. strcat(g_szQuery, \"\\n\"); // Hozzáadjuk a \"g_szQuery\" karakterlánchoz az \"\\n\" karaktert. Ez eredményezi az új sort. } mysql_free_result(); format(tmp, 128, \"Találatok a(z) \'%s\' részletre..\", i_str); ShowPlayerDialog(playerid, DIALOG_FINDPLAYER, DIALOG_STYLE_LIST, tmp, g_szQuery, \"Megtekint\", \"Mégse\"); return 1; } ///////////////////////////////////////// stock LoginDialog(playerid) { format(i_str, sizeof(i_str), \"{\" #XCOLOR_WHITE \"}Bejelentkezés: {%06x}%s(%d)\", GetPlayerColor(playerid) >>> 8, pName(playerid), playerid); ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, i_str, !\"{\" #XCOLOR_GREEN \"}Üdvözöllek a \\n\\n{\" #XCOLOR_BLUE \"}My{\" #XCOLOR_YELLOW \"}SQL {\" #XCOLOR_GREEN \"}teszt szerveren! \\n\\nTe már regisztálva vagy. Lentre írd be a jelszavad\", !\"Bejelentkezés\", !\"Mégse\"); return 1; } stock RegisterDialog(playerid) { format(i_str, sizeof(i_str), \"{\" #XCOLOR_WHITE \"}Regisztráció: {%06x}%s(%d)\", GetPlayerColor(playerid) >>> 8, pName(playerid), playerid); #if defined NINCS_REG_CSILLAG ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, i_str, !\"{\" #XCOLOR_GREEN \"}Üdvözöllek a \\n\\n{\" #XCOLOR_BLUE \"}My{\" #XCOLOR_YELLOW \"}SQL {\" #XCOLOR_GREEN \"}teszt szerveren! \\n\\nItt még nem regisztráltál. Lentre írd be a jelszavad\", !\"Regisztáció\", !\"Mégse\"); #else ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, i_str, !\"{\" #XCOLOR_GREEN \"}Üdvözöllek a \\n\\n{\" #XCOLOR_BLUE \"}My{\" #XCOLOR_YELLOW \"}SQL {\" #XCOLOR_GREEN \"}teszt szerveren! \\n\\nItt még nem regisztráltál. Lentre írd be a jelszavad\", !\"Regisztáció\", !\"Mégse\"); #endif return 1; } /* Bejelentkezés */ stock LoginPlayer(playerid, sor[]) { new PVarSet[5]; sscanf(sor, \"p<|>{ds[24]s[16]s[30]s[24]s[24]}ddddd\", PVarSet[0], PVarSet[1], PVarSet[2], PVarSet[3], PVarSet[4]); // printf(\"Cash: %d\", PVarSet[0]); SetPVarInt(playerid, \"Cash\", PVarSet[0]); // A pénzét egy PVar-ban tároljuk, mert a skinválasztásnál nemlehet a játékos pénzét állítani. SetPlayerScore(playerid, PVarSet[1]); SetPVarInt(playerid, \"Kills\", PVarSet[2]); SetPVarInt(playerid, \"Deaths\", PVarSet[3]); SetPVarInt(playerid, \"Style\", PVarSet[4]); SetPVarInt(playerid, \"LoggedIn\", 1); return 1; } SavePlayer(playerid) { if(!IsPlayerNPC(playerid)) { if(!GetPVarType(playerid, \"LoggedIn\")) return 0; // Ha nincs bejelentkezve, akkor nem mentjük. Ezt ajánlatos itthagyni, mivel ezmiatt nekem sok bug keletkezett! getdate(year, month, day); gettime(hour, minute, second); format(g_szQuery, sizeof(g_szQuery), \"UPDATE `players` SET `laston` = \'%02d.%02d.%02d/%02d.%02d.%02d\', `money` = %d, `score` = %d, `kills` = %d, `deaths` = %d, `fightingstyle` = %d WHERE `reg_id` = %d\", year, month, day, hour, minute, second, GetPlayerMoney(playerid), GetPlayerScore(playerid), GetPVarInt(playerid, \"Kills\"), GetPVarInt(playerid, \"Deaths\"), GetPlayerFightingStyle(playerid), GetPVarInt(playerid, \"RegID\")); mysql_query(g_szQuery); // %02d azt jelenti, hogyha a szám egyjegyû (1, 5, 7, stb... ), akkor tegyen elé egy 0-t. Pl: 05, 07... // Ezt általában idõre használják, mivel így \'érthetõbb\'... // Ez ugyanúgy mûködik %03d-vel %04d-vel, és így továb... ^ } return 1; } stock pName(playerid) { GetPlayerName(playerid, g_szName, sizeof(g_szName)); return g_szName; } /* SQL Tábla */ /* CREATE TABLE IF NOT EXISTS `connections` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(21) NOT NULL, `ip` varchar(16) NOT NULL, `serial` varchar(128) NOT NULL, `time` varchar(24) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `namechanges` ( `id` smallint(5) NOT NULL AUTO_INCREMENT, `reg_id` mediumint( NOT NULL, `oldname` varchar(21) NOT NULL, `newname` varchar(21) NOT NULL, `time` varchar(24) NOT NULL, PRIMARY KEY (`id`), KEY `reg_id` (`reg_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `namechanges_p` ( `id` smallint(5) NOT NULL AUTO_INCREMENT, `reg_id` mediumint( NOT NULL, `name` varchar(24) NOT NULL, `oldpass` varchar(21) NOT NULL, `newpass` varchar(21) NOT NULL, `time` varchar(24) NOT NULL, PRIMARY KEY (`id`), KEY `reg_id` (`reg_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `players` ( `reg_id` mediumint( unsigned NOT NULL AUTO_INCREMENT, `name` varchar(24) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `ip` varchar(20) NOT NULL, `pass` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `reg_date` varchar(24) NOT NULL, `laston` varchar(24) NOT NULL, `money` int(11) NOT NULL DEFAULT \'0\', `score` int(11) NOT NULL DEFAULT \'0\', `kills` mediumint(11) unsigned NOT NULL DEFAULT \'0\', `deaths` mediumint(11) unsigned NOT NULL DEFAULT \'0\', `fightingstyle` enum(\'4\',\'5\',\'6\',\'7\',\'15\',\'16\') NOT NULL DEFAULT \'4\', PRIMARY KEY (`reg_id`), KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; CREATE TABLE IF NOT EXISTS `queryerrors` ( `id` mediumint(7) NOT NULL AUTO_INCREMENT, `errorid` int(11) NOT NULL, `error` text NOT NULL, `resultid` mediumint(7) NOT NULL, `extraid` mediumint(7) NOT NULL, `callback` varchar(512) NOT NULL, `sql_query` varchar(512) NOT NULL, `connectionHandle` mediumint(7) NOT NULL, `time` varchar(24) NOT NULL, PRIMARY KEY (`id`), KEY `errorid` (`errorid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; */
859
« Dátum: 2012. február 26. - 16:42:05 »
Nem teljesen. Fordítsd le a scriptedet az \"-l\" (Kis L) paraméterrel, amiben benne van ez a kód, aztán meglátod, hogy mi lesz. (pawn.cfg-be beleírod, hogy \"-l\" és aztán lefordítod. Ez annyit csinál, hogy csak a pre-processort hagyja lefutni és a következett kódot beleírja egy fájlba, ahol a .pwn fájlod van)
860
« Dátum: 2012. február 26. - 13:18:36 »
Ha streamer plugint használsz, akkor ezt konkrétan a CreateDynamicObjectEx()-el tudod állítani, ottvan a DrawDistance.
861
« Dátum: 2012. február 26. - 11:13:24 »
Ez mind jó, csak akkor jönnek a bajok, ha ezt csinálod: return SendClientMessage(...) Az én kódommal viszont ezis mûködik Újradefinálni pedig felesleges, mivel akkor az egyszerû üzenetet is formázni fogja, ami pedig csak feleslegesen lassít.
862
« Dátum: 2012. február 26. - 01:28:21 »
Am benne van a fõ üzenetben, igaz kicsit módosítottam rajta, hülye megoldás újradefinálni, mert akkor minden üzenetnél ellenõrzi, hogy kell-e formázni, vagy nem-e. Amit te írtál kódot, azt tesztelted is? Régebben én is ezt a fajta formát használtam, átírtam ToAll-ra és úgy vágta haza a szervert, hogy csak na. (Mert itt nem 3 argomentum van, hanem csak 2) Elvileg így mennie kéne, de az 100%-ban mûködik, ami a fõposztban van. [pawn] iArgCount = ( numargs( ) - 2 ) * 4 [/pawn]
863
« Dátum: 2012. február 25. - 17:21:08 »
Jó, de így nem a legjobb megoldás. Átlagot kéne kiszámítani és akkor kickelni, amikor az átlaga nagyobb, mint a 450. Mert ha egy pillanatra feljebb megy a pinged, akkor rögtön kickelni fog. Valamikor a GetPlayerPing() pedig 65535-el tér vissza.
864
« Dátum: 2012. február 25. - 12:37:24 »
Azért nemkéne ilyen szintre süllyedni.. Aki ezt nem tudja, az ne kezdjen szerver készítésébe!
865
« Dátum: 2012. február 25. - 12:29:37 »
866
« Dátum: 2012. február 24. - 21:30:42 »
[pawn] public OnGameModeInit() { DisableInteriorEnterExits(); return 1; } [/pawn]
867
« Dátum: 2012. február 24. - 12:36:03 »
Le tudnád írni bõvebben, hogy mi nem jó benne? Vagy esetleg a kódot, amiben nemjó. Mert ez megy, én is használom pár speciális helyen és nincs vele semmi problémám.
868
« Dátum: 2012. február 23. - 22:48:05 »
O_o Na akkor enyém az kicsit.. Amúgy a pluginok listája a következõ mysql.so streamer.so gvar.so sscanf.so GeoIP_Plugin.so regex.so *MapAndreas.so
Csak SAMinimap, ami 9MB. Objectok száma: 50ezer Minden object 0tól 19-es worldbe benne van. Házakra GVar-t használok, játékosokra meg PVar-t. (Sajnos, ezzel kezdtem..) Pár helyen már átírtam bitmûveletre, de az embernek marha sok kedve van újraírni azt, amit már megcsinált.
869
« Dátum: 2012. február 23. - 21:19:03 »
Legújabbat raktad fel a crashdetect-bõl? Inkább -d3-at írj bele, az több információt visz magával az .AMX-be.
870
« Dátum: 2012. február 23. - 19:50:15 »
Hát én azért nagyon messze vagyok attól, hogy pontosan megmondjam, mi a baj Ha vannak körülötted objectok, amikor crashelsz, akkor vedd ki az összes objectot, próbáld úgy. Ha használsz tuningolt autókat, akkor rakd be ezt a scriptet. U.I.: Ha a crash elõtt warningot ír, és aztán crashel, akkor másold ki a chatlogból a warningokat, mielõtt becsuknád a crash ablakot.
Oldalak: 1 ... 56 57 [58] 59 60 ... 184
|