-
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;
}
-
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
-
És socket pluginnal ez hogyan nézne ki ?Mer ahoz nem értek :(
-
[mod]A téma címe utaljon a téma tartalmára. Módosítsd légyszíves.[/mod]
-
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 ?
-
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ő.
-
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 :(
-
Hmm... 120 aposztrofok közé: ...) < \'120\'
-
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 ?
-
Inkább a többi dolgot írd át az új verzióra, jobban megéri.
-
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