Ich habe jetzt folgendes:
der Befehl zum scheine geben
CAlles anzeigenocmd:giveschein(playerid,params[]) { new pID,schein[24],pname[MAX_PLAYER_NAME],name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); GetPlayerName(pID,pname,sizeof(pname)); if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist."); if(PlayerInfo[playerid][pMember] != 8) return SendClientMessage(playerid,Grau,"Du bist kein Fahrlehrer!"); if(sscanf(params,"us",pID,schein)) { SendClientMessage(playerid,Grau,"Benutze: /giveschein [playerid/PartOfName] [Schein]"); SendClientMessage(playerid,Grau,"Scheine: Auto, Motorrad, Flug, Angel, Boot, Waffe1, Waffe2"); return 1; } if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,Grau,"Der angegebene Spieler ist nicht Onlien!"); if(!strcmp(schein, "Auto", true)) { if(PlayerInfo[pID][pLevel] < 1) return SendClientMessage(playerid,Grau,"Dieser Spieler hat nicht das richtige Level für diesen Schein!"); new string[128]; format(string,sizeof(string),"Fahrlehrer %s hat dir den Autoschein gegeben.",name); SendClientMessage(pID,Blau,string); format(string,sizeof(string),"Du hast %s den Autoschein gegeben.",pname); SendClientMessage(playerid,Blau,string); PlayerInfo[pID][pAuto] = 1; return 1; } else if(!strcmp(schein, "Motorrad", true)) { if(PlayerInfo[pID][pLevel] < 2) return SendClientMessage(playerid,Grau,"Dieser Spieler hat nicht das richtige Level für diesen Schein!"); new string[128]; format(string,sizeof(string),"Fahrlehrer %s hat dir den Motorradschein gegeben.",name); SendClientMessage(pID,Blau,string); format(string,sizeof(string),"Du hast %s den Motorradschein gegeben.",pname); SendClientMessage(playerid,Blau,string); PlayerInfo[pID][pBike] = 1; return 1; } else if(!strcmp(schein, "Flug", true)) { if(PlayerInfo[pID][pLevel] < 3) return SendClientMessage(playerid,Grau,"Dieser Spieler hat nicht das richtige Level für diesen Schein!"); new string[128]; format(string,sizeof(string),"Fahrlehrer %s hat dir den Flugschein gegeben.",name); SendClientMessage(pID,Blau,string); format(string,sizeof(string),"Du hast %s den Flugschein gegeben.",pname); SendClientMessage(playerid,Blau,string); PlayerInfo[pID][pFlug] = 1; return 1; } else if(!strcmp(schein, "Angel", true)) { if(PlayerInfo[pID][pLevel] < 1) return SendClientMessage(playerid,Grau,"Dieser Spieler hat nicht das richtige Level für diesen Schein!"); new string[128]; format(string,sizeof(string),"Fahrlehrer %s hat dir den Angelschein gegeben.",name); SendClientMessage(pID,Blau,string); format(string,sizeof(string),"Du hast %s den Angelschein gegeben.",pname); SendClientMessage(playerid,Blau,string); PlayerInfo[pID][pAngel] = 1; return 1; } else if(!strcmp(schein, "Boot", true)) { if(PlayerInfo[pID][pLevel] < 3) return SendClientMessage(playerid,Grau,"Dieser Spieler hat nicht das richtige Level für diesen Schein!"); new string[128]; format(string,sizeof(string),"Fahrlehrer %s hat dir den Bootsschein gegeben.",name); SendClientMessage(pID,Blau,string); format(string,sizeof(string),"Du hast %s den Bootsschein gegeben.",pname); SendClientMessage(playerid,Blau,string); PlayerInfo[pID][pBoot] = 1; return 1; } else if(!strcmp(schein, "Waffe1", true)) { if(PlayerInfo[pID][pLevel] < 4) return SendClientMessage(playerid,Grau,"Dieser Spieler hat nicht das richtige Level für diesen Schein!"); new string[128]; format(string,sizeof(string),"Fahrlehrer %s hat dir den Waffenschein 1 gegeben.",name); SendClientMessage(pID,Blau,string); format(string,sizeof(string),"Du hast %s den Waffenschein 1 gegeben.",pname); SendClientMessage(playerid,Blau,string); PlayerInfo[pID][pWaffe1] = 1; return 1; } else if(!strcmp(schein, "Waffe2", true)) { if(PlayerInfo[pID][pLevel] < 6) return SendClientMessage(playerid,Grau,"Dieser Spieler hat nicht das richtige Level für diesen Schein!"); new string[128]; format(string,sizeof(string),"Fahrlehrer %s hat dir den Waffenschein 2 gegeben.",name); SendClientMessage(pID,Blau,string); format(string,sizeof(string),"Du hast %s den Waffenschein 2 gegeben.",pname); SendClientMessage(playerid,Blau,string); PlayerInfo[pID][pWaffe2] = 1; return 1; } else return SendClientMessage(playerid,Grau,"Ungültige Auswahl"); }
und hier das speichern:
CAlles anzeigenpublic Register(playerid,key[]) { new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name); dini_Create(Spielerdatei); dini_Set(Spielerdatei,"Passwort",key); dini_IntSet(Spielerdatei,"Adminlevel",0); dini_IntSet(Spielerdatei,"Leader",0); dini_IntSet(Spielerdatei,"Warn",0); dini_IntSet(Spielerdatei,"Premium",0); dini_IntSet(Spielerdatei,"Level",1); dini_IntSet(Spielerdatei,"Geld",10000); dini_IntSet(Spielerdatei,"Skin",1); dini_IntSet(Spielerdatei,"Fraktion",0); dini_IntSet(Spielerdatei,"Member",0); dini_IntSet(Spielerdatei,"Rank",0); dini_IntSet(Spielerdatei,"Respect",0); dini_IntSet(Spielerdatei,"Alter",0); dini_IntSet(Spielerdatei,"Geschlecht",0); dini_IntSet(Spielerdatei,"Autoschein",0); dini_IntSet(Spielerdatei,"Motorradschein",0); dini_IntSet(Spielerdatei,"Bootschein",0); dini_IntSet(Spielerdatei,"Angelschein",0); dini_IntSet(Spielerdatei,"Flugschein",0); dini_IntSet(Spielerdatei,"Waffenschein 1",0); dini_IntSet(Spielerdatei,"Waffenschein 2",0); SendClientMessage(playerid,Gruen,"Du hast dich erfolkreich registriert."); SetPlayerSkin(playerid,1); SetPlayerScore(playerid,1); GivePlayerMoney(playerid,10000); return 1; } public Login(playerid,key[]) { new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name); if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),true)) { SpielerLaden(playerid); SendClientMessage(playerid,Gruen,"Du hast dich erfolgreich eingeloggt."); PlayerInfo[playerid][pEingeloggt] = 1; return 1; } else { SendClientMessage(playerid,Rot,"SERVER: Das Passwort stimmt mit dem Account nicht überein."); ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gib bitte dein Passwort ein.","Login","Abbrechen"); return 1; } } public SpielerLaden(playerid) { new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name); SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level")); GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld")); PlayerInfo[playerid][pAdminlevel] = dini_Int(Spielerdatei,"Adminlevel"); PlayerInfo[playerid][pRespect] = dini_Int(Spielerdatei,"Respect"); PlayerInfo[playerid][pFraktion] = dini_Int(Spielerdatei,"Fraktion"); PlayerInfo[playerid][pLeader] = dini_Int(Spielerdatei,"Leader"); PlayerInfo[playerid][pMember] = dini_Int(Spielerdatei,"Member"); PlayerInfo[playerid][pRank] = dini_Int(Spielerdatei,"Rang"); PlayerInfo[playerid][pPremium] = dini_Int(Spielerdatei,"Premium"); PlayerInfo[playerid][pSkin] = dini_Int(Spielerdatei,"Skin"); PlayerInfo[playerid][pWarn] = dini_Int(Spielerdatei,"Warn"); PlayerInfo[playerid][pAlter] = dini_Int(Spielerdatei,"Alter"); PlayerInfo[playerid][pGeschlecht] = dini_Int(Spielerdatei,"Geschlecht"); PlayerInfo[playerid][pAuto] = dini_Int(Spielerdatei,"Autoschein"); PlayerInfo[playerid][pBike] = dini_Int(Spielerdatei,"Motorradschein"); PlayerInfo[playerid][pBoot] = dini_Int(Spielerdatei,"Bootschein"); PlayerInfo[playerid][pAngel] = dini_Int(Spielerdatei,"Angelschein"); PlayerInfo[playerid][pFlug] = dini_Int(Spielerdatei,"Flugschein"); PlayerInfo[playerid][pWaffe1] = dini_Int(Spielerdatei,"Waffenschein 1"); PlayerInfo[playerid][pWaffe2] = dini_Int(Spielerdatei,"Waffenschein 2"); if(PlayerInfo[playerid][pPremium] > 0) { SendClientMessage(playerid,Gelb,"** Du bist mit einem Premiumaccount eingeloggt!"); } if(PlayerInfo[playerid][pAdminlevel] > 0) { new info[256]; format(info,sizeof(info),"** Du bist als %s eingeloggt!",AdminRank(playerid)); SendClientMessage(playerid,Gelb,info); } if(PlayerInfo[playerid][pLeader] > 0) { new info[256]; format(info,sizeof(info),"** Du bist als Leader der Fraktion %s eingeloggt!",LeaderRank(playerid)); SendClientMessage(playerid,Gelb,info); } return 1; } public SpielerSpeichern(playerid) { new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name); dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid)); dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid)); dini_IntSet(Spielerdatei,"Skin",GetPlayerSkin(playerid)); dini_IntSet(Spielerdatei,"Adminlevel",PlayerInfo[playerid][pAdminlevel]); dini_IntSet(Spielerdatei,"Respect",PlayerInfo[playerid][pRespect]); dini_IntSet(Spielerdatei,"Fraktion",PlayerInfo[playerid][pFraktion]); dini_IntSet(Spielerdatei,"Leader",PlayerInfo[playerid][pLeader]); dini_IntSet(Spielerdatei,"Member",PlayerInfo[playerid][pMember]); dini_IntSet(Spielerdatei,"Rang",PlayerInfo[playerid][pRank]); dini_IntSet(Spielerdatei,"Premium",PlayerInfo[playerid][pPremium]); dini_IntSet(Spielerdatei,"Warn",PlayerInfo[playerid][pWarn]); dini_IntSet(Spielerdatei,"Alter",PlayerInfo[playerid][pAlter]); dini_IntSet(Spielerdatei,"Geschlecht",PlayerInfo[playerid][pGeschlecht]); dini_IntSet(Spielerdatei,"Autoschein",PlayerInfo[playerid][pAuto]); dini_IntSet(Spielerdatei,"Motorradschein",PlayerInfo[playerid][pBike]); dini_IntSet(Spielerdatei,"Angelschein",PlayerInfo[playerid][pAngel]); dini_IntSet(Spielerdatei,"Flugschein",PlayerInfo[playerid][pFlug]); dini_IntSet(Spielerdatei,"Bootschein",PlayerInfo[playerid][pBoot]); dini_IntSet(Spielerdatei,"Waffenschein 1",PlayerInfo[playerid][pWaffe1]); dini_IntSet(Spielerdatei,"Waffenschein 2",PlayerInfo[playerid][pWaffe2]); return 1; } public ResetVariablen(playerid) { PlayerInfo[playerid][pAdminlevel] = 0; PlayerInfo[playerid][pPremium] = 0; PlayerInfo[playerid][pFraktion] = 0; PlayerInfo[playerid][pLeader] = 0; PlayerInfo[playerid][pRank] = 0; PlayerInfo[playerid][pMember] = 0; PlayerInfo[playerid][pEingeloggt] = 0; PlayerInfo[playerid][pSkin] = 0; PlayerInfo[playerid][pRespect] = 0; PlayerInfo[playerid][pAlter] = 0; PlayerInfo[playerid][pGeschlecht] = 0; PlayerInfo[playerid][pLevel] = 0; PlayerInfo[playerid][pGeld] = 0; PlayerInfo[playerid][pAuto] = 0; PlayerInfo[playerid][pBike] = 0; PlayerInfo[playerid][pBoot] = 0; PlayerInfo[playerid][pFlug] = 0; PlayerInfo[playerid][pAngel] = 0; PlayerInfo[playerid][pWaffe1] = 0; PlayerInfo[playerid][pWaffe2] = 0; return 1; }
Ich habe auch gedacht das dass bei OnPlayerStateChange rein kommt da hab ich bis jetzt das:
CAlles anzeigenif(newstate == PLAYER_STATE_DRIVER) { if(PlayerInfo[playerid][pAuto] == 0) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid,Grau,"Du hast keinen Autoführerschein!"); return 1; } if(PlayerInfo[playerid][pBike] == 0) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid,Grau,"Du hast keinen Motorradführerschein!"); return 1; } if(PlayerInfo[playerid][pFlug] == 0) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid,Grau,"Du hast keinen Flugschein!"); return 1; } if(PlayerInfo[playerid][pBoot] == 0) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid,Grau,"Du hast keinen Bootsschein!"); return 1; } }
mir ist bewusst dass da noch die abfrage fehlt welches Fahrzeug es ist aber ich versteh noch nicht so ganz wie ich das schreibe.
Guck mal hier.
Da hast du genau, das richtige schon bekommen.
Alles anzeigenHier hast du eine Liste von allen modelids: https://sampwiki.blast.hk/wiki/Vehicles:All
Hier z.B. nur von Bikes: https://sampwiki.blast.hk/wiki/Vehicles:Bikes
C++Alles anzeigennew vehID = GetPlayerVehicleID(playerid); new model = GetVehicleModel(vehID); //Und dann brauchst z.B. Funktionen wie: stock bool:IsBike(model) { switch(model) { case 448, 461, 462, 463: return true; // etc } return false; }
Kannst OnPlayerStateChange nutzen
Gibt auch schon Includes, die das auflisten: https://sampforum.blast.hk/showthread.php?tid=243814 (GetVehicleType)
So kannst du genau, die Arten der Fahrzeuge im Script Abfragen