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

CoD4 style regeneráció
« Dátum: 2014. Július 30. - 01:14:39 »
0
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
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
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
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
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
É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
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
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
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
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
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
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
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
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
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