GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: kriszrap - 2014. április 19. - 21:30:22

Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 19. - 21:30:22
Sziasztok!
Valamiért a kodóm nem rakja animba:(((
 

public OnPlayerUpdate(playerid)
{
    if(IsPlayerConnected(playerid))
{
        new Float:Elete;
GetPlayerHealth(playerid, Elete);
if(Elete <= 30)
{
    if(pInfo[playerid][serult] == false)
    {
       cmd_me(playerid, \"összeesik\");
       SetPlayerDrunkLevel(playerid, 6);
                ApplyAnimation(playerid, \"CRACK\", \"crckdeth2\", 4.1, 0, 1, 1, 1, 1, 1);
       SendClientMessage(playerid, COLOR_RED, \"Megsérültél, hívj mentõt! ((/104))\");
       pInfo[playerid][serult]=true;
                TogglePlayerControllable(playerid, false);
   }
}
return 1;
}

 
Valamiért ha 30 nál van a hp nem rakja animba:((
Miért?
Cím: animba esés 30 hpnál
Írta: doboka98 - 2014. április 19. - 21:36:35
Talán mert a pInfo[playerid][serult] változónak mindig true értéke van.
Cím: animba esés 30 hpnál
Írta: Dfoglalo - 2014. április 19. - 21:37:52
Itt csak egy elágazást látok, amely a 30 hp csekkolás és az animba esés közben van:
 
if(pInfo[playerid][serult] == false){

 
Egyáltalán elvégzi az ezen elágazás igaz ágán lévõ dolgokat? Mert ha nem, lehet, hogy ez a probléma. Csekkolhatod pl. egyszerû printes debuggal:
 
public OnPlayerUpdate(playerid)
{
        if(IsPlayerConnected(playerid))
        {
                print(\"Asd0\"); // Floodolni fogja, szóval nem fontos, elvégre csak-csak lefut idáig, ugyanis minden bizonnyal csatlakozva van a játékos. Szóval akár le is hagyható.
                new Float:Elete;
                GetPlayerHealth(playerid, Elete);
                if(Elete <= 30)
                {
                    print(\"Asd1\");
                    if(pInfo[playerid][serult] == false)
                    {
                            print(\"Asd2\");
                            cmd_me(playerid, \"összeesik\");
                            SetPlayerDrunkLevel(playerid, 6);
                                ApplyAnimation(playerid, \"CRACK\", \"crckdeth2\", 4.1, 0, 1, 1, 1, 1, 1);
                            SendClientMessage(playerid, COLOR_RED, \"Megsérültél, hívj mentõt! ((/104))\");
                            pInfo[playerid][serult]=true;
                            TogglePlayerControllable(playerid, false);
                        }
                        print(\"Asd3\"); // Szükségtelennek találhatod, elvégre az elágazás elõtt is tesztelünk, de van olyan hiba, hogy idáig el sem fut a kód. Magam sem tudom, hogy miért, de már találkoztam jómagam is ilyennel.
                }
                print(\"Asd4\"); // Szükségtelennek találhatod, elvégre az elágazás elõtt is tesztelünk, de van olyan hiba, hogy idáig el sem fut a kód. Magam sem tudom, hogy miért, de már találkoztam jómagam is ilyennel.
                return 1;
}

 
Na és ezen asdokból melyeket írja ki? Amúgy szerintem felesleges updatenél, elég timerrel, bár ki tudja... Jó itt is.


Amúgy lehet, hogy csak szimplán nem játssza le az animot. Tisztítsd a játékos animait, vagy indítsd el kétszer. Hátha. Amúgy ha nem az elágazásokkal van a baj, hanem egyszerûen nem játssza le, az asszem azért van, mert nem tölti be õket a játékos számára az anim könyvtárból, vagy valami ilyesmi... Áh, én ehhez nem értek :D
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 19. - 21:42:40
az elágazások jók:((
mert megkapom az üzenetet meg minden csak anim nincs:(((.
akkor meg próbálom tisztítani és úgy.
 

ClearAnimations(playerid);
ApplyAnimation(playerid, \"CRACK\", \"crckdeth2\", 4.1, 0, 1, 1, 1, 1, 1);

 
igy is semmi:((
Cím: animba esés 30 hpnál
Írta: Dfoglalo - 2014. április 19. - 21:51:21
Nálam pedig bejött. Dupla indítás? Azt is írtam. Csak mert amikor az alap anim fs-t használom, sokszor csak a második parancs beírásra indul az anim. Amúgy ezt azelõre  anim betöltõs dolgot még itt az egyik témában olvastam régebben, ha akarod, keresd ki, tuti megvan még valahol.
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 19. - 21:55:30
Szerek.:
igy sikerült:
 

if(Elete <= 30)
{
    SetPlayerDrunkLevel(playerid, 6);
      ApplyAnimation(playerid, \"CRACK\", \"crckdeth2\", 4.1, 0, 1, 1, 1, 1, 1);
    if(pInfo[playerid][serult] == false)
    {
       cmd_me(playerid, \"összeesik\");
       SendClientMessage(playerid, COLOR_RED, \"Megsérültél, hívj mentõt! ((/104))\");
       pInfo[playerid][serult]=true;
                TogglePlayerControllable(playerid, false);
   }
}

 
kis off melyik az az anim amikor terdel és fogja a hasát??
Cím: animba esés 30 hpnál
Írta: KovaNovik - 2014. április 20. - 08:19:33
1. Elõ kell tölteni mindig az animációs könyvtárakat, mielõtt animot használsz.
 

public OnPlayerConnect(playerid)
{
new AnimKonyvt[][] = //129 db van
{\"AIRPORT\",\"Attractors\",\"BAR\",\"BASEBALL\",\"BD_FIRE\" \"BEACH\",\"benchpress\",\"BF_injection\",\"BIKED\",\"BIKEH\",
\"BIKELEAP\",\"BIKES\",\"BIKEV\",\"BIKE_DBZ\",\"BLOWJOBZ\",\"BMX\",\"BOMBER\",\"BOX\",\"BSKTBALL\",\"BUDDY\",\"BUS\",\"CAMERA\",
\"CAR\",\"CARRY\",\"CAR_CHAT\",\"CASINO\",\"CHAINSAW\",\"CHOPPA\",\"CLOTHES\",\"COACH\",\"COLT45\",\"COP_AMBIENT\",\"COP_DVBYZ\",
\"CRACK\",\"CRIB\",\"DAM_JUMP\",\"DANCING\",\"DEALER\",\"DILDO\",\"DODGE\",\"DOZER\",\"DRIVEBYS\",\"FAT\",\"FIGHT_B\",\"FIGHT_C\",
\"FIGHT_D\",\"FIGHT_E\",\"FINALE\",\"FINALE2\",\"FLAME\",\"Flowers\",\"FOOD\",\"Freeweights\",\"GANGS\",\"GHANDS\",\"GHETTO_DB\",
\"goggles\",\"GRAFFITI\",\"GRAVEYARD\",\"GRENADE\",\"GYMNASIUM\",\"HAIRCUTS\",\"HEIST9\",\"INT_HOUSE\",\"INT_OFFICE\",
\"INT_SHOP\",\"JST_BUISNESS\",\"KART\",\"KISSING\",\"KNIFE\",\"LAPDAN1\",\"LAPDAN2\",\"LAPDAN3\",\"LOWRIDER\",\"MD_CHASE\",
\"MD_END\",\"MEDIC\",\"MISC\",\"MTB\",\"MUSCULAR\",\"NEVADA\",\"ON_LOOKERS\",\"OTB\",\"PARACHUTE\",\"PARK\",\"PAULNMAC\",\"ped\",
\"PLAYER_DVBYS\",\"PLAYIDLES\",\"POLICE\",\"POOL\",\"POOR\",\"PYTHON\",\"QUAD\",\"QUAD_DBZ\",\"RAPPING\",\"RIFLE\",\"RIOT\",
\"ROB_BANK\",\"ROCKET\",\"RUSTLER\",\"RYDER\",\"SCRATCHING\",\"SHAMAL\",\"SHOP\",\"SHOTGUN\",\"SILENCED\",\"SKATE\",\"SMOKING\",
\"SNIPER\",\"SPRAYCAN\",\"STRIP\",\"SUNBATHE\",\"SWAT\",\"SWEET\",\"SWIM\",\"SWORD\",\"TANK\",\"TATTOOS\",\"TEC\",\"TRAIN\",\"TRUCK\",
\"UZI\",\"VAN\",\"VENDING\",\"VORTEX\",\"WAYFARER\",\"WEAPONS\",\"WUZI\"};
for(new a = 0; a < 129; a++) ApplyAnimation(playerid, AnimKonyvt[a], \"null\", 0.0, 0, 0, 0, 0, 0);
}

 
2. OnPlayerUpdatenél kb. felesleges lesz annyiszor ellenõrizni, max HP állítás után, vagy valami ilyesmi. Bõven elég lenne OnPlayerTakeDamaget használni. Példa:
 

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(!IsPlayerConnected(playerid)) return 1; //Mondjuk ennek nem tudom, mi értelme van.
new Float:Elete;
GetPlayerHealth(playerid, Elete);
if(Elete > 30) return 1
if(pInfo[playerid][serult] == true) return 1;
cmd_me(playerid, \"összeesik\");
SetPlayerDrunkLevel(playerid, 6);
ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.0, 1, 0, 0, 0, 0);
SendClientMessage(playerid, COLOR_RED, \"Megsérültél, hívj mentõt! ((/104))\");
pInfo[playerid][serult] = true;
//Az animáció, amit beleraktam, elméletileg megakadályozza a felállást.
return 1;
}

 
Remélem nem rontottam el sokmindent, habár lehetséges, hogy a return 1-el való rövidítés itt bem lesz célravezetõ.
Mindenesetre sok szerencsét, további jó scriptelést! :thumbsup:
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 20. - 09:09:34
animkonyvtárnál crashol :(( miért ?? tesztelnétek???
Cím: animba esés 30 hpnál
Írta: KovaNovik - 2014. április 21. - 05:56:41
A publicot még tegnap eléírtam, úgy jónak kell lennie.
Cím: animba esés 30 hpnál
Írta: Dfoglalo - 2014. április 21. - 11:51:51
Na, ez az az anim könyvtár töltögetõs cucc, amirõl beszéltem. Nem a callbackokon kívül kéne létrehozni egyszer az anim könyvtáras dolgot, majd connect alatt szimplán a ciklust használva nullázni õket a játékos számára?
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 23. - 20:23:14
siker köszönöm zárok:)
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 19. - 21:30:22
Sziasztok!
Valamiért a kodóm nem rakja animba:(((
 

public OnPlayerUpdate(playerid)
{
    if(IsPlayerConnected(playerid))
{
        new Float:Elete;
GetPlayerHealth(playerid, Elete);
if(Elete <= 30)
{
    if(pInfo[playerid][serult] == false)
    {
       cmd_me(playerid, \"összeesik\");
       SetPlayerDrunkLevel(playerid, 6);
                ApplyAnimation(playerid, \"CRACK\", \"crckdeth2\", 4.1, 0, 1, 1, 1, 1, 1);
       SendClientMessage(playerid, COLOR_RED, \"Megsérültél, hívj mentõt! ((/104))\");
       pInfo[playerid][serult]=true;
                TogglePlayerControllable(playerid, false);
   }
}
return 1;
}

 
Valamiért ha 30 nál van a hp nem rakja animba:((
Miért?
Cím: animba esés 30 hpnál
Írta: doboka98 - 2014. április 19. - 21:36:35
Talán mert a pInfo[playerid][serult] változónak mindig true értéke van.
Cím: animba esés 30 hpnál
Írta: Dfoglalo - 2014. április 19. - 21:37:52
Itt csak egy elágazást látok, amely a 30 hp csekkolás és az animba esés közben van:
 
if(pInfo[playerid][serult] == false){

 
Egyáltalán elvégzi az ezen elágazás igaz ágán lévõ dolgokat? Mert ha nem, lehet, hogy ez a probléma. Csekkolhatod pl. egyszerû printes debuggal:
 
public OnPlayerUpdate(playerid)
{
        if(IsPlayerConnected(playerid))
        {
                print(\"Asd0\"); // Floodolni fogja, szóval nem fontos, elvégre csak-csak lefut idáig, ugyanis minden bizonnyal csatlakozva van a játékos. Szóval akár le is hagyható.
                new Float:Elete;
                GetPlayerHealth(playerid, Elete);
                if(Elete <= 30)
                {
                    print(\"Asd1\");
                    if(pInfo[playerid][serult] == false)
                    {
                            print(\"Asd2\");
                            cmd_me(playerid, \"összeesik\");
                            SetPlayerDrunkLevel(playerid, 6);
                                ApplyAnimation(playerid, \"CRACK\", \"crckdeth2\", 4.1, 0, 1, 1, 1, 1, 1);
                            SendClientMessage(playerid, COLOR_RED, \"Megsérültél, hívj mentõt! ((/104))\");
                            pInfo[playerid][serult]=true;
                            TogglePlayerControllable(playerid, false);
                        }
                        print(\"Asd3\"); // Szükségtelennek találhatod, elvégre az elágazás elõtt is tesztelünk, de van olyan hiba, hogy idáig el sem fut a kód. Magam sem tudom, hogy miért, de már találkoztam jómagam is ilyennel.
                }
                print(\"Asd4\"); // Szükségtelennek találhatod, elvégre az elágazás elõtt is tesztelünk, de van olyan hiba, hogy idáig el sem fut a kód. Magam sem tudom, hogy miért, de már találkoztam jómagam is ilyennel.
                return 1;
}

 
Na és ezen asdokból melyeket írja ki? Amúgy szerintem felesleges updatenél, elég timerrel, bár ki tudja... Jó itt is.


Amúgy lehet, hogy csak szimplán nem játssza le az animot. Tisztítsd a játékos animait, vagy indítsd el kétszer. Hátha. Amúgy ha nem az elágazásokkal van a baj, hanem egyszerûen nem játssza le, az asszem azért van, mert nem tölti be õket a játékos számára az anim könyvtárból, vagy valami ilyesmi... Áh, én ehhez nem értek :D
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 19. - 21:42:40
az elágazások jók:((
mert megkapom az üzenetet meg minden csak anim nincs:(((.
akkor meg próbálom tisztítani és úgy.
 

ClearAnimations(playerid);
ApplyAnimation(playerid, \"CRACK\", \"crckdeth2\", 4.1, 0, 1, 1, 1, 1, 1);

 
igy is semmi:((
Cím: animba esés 30 hpnál
Írta: Dfoglalo - 2014. április 19. - 21:51:21
Nálam pedig bejött. Dupla indítás? Azt is írtam. Csak mert amikor az alap anim fs-t használom, sokszor csak a második parancs beírásra indul az anim. Amúgy ezt azelõre  anim betöltõs dolgot még itt az egyik témában olvastam régebben, ha akarod, keresd ki, tuti megvan még valahol.
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 19. - 21:55:30
Szerek.:
igy sikerült:
 

if(Elete <= 30)
{
    SetPlayerDrunkLevel(playerid, 6);
      ApplyAnimation(playerid, \"CRACK\", \"crckdeth2\", 4.1, 0, 1, 1, 1, 1, 1);
    if(pInfo[playerid][serult] == false)
    {
       cmd_me(playerid, \"összeesik\");
       SendClientMessage(playerid, COLOR_RED, \"Megsérültél, hívj mentõt! ((/104))\");
       pInfo[playerid][serult]=true;
                TogglePlayerControllable(playerid, false);
   }
}

 
kis off melyik az az anim amikor terdel és fogja a hasát??
Cím: animba esés 30 hpnál
Írta: KovaNovik - 2014. április 20. - 08:19:33
1. Elõ kell tölteni mindig az animációs könyvtárakat, mielõtt animot használsz.
 

public OnPlayerConnect(playerid)
{
new AnimKonyvt[][] = //129 db van
{\"AIRPORT\",\"Attractors\",\"BAR\",\"BASEBALL\",\"BD_FIRE\" \"BEACH\",\"benchpress\",\"BF_injection\",\"BIKED\",\"BIKEH\",
\"BIKELEAP\",\"BIKES\",\"BIKEV\",\"BIKE_DBZ\",\"BLOWJOBZ\",\"BMX\",\"BOMBER\",\"BOX\",\"BSKTBALL\",\"BUDDY\",\"BUS\",\"CAMERA\",
\"CAR\",\"CARRY\",\"CAR_CHAT\",\"CASINO\",\"CHAINSAW\",\"CHOPPA\",\"CLOTHES\",\"COACH\",\"COLT45\",\"COP_AMBIENT\",\"COP_DVBYZ\",
\"CRACK\",\"CRIB\",\"DAM_JUMP\",\"DANCING\",\"DEALER\",\"DILDO\",\"DODGE\",\"DOZER\",\"DRIVEBYS\",\"FAT\",\"FIGHT_B\",\"FIGHT_C\",
\"FIGHT_D\",\"FIGHT_E\",\"FINALE\",\"FINALE2\",\"FLAME\",\"Flowers\",\"FOOD\",\"Freeweights\",\"GANGS\",\"GHANDS\",\"GHETTO_DB\",
\"goggles\",\"GRAFFITI\",\"GRAVEYARD\",\"GRENADE\",\"GYMNASIUM\",\"HAIRCUTS\",\"HEIST9\",\"INT_HOUSE\",\"INT_OFFICE\",
\"INT_SHOP\",\"JST_BUISNESS\",\"KART\",\"KISSING\",\"KNIFE\",\"LAPDAN1\",\"LAPDAN2\",\"LAPDAN3\",\"LOWRIDER\",\"MD_CHASE\",
\"MD_END\",\"MEDIC\",\"MISC\",\"MTB\",\"MUSCULAR\",\"NEVADA\",\"ON_LOOKERS\",\"OTB\",\"PARACHUTE\",\"PARK\",\"PAULNMAC\",\"ped\",
\"PLAYER_DVBYS\",\"PLAYIDLES\",\"POLICE\",\"POOL\",\"POOR\",\"PYTHON\",\"QUAD\",\"QUAD_DBZ\",\"RAPPING\",\"RIFLE\",\"RIOT\",
\"ROB_BANK\",\"ROCKET\",\"RUSTLER\",\"RYDER\",\"SCRATCHING\",\"SHAMAL\",\"SHOP\",\"SHOTGUN\",\"SILENCED\",\"SKATE\",\"SMOKING\",
\"SNIPER\",\"SPRAYCAN\",\"STRIP\",\"SUNBATHE\",\"SWAT\",\"SWEET\",\"SWIM\",\"SWORD\",\"TANK\",\"TATTOOS\",\"TEC\",\"TRAIN\",\"TRUCK\",
\"UZI\",\"VAN\",\"VENDING\",\"VORTEX\",\"WAYFARER\",\"WEAPONS\",\"WUZI\"};
for(new a = 0; a < 129; a++) ApplyAnimation(playerid, AnimKonyvt[a], \"null\", 0.0, 0, 0, 0, 0, 0);
}

 
2. OnPlayerUpdatenél kb. felesleges lesz annyiszor ellenõrizni, max HP állítás után, vagy valami ilyesmi. Bõven elég lenne OnPlayerTakeDamaget használni. Példa:
 

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(!IsPlayerConnected(playerid)) return 1; //Mondjuk ennek nem tudom, mi értelme van.
new Float:Elete;
GetPlayerHealth(playerid, Elete);
if(Elete > 30) return 1
if(pInfo[playerid][serult] == true) return 1;
cmd_me(playerid, \"összeesik\");
SetPlayerDrunkLevel(playerid, 6);
ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.0, 1, 0, 0, 0, 0);
SendClientMessage(playerid, COLOR_RED, \"Megsérültél, hívj mentõt! ((/104))\");
pInfo[playerid][serult] = true;
//Az animáció, amit beleraktam, elméletileg megakadályozza a felállást.
return 1;
}

 
Remélem nem rontottam el sokmindent, habár lehetséges, hogy a return 1-el való rövidítés itt bem lesz célravezetõ.
Mindenesetre sok szerencsét, további jó scriptelést! :thumbsup:
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 20. - 09:09:34
animkonyvtárnál crashol :(( miért ?? tesztelnétek???
Cím: animba esés 30 hpnál
Írta: KovaNovik - 2014. április 21. - 05:56:41
A publicot még tegnap eléírtam, úgy jónak kell lennie.
Cím: animba esés 30 hpnál
Írta: Dfoglalo - 2014. április 21. - 11:51:51
Na, ez az az anim könyvtár töltögetõs cucc, amirõl beszéltem. Nem a callbackokon kívül kéne létrehozni egyszer az anim könyvtáras dolgot, majd connect alatt szimplán a ciklust használva nullázni õket a játékos számára?
Cím: animba esés 30 hpnál
Írta: kriszrap - 2014. április 23. - 20:23:14
siker köszönöm zárok:)