aber warum sollte ich bool verwenden?
Das war wohl auf [GSR]Kaito-sensei's Post bezogen, da er
new isOpen;
geschrieben hat. Dort fehlt der "bool:" Tag.
aber warum sollte ich bool verwenden?
Das war wohl auf [GSR]Kaito-sensei's Post bezogen, da er
new isOpen;
geschrieben hat. Dort fehlt der "bool:" Tag.
Bei OnPlayerCommandText:
if(!strcmp(cmdtext, "/fahrrad", true))
{
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
new vID = CreateVehicle(509, x, y, z, a, -1, -1, -1);
PutPlayerInVehicle(playerid, vID, 0);
SendClientMessage(playerid, 0xFF00FFFF, "Fahrrad!");
return 1;
}
Lass es mal so laufen:
Was kommt im Log, wenn du auf Löschen drückst?
case DIALOG_ACSUP:
{
printf("response: %d", response);
if(response == 1)
{
new string[128];
SupInfo[SupIDauswahl[playerid]][bearbeitung]=true;
format(SupInfo[SupIDauswahl[playerid]][Admin],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
SupInfo[SupIDauswahl[playerid]][AdminID]=playerid;
format(string,128,"%s hat dein Support Ticket geöffnet, du kannst einfach im Chat mit ihm schreiben",SpielerName(playerid));
SCM(SupInfo[SupIDauswahl[playerid]][SpielerID],orange,string);
SCM(playerid,orange,"Du hast das Ticket geöffnet, du kannst im Chat mit dem User schrieben.");
ImSupport[playerid]=true;
ASupportID[playerid]=SupIDauswahl[playerid];
ImSupport[SupInfo[SupIDauswahl[playerid]][SpielerID]]=true;
SupIDauswahl[playerid]=0;
}
else
{
printf("playerid: %d", playerid);
printf("SupIDauswahl: %d", SupIDauswahl[playerid]);
new string[128];
format(string,128,"Du hast das Ticket von %s gelöscht",SupInfo[SupIDauswahl[playerid]][Name]);
printf("string: %s", string);
SCM(playerid,orange,string);
format(string,128,"%s hat dein Support Ticket gelöscht",SpielerName(playerid));
printf("string: %s", string);
SCM(SupInfo[SupIDauswahl[playerid]][SpielerID],orange,string);
subgesendet[SupInfo[SupIDauswahl[playerid]][SpielerID]]=false;
SupInfo[SupIDauswahl[playerid]][erstellt]=false;
ImSupport[playerid]=false;
ASupportID[playerid]=-1;
printf("%d", SupInfo[SupIDauswahl[playerid]][SpielerID]);
ImSupport[SupInfo[SupIDauswahl[playerid]][SpielerID]]=false;
SupIDauswahl[playerid]=0;
}
}
Jeweils mit ShowPlayerDialog und DIALOG_STYLE_INPUTTEXT.
Dann nimmst du die Teile von OnPlayerText (?) und ersetzt eben "text" mit "inputtext".
Versuche es mal selbst, ob du das hinbekommst.
Ansonsten poste hier den Teil von OnPlayerText noch.
Du machst TextDrawHideForPlayer. Sollte das nicht TextDrawShowForPlayer heißen?
Ansonsten zeige bitte den Teil von OnQueryFinish.
Was wird geprintet, wenn du es so laufen lässt, wenn du im Fahrzeug sitzt?
Zählst du PlayerInfo[suspect][pJailTime] auch irgendwo runter?
Wie sieht der Code aus, der den Spieler automatisch aus dem Knast holt, wenn die Zeit vorbei ist?
Kommt diese Nachricht im Chat?
"Du hast das Ticket von %s gelöscht"
Dann ändere mal in SetPlayerSpawn:
if(PlayerInfo[playerid][pTut] == 0)
zu:
if(PlayerInfo[playerid][pTut] == 0 && gPlayerAccount[playerid] == 0)
Irgendwie ist der Zusammenhang des Codes nicht komplett. Versuche es mal so, wenn's nicht geht überlege ich mir was anderes.
Schreibe es mal so. Deine Schleifen waren etwas zu viel.
COMMAND:carlock(playerid,params[])
{
new Float:CarPos[3],string[144];
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
for(new i;i<MAX_VEHICLES;i++)
{
GetVehiclePos(i,CarPos[0],CarPos[1],CarPos[2]);
if(IsPlayerInRangeOfPoint(playerid,3,CarPos[0],CarPos[1],CarPos[2]))
{
new x = IsAPlayerCar(i);
if(x != -1)
{
if(!strcmp(PlayerName[playerid],CarInfo[x][c_Owner],true))
{
GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
if(!doors)
{
SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
format(string,sizeof(string),"~w~%s ~r~abgeschlossen",GetVehicleName(i));
GameTextForPlayer(playerid,string,2000,4);
CarInfo[x][Locked]=1;
return 1;
}
else
{
SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
format(string,sizeof(string),"~w~%s ~g~aufgeschlossen",GetVehicleName(i));
GameTextForPlayer(playerid,string,2000,4);
CarInfo[x][Locked]=0;
return 1;
}
}
}
}
}
}
else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
new x = IsAPlayerCar(vehicleid);
if(x != -1)
{
if(!strcmp(PlayerName[playerid],CarInfo[x][c_Owner],true))
{
GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
if(!doors)
{
SetVehicleParamsEx(vehicleid,engine,lights,alarm,1,bonnet,boot,objective);
format(string,sizeof(string),"~w~%s ~r~abgeschlossen",GetVehicleName(vehicleid));
GameTextForPlayer(playerid,string,2000,4);
CarInfo[x][Locked]=1;
return 1;
}
else
{
SetVehicleParamsEx(vehicleid,engine,lights,alarm,0,bonnet,boot,objective);
format(string,sizeof(string),"~w~%s ~g~aufgeschlossen",GetVehicleName(vehicleid));
GameTextForPlayer(playerid,string,2000,4);
CarInfo[x][Locked]=0;
return 1;
}
}
}
}
return 1;
}
stock IsAPlayerCar(vehicleid)
{
for(new i=0;i<MAX_CARS;i++)
{
if(vehicleid == CarInfo[i][c_ID])
{
return i;
}
}
return -1;
}
Die Sprache an sich ist schon relativ einfach. Man kann sich die Befehle natürlich auch umändern, so wie es in deinem Beispiel mit dem Plugin gemacht wurde, dann kommt sowas dabei raus (kann man natürlich auch sinnvoller benennen):
http://forum.sa-mp.com/showthread.php?t=255246
Wenn du PAWN nicht magst (warum?), dann kannst du dir das hier mal anschauen, vielleicht liegt dir Java mehr, falls du es inzwischen kannst:
[ PLUGIN ] [UPDATE][0.3z] Project Shoebill 1.1 - SA-MP Java Development Kit - SNAPSHOT von mk124
Ansonsten ist die Sprache wie sie ist.
Dann setzt du es zuvor wieder auf 1.
Schau mal wo das überall verwendet wird, und wo es auf 1 gesetzt wird.
Setze beim Login
RegistrationStep[playerid]=0;
Dann überspringt es das.
new string[MAX_PLAYER_NAME];
Zu
new string[256];
Da du es später auch noch verwendest.
Schau mal, bei dem Print fehlt das ini am Ende.
Wie hast du string deklariert? (new string...)
Erhöhe da ggf mal die Zahl in der Klammer.
GetPlayerName(playerid, plname, sizeof(plname));
format(string, sizeof(string),"/Accounts/%s.ini", plname);
if(fexist(string)) gPlayerAccount[playerid]=1;
else gPlayerAccount[playerid]=0;
printf("string:%s Account:%d Logged:%d", string, gPlayerAccount[playerid], gPlayerLogged[playerid]);
if(gPlayerAccount[playerid] == 1 && gPlayerLogged[playerid] == 0)
{
format(string,sizeof(string)," Willkommen zurück!\n {B0C4DE}Account: %s \n TIPP: Verwende dein Passwort nie auf anderen Servern! Du solltest es auch nicht\n an eine Zweite Person weitergeben!\n Bitte logge dich mit deinem Passwort ein...",plname);
print(string);
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{B0C4DE}Willkommen zurück auf ---{FFFFFF}",string,"Login","");
}
else if(gPlayerAccount[playerid] == 0 && gPlayerLogged[playerid] == 0)
{
new string1[250];
format(string1,sizeof(string1),"Herzlich Willkommen auf ---, um auf unserem Server spielen zu können\nbenötigst du einen Account!\nMöchtest du dir einen Account in unserer Datenbank registrieren?\nDein Nickname: %s\nBitte gebe nun dein gewolltes Passwort ein.",plname);
ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_PASSWORD,"--- Register Panel",string1,"Register","");
}
return 1;
}
Was steht im Log wenn du in den Server kommst?
format(string, sizeof(string),"/Accounts/%s.ini", plname);
Zu
format(string, sizeof(string),"/Accounts/%s.ini", plname);
if(fexist(string)) gPlayerAccount[playerid]=1;
else gPlayerAccount[playerid]=0;
Sofern du dem Buchstabe keinen Kontroll-Key zugewiesen hast (die in den Einstellungen) kannst du ihn nicht abfragen.
Es können nur diese Keys erkannt werden: http://wiki.sa-mp.com/wiki/Keys
Ändere
strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255);
Zu
strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp), 255);
Wenn es nicht geht poste nochmal den Print und wie du pKey im enum deklariert hast.