Szerző Téma: SQL Ban időre és még 1 SQL kérdés  (Megtekintve 2537 alkalommal)

SQL Ban időre és még 1 SQL kérdés
« Dátum: 2016. február 21. - 22:57:23 »
0 Show voters
Sziasztok!
2 kérdéssel fordulok hozzátok, az egyik egy Ban systemhez kapcsolódik, a másik egy kocsirendszerhez.
Nos mikor meg akarom adni a ban időtartamot (Pl.: 60 napra akarom bannolni) akkor midig elakdok, hogy kéne ösze adni 2 időt. Úgy gondoltam, hogy lekérem a ban időt, madj hozzá adom az adott napot csak ez így nekem nem működött. A másik meg, hogy nem tudom az SQL-be illeszteni az Ban idejét és az az idő amikor lejár.
Nos a másik kérdésem. Az egy kocsi rendszerhez kapcsolódik, mikor elmentem a kocsit akkor midig újra kell indítanom a szervert, hogy az adati bekerüljek az enum-ba.
Válaszotok előre is köszönöm!

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
SQL Ban időre és még 1 SQL kérdés
« Válasz #1 Dátum: 2016. február 22. - 09:26:38 »
0 Show voters
1. kérdésre a válasz ennyi időbe telt:
https://www.google.hu/?gfe_rd=cr&ei=l8PKVsGYGcrR8gf17L7gDg&gws_rd=ssl#q=mysql+now+add+days
http://stackoverflow.com/questions/3887509/mysqls-now-1-day
 
NOW() + INTERVAL 1 DAY
CURDATE() + INTERVAL 1 DAY

 
vagy esetleg másra gondolsz?
Google a barátod,
Wiki a barátnőd,
Youtube a szeretőd :P
 
Idézetet írta: Zsifon date=1456091843\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"59624\" data-ipsquote-contentclass=\"forums_Topic
Nos a másik kérdésem. Az egy kocsi rendszerhez kapcsolódik, mikor elmentem a kocsit akkor midig újra kell indítanom a szervert, hogy az adati bekerüljek az enum-ba.
 
A második kérdést nem értem...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

SQL Ban időre és még 1 SQL kérdés
« Válasz #2 Dátum: 2016. február 22. - 11:47:22 »
0 Show voters
Egy két fogalmat rakjunk a helyére, mert nem vagy vele tisztába.  :cool2:
Mit nevezünk enumnak?
 
enum E_Jarmuvek
{
    vID,
    vSQLID,
    Float:vPoz[4]
};

 
ehhez általában tartozik egy változó:
 
