Jochemd Geplaatst: 13 juli 2010 Rapport Geplaatst: 13 juli 2010 (bewerkt) 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: 13 juli 2010 door Jochemd Reageren
opacool6 Geplaatst: 23 juli 2010 Rapport Geplaatst: 23 juli 2010 (bewerkt) 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 maar ik denk dat je hier al een eindje mee komt dus succes. gr fonsmol Bewerkt: 23 juli 2010 door opacool6 Reageren
.Timothy Geplaatst: 23 juli 2010 Rapport Geplaatst: 23 juli 2010 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. Reageren
opacool6 Geplaatst: 23 juli 2010 Rapport Geplaatst: 23 juli 2010 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. Reageren
Big Boss Geplaatst: 23 juli 2010 Rapport Geplaatst: 23 juli 2010 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); Reageren
opacool6 Geplaatst: 24 juli 2010 Rapport Geplaatst: 24 juli 2010 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 Reageren
Recommended Posts
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.