Jump to content

Kan iemand dit converteren naar een input dialog?


Jochemd

Recommended Posts

Hoi,

Ik heb hier twee commando's, register en login. Ik kom er niet aan uit hoe ik deze moet converteren naar een input dialog die je krijgt als je connect naar de server. Kan iemand het voor me doen?

dcmd_register(playerid, params[])
{
       new Playername[MAX_PLAYER_NAME];
       GetPlayerName(playerid, Playername, MAX_PLAYER_NAME);
       if(PlayerInfo[playerid][isLogged] == 1) return SendClientMessage(playerid, COLOR_RED, ".:: [Register] You are already logged in!");
       {
           if(sscanf(params, "s", passwordd)) return SendClientMessage(playerid, COLOR_RED, ".:: [Register] Syntax Error: /register [password]");
           else
           {
               format(file, sizeof(file), "JoAdmin/Accounts/%s.ini", Playername);
               if(dini_Exists(file)) return  SendClientMessage(playerid, COLOR_YELLOW, ".:: [Register] That name is registered! Use /login or reconnect if this isn't your name!");
               {
				dini_Create(file);
				dini_IntSet(file, "password", passwordd);
				dini_IntSet(file, "Money", 10000);
				dini_IntSet(file, "Score", GetPlayerScore(playerid));
				if(dini_Int("JoAdmin/Configuration/MainConfig.ini", "SkinSave") == 1)
				{
					dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
				}
				dini_IntSet(file, "AdminLevel", PlayerInfo[playerid][JoLevel]);
                   SendClientMessage(playerid, COLOR_GREEN,".:: [Register] You have succesfully registered, please use /login now!");
               }
           }
       }
       return 1;
}
dcmd_login(playerid, params[])
{
       new Playername[MAX_PLAYER_NAME],string[56];
       GetPlayerName(playerid, Playername, MAX_PLAYER_NAME);
       if(PlayerInfo[playerid][isLogged] == 1) return SendClientMessage(playerid,COLOR_RED, ".:: [Login] You are already logged in!");
       {
               if(sscanf(params, "s", passwordd)) SendClientMessage(playerid, COLOR_RED, ".:: [Login] Syntax Error: /login [password]!");
  		        else
       		{
                       format(file, sizeof(file), "JoAdmin/Accounts/%s.ini", Playername);
                       if(!dini_Exists(file)) return SendClientMessage(playerid, COLOR_GREEN,".:: [Login] That account doesn't exist! Please use /register!");
                       {
                           if(strval(dini_Get(file, "password")) != (passwordd)) return SendClientMessage(playerid, COLOR_RED, ".:: [Login] Wrong password!");
                           {
							SetPlayerMoney(playerid, dini_Int(file, "Money"));
							SetPlayerScore(playerid, dini_Int(file, "Score"));
							if(dini_Int("JoAdmin/Configuration/MainConfig.ini", "SkinSave") == 1)
							{
								SetPlayerSkin(playerid, dini_Int(file, "Skin"));
							}
							PlayerInfo[playerid][JoLevel] = dini_Int(file, "AdminLevel");
							format(string,sizeof(string),".:: [Login] You logged in succesfully! Your level: %d",PlayerInfo[playerid][JoLevel]);
							SendClientMessage(playerid,COLOR_YELLOW,string);
							format(string,sizeof(string),"Welcome back, %s!",Playername);
							GameTextForPlayer(playerid,string,4000,4);
							PlayerPlaySound(playerid,1058,0.0,0.0,0.0);
							PlayerInfo[playerid][isLogged] = 1;
       					}
                       }
               }
       }
       return 1;
}

Bewerkt: door Jochemd
Link to comment
Delen op andere websites

  • 2 weken later...

Hoi,

Ik heb hier twee commando's, register en login. Ik kom er niet aan uit hoe ik deze moet converteren naar een input dialog die je krijgt als je connect naar de server. Kan iemand het voor me doen?

 ff weg gehaald:P 

de volgende keer moet je het zelf proberen heh :{

zet dit onder de public OnDialogResponse (als die al bestaat moet je die regel in mijn text weg halen)

als die er nog niet staat plaats dan gewoon het hele stuk

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
	new Playername[MAX_PLAYER_NAME];
       GetPlayerName(playerid, Playername, MAX_PLAYER_NAME);
       if(PlayerInfo[playerid][isLogged] == 1) return SendClientMessage(playerid, COLOR_RED, ".:: [Register] You are already logged in!");
       {
           if(sscanf(params, "s",inputtext)) return SendClientMessage(playerid, COLOR_RED, ".:: [Register] Syntax Error: /register [password]");
           else
           {
               format(file, sizeof(file), "JoAdmin/Accounts/%s.ini", Playername);
               if(dini_Exists(file)) return  SendClientMessage(playerid, COLOR_YELLOW, ".:: [Register] That name is registered! Use /login or reconnect if this isn't your name!");
               {
                   dini_Create(file);
				dini_IntSet(file, "password", passwordd);
				dini_IntSet(file, "Money", 10000);
				dini_IntSet(file, "Score", GetPlayerScore(playerid));
				if(dini_Int("JoAdmin/Configuration/MainConfig.ini", "SkinSave") == 1)
				{
					dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
				}
				dini_IntSet(file, "AdminLevel", PlayerInfo[playerid][JoLevel]);
                   SendClientMessage(playerid, COLOR_GREEN,".:: [Register] You have succesfully registered, please use /login now!");
               }
           }
       }
	return 1;
}
if(dialogid == 2)
{
    new Playername[MAX_PLAYER_NAME],string[56];
       GetPlayerName(playerid, Playername, MAX_PLAYER_NAME);
       if(PlayerInfo[playerid][isLogged] == 1) return SendClientMessage(playerid,COLOR_RED, ".:: [Login] You are already logged in!");
       {
		if(sscanf(params, "s", inputtext)) SendClientMessage(playerid, COLOR_RED, ".:: [Login] Syntax Error: /login [password]!");
			else
           {
                format(file, sizeof(file), "JoAdmin/Accounts/%s.ini", Playername);
                if(!dini_Exists(file)) return SendClientMessage(playerid, COLOR_GREEN,".:: [Login] That account doesn't exist! Please use /register!");
                {
                     if(strval(dini_Get(file, "password")) != (passwordd)) return SendClientMessage(playerid, COLOR_RED, ".:: [Login] Wrong password!");
                     {
                                                               SetPlayerMoney(playerid, dini_Int(file, "Money"));
                                                               SetPlayerScore(playerid, dini_Int(file, "Score"));
                                                               if(dini_Int("JoAdmin/Configuration/MainConfig.ini", "SkinSave") == 1)
                                                               {
                                                                       SetPlayerSkin(playerid, dini_Int(file, "Skin"));
                                                               }
                                                               PlayerInfo[playerid][JoLevel] = dini_Int(file, "AdminLevel");
                                                               format(string,sizeof(string),".:: [Login] You logged in succesfully! Your level: %d",PlayerInfo[playerid][JoLevel]);
                                                               SendClientMessage(playerid,COLOR_YELLOW,string);
                                                               format(string,sizeof(string),"Welcome back, %s!",Playername);
                                                               GameTextForPlayer(playerid,string,4000,4);
                                                               PlayerPlaySound(playerid,1058,0.0,0.0,0.0);
                                                               PlayerInfo[playerid][isLogged] = 1;
                                               }
                       }
               }
	return 1;
}
return 1;
}

verander de functie van je huidige login command in deze:

ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Login","Welcome To ** enter your pass below","Ok","Cancel");

en de functie van je huidige register command in deze:

ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Register","Welcome To ** You've to register yourself by entering a new pas below","Ok","Cancel");

je moet je systeem aanpassen als je wilt dat het meteen in beeld komt als je connect, want als het full automatisch moet dan moet er nog een variable worden opgeslagen en dat moet je zelf maar uitvogelen :puh:

maar ik denk dat je hier al een eindje mee komt dus succes.

gr fonsmol

Bewerkt: door opacool6
Link to comment
Delen op andere websites