new Jarmuvek[MAXJARMU][E_Jarmuvek];

 
Az enum az egy felsorolási típus, új adattípusokat hozlétre aminek nincs korlátozva az értéke.
Használat:
OnPlayerVehicleExit(playerid, vehicleid)
{
    uzenet[64];
    format(uzenet, sizeof(uzenet), \"Kiszálltál a(z) %d SQLID-s járműből!\",Jarmuvek[vehicleid][vID]);
    SendClientMessage(playerid, -1, uzenet);
    return 1;
}

 
A második kérdésnek fuss neki még1xer, érthetően.

SQL Ban időre és még 1 SQL kérdés
« Válasz #3 Dátum: 2016. február 22. - 18:03:04 »
0 Show voters
No akkor kicsit átgondoltabban.
Mikor a szervert indítom, egy enumba betölti az összes járműnek az adatát. Amikor elmentem a kocsit egy paranccsal akkor az SQL-hez INSERT INTO-val adom hozzá a szügséges adatokat, hogy a kocsi létezzen a szerveren. De mikor  létrehozom, majd bele ülök és ki akarom kéni az adatokat semmit fog kiírni, mert ügye nincsen enumba nincsen felvéve az adatai.  A kikérés parancs:
 
CMD:carid(playerid, params[])
{
    new string[256];
    new vehicleid = GetPlayerVehicleID(playerid);
    if(IsPlayerInAnyVehicle(playerid))
    {
        if(vehicleid != INVALID_VEHICLE_ID) //ez jó kérdés mért van benne
        {
            format(string, sizeof(string), \"(( DBID: %d, ModelID: %d, Tulaj: %s, Rendszám: %s ))\", VehicleInfo[vehicleid-1][DBID], VehicleInfo[vehicleid-1][ModID], VehicleInfo[vehicleid-1][Owner], VehicleInfo[vehicleid-1][rendszam]);
            SendClientMessage(playerid, COLOR_SIKER, string);
        } else SendClientMessage(playerid, -1, \"Ismeretlen kocsi!\" );
    } else SendClientMessage(playerid, -1, \"Nem vagy kocsiban!\" );
    return 1;
}

 
------------
Nos a másik kérdésem. van egy /ban parancsom, ami a következő kép néz ki /ban [Név / id] [Év / Hó / Nap ] [indok]
PL: /ban Nagy_Mark 0 0 14 Szia. Nos remélem látszik, hogy az illetőt 14 napra bannolnák. És azt nem tudom, hogy lehet az megoldani azt, hogy a mához (2016.02.22) 14 nap-ot adjon (ha jól számolom az 2016.03.6). gondoltam, hogy getdate() és gettime() parancsal valamit kombózni kéne de nem jöttrá. Reméem így már érthetőbb egy fokkal, ha nem akkor sorry :(
« Utoljára szerkesztve: 2016. február 22. - 18:08:33 írta Zsifon »

SQL Ban időre és még 1 SQL kérdés
« Válasz #4 Dátum: 2016. február 22. - 18:21:56 »
0 Show voters
Első:
Miért akarsz kivonni 1-et a jármű ID-jéből?
Második:
Lekéred az időt gettime() függvénnyel, majd hozzáadod a 14 napot MÁSODPERCBEN.
Hogy néz ki ez a gyakorlatban?
 
gettime() + (14 * 24 * 60 * 60);

 
Magyarázat: lekéred az időt, megszorzod 24-el. Megkapod órában az időt. Majd a kapott eredményt megszorzod 3600-al (vagy 60 * 60-al, kinek hogy) és megkapod az 14 napot másodpercben, majd ezt illeszted be az adatbázisodba. Mikor be akar lépni, megnézed mennyi az idő gettime() függvénnyel, ha a gettime() nagyobb vagy egyenlő (kicsi az esélye, de bekövetkezhet), mint az adatbázisban tárolt idő, akkor unbanolhatod.
Mivel egy féle műveletről van szó, így nem kell több zárójel.
A 14-et cseréld ki a Te változódra.

SQL Ban időre és még 1 SQL kérdés
« Válasz #5 Dátum: 2016. február 22. - 18:38:02 »
0 Show voters
Nincs nullás jármű, a járművek 1-es számtól kezdődnek.

SQL Ban időre és még 1 SQL kérdés
« Válasz #6 Dátum: 2016. február 22. - 18:41:13 »
0 Show voters
Megelőztél :D
-----
És akkor ez alapján ugyan így szorozzam ki évre és hóra szorozzam ki?

SQL Ban időre és még 1 SQL kérdés
« Válasz #7 Dátum: 2016. február 22. - 18:59:15 »
0 Show voters
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <a_mysql>
new SQL[1];
CMD:ban(playerid, params[])
{
new jatekos,ido, oka[128];
if (sscanf(params, \"uds[128]\", jatekos,ido, oka))
return SendClientMessage(playerid, -1, \"Használat: /ban [Játékos] [Nap] [Oka]\");
if(jatekos == INVALID_PLAYER_ID)
    return SendClientMessage(playerid, -1, \"Nincs ilyen játékos!\");
if(strlen(oka) >= 128)
    return SendClientMessage(playerid, -1, \"Az indok maximum 128 karakter lehet!\");
if(jatekos == playerid)
    return SendClientMessage(playerid, -1, \"Gratulálok sikeresen megtaláltad magad!\");
if(ido < 0)
    return SendClientMessage(playerid, -1, \"Minuszba nem bannolunk!\");
new banido = gettime() + (ido * 24 * 60 * 60), bevitel[256], tiltoneve[MAX_PLAYER_NAME+1],  tiltottneve[MAX_PLAYER_NAME+1], ip[16];
GetPlayerName(playerid, tiltoneve,32);
GetPlayerName(jatekos, tiltottneve,32);
GetPlayerIp(jatekos, ip, sizeof(ip));
mysql_format(SQL[0], bevitel, sizeof(bevitel), \"INSERT INTO tiltasok (ki, ip, nev, ido, oka) VALUES(\'%s\', \'%s\',\'%s\',\'%d\',\'%s\')\",tiltoneve,ip,tiltottneve, banido, oka);
mysql_tquery(SQL[0], bevitel, \"\", \"\");
new uzenetall[256];
format(uzenetall, sizeof(uzenetall), \"[szerver]: %s kitiltva %s által %d napra! | Oka: %s\",tiltottneve, tiltoneve,ido,oka);
SendClientMessageToAll(-1, uzenetall);
SetTimerEx(\"DelayedKick\", 1000, false, \"i\", jatekos);
return true;
}
forward DelayedKick(playerid);
public DelayedKick(playerid)
{
    Kick(playerid);
    return 1;
}
« Utoljára szerkesztve: 2016. február 22. - 20:09:46 írta Brian Harris »

even

  • Vendég
SQL Ban időre és még 1 SQL kérdés
« Válasz #8 Dátum: 2016. február 22. - 19:36:13 »
0 Show voters
Idézetet írta: Brian Harris date=1456163955\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"59624\" data-ipsquote-contentclass=\"forums_Topic

#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <a_mysql>
new SQL[1];
CMD:ban(playerid, params[])
{
new jatekos,ido, oka[128];
if (sscanf(params, \"uds[128]\", jatekos,ido, oka))
return SendClientMessage(playerid, -1, \"Használat: /ban [Játékos] [Nap] [Oka]\");
if(jatekos == INVALID_PLAYER_ID)
    return SendClientMessage(playerid, -1, \"Nincs ilyen játékos!\");
if(strlen(oka) >= 128)
    return SendClientMessage(playerid, -1, \"Az indok maximum 128 karakter lehet!\");
if(jatekos == playerid)
    return SendClientMessage(playerid, -1, \"Gratulálok sikeresen megtaláltad magad!\");
if(ido < 0)
    return SendClientMessage(playerid, -1, \"Minuszba nem bannolunk!\");
new banido = gettime() + (ido * 24 * 60 * 60), bevitel[256], tiltoneve[MAX_PLAYER_NAME+1],  tiltottneve[MAX_PLAYER_NAME+1], ip[16];
GetPlayerName(playerid, tiltoneve,32);
GetPlayerName(jatekos, tiltottneve,32);
GetPlayerIp(jatekos, ip, sizeof(ip));
mysql_format(SQL[0], bevitel, sizeof(bevitel), \"INSERT INTO tiltasok (ki, ip, nev, ido, oka) VALUES(\'%s\', \'%s\',\'%s\',\'%d\',\'%s\')\",tiltoneve,ip,tiltottneve, banido, oka);
mysql_tquery(SQL[0], bevitel, \"\", \"\");
new uzenetall[256];
format(uzenetall, sizeof(uzenetall), \"[szerver]: %s kitiltva %s által %d napra! | Oka: %s\",tiltottneve, ido,tiltoneve,oka);
SendClientMessageToAll(-1, uzenetall);
SetTimerEx(\"DelayedKick\", 1000, false, \"i\", jatekos);
return true;
}
forward DelayedKick(playerid);
public DelayedKick(playerid)
{
    Kick(playerid);
    return 1;
}

 

A formázásál elírtad a sorrendet. :)

SQL Ban időre és még 1 SQL kérdés
« Válasz #9 Dátum: 2016. február 22. - 20:04:26 »
0 Show voters
Köszönöm szépen!

SQL Ban időre és még 1 SQL kérdés
« Válasz #10 Dátum: 2016. február 22. - 20:11:22 »
0 Show voters
Idézetet írta: even date=1456166173\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"59624\" data-ipsquote-contentclass=\"forums_Topic
A formázásál elírtad a sorrendet. :)
 
Szemfüles :D ;D Javítottam, kösz h szóltál :D
Zsifon: Szívesen javítsd ki a formázást, és jól fog működni!

SQL Ban időre és még 1 SQL kérdés
« Válasz #11 Dátum: 2016. február 22. - 20:14:34 »
0 Show voters
Amúgy, a kocsis problémára, van valami tippetek, hogy lehetne megoldani?

SQL Ban időre és még 1 SQL kérdés
« Válasz #12 Dátum: 2016. február 22. - 20:18:11 »
0 Show voters
esetleg bemásolod azt a részt ahol van a hiba? Jelenesetben a jármű mentést?

SQL Ban időre és még 1 SQL kérdés
« Válasz #13 Dátum: 2016. február 22. - 20:24:53 »
0 Show voters
A parancs véleményem szerint kura rondán lett megírva és lehet egyszerűbben is, de nekem így jött össze:
 
CMD:savecar(playerid, params[])
{
new benzin;
new bznev[36];
    new vid = GetPlayerVehicleID(playerid);
new modelid = GetVehicleModel(vid);
new Float:vehheal;
new Float:x, Float:y, Float:z, Float:a;
new string[256];
new color_1, color_2;
new rendszam1[1];
new rendszam2[1];
new rendszam3[1];
new str[32];
if(sscanf(params, \"i\", benzin)) return SendClientMessage(playerid, COLOR_RENDSZER, \"Használat: /savecar [1 = Benzin || 2 = Disel || 3 = LPG || 3 = Elektromos || 4 = Kerozin || 0 = admin]\");
if(IsPlayerInAnyVehicle(playerid))
{
new brand = random(sizeof(brendszam));
new szrand = random(10);
new brand2 = random(sizeof(brendszam));
new szrand2 = random(10);
new brand3 = random(sizeof(brendszam));
new szrand3 = random(10);
GetVehicleColor(vid, color_1, color_2);
format(rendszam1 ,sizeof(rendszam1), brendszam[brand]);
format(rendszam2 ,sizeof(rendszam2), brendszam[brand2]);
format(rendszam3 ,sizeof(rendszam3), brendszam[brand3]);
 
format(str, sizeof(str), \"%s%s%s-%d%d%d\", brendszam[brand], brendszam[brand2], brendszam[brand3], szrand, szrand2, szrand3);
 
GetVehiclePos(vid, x, y, z);
GetVehicleZAngle(vid, a);
GetVehicleHealth(vid, vehheal);
switch (benzin)
{
   case 0: format (bznev, sizeof (bznev),\"Admin\");
   case 1: format (bznev, sizeof (bznev),\"Benzin\");
   case 2: format (bznev, sizeof (bznev),\"Disel\");
   case 3: format (bznev, sizeof (bznev),\"Elekromosság\");
   case 4: format (bznev, sizeof (bznev),\"LPG\");
   case 5: format (bznev, sizeof (bznev),\"Kerozin\");
}
format(string, sizeof(string), \"Sikeresen elmentetetd ezt a kocsit! Rendszáma: %s, Üzemanyag típusa: %s ((%i))\", str, bznev, benzin);
SendClientMessage(playerid, COLOR_SIKER, string);
        SetVehicleNumberPlate(vid, str);
        format(query, sizeof(query), \"INSERT INTO `jarmuvek` (modelid, X, Y, Z, A, color1, color2, plate, uztp) VALUES (\'%i\',\'%f\', \'%f\', \'%f\', \'%f\', \'%i\', \'%i\',\'%s\', \'%i\')\", modelid, x, y, z, a, color_1, color_2, str, benzin);
mysql_query(kapcs, query);
} else SendClientMessage(playerid, -1, \"Nem vagy kocsiban!!\" );
return 1;
}

 
A modban még nincsen olyan rész ami menti az össze kcosit XD (elfelejtettm még írni)

SQL Ban időre és még 1 SQL kérdés
« Válasz #14 Dátum: 2016. február 22. - 20:41:01 »
0 Show voters
Nincs megadva a lerakott járműnek semmilyen érték az egy dolog h lekéred de ha pl átszínezek egy jármúvet akkor kell érték pl:
 
CMD:szin(playerid, params[])
{
new Szin[2], jarmu;
if (sscanf(params, \"ddd\", jarmu, Szin[0], Szin[1])
   return SendClientMessage(playerid, -1, \"Használat: /szín [JárműID] [szín1] [szín1]\");
      if(Szin[0] < 0 || Szin[1] < 0)
       return SendClientMessage(playerid, -1, \"Nincs ilyen szín id\");
ChangeVehicleColor(jarmu, Szin[0], Szin[1]);
Jarmuvek[jarmu][vSzin][0] = Szin[0];
Jarmuvek[jarmu][vSzin][1] = Szin[1];
SendClientMessage(playerid, -1, \"Átszínezted a járművet!\");
return true;
}

 
Szerk:
Neked ez a rész hiányzik persze a te enum felsorolásoddal:
 

Jarmuvek[jarmu][vSzin][0] = Szin[0];
Jarmuvek[jarmu][vSzin][1] = Szin[1];
« Utoljára szerkesztve: 2016. február 22. - 20:45:39 írta Brian Harris »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal