Beiträge von Pascal.

    Der Log sieht so aus:

    Es wurde folgendes geprintet,
    dabei ist der server auch abgestürzt.


    Code
    [20:59:29] OnPlayerStateChange wurde aufgerufen!
    [20:59:29] 0 ist im Auto als Fahrer
    [20:59:29] Vehicle-ID: 9
    [20:59:31] OnPlayerStateChange wurde aufgerufen!
    [21:00:11] --- Server Shutting Down.

    Hey Community!
    Anscheind wird bei mir nicht OnPlayerStateChange aufgerufen.
    Ich möchte abfragen ob er im Autohaus car ist wenn ja soll ein Dialog kommen, aber es kommt rein garnix.
    Nun habe ich versucht es zu printen leider ohne erfolg, bei dem print kam garnix raus, deshalb vermute ich dass er OnPlayerStateChange nicht aufruft.


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new vID = GetPlayerVehicleID(playerid);
    for(new i=0; i<sizeof(ahCars); i++)
    {
    if(ahCars[i][id_x]!=vID)continue;
    printf("%s ist im Autohaus car %s, id: %i drinne.",SpielerName(playerid),VehicleName[vID-400],ahCars[i][id_x]);
    SetPVarInt(playerid,"BuyCarID",i);
    new string[250];
    format(string,250,"{0089E5}Fahrzeug: {FEFEFE}%s\n{0089E5}Kaufpreis: {FEFEFE}%d$\n{0089E5}Kauflevel: {FEFEFE}%d\n\n\
    Möchten sie das Fahrzeug kaufen?",VehicleName[vID-400],ahCars[i][c_preis],ahCars[i][c_level]);
    ShowPlayerDialog(playerid,DIALOG_AHKAUFEN,DIALOG_STYLE_MSGBOX,"Autohaus",string,"Kaufen","Abbrechen");
    printf("Dialog wurde aufgerufen\n%s",string);
    break;
    }
    return 1;
    }
    return 1;
    }

    Hi, Irgendwie Funktioniert das schreiben in einer anderen zeile nicht.
    Vorher ging es aber nun habe ich auch keine ahung mehr, ich sehe dort keine Fehler.
    Der schreibt mir alles in 1 Zeile


    new string[200];
    pInfo[i][pRespekt]++;
    format(string,200,"\
    {007AFF}==========> Zahltag <==========\n\
    {007AFF}Geld: {FEFEFE}5.000$\n\
    {007AFF}Respektpunkte: {FEFEFE}%i/%i",
    pInfo[i][pRespekt],GetPlayerScore(i)*8);

    Was meinst du das mit dem Anklicken?
    if(clickedid == DeineTextdrawVariable)


    in meinem fall war es zb registerr und einloggen


    registerr = TextDrawCreate(481.000000, 294.000000, "Registrierung");
    TextDrawLetterSize(registerr, 0.449999, 1.600000);
    TextDrawTextSize(registerr, 620.500000, 14.0000);
    TextDrawAlignment(registerr, 1);
    TextDrawColor(registerr, -1061109505);
    TextDrawUseBox(registerr, true);
    TextDrawBoxColor(registerr, -1523963137);
    TextDrawSetShadow(registerr, 2);
    TextDrawSetOutline(registerr, 0);
    TextDrawBackgroundColor(registerr, 255);
    TextDrawFont(registerr, 2);
    TextDrawSetProportional(registerr, 1);
    TextDrawSetSelectable(registerr, true);


    einloggen = TextDrawCreate(528.000000, 317.187500, "Login");
    TextDrawLetterSize(einloggen, 0.380499, 1.853749);
    TextDrawTextSize(einloggen, 573.500000, 14.000000);
    TextDrawAlignment(einloggen, 1);
    TextDrawColor(einloggen, -1061109505);
    TextDrawUseBox(einloggen, true);
    TextDrawBoxColor(einloggen, -1523963137);
    TextDrawSetShadow(einloggen, 2);
    TextDrawSetOutline(einloggen, 0);
    TextDrawBackgroundColor(einloggen, 255);
    TextDrawFont(einloggen, 2);
    TextDrawSetProportional(einloggen, 1);
    TextDrawSetSelectable(einloggen, true);

    Okay, ich habe noch was aus mein damaligen Selfmade gefunden.
    Schicke dir einfach mal die Codes, vllt findest du ja was passendes.


    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid == registerr)
    {
    new string[150];
    new Spielerdatei[128];
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",SpielerName(playerid));
    if(!dini_Exists(Spielerdatei))
    {
    //Register
    format(string,150,"\
    {FAFAFA}Herzlich Willkommen auf German Reallife, {00B9FF}%s.\n\
    {FAFAFA}Bitte wähle ein Passwort um dich zu Registrieren.",SpielerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung",string,"Wählen","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Information","Information:\
    Du hast bereits ein Account klicke bitte auf ""Einloggen"".","Okay","_");
    }
    }
    if(clickedid == einloggen)
    {
    new string[150];
    new Spielerdatei[128];
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    //Login
    format(string,150,"\
    {FAFAFA}Willkommen zurück auf German Reallife, {00B9FF}%s.\n\
    {FAFAFA}Bitte gib dein Passwort ein um fortzufahren.",SpielerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",string,"Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Information","Information:\
    Dein Account wurde nicht gefunden, klicke bitte auf ""Registrierung"".","Okay","_");
    }
    }
    return 1;
    }


    Ist halt auf Dini, hatte es aber auch mal auf MySQL, habe ich aber umgeschrieben.

    Du fügst das Public ein.
    http://wiki.sa-mp.com/wiki/OnPlayerClickPlayerTextDraw


    Dort musst du abfragen auf welches Textdraw er klickt.
    bsp: Er klickt auf Registrieren dort fragst du ab ob er schon Registriert ist --> Wenn ja sag ihm er ist schon registriert.
    Wenn nein --> Gib ihn ein Dialog.
    So sagen wir mal du hast ihn DIALOG_REGISTER gezeigt, dort musst du das unter OnPlayerDialogResponse machen mit dem Registrieren.
    Sorry für die "nicht" gute erklärung.
    Aber sollte dir denke ein wenig helfen.

    Ich bin jetzt gerade sehr verwirrt, ich blicke dort einfach garnicht mehr durch.
    Da ich jetzt möchte wenn er das erste mal mit dem Flugzeug die Route geschafft hat soll er das gleiche nochmal machen
    nur mit ein Maverick.
    Wenn er die Route mit dem Maverick geschafft hat soll das beendet werden.
    Jeffry:


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if(GetPVarInt(playerid,"Prufung") == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    new string[150];
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    new vID = CreateVehicle(487,419.8472,2503.8560,17.8609,89.4706,1,1,-1);
    SetPVarInt(playerid,"Flugzeug",vID);
    SetPVarInt(playerid,"fCP",0); //Setzen Checkpoint 0 (es wird ab 0 angefangen zu zählen)
    SetPlayerRaceCheckpoint(playerid, 3,fsCP[0][fx],fsCP[0][fy],fsCP[0][fz], fsCP[1][fx],fsCP[1][fy],fsCP[1][fz], 10); //Hier wird der Checkpoint erstellt & der 2 Checkpoint auch
    TextDrawShowForPlayer(playerid, usebox3);
    TextDrawShowForPlayer(playerid, arz);
    TextDrawShowForPlayer(playerid, info1);
    format(string,150,"Fliege mit dem Maverick~n~erneut den Rundflug.");
    TextDrawSetString(info1,string);
    SetVehicleVirtualWorld(GetPVarInt(playerid,"Flugzeug"),GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,vID,0);
    SetPVarInt(playerid,"Stufe",1);
    }
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    return 1;
    }
    if(GetPVarInt(playerid,"Prufung") == 1)
    {
    if(GetPVarInt(playerid,"Stufe") == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    SetPVarInt(playerid, "fCP", 0);
    new string[128];
    format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
    SCM(playerid,COLOR_GRAU,string);
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
    SetPlayerVirtualWorld(playerid,0);
    SetPVarInt(playerid,"Prufung",0);
    SetPVarInt(playerid,"Flugschein",1);
    DisablePlayerRaceCheckpoint(playerid);
    SavePlayer(playerid);
    SetPVarInt(playerid,"Stufe",0);
    }
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    return 1;
    }
    return 1;
    }
    DisablePlayerRaceCheckpoint(playerid);
    return 1;
    }

    Du musst abfragen ob der Spieler bereits ein Job hat.
    Ich weiß nicht wie du deine Spielerdaten heißen aber mache dir ein Beispiel:


    dcmd_job(playerid,params[])
    {
    #pragma unused params
    if(pInfo[playerid][pJob] >0)return SCM(playerid,COLOR_GRAU,"Du hast bereits ein Job.");
    if(IsPlayerInRangeOfPoint(playerid,4.0,1419.4509,-1001.0847,-17.3952))
    {
    ShowPlayerDialog(playerid, DIALOG_JOB, DIALOG_STYLE_LIST, "JobMenu","Müllmann\nTaschendieb\nStraßenreiniger\nWaffendealer\nDrogendealer\nFarmer\nPilot\nHure\nHolzfäller\nTaxifahrer\nJob kündigen","Auswählen", "Abbrechen");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Hier bekommst du keinen Job!");
    }
    return 1;
    }


    Hinzugefügt wurde
    if(pInfo[playerid][pJob] >0)return SCM(playerid,COLOR_GRAU,"Du hast bereits ein Job.");

    ocmd:clear(playerid,params[])
    {
    if(GetPVarInt(playerid,"Fraktion")== 1 || GetPVarInt(playerid,"Fraktion")== 4 || GetPVarInt(playerid,"Fraktion")== 2)
    {
    new pID,vehicleid = GetPlayerVehicleID(playerid);
    if(IsPlayerInRangeOfPoint(playerid,5.0,1481.0104,-1778.0242,3288.7859) || IsPlayerInRangeOfPoint(playerid,5.0,242.5531,1861.5344,14.0840) || IsACopCar(vehicleid)){
    {
    new string[128],sendername[MAX_PLAYER_NAME],name32[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(sscanf(params,"u",pID))return SCM(playerid,COLOR_FADE3,"/clear [spieler]");
    GetPlayerName(pID,name32,sizeof(name32));
    if(!IsPlayerConnected(pID))return SCM(playerid,RED,"Spieler ist Offline!");
    if(GetPVarInt(pID,Wanted) <1)return SCM(playerid,RED,"Der Spieler hat keine Wanteds!");
    format(string, sizeof(string), "Du hast die Strafakte von %s gelöscht!",name32);
    SCM(playerid,ROT, string);
    format(string, sizeof(string), "Officer %s hat deine Wanteds gelöscht!",sendername);
    SCM(pID,ROT, string);
    format(string,sizeof(string),"HQ: %s hat die Strafakte von %s gelöscht.",sendername,name32);
    StaatCast(string);
    SetPVarInt(pID,"Wanted",0);
    TextDrawHideForPlayer(pID,wanteddraw[pID]);
    return TextDrawHideForPlayer(pID,wantedstern);
    }
    else return SCM(playerid,RED,"Du bist nicht am Clearpunkt/in einem Streifenwagen!");
    }
    return SCM(playerid,RED,"Du bist kein Beamter!");
    }