Mocht je al de callback OnDialogResponse hebben, zul je naast alleen die callback-regel, ook nog de bijbehorende accolades moeten verwijderen en goed kijken of de dialogids niet overeenkomen. In dat geval moet je even doornummeren.

Zelf gebruik ik liever defines hiervoor, bijvoorbeeld DIALOG_LOGIN. Bovenaan je code zou je dan

#define DIALOG_LOGIN 1

kunnen zetten, bij ShowPlayerDialog en OnDialogResponse zou je deze dan ook weer kunnen gebruiken. Op deze manier zul je minder snel verstrikt raken in de IDs, omdat je er logischer namen aan geeft.

Link to comment
Delen op andere websites

Mocht je al de callback OnDialogResponse hebben, zul je naast alleen die callback-regel, ook nog de bijbehorende accolades moeten verwijderen en goed kijken of de dialogids niet overeenkomen. In dat geval moet je even doornummeren.

Zelf gebruik ik liever defines hiervoor, bijvoorbeeld DIALOG_LOGIN. Bovenaan je code zou je dan

#define DIALOG_LOGIN 1

kunnen zetten, bij ShowPlayerDialog en OnDialogResponse zou je deze dan ook weer kunnen gebruiken. Op deze manier zul je minder snel verstrikt raken in de IDs, omdat je er logischer namen aan geeft.

Ik geef je daar gelijk in, alleen als hij nog niet weet hoe je een dialogid moet maken ging ik er ook niet vanuit dat hij er al een had.

Link to comment
Delen op andere websites

Zelf gebruik ik liever defines hiervoor, bijvoorbeeld DIALOG_LOGIN. Bovenaan je code zou je dan

#define DIALOG_LOGIN 1

kunnen zetten, bij ShowPlayerDialog en OnDialogResponse zou je deze dan ook weer kunnen gebruiken. Op deze manier zul je minder snel verstrikt raken in de IDs, omdat je er logischer namen aan geeft.

Ik gebruik tegenwoordig zelf altijd enumerators voor dit soort dingen. Werkt net hetzelfde als defines, behalve dat je er geen nummer meer achter hoeft te zetten. :)

bv.

enum eDialogs (+=1)
{
   DIALOG_REGISTER = 1,
   DIALOG_LOGIN, // dit wordt automatisch 2
   DIALOG_EXAMPLE_LIST, // 3
   DIALOG_EXAMPLE_MSGBOX // 4
   // etc.
};

of ook

enum eVehicle (+=1)
{
LANDSTAL = 400,
BRAVURA,
BUFFALO,
LINERUN,
PEREN,
SENTINEL,
DUMPER,
       // etc, etc, etc
};

AddStaticVehicle(BUFFALO, 2240.0222, 2461.5393, 2.8984, 270.0, 0, 0);

Link to comment
Delen op andere websites

Zelf gebruik ik liever defines hiervoor, bijvoorbeeld DIALOG_LOGIN. Bovenaan je code zou je dan

#define DIALOG_LOGIN 1

kunnen zetten, bij ShowPlayerDialog en OnDialogResponse zou je deze dan ook weer kunnen gebruiken. Op deze manier zul je minder snel verstrikt raken in de IDs, omdat je er logischer namen aan geeft.

Ik gebruik tegenwoordig zelf altijd enumerators voor dit soort dingen. Werkt net hetzelfde als defines, behalve dat je er geen nummer meer achter hoeft te zetten. :)

bv.

enum eDialogs (+=1)
{
   DIALOG_REGISTER = 1,
   DIALOG_LOGIN, // dit wordt automatisch 2
   DIALOG_EXAMPLE_LIST, // 3
   DIALOG_EXAMPLE_MSGBOX // 4
   // etc.
};

of ook

enum eVehicle (+=1)
{
LANDSTAL = 400,
BRAVURA,
BUFFALO,
LINERUN,
PEREN,
SENTINEL,
DUMPER,
       // etc, etc, etc
};

AddStaticVehicle(BUFFALO, 2240.0222, 2461.5393, 2.8984, 270.0, 0, 0);

heey nice manier ga ik ook gebruiken ;)

Link to comment
Delen op andere websites

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...