Beiträge von Tw1x

    jo, also der titel sagts: ich habe keine ahnung (auch nach 10 maligen durchlesen des wiki-artikels nciht) was die funktion mysql_retrieve_row bei abfragen bewirkt und so...
    deswegen frage ich jetzt nach 3 oder 4 tagen nachforschungsarbeit und tests mal hier im forum nach, was die funktion eigentlich GANZ GENAU macht, eben weil ich i-wie entweder ne blockade im kopf hab,wo ich was dran net versteh, oder die funktion wirklich so kompliziert is... (was ich nicht glaub)



    also, es wäre ne tolle sache wenn jmnd mir das genaustens erklären könnte


    lg Tw1x


    //EDIT: am besten wäre ein konkretes kleines beispiel... (ich kapier ja net mal, weas mit "in die nächste reihe springen" gemeint ist -.-)

    hi liebe community,


    mein 3. problem, (das mitm krankenhaus hat sich inzwischen so zwischen vorübergehender lösung und vollständiger lösung eingependelt, ich lass es so, bis ich mal rat vom freund krieg, der atm noch im urlaub ist...^^) mit dem ich jetz euch wieder konfrontiere....:


    wie kann ich beim sterben eines spielers noch das umfallen des charakters und die nach oben schwenkende kamera abwarten bevor ich ihn ins krankenhaus teleportiere? (bis jetz isses so, dass man z.b. beim hohen sturz nur ein kurzes knacken (der knochen) hört und SOFORT im krankenhaus ist und das krankenhaus sieht...)


    hinweis: ich hab ganz normal bei on player death das krankenhaus-teleportieren gescriptet...



    freue mich über JEDE art von hilfe!


    lg tw1x

    wiki.sa-mp.com wird dir helfen...


    hier ein auszug daraus:
    [q]
    Parameters:
    (modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay)
    modelid The Model for the vehicle.
    Float:X The X coordinate for the vehicle.
    Float:Y The Y coordinate for the vehicle.
    Float:Z The Z coordinate for the vehicle.
    Float:angle The facing angle for the vehicle.
    color1 The primary color ID.
    color2 The secondary color ID.
    respawn_delay The delay until the car is respawned without a driver in seconds.
    [/q]


    also siehe drittletzte und vorletzte zeile: color1 und color2...


    dann suchst du auch noch nach color ID oder so (http://wiki.sa-mp.com/wiki/Color_ID)
    und siehst: weiss = 1 also müsste es so sein z.b. für ne nrg500 bei pos 0,0,0 nach 0 gerichtet (angle) mit 1 minute respawnzeit:

    CreateVehicle(522,0,0,0,0,1,1,60);


    hoffe ich konnte dir helfen^^


    lg Tw1x

    OnPlayerSpawn()

    public OnPlayerSpawn(playerid)
    {
    if(Krankenhaus[playerid] == 1)
    {
    switch(khswitch[playerid])
    {
    case 0: //LS
    {
    SetPlayerPos(playerid,1152.5037,-1326.7557,-19.0000);
    SetPlayerCameraPos(playerid, 1211.2188, -1322.9846, 23.6346);
    SetPlayerCameraLookAt(playerid, 1210.2119, -1323.0203, 23.3768);
    }
    case 1: //SF
    {
    SetPlayerPos(playerid,-2637.7944,664.5626,-19.0000);
    SetPlayerCameraPos(playerid, -2529.6250, 652.3801, 54.7671);
    SetPlayerCameraLookAt(playerid, -2530.6294, 652.4240, 54.4917);
    }
    case 2: //LV
    {
    SetPlayerPos(playerid,1608.9064,1789.1655,-19.0000);
    SetPlayerCameraPos(playerid, 1607.7516, 1863.5873, 27.9389);
    SetPlayerCameraLookAt(playerid, 1607.7570, 1862.5786, 27.6160);
    }
    }
    return 0;
    }
    if(ErsterSpawn[playerid] == 0) //Falls der Spieler noch nicht seinen ersten Spawn hatte => Kein Krankenhaus...
    {
    ErsterSpawn[playerid]=1; //Setzt die Spieler Variable auf 1 => Erster Spawn gehabt
    PlayerColor(playerid);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,GetPVarInt(playerid,"Geld"));
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    SetPlayerCameraPos(playerid,315.8290,-1771.0876,4.7339);
    SetPlayerPos(playerid,315.8290,-1773.9100,4.7339);
    SetPlayerFacingAngle(playerid,180);
    SetCameraBehindPlayer(playerid);
    SetPVarInt(playerid,"maxcars",floatround(GetPVarInt(playerid,"Level")+0.5));
    return 1;
    }
    else
    {
    if(Krankenhaus[playerid] == 0)
    {
    switch(khspawn[playerid])
    {
    case 0:
    {
    SetPlayerPos(playerid,1176.2795,-1323.2716,14.0135);
    SetPlayerFacingAngle(playerid,270);
    SetCameraBehindPlayer(playerid);
    }
    case 1:
    {
    SetPlayerPos(playerid,-2655.3804,634.2601,14.4531);
    SetPlayerFacingAngle(playerid,180);
    SetCameraBehindPlayer(playerid);
    }
    case 2:
    {
    SetPlayerPos(playerid,1607.1523,1819.3735,10.8280);
    SetPlayerFacingAngle(playerid,0);
    SetCameraBehindPlayer(playerid);
    }
    }
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    return 0;
    }
    else
    {
    return 0;
    }
    }
    }


    gestützt auf das krankenhaus system tut hier im forum...



    //EDIT:
    das 1. switch is jetz iwie nur dazu da gewesen, dass es die kamera im krankenhaus aufs krankenhaus zeigt... aber sonst net weiter wichtig... bis auf das, das mich das übel ankotzt, dass nach 1 sekunde immer der scheiss spieler da beim class-selection spawnt.... (will eigentlich nur ein ähnliches krankenhaus-system wie auf chillrp.de:7777 (kannste dir ja kurz anschaun... wennste ansiehst, sag bescheid, dann komm ich auch drauf...)

    ne also in OnPlayerSpawn hab ich mehr als genug drin... um genau zu sein glaub ich 4 if's und 2 switch's^^


    aber jedes mal nachdem ich im krankenhaus bin spawne ich nach 1 sekunde (die sekunde hab ich selber eingestellt in nem timer, aber das spawnen nicht...) dort bei der class selection...

    hi leute,


    meine frage ist: welcher callback ist daran "schuld", wenn ich genau bei den koordinaten der class-auswahl spawne? und wie kann ich dem callback sagen, dass er mich nicht dort spawnen soll?

    dann würde ich aber - wo wir doch beim ressourcenschonen sind - das print("Chat cleared."); nur ausgeben wenn die schleife durch is


    also so:



    for(new i =0;i<100;i++)
    {
    SendClientMessage(playerid,ROT,"");
    }
    print("Chat cleared.");



    //EDIT: joah H4rd_B4se ist mir zuvorgekommen...


    lg Tw1x

    ich weiss nicht obs so gehen könnte, aber ich schreib mal drauf los^^:


    jede sekunde was neues -> nen timer erstellen mit wiederholung und 1000 ms intervall
    dann in dem public, das der timer aufruft einfach einen text formatieren mit der sekunden zahl (%i oder %d) und für den %i oder %d einfach eine PVarInt (playervariable) einfügen die jedes mal um 1 verringert wird... also ca. so:



    public timeraufruf(playerid)
    {
    new text[128];
    format(text,sizeof(text),"Du bist noch %i Sekunden im Krankenhaus!",GetPVarInt(playerid,"kh_countdown");
    GameTextforPlayer(...) //weiss jetz nicht die syntax von dem befehl, kannste ja selber machen^^
    SetPVarInt(playerid,"kh_countdown",GetPVarInt(playerid,"kh_countdown")-1);
    if(GetPVarInt(playerid,"kh_countdown") == 0)
    {
    KillTimer(kh_count[playerid]);
    GameTextforPlayer(...); //"Du wurdest entlassen." oder so ähnlich^^
    }
    }


    achja, davor (noch vorm timer-erstellen) musste natürlcih SetPVarInt(playerid,"kh_countdown",120) machen, damit auch als 1. text 120 angezeigt wird...


    und: dem timer ne id zuweisen, am besten ganz oben schon new kh_count[MAX_PLAYERS]; und dann halt für jeden player ne eigene timer-id bereithalten, dass auch theoretisch jeder spieler gleichzeitig im krankenhaus sein kann^^


    hoffe konnte dir ansätze oder sogar lösungsvorschläge liefern^^


    lg Twix

    so, hi leute,


    ich scripte jetzt seit ca. 2 wochen und habs von anfang an eigentlich ziemlich gut hingekriegt... mein 1. größeres problem hab ich selbst lösen können, aber jetzt beim krankenhaus system schaff ichs nicht das alles zu fixen, daher hab ich micht jetzt hier im samp-forum registriert und hoffe jetzt auf eure hilfe^^



    also: mein krankenhaus system liest beim playerdeath erst mal die 3 entfernungen aus (ls, sf und lv krankenhaus und gibt dann den befehl an den stock krankenhaus(playerid,id) wobei id für 0 (ls) 1 (sf) oder 2 (lv) steht (das nächstgelegenste krankenhaus eben...). daraufhin wird der spieler in den käfig unterm krankenhaus gespawnt, gefreezed und die camera auf den schriftzug des jeweiligen krankenhauses gerichtet. jetzt wird auch noch im krankenhaus stock ein timer (id: behandlung[playerid]) erstellt, 1000 ms, wiederholung true und "i" als playerid wird mit übermittelt, in dem aufgerufenen public (khhp) werden dann jede sekunde 10 hp dem toten spieler gegeben, bis dann mit dem if herausgefunden wird, ob der spieler 100 oder mehr hp besitzt. daraufhin wird nämlich der timer behandlung[playerid] gekillt und der spieler gespawnt (vorm krankenhaus...)


    was aber bis jetzt nicht funktioniert sinn die 10 hp jede sekunde/1000ms, er wird sofort nach 1 sekunde gespawnt... seit 2 tagen versuche ich das hinzubekommen und schaff es nicht...


    (vll hilft es zu wissen, dass mein kh-system orientiert an dem krankenhaus-tutorial von hier erstellt wurde... Krankenhaus hinzufügen)


    hier meine code ausschnitte:
    -----------------------------------
    ganz oben vorm main():

    //Timer
    new behandlung[MAX_PLAYERS];
    //Arrays
    new ErsterSpawn[MAX_PLAYERS];
    new Krankenhaus[MAX_PLAYERS];
    //forwards
    forward khhp(playerid);


    OnGameModeInit(): (das sinn dei käfige, in die der tote player hingespawnt wird^^)

    //Objects
    //KrankenhausKäfige
    CreateObject(19272, 1150.85, -1326.12, -20.00, 0.00, 0.00, 0.00);
    CreateObject(19272, -2640.66, 664.33, -20.00, 0.00, 0.00, 0.00);
    CreateObject(19272, 1607.38, 1790.23, -20.00, 0.00, 0.00, 0.00);


    OnPlayerConnect(...): (die variablen auf 0 setzen)

    ...
    ErsterSpawn[playerid] = 0;
    Krankenhaus[playerid] = 0;
    ...


    OnPlayerSpawn(...): (ja ich hab mein geld extra nochmal gegen hacks/cheats gesichert mit ner playervariable :thumbup: )

    public OnPlayerSpawn(playerid)
    {
    if(ErsterSpawn[playerid] == 0) //Falls der Spieler noch nicht seinen ersten Spawn hatte => Kein Krankenhaus...
    {
    ErsterSpawn[playerid]=1; //Setzt die Spieler Variable auf 1 => Erster Spawn gehabt
    PlayerColor(playerid);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,GetPVarInt(playerid,"Geld"));
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    SetPlayerCameraPos(playerid,315.8290,-1771.0876,4.7339);
    SetPlayerPos(playerid,315.8290,-1773.9100,4.7339);
    SetPlayerFacingAngle(playerid,180);
    SetCameraBehindPlayer(playerid);
    SetPVarInt(playerid,"maxcars",floatround(GetPVarInt(playerid,"Level")+0.5));
    return 1;
    }
    else
    {
    if(GetPVarInt(playerid,"entlassen") == 1)
    {
    switch(GetPVarInt(playerid,"khspawn"))
    {
    case 0:
    {
    SetPlayerPos(playerid,1176.2795,-1323.2716,14.0135);
    SetPlayerFacingAngle(playerid,270);
    SetCameraBehindPlayer(playerid);
    }
    case 1:
    {
    SetPlayerPos(playerid,-2655.3804,634.2601,14.4531);
    SetPlayerFacingAngle(playerid,180);
    SetCameraBehindPlayer(playerid);
    }
    case 2:
    {
    SetPlayerPos(playerid,1607.1523,1819.3735,10.8280);
    SetPlayerFacingAngle(playerid,0);
    SetCameraBehindPlayer(playerid);
    }
    }
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    DeletePVar(playerid,"khspawn");
    DeletePVar(playerid,"entlassen");
    return 1;
    }
    else
    {
    return 0;
    }
    }
    }


    OnPlayerDeath(...):


    public OnPlayerDeath(playerid, killerid, reason)
    {
    SendDeathMessage(killerid,playerid,reason);
    SetPVarInt(playerid,"kh",1);
    TogglePlayerControllable(playerid,0);
    ResetPlayerWeapons(playerid);
    Krankenhaus[playerid] = 1;
    new Float:distLS,Float:distSF,Float:distLV;
    distLS = GetPlayerDistanceFromPoint(playerid,1152.5037,-1326.7557,-19.0000);
    distSF = GetPlayerDistanceFromPoint(playerid,-2637.7944,664.5626,-19.0000);
    distLV = GetPlayerDistanceFromPoint(playerid,1608.9064,1789.1655,-19.0000);
    if(floatcmp(distLS,distSF)==-1)
    {
    if(floatcmp(distLS,distLV)==-1)
    {
    krankenhaus(playerid,0); //LS
    }
    else
    {
    krankenhaus(playerid,2); //LV
    }
    }
    else
    {
    if(floatcmp(distSF,distLV)==-1)
    {
    krankenhaus(playerid,1); //SF
    }
    else
    {
    krankenhaus(playerid,2); //LV
    }
    }
    return 0;
    }



    OnPlayerRequestSpawn(...): (ka ob das nicht i-wie unötig is... hab halt alles mögliche durchprobiert, dass er nicht spawnt...)


    public OnPlayerRequestSpawn(playerid)
    {
    if(GetPVarInt(playerid,"entlassen") == 0)
    {
    return 0;
    }
    else
    {
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    SpawnPlayer(playerid);
    return 1;
    }
    }



    hier mein eigenes public, das public khhp(playerid): (der timer ruft das auf)


    public khhp(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1) //Fragt ab ob der Spieler Online ist
    {
    if(Krankenhaus[playerid] == 1) //Fragt ab ob der Spieler im Krankenhaus ist
    {
    new Float:hp;
    GetPlayerHealth(playerid,hp);
    SetPlayerHealth(playerid,hp+10.0);
    hp+=10.0;
    if(hp>=100.0)
    {
    KillTimer(behandlung[playerid]);
    SetPVarInt(playerid,"entlassen",1);
    SpawnPlayer(playerid);
    }
    }
    }
    return 1;
    }



    hier mein stock krankenhaus(playerid,(krankenhaus-)id):




    stock krankenhaus(playerid,id)
    {
    SetPlayerInterior(playerid, 0); //Setzt den Interior vom Spieler auf 0 damit er was sehen kann
    switch(id)
    {
    case 0: //LS
    {
    SetPlayerPos(playerid,1152.5037,-1326.7557,-19.0000);
    SetPlayerCameraPos(playerid, 1211.2188, -1322.9846, 23.6346);
    SetPlayerCameraLookAt(playerid, 1210.2119, -1323.0203, 23.3768);
    SetPVarInt(playerid,"khspawn",0);
    }
    case 1: //SF
    {
    SetPlayerPos(playerid,-2637.7944,664.5626,-19.0000);
    SetPlayerCameraPos(playerid, -2529.6250, 652.3801, 54.7671);
    SetPlayerCameraLookAt(playerid, -2530.6294, 652.4240, 54.4917);
    SetPVarInt(playerid,"khspawn",1);
    }
    case 2: //LV
    {
    SetPlayerPos(playerid,1608.9064,1789.1655,-19.0000);
    SetPlayerCameraPos(playerid, 1607.7516, 1863.5873, 27.9389);
    SetPlayerCameraLookAt(playerid, 1607.7570, 1862.5786, 27.6160);
    SetPVarInt(playerid,"khspawn",2);
    }
    }
    behandlung[playerid] = SetTimerEx("khhp",1000,true,"i",playerid);
    }






    über jegliche art von hilfe, hinweise oder fragen usw. würde ich mich sehr freuen!


    lg Twix



    UPDATE: spawne jetzt nach 1 sekunde mit cj-skin bei dem ort wo man normal class auswählt, stehe dort für weitere 9 sekunden und spawne dann mit meinen 100 hp beim krankenhaus...