Beiträge von pierre65

    Zu SetVehicleToRespawn: http://wiki.sa-mp.com/wiki/SetVehicleToRespawn
    Statt newstate == PLAYER_STATE_ONFOOT zu benutzen hast du schon mal versucht
    oldstate == PLAYER_STATE_DRIVER zu probieren?
    Wenn das nicht geht mach doch einfach das Fahrzeug dass du respawnen willst nach 1 Sekunde respawnt wenn man draußen ist....
    CreateVehicle(/* Alle Parameter */, 1 /* Sekunden zum Respawn */); Hier siehst du die Parameter falls du die nicht weisst: http://wiki.sa-mp.com/wiki/CreateVehicle

    Hey liebe Community,


    ich habe seit einer weile das Problem das man entweder lange braucht zum respawnen, oder garnicht mehr respawnt.
    Genaue Erklärung:
    Wenn zum Beispiel mich jemand tötet, dauert es ein paar Sekunden bis Minuten bis ich überhaupt respawne, falls ich respawne...
    Sobald ich respawnt bin, bin ich dann im Krankenhaus (wie mein Skript das auch machen soll..) läuft die Zeit nun ab, lande ich vor dem Krankenhaus und sterbe und respawne dort wo meine SetSpawnInfos gesetzt sind...
    Währenddessen sieht man auch meine Leiche
    Im Spoiler sind ein Paar Beispielbilder:
    Als jemand starb sieht man die Leiche weiterhin:


    Wenn man im Krankenhaus ist, blinkt der Lebensbalken... (außerdem zu sehen das man nach 4 Minuten immer noch nicht respawnt):

    Sollte man nun respawnen geschieht folgendes und man respawnt da wo die SetPlayerInfo zuletzt gesetzt wurde:


    Mein Scriptcode bei OnPlayerDeath:

    public OnPlayerDeath(playerid, killerid, reason) {
    if ( playerid >= 0 && playerid <= MAX_PLAYERS ) {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    pInfo[playerid][pIsDead] = DEADTIME;
    pInfo[playerid][pDeathX] = x;
    pInfo[playerid][pDeathY] = y;
    pInfo[playerid][pDeathZ] = z;
    pInfo[playerid][pOnDuty] = false;
    PlayerDead[playerid] = 1;
    pInfo[playerid][pDeads] += 1;
    if(IsPlayerInGebiet(playerid) > -1) {
    new zone = IsPlayerInGebiet(playerid);
    if(Gebiete[zone][gOn] == 1) {
    if(GetPlayerTeam(playerid) - gangs == Gebiete[zone][gOwner]) { Gebiete[zone][gStand2] ++; }
    if(GetPlayerTeam(playerid) - gangs == Gebiete[zone][gAngreifer]) { Gebiete[zone][gStand1] ++; }
    }
    }
    DropWeapon(playerid); // Daran liegts nicht schon probiert...
    for(new i; i<sizeof(Gebiete); i++) { GangZoneHideForPlayer(playerid,Gebiet[i]); }
    }
    if ( killerid >= 0 && killerid <= MAX_PLAYERS ) { pInfo[killerid][pKills] += 1; }
    return 1;
    }


    Mein Scriptcode bei OnPlayerSpawn:

    public OnPlayerSpawn(playerid) {
    TextDrawHideForPlayer(playerid, LoginTextdraw);
    TogglePlayerSpectating(playerid, 0);
    UpdateZones();
    new string[255];
    TogglePlayerSpectating(playerid,0);
    TextDrawShowForPlayer(playerid,txtTimeDisp);
    TextDrawShowForPlayer(playerid,Copyright);
    gettime(hour, minute);
    SetPlayerTime(playerid,hour,minute);
    SetPlayerScore(playerid, pInfo[playerid][pLevel]);
    TextDrawShowForPlayer(playerid, BankTextdraw[playerid]);
    setBankTextdraw(playerid);
    TextDrawShowForPlayer(playerid, WantedsTextdraw[playerid]);
    format(string, sizeof string, "] %d", pInfo[playerid][pWanteds]);
    TextDrawSetString(WantedsTextdraw[playerid], string);
    UpdateTime();
    new time = pInfo[playerid][pJailed];
    if ( PlayerDead[playerid] == 1 ) {
    TogglePlayerControllable(playerid, 0);
    SetPlayerPos(playerid,1152.7338,-1315.9927,14.8653);
    SetPlayerCameraPos(playerid,1151.9376,-1356.7738,19.7350);
    SetPlayerCameraLookAt(playerid, 1153.2936,-1324.0106,14.9649);
    SetPlayerInterior(playerid, 0);
    pInfo[playerid][pDeathPickup] = CreatePickup(1254,0,pInfo[playerid][pDeathX],pInfo[playerid][pDeathY],pInfo[playerid][pDeathZ],0);
    format(string,sizeof string, " %s", PlayerName(playerid));
    pInfo[playerid][pDeathText] = Create3DTextLabel(string, error, pInfo[playerid][pDeathX],pInfo[playerid][pDeathY],pInfo[playerid][pDeathZ] + 0.3, 20.0, 0, 0);
    acceptWiederbeleben[playerid] = -1;

    for (new i=0;i<MAX_PLAYERS;i++) {
    if ( IsPlayerConnected(i) && GetPVarInt(i, "Eingeloggt") == 1 ) {
    if ( pInfo[i][pFraktion] == 4 ) {
    if ( pInfo[i][pOnDuty] == true ) {
    format(string,sizeof string, "[%s] %s ist gestorben. Nimm den Auftrag mit /accept wiederleben %d an.",getTime(),PlayerName(playerid), playerid);
    SendClientMessage(i,auftrag, string);
    }
    }
    }
    }
    return 1;
    }
    return 1;
    }


    Woran kann der Fehler liegen? 8|



    Mfg pierre65

    Der Output war nur als kleiner Debug test ob der String überhaupt übereinstimmt...
    Naja ich versuch es mal mit dem ersetzen von Zeichne...


    // Edit: Durch das ersetzen geht es auch nicht, der Server crasht so oder so wenn man ein "ß" überprüft....
    // Edit 2: Das Problem lag an "GetPVarString" und "SetPVarString" ich hab das jetzt mit einer eigenen Variable gemacht und jetzt gehts auch.

    Nene ich hab das Problem, zum Beispiel jemand erschießt mich.....
    Nun (hab ja ein Krankenhaussystem) sterbe ich garnicht richtig, Position (die erst bei OnPlayerSpawn gesetzt wird?!) ist schon gesetzt...
    Die Energieleiste oben rechts blinkt ohne Unterbrechung und erst wenn meine Zeit im Krankenhaus abgelaufen ist sterbe ich und respawne dort wo zuletzt meine SetSpawnInfos gesetzt waren!?
    Ab und zu geht das ab und zu nicht...
    // Edit: Kann auch paar Bilder zeigen, falls notwendig

    Es ging um mein Payday System, das ging nicht weil man weniger als 100$ Lohn gekriegt hat, aber er rechnet jetzt die % Zahl richtig aus danke für die Hilfe...
    Hätte noch eine Frage, weißt du vielleicht woran es liegt das man erst nach einer bestimmten Zeit oder so respawnt wenn man stirbt?
    Die HP Leiste blinkt und das dauert bis man ebend respawnt.... Woran könnt das liegen?

    Okay danke...
    Ich hab folgenden Fehler gekriegt:

    Code
    [13:35:14] [debug] Server crashed while executing rl_script.amx
    [13:35:14] [debug] AMX backtrace:
    [13:35:14] [debug] #0 native strcmp () [00406540] from samp-server.exe
    [13:35:14] [debug] #1 00021260 in public OnDialogResponse (playerid=0, dialogid=2, response=1, listitem=-1, inputtext[]=@0x001102dc "") at F:\BackUp\Desktop\GTA SA\samp_server\gamemodes\rl_script.pwn:1880
    [13:35:14] [debug] System backtrace:
    [13:35:14] [debug] #0 004061e4 in ?? () from F:\BackUp\Desktop\GTA SA\samp_server\samp-server.exe

    Hey liebe Community,


    wie die Überschrift schon sagt vermute ich mal das dass "ß" den Server zum crashen bringt.
    Das Crashdetect Plugin spuckt aus dass bei OnPlayerDialogResponse ein "strcmp" den Server zum crashen bringt...
    if ( !strcmp(string, inputtext, true) ) {
    Das ist mein Täter... Allerdings sehe ich daran keinen Fehler, die Variable string ist gesetzt und die Variable inputtext genauso,
    die stimmen auch (laut Konsolenoutput) überein.
    Allerdings sobald jemand etwas mit einem "ß" im Inputfeld (vom Dialog) eingibt, crasht der Server.
    Bei jedem anderen mit einem Input ohne eines "ß" ging es.....
    Folgender Errorcode erscheint von crashdetect:

    Code
    [12:58:10] [debug] Server crashed while executing rl_script.amx
    [12:58:10] [debug] AMX backtrace:
    [12:58:10] [debug] #0 native strcmp () [00406540] from samp-server.exe
    [12:58:10] [debug] #1 0001a5a0 in public OnDialogResponse () from rl_script.amx
    [12:58:10] [debug] System backtrace:
    [12:58:11] [debug] #0 004061e4 in ?? () from F:\BackUp\Desktop\GTA SA\samp_server\samp-server.exe


    Also vermute ich mal dass es an strcmp() bzw. an diesem "ß" liegt, kann man das irgendwie umgehen?



    Mit freundlichen Grüßen pierre65

    Installier dir mal das Plugin "crashdetect" (http://forum.sa-mp.com/showthread.php?t=262796) dann kriegst du genauere Errors wie zum Beispiel:

    Code
    [12:57:28] [debug] Server crashed while executing SCRIPTNAME.amx
    [12:57:28] [debug] AMX backtrace:
    [12:57:28] [debug] #0 native strcmp () [00406540] from samp-server.exe
    [12:57:28] [debug] #1 0001a5a0 in public OnDialogResponse () from SCRIPTNAME.amx
    [12:57:28] [debug] System backtrace:
    [12:57:29] [debug] #0 004061e4 in ?? () from F:\........\samp-server.exe


    Und dann poste mal die Errors nochmal...

    Wieso kann Pawn (die Rechnungsfunktionen) nicht 50/100 rechnen.
    Ich lasse eine Variable (in dem Fall 50) durch 100 teilen.
    Wenn ich die Variable in der Konsole ausgebe kommt 50 raus.
    Sollte ich die nun durch 100 teilen (was normalerweise 0.5 ergibt...) rechnet er 0.000 bzw. 0 aus.
    Kann man das irgendwie machen das er auch 50 geteilt durch 100 rechnen kann?
    Erst ab 100+ rechnet er wieder richtige Ergebnise und das ist.....



    Mfg pierre65

    Als *.mp3 runterladen und auf eine Webseite packen und verlinken.... Hatten wir hier vorhin schonmal, hättest einfach Suchfunktion nutzen müssen ^^

    Einzigste Möglichkeit die mir ncoh einfällt wäre:
    else if(GetVehicleParam(vehicle,MOTOR)==1) {
    ersetzen zu
    else {
    Wenn das nicht geht guck ma was GetVehicleParam(vehicle,MOTOR) überhaupt wiedergibt (per printf einfach ausgeben).