Beiträge von IPrototypeI


    Ja hab den Fehler ja nicht mehr sondern nur noch 2


    Nun gut wenn du meist du benutzt momentan die neuste version dieses plugin die R7 und dort gibt es kein mysql_query mehr sonder mysql_function_query und mysql_fetch_int gibt auch nicht mehr es heißt nun cache_get_int
    wenn du das nicht haben willst das ließ dir den vorherigen post nochmal durch von mir

    Zum ändern der Texturen gibt es die funktion SetObjectMaterial
    http://wiki.sa-mp.com/wiki/SetObjectMaterial


    mann hat auch die möglichkeit was auf Objecte drauf zu schreiben per SetObjectMaterialText
    http://wiki.sa-mp.com/wiki/SetObjectMaterialText


    Sollte man ein streamer benutzen wie das streamer plugin heißen die funktionen anders SetDynamicObjectMaterialText etc...


    Ein Tutorial zum verändern der textur findest du hier


    http://gta-sa-mp.de/forum/3-sa…aterial-von-a-z/#post6179


    Um raus zu schauen aus gebäuden muss eine gegebenheit gegeben sein und zwar das das Object von innen nach außer unsichtbar ist.
    Einfach die fenster rein setzen und einen boden mappen easy doing ^^.
    Hier mal ein beispiel:
    von außen


    in dem Object



    du musst natürlich den spieler dort rein porten in den "innenraum" den du gemappt hast

    habe ich dir schon genannt doppelt eine dialogid genutzt du kannst ja zusätzlich das crash detect plugin anschmeißen und dein skript im debugmodus kompilen ob ihrgend welche informationen ausgegeben werden.

    else if und case gehen die selben schritte durch nur ist die prozedur anders.


    beispiel bei dem rückgabe wert einer funktion.
    bei switch wird der rückgabe wert genommen und verglichen bei else if wird das ganze funktion wieder aufgerufen und der rückgabe wert erneut verglichen.


    @ Goldkiller man sollte auch beachten wann man case benutzen kann es ist schneller als else if. Aber die werte liegen im hunderstel bereich bei mehreren tausend durchgängen.


    Man kann damit sein skript "schneller" machen jedoch merkt ein spieler davon rein garnix.


    Es bedeutet das ein User ein Dialog während eines Serverrestartes geöffnet hat oder du benutzt ihrgend wo die selbe dialogid und dein skript will so gesehen zwei dialoge aufrufen. Es kann auch eine dialogid definiert sein in einem filterskript das du nutzt und die selbe dialogid benutzt du in deinem gamemode

    IPrototypeI: Endlich 18 wa? Aber übertreib es nicht so wie ich es gemacht habe.. :wacko:


    Danke euch beiden :D naja bei solch einem scheiß wetter kann man es ja nicht übertreiben naja die party muss leider noch warten bis
    zum Sommer wenigstens habe dann hoffentlich gutes wetter aber sturmfreie Bude aufjedenfall.

    Du solltest die jeweiligen hunter auch löschen sonst respawnen diese an der jeweiligen position dein problem ist es auch noch das zuweißen konstanter ids


    du kannst es so machen dann sollte es gehen
    PutPlayerInVehicle(0,CreateVehicle(425,207.5967,1970.2676,18.1989,170.5864,43,0,4),0);


    switch(playerid){
    case 1:PutPlayerInVehicle(playerid,CreateVehicle(425,207.5967,1970.2676,18.1989,170.5864,43,0,4),0);
    .....
    }
    wenn du auf deiner variante bestehen willst benutz doch switch + case ist viel schneller als ständig neue if abfragen


    ich hab dir noch eine alternative geschrieben.


    new VehicleID[MAX_PLAYERS]={-1,...};
    enum Hdata
    {
    Float:X,
    Float:Y,
    Float:Z,
    Float:R,
    bool:used,
    };


    new SpawnPoints[10][Hdata] ={
    {207.5967,1970.2676,18.1989,170.5864,false},
    {302.8576,1917.3538,18.2224,111.6347,false},
    {299.9578,1800.1853,18.2074,45.6318,false},
    {219.7984,1775.9066,18.2146,356.6694,false},
    {130.5297,1777.3433,18.2115,4.2426,false},
    {70.0847,1831.8342,18.1267,294.0165,false},
    {71.6726,1884.7916,18.1407,265.4783,false},
    {99.6341,2000.1439,18.9960,186.1364,false},
    {168.2447,1975.9928,19.1268,178.6246,false},
    {201.1181,1877.8492,18.2178,5.6423,false}
    };
    new bool:PlayerDeath[MAX_PLAYERS char];
    forward public Spawn(playerid);
    public Spawn(playerid){
    TogglePlayerSpectating(playerid,false);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(VehicleID[playerid] != -1 && PlayerDeath{playerid}){
    PlayerDeath{playerid}= false;
    PutPlayerInVehicle(playerid,VehicleID[playerid],0);
    }else if(VehicleID[playerid] != -1 && !PlayerDeath{playerid}){
    PlayerDeath{playerid} =!!TogglePlayerSpectating(playerid,true);
    SetTimerEx("Spawn",10000,false,"i",playerid);
    }
    return 1;
    }
    CMD:hunter(playerid,params[])
    {
    new bool:no;
    for(new i; i < 10; ++i){
    if(!SpawnPoints[i][used]){
    SpawnPoints[i][used] =!!SendClientMessage(playerid,-1,"Sie haben an dem Unterfight teilgenommen");
    VehicleID[playerid] = CreateVehicle(425,SpawnPoints[i][X],SpawnPoints[i][Y],SpawnPoints[i][Z],SpawnPoints[i][R],0,0,-1);
    PutPlayerInVehicle(playerid,VehicleID[playerid],0);
    no=false;
    break;
    }else no=true;
    }
    if(no)return SendClientMessage(playerid,-1,"Es ist kein Platz mehr Frei");
    return 1;
    }

    Es sollte garnix gespeichert werden zu dem du SetPVar benutzt auch zum speichern.
    Es wird zweimal MONEYS rein geschrieben es wird auch nicht unter dem namen ausgelesen.
    Am besten schaust dir nochmal ein tutorial zur benutzung von Y_INI an. Du speicherst ja nichtmal die daten ab ok bei ausladen die methode kenne
    ich mit strcmp laden aber zum abspeicher ?


    Zu dem kannst du dauch tags setzen per Y_INI INI_SetTag oder ausladen mit INI_Int etc..

    Um noch was von D0erf|er vllt zu ergänzen es ist besser in solch einem fall case zu benutzen dieses ist schneller als if oder else if
    in dem fall könntest du natürlich auch else if verwenden da die ganzen if statements nach dem zugriffen umgangen werden es ist etwas kompliziert gerade ausgedrückt möglicherweiße dazunoch ein kleines beispiel.



    if(testjob[playerid] == 1)print("1");
    else if(testjob[playerid] == 2)print("2");
    else if(testjob[playerid] == 3)print("3");


    sollte nun testjob[playerid] 2 sein so bricht er die if statements nach der 2 ab.


    Also wenn es dynamisch ist benutz doch ein array wo du die jeweilige ids speicherst vom index her um die jeweiligen koordinaten aufzurufen
    MAX_PORTS die anzahl deiner einträge maximal .
    new ValidIndex[MAX_PORTS char];
    stock GetValidTeleports()
    {
    new i,x;
    for(; i < MAX_PORTS; ++i){
    if(!TeleInfo[i][tCreated]) continue;
    ValidIndex[x] = i;
    ++x;
    }
    return 1;
    }


    Bei dem jeweiligen Teleport also bei OnDialogResponse unter dem jeweiligen Dialog die position setzen


    SetPlayerPos(playerid,TeleInfo[ValidIndex[listitem]][X],TeleInfo[ValidIndex[listitem]][Y],TeleInfo[ValidIndex[listitem]][Z]);


    veränderst du ihrgend was an den teleports löscht oder erstellst einen so lässt du die funktion neu aufrufen.



    Zu dem zweiten code was möchtest du genau bewerkstelligen damit also ihrgend ein befehl bearbeiten zu dem kannst du inputtext auch bearbeiten und brauchst kein extra string

    Also die Farbmischung passt gar nicht zusammen und es ist eindeutig zu überladen also mir gefällt es ganz und garnicht man wird doch wohl selbst wissen ob etwas gut aussieht oder nicht und wenn es einem selbst nicht gefällt dann sollte man das auch nicht hier präsentieren.