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


Üzenetek - kurta999

Oldalak: 1 ... 56 57 [58] 59 60 ... 184
856
SA-MP: Szerverfejlesztés / Legközelebbi jármû lekérdezése
« 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 :D
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
Pluginok és Programok / YSF - kurta999\'s version
« 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
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) << 8) | 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 :P )
   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(8) 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(8) 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(8) 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
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
Segítségkérés / Objectek látótávolsága
« 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
Ez mind jó, csak akkor jönnek a bajok, ha ezt csinálod: return SendClientMessage(...)
Az én kódommal viszont ezis mûködik :D
Újradefinálni pedig felesleges, mivel akkor az egyszerû üzenetet is formázni fogja, ami pedig csak feleslegesen lassít.

862
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? :D
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
SA-MP: Szerverfejlesztés / Anti High Ping
« 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
Azért nemkéne ilyen szintre süllyedni..
Aki ezt nem tudja, az ne kezdjen szerver készítésébe!

865
Idézetet írta: kadaradam date=1330168681\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"3791\" data-ipsquote-contentclass=\"forums_Topic
files.g-stylezzz.com/mysql/R7/mysql.dll  ;)
R7 server plugin
 
Na végre.
Bár én lebuildoztam magamnak :D
Linux pedig: http://sf-se.net/dev/mysql_r7_centos.so

866
Segítségkérés / Ház Interior [sárga nyíl eltûntetése]
« Dátum: 2012. február 24. - 21:30:42 »
[pawn]
public OnGameModeInit()
{
    DisableInteriorEnterExits();
    return 1;
}
[/pawn]

867
Leírások/Útmutatók / [ Leírás ]A goto utasítás
« 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
Általános / Szervertulajoknak: Mennyi memóriát eszik a szerveretek?
« 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õ :D
 

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
Segítségkérés / BBE, szerver resi
« 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
Segítségkérés / Crash
« 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 :D
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
SimplePortal 2.3.7 © 2008-2024, SimplePortal