GTAOnline.net

IV : Multiplayer (iv:mp) => Scripting IV:MP [Squirrel center] => Discussion démarrée par: Gilux le 19 Juillet 2011, 18:24:57

Titre: Topic Gilux [Actuel : Editeur GUI/Commentaires N++/Paramètres commandes]
Posté par: Gilux le 19 Juillet 2011, 18:24:57
Salut,
J'ai testé la GUI aujourd'hui, avec ce code dans le clientscript :

local GUItest = {};
GUItest.window <- GUIWindow();
GUItest.window.setText("Enregistrement");
GUItest.window.setSize(460.0, 170.0, false);
local screen = guiGetScreenSize();
GUItest.window.setPosition(screen[0]/2 - 460/2, screen[1]/2 - 170/2, false);
function onPlayerCommand(command)
{
    local cmd = split(command, " ");
    cmd[0] = cmd[0].tolower();
    if(cmd[0] == "/gui")
    {
        GUItest.window.setVisible(!GUItest.windowshown);
        GUItest.windowshown = !GUItest.windowshown;
        guiToggleCursor(true);
    }
}
addEvent("playerCommand", onPlayerCommand);

Voilà, et bien évidemment, lorsque je teste le code, rien ne s'affiche, ni sur l'écran ni dans la console. (J'ai bien ajouté le script au fichier xml de configuration.)
Je pensais à un confilt entre évènements serveur/client, mais je ne comprend pas comment régler ça si c'est le cas.
Merci de votre aide !
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: ApocKalipsS le 20 Juillet 2011, 04:00:07
Salut,

Ton problème n'est pas un conflit d'évènement, car les scripts clients et serveurs ne sont pas du tout reliés entre eux. (Comme l'indique son nom, les scripts client sont éxécutés sur le PC du joueur, et pas appelés sur le serveur)
Cependant, la commande onPlayerCommand n'est pas appelée sur le client, mais seulement sur le serveur.

Je te conseil donc de faire ceci dans ton script serveur :

function onPlayerCommand(playerid,command)
{
     if(cmd[0].tolower() == "/gui")
          triggerClientEvent(playerid, "showGUI");
}

et dans le script client :

local GUItest = {};
local screen = guiGetScreenSize();
GUItest.window <- GUIWindow();
GUItest.window.setText("Enregistrement");
GUItest.window.setSize(460.0, 170.0, false);
GUItest.window.setPosition(screen[0]/2 - 460/2, screen[1]/2 - 170/2, false); // je te conseil de faire directement tes calculs, remplacer 170/2 par 85 pour limiter les calculs à faire par le PC du client, qui n'est peut être pas très puissant.
GUItest.window.setVisible(false); // on la rend invisible au chargement du script
GUItest.windowshown <- false; // on oubli pas de définir cette variable
function showGUI() // Fonction appellée par addEvent
{
    GUItest.window.setVisible(!GUItest.windowshown);
    GUItest.windowshown = !GUItest.windowshown;
    guiToggleCursor(true);
}
addEvent("showGUI", showGUI); // Event appellé par le serveur quand le joueur tape /gui.
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Gilux le 20 Juillet 2011, 11:09:04
Merci à toi, je testerai ça cet après midi  ;)
Par contre, le wiki indique bien que l'event est "partagé" en une partie serveur (playerCommand(playerid,command)) et une partie client (playerCommand(command)).
(http://wiki.iv-multiplayer.com/wiki/index.php?title=PlayerCommand (http://wiki.iv-multiplayer.com/wiki/index.php?title=PlayerCommand))
Ce n'est plus à jour ?  :happy
++

EDIT : C'est bon, j'ai réussi et ça m'a permis de comprendre en même temps le fonctionnement des clientscripts, j'ai réussi à faire un petit script avec getCurrentStreetName.  :)
J'ai encore du mal à comprendre getLocalPlayer mais ça va venir :P
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: ApocKalipsS le 21 Juillet 2011, 10:46:06
getLocalPlayer te retourne tout simplement l'ID du joueur (playerid).
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Gilux le 29 Juillet 2011, 17:05:23
Merci de tes précisions. Je commence à doucement y arriver, que ce soit coté serveur (Sauvegarde de compte) ou client (GUI), mais je préfère faire un script 100% coté serveur pour le moment :D
++
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Armans le 11 Août 2011, 01:11:04
Je sais pas pourquoi je comprend mieux le Squirrel que le pawn la sais tout simple mais dernière question ou je mais les dossier du serveur?Car clien sais simple sais clienscripte (fallais pas cherche loin) mais les dossier du serveur? et aussi dans setting?

Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Gilux le 11 Août 2011, 09:58:41
M'enfin c'est mon topic là   ::)
Sinon, c'est l'avantage de IV:MP, les "scriptfiles" peuvent être placés n'importe où dans le dossier du serveur, il y a un dossier "files" mais rien ne t'empêche de les mettre autre part ;)
++
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: ApocKalipsS le 11 Août 2011, 10:37:38
settings, c'est pas un dossier, settings.xml est un fichier, comme server.cfg sur SA:MP.
Et en quelque sorte le Squirrel est plus simple, c'est juste que le Pawn est vraiment un langage mal foutu, mais va faire un tour sur le forum de IV:MP, tout le monde va te répondre "pawn sucks", et c'est bien vrai, et je trouve que GUnitSoldier explique bien pourquoi ici : http://forum.iv-multiplayer.com/index.php/topic,3752.msg37604.html#msg37604 (http://forum.iv-multiplayer.com/index.php/topic,3752.msg37604.html#msg37604)
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Gilux le 11 Août 2011, 10:41:35
Oui, il explique bien, mais sa signature le décrédibilise...
Citer
You're strange. You think your server is best?
You're idiot.

All servers the BEST, just because it's IVMP!!!
Not stupid SA-MP with fcking cartoon graphics and idiot physics.

Please, all SA-MP scripters fck off (i absolutely don't respect you) and stay down.

here is new age of new gaming in IVMP, SA-MP always was a kind of noob shit.

Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: ApocKalipsS le 11 Août 2011, 11:47:04
Il dit juste qu'il déteste SA:MP, mais ses arguments sont vrai concernant le Pawn
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Shawny le 20 Août 2011, 06:10:08
Pas nécessairement, quand certains comprennent le script pawn, ils savent ce qu'ils doivent toucher et ne pas toucher. Comme par exemple les ";" il éxiste plusieurs méthodes afin de savoir si tu en as oublié ou pas ou même encore, parfois quand tu ajoutes un script, il se peut que certaines variables soient déjà définies, il suffit de les retiré et d'en garder qu'une seule. Afin, c'est le script qui doit nous comprendre, mais c'est nous qui doit le comprendre et quand on le comprend aucun problème surgit.
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: ApocKalipsS le 20 Août 2011, 18:32:02
C'est pas au niveau des problèmes rencontrées ou les erreurs à la compilation, c'est au niveau des capacités, des fonctionnalités et des performances du langage.
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Armans le 25 Août 2011, 05:12:47
Mais comme la si bien dit Shawny quand certains comprennent le script pawn, ils savent ce qu'ils doivent toucher et ne pas toucher.La performance vien quand ta compris se qui faut faire ou logique mais sais vrais que j'ai plus de plaisir a coder en Squirrel que en PAWNO.
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Ssk le 25 Août 2011, 09:31:36
Il ne faut pas chercher Samir le Squirrel s’exécute plus rapidement que le pawn sans parler du fait que ce langage est un langage orienté objet donc bon que tu sache ce que tu touche ou pas le squirrel sera toujours (?) rapide que le pawn
Titre: Re : Topic Gilux [Squirrel][Actuel : Problème GUI]
Posté par: Armans le 26 Août 2011, 23:50:04
Je sais mais je suis plus alaise dans le Squirrel que dans PAWN ^^
Titre: Re : Topic Gilux [Actuel : Commentaires N++/Paramètres commandes/GUI]
Posté par: Gilux le 30 Août 2011, 18:40:23
Salut,

J'ai encore quelques questions :

• J'ai commencé à créer des commandes admin de base, comme /kick ou /announce.
Mais quand il faut indiquer une raison, le script n'indique que le premier mot de la phrase (Logique, sachant que les paramètres sont séparés (split) à chaque espace).
Comment remédier à ça ?

• J'ai continué à faire quelques trucs avec la GUI (Affichage de fenêtre, texte, etc). Cependant le fait de cliquer sur la croix de fermeture ne fait rien. J'imagine qu'il y a une méthode à ajouter pour la rendre active ?
EDIT : J'ai trouvé CloseButtonEnabled, je sais pas si c'est ça...

• Sur N++, les commentaires multilignes ne sont pas colorés. J'ai essayé de modifier userdefinelang.xml mais ça ne fonctionne toujours pas... (Pourtant ça fonctionne bien en PHP, etc)

Merci d'avance.
++
Titre: Re : Topic Gilux [Actuel : Editeur GUI/Commentaires N++/Paramètres commandes]
Posté par: ApocKalipsS le 30 Août 2011, 20:35:25
• Pour remédier à ça, utilise string.slice(start,end);
Ca permet de couper un chaîne d'un point à un autre.
Exemple :
local str = "Salut à tous !";
print(str.slice(1,5));
print(str.slice(5));
print(str.slice(0,2));

// Affiche :

alut
 à tous !
Sa

(Voir + sur le wiki Squirrel ici (http://www.squirrel-lang.org/doc/squirrel2.html#d0e2706))

Sinon, tu utilises un gros foreach et tu colles tes morceaux de tableau en une chaîne. Mais c'est biensûr moins optimisé.

• Il y a un event qui gère ça, windowClose. http://wiki.iv-multiplayer.com/wiki/index.php?title=WindowClose (http://wiki.iv-multiplayer.com/wiki/index.php?title=WindowClose)
Tu as juste à supprimer la fenêtre quand l'event est appelé.

• Faut essayer de trouver un fichier bien configuré. Si tu cherches un peu sur forum.iv-m.com, tu vas en trouver deux ou trois. (Si tu les trouve pas, je pourrais t'upload le mien)
Titre: Re : Topic Gilux [Actuel : Editeur GUI/Commentaires N++/Paramètres commandes]
Posté par: Gilux le 01 Septembre 2011, 16:19:45
Merci, j'essaierai tout ça :)
++