Beiträge von Hamst0r

    BloodyEric


    Hier:


    ahhh klar, man bin ich dooof ._.
    Vielen Dank! :)) :love:


    Vielen Dank, es funktioniert endlich! :)


    Jetzt habe ich aber noch eine Frage: Warum bekomme ich einen Fehler von Crashdetect (Dem Plugin) wenn ich sterbe!?

    Code
    [15:28:59] [debug] Run time error 4: "Array index out of bounds"
    [15:28:59] [debug]  Accessing element at index 65535 past array upper bound 29
    [15:28:59] [debug] AMX backtrace:
    [15:28:59] [debug] #0 0001c8d8 in public OnPlayerDeath () from LifeofGerman-Remake.amx
    [15:28:59] [death] eLiTe... died 255


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(SpielerInfo[playerid][sEingeloggt] == true && SpielerInfo[killerid][sEingeloggt] == true && killerid != playerid)
    {
    SpielerInfo[playerid][sTode]++;
    //SpielerInfo[playerid][sTod] = 120;
    SpielerInfo[killerid][sMorde]++;
    SendClientMessage(killerid, C_Rot,"Du hast ein Verbrechen begangen (Vorsätzlicher Mord). Zeuge: Niemand");
    }
    return 1;
    }

    Erstmal danke für deine Antwort Jeffry
    So nun aber wieder zum Problem:
    Wenn ein Account vorhanden ist (Und ich nach dem Relogg dann in der DB die Postion gesetzt habe) wird das hier gepprintet:
    Details
    SetPos
    Details
    SetPos


    Wenn ich jedoch keinen habe wird das geprintet:
    Details
    SetPos


    Und dann fliege ich in die Luft. Hier mal ein Screen davon:


    mfg

    Wenn ich auf "Spawnen" bei meinen Textdraw klicke, dann werde ich in die Luft geportet. Ich finde den Fehler einfach nicht..
    Hier mal der Code: Das hier unter OnPlayerClickPlayerTextdraw else if(playertextid == SpawnButton[playerid][1])
    {
    new pPosition[4][125],Query[126];
    switch(SpawnAuswahl[playerid])
    {
    case 1:
    {
    SendClientMessage(playerid,C_Info,"INFO: Du wurdest in Las Venturas gespawnt!");
    SetPlayerPosEx(playerid,1690.5719,1452.8687,11.7662,271.0359,0,playerid+1);
    PlayerTextDrawHide(playerid,SpawnButton[playerid][0]); PlayerTextDrawHide(playerid,SpawnButton[playerid][1]);
    CancelSelectTextDraw(playerid);
    format(Query,sizeof(Query),"UPDATE _spieler SET sPosX='%.2f',sPosY='%.2f',sPosZ='%.2f',sPosA='%.2f' WHERE sName='%s'",pPosition[0],pPosition[1],pPosition[2],pPosition[3],SpielerInfo[playerid][sName]);
    mysql_query(Query);
    SpawnPlayer(playerid);
    print("LV");
    }
    case 2:
    {
    SendClientMessage(playerid,C_Info,"INFO: Du wurdest in Los Santos gespawnt!");
    SetPlayerPosEx(playerid,438.2268,-1750.1665,9.9549,221.8188,0,playerid+1);
    PlayerTextDrawHide(playerid,SpawnButton[playerid][0]); PlayerTextDrawHide(playerid,SpawnButton[playerid][1]);
    CancelSelectTextDraw(playerid);
    format(Query,sizeof(Query),"UPDATE _spieler SET sPosX='%.2f',sPosY='%.2f',sPosZ='%.2f',sPosA='%.2f' WHERE sName='%s'",pPosition[0],pPosition[1],pPosition[2],pPosition[3],SpielerInfo[playerid][sName]);
    mysql_query(Query);
    SpawnPlayer(playerid);
    print("LS");
    }
    }
    }


    und das hier dann unter OnPlayerSpawn: public OnPlayerSpawn(playerid)
    {
    if(SpielerInfo[playerid][sEingeloggt] == true)
    {
    if(IsPlayerNPC(playerid))
    {
    SpielerInfo[playerid][sEingeloggt] = true;
    SpawnPlayer(playerid);
    }
    else
    {
    SetPlayerDetails(playerid);
    print("Details");
    if(GetPlayerAdminLevel(playerid) >= 1)
    {
    TextDrawShowForPlayer(playerid, ReportTextdraw);
    UpdateReportTextdraw();
    }/*
    if(SpielerInfo[playerid][sTod] >= 1)
    {
    new str[56];
    format(str,sizeof(str),"** %s liegt schwer verletzt auf dem Boden.");
    SendRangeMessage(playerid,C_Interaktion,str,10);
    TogglePlayerControllable(playerid,false);
    ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 1);
    SetPlayerColor(playerid, C_Grau);
    }*/
    if(SpielerInfo[playerid][sPosX] == 0.0)
    {
    SpawnChange(playerid);
    }
    else
    {
    print("SetPos");
    SetPlayerPosEx(playerid,SpielerInfo[playerid][sPosX],SpielerInfo[playerid][sPosY],SpielerInfo[playerid][sPosZ],SpielerInfo[playerid][sPosA],SpielerInfo[playerid][sInterior],SpielerInfo[playerid][sVirtualWorld]);
    }
    return 1;
    }
    }
    return SetTimerEx("FixKick",1000,0,"i",playerid);
    }


    Hier meine SetPlayerPosEx Funktion: stock SetPlayerPosEx(playerid,Float:pX,Float:pY,Float:pZ,Float:pA,pInterior,pVirtualWorld)
    {
    SetPlayerInterior(playerid,pInterior);
    SetPlayerPos(playerid,pX,pY,pZ);
    SetPlayerFacingAngle(playerid,pA);
    SetPlayerVirtualWorld(playerid,pVirtualWorld);
    SetCameraBehindPlayer(playerid);
    SpielerInfo[playerid][sPosX] = pX; SpielerInfo[playerid][sPosY] = pY; SpielerInfo[playerid][sPosZ] = pZ; SpielerInfo[playerid][sPosA] = pA;
    SpielerInfo[playerid][sInterior] = pInterior; SpielerInfo[playerid][sVirtualWorld] = pVirtualWorld;
    }


    Danke schonmal :)


    Kaliber:love:

    Also ich muss sagen der GM gefällt mir garnicht.
    Abgesehen das es ein GF ist, ist die Arbeit mit MySQL bei dem Script extrem schlecht. Alleine die Funktion stock GetFrakRang(rang,id)
    {
    new query[256],Get[128];
    format(query,sizeof(query),"SELECT `rangname%i` FROM `gangrangs` WHERE `fID`='%i'",rang,id);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    } wir immer bei dem Befehl /f ausgeführt das heißt jedes mal wird ein Query an die Datenbank geschickt das total Ressourcen fressend ist.

    Ist für Loginsysteme auch nützlich, man lässt eine random Zahl generieren, speichert diese in ner variable ab, setzt sie in einen String ("Gib die zahl %d in Buchstaben an:"), und macht das in einen Dialog, als "Anti-Account-Spam-Schutz" :D


    Genau das, war meine Idee.
    Schöne Include :)