GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Xolokos le 18 Juin 2012, 15:39:50
-
Salutation,
j'ai pris un FS MySQL register pour voir le fonctionnement j'ai donc fait ma base de donnée sur WAMP j'ai mit mon adresse IP (localhost 127.0.0.1) la base de donnée etc...
J'ai mit MySQL.dll dans plugins je les load.
Suite a un bug j'ai du mettre libmySQL.dll dans la racine du serveur.
Et une autre erreur que je n'arrive pas a résoudre :
Voici le screen :
(http://i.imgur.com/grCjA.png)
Et j'ai cherché mais pas trouvé une idée ?
-
Télécharge une autre dll, celle ci ne contient pas la fonction mysql_set_character_set
-
Merci ça marche impect' !
-
[UP]
J'ai des error comme quoi la ligne est trop long alors que je veut créer une table si elle n'existe pas :
new Querry[500];
format(Querry, sizeof(Querry), "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24),Password VARCHAR(40), Niveau INT(20), Money INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20), Rang INT(20), Medikit INT(20), Antidote INT(20), Bidon INT(20), Kitreparation INT(20), Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), Radio INT(20), PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement INT(20), Minute INT(20), Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20), Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15) )");
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
mysql_query(Querry);
Comment résoudre ça ?
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(700) : error 075: input line too long (after substitutions)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(701) : error 037: invalid string (possibly non-terminated string)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(701) : error 017: undefined symbol "CREATE"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(701) : error 017: undefined symbol "TABLE"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(701) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
5 Errors.
Merci ?
-
Change la ligne de format en ça :
format(Querry, sizeof(Querry), "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24),Password VARCHAR(40), Niveau INT(20), " \
"Money INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20), Rang INT(20), Medikit INT(20)," \
"Antidote INT(20), Bidon INT(20), Kitreparation INT(20), Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), " \
"Radio INT(20), PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement INT(20), Minute INT(20)," \
"Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20), Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15) )");
-
Toujours les même erreur ?
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(771) : error 075: input line too long (after substitutions)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : error 037: invalid string (possibly non-terminated string)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : warning 215: expression has no effect
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : warning 215: expression has no effect
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
J'ai fait ça au autre query mais toujours la même chose.
-
a mon avis ta variable et trop petite change new Querry[500]; en new Querry[1200]; pour voir
-
Toujours les même erreurs.
-
Peux tu nous copier la ligne où est produite l'erreur ?
-
new Query[1200];
format(Query, sizeof(Query), "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24),Password VARCHAR(40), Niveau INT(20), " \
"Money INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20), Rang INT(20), Medikit INT(20)," \
"Antidote INT(20), Bidon INT(20), Kitreparation INT(20), Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), " \// Error ici ( 734 )
"Radio INT(20), PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement INT(20), Minute INT(20)," \// Et la ( 735 )
"Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20), Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15) )");
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
Et les erreurs :
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(734) : error 075: input line too long (after substitutions)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : error 037: invalid string (possibly non-terminated string)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : warning 215: expression has no effect
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : warning 215: expression has no effect
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
5 Errors.
-
Essaye de construire ta requête petit à petit.
new sQuery[640] = "";
format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24), Password VARCHAR(40), Niveau INT(20), Money");
format(sQuery, sizeof(sQuery), "%s INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20),", sQuery);
format(sQuery, sizeof(sQuery), "%s Rang INT(20), Medikit INT(20), Antidote INT(20), Bidon INT(20), Kitreparation INT(20),", sQuery);
format(sQuery, sizeof(sQuery), "%s Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), Radio INT(20),", sQuery);
format(sQuery, sizeof(sQuery), "%s PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement"), sQuery);
format(sQuery, sizeof(sQuery), "%s INT(20), Minute INT(20), Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20),", sQuery);
format(sQuery, sizeof(sQuery), "%s Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15))", sQuery);
-
Je trouve que la fonction format n'est pas du tout adapter à ce genre d'utilisation, je préfère utiliser la fonction
strcat (string concat) qui elle est dédiée exclusivement à ce besoin.
// Il faut absolument initialiser avec un nulbyte pour que strcat fonctionne bien
new sQuery[640] = "";
strcat(sQuery, "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24), Password VARCHAR(40), Niveau INT(20), Money");
strcat(sQuery, "INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20),");
strcat(sQuery, "Rang INT(20), Medikit INT(20), Antidote INT(20), Bidon INT(20), Kitreparation INT(20),");
strcat(sQuery, "Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), Radio INT(20),");
strcat(sQuery, "PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement");
strcat(sQuery, "INT(20), Minute INT(20), Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20),");
strcat(sQuery, "Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15))");
Sinon, je ne comprends pas du tout pourquoi mon code te donne une erreur, il faudrai se documenter sur le pdf officiel du langage.
-
Pas bête, je n'y avait pas pensé, je pense toujours que le Pawn est un langage simple qui n'inclut pas ces fonctions...
-
Excuser du retard mais cela ne marche toujours pas ça ne créer pas la table et les colonnes.
Je vais réessayer.
J'en profite : Puisque que SAMP a une include HTTP on peut envoyer des requêtes HTTP ?
-
Le code compile correctement ?
Si oui, il doit y avoir une fonction type mysql_error pour voir la dernière erreur.
Cela va surement t'aider.
-
Excuser du retard mais cela ne marche toujours pas ça ne créer pas la table et les colonnes.
Je vais réessayer.
J'en profite : Puisque que SAMP a une include HTTP on peut envoyer des requêtes HTTP ?
Oui, on peut faire des requêtes POST ainsi que GET
-
POST ainsi que GET
Dommage, je devrais malgrès tout passer en SQL.
PS : Marche toujours pas ca ne créer même plus la table.
-
J'ai décider d'enregistrer une seul variable en SQL et tout marche ni quel grâce au tutoriels que j'ai lu.
Maintenant il faut que je fasse une page de 'boutique', comment faire en PHP j'ai enregistrer le nom et la variable que je veux augmenter quand un code est valider pour augmenter sa variable.
Il faut donc une case pour mettre le nom et ensuite une page pour faire des code allopass.
Merci pour votre aide !
-
Tu dois utiliser le script fourni par le système de micro-paiement.
Après, pour un système complet pour la gestion, c'est un gros travail si tu veux quelque-chose de propre, simple et sécurisé, et ça, c'est un autre problème.
Néanmoins, je peux aider.
-
Donc j'ai déjà le script de micro-paiement.
Donc il faut que je fasse une case pour que le joueur ce log avec son nom (sans mot de passe).
Donc :
<form method = "post" action = "">
Nom:<br><input type = "text" name = "Nom IG"><br>
<input type = "submit" name = "login" value = "Connexion">
</form>Ensuite j'ai mis les config' de connexion :
<?php
$Connection = mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('comptes', $Connection) or die(mysql_error());
?>Pour éviter de tout renoter.
Ensuite j'ai fais :
<html>
<title>Comptes Control Panel</title>
<body align = "center">
<font face = "Verdana">
<?php
include('config.php');
session_start();
if(isset($_POST['Nom']))
{
echo("Bonjour, " . $_POST['Nom'] . ", bienvenue sur la boutique !<br>");
$NomJoueur = mysql_real_escape_string($_POST['Nom']);
$Query = mysql_query("SELECT * FROM Comptes WHERE Nom = 'Nom'") or die(mysql_error());
}
?>
<form method = "post" action = "">
Nom:<br><input type = "Nom" name = "Nom"><br>
<input type = "submit" name = "Entrer" value = "Login">
</form>
</font>
</body>
</html>
Donc la on si la case est remplie on prend le nom.
On fait une variable pour éviter de tout récrire.
Et la je coince...
Help ?
EDIT : J'ai mis a jour besoin d'aide pour sortir mes 2 varaibles ZPs et VIP.
Merci.
Voilà j'ai réussie mais maintenant Xartrick je ne sais pas comment utiliser la fenêtre de micro-paiement pour incrémenter ma variable.
Le code PHP :
<html>
<title>Comptes Control Panel</title>
<body align = "center">
<font face = "Verdana">
<?php
include('config.php');
session_start();
if(isset($_POST['Nom']))
{
echo("Bonjour, " . $_POST['Nom'] . ", bienvenue sur la boutique !<br>");
$NomJoueur = mysql_real_escape_string($_POST['Nom']);
$Query = mysql_query("SELECT * FROM Comptes WHERE Nom = '$NomJoueur'") or die(mysql_error());
$Rows = mysql_num_rows($Query);
if($Rows)
{
$Fetch = mysql_fetch_assoc($Query);
$ZPs = $Fetch['ZPs'];
$VIP = $Fetch['VIP'];
$_SESSION['Nom'] = $NomJoueur;
echo "$NomJoueur<br>";
echo "ZP : $ZPs<br>";
echo "VIP$VIP<br>";
}
else
{
echo "Erreur 1.<br>";
echo "$NomJoueur<br>";
}
}
?>
<form method = "post" action = "">
Nom:<br><input type = "Nom" name = "Nom"><br>
<input type = "submit" name = "Entrer" value = "Login">
</form>
</font>
</body>
</html>
-
Essaye de voir du côté d'IPN (Instant Payment Notification).
-
Donc la je renvoie le joueur sur une page protégé mais je ne sais pas incrémenter la variable j'ai fait ça :
(Le boutique.php c'est pour récupéré le nom du joueur le scripte au dessus.)
<!DOCTYPE php>
<noscript>
<meta http-equiv="refresh" content="0;url=http://script.starpass.fr/error_code2.php?idd=96954&idp=47708">
</noscript>
<script type="text/javascript" src="http://script.starpass.fr/error_code.php?idd=96954&idp=47708">
</script>
<?php
include('config.php');
include('boutique.php');
$NomJoueur = $_POST['Nom'];
echo('Bonjour, ' . $_POST['Nom'] . ', bienvenue sur la boutique !<br>');
//echo('Code valide, ' . $NomJoueur . ', 30 ZP !<br>');
$Query = mysql_query("SELECT * FROM Comptes WHERE Nom = '$NomJoueur'") or die(mysql_error());
$Rows = mysql_num_rows($Query);
if($Rows)
{
$Fetch = mysql_fetch_assoc($Query);
$ZPs = $Fetch['ZPs'];
$NZPs = $ZPs 30;
mysql_query("UPDATE Comptes SET 'ZPs' = '$NZPs' WHERE 'Nom' = '$NomJoueur'") or die(mysql_error());
$_SESSION['Nom'] = $NomJoueur;
echo "$NomJoueur<br>";
echo "ZP : $ZPs<br>";
echo "VIP$VIP<br>";
}
?>
-
Donc la j'heurte un problème j'ai fait une page PHP bon.php quand le code est bon pour incrémenter la variable mais le joueur peut toujours incrémenter ça variable en appuyant sur F5.
Et le code de starpass ne marche pas :
Et je ne sais pas l'utiliser ou bien comment l'installer ?
<?php
// Déclaration des variables
$ident=$idp=$ids=$idd=$codes=$code1=$code2=$code3=$code4=$code5=$datas='';
$idp = 47708;
// $ids n'est plus utilisé, mais il faut conserver la variable pour une question de compatibilité
$idd = 96954;
$ident=$idp.";".$ids.";".$idd;
// On récupère le(s) code(s) sous la forme 'xxxxxxxx;xxxxxxxx'
if(isset($_POST['code1'])) $code1 = $_POST['code1'];
if(isset($_POST['code2'])) $code2 = ";".$_POST['code2'];
if(isset($_POST['code3'])) $code3 = ";".$_POST['code3'];
if(isset($_POST['code4'])) $code4 = ";".$_POST['code4'];
if(isset($_POST['code5'])) $code5 = ";".$_POST['code5'];
$codes=$code1.$code2.$code3.$code4.$code5;
// On récupère le champ DATAS
if(isset($_POST['DATAS'])) $datas = $_POST['DATAS'];
// On encode les trois chaines en URL
$ident=urlencode($ident);
$codes=urlencode($codes);
$datas=urlencode($datas);
/* Envoi de la requête vers le serveur StarPass
Dans la variable tab[0] on récupère la réponse du serveur
Dans la variable tab[1] on récupère l'URL d'accès ou d'erreur suivant la réponse du serveur */
$get_f=@file("http://script.starpass.fr/check_php.php?ident=$ident&codes=$codes&DATAS=$datas");
if(!$get_f)
{
exit("Votre serveur n'a pas accès au serveur de Starpass, merci de contacter votre hébergeur.");
}
$tab = explode("|",$get_f[0]);
if(!$tab[1]) $url = "http://script.starpass.fr/erreur.php";
else $url = $tab[1];
// dans $pays on a le pays de l'offre. exemple "fr"
$pays = $tab[2];
// dans $palier on a le palier de l'offre. exemple "Plus A"
$palier = urldecode($tab[3]);
// dans $id_palier on a l'identifiant de l'offre
$id_palier = urldecode($tab[4]);
// dans $type on a le type de l'offre. exemple "sms", "audiotel, "cb", etc.
$type = urldecode($tab[5]);
// vous pouvez à tout moment consulter la liste des paliers à l'adresse : http://script.starpass.fr/palier.php
// Si $tab[0] ne répond pas "OUI" l'accès est refusé
// On redirige sur l'URL d'erreur
if(substr($tab[0],0,3) != "OUI")
{
header("Location: $url");
exit;
}
else
{
/* Le serveur a répondu "OUI"
On place un cookie appelé CODE_BON et qui vaut la valeur 1
Ce cookie est valide jusqu'à ce que l'internaute ferme son navigateur
Dans les pages suivantes, nous testerons l'existence du cookie
S'il existe, c'est que l'internaute est autorisé,
sinon on le renverra sur une page d'erreur */
setCookie("CODE_BON", "1", 0);
// Si vous avez plusieurs documents, nommer le cookie plutôt 'code'+iDocumentId
// vous pouvez afficher les variables de cette façon :
// echo "idd : $idd / codes : $codes / datas : $datas / pays : $pays / palier : $palier / id_palier : $id_palier / type : $type";
}
?>
Dans les pages suivantes de la zone payante de votre site, vous pouvez alors vérifier l'existence de ce cookie :
<?php
// On vérifie si le cookie existe
if(isset($HTTP_COOKIE_VARS['CODE_BON']))
{
// Si le cookie existe mais que le contenu n'est pas bon on le redirige sur la page d'erreur
if( $HTTP_COOKIE_VARS['CODE_BON'] != '1'){
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
}
else{
// Si le cookie n'existe pas on redirige l'internaute sur la page d'erreur
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
?>
Cordialement.
-
Ajoute dans ta base de donnée le code utilisé, s'il est déjà, tu ne donne rien, s'il n'y est pas et qu'il est valide, tu donne !
-
Le session c'est dékà fait.
J'ai pas trop compris ce que tu voulais dire Xartrick j'ai mon idée mais tu n'aurais pas un exemple ?
Double post
C'est bon je viens de régler le bug !
Tout marche impect' merci.