Beiträge von Bread

    Ich wollte grade ein neues Taxisystem/Job scripten. Hat soweit auch alles hin gehauen bis auf das:


    if(newstate == PLAYER_STATE_PASSENGER && IsATaxiCar(GetPlayerVehicleID(playerid)))
    {
    new TaxiDriver=99999;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i)){continue;}
    if(IsPlayerInAnyVehicle(i)){continue;}
    if(i == playerid){continue;}
    if(IsATaxiCar(GetPlayerVehicleID(i)))
    {
    if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(i))
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    TaxiDriver = i;
    break;
    }
    }
    }
    }
    if(TaxiDriver == 99999)//Dies wird immer ausgefuehrt und ich weiss nciht warum.
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_GREY,"Du musst auf einen Taxifahrer warten.");
    }
    else//if(TaxiDriver != 99999)
    {
    if(GetPlayerMoney(playerid) >= TaxiPreis[TaxiDriver])
    {
    new xString[128];
    TaxiFahrer[playerid] = TaxiDriver;
    TaxiDrivePreis[playerid] += TaxiPreis[TaxiDriver];
    format(xString,128,"~g~Fahrtkosten:~r~ %i",TaxiDrivePreis[playerid]);
    GameTextForPlayer(playerid,xString,1500,3);
    TaxiTimer[playerid] = SetTimerEx("TaxoMeter",15000,0,"ii",TaxiDriver,playerid);
    }
    else//Wenn der Spieler nicht genug Geld hat.
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_WHITE,"Du hast nicht genug Geld bei dir!");
    }
    }
    }

    Da ich gerade dabei bin ein Script zu editieren wuerd ich gern eine Admin Speed Funktion einbauen. Leider hab ich keinen plan wie so etwas funktioniert.


    Kann mir vlt. jemand Hilfestellung geben?


    (Fuer alle Flammer, ich will keinen ganzen Befehl, sondern nur hilfestellung oder halt ein Tutorial sollte einer von euch die Zeit dazu aufbringen^^)

    14 Warnings ;(

    Spoiler anzeigen

    C:\Users\N984.2\Desktop\SAMP Scripting\gne\pawno\include\b_anticheat.inc(58) : warning 201: redefinition of constant/macro (symbol "GivePlayerMoney")
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\pawno\include\b_anticheat.inc(59) : warning 201: redefinition of constant/macro (symbol "ResetPlayerMoney")
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\pawno\include\b_anticheat.inc(60) : warning 201: redefinition of constant/macro (symbol "GivePlayerWeapon")
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\pawno\include\b_anticheat.inc(61) : warning 201: redefinition of constant/macro (symbol "ResetPlayerWeapons")
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\pawno\include\b_anticheat.inc(62) : warning 201: redefinition of constant/macro (symbol "SetPlayerPos")
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\pawno\include\b_anticheat.inc(64) : warning 201: redefinition of constant/macro (symbol "SetPlayerHealth")
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\pawno\include\b_anticheat.inc(65) : warning 201: redefinition of constant/macro (symbol "SetPlayerArmour")
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\pawno\include\b_anticheat.inc(66) : warning 201: redefinition of constant/macro (symbol "SetVehiclePos")
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\gamemodes\GNE.pwn(9779) : warning 202: number of arguments does not match definition
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\gamemodes\GNE.pwn(9787) : warning 202: number of arguments does not match definition
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\gamemodes\GNE.pwn(9795) : warning 202: number of arguments does not match definition
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\gamemodes\GNE.pwn(25459) : warning 202: number of arguments does not match definition
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\gamemodes\GNE.pwn(32608) : warning 202: number of arguments does not match definition
    C:\Users\N984.2\Desktop\SAMP Scripting\gne\gamemodes\GNE.pwn(33119) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Spoiler anzeigen
    14 Warnings.

    ocmd:makeleader(playerid,params[])
    {
    new pID,string[128],string2[128],frakid,frakname[64];
    if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,DUNKELGRAU," Du bist kein Admin");
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    case 0:{frakname="Keine";}
    case 1:{frakname=frakname1;}
    case 2:{frakname=frakname2;}
    case 3:{frakname=frakname3;}
    case 4:{frakname=frakname4;}
    case 5:{frakname=frakname5;}
    case 6:{frakname=frakname6;}
    case 7:{frakname=frakname7;}
    case 8:{frakname=frakname8;}
    case 9:{frakname=frakname9;}
    case 10:{frakname=frakname10;}
    case 11:{frakname=frakname11;}
    default:{return 0;}/*Wenn die Fraktions ID keine der oben genannten ist.*/
    }
    if(sscanf(params,"ui",pID,frakid))return SendClientMessage(playerid,DUNKELGRAU,"BENUTZE: /makeleader [playerid] [Fraktions - ID]");
    {
    format(string,sizeof(string)," %s hat dich zum Leader der Fraktion %s ernannt",SpielerName(playerid),frakname);
    format(string2,sizeof(string2)," Du hast %s zum Leader der Fraktion %s ernannt",SpielerName(pID),frakname);
    SendClientMessage(pID,BLAU,string);
    SendClientMessage(playerid,BLAU,string2);
    SetPVarInt(pID,"Fraktion",frakid);
    SpielerSpeichern(pID);
    SpielerSpeichern(playerid);
    }
    return 1;
    }

    Leider kann ich dir bei deinem Problem nicht helfen, aber nenn mal den Thread um. Als ich das gesehen habe dachte ich zuerst es geht um einen weiteren schlechten Simulator von City Interaktiv und Co. ...

    Häufig treten auch Bugs auf die sich darauf zurückführen lassen, dass der Scripter nicht die Dummheit oder die Hinterhältigkeit der User berücksichtigt hat.


    So baut der Scripter in einen Pay-Befehl keine Abfrage rein ob der User einen -Betrag angegeben hat. doch ohne eine solche abfrage ist es möglich mit hilfe des Paybefehl belibig Geld von Usern zu stehlen.


    Da gilt halt: Traue niemals "roher" Nutzer eingaben^^


    Aehnlich wie bei MySQL mit dem real_escape_string, umd SQL injections zu verhindern.

    Ganz einfach man Scriptet etwas nicht 100% richtig und bugs passiern.


    Mal nen Variablennamen vertauscht, mal ne abfrage vergessen oder bestimmte dinge in SA:MP nicht beachtet und es entstehen bugs

    Also, ich habe unten in der mitte mit dem iTD-Textdraw editor 3 Textdraws central erstellt.
    Jedoch werden diese nicht angezeigt.


    Erstellen der Textdraws unter OnGameModeInit():

    Spoiler anzeigen
    SpezialChatSlot3 = TextDrawCreate(337.466613, 434.933258, "~w~_");
    TextDrawLetterSize(SpezialChatSlot3, 0.213999, 1.030665);
    TextDrawAlignment(SpezialChatSlot3, 2);
    TextDrawColor(SpezialChatSlot3, -1);
    TextDrawSetShadow(SpezialChatSlot3, 0);
    TextDrawSetOutline(SpezialChatSlot3, 1);
    TextDrawBackgroundColor(SpezialChatSlot3, 51);
    TextDrawFont(SpezialChatSlot3, 1);
    TextDrawSetProportional(SpezialChatSlot3, 1);
    /*Spezial Chat Slot 2 (Mitte)*/
    SpezialChatSlot2 = TextDrawCreate(337.500000, 420.466796, "~w~Willkommen auf ~r~SERVER_NAME");
    TextDrawLetterSize(SpezialChatSlot2, 0.213999, 1.030665);
    TextDrawAlignment(SpezialChatSlot2, 2);
    TextDrawColor(SpezialChatSlot2, -1);
    TextDrawSetShadow(SpezialChatSlot2, 0);
    TextDrawSetOutline(SpezialChatSlot2, 1);
    TextDrawBackgroundColor(SpezialChatSlot2, 51);
    TextDrawFont(SpezialChatSlot2, 1);
    TextDrawSetProportional(SpezialChatSlot2, 1);
    /*Spezial Chat Slot 1 (Ganz Oben)*/
    SpezialChatSlot1 = TextDrawCreate(336.500000, 407.400085, "~w~_");
    TextDrawLetterSize(SpezialChatSlot1, 0.213999, 1.030665);
    TextDrawAlignment(SpezialChatSlot1, 2);
    TextDrawColor(SpezialChatSlot1, -1);
    TextDrawSetShadow(SpezialChatSlot1, 0);
    TextDrawSetOutline(SpezialChatSlot1, 1);
    TextDrawBackgroundColor(SpezialChatSlot1, 51);
    TextDrawFont(SpezialChatSlot1, 1);
    TextDrawSetProportional(SpezialChatSlot1, 1);


    Anzeigen der Textdraws unter OnPlayerSpawn:

    Spoiler anzeigen

    TextDrawShowForPlayer(playerid,SpezialChatSlot1);
    TextDrawShowForPlayer(playerid,SpezialChatSlot2);
    TextDrawShowForPlayer(playerid,SpezialChatSlot3);


    Versteccken der Textdraws unter OnPlayerDeath:

    Spoiler anzeigen

    TextDrawHideForPlayer(playerid,SpezialChatSlot1);
    TextDrawHideForPlayer(playerid,SpezialChatSlot2);
    TextDrawHideForPlayer(playerid,SpezialChatSlot3);