Beiträge von Dom_i

    Hey Leute,


    ich möchte das man in meinem Script auch Autos von außen (sprich man muss nicht im Auo sitzen) abschließen kann.


    Dafür habe ich diesen Ansatz:


    ocmd:olock(playerid,params[])
    {
    new Float:cX,Float:cY,Float:cZ,fahrzeug;
    new vID = GetPlayerVehicleID(playerid);
    fahrzeug = GetNearestVehicle(playerid, 10);
    GetVehiclePos(fahrzeug,cX,cY,cZ);
    if(IsPlayerInRangeOfPoint(playerid,10.0,cX,cY,cZ))
    {
    if(FahrzeugInfo[fahrzeug][fz_ID] == vID)
    {
    switch(FahrzeugInfo[fahrzeug][fz_Typ])
    {
    case 0:
    {
    if(pInfo[playerid][pFraktion] == FahrzeugInfo[fahrzeug][fz_Besitzer])
    {
    switch(FahrzeugInfo[fahrzeug][fz_Lock])
    {
    case 0:
    {
    FahrzeugInfo[fahrzeug][fz_Lock] = 1;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vID, engine, lights, alarm, 1, bonnet, boot, objective);
    TextDrawSetString(TachoTueren[playerid], "~r~Abgeschlossen");
    return 1;
    }
    case 1:
    {
    FahrzeugInfo[fahrzeug][fz_Lock] = 0;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vID, engine, lights, alarm, 0, bonnet, boot, objective);
    TextDrawSetString(TachoTueren[playerid], "~g~Aufgeschlossen");
    return 1;
    }
    }
    }
    else
    {
    SCM(playerid,ROT,"Du hast keine Schlüssel!");
    return 1;
    }
    }
    case 1:
    {
    if(playerid == FahrzeugInfo[fahrzeug][fz_Besitzer])
    {
    switch(FahrzeugInfo[fahrzeug][fz_Lock])
    {
    case 0:
    {
    FahrzeugInfo[fahrzeug][fz_Lock] = 1;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vID, engine, lights, alarm, 1, bonnet, boot, objective);
    TextDrawSetString(TachoTueren[playerid], "~r~Abgeschlossen");
    return 1;
    }
    case 1:
    {
    FahrzeugInfo[fahrzeug][fz_Lock] = 0;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vID, engine, lights, alarm, 0, bonnet, boot, objective);
    TextDrawSetString(TachoTueren[playerid], "~g~Aufgeschlossen");
    return 1;
    }
    }
    }
    else
    {
    SCM(playerid,ROT,"Du hast keine Schlüssel!");
    return 1;
    }
    }
    default:
    {
    switch(FahrzeugInfo[fahrzeug][fz_Lock])
    {
    case 0:
    {
    FahrzeugInfo[fahrzeug][fz_Lock] = 1;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vID, engine, lights, alarm, 1, bonnet, boot, objective);
    TextDrawSetString(TachoTueren[playerid], "~r~Abgeschlossen");
    return 1;
    }
    case 1:
    {
    FahrzeugInfo[fahrzeug][fz_Lock] = 0;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vID, engine, lights, alarm, 0, bonnet, boot, objective);
    TextDrawSetString(TachoTueren[playerid], "~g~Aufgeschlossen");
    return 1;
    }
    }
    }
    }
    }
    }
    SCM(playerid,ROT,"Es ist kein Fahrzeug in deiner Nähe, was dir gehört!");
    return 1;
    }#



    Der Stock:


    stock GetNearestVehicle(playerid, Float:range)
    {
    new Float:p_X;
    new Float:p_Y;
    new Float:p_Z;
    new Float:Distance;
    new Float:PretendentDistance = range +1;
    new Pretendent;
    GetPlayerPos(playerid, p_X, p_Y, p_Z);
    for(new vehicleid=1; vehicleid < MAX_VEHICLES; vehicleid++)
    {
    Distance = GetVehicleDistanceFromPoint(vehicleid, p_X, p_Y, p_Z);
    if(Distance <= range && Distance <= PretendentDistance)
    {
    Pretendent = vehicleid;
    PretendentDistance = Distance;
    }
    }
    return Pretendent;
    }



    Ich denke, dass irgendwas mit dem Srock nicht stimmt bzw. meine ganze Konstruktion irgendwie nicht aufgeht! :o


    Habt ihr eine Idee? :pinch:

    Ich habe ein Vertrag-System gebastelt, welches mit PVars arbeitet (da diese in meinen Augen ihren Zweck gzt erfüllen).


    In Form von mehreren Input-Dialogen werden die "Zeilen" des Vertrages zusammengefasst und am Ende angzeigt.


    Das Funktioniert soweit auch einwandfrei.


    Sobald ich den Vertrag letztendlich annehme und er in die Datenbank gespeichert wird, ist zwar alles da (User die den Vertrag eingegangen sind und das Datum),
    jedoch fehlt der komplette Text des Vertrags!


    Hier der Abschnitt wo der Vertrag gespeichert wird:


    if(dialogid == DIALOG_VERTRAG5)
    {
    if(response)
    {
    SCM(playerid,WHITE,"Vertrag angenommen! Er wurde in der Datenbank gespeichert.");
    SCM(VertragInfo[playerid][Partner],WHITE,"Der Vertrag wurde angenommen und in der Datenbank gespeichert.");
    new gesstr[384];
    new vz1[128],vz2[128],vz3[128];
    GetPVarString(playerid,"vz1",vz1,sizeof(vz1));
    GetPVarString(playerid,"vz2",vz2,sizeof(vz2));
    GetPVarString(playerid,"vz3",vz3,sizeof(vz3));
    format(gesstr,sizeof(gesstr),"%s %s %s",vz1,vz2,vz3);
    new query[640],datum[64];
    new Year, Month, Day, Mins, Hours, Secs;
    getdate(Year, Month, Day);
    gettime(Hours,Mins,Secs);
    format(datum,sizeof(datum),"%02d/%02d/%d %02d:%02d:%02d", Day, Month, Year,Hours,Mins,Secs);
    format(query, sizeof(query), "INSERT INTO `vertraglog` (`Ersteller`, `Partner`, `Datum`, `Text`) VALUES ('%s','%s','%s','%s')",SpielerName(VertragInfo[playerid][Partner]),SpielerName(playerid),datum,gesstr);
    mysql_query(query);
    DeletePVar(VertragInfo[playerid][Partner],"vz1");
    DeletePVar(VertragInfo[playerid][Partner],"vz2");
    DeletePVar(VertragInfo[playerid][Partner],"vz3");
    VertragInfo[playerid][Zeile] = -1;
    VertragInfo[playerid][Partner] = -1;
    VertragInfo[VertragInfo[playerid][Partner]][Zeile] = -1;
    VertragInfo[VertragInfo[playerid][Partner]][Partner] = -1;
    return 1;
    }
    else
    {
    SCM(playerid,RED,"Vertrag abgebrochen!");
    SCM(VertragInfo[playerid][Partner],WHITE,"Der Vertrag wurde abgelehnt.");
    VertragInfo[playerid][Zeile] = -1;
    VertragInfo[playerid][Partner] = -1;
    VertragInfo[VertragInfo[playerid][Partner]][Zeile] = -1;
    VertragInfo[VertragInfo[playerid][Partner]][Partner] = -1;
    DeletePVar(VertragInfo[playerid][Partner],"vz1");
    DeletePVar(VertragInfo[playerid][Partner],"vz2");
    DeletePVar(VertragInfo[playerid][Partner],"vz3");
    return 1;
    }
    }



    P.S: In meiner Datenbank (Table = vertraglog) habe ich die die Column (Text nicht als VarChar, sondern als "TEXT()" angegeben!)

    Guten Abend,


    ich habe ein Problem mit meinen Objekten, undzwar dass diese nicht richtig (bzw. früh genug) "erscheinen".
    Erst wenn ich relativ nah an den Objekten bin, erscheinen sie.


    Der Nachteil ist, dass wenn man vom weiten auf ein gemapptes Gebäude schaut, es "unsichtbar" ist und erst erscheint, wenn man nah genug
    dran ist.


    Ich vermute, dass es mit der Stream_Distance zu tun hat...


    Aber wie genau ich das einstelle, weiß ich nicht :)
    (Da man auch viel falsch machen kann)


    Bilder


    schaut euch den Hintergrund (die Wand hinter der Theke) an:





    Sobald ich näher dran bin:




    Beispiel:


    ocmd:cuff(playerid,params[])
    {
    new pID,Float:x,Float:y,Float:z;
    new string[200];
    if(isPlayerInFrakt(playerid,1) ||isPlayerInFrakt(playerid,2) || isPlayerInFrakt(playerid,4))
    {
    if(sscanf(params,"u",pID))return SCM(playerid, ROT,"Benutze /cuff [id]");
    if(playerid == pID)return SCM(playerid,ROT,"Du kannst dich nicht selbst fesseln!");
    GetPlayerPos(pID,x,y,z);
    if(IsPlayerInRangeOfPoint(playerid,5,x,y,z))
    {
    if(Cuff[pID] == 0)
    {
    Cuff[pID] = 1;
    format(string, sizeof(string), "*%s hat %s Handschellen angelegt.", SpielerName(playerid),SpielerName(pID));
    MeMessage(playerid,string);
    GameTextForPlayer(pID, "~r~In Handschellen", 2500, 3);
    SetPlayerSpecialAction(pID,SPECIAL_ACTION_CUFFED);
    return 1;
    }
    SCM(playerid,ROT,"Der Spieler ist bereits gefesselt!");
    return 1;
    }
    SCM(playerid,ROT,"Du bist nicht in der Nähe des Spielers!");
    return 1;
    }
    SCM(playerid,ROT,"Du bist kein Beamter!");
    return 1;
    }


    *Alles musst du noch auf dein Fraktionssystem etc. anpassen!*


    Gruß
    Raiffel 8)

    Hey Leute,


    ich habe meinen Serveranbieter gewechselt und bin von einem Server der in Frankfurt stand, auf einen Server der mittlerweile im schönen Frankreich steht
    gewechselt.
    Die Performance und alles scheint jetzt definitv besser zu sein, jedoch habe ich nun ein Problem mit der Verbindung zwischen dem Server, einem Musikstream und dem Clienten.


    Nehmen wir nun mal Housetime.fm als Beispiel:


    Ich starte den Stream (Client side)
    Der Stream wird "ausgeführt" (ich erhalte die Meldung: Audio stream: http://listen.housetime.fm/dsl.pls)
    Es kommt keine Musik


    P.S: Wenn ich einen stream von einer Audiodatei auf meinem Server starte, wird diese problemlos abgespielt.


    Es handelt sich also lediglich um Audio Datein/Streams von externen Quellen!



    Kann es daran liegen, dass der Server außerhalb von Deutschland und somit quasi "außerhalb des Sendegebietes" von den Streams liegt und diese geblockt werden?

    Wenn du diese Nachricht ("Du hast keinen Fraktionsrang!") bekommst, ist es ziemlich eindeutig.
    pInfo[playerid][pRank] 
    ist 0.


    Möglicherweise lädst du das nicht richtig aus der Datenbank beim Login. Prüfe das mal.

    Das Problem ist, dass es bei diesem Befehl einwandfrei funktioniert:


    ocmd:members(playerid,params[])
    {
    new fID,string[128];
    fID=pInfo[playerid][pFraktion];
    if(pInfo[playerid][pFraktion] == 0) return SCM(playerid,ROT,"Du bist in keiner Fraktion!");
    SCM(playerid,gruen,"------ Fraktions-Mitglieder Online------");
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(pInfo[i][pFraktion] == fID)
    {
    format(string,sizeof(string),"Name: %s | Rang: %d",SpielerName(i),pInfo[i][pRang]);
    SCM(playerid,COLOR_YELLOW,string);
    }
    }
    }
    SCM(playerid,gruen,"-----------------------------------------------");
    return 1;
    }

    Hallo,


    ich habe ein dynamisches Rangsystem und möchte anhand des Ranges des Spielers einen individuellen Rangnamen (in der DB festgelegt) auslesen lassen.


    Das ganze sieht derzeit so aus:


    ocmd:f(playerid,params[])
    {
    if(Friedhof[playerid] > 0)return SCM(playerid, ROT,"Du bist zu Verletzt um dein Funkgerät zu benutzen!");
    if(pInfo[playerid][pFraktion] == 0)return SCM(playerid, ROT,"Du bist in keiner Fraktion!");
    if(pTie[playerid] == 1)
    {
    SCM(playerid,ROT,"Du wurdest gefesselt, du kannst nicht reden!");
    return 1;
    }
    new inputtext[128],string[256],fname[10],ausgabe[128];
    if(sscanf(params,"s",inputtext))return SCM(playerid, ROT,"/f [text]");
    switch(pInfo[playerid][pFraktion])
    {
    case 1:{fname = "LSPD";}
    case 2:{fname = "BND";}
    case 3:{fname = "Assasins";}
    case 4:{fname = "SAA";}
    case 5:{fname = "Regierung";}
    case 6:{fname = "LSMD";}
    case 7:{fname = "OAmt";}
    case 8:{fname = "LEER";}
    case 9:{fname = "SAM AG";}
    case 10:{fname = "Grove";}
    case 11:{fname = "Ballas";}
    case 12:{fname = "Terror";}
    case 13:{fname = "LCN";}
    }

    new query[256];
    mysql_query(query);
    switch(pInfo[playerid][pRank])
    {
    case 0:{return SCM(playerid,ROT,"Du hast keinen Fraktionsrang!");}
    case 1:{format(query, sizeof(query), "SELECT `Rang1` FROM `raenge` WHERE `Fraktion` = '%s'",fname);}
    case 2:{format(query, sizeof(query), "SELECT `Rang2` FROM `raenge` WHERE `Fraktion` = '%s'",fname);}
    case 3:{format(query, sizeof(query), "SELECT `Rang3` FROM `raenge` WHERE `Fraktion` = '%s'",fname);}
    case 4:{format(query, sizeof(query), "SELECT `Rang4` FROM `raenge` WHERE `Fraktion` = '%s'",fname);}
    case 5:{format(query, sizeof(query), "SELECT `Rang5` FROM `raenge` WHERE `Fraktion` = '%s'",fname);}
    case 6:{format(query, sizeof(query), "SELECT `Rang6` FROM `raenge` WHERE `Fraktion` = '%s'",fname);}
    }
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    if(rows > 0)
    {
    mysql_fetch_row(ausgabe);
    }

    if(pInfo[playerid][pFraktion] == 1)
    {
    format(string,sizeof(string),"[%s]{C30000}%s %s: {FFFFFF}%s,over.",fname,ausgabe,SpielerName(playerid),inputtext);
    }
    else
    {
    format(string,sizeof(string),"[%s]{C30000}%s %s: {FFFFFF}%s",fname,ausgabe,SpielerName(playerid),inputtext);
    }
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(pInfo[i][pFraktion] == pInfo[playerid][pFraktion])
    {
    SCM(i,0x0091FFFF,string);
    }
    }
    }
    BigearCast(playerid,string,1);
    return 1;
    }


    Das Problem ist, dass er zwar die Fraktion (fname) erkennt, jedoch den Rang nicht.


    Egal welchen Rang ich InGame habe, ich bekomme immer den return, dass ich keinen Fraktionsrang habe :/


    Habt ihr eine Idee? :O

    enum zone
    {
    gOwner,
    Float:gMinX,
    Float:gMinY,
    Float:gMaxX,
    Float:gMaxY,
    gOn,
    gStand1,
    gStand2,
    gAngreifer,
    gZeit,
    gKasse,
    gTyp,
    capture_cd
    };

    Das problem ist, dass ich es noch nicht mal Kompiliert bekomme...


    Fehler:


    error 035: argument type mismatch (argument 5)


    Diese Nachricht ist bei jeder Zeile wo ich "mysql_SetInt..." anwende :/

    Ich habe ein Problem mit der Speicherung (MySQL) von meinem Gangwar System:


    Dafür habe ich diesen Stock geschrieben:


    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }


    Die Speicherung sieht dabei so aus:


    stock SaveZones()
    {
    for(new zid=0; zid<sizeof(Zonen);zid++)
    {
    mysql_SetInt("gangwar","Owner",Zonen[zid][gOwner],"Zone",zid);
    mysql_SetInt("gangwar","Aktiv",Zonen[zid][gOn],"Zone", zid);
    mysql_SetInt("gangwar","Stand1",Zonen[zid][gStand1],"Zone", zid);
    mysql_SetInt("gangwar","Stand2",Zonen[zid][gStand2],"Zone", zid);
    mysql_SetInt("gangwar","Angreifer",Zonen[zid][gAngreifer],"Zone", zid);
    mysql_SetInt("gangwar","Zeit",Zonen[zid][gZeit],"Zone", zid);
    mysql_SetInt("gangwar","Kasse",Zonen[zid][gKasse],"Zone", zid);
    mysql_SetInt("gangwar","Typ",Zonen[zid][gTyp],"Zone", zid);
    mysql_SetInt("gangwar","Capture",Zonen[zid][capture_cd],"Zone", zid);
    mysql_SetFloat("gangwar","MinX",Zonen[zid][gMinX],"Zone", zid);
    mysql_SetFloat("gangwar","MinY",Zonen[zid][gMinY],"Zone", zid);
    mysql_SetFloat("gangwar","MaxX",Zonen[zid][gMaxX],"Zone", zid);
    mysql_SetFloat("gangwar","MaxY",Zonen[zid][gMaxY],"Zone", zid);
    }
    }


    Das Problem ist, dass er die Variable "zid" (also die Schleife der verfügbaren Zonen) anscheind nicht erkennt...


    Muss ich die Schleife anders machen? :O



    Gruß
    Raiffel