Das Script-Fehler-Spiel


  • X+= (3 * floatsin(-A, degrees));
    Y+= (3 * floatcos(-A, degrees));



    public OnPlayerSpawn(playerid)
    {
    SetTimerEx("speedo",250,0,"i",playerid);
    return 1;
    }

    forward speedo(playerid);
    public speedo(playerid)
    {
    SetTimerEx("speedo",250,0,"i",playerid);
    if(!IsPlayerInAnyVehicle(playerid)) return 0;
    new formspeed[128],gpspe;
    gpspe = GetPlayerSpeed(playerid,true);
    format(formspeed,128,"%d km/h",gpspe);
    TextDrawSetString(txtdraw[3][playerid],formspeed);
    if(gpspe > 0 && gpspe < 80) TextDrawColor(txtdraw[3][playerid],COLOR_WHITE);
    if(gpspe > 80 && gpspe < 150) TextDrawColor(txtdraw[3][playerid],COLOR_YELLOW);
    if(gpspe > 150)
    {
    TextDrawColor(txtdraw[3][playerid],COLOR_RED);
    if(GetPlayerWantedLevel(playerid) == 0) SetWantedLevel(playerid,1);
    }
    TextDrawShowForPlayer(playerid,txtdraw[3][playerid]);
    return 1;
    }

    logischer fehler, Textdraws definiert, Farben valid
    /e: GetPlayerSpeed definiert, gibt km/h als int zurück, SetWantedLevel auch

    Einmal editiert, zuletzt von Trooper[Y] ()

  • der timer wird zu oft ausgeführt also jedes mal wenn einer stirbt wird der timer erneut aufgerufen. führt zu haufen resourcenverbrauch und möglicherweise zu laags und absturz.


    stock VehToPoint(vehid,Float:Range,Float:pX,Float:pY,Float:pZ)
    {
    new Float:minX,Float:maxX,Float:minY,Float:maxY,Float:minZ,Float:maxZ;
    minX = pX-Range; minY = pY-Range; minZ = pZ-Range;
    maxX = pX+Range; maxY = pY+Range; maxZ = pZ+Range;

    new Float:vX,Float:vY,Float:vZ;
    GetVehiclePos(vehid,vX,vY,vZ);
    if((vX <= minX && vX >= maxX) && (vY <= minY && vY >= maxY) && (vZ <= minZ && vZ >= maxZ)) { return 1; }
    return 0;
    }

  • (vY <= minY && vY >= maxY sinnlos so, beides geht ja eh nich gleichzeitig


    stock GetPLSpeed(playerid,bool:kmh)
    {
    new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
    if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else GetPlayerVelocity(playerid,Vx,Vy,Vz);
    rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
    return kmh?floatround(rtn * 100 * 1.81):floatround(rtn * 100);
    }

  • naja es ist kein fehler der speed ist nur nur anders da du 1.81 benutzt statt 1.61



    GetPlayerName(playerid,pn3,sizeof(pn3));
    for(new c = 0; c <MaxVehPerPlayer;c++)
    {
    if(Dtdc_Player[playerid][Car][code=c] == MaxVehicle +1)
    {
    carslot = c;
    break;
    }
    }
    if(carslot == MaxVehicle +1)
    {
    GetPlayerName(playerid,pn3,sizeof(pn3));
    SendClientMessage(playerid,COLOR_GREY," Du kannst keine weiteren Autos kaufen!");
    format(string,sizeof(string)," Der Spieler %s hat dein Verkaufs-Angebot abgelehnt!",pn3);
    SendClientMessage(Dtdc_Player[playerid][Seller],COLOR_GREY,string);
    return 1;
    }
    if(GetPlayerMoney(playerid)>Dtdc_Player[playerid][SellerMoney])
    {
    GetPlayerName(playerid,pn3,sizeof(pn3));
    format(string,sizeof(string)," Du hast nicht genug Geld! (Preis:%d$)",Dtdc_Player[playerid][SellerMoney]);
    SendClientMessage(playerid,COLOR_GREY,string);
    format(string,sizeof(string)," Der Spieler %s hat dein Verkaufs-Angebot abgelehnt!",pn3);
    SendClientMessage(Dtdc_Player[playerid][Seller],COLOR_GREY,string);
    return 1;
    }
    GetPlayerName(playerid,pn3,sizeof(pn3));
    format(string,sizeof(string)," Der Spieler %s hat dein Verkaufs-Angebot (%d$) angenommen! Die Fahrzeugpapiere sind nun auf seinem Namen umgeschrieben!",pn3,Dtdc_Player[playerid][SellerMoney]);
    SendClientMessage(Dtdc_Player[playerid][Seller],COLOR_YELLOW,string);
    GetPlayerName(Dtdc_Player[playerid][Seller],pn3,sizeof(pn3));
    format(string,sizeof(string)," Du hast das Verkaufs-Angebot (%d$) von %s angenommen! Die Fahrzeugpapiere vom %s sind nun auf seinem Namen umgeschrieben!",Dtdc_Player[playerid][SellerMoney],pn3,Dtdc_CarName[Dtdc_Car[carid][cModel]-400]);
    SendClientMessage(playerid,COLOR_YELLOW,string);


    Dtdc_PlayerToPlayerSell(playerid,Dtdc_Player[playerid][Seller],carslot,carid,Dtdc_Player[playerid][SellerMoney]);


    return 1;


    alles definierd etc. nur ein logic fehler

  • if(GetPlayerMoney(playerid)>Dtdc_Player[playerid][SellerMoney]) andersrum <


    public OnPlayerText(playerid, text[])
    {
    new formmsg[256];
    if(GetPVarInt(playerid,"iscop") == 1)
    {
    format(formmsg,256,"[Funk] %s",text);
    for(new sendto=0;sendto!=slots;sendto++) if(IsPlayerConnected(sendto) && GetPVarInt(sendto,"iscop") == 1 && GetPVarInt(playerid,"folgen") == GetPVarInt(sendto,"folgen") && sendto != playerid) SendClientMessage(sendto,COLOR_FUNK,formmsg);
    return SendClientMessage(playerid,COLOR_GREEN,"Roger");
    }
    else
    {
    GetPlayerName(playerid,player_name[playerid],16);
    format(formmsg,256,"%s: %s",player_name[playerid],text);
    new Float:close[3];
    GetPlayerPos(playerid,close[0],close[1],close[2]);
    for(new sendto=0;sendto!=slots;sendto++) if(IsPlayerConnected(sendto) && IsPlayerInRangeOfPoint(sendto,20.0,close[0],close[1],close[2]) && sendto != playerid) SendClientMessage(sendto,COLOR_GREY,formmsg);
    return SendClientMessage(playerid,COLOR_GREEN,"Roger");
    }
    }
    alles definiert, logik

  • public OnPlayerText(playerid, text[])
    OnPlayerText gibt immer erst das eingegebene zurück und dann den rest, in diesem Fall den Text an die Cops. Somit bringt die Funktion nix, auser du setzt ganz unten "return 0;" hin ;)


    Mein Fehler, ist nen Logik fehler:

    public OnPlayerUpdate(playerid)
    {
    new newkeys,l,u;
    GetPlayerKeys(playerid, newkeys, l, u);
    new i;
    if(Holding(KEY_FIRE))
    {
    if(GetPlayerWeapon(playerid) == 42)
    {
    for(i = 0; i<MaxFire; i++)
    {
    if(IsValidFire(i))
    {
    if(PlayerFaces(playerid, FirePos[i][0], FirePos[i][1], FirePos[i][2], 1) && IsPlayerInRangeOfPoint(playerid, 4, FirePos[i][0], FirePos[i][1], FirePos[i][2]))
    {
    FireHealth[i]-=2;
    if(FireHealth[i] <= 0)
    {
    DeleteFire(i);
    CallRemoteFunction("OnFireDeath", "dd", i, playerid);
    }
    }
    }
    }
    }
    }
    return 0;
    }

  • OnPlayerUpdate darf nicht 0 zurückgeben, da der Spieler sonst nicht für andere synchronisiert wird.


    Ich habe jetzt aber keinen Fehlercode. Darf jemand anders was posten.


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------


  • #if defined LOCAL
    #define SQL_HOST /* "localhost"*/ "188.40.201.119"
    #define SQL_DB /* "MultiReallifeServer" */"Lokalserver"


    #else


    #define SQL_HOST "localhost"//"188.40.201.119"
    #define SQL_DB "MultiReallifeServer" //"Lokalserver"

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."

  • Atrox:
    Komplett andersrum, anstatt bei local die Ip, muss da localhost hin, usw ;)
    Fehler kommt gleich.


    //EDIT:
    new value = 50;
    GivePlayerMoney(playerid, -value);
    new revalue = value/2;
    SendRCON("gmx");
    //Im weiteren Verlauf
    GivePlayerMoney(playerid, revalue);


    Alles richtig und definiert, Logikfehler..
    MfG
    Maxx

  • Nö.
    Mit local ist in dem Fall mein Homepc gemeint, da verbinde ich mich mit dem externen Server, jedoch mit der DB Lokalserver.
    Wenn ich jedoch mein Script hochlade, verbinde ich mich mit localhost und mit der richtigen Tabelle.


    Tipp: Es kommt ein Syntaxerror!

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."

  • Das macht gar kein Sinn.


    new aArray[ ] = { 7 , 18 , 0xFF , 0b01011 , 154 , 1390 };
    {
    for(new i = sizeof( aArray ) ; i > 0 ; i++) {
    printf("%d",aArray[i]);
    }


    }

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."