Ein & Ausgänge mit ENTER [PROBLEM]

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag liebe Breadfisher,


    ich hab eine Art Dynamic Businesssystem und habe ein Problem mit meinen Ein & Ausgänge mit der Enter - Taste.
    Beim Eingang ist es kein Problem, da funktioniert es, aber wenn ich wieder rausmöchte funktioniert es nicht mehr.


    Hier mal der Code:


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys&16){ //FUNKTIONIERT
    for(new i = 1; i <MAX_STAATSGEBAEUDE; i++){
    if(IsPlayerInRangeOfPoint(playerid,5,StaatsInfo[i][PosX],StaatsInfo[i][PosY],StaatsInfo[i][PosZ])){
    new stunde, minute, sekunde;
    gettime(stunde, minute, sekunde);
    if(stunde >= StaatsInfo[i][OpenTime] && stunde < StaatsInfo[i][CloseTime]){
    new innenraum = StaatsInfo[i][Interior];
    SetPlayerPos(playerid,GInt[innenraum][SpawnX],GInt[innenraum][SpawnY],GInt[innenraum][SpawnZ]);
    SetPlayerInterior(playerid,GInt[innenraum][Int]);
    SetPlayerVirtualWorld(playerid,-1);
    inStaatsGebaeude[playerid] = i;
    }
    else{
    SendClientMessage(playerid,ROT,"FEHLER:Dieses Staatsgebaeude ist zurzeit geschlossen!");
    }
    }
    }
    }
    if(newkeys&16){ //FUNZT NED
    if(inStaatsGebaeude[playerid] == -1){
    new i = inStaatsGebaeude[playerid];
    new Innenraum = StaatsInfo[i][Interior];
    new name[MAX_PLAYER_NAME];
    if(IsPlayerInRangeOfPoint(playerid,10,GInt[Innenraum][SpawnX],GInt[Innenraum][SpawnY],GInt[Innenraum][SpawnZ])){
    GetPlayerName(playerid,name,sizeof name);
    SetPlayerPos(playerid,StaatsInfo[i][PosX],StaatsInfo[i][PosY],StaatsInfo[i][PosZ]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    inStaatsGebaeude[playerid] = -1;
    }
    }
    }
    return 1;
    }


    Wenn ich per Befehle rausmöchte, funkitoniert es ebenfalls.
    Code:


    ocmd:exit(playerid,params[])
    {
    if(inStaatsGebaeude[playerid] == -1)return SendClientMessage(playerid,ROT,"FEHLER:Du bist in keinem Laden!");
    new i = inStaatsGebaeude[playerid];
    new Innenraum = StaatsInfo[i][Interior];
    if(IsPlayerInRangeOfPoint(playerid,10,GInt[Innenraum][SpawnX],GInt[Innenraum][SpawnY],GInt[Innenraum][SpawnZ])){
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    SetPlayerPos(playerid,StaatsInfo[i][PosX],StaatsInfo[i][PosY],StaatsInfo[i][PosZ]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    inStaatsGebaeude[playerid] = -1;
    }
    return 1;
    }


    Hoffe mir wird geholfen!


    Danke im vorraus.

  • Versuch es mal mit einem else


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys&16){ //FUNKTIONIERT
    for(new i = 1; i <MAX_STAATSGEBAEUDE; i++){
    if(IsPlayerInRangeOfPoint(playerid,5,StaatsInfo[i][PosX],StaatsInfo[i][PosY],StaatsInfo[i][PosZ])){
    new stunde, minute, sekunde;
    gettime(stunde, minute, sekunde);
    if(stunde >= StaatsInfo[i][OpenTime] && stunde < StaatsInfo[i][CloseTime]){
    new innenraum = StaatsInfo[i][Interior];
    SetPlayerPos(playerid,GInt[innenraum][SpawnX],GInt[innenraum][SpawnY],GInt[innenraum][SpawnZ]);
    SetPlayerInterior(playerid,GInt[innenraum][Int]);
    SetPlayerVirtualWorld(playerid,-1);
    inStaatsGebaeude[playerid] = i;
    }
    else{
    SendClientMessage(playerid,ROT,"FEHLER:Dieses Staatsgebaeude ist zurzeit geschlossen!");}
    }else{
    if(newkeys&16){ //FUNZT NED
    if(inStaatsGebaeude[playerid] == -1){
    new i = inStaatsGebaeude[playerid];
    new Innenraum = StaatsInfo[i][Interior];
    new name[MAX_PLAYER_NAME];
    if(IsPlayerInRangeOfPoint(playerid,10,GInt[Innenraum][SpawnX],GInt[Innenraum][SpawnY],GInt[Innenraum][SpawnZ])){
    GetPlayerName(playerid,name,sizeof name);
    SetPlayerPos(playerid,StaatsInfo[i][PosX],StaatsInfo[i][PosY],StaatsInfo[i][PosZ]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    inStaatsGebaeude[playerid] = -1;
    }
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen
    Exqool

  • Evtl. so?

    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == 16){ //FUNKTIONIERT
    for(new i = 1; i <MAX_STAATSGEBAEUDE; i++){
    if(IsPlayerInRangeOfPoint(playerid,5,StaatsInfo[i][PosX],StaatsInfo[i][PosY],StaatsInfo[i][PosZ])){
    new stunde, minute, sekunde;
    gettime(stunde, minute, sekunde);
    if(stunde >= StaatsInfo[i][OpenTime] && stunde < StaatsInfo[i][CloseTime]){
    new innenraum = StaatsInfo[i][Interior];
    SetPlayerPos(playerid,GInt[innenraum][SpawnX],GInt[innenraum][SpawnY],GInt[innenraum][SpawnZ]);
    SetPlayerInterior(playerid,GInt[innenraum][Int]);
    SetPlayerVirtualWorld(playerid,-1);
    inStaatsGebaeude[playerid] = i;
    }
    else{
    SendClientMessage(playerid,ROT,"FEHLER:Dieses Staatsgebaeude ist zurzeit geschlossen!");
    }
    }
    }
    }
    if(newkeys == 16){ //FUNZT NED
    if(inStaatsGebaeude[playerid] == -1){
    new i = inStaatsGebaeude[playerid];
    new Innenraum = StaatsInfo[i][Interior];
    new name[MAX_PLAYER_NAME];
    if(IsPlayerInRangeOfPoint(playerid,10,GInt[Innenraum][SpawnX],GInt[Innenraum][SpawnY],GInt[Innenraum][SpawnZ])){
    GetPlayerName(playerid,name,sizeof name);
    SetPlayerPos(playerid,StaatsInfo[i][PosX],StaatsInfo[i][PosY],StaatsInfo[i][PosZ]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    inStaatsGebaeude[playerid] = -1;
    }
    }
    }
    return 1;
    }


    Ich weis nicht ob das so sein soll, aber wenn Du


    new i = inStaatsGebaeude[playerid];
    i wäre in dem Fall = -1;
    Da Du ja vorher abgefragt hast ob der Wert auf -1 steht..
    Der Wert wird jedenfalls nicht verändert.


    Und dann
    new Innenraum = StaatsInfo[i][Interior];
    Da wäre es dann so

    Code
    StaatsInfo[-1][Interior];


    Ich hoffe Du verstehst was ich meine?



    Greetz
    #else


  • Quelle: wiki.sa-mp.com


    Heißt soviel wie:


    if (newkeys == KEY_FIRE) ist FALSCH


    if (newkeys & KEY_FIRE) ist RICHTIG



    MfG