Jump to content

návod [TuT] - Krátký tutoriál na změny damage u zbraní [*]


DNLS

Recommended Posts

Zdravím. Jelikož sem zde na pawnu nenašel (možná tu je, opravdu sem to nenašel) jak nastavit damage u zbraní, tak sem dám tutoriál. 

 

Takže. Otevřeme si klasicky a pawno a jediné co nám stačí před samotným nastavením je základní include.

 

:1:

#include "a_samp"

Dobře, máme? Super.

 

Nyní si dáme někam pod to public.

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
// Playerid - ID střeleného
// Issuerid - ID toho, kdo vás střelil
// Float: amount - Kolik vám hráč vzal HP
// Weaponid - ID zbraně.

Tak. A do toho publicu.

 

{ // Otevřeme public
new Float:HP,Float:amount; // Ukládání HP hráče
GetPlayerHealth(playerid, HP); // "Získáme" HP hráče
GetPlayerArmour(playerid, amount); // "Získáme" ARMOUR hráče
if(weaponid == 24) SetPlayerHealth(playerid, HP+amount-60); // Nyní se stane to, že pokud hráč tě trefí s Desert Eaglem, ubere to - 60 HP.
return 1; // Umožní to zpětné volání být vyvolán z jiného scriptu
} // Ukončíme public

Samozřejmě sem i dám celý kod.

 

 

 

 

#include "a_samp"

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    new Float:HP;
    GetPlayerHealth(playerid, HP);
    if(weaponid == 24) SetPlayerHealth(playerid, HP+amount-60);
    return 1;
}

 

 

 

Závěr ....

Ano, je to můj první tutoriál, proto očekávám kritiku. Ale, na to nechci se na to nějak vymlouvat, takže hodnotit tak jak to vidíte.

 


 

Edited by Daniels
Link to comment
Share on other sites

~> Jj, už něco takového tu je. Jenom je naprosto pitomě zpracované(několik řádků, podmínka ke každé zbrani...).

~> Kdybych měl říct něco k tomu tvému tutoriálu, tak pro jedinou zbraň bych mohl říct, že je to téměř ideální takhle. Ale pro více zbraní bych udělal nějaké pole (id zbraně a kolik ubere života), abych, jakmile tam bude více zbraní, nemusel pro každou přidávat zvlášť další a další podmínky a funkce. Jen jeden cyklus, pár podmínek a hotovo.

Jinak, nic více mě momentálně nenapadá. Jen, že jsi zapomněl přidat obtížnost podle pravidel přidávání návodů.

Link to comment
Share on other sites

  • Globální moderátor

1. Návod na návody je zde http://pawno.cz/topic/51862-šablona-pro-psan%C3%AD-návodů/Je to takový standartizovaný postup jak ho psát. Kromě obtížnosti co ti chyběla, tak přidej ještě hvězdičky (je to jako smajlík)

2. Píšeš to do návodů "Všechno možné", ale patří to do návodů "Pawno" (přesouvám, tak pro příště pozor)

3. Ideálně by jsi to mohl popsat i bokem v nějakém menším odstavci. Defacto máš jenon popsaný kód, ale shrnutě co to dělá celkově tam není. To tak asi vše co bych vytknul

Link to comment
Share on other sites

  • Administrátor

Mám velmi silný pocit, že mnozím z Vás to hodí error při: #include "a_samp"

 

Ale co já vlastně vím, viďte...

 

nehodí 

 

lze používat

#include

nebo #include a_samp

nebo #include "a_samp"

je to v podstatě to samé jen je více zažité používat tu první možnost

 

 

 

BTW ještě by se tam hodila podmínka issuerid != INVALIT_PLAYER_ID ale jinak v pohodě

Link to comment
Share on other sites

if(weaponid == 24) SetPlayerHealth(playerid, HP-60);

tohle ti neodebere jen 60 zivotu ale jeste i to co je v amount. pokud ches aby to ubralo presne 60 zivotu musis pouzit

if(weaponid == 24) SetPlayerHealth(playerid, HP-60.0+amount);
Link to comment
Share on other sites

já jsem měl za to, že < > se hledá v includes a " " hledá lokálně

 

Přesně jak říká Ewwe.

 

lze používat

#include <a_samp>

nebo #include a_samp

nebo #include "a_samp"

je to v podstatě to samé jen je více zažité používat tu první možnost

 

 

 

 

1. Návod na návody je zde http://pawno.cz/topic/51862-šablona-pro-psan%C3%AD-návodů/Je to takový standartizovaný postup jak ho psát. Kromě obtížnosti co ti chyběla, tak přidej ještě hvězdičky (je to jako smajlík)

2. Píšeš to do návodů "Všechno možné", ale patří to do návodů "Pawno" (přesouvám, tak pro příště pozor)

3. Ideálně by jsi to mohl popsat i bokem v nějakém menším odstavci. Defacto máš jenon popsaný kód, ale shrnutě co to dělá celkově tam není. To tak asi vše co bych vytknul

 

Budu si dávat pozor.

if(weaponid == 24) SetPlayerHealth(playerid, HP-60);

tohle ti neodebere jen 60 zivotu ale jeste i to co je v amount. pokud ches aby to ubralo presne 60 zivotu musis pouzit

if(weaponid == 24) SetPlayerHealth(playerid, HP-60.0+amount);

 

Fixnuto, díky za připomínku.

Link to comment
Share on other sites

  • Hlavní moderátor

Nebude to fungovat. Proměnnou, kam ukládáš vestu hráče, máš pojmenovanou stejně jako argument callbacku (amount). 

{ // Otevřeme public
new Float:HP,Float:amount; // Ukládání HP hráče
GetPlayerHealth(playerid, HP); // "Získáme" HP hráče
GetPlayerArmour(playerid, amount); // "Získáme" ARMOUR hráče

Btw, proč vlastně? D: To nebylo to, na co ATomas narážel. Abys zjišťoval vestu navíc.

Edited by vEnd
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...