Szerző Téma: CoD4 style regeneráció  (Megtekintve 2156 alkalommal)

CoD4 style regeneráció
« Dátum: 2014. július 30. - 01:14:39 »
0 Show voters
Hali!
Unalomból megirtam egy scriptet, ami megpróbálja leutánozni
a Call of Duty 4 HP visszatöltõs rendszerét. Másodpercenként 5 HP-t visszatölt.
Elkészités:kb 2 perc
Tesztelve van? :Bizonyám.
FLASH reklamációja után javitva!
Javitott: IsPlayerConnected,az alap verzióban 1 HP-t töltött, most 5-öt
 

public OnFilterScriptInit()
{
SetTimer(\"Regeneration\",1000,true);
}
forward Regeneration();
public Regeneration()
{
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
   new Float:Health[MAX_PLAYERS];
   GetPlayerHealth(i,Health);
   if (Health < 100.1 && Health > 0)
   {
      SetPlayerHealth(i, Health + 5.0);
   }
}
}
}
« Utoljára szerkesztve: 2014. július 30. - 12:22:57 írta bencarter007 »

CoD4 style regeneráció
« Válasz #1 Dátum: 2014. július 30. - 06:15:19 »
0 Show voters
Grat jó lett. :) Repül a +

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
CoD4 style regeneráció
« Válasz #2 Dátum: 2014. július 30. - 11:43:26 »
0 Show voters
Hát ebben a scriptben is csak a hibát látom.
Hibák:
1. SetTimer helyett SetTimerEx a helyes
2. Miért teszed for ciklusba a változót?
3. Nincs lekérdezve hogy a játékos fent van-e a szerveren.
4. Mi értelme van több mint 1 percig az életét feltölteni? a Call of Duty-ban se ennyi idõ sõt a fele se ha jól tudom.
5. Miért csak 99%-ig tölti fel az életet?
6. Miért nincs KillTimer? Úgy hatásosabb lenne, hogy akkor indítod el a bizonyos játékosnak a timert hogyha az élete kevesebb mint 100%

CoD4 style regeneráció
« Válasz #3 Dátum: 2014. július 30. - 12:18:40 »
0 Show voters
Azért pörgetem végig az összes játékost, hogy ezzel spóroljak. ha minden egyes játékosnál külön inditok timert, akkor az úg nem gazdaságos. a többi nem tetszõ részt pedig kijavitottam....

CoD4 style regeneráció
« Válasz #4 Dátum: 2014. július 30. - 13:26:58 »
0 Show voters
Nagyon pazarol.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
CoD4 style regeneráció
« Válasz #5 Dátum: 2014. július 30. - 16:18:06 »
0 Show voters
És ezekkel mi lesz?
 
Idézetet írta: Flash date=1406713406\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49748\" data-ipsquote-contentclass=\"forums_Topic
1. SetTimer helyett SetTimerEx a helyes
2. Miért teszed for ciklusba a változót?
4. Mi értelme van több mint 1 percig az életét feltölteni? a Call of Duty-ban se ennyi idõ sõt a fele se ha jól tudom.
6. Miért nincs KillTimer? Úgy hatásosabb lenne, hogy akkor indítod el a bizonyos játékosnak a timert hogyha az élete kevesebb mint 100%
 
+ új hiba: lekérdezésnél: 100.1 helyett 101.0

CoD4 style regeneráció
« Válasz #6 Dátum: 2014. július 30. - 18:01:48 »
0 Show voters
Az ötlet nem lenne rossz..
Amúgy itt:[pawn]new Float:Health[MAX_PLAYERS];[/pawn] nem elég csak annyi hogy [pawn]new Float:Health;[/pawn]?  ::|

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
CoD4 style regeneráció
« Válasz #7 Dátum: 2014. július 30. - 18:03:33 »
0 Show voters
Nem elég, mivel ide kell a playerid része is mivel játékosokról van szó.
Helyesen én így írnám meg:
 
#include a_samp
new Float:Health[MAX_PLAYERS];
public OnFilterScriptInit() {
      SetTimer(\"Regeneration\",300,true);
return 1;
}
forward Regeneration();
public Regeneration() {
for(new i; i < MAX_PLAYERS; i++) {
   if(!IsPlayerConnected(i)) continue;
         GetPlayerHealth(i, Health);
        if (Health < 101.0 && Health > 0) {
            SetPlayerHealth(i, Health + 1.0);
         }
      }
return 1;
}
« Utoljára szerkesztve: 2014. július 30. - 18:11:45 írta Flash »

CoD4 style regeneráció
« Válasz #8 Dátum: 2014. július 31. - 00:37:48 »
0 Show voters
Teljesen hülyeség 500-as (MAX_PLAYERS, bár kinek mennyi...) tömböt létrehozni.
A for ciklus ugye mindig újra lefut, tehát ha benne létrehozol egy változót azt minden lefutásnál létrehozza 0 értékkel.
Tehát az én kódom, ahogy szerintem helyes lenne az egész szkript:
 

public OnFilterScriptInit()
{
SetTimer(\"Regeneration\", 5000, true);
}
forward Regeneration();
public Regeneration()
{
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
   new Float:Health;
   GetPlayerHealth(i,Health);
   if (Health < 100.1 && Health > 0)
   {
      SetPlayerHealth(i, Health + 5.0);
   }
}
}
}

 
+ Pár kérdés:
 
Idézetet írta: Flash date=1406713406\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49748\" data-ipsquote-contentclass=\"forums_Topic
1. SetTimer helyett SetTimerEx a helyes
 
Miért nem jó a SetTimer? Hisz\' nem kellenek paraméterek.
 

2. Miért teszed for ciklusba a változót?
 
[/quote]
Nem tudom értelmezni ezt. Tán azért mert ott hozza létre? Este van, ha hülyeséget mondok szorri.
 

4. Mi értelme van több mint 1 percig az életét feltölteni? a Call of Duty-ban se ennyi idõ sõt a fele se ha jól tudom.
 
[/quote]
Ezt megint csak nem értem. Most már éjszaka van.
 

6. Miért nincs KillTimer? Úgy hatásosabb lenne, hogy akkor indítod el a bizonyos játékosnak a timert hogyha az élete kevesebb mint 100%
 
[/quote]
Ebben maximum ott értek egyet, hogy egy KillTimer az OnFilterScriptExit alá kéne. (Persze a szkriptbe nem írtam bele...)
Viszont az, hogy minden játékosnak külön timer csak pazarló lenne.
Ezeket mind úgy mondom, hogy nem teszteltem.
Pluszt, minuszt érthetõ okokból nem tudok adni, de azért nem lett annyira rossz.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
CoD4 style regeneráció
« Válasz #9 Dátum: 2014. július 31. - 11:10:02 »
0 Show voters
Szerinted ha tizedes jegyet kérdezed le (100.1) és +5.0-el növeled akkor mikor lesz kereken 100.0??
A Timeres kérdésedre az a válaszom, hogy láthatod az én scriptemben se írtam át SetTimerEx-re hanem hagytam úgy mert rájöttem hogy felesleges a for ciklus álltal.
A változót meg felesleges for ciklusban létrehozni, lásd az én variációmat.
 
Idézetet írta: bencarter007 date=1406675679\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49748\" data-ipsquote-contentclass=\"forums_Topic
FLASH reklamációja után javitva!
 
Felesleges itt flegmáznod, csak segíteni akarok :)

Nem elérhető HaGaD

CoD4 style regeneráció
« Válasz #10 Dátum: 2014. július 31. - 12:47:12 »
0 Show voters
Az öltelt tényleg nem rossz.
« Utoljára szerkesztve: 2014. július 31. - 12:51:17 írta HaGaD »

CoD4 style regeneráció
« Válasz #11 Dátum: 2014. augusztus 02. - 08:15:23 »
0 Show voters
Flash! azt kérdezem Tõled:
100.1 kevesebb, vagy több, mint 100? elõbb azon feleseltél, hogy csak 99%-ig tölti vissza az életed. Most 100%-ig...

CoD4 style regeneráció
« Válasz #12 Dátum: 2014. augusztus 02. - 13:08:36 »
0 Show voters
Az ilyenkor full mindegy, mert ötösével számol, így lehetne akár 104.9999999999999 is..

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
CoD4 style regeneráció
« Válasz #13 Dátum: 2014. augusztus 02. - 14:17:52 »
0 Show voters
Nézzük meg a te verziódat ami másodpercenként növeli a játékos életét 5.0% -al.
Na most tegyük fel, hogy a játékosnak lemegy az élete 94%-ra, aztán ezt észleli a script majd hozzáad +5%-ot így lesz 99% és mivel ez még mindig kevesebb mint 100.1% így újabb 5%-ot ad hozzá amit remélem nem kell leírnom hogy mennyi lesz mert kitudod számolni ha tanították általánosba. De megsúgom neked hogy több lesz mint 100% ami nem éppen reális.
Legegyszerübb lenne nem figyelembe venni a tizedeseket és akkor a lekérdezésben is annyit kellene írj hogy:
[pawn]if(Health < 101 && Health > 0)[/pawn]

CoD4 style regeneráció
« Válasz #14 Dátum: 2014. augusztus 02. - 17:49:14 »
0 Show voters
de k*rva demotiválók tudtok lenni. mindenben csak a hibát látja mindenki. én már leb@szom...

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal