Beiträge von Blackshadowscript

    So ich bin jetzt wie folgt vorgegangen:


    OnGamodeInit:
    trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür


    Timer:
    new tmp[MAX_PLAYERS][2];
    public Explosion(playerid,objectid,objectid2)
    {
    DestroyObject(objectid);//tnt
    DestroyObject(trsodoor);//tresor
    tmp[playerid][0]=-1;//tnt
    tmp[playerid][1]=-1;//tresor
    return 1;
    }


    Mein Befehl:
    ocmd:transporttresorsprengen(playerid,params[])
    {
    tmp[playerid][0]=CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);//tnt
    tmp[playerid][1]=-1;//tresor
    SendClientMessage(playerid,rot,"Achtung geht in Deckung das TNT geht in 2 sekunden hoch!");
    SetTimerEx("Explosion",2000,0,"ddd",playerid,tmp[playerid][0],tmp[playerid][1]=-1);
    return 1;
    }


    So nur die Frage wie kann ich es nun mit ein Timer verbinden das wenn die Tür nun zerstört ist nach 3 Minuten da wieder eine Tür steht?

    tmp[playerid][0]=CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);//tnt ist das TnT und nicht die tür.
    Ich will ja durch das TnT die Tür weg machen und das es nach 3Minuten die selbe Tür wieder hin komt

    Die Tresortür wird ja mit dem Befehl gesetzt was aber nicht so gedacht war. es sollte eigentlich so sein das die Tür schon da steht und man dann mit dem Befehl die tür sprengt und nicht spawnen tut

    Habe nun das Problem das die Stahltür nicht weg geht:


    new tmp[MAX_PLAYERS][2];
    new tmt[MAX_PLAYERS][2];
    public Explosion(playerid,objectid)//wird abgerufen sobald die 2 sek um sind
    {
    DestroyObject(objectid);//zerstörst das objekt
    tmp[playerid][0]=-1;//setzt den array wieder auf -1
    tmt[playerid][0]=-1;//setzt den array wieder auf -1

    return 1;
    }


    ocmd:transporttresorsprengen(playerid,params[])
    {
    tmp[playerid][0]=CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);//speicherst das objekt in einen array nur für den spieler
    tmt[playerid][0]=CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür
    SendClientMessage(playerid,rot,"Achtung geht in Deckung das TNT geht in 2 sekunden hoch!");//nachricht wird abgegeben
    SetTimerEx("Explosion",2000,0,"dd",playerid,tmp[playerid][0]);//starte timer für 2sek und übergibst die playerid sowie die objektid an die Funktion "Explosion"
    return 1;
    }

    ich muss doch im Befehl:
    ocmd:transporttresorsprengen(playerid,params[])
    {
    SetTimer("Explosion",2000,0);
    return 1;
    }


    public Explosion(playerid,objectid)
    {
    new TNT = CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);
    new ExplosiveObject = CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);
    StopPlayerObject(playerid,2634);
    SetTimerEx("Explosion",2000,false,"i",0);
    SendClientMessage(playerid,rot,"Achtung geht in Deckung das TNT geht in ´%d´hoch!");
    DestroyObject(ExplosiveObject);
    DestroyObject(TNT);
    return 1;
    }
    aufrufen könne.

    habe es so gemacht:


    public Explosion(playerid,objectid)
    {
    CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);
    StopPlayerObject(playerid,2634);
    SetTimerEx("Explosion",2000,false,"i",0);
    SendClientMessage(playerid,rot,"Achtung geht in Deckung das TNT geht in ´%d´hoch!");
    DestroyObject(1654);
    return 1;
    }


    ocmd:transporttresorsprengen(playerid,params[])
    {
    SetTimer("Explosion",2000,0);
    return 1;
    }

    Guten Morgen ich hänge jetzt seit 22:00 Uhr an mein neues System ich komm da nicht wirklich mehr weiter.


    Es soll folgendes passieren:


    Spieler geht zum Transportertresortür und tippt: /transporttresorsprengen ein.
    Dann kommt ein Dynamit was nach 30Seckunden hoch gehen soll.


    So sieht mein code dafür aus:


    forward Explosion(playerid,objectid);


    public Explosion(playerid,objectid)
    {
    StopPlayerObject(playerid,2634);
    SetTimerEx("Explosion",2000,false,"i",0);
    SendClientMessage(playerid,rot,"Achtung geht in Deckung das TNT geht in ´%d´hoch!");
    return 1;
    }


    ocmd:transporttresorsprengen(playerid,params[])
    {
    CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);
    return 1;
    }


    also Wenn ich transporttresorsprengen eingetippt habe soll nach 30 Sekunden ein timer laufen und
    es soll dann nach den 30 Sekunden das Objekt verschwinden so das man durch gehen kann.
    Ich weiß grade nicht mehr weiter.


    Weil ich will ja in den Befehl: transporttresorsprengen den Timer von Explosion aufrufen und dann das Objekt entfernen nach dem Timer abgelaufen ist.



    Bitte um hilfe

    Die Level werden immer noch nicht nach dem ausloggen wo normal Spieler gespeichert wird gelden :(





    Hier der Code:


    enum playerInfo{
    eingeloggt,
    level,
    db_id,
    alevel,
    fraktion,
    rang,
    spawnchange
    }


    new sInfo[MAX_PLAYERS][playerInfo];


    forward OnUserCheck(playerid);


    public OnUserCheck(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)
    {
    //Registrierung
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort an:","Okay","Abbrechen");
    }
    else
    {
    //Login
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Okay","Abbrechen");
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du bist mit der ID %i verbunden.",playerid);
    SendClientMessage(playerid,rot,nachricht);
    //Login/Register:
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM user WHERE username='%s' ",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
    SendClientMessage(playerid,grün,"Willkommen auf Reallife Version 0.1.4! Wir wünschen euch ein angenehmen Spiel spaß bei uns!");
    //textdraws anzeigen:
    TextDrawShowForPlayer(playerid,Text:uhrzeitLabel);
    TextDrawShowForAll(Jahr);
    SetPlayerColor(playerid,weiß);
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    return 1;
    }


    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //Speichern level,money
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i,rang='%i',spawnchange='%i' WHERE id='%i'",sInfo[playerid][level],
    GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo,sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    resetPlayer(playerid)
    {
    for(new i=0; i<sizeof(sInfo[]); i++)
    {
    sInfo[playerid][playerInfo:i]=0;
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    for(new i=0; i<sizeof(aInfo); i++)
    {
    if(aInfo[i][id_x]==0)continue;
    if(aInfo[i][besitzer]!=sInfo[playerid][db_id])continue;
    GetVehiclePos(aInfo[i][id_x],aInfo[i][c_x],aInfo[i][c_y],aInfo[i][c_z]);
    GetVehicleZAngle(aInfo[i][id_x],aInfo[i][c_r]);
    new query[256];
    format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",aInfo[i][c_x],aInfo[i][c_y],aInfo[i][c_z],aInfo[i][c_r],aInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    DestroyVehicle(aInfo[i][id_x]);
    aInfo[i][id_x]=0;
    }
    savePlayer(playerid);
    resetPlayer(playerid);
    return 1;
    }


    public OnPasswordResponse(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //passwort Richtig
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    sInfo[playerid][fraktion] = cache_get_field_content_int(0,"fraktion",dbhandle);
    sInfo[playerid][rang] = cache_get_field_content_int(0,"rang",dbhandle);
    sInfo[playerid][spawnchange] = cache_get_field_content_int(0,"spawnchange",dbhandle);
    loadPlayerCars(playerid);


    }
    else
    {
    //Passwort Falsch
    SendClientMessage(playerid,grün,"Du hast dein Passwort falsch eingetippt. Versuche es nochmal!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    return 1;
    }


    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    SendClientMessage(playerid,grün,"Gibt bitte dein Passwort ein.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>5)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,passwort) VALUES ('%s',MD5('%s')) ",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,helblau,"Dein Passwort muss mindestens 6 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account Erstellung","Gebe bitte nun dein gewünschtes Passwort ein!","Erstellen","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }

    Wenn ich es zu:


    ocmd:autobordcomputer(playerid,params)
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)
    {
    ShowPlayerDialog(playerid,DIALOG_Autosystem,DIALOG_STYLE_TABLIST, "Autobordcomputer","Motor\tstarten\tauschalten\nlicht\tanschalten\tausschalten\ntüren\töffnen\tschliessen\nAutoparken\tparken","benutzen","abbrechen");
    SendClientMessage(playerid,grün,"Sie haben den Bordcomputer Ihres Fahrzeuges aufgerufen!");
    }
    return 1;
    }


    mache kann ich kein autobordcomputer mehr aufrufen

    Meine Befehl mit der Abfrage sieht so aus:


    ocmd:autobordcomputer(playerid,params)
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)
    {
    GetPlayerState(playerid)!=PLAYER_STATE_DRIVER
    ShowPlayerDialog(playerid,DIALOG_Autosystem,DIALOG_STYLE_TABLIST, "Autobordcomputer","Motor\tstarten\tauschalten\nlicht\tanschalten\tausschalten\ntüren\töffnen\tschliessen\nAutoparken\tparken","benutzen","abbrechen");
    SendClientMessage(playerid,grün,"Sie haben den Bordcomputer Ihres Fahrzeuges aufgerufen!");
    }
    return 1;
    }

    Mein Dialog:


    if(dialogid== DIALOG_Autosystem)
    {
    if(response)
    {
    if(listitem==0)
    {
    if(!IsPlayerInAnyVehicle(playerid))return
    SendClientMessage(playerid,rot,"Sie sind nicht im Fahrzeug");
    //motorfunktion
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)
    {
    SendClientMessage(playerid,blau,"Sie sind nicht der Fahrer dieses Fahrzeuges");
    }
    new vID=GetPlayerVehicleID(playerid), motor, licht, alarm, tueren, bonnet, boot, objective;
    //Motor an/ausschalten:
    GetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
    if(motor==1) motor = 0;
    else motor = 1;
    SetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
    SendClientMessage(playerid,blau,"Sie haben den Motor Ihres Fahrzeuges angeschlaten/ausgeschalten!");
    }
    }
    if(listitem==1)
    {
    if(!IsPlayerInAnyVehicle(playerid))return
    SendClientMessage(playerid,rot,"Sie sind nicht im Fahrzeug");
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)
    return SendClientMessage(playerid,blau,"Sie befinden sich nicht in Ihr Fahrzeug");
    new vID=GetPlayerVehicleID(playerid),
    motor,
    licht,
    alarm,
    tueren,
    bonnet,
    boot,
    objective;
    //licht an/ausschalten:
    GetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
    if(licht==1){
    licht = 0;
    }
    else
    {
    licht = 1;
    }
    SetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
    SendClientMessage(playerid,blau,"Du hast das Licht an eingeschalten/ausgeschalten");
    }
    if(listitem==2)
    {
    new motor,
    licht,
    alarm,
    tueren,
    bonnet,
    boot,
    objective;


    new vID = INVALID_VEHICLE_ID;
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Float:Pos[3];
    for(new i=0;i<MAX_VEHICLES; i++)
    {
    GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
    {
    vID = i;
    break;
    }
    }
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    vID = GetPlayerVehicleID(playerid);
    }
    if(vID == INVALID_VEHICLE_ID)
    {
    SendClientMessage(playerid, 0xFF0000FF, "Error: Nicht nahe oder in einem Fahrzeug.");
    }
    //abschliessen:
    GetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
    if(tueren==1)
    {
    tueren = 0;
    }
    else
    {
    tueren = 1;
    }
    SetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
    SendClientMessage(playerid,blau,"Sie haben die Türen Ihres Fahrzeuges abgeschlossen/aufgeschlossen!");
    }
    if(listitem==3)
    {
    new vID = GetPlayerVehicleID(playerid);
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, hellgrün, "Du bist in kein Auto!");
    for (new i = 0; i < sizeof(aInfo); i++)
    {
    if(vID == aInfo[i] [id_x])
    {
    if(aInfo[i][besitzer] == sInfo[playerid][db_id])
    {
    new query[256];
    GetVehiclePos(vID, aInfo[i][c_x],aInfo[i][c_y],aInfo[i][c_z]);
    GetVehicleZAngle(vID,aInfo[i][c_r]);
    format(query, sizeof(query), "UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",aInfo[i] [c_x],aInfo[i] [c_y],aInfo[i] [c_z],aInfo[i] [c_r],aInfo[i] [db_id]);
    mysql_function_query(dbhandle,query,false," "," ");
    SendClientMessage(playerid, hellgrün, "Du hast dein Auto geparkt.");
    return 1;
    }
    break;
    }
    }
    return SendClientMessage(playerid, hellgrün, "Sie sitzen nicht in Ihr Fahrze!");
    }
    }


    obwohl es eingentlich nicht am Dialog liegt.


    Weill Beifahrer können den Befehl ausführen und sind nicht der fahrer