Szerző Téma: Segédkliens csatlakoztatása a szerverhez  (Megtekintve 1333 alkalommal)

Segédkliens csatlakoztatása a szerverhez
« Dátum: 2015. február 28. - 08:53:29 »
0 Show voters
Sziasztok!
Egy olyan problémám lenne, hogy valamiért nem kérdezi le a scriptem hogy a játékos segédkliensel csatlakozott-e fel a szerverre. Az az elképzelésem hogy ha a játékos segédkliensel csatlakozott fel akkor felengedje ha viszont nem azzal akkor kickelje. A kliens maga működik a samp script részével valami nem stimmel :( Pedig maga a script lefut de mégsem működik élesben :(
Mysql r7-et használok és azzal is szeretném megoldani. Szerintem a hiba lekérdezésnél van hogy mivel csatlakozott fel.
Előre is köszönöm a segítségeteket!
Samp scriptem:
 
#define FILTERSCRIPT
#include <a_samp>
#include <a_mysql>
new mysql;
 
stock IsPlayerConnectWithLauncher(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof name);
      new szQueryInput[1500];
    format(szQueryInput, sizeof szQueryInput, \"SELECT * FROM `player_joins` WHERE ic_name = \'%s\' AND (NOW() - join_time) < 120 \", name);
    new rows, fields;
    cache_get_data(rows, fields);
    if(!rows)
    {
format(szQueryInput, sizeof(szQueryInput), \"DELETE FROM `player_joins` WHERE ic_name = \'%s\'\", name);
        mysql_function_query(mysql, szQueryInput, false, \"\", \"\");
        return 1;
    }
else
{
format(szQueryInput, sizeof(szQueryInput), \"DELETE FROM `player_joins` WHERE ic_name = \'%s\'\", name);
        mysql_function_query(mysql, szQueryInput, false, \"\", \"\");
    return 0;
}
   
}
 
public OnFilterScriptInit()
{
mysql = mysql_connect(\"127.0.0.1\",\"root\",\"Kliens\",\"\");
if(mysql) printf(\"Adatbázishoz való csatlakozás sikeres!\");
return 1;
}
public OnFilterScriptExit()
{
new szQueryInput[1500];
    new name[MAX_PLAYER_NAME];
format(szQueryInput, sizeof(szQueryInput), \"DELETE FROM `player_joins` WHERE ic_name = \'%s\'\", name);
mysql_function_query(mysql, szQueryInput, false, \"\", \"\");
return 1;
}
public OnPlayerConnect(playerid)
{
if( IsPlayerConnectWithLauncher(playerid) )
{
}
else
{
    Kick(playerid);
}
return 1;
}
« Utoljára szerkesztve: 2015. március 01. - 09:26:30 írta RusH. »

Segédkliens csatlakoztatása a szerverhez
« Válasz #1 Dátum: 2015. február 28. - 11:01:17 »
0 Show voters
Hát az ilyeneket eleve nem MySQL-al szokták megoldani. Inkább socket plugint használj szerintem, sokkal praktikusabb.
Link:
http://forum.sa-mp.com/showthread.php?t=333934

Segédkliens csatlakoztatása a szerverhez
« Válasz #2 Dátum: 2015. február 28. - 12:14:52 »
0 Show voters
És socket pluginnal ez hogyan nézne ki ?Mer ahoz nem értek :(

Nem elérhető SnooP

  • 1798
  • SnooP
    • Profil megtekintése
Segédkliens csatlakoztatása a szerverhez
« Válasz #3 Dátum: 2015. február 28. - 12:34:49 »
0 Show voters
[mod]A téma címe utaljon a téma tartalmára. Módosítsd légyszíves.[/mod]

Segédkliens csatlakoztatása a szerverhez
« Válasz #4 Dátum: 2015. február 28. - 20:15:01 »
0 Show voters
De elvileg így mysql-el is jó csak én mivel nem nagyon értek hozzá szerintem valamit a lekérdezésnél rontottam el :( Valakinek valami ötlete hogy mi lehet a baj ?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Segédkliens csatlakoztatása a szerverhez
« Válasz #5 Dátum: 2015. február 28. - 20:17:31 »
0 Show voters
Nyilván megoldható vele, de nem véletlenül van plugin. Ha esetleg SQL logot másolnál... Javaslom térj át a legújabb verzióra; könnyebb, gyorsabb, nem elavult, több lehetőséget rejtő.

Segédkliens csatlakoztatása a szerverhez
« Válasz #6 Dátum: 2015. február 28. - 20:22:55 »
0 Show voters
Ja igen nem ártana :D
Tessék az sql :
 

-- phpMyAdmin SQL Dump
-- version 4.2.7.1
-- http://www.phpmyadmin.net
--
-- Hoszt: 127.0.0.1
-- Létrehozás ideje: 2015. Feb 28. 20:22
-- Szerver verzió: 5.5.39
-- PHP verzió: 5.4.31
SET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";
SET time_zone = \"+00:00\";
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Adatbázis: `samp_launcher`
--
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `launcher`
--
CREATE TABLE IF NOT EXISTS `launcher` (
  `ic_name` text NOT NULL,
  `todo` int(11) NOT NULL,
  `command` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `player_joins`
--
CREATE TABLE IF NOT EXISTS `player_joins` (
  `ic_name` text NOT NULL,
  `join_time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `server_open`
--
CREATE TABLE IF NOT EXISTS `server_open` (
  `open` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- A tábla adatainak kiíratása `server_open`
--
INSERT INTO `server_open` (`open`) VALUES
(1);
-- --------------------------------------------------------
--
-- Tábla szerkezet ehhez a táblához `users`
--
CREATE TABLE IF NOT EXISTS `users` (
  `username` text NOT NULL,
  `password` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

Dupla hozzászólás automatikusan összefûzve. ( [time]2015. Február 28. 20:30:42[/time] )

Itt a mysql log is :
 
[20:25:47] >> mysql_connect(127.0.0.1, root, Samp_Launcher, ******) on port 3306
[20:25:47] CMySQLHandler::CMySQLHandler() - constructor called.
[20:25:47] CMySQLHandler::CMySQLHandler() - Connecting to \"127.0.0.1\" | DB: \"Kliens\" | Username: \"root\"
[20:25:47] CMySQLHandler::Connect() - Connection was successful.
[20:25:47] CMySQLHandler::Connect() - Auto-Reconnect has been enabled.
[20:26:27] >> cache_get_data( Connection handle: 1 )
[20:26:27] >> mysql_query_callback( Connection handle: 1 )
[20:26:27] Passing query DELETE FROM `player_joins` WHERE ic_name = \'Jim Toretto\' |
[20:26:27] ProcessQueryThread() - Query was successful. (DELETE FROM `player_joins` WHERE ic_name = \'Jim Toretto\')
[20:26:27] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[20:26:27] () - Threaded function called.
[20:28:46] >> cache_get_data( Connection handle: 1 )
[20:28:46] >> mysql_query_callback( Connection handle: 1 )
[20:28:46] Passing query DELETE FROM `player_joins` WHERE ic_name = \'Jim Toretto\' |
[20:28:46] ProcessQueryThread() - Query was successful. (DELETE FROM `player_joins` WHERE ic_name = \'Jim Toretto\')
[20:28:46] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[20:28:46] () - Threaded function called.

 

Dupla hozzászólás automatikusan összefûzve. ( 2015. február 28. - 20:32:21 )

A lekérdezést viszont a logba nem látom szerintem biztos azzal van valami gond de nem tudom mi :(
« Utoljára szerkesztve: 2015. február 28. - 20:32:22 írta Jim Toretto »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Segédkliens csatlakoztatása a szerverhez
« Válasz #7 Dátum: 2015. február 28. - 22:46:57 »
0 Show voters
Hmm... 120 aposztrofok közé: ...) < \'120\'

Segédkliens csatlakoztatása a szerverhez
« Válasz #8 Dátum: 2015. március 01. - 06:58:56 »
0 Show voters
Idézetet írta: Dfoglalo date=1425160017\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"52909\" data-ipsquote-contentclass=\"forums_Topic
Hmm... 120 aposztrofok közé: ...) < \'120\'
 
Sajnos így sem jó :( Felenged még így is a kliens nélkül :(

Dupla hozzászólás automatikusan összefûzve. ( 2015. március 01. - 07:23:20 )

Megpróbáltam a mysql r39-2 vel megírni és azzal meg hibátlanúl működik :O Csak az a baj hogy nekem mindenképpen az r7-es verzióval kéne megoldanom mer a módom is azt használja.
Így néz ki a script az r39-2-vel:
 
#define FILTERSCRIPT
#include <a_samp>
#include <a_mysql>
new mysql;
 
stock IsPlayerConnectWithLauncher(playerid)
{
    new name[MAX_PLAYER_NAME], Query[1024];
    GetPlayerName(playerid, name, sizeof name);
    format(Query, sizeof Query, \"SELECT * FROM `player_joins` WHERE ic_name = \'%s\' AND (NOW() - join_time) < 120 \", name);
    mysql_query(mysql,Query);
    if( cache_get_row_count(mysql) > 0)
    {
        format(Query, sizeof Query, \"DELETE FROM `player_joins` WHERE ic_name = \'%s\'\", name);
         mysql_query(mysql,Query);
        return 1;
    }
else
{
format(Query, sizeof Query, \"DELETE FROM `player_joins` WHERE ic_name = \'%s\'\", name);
       mysql_query(mysql,Query);
    return 0;
}
   
}
 
public OnFilterScriptInit()
{
mysql = mysql_connect(\"127.0.0.1\",\"root\",\"kliens\",\"\");
if(mysql) printf(\"Adatbázishoz való csatlakozás sikeres!\");
return 1;
}
public OnPlayerConnect(playerid)
{
if( IsPlayerConnectWithLauncher(playerid) )
{
}
else
{
    Kick(playerid);
}
return 1;
}

 
De ebből hogyan lehetne r7-esre tenni ?
« Utoljára szerkesztve: 2015. március 01. - 07:23:20 írta Jim Toretto »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Segédkliens csatlakoztatása a szerverhez
« Válasz #9 Dátum: 2015. március 01. - 16:47:41 »
0 Show voters
Inkább a többi dolgot írd át az új verzióra, jobban megéri.

Segédkliens csatlakoztatása a szerverhez
« Válasz #10 Dátum: 2015. március 01. - 19:26:35 »
0 Show voters
Elhiszem hogy megéri de én az r7-hez ragaszkodok meg kevesebb munkát is igényelne ezt átírni mint egy 60 ezer soros módot :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal