7
« le: 11 Juillet 2009, 17:43:06 »
merci beaucoup , j'en apprende toutes les heures !!
je suis en train de scripter un menu qui sert à faire un apparaitre des véhicules .
J'ai remarqué que lorsque le menu a une taille trop grande, le serveur crash directement à son lancement en rendant un log de crash vide ( je vous dit pas le temps que j'ai mis pour savoir qu'est-ce qui faisait planter le serveur ^^ )
j'ai donc décider de couper ce long menu en plusieur petit menu !! je vous laisse analyser le code :
#pragma tabsize 0
#include <a_samp>
#include <core>
#include <float>
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
//-----------------------------------------------
new Menu:vehi;
new Menu:vehi2;
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/vehi", cmdtext, true) == 0){
ShowMenuForPlayer(vehi,playerid); // On active le menu "tunning"
TogglePlayerControllable(playerid,0); // On freeze le joueur
}
return 1;
}
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" bibis mod");
print("--------------------------------------\n");
}
main()
{
print("\n----------------------------------");
print("bibis mod");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("bibi's mod free mod");
AddPlayerClass(257, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
vehi = CreateMenu("~b~vehicule ~w~selection",1,125,150,300); // "vehi" active un menu qui nous donne les choix ci-dessous :
vehi2 = CreateMenu("~b~vehicule ~w~selection",1,125,150,300);
if(IsValidMenu(vehi)) {
SetMenuColumnHeader(vehi , 0, "Choisissez un vehicule:");
AddMenuItem(vehi ,0,"manana");
AddMenuItem(vehi ,0,"supergt");
AddMenuItem(vehi ,0,"Landstalker");
AddMenuItem(vehi ,0,"Sentinel");
AddMenuItem(vehi ,0,"suivant");
}
if(IsValidMenu(vehi2)) {
AddMenuItem(vehi2 ,0,"precedent");
AddMenuItem(vehi2 ,0,"Dumper");
AddMenuItem(vehi2 ,0,"Trashmaster");
AddMenuItem(vehi2 ,0,"Stretch");
AddMenuItem(vehi2 ,0,"Infernus");
AddMenuItem(vehi2 ,0,"Cheetah");
}
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
new Float:X;
new Float:Y;
new Float:Z;
new finish;
GetPlayerPos(playerid, X, Y, Z);
new Menu:Current = GetPlayerMenu(playerid); // Si le joueur séléctionne quel que chose du menu.
do{
finish = true;
if (Current == vehi){
if (row == 0){
CreateVehicle(410, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 1){
CreateVehicle(506, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 2){
CreateVehicle(400, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 3){
CreateVehicle(405, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 4){
ShowMenuForPlayer(vehi2,playerid);
Current = vehi2;
}
}
if (Current == vehi2){
if (row == 0){
ShowMenuForPlayer(vehi,playerid);
Current = vehi;
}
else if (row == 1){
CreateVehicle(409, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 2){
CreateVehicle(411, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 3){
CreateVehicle(415, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 4){
CreateVehicle(416, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 5){
CreateVehicle(417, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
else if (row == 6){
CreateVehicle(424, X, Y+2, Z, 356, 1, 1, 50);
finish = false;
}
}
}
while(finish == true); --> c'est ici que ça pose problème.
TogglePlayerControllable(playerid,1); // On défreeze le joueur
return 1;
}
donc voilà , j'ai fais un petit copié-collé du tutoriel des menus et j'ai un peu modifier le truc pour en afficher 2 et faire un bouton " précédent" et "suivant"
vous l'auriez remarqué ;)
j'ai eu une bonne quinzaine d'erreur toutes, je pense corrigé .
Mais 1 perssiste :
C:\Documents and Settings\bibs\Bureau\samp02Xserver.win32\gamemodes\testt.pwn(164) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Warning.
j'arrive pas à trouver où est le problème :